From 6daabcab65a70078a0101694682139f71b9f4c7a Mon Sep 17 00:00:00 2001 From: Malin Date: Tue, 19 May 2026 19:58:11 +0200 Subject: [PATCH] feat: caching, optimization, legal pages & footer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - WP Super Cache enabled (PHP mode, gzip, Nginx compatible) - Autoptimize: CSS/HTML minification + deferred JS + Google Fonts optimization - Cookie Notice: GDPR/LOPD banner styled with brand colors (navy/burgundy/gold) - Legal pages: Aviso Legal, Política de Privacidad, Política de Cookies (ES) - MU-plugin: custom footer with legal links + Cloud Host credit - Footer: copyright, legal nav, Hosted & Maintained by Cloud Host (cloudhost.es) - Security: X-Frame-Options, X-Content-Type, Referrer-Policy headers - Security: XML-RPC disabled, REST user enumeration blocked - Performance: emoji scripts removed, post revisions limited to 3 --- .gitignore | 2 + wp-content/autoptimize_404_handler.php | 52 + wp-content/mu-plugins/acrib-core.php | 68 + wp-content/plugins/autoptimize/LICENSE | 340 ++ .../plugins/autoptimize/autoptimize.php | 102 + .../autoptimize_helper.php_example | 143 + .../autoptimize/classes/autoptimizeBase.php | 711 +++ .../autoptimize/classes/autoptimizeCLI.php | 34 + .../autoptimize/classes/autoptimizeCSSmin.php | 69 + .../autoptimize/classes/autoptimizeCache.php | 855 ++++ .../classes/autoptimizeCacheChecker.php | 115 + .../classes/autoptimizeCompatibility.php | 146 + .../autoptimize/classes/autoptimizeConfig.php | 1116 ++++ .../classes/autoptimizeCriticalCSSBase.php | 433 ++ .../classes/autoptimizeCriticalCSSCore.php | 664 +++ .../classes/autoptimizeCriticalCSSCron.php | 881 ++++ .../classes/autoptimizeCriticalCSSEnqueue.php | 335 ++ .../autoptimizeCriticalCSSSettings.php | 433 ++ .../autoptimizeCriticalCSSSettingsAjax.php | 597 +++ .../classes/autoptimizeExitSurvey.php | 118 + .../autoptimize/classes/autoptimizeExtra.php | 662 +++ .../autoptimize/classes/autoptimizeHTML.php | 150 + .../autoptimize/classes/autoptimizeImages.php | 1652 ++++++ .../autoptimize/classes/autoptimizeMain.php | 855 ++++ .../classes/autoptimizeMetabox.php | 351 ++ .../classes/autoptimizeOptionWrapper.php | 150 + .../classes/autoptimizePartners.php | 153 + .../autoptimize/classes/autoptimizeProTab.php | 133 + .../classes/autoptimizeScripts.php | 861 ++++ .../classes/autoptimizeSpeedupper.php | 110 + .../autoptimize/classes/autoptimizeStyles.php | 1337 +++++ .../classes/autoptimizeToolbar.php | 167 + .../autoptimize/classes/autoptimizeUtils.php | 595 +++ .../autoptimizeVersionUpdatesHandler.php | 300 ++ .../critcss-inc/admin_settings_adv.php | 161 + .../critcss-inc/admin_settings_debug.php | 87 + .../critcss-inc/admin_settings_explain.php | 57 + .../critcss-inc/admin_settings_impexp.js.php | 68 + .../critcss-inc/admin_settings_key.php | 67 + .../critcss-inc/admin_settings_queue.js.php | 249 + .../critcss-inc/admin_settings_queue.php | 96 + .../critcss-inc/admin_settings_rules.js.php | 455 ++ .../critcss-inc/admin_settings_rules.php | 238 + .../classes/critcss-inc/css/admin_styles.css | 253 + .../critcss-inc/css/ao-tablesorter/asc.gif | Bin 0 -> 54 bytes .../critcss-inc/css/ao-tablesorter/bg.gif | Bin 0 -> 64 bytes .../critcss-inc/css/ao-tablesorter/desc.gif | Bin 0 -> 54 bytes .../critcss-inc/css/ao-tablesorter/style.css | 40 + .../classes/critcss-inc/js/admin_settings.js | 11 + .../critcss-inc/js/jquery.tablesorter.min.js | 4 + .../classes/critcss-inc/js/md5.min.js | 2 + .../external/do_not_donate_smallest.png | Bin 0 -> 9585 bytes .../autoptimize/classes/external/index.html | 1 + .../classes/external/js/index.html | 1 + .../classes/external/js/jquery.cookie.js | 89 + .../classes/external/js/jquery.cookie.min.js | 1 + .../classes/external/js/lazysizes.min.js | 3 + .../classes/external/js/unslider-dots.css | 33 + .../classes/external/js/unslider.css | 1 + .../classes/external/js/unslider.min.js | 1 + .../classes/external/php/ao-minify-html.php | 276 + .../classes/external/php/index.html | 1 + .../classes/external/php/jsmin.php | 466 ++ .../persist-admin-notices-dismissal/README.md | 117 + .../dismiss-notice.js | 33 + .../persist-admin-notices-dismissal.php | 159 + .../php/yui-php-cssmin-bundled/Colors.php | 155 + .../php/yui-php-cssmin-bundled/Minifier.php | 935 ++++ .../php/yui-php-cssmin-bundled/Utils.php | 149 + .../php/yui-php-cssmin-bundled/index.html | 1 + .../plugins/autoptimize/classes/index.html | 1 + .../static/exit-survey/exit-survey.css | 221 + .../classes/static/exit-survey/exit-survey.js | 122 + .../autoptimize/classes/static/loading.gif | Bin 0 -> 4640 bytes .../autoptimize/classes/static/toolbar.css | 246 + .../autoptimize/classes/static/toolbar.js | 82 + .../classes/static/toolbar.min.css | 1 + .../autoptimize/classes/static/toolbar.min.js | 6 + .../config/autoptimize_404_handler.php | 52 + .../plugins/autoptimize/config/default.php | 87 + .../plugins/autoptimize/config/index.html | 1 + wp-content/plugins/autoptimize/index.html | 1 + wp-content/plugins/autoptimize/readme.txt | 462 ++ .../cookie-notice/assets/chartjs/chart.min.js | 14 + .../assets/microtip/microtip.css | 266 + .../assets/microtip/microtip.min.css | 15 + .../assets/modaal/css/modaal.css | 782 +++ .../assets/modaal/css/modaal.min.css | 5 + .../assets/modaal/css/modaal.scss | 555 ++ .../cookie-notice/assets/modaal/js/modaal.js | 1390 +++++ .../assets/modaal/js/modaal.min.js | 6 + .../assets/pagination/pagination.css | 1 + .../assets/pagination/pagination.js | 1190 +++++ .../assets/pagination/pagination.min.js | 11 + .../assets/react-admin/cn-admin-react.css | 1 + .../assets/react-admin/cn-admin-react.js | 1064 ++++ .../assets/react-admin/lato-300.woff2 | Bin 0 -> 13912 bytes .../assets/react-admin/lato-400.woff2 | Bin 0 -> 13980 bytes .../assets/react-admin/lato-700.woff2 | Bin 0 -> 14168 bytes .../assets/react-admin/lato-900.woff2 | Bin 0 -> 13724 bytes .../assets/spectrum/spectrum.min.css | 1 + .../assets/spectrum/spectrum.min.js | 1 + .../plugins/cookie-notice/cookie-notice.php | 1932 +++++++ .../cookie-notice/css/admin-dashboard.css | 348 ++ .../cookie-notice/css/admin-notice.css | 43 + .../cookie-notice/css/admin-plugins.css | 47 + .../cookie-notice/css/admin-welcome.css | 2098 ++++++++ .../plugins/cookie-notice/css/admin.css | 833 +++ .../plugins/cookie-notice/css/admin.min.css | 1 + .../plugins/cookie-notice/css/front.css | 343 ++ .../plugins/cookie-notice/css/front.min.css | 1 + .../cookie-notice/img/banner-1544x500.png | Bin 0 -> 30482 bytes .../cookie-notice/img/banner-772x250.png | Bin 0 -> 19910 bytes .../cookie-notice/img/compliance-icon-256.png | Bin 0 -> 15129 bytes .../cookie-notice/img/compliance-icon.png | Bin 0 -> 10331 bytes .../cookie-notice/img/consent-logs.png | Bin 0 -> 185134 bytes .../img/cookie-compliance-logo-dark.png | Bin 0 -> 4017 bytes .../img/cookie-compliance-logo.png | Bin 0 -> 5110 bytes .../img/cookie-compliance-widget.png | Bin 0 -> 18324 bytes .../img/cookie-notice-logo-dark.png | Bin 0 -> 2624 bytes .../cookie-notice/img/cookie-notice-logo.png | Bin 0 -> 3082 bytes .../plugins/cookie-notice/img/hu-logo.png | Bin 0 -> 158780 bytes .../img/hu-manity-logo-color.svg | 1 + .../img/hu-manity-logo-white.svg | 1 + .../cookie-notice/img/icon-128x128.png | Bin 0 -> 20700 bytes .../cookie-notice/img/icon-256x256.png | Bin 0 -> 63764 bytes .../cookie-notice/img/layout-bottom.png | Bin 0 -> 2407 bytes .../cookie-notice/img/layout-bottom.svg | 1 + .../cookie-notice/img/layout-center.png | Bin 0 -> 2616 bytes .../cookie-notice/img/layout-center.svg | 1 + .../plugins/cookie-notice/img/layout-left.png | Bin 0 -> 2390 bytes .../plugins/cookie-notice/img/layout-left.svg | 1 + .../cookie-notice/img/layout-right.png | Bin 0 -> 2398 bytes .../cookie-notice/img/layout-right.svg | 1 + .../plugins/cookie-notice/img/layout-top.png | Bin 0 -> 2405 bytes .../plugins/cookie-notice/img/layout-top.svg | 1 + .../img/privacy-consent-logs.png | Bin 0 -> 217699 bytes .../cookie-notice/img/screen-compliance.png | Bin 0 -> 418587 bytes .../cookie-notice/img/screen-notice.png | Bin 0 -> 299406 bytes .../cookie-notice/includes/bot-detect.php | 1706 +++++++ .../includes/consent-logs-date-list-table.php | 282 ++ .../includes/consent-logs-list-table.php | 299 ++ .../cookie-notice/includes/consent-logs.php | 120 + .../cookie-notice/includes/dashboard.php | 782 +++ .../cookie-notice/includes/frontend.php | 902 ++++ .../cookie-notice/includes/functions.php | 329 ++ .../includes/modules/amp/amp.php | 172 + .../includes/modules/amp/iframe.js | 58 + .../modules/autoptimize/autoptimize.php | 72 + .../includes/modules/breeze/breeze.php | 100 + .../modules/contact-form-7/contact-form-7.php | 69 + .../contact-form-7/privacy-consent.php | 246 + .../modules/contact-form-7/recaptcha.js | 89 + .../includes/modules/divi/divi.php | 34 + .../privacy-consent.php | 397 ++ .../includes/modules/elementor/elementor.php | 34 + .../formidable-forms/privacy-consent.php | 254 + .../modules/hummingbird/hummingbird.php | 60 + .../litespeed-cache/litespeed-cache.php | 57 + .../modules/mailchimp/privacy-consent.php | 233 + .../speed-optimizer/speed-optimizer.php | 104 + .../modules/speedycache/speedycache.php | 64 + .../modules/woocommerce/privacy-consent.php | 382 ++ .../modules/wordpress/privacy-consent.php | 313 ++ .../wp-fastest-cache/wp-fastest-cache.php | 53 + .../modules/wp-optimize/wp-optimize.php | 54 + .../includes/modules/wp-rocket/wp-rocket.php | 97 + .../modules/wp-super-cache/wp-super-cache.php | 76 + .../modules/wpforms/privacy-consent.php | 225 + .../cookie-notice/includes/notifications.json | 83 + .../includes/privacy-consent-list-table.php | 332 ++ .../privacy-consent-logs-list-table.php | 382 ++ .../includes/privacy-consent-logs.php | 83 + .../includes/privacy-consent.php | 673 +++ .../includes/react-admin-ajax.php | 1378 +++++ .../cookie-notice/includes/settings.php | 3221 ++++++++++++ .../cookie-notice/includes/welcome-api.php | 2807 ++++++++++ .../includes/welcome-frontend.php | 128 + .../cookie-notice/includes/welcome.php | 865 ++++ wp-content/plugins/cookie-notice/index.php | 2 + .../cookie-notice/js/admin-dashboard.js | 19 + .../plugins/cookie-notice/js/admin-notice.js | 149 + .../plugins/cookie-notice/js/admin-plugins.js | 71 + .../plugins/cookie-notice/js/admin-welcome.js | 986 ++++ wp-content/plugins/cookie-notice/js/admin.js | 760 +++ .../plugins/cookie-notice/js/admin.min.js | 1 + .../plugins/cookie-notice/js/front-welcome.js | 475 ++ wp-content/plugins/cookie-notice/js/front.js | 528 ++ .../plugins/cookie-notice/js/front.min.js | 1 + .../cookie-notice/languages/cookie-notice.pot | 1962 +++++++ wp-content/plugins/cookie-notice/readme.txt | 719 +++ .../cookie-notice/templates/empty.html | 1 + wp-content/plugins/wp-super-cache/LICENSE.txt | 355 ++ wp-content/plugins/wp-super-cache/SECURITY.md | 47 + .../plugins/wp-super-cache/advanced-cache.php | 29 + .../assets/automattic-airline.svg | 10 + .../assets/boost-install-card-main-2x.png | Bin 0 -> 305554 bytes .../assets/boost-install-card-main.png | Bin 0 -> 96878 bytes .../wp-super-cache/assets/jetpack-colors.svg | 14 + .../wp-super-cache/assets/jetpack-logo.svg | 17 + .../assets/super-cache-icon.png | Bin 0 -> 3105 bytes .../plugins/wp-super-cache/inc/boost.php | 235 + .../wp-super-cache/inc/delete-cache-button.js | 37 + .../inc/delete-cache-button.php | 182 + .../inc/preload-notification.php | 30 + wp-content/plugins/wp-super-cache/js/admin.js | 146 + .../wp-super-cache/js/preload-notification.js | 122 + .../languages/wp-super-cache-be_BY.mo | Bin 0 -> 75729 bytes .../languages/wp-super-cache-be_BY.po | 1555 ++++++ .../languages/wp-super-cache-de_DE.mo | Bin 0 -> 70830 bytes .../languages/wp-super-cache-de_DE.po | 1547 ++++++ .../languages/wp-super-cache-es_ES.mo | Bin 0 -> 46170 bytes .../languages/wp-super-cache-es_ES.po | 1069 ++++ .../languages/wp-super-cache-fr_FR.mo | Bin 0 -> 61792 bytes .../languages/wp-super-cache-fr_FR.po | 1713 +++++++ .../languages/wp-super-cache-it_IT.mo | Bin 0 -> 66758 bytes .../languages/wp-super-cache-it_IT.po | 1694 +++++++ .../languages/wp-super-cache-ja.mo | Bin 0 -> 79297 bytes .../languages/wp-super-cache-ja.po | 1668 ++++++ .../languages/wp-super-cache-lt_LT.mo | Bin 0 -> 57607 bytes .../languages/wp-super-cache-lt_LT.po | 1555 ++++++ .../languages/wp-super-cache-ro_RO.mo | Bin 0 -> 59434 bytes .../languages/wp-super-cache-ro_RO.po | 1555 ++++++ .../languages/wp-super-cache-ru_RU.mo | Bin 0 -> 88791 bytes .../languages/wp-super-cache-ru_RU.po | 1687 ++++++ .../languages/wp-super-cache-sr_RS.mo | Bin 0 -> 84853 bytes .../languages/wp-super-cache-sr_RS.po | 2686 ++++++++++ .../languages/wp-super-cache-sv_SE.mo | Bin 0 -> 57046 bytes .../languages/wp-super-cache-sv_SE.po | 1543 ++++++ .../languages/wp-super-cache-tr_TR.mo | Bin 0 -> 70771 bytes .../languages/wp-super-cache-tr_TR.po | 1617 ++++++ .../languages/wp-super-cache-ua_UA.mo | Bin 0 -> 75414 bytes .../languages/wp-super-cache-ua_UA.po | 1555 ++++++ .../languages/wp-super-cache-uk.mo | Bin 0 -> 58904 bytes .../languages/wp-super-cache-uk.po | 1068 ++++ .../languages/wp-super-cache-zh_CN.mo | Bin 0 -> 68811 bytes .../languages/wp-super-cache-zh_CN.po | 1753 +++++++ .../languages/wp-super-cache-zh_TW.mo | Bin 0 -> 74884 bytes .../languages/wp-super-cache-zh_TW.po | 1827 +++++++ .../plugins/wp-super-cache/ossdl-cdn.php | 388 ++ .../wp-super-cache/partials/advanced.php | 424 ++ .../plugins/wp-super-cache/partials/debug.php | 74 + .../plugins/wp-super-cache/partials/easy.php | 191 + .../wp-super-cache/partials/lockdown.php | 81 + .../wp-super-cache/partials/preload.php | 111 + .../partials/rejected_user_agents.php | 16 + .../wp-super-cache/partials/restore.php | 11 + .../partials/tracking_parameters.php | 16 + .../plugins/awaitingmoderation.php | 64 + .../wp-super-cache/plugins/badbehaviour.php | 98 + .../wp-super-cache/plugins/domain-mapping.php | 137 + .../plugins/dynamic-cache-test.php | 187 + .../wp-super-cache/plugins/jetpack.php | 93 + .../wp-super-cache/plugins/multisite.php | 68 + .../wp-super-cache/plugins/wptouch.php | 142 + wp-content/plugins/wp-super-cache/readme.txt | 270 + ...class.wp-super-cache-rest-delete-cache.php | 35 + .../class.wp-super-cache-rest-get-cache.php | 45 + .../class.wp-super-cache-rest-get-plugins.php | 16 + ...class.wp-super-cache-rest-get-settings.php | 208 + .../class.wp-super-cache-rest-get-stats.php | 18 + .../class.wp-super-cache-rest-get-status.php | 114 + .../class.wp-super-cache-rest-preload.php | 31 + .../class.wp-super-cache-rest-test-cache.php | 97 + ...ass.wp-super-cache-rest-update-plugins.php | 22 + ...ss.wp-super-cache-rest-update-settings.php | 652 +++ .../class.wp-super-cache-settings-map.php | 263 + .../plugins/wp-super-cache/rest/load.php | 166 + .../class-device-detection.php | 80 + .../class-user-agent-info.php | 2293 +++++++++ .../src/device-detection/functions.php | 39 + .../wp-super-cache/styling/dashboard.css | 190 + .../plugins/wp-super-cache/wp-cache-base.php | 51 + .../wp-super-cache/wp-cache-config-sample.php | 105 + .../wp-super-cache/wp-cache-phase1.php | 195 + .../wp-super-cache/wp-cache-phase2.php | 3597 +++++++++++++ .../plugins/wp-super-cache/wp-cache.php | 4511 +++++++++++++++++ 277 files changed, 96841 insertions(+) create mode 100644 wp-content/autoptimize_404_handler.php create mode 100644 wp-content/mu-plugins/acrib-core.php create mode 100644 wp-content/plugins/autoptimize/LICENSE create mode 100644 wp-content/plugins/autoptimize/autoptimize.php create mode 100644 wp-content/plugins/autoptimize/autoptimize_helper.php_example create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeBase.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeCLI.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeCSSmin.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeCache.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeCacheChecker.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeCompatibility.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeConfig.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSBase.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSCore.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSCron.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSEnqueue.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSSettings.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSSettingsAjax.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeExitSurvey.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeExtra.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeHTML.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeImages.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeMain.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeMetabox.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeOptionWrapper.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizePartners.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeProTab.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeScripts.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeSpeedupper.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeStyles.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeToolbar.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeUtils.php create mode 100644 wp-content/plugins/autoptimize/classes/autoptimizeVersionUpdatesHandler.php create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_adv.php create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_debug.php create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_explain.php create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_impexp.js.php create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_key.php create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_queue.js.php create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_queue.php create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_rules.js.php create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_rules.php create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/css/admin_styles.css create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/css/ao-tablesorter/asc.gif create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/css/ao-tablesorter/bg.gif create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/css/ao-tablesorter/desc.gif create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/css/ao-tablesorter/style.css create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/js/admin_settings.js create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/js/jquery.tablesorter.min.js create mode 100644 wp-content/plugins/autoptimize/classes/critcss-inc/js/md5.min.js create mode 100644 wp-content/plugins/autoptimize/classes/external/do_not_donate_smallest.png create mode 100644 wp-content/plugins/autoptimize/classes/external/index.html create mode 100644 wp-content/plugins/autoptimize/classes/external/js/index.html create mode 100644 wp-content/plugins/autoptimize/classes/external/js/jquery.cookie.js create mode 100644 wp-content/plugins/autoptimize/classes/external/js/jquery.cookie.min.js create mode 100644 wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js create mode 100644 wp-content/plugins/autoptimize/classes/external/js/unslider-dots.css create mode 100644 wp-content/plugins/autoptimize/classes/external/js/unslider.css create mode 100644 wp-content/plugins/autoptimize/classes/external/js/unslider.min.js create mode 100644 wp-content/plugins/autoptimize/classes/external/php/ao-minify-html.php create mode 100644 wp-content/plugins/autoptimize/classes/external/php/index.html create mode 100644 wp-content/plugins/autoptimize/classes/external/php/jsmin.php create mode 100644 wp-content/plugins/autoptimize/classes/external/php/persist-admin-notices-dismissal/README.md create mode 100644 wp-content/plugins/autoptimize/classes/external/php/persist-admin-notices-dismissal/dismiss-notice.js create mode 100644 wp-content/plugins/autoptimize/classes/external/php/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php create mode 100644 wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/Colors.php create mode 100644 wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/Minifier.php create mode 100644 wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/Utils.php create mode 100644 wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/index.html create mode 100644 wp-content/plugins/autoptimize/classes/index.html create mode 100644 wp-content/plugins/autoptimize/classes/static/exit-survey/exit-survey.css create mode 100644 wp-content/plugins/autoptimize/classes/static/exit-survey/exit-survey.js create mode 100644 wp-content/plugins/autoptimize/classes/static/loading.gif create mode 100644 wp-content/plugins/autoptimize/classes/static/toolbar.css create mode 100644 wp-content/plugins/autoptimize/classes/static/toolbar.js create mode 100644 wp-content/plugins/autoptimize/classes/static/toolbar.min.css create mode 100644 wp-content/plugins/autoptimize/classes/static/toolbar.min.js create mode 100644 wp-content/plugins/autoptimize/config/autoptimize_404_handler.php create mode 100644 wp-content/plugins/autoptimize/config/default.php create mode 100644 wp-content/plugins/autoptimize/config/index.html create mode 100644 wp-content/plugins/autoptimize/index.html create mode 100644 wp-content/plugins/autoptimize/readme.txt create mode 100644 wp-content/plugins/cookie-notice/assets/chartjs/chart.min.js create mode 100644 wp-content/plugins/cookie-notice/assets/microtip/microtip.css create mode 100644 wp-content/plugins/cookie-notice/assets/microtip/microtip.min.css create mode 100644 wp-content/plugins/cookie-notice/assets/modaal/css/modaal.css create mode 100644 wp-content/plugins/cookie-notice/assets/modaal/css/modaal.min.css create mode 100644 wp-content/plugins/cookie-notice/assets/modaal/css/modaal.scss create mode 100644 wp-content/plugins/cookie-notice/assets/modaal/js/modaal.js create mode 100644 wp-content/plugins/cookie-notice/assets/modaal/js/modaal.min.js create mode 100644 wp-content/plugins/cookie-notice/assets/pagination/pagination.css create mode 100644 wp-content/plugins/cookie-notice/assets/pagination/pagination.js create mode 100644 wp-content/plugins/cookie-notice/assets/pagination/pagination.min.js create mode 100644 wp-content/plugins/cookie-notice/assets/react-admin/cn-admin-react.css create mode 100644 wp-content/plugins/cookie-notice/assets/react-admin/cn-admin-react.js create mode 100644 wp-content/plugins/cookie-notice/assets/react-admin/lato-300.woff2 create mode 100644 wp-content/plugins/cookie-notice/assets/react-admin/lato-400.woff2 create mode 100644 wp-content/plugins/cookie-notice/assets/react-admin/lato-700.woff2 create mode 100644 wp-content/plugins/cookie-notice/assets/react-admin/lato-900.woff2 create mode 100644 wp-content/plugins/cookie-notice/assets/spectrum/spectrum.min.css create mode 100644 wp-content/plugins/cookie-notice/assets/spectrum/spectrum.min.js create mode 100644 wp-content/plugins/cookie-notice/cookie-notice.php create mode 100644 wp-content/plugins/cookie-notice/css/admin-dashboard.css create mode 100644 wp-content/plugins/cookie-notice/css/admin-notice.css create mode 100644 wp-content/plugins/cookie-notice/css/admin-plugins.css create mode 100644 wp-content/plugins/cookie-notice/css/admin-welcome.css create mode 100644 wp-content/plugins/cookie-notice/css/admin.css create mode 100644 wp-content/plugins/cookie-notice/css/admin.min.css create mode 100644 wp-content/plugins/cookie-notice/css/front.css create mode 100644 wp-content/plugins/cookie-notice/css/front.min.css create mode 100644 wp-content/plugins/cookie-notice/img/banner-1544x500.png create mode 100644 wp-content/plugins/cookie-notice/img/banner-772x250.png create mode 100644 wp-content/plugins/cookie-notice/img/compliance-icon-256.png create mode 100644 wp-content/plugins/cookie-notice/img/compliance-icon.png create mode 100644 wp-content/plugins/cookie-notice/img/consent-logs.png create mode 100644 wp-content/plugins/cookie-notice/img/cookie-compliance-logo-dark.png create mode 100644 wp-content/plugins/cookie-notice/img/cookie-compliance-logo.png create mode 100644 wp-content/plugins/cookie-notice/img/cookie-compliance-widget.png create mode 100644 wp-content/plugins/cookie-notice/img/cookie-notice-logo-dark.png create mode 100644 wp-content/plugins/cookie-notice/img/cookie-notice-logo.png create mode 100644 wp-content/plugins/cookie-notice/img/hu-logo.png create mode 100644 wp-content/plugins/cookie-notice/img/hu-manity-logo-color.svg create mode 100644 wp-content/plugins/cookie-notice/img/hu-manity-logo-white.svg create mode 100644 wp-content/plugins/cookie-notice/img/icon-128x128.png create mode 100644 wp-content/plugins/cookie-notice/img/icon-256x256.png create mode 100644 wp-content/plugins/cookie-notice/img/layout-bottom.png create mode 100644 wp-content/plugins/cookie-notice/img/layout-bottom.svg create mode 100644 wp-content/plugins/cookie-notice/img/layout-center.png create mode 100644 wp-content/plugins/cookie-notice/img/layout-center.svg create mode 100644 wp-content/plugins/cookie-notice/img/layout-left.png create mode 100644 wp-content/plugins/cookie-notice/img/layout-left.svg create mode 100644 wp-content/plugins/cookie-notice/img/layout-right.png create mode 100644 wp-content/plugins/cookie-notice/img/layout-right.svg create mode 100644 wp-content/plugins/cookie-notice/img/layout-top.png create mode 100644 wp-content/plugins/cookie-notice/img/layout-top.svg create mode 100644 wp-content/plugins/cookie-notice/img/privacy-consent-logs.png create mode 100644 wp-content/plugins/cookie-notice/img/screen-compliance.png create mode 100644 wp-content/plugins/cookie-notice/img/screen-notice.png create mode 100644 wp-content/plugins/cookie-notice/includes/bot-detect.php create mode 100644 wp-content/plugins/cookie-notice/includes/consent-logs-date-list-table.php create mode 100644 wp-content/plugins/cookie-notice/includes/consent-logs-list-table.php create mode 100644 wp-content/plugins/cookie-notice/includes/consent-logs.php create mode 100644 wp-content/plugins/cookie-notice/includes/dashboard.php create mode 100644 wp-content/plugins/cookie-notice/includes/frontend.php create mode 100644 wp-content/plugins/cookie-notice/includes/functions.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/amp/amp.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/amp/iframe.js create mode 100644 wp-content/plugins/cookie-notice/includes/modules/autoptimize/autoptimize.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/breeze/breeze.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/contact-form-7/contact-form-7.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/contact-form-7/privacy-consent.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/contact-form-7/recaptcha.js create mode 100644 wp-content/plugins/cookie-notice/includes/modules/divi/divi.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/easy-digital-downloads/privacy-consent.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/elementor/elementor.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/formidable-forms/privacy-consent.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/hummingbird/hummingbird.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/litespeed-cache/litespeed-cache.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/mailchimp/privacy-consent.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/speed-optimizer/speed-optimizer.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/speedycache/speedycache.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/woocommerce/privacy-consent.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/wordpress/privacy-consent.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/wp-fastest-cache/wp-fastest-cache.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/wp-optimize/wp-optimize.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/wp-rocket/wp-rocket.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/wp-super-cache/wp-super-cache.php create mode 100644 wp-content/plugins/cookie-notice/includes/modules/wpforms/privacy-consent.php create mode 100644 wp-content/plugins/cookie-notice/includes/notifications.json create mode 100644 wp-content/plugins/cookie-notice/includes/privacy-consent-list-table.php create mode 100644 wp-content/plugins/cookie-notice/includes/privacy-consent-logs-list-table.php create mode 100644 wp-content/plugins/cookie-notice/includes/privacy-consent-logs.php create mode 100644 wp-content/plugins/cookie-notice/includes/privacy-consent.php create mode 100644 wp-content/plugins/cookie-notice/includes/react-admin-ajax.php create mode 100644 wp-content/plugins/cookie-notice/includes/settings.php create mode 100644 wp-content/plugins/cookie-notice/includes/welcome-api.php create mode 100644 wp-content/plugins/cookie-notice/includes/welcome-frontend.php create mode 100644 wp-content/plugins/cookie-notice/includes/welcome.php create mode 100644 wp-content/plugins/cookie-notice/index.php create mode 100644 wp-content/plugins/cookie-notice/js/admin-dashboard.js create mode 100644 wp-content/plugins/cookie-notice/js/admin-notice.js create mode 100644 wp-content/plugins/cookie-notice/js/admin-plugins.js create mode 100644 wp-content/plugins/cookie-notice/js/admin-welcome.js create mode 100644 wp-content/plugins/cookie-notice/js/admin.js create mode 100644 wp-content/plugins/cookie-notice/js/admin.min.js create mode 100644 wp-content/plugins/cookie-notice/js/front-welcome.js create mode 100644 wp-content/plugins/cookie-notice/js/front.js create mode 100644 wp-content/plugins/cookie-notice/js/front.min.js create mode 100644 wp-content/plugins/cookie-notice/languages/cookie-notice.pot create mode 100644 wp-content/plugins/cookie-notice/readme.txt create mode 100644 wp-content/plugins/cookie-notice/templates/empty.html create mode 100644 wp-content/plugins/wp-super-cache/LICENSE.txt create mode 100644 wp-content/plugins/wp-super-cache/SECURITY.md create mode 100644 wp-content/plugins/wp-super-cache/advanced-cache.php create mode 100644 wp-content/plugins/wp-super-cache/assets/automattic-airline.svg create mode 100644 wp-content/plugins/wp-super-cache/assets/boost-install-card-main-2x.png create mode 100644 wp-content/plugins/wp-super-cache/assets/boost-install-card-main.png create mode 100644 wp-content/plugins/wp-super-cache/assets/jetpack-colors.svg create mode 100644 wp-content/plugins/wp-super-cache/assets/jetpack-logo.svg create mode 100644 wp-content/plugins/wp-super-cache/assets/super-cache-icon.png create mode 100644 wp-content/plugins/wp-super-cache/inc/boost.php create mode 100644 wp-content/plugins/wp-super-cache/inc/delete-cache-button.js create mode 100644 wp-content/plugins/wp-super-cache/inc/delete-cache-button.php create mode 100644 wp-content/plugins/wp-super-cache/inc/preload-notification.php create mode 100644 wp-content/plugins/wp-super-cache/js/admin.js create mode 100644 wp-content/plugins/wp-super-cache/js/preload-notification.js create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-be_BY.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-be_BY.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-de_DE.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-de_DE.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-es_ES.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-es_ES.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-fr_FR.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-fr_FR.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-it_IT.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-it_IT.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-ja.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-ja.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-lt_LT.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-lt_LT.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-ro_RO.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-ro_RO.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-ru_RU.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-ru_RU.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-sr_RS.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-sr_RS.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-sv_SE.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-sv_SE.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-tr_TR.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-tr_TR.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-ua_UA.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-ua_UA.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-uk.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-uk.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-zh_CN.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-zh_CN.po create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-zh_TW.mo create mode 100644 wp-content/plugins/wp-super-cache/languages/wp-super-cache-zh_TW.po create mode 100644 wp-content/plugins/wp-super-cache/ossdl-cdn.php create mode 100644 wp-content/plugins/wp-super-cache/partials/advanced.php create mode 100644 wp-content/plugins/wp-super-cache/partials/debug.php create mode 100644 wp-content/plugins/wp-super-cache/partials/easy.php create mode 100644 wp-content/plugins/wp-super-cache/partials/lockdown.php create mode 100644 wp-content/plugins/wp-super-cache/partials/preload.php create mode 100644 wp-content/plugins/wp-super-cache/partials/rejected_user_agents.php create mode 100644 wp-content/plugins/wp-super-cache/partials/restore.php create mode 100644 wp-content/plugins/wp-super-cache/partials/tracking_parameters.php create mode 100644 wp-content/plugins/wp-super-cache/plugins/awaitingmoderation.php create mode 100644 wp-content/plugins/wp-super-cache/plugins/badbehaviour.php create mode 100644 wp-content/plugins/wp-super-cache/plugins/domain-mapping.php create mode 100644 wp-content/plugins/wp-super-cache/plugins/dynamic-cache-test.php create mode 100644 wp-content/plugins/wp-super-cache/plugins/jetpack.php create mode 100644 wp-content/plugins/wp-super-cache/plugins/multisite.php create mode 100644 wp-content/plugins/wp-super-cache/plugins/wptouch.php create mode 100644 wp-content/plugins/wp-super-cache/readme.txt create mode 100644 wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-delete-cache.php create mode 100644 wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-cache.php create mode 100644 wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-plugins.php create mode 100644 wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-settings.php create mode 100644 wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-stats.php create mode 100644 wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-status.php create mode 100644 wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-preload.php create mode 100644 wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-test-cache.php create mode 100644 wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-update-plugins.php create mode 100644 wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-update-settings.php create mode 100644 wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-settings-map.php create mode 100644 wp-content/plugins/wp-super-cache/rest/load.php create mode 100644 wp-content/plugins/wp-super-cache/src/device-detection/class-device-detection.php create mode 100644 wp-content/plugins/wp-super-cache/src/device-detection/class-user-agent-info.php create mode 100644 wp-content/plugins/wp-super-cache/src/device-detection/functions.php create mode 100644 wp-content/plugins/wp-super-cache/styling/dashboard.css create mode 100644 wp-content/plugins/wp-super-cache/wp-cache-base.php create mode 100644 wp-content/plugins/wp-super-cache/wp-cache-config-sample.php create mode 100644 wp-content/plugins/wp-super-cache/wp-cache-phase1.php create mode 100644 wp-content/plugins/wp-super-cache/wp-cache-phase2.php create mode 100644 wp-content/plugins/wp-super-cache/wp-cache.php diff --git a/.gitignore b/.gitignore index cb005dc..13e5d10 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,5 @@ wp-content/wp-cache-config.php Thumbs.db # Panel .user.ini +wp-content/cache/ +wp-content/wp-cache-config.php diff --git a/wp-content/autoptimize_404_handler.php b/wp-content/autoptimize_404_handler.php new file mode 100644 index 0000000..6507899 --- /dev/null +++ b/wp-content/autoptimize_404_handler.php @@ -0,0 +1,52 @@ + + + [\d]+)']); + return $endpoints; +}); + +// --- Disable emoji (reduces ~20KB page weight) --- +remove_action('wp_head', 'print_emoji_detection_script', 7); +remove_action('wp_print_styles', 'print_emoji_styles'); +remove_action('admin_print_scripts', 'print_emoji_detection_script'); +remove_action('admin_print_styles', 'print_emoji_styles'); +remove_filter('the_content_feed', 'wp_staticize_emoji'); +remove_filter('comment_text_rss', 'wp_staticize_emoji'); +remove_filter('wp_mail', 'wp_staticize_emoji_for_email'); + +// --- Limit post revisions --- +if (!defined('WP_POST_REVISIONS')) { + define('WP_POST_REVISIONS', 3); +} diff --git a/wp-content/plugins/autoptimize/LICENSE b/wp-content/plugins/autoptimize/LICENSE new file mode 100644 index 0000000..d6a9326 --- /dev/null +++ b/wp-content/plugins/autoptimize/LICENSE @@ -0,0 +1,340 @@ +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + diff --git a/wp-content/plugins/autoptimize/autoptimize.php b/wp-content/plugins/autoptimize/autoptimize.php new file mode 100644 index 0000000..a94b79b --- /dev/null +++ b/wp-content/plugins/autoptimize/autoptimize.php @@ -0,0 +1,102 @@ +

' . esc_html__( 'Autoptimize requires PHP 5.6 (or higher) to function properly. Please upgrade PHP. The Plugin has been auto-deactivated.', 'autoptimize' ) . '

'; + if ( isset( $_GET['activate'] ) ) { + unset( $_GET['activate'] ); + } + } + function autoptimize_deactivate_self() { + deactivate_plugins( plugin_basename( AUTOPTIMIZE_PLUGIN_FILE ) ); + } + add_action( 'admin_notices', 'autoptimize_incompatible_admin_notice' ); + add_action( 'admin_init', 'autoptimize_deactivate_self' ); + return; +} + +function autoptimize_autoload( $class_name ) { + if ( in_array( $class_name, array( 'AO_Minify_HTML', 'JSMin' ) ) ) { + $file = strtolower( $class_name ); + $file = str_replace( '_', '-', $file ); + $path = dirname( __FILE__ ) . '/classes/external/php/'; + $filepath = $path . $file . '.php'; + } elseif ( false !== strpos( $class_name, 'Autoptimize\\tubalmartin\\CssMin' ) ) { + $file = str_replace( 'Autoptimize\\tubalmartin\\CssMin\\', '', $class_name ); + $path = dirname( __FILE__ ) . '/classes/external/php/yui-php-cssmin-bundled/'; + $filepath = $path . $file . '.php'; + } elseif ( 'autoptimize' === substr( $class_name, 0, 11 ) ) { + // One of our "old" classes. + $file = $class_name; + $path = dirname( __FILE__ ) . '/classes/'; + $filepath = $path . $file . '.php'; + } elseif ( 'PAnD' === $class_name ) { + $file = 'persist-admin-notices-dismissal'; + $path = dirname( __FILE__ ) . '/classes/external/php/persist-admin-notices-dismissal/'; + $filepath = $path . $file . '.php'; + } + + // If we didn't match one of our rules, bail! + if ( ! isset( $filepath ) || ! is_readable( $filepath ) ) { + return; + } + + require $filepath; +} + +spl_autoload_register( 'autoptimize_autoload' ); + +// Load WP CLI command(s) on demand. +if ( defined( 'WP_CLI' ) && WP_CLI ) { + require AUTOPTIMIZE_PLUGIN_DIR . 'classes/autoptimizeCLI.php'; +} + +// filter to disable AO both on front- and backend. +if ( apply_filters( 'autoptimize_filter_disable_plugin', false ) ) { + return; +} + +/** + * Retrieve the instance of the main plugin class. + * + * @return autoptimizeMain + */ +function autoptimize() { + static $plugin = null; + + if ( null === $plugin ) { + $plugin = new autoptimizeMain( AUTOPTIMIZE_PLUGIN_VERSION, AUTOPTIMIZE_PLUGIN_FILE ); + } + + return $plugin; +} + +autoptimize()->run(); diff --git a/wp-content/plugins/autoptimize/autoptimize_helper.php_example b/wp-content/plugins/autoptimize/autoptimize_helper.php_example new file mode 100644 index 0000000..6e38db6 --- /dev/null +++ b/wp-content/plugins/autoptimize/autoptimize_helper.php_example @@ -0,0 +1,143 @@ +","after"); + } + +/* autoptimize_filter_js_replacetag: where in the HTML is optimized JS injected + +@param array $replacetag, containing the html-tag and the method (inject "before", "after" or "replace") +@return array with updated values */ +// add_filter('autoptimize_filter_js_replacetag','my_ao_override_js_replacetag',10,1); +function my_ao_override_js_replacetag($replacetag) { + return array("","replace"); + } + +/* autoptimize_js_do_minify: do we want to minify? if set to false autoptimize effectively only aggregates, but does not minify + +@return: boolean true or false */ +// add_filter('autoptimize_js_do_minify','my_ao_js_minify',10,1); +function my_ao_js_minify() { + return false; + } + +/* autoptimize_css_do_minify: do we want to minify? if set to false autoptimize effectively only aggregates, but does not minify + +@return: boolean true or false */ +// add_filter('autoptimize_css_do_minify','my_ao_css_minify',10,1); +function my_ao_css_minify() { + return false; + } + +/* autoptimize_js_include_inline: do we want AO to also aggregate inline JS? + +@return: boolean true or false */ +// add_filter('autoptimize_js_include_inline','my_ao_js_include_inline',10,1); +function my_ao_js_include_inline() { + return false; + } + +/* autoptimize_css_include_inline: do we want AO to also aggregate inline CSS? + +@return: boolean true or false */ +// add_filter('autoptimize_css_include_inline','my_ao_css_include_inline',10,1); +function my_ao_css_include_inline() { + return false; + } + +/* autoptimize_filter_css_defer_inline: what CSS to inline when "defer and inline" is activated + +@param $inlined: string with above the fold CSS as configured in admin +@return: updated string with above the fold CSS */ +// add_filter('autoptimize_filter_css_defer_inline','my_ao_css_defer_inline',10,1); +function my_ao_css_defer_inline($inlined) { + return $inlined."h2,h1{color:red !important;}"; + } + +/* autoptimize_filter_css_fonts_cdn: do we want to move fonts to the CDN-url as well + +@return: false (default) or true */ +// add_filter('autoptimize_filter_css_fonts_cdn','my_css_cdnfont',10,0); +function my_css_cdnfont(){ + return true; +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeBase.php b/wp-content/plugins/autoptimize/classes/autoptimizeBase.php new file mode 100644 index 0000000..db3698b --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeBase.php @@ -0,0 +1,711 @@ +content = $content; + } + + /** + * Reads the page and collects tags. + * + * @param array $options Options. + * + * @return bool + */ + abstract public function read( $options ); + + /** + * Joins and optimizes collected things. + * + * @return bool + */ + abstract public function minify(); + + /** + * Caches the things. + * + * @return void + */ + abstract public function cache(); + + /** + * Returns the content + * + * @return string + */ + abstract public function getcontent(); + + /** + * Tranfsorms a given URL to a full local filepath if possible. + * Returns local filepath or false. + * + * @param string $url URL to transform. + * + * @return bool|string + */ + public function getpath( $url ) + { + $url = apply_filters( 'autoptimize_filter_cssjs_alter_url', $url ); + + if ( is_null( $url ) ) { + return false; + } + + if ( false !== strpos( $url, '%' ) ) { + $url = urldecode( $url ); + } + + $site_host = parse_url( AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST ); + $content_host = parse_url( AUTOPTIMIZE_WP_ROOT_URL, PHP_URL_HOST ); + + // Normalizing attempts... + $double_slash_position = strpos( $url, '//' ); + if ( 0 === $double_slash_position ) { + if ( is_ssl() ) { + $url = 'https:' . $url; + } else { + $url = 'http:' . $url; + } + } elseif ( ( false === $double_slash_position ) && ( false === strpos( $url, $site_host ) ) ) { + if ( AUTOPTIMIZE_WP_SITE_URL === $site_host ) { + $url = AUTOPTIMIZE_WP_SITE_URL . $url; + } elseif ( 0 === strpos( $url, '/' ) ) { + $url = '//' . $site_host . autoptimizeUtils::path_canonicalize( $url ); + } else { + $url = AUTOPTIMIZE_WP_SITE_URL . autoptimizeUtils::path_canonicalize( $url ); + } + } + + if ( $site_host !== $content_host ) { + $url = str_replace( AUTOPTIMIZE_WP_CONTENT_URL, AUTOPTIMIZE_WP_SITE_URL . AUTOPTIMIZE_WP_CONTENT_NAME, $url ); + } + + // First check; hostname wp site should be hostname of url! + $url_host = @parse_url( $url, PHP_URL_HOST ); // @codingStandardsIgnoreLine + if ( $url_host !== $site_host ) { + /** + * First try to get all domains from WPML (if available) + * then explicitely declare $this->cdn_url as OK as well + * then apply own filter autoptimize_filter_cssjs_multidomain takes an array of hostnames + * each item in that array will be considered part of the same WP multisite installation + */ + $multidomains = array(); + + $multidomains_wpml = apply_filters( 'wpml_setting', array(), 'language_domains' ); + if ( ! empty( $multidomains_wpml ) ) { + $multidomains = array_map( array( $this, 'get_url_hostname' ), $multidomains_wpml ); + } + + if ( ! empty( $this->cdn_url ) ) { + $multidomains[] = parse_url( $this->cdn_url, PHP_URL_HOST ); + } + + $multidomains = apply_filters( 'autoptimize_filter_cssjs_multidomain', $multidomains ); + + if ( ! empty( $multidomains ) ) { + if ( in_array( $url_host, $multidomains ) ) { + $url = str_replace( $url_host, $site_host, $url ); + } else { + return false; + } + } else { + return false; + } + } + + // Try to remove "wp root url" from url while not minding http<>https. + $tmp_ao_root = preg_replace( '/https?:/', '', AUTOPTIMIZE_WP_ROOT_URL ); + + if ( $site_host !== $content_host ) { + // As we replaced the content-domain with the site-domain, we should match against that. + $tmp_ao_root = preg_replace( '/https?:/', '', AUTOPTIMIZE_WP_SITE_URL ); + } + + if ( is_multisite() && ! is_main_site() && ! empty( $this->cdn_url ) && apply_filters( 'autoptimize_filter_base_getpage_multisite_cdn_juggling', true ) ) { + // multisite child sites with CDN need the network_site_url as tmp_ao_root but only if directory-based multisite. + $_network_site_url = network_site_url(); + if ( strpos( AUTOPTIMIZE_WP_SITE_URL, $_network_site_url ) !== false ) { + $tmp_ao_root = preg_replace( '/https?:/', '', $_network_site_url ); + } + } + + $tmp_url = preg_replace( '/https?:/', '', $url ); + $path = str_replace( $tmp_ao_root, '', $tmp_url ); + + // If path starts with :// or //, this is not a URL in the WP context and + // we have to assume we can't aggregate. + if ( preg_match( '#^:?//#', $path ) ) { + // External script/css (adsense, etc). + return false; + } + + // Prepend with WP_ROOT_DIR to have full path to file. + $path = str_replace( '//', '/', trailingslashit( WP_ROOT_DIR ) . $path ); + + // Allow path to be altered, e.g. in the case of bedrock-like setups where + // core, theme & plugins might be in different locations on the filesystem. + $path = apply_filters( 'autoptimize_filter_base_getpath_path', $path, $url ); + + // Final check: does file exist and is it readable? + if ( file_exists( $path ) && is_file( $path ) && is_readable( $path ) ) { + return $path; + } else { + return false; + } + } + + /** + * Returns the hostname part of a given $url if we're able to parse it. + * If not, it returns the original url (prefixed with http:// scheme in case + * it was missing). + * Used as callback for WPML multidomains filter. + * + * @param string $url URL. + * + * @return string + */ + protected function get_url_hostname( $url ) + { + // Checking that the url starts with something vaguely resembling a protocol. + if ( ( 0 !== strpos( $url, 'http' ) ) && ( 0 !== strpos( $url, '//' ) ) ) { + $url = 'http://' . $url; + } + + // Grab the hostname. + $hostname = parse_url( $url, PHP_URL_HOST ); + + // Fallback when parse_url() fails. + if ( empty( $hostname ) ) { + $hostname = $url; + } + + return $hostname; + } + + /** + * Hides everything between noptimize-comment tags. + * + * @param string $markup Markup to process. + * + * @return string + */ + protected function hide_noptimize( $markup ) + { + return $this->replace_contents_with_marker_if_exists( + 'NOPTIMIZE', + '//', + '#.*?#is', + $markup + ); + } + + /** + * Unhide noptimize-tags. + * + * @param string $markup Markup to process. + * + * @return string + */ + protected function restore_noptimize( $markup ) + { + return $this->restore_marked_content( 'NOPTIMIZE', $markup ); + } + + /** + * Hides "iehacks" content. + * + * @param string $markup Markup to process. + * + * @return string + */ + protected function hide_iehacks( $markup ) + { + return $this->replace_contents_with_marker_if_exists( + 'IEHACK', // Marker name... + '#is', // Replacement regex... + $markup + ); + } + + /** + * Restores "hidden" iehacks content. + * + * @param string $markup Markup to process. + * + * @return string + */ + protected function restore_iehacks( $markup ) + { + return $this->restore_marked_content( 'IEHACK', $markup ); + } + + /** + * "Hides" content within HTML comments using a regex-based replacement + * if HTML comment markers are found. + * `` becomes `%%COMMENTS%%ZXhhbXBsZQ==%%COMMENTS%%` + * + * @param string $markup Markup to process. + * + * @return string + */ + protected function hide_comments( $markup ) + { + return $this->replace_contents_with_marker_if_exists( + 'COMMENTS', + '#is', + $markup + ); + } + + /** + * Restores original HTML comment markers inside a string whose HTML + * comments have been "hidden" by using `hide_comments()`. + * + * @param string $markup Markup to process. + * + * @return string + */ + protected function restore_comments( $markup ) + { + return $this->restore_marked_content( 'COMMENTS', $markup ); + } + + /** + * Replaces the given URL with the CDN-version of it when CDN replacement + * is supposed to be done. + * + * @param string $url URL to process. + * + * @return string + */ + public function url_replace_cdn( $url ) + { + // For 2.3 back-compat in which cdn-ing appeared to be automatically + // including WP subfolder/subdirectory into account as part of cdn-ing, + // even though it might've caused serious troubles in certain edge-cases. + $cdn_url = autoptimizeUtils::tweak_cdn_url_if_needed( $this->cdn_url ); + + // Allows API/filter to further tweak the cdn url... + $cdn_url = apply_filters( 'autoptimize_filter_base_cdnurl', $cdn_url ); + if ( ! empty( $cdn_url ) && false === strpos( $url, $cdn_url ) && false !== apply_filters( 'autoptimize_filter_base_apply_cdn', true, $url ) ) { + + // Simple str_replace-based approach fails when $url is protocol-or-host-relative. + $is_protocol_relative = autoptimizeUtils::is_protocol_relative( $url ); + $is_host_relative = ( ! $is_protocol_relative && ( '/' === $url[0] ) ); + $cdn_url = esc_url( rtrim( $cdn_url, '/' ) ); + + if ( $is_host_relative ) { + // Prepending host-relative urls with the cdn url. + $url = $cdn_url . $url; + } else { + // Either a protocol-relative or "regular" url, replacing it either way. + if ( $is_protocol_relative ) { + // Massage $site_url so that simple str_replace() still "works" by + // searching for the protocol-relative version of AUTOPTIMIZE_WP_SITE_URL. + $site_url = str_replace( array( 'http:', 'https:' ), '', AUTOPTIMIZE_WP_SITE_URL ); + } else { + $site_url = AUTOPTIMIZE_WP_SITE_URL; + } + $url = str_replace( $site_url, $cdn_url, $url ); + } + } + + // Allow API filter to take further care of CDN replacement. + $url = apply_filters( 'autoptimize_filter_base_replace_cdn', $url ); + + return $url; + } + + /** + * Injects/replaces the given payload markup into `$this->content` + * at the specified location. + * If the specified tag cannot be found, the payload is appended into + * $this->content along with a warning wrapped inside tags. + * + * @param string $payload Markup to inject. + * @param array $where Array specifying the tag name and method of injection. + * Index 0 is the tag name (i.e., ``). + * Index 1 specifies ˛'before', 'after' or 'replace'. Defaults to 'before'. + * + * @return void + */ + protected function inject_in_html( $payload, $where ) + { + $warned = false; + $position = autoptimizeUtils::strpos( $this->content, $where[0] ); + if ( false !== $position ) { + // Found the tag, setup content/injection as specified. + if ( 'after' === $where[1] ) { + $content = $where[0] . $payload; + } elseif ( 'replace' === $where[1] ) { + $content = $payload; + } else { + $content = $payload . $where[0]; + } + // Place where specified. + $this->content = autoptimizeUtils::substr_replace( + $this->content, + $content, + $position, + // Using plain strlen() should be safe here for now, since + // we're not searching for multibyte chars here still... + strlen( $where[0] ) + ); + } else { + // Couldn't find what was specified, just append and add a warning. + $this->content .= $payload; + if ( ! $warned ) { + $tag_display = str_replace( array( '<', '>' ), '', $where[0] ); + $this->content .= ''; + $warned = true; + } + } + } + + /** + * Returns true if given `$tag` is found in the list of `$removables`. + * + * @param string $tag Tag to search for. + * @param array $removables List of things considered completely removable. + * + * @return bool + */ + protected function isremovable( $tag, $removables ) + { + foreach ( $removables as $match ) { + if ( false !== strpos( $tag, $match ) ) { + return true; + } + } + + return false; + } + + /** + * Callback used in `self::inject_minified()`. + * + * @param array $matches Regex matches. + * + * @return string + */ + public function inject_minified_callback( $matches ) + { + static $conf = null; + if ( null === $conf ) { + $conf = autoptimizeConfig::instance(); + } + + /** + * $matches[1] holds the whole match caught by regex in self::inject_minified(), + * so we take that and split the string on `|`. + * First element is the filepath, second is the md5 hash of contents + * the filepath had when it was being processed. + * If we don't have those, we'll bail out early. + */ + $filepath = null; + $filehash = null; + + // Grab the parts we need. + $parts = explode( '|', $matches[1] ); + if ( ! empty( $parts ) ) { + $filepath = isset( $parts[0] ) ? base64_decode( $parts[0] ) : null; + $filehash = isset( $parts[1] ) ? $parts[1] : null; + } + + // Bail early if something's not right... + if ( ! $filepath || ! $filehash ) { + return "\n"; + } + + $filecontent = file_get_contents( $filepath ); + + // Some things are differently handled for css/js... + $is_js_file = ( '.js' === substr( $filepath, -3, 3 ) ); + + $is_css_file = false; + if ( ! $is_js_file ) { + $is_css_file = ( '.css' === substr( $filepath, -4, 4 ) ); + } + + // BOMs being nuked here unconditionally (regardless of where they are)! + $filecontent = preg_replace( "#\x{EF}\x{BB}\x{BF}#", '', $filecontent ); + + // Remove comments and blank lines. + if ( $is_js_file ) { + $filecontent = preg_replace( '#^\s*\/\/.*$#Um', '', $filecontent ); + } + + // Nuke un-important comments. + $filecontent = preg_replace( '#^\s*\/\*[^!].*\*\/\s?#Um', '', $filecontent ); + + // Normalize newlines. + $filecontent = preg_replace( '#(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+#', "\n", $filecontent ); + + // JS specifics. + if ( $is_js_file ) { + // Append a semicolon at the end of js files if it's missing. + $last_char = substr( $filecontent, -1, 1 ); + if ( ';' !== $last_char && '}' !== $last_char ) { + $filecontent .= ';'; + } + // Check if try/catch should be used. + $opt_js_try_catch = $conf->get( 'autoptimize_js_trycatch' ); + if ( 'on' === $opt_js_try_catch ) { + // It should, wrap in try/catch. + $filecontent = 'try{' . $filecontent . '}catch(e){}'; + } + } elseif ( $is_css_file ) { + $filecontent = autoptimizeStyles::fixurls( $filepath, $filecontent ); + } else { + $filecontent = ''; + } + + // Return modified (or empty!) code/content. + return "\n" . $filecontent; + } + + /** + * Inject already minified code in optimized JS/CSS. + * + * @param string $in Markup. + * + * @return string + */ + protected function inject_minified( $in ) + { + $out = $in; + if ( false !== strpos( $in, '%%INJECTLATER%%' ) ) { + $out = preg_replace_callback( + '#\/\*\!%%INJECTLATER' . AUTOPTIMIZE_HASH . '%%(.*?)%%INJECTLATER%%\*\/#is', + array( $this, 'inject_minified_callback' ), + $in + ); + } + + return $out; + } + + /** + * Specialized method to create the INJECTLATER marker. + * These are somewhat "special", in the sense that they're additionally wrapped + * within an "exclamation mark style" comment, so that they're not stripped + * out by minifiers. + * They also currently contain the hash of the file's contents too (unlike other markers). + * + * @param string $filepath Filepath. + * @param string $hash Hash. + * + * @return string + */ + public static function build_injectlater_marker( $filepath, $hash ) + { + $contents = '/*!' . self::build_marker( 'INJECTLATER', $filepath, $hash ) . '*/'; + + return $contents; + } + + /** + * Creates and returns a `%%`-style named marker which holds + * the base64 encoded `$data`. + * If `$hash` is provided, it's appended to the base64 encoded string + * using `|` as the separator (in order to support building the + * somewhat special/different INJECTLATER marker). + * + * @param string $name Marker name. + * @param string $data Marker data which will be base64-encoded. + * @param string|null $hash Optional. + * + * @return string + */ + public static function build_marker( $name, $data, $hash = null ) + { + // Start the marker, add the data. + $marker = '%%' . $name . AUTOPTIMIZE_HASH . '%%' . base64_encode( $data ); + + // Add the hash if provided. + if ( null !== $hash ) { + $marker .= '|' . $hash; + } + + // Close the marker. + $marker .= '%%' . $name . '%%'; + + return $marker; + } + + /** + * Searches for `$search` in `$content` (using either `preg_match()` + * or `strpos()`, depending on whether `$search` is a valid regex pattern or not). + * If something is found, it replaces `$content` using `$re_replace_pattern`, + * effectively creating our named markers (`%%{$marker}%%`. + * These are then at some point replaced back to their actual/original/modified + * contents using `autoptimizeBase::restore_marked_content()`. + * + * @param string $marker Marker name (without percent characters). + * @param string $search A string or full blown regex pattern to search for in $content. Uses `strpos()` or `preg_match()`. + * @param string $re_replace_pattern Regex pattern to use when replacing contents. + * @param string $content Content to work on. + * + * @return string + */ + public static function replace_contents_with_marker_if_exists( $marker, $search, $re_replace_pattern, $content ) + { + $found = false; + + $is_regex = autoptimizeUtils::str_is_valid_regex( $search ); + if ( $is_regex ) { + $found = preg_match( $search, $content ); + } else { + $found = ( false !== strpos( $content, $search ) ); + } + + if ( $found ) { + $content = preg_replace_callback( + $re_replace_pattern, + function( $matches ) use ( $marker ) { + return autoptimizeBase::build_marker( $marker, $matches[0] ); + }, + $content + ); + + // Check for error (for example, an error can occur if $content is very large). + if ( null === $content ) { + $error_message = 'Autoptimize: preg_replace_callback() failed'; + if ( function_exists( 'preg_last_error_msg' ) ) { + $error_message .= ': ' . preg_last_error_msg(); + } + error_log( $error_message ); + } + } + + return $content; + } + + /** + * Complements `autoptimizeBase::replace_contents_with_marker_if_exists()`. + * + * @param string $marker Marker. + * @param string $content Markup. + * + * @return string + */ + public static function restore_marked_content( $marker, $content ) + { + if ( false !== strpos( $content, $marker ) ) { + $content = preg_replace_callback( + '#%%' . $marker . AUTOPTIMIZE_HASH . '%%(.*?)%%' . $marker . '%%#is', + function ( $matches ) { + return base64_decode( $matches[1] ); + }, + $content + ); + } + + return $content; + } + + /** + * Logs given `$data` for debugging purposes (when debug logging is on). + * + * @param mixed $data Data to log. + * + * @return void + */ + protected function debug_log( $data ) + { + if ( ! isset( $this->debug_log ) || ! $this->debug_log ) { + return; + } + + if ( ! is_string( $data ) && ! is_resource( $data ) ) { + $data = var_export( $data, true ); + } + + error_log( $data ); + } + + /** + * Checks if a single local css/js file can be minified and returns source if so. + * + * @param string $filepath Filepath. + * + * @return bool|string to be minified code or false. + */ + protected function prepare_minify_single( $filepath ) + { + // Decide what we're dealing with, return false if we don't know. + if ( autoptimizeUtils::str_ends_in( $filepath, '.js' ) ) { + $type = 'js'; + } elseif ( autoptimizeUtils::str_ends_in( $filepath, '.css' ) ) { + $type = 'css'; + } else { + return false; + } + + // Bail if it looks like its already minifed (by having -min or .min in filename). + $minified_variants = array( + '-min.' . $type, + '.min.' . $type, + ); + foreach ( $minified_variants as $ending ) { + if ( autoptimizeUtils::str_ends_in( $filepath, $ending ) && true === apply_filters( 'autoptimize_filter_base_prepare_exclude_minified', true ) ) { + return false; + } + } + + // Get file contents, bail if empty. + $contents = file_get_contents( $filepath ); + + return $contents; + } + + /** + * Given an autoptimizeCache instance returns the (maybe cdn-ed) url of + * the cached file. + * + * @param autoptimizeCache $cache autoptimizeCache instance. + * + * @return string + */ + protected function build_minify_single_url( autoptimizeCache $cache ) + { + $url = AUTOPTIMIZE_CACHE_URL . $cache->getname(); + + // CDN-replace the resulting URL if needed... + $url = $this->url_replace_cdn( $url ); + + return $url; + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeCLI.php b/wp-content/plugins/autoptimize/classes/autoptimizeCLI.php new file mode 100644 index 0000000..6d0adad --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeCLI.php @@ -0,0 +1,34 @@ +minifier = new Autoptimize\tubalmartin\CssMin\Minifier( $raise_limits ); + } + + /** + * Runs the minifier on given string of $css. + * Returns the minified css. + * + * @param string $css CSS to minify. + * + * @return string + */ + public function run( $css ) + { + // hide calc() if filter says yes (as YUI CSS compressor PHP port has problems retaining spaces around + and - operators). + // regex see tests at https://regex101.com/r/ofGQG9/1 + if ( apply_filters( 'autoptimize_filter_css_hide_calc', true ) ) { + $css = autoptimizeBase::replace_contents_with_marker_if_exists( 'CALC', 'calc(', '#(calc|min|max|clamp)\([^;}]*\)#m', $css ); + } + + // minify. + $result = $this->minifier->run( $css ); + + // restore calc() if filter says yes. + if ( apply_filters( 'autoptimize_filter_css_hide_calc', true ) ) { + $result = autoptimizeBase::restore_marked_content( 'CALC', $result ); + } + + return $result; + } + + /** + * Static helper. + * + * @param string $css CSS to minify. + * + * @return string + */ + public static function minify( $css ) + { + $minifier = new self(); + + return $minifier->run( $css ); + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeCache.php b/wp-content/plugins/autoptimize/classes/autoptimizeCache.php new file mode 100644 index 0000000..f47f1f6 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeCache.php @@ -0,0 +1,855 @@ + we don't gzip, the web server does it. + * False => we do it ourselves. + * + * @var bool + */ + private $nogzip; + + /** + * Ctor. + * + * @param string $md5 Hash. + * @param string $ext Extension. + */ + public function __construct( $md5, $ext = 'php' ) + { + $_min_ext = ''; + if ( apply_filters( 'autoptimize_filter_cache_url_add_min_ext', false ) ) { + $_min_ext = '.min'; + } + + $this->cachedir = AUTOPTIMIZE_CACHE_DIR; + $this->nogzip = AUTOPTIMIZE_CACHE_NOGZIP; + if ( ! $this->nogzip ) { + $this->filename = AUTOPTIMIZE_CACHEFILE_PREFIX . $md5 . $_min_ext . '.php'; + } else { + if ( in_array( $ext, array( 'js', 'css' ) ) ) { + $this->filename = $ext . '/' . AUTOPTIMIZE_CACHEFILE_PREFIX . $md5 . $_min_ext . '.' . $ext; + } else { + $this->filename = AUTOPTIMIZE_CACHEFILE_PREFIX . $md5 . $_min_ext . '.' . $ext; + } + } + } + + /** + * Returns true if the cached file exists on disk. + * + * @return bool + */ + public function check() + { + return file_exists( $this->cachedir . $this->filename ); + } + + /** + * Returns cache contents if they exist, false otherwise. + * + * @return string|false + */ + public function retrieve() + { + if ( $this->check() ) { + if ( false == $this->nogzip ) { + return file_get_contents( $this->cachedir . $this->filename . '.none' ); + } else { + return file_get_contents( $this->cachedir . $this->filename ); + } + } + return false; + } + + /** + * Stores given $data in cache. + * + * @param string $data Data to cache. + * @param string $mime Mimetype. + * + * @return void|bool + */ + public function cache( $data, $mime ) + { + // readonly FS explicitly OK'ed by developer, so just pretend all is OK. + if ( defined( 'AUTOPTIMIZE_CACHE_READONLY' ) ) { + return true; + } + + // off by default; check if cachedirs exist every time before caching + // + // to be activated for users that experience these ugly errors; + // PHP Warning: file_put_contents failed to open stream: No such file or directory. + if ( apply_filters( 'autoptimize_filter_cache_checkdirs_on_write', false ) ) { + $this->check_and_create_dirs(); + } + + if ( false === $this->nogzip ) { + // We handle gzipping ourselves. + $file = 'default.php'; + $phpcode = file_get_contents( AUTOPTIMIZE_PLUGIN_DIR . 'config/' . $file ); + $phpcode = str_replace( array( '%%CONTENT%%', 'exit;' ), array( $mime, '' ), $phpcode ); + + file_put_contents( $this->cachedir . $this->filename, $phpcode ); + file_put_contents( $this->cachedir . $this->filename . '.none', $data ); + } else { + // Write code to cache without doing anything else. + file_put_contents( $this->cachedir . $this->filename, $data ); + + // save fallback .js or .css file if filter true (to be false by default) but not if snippet or single. + if ( self::do_fallback() && strpos( $this->filename, '_snippet_' ) === false && strpos( $this->filename, '_single_' ) === false ) { + $_extension = pathinfo( $this->filename, PATHINFO_EXTENSION ); + $_fallback_file = AUTOPTIMIZE_CACHEFILE_PREFIX . 'fallback.' . $_extension; + if ( ( 'css' === $_extension || 'js' === $_extension ) && ! file_exists( $this->cachedir . $_extension . '/' . $_fallback_file ) ) { + file_put_contents( $this->cachedir . $_extension . '/' . $_fallback_file, $data ); + } + } + + if ( apply_filters( 'autoptimize_filter_cache_create_static_gzip', false ) ) { + // Create an additional cached gzip file. + file_put_contents( $this->cachedir . $this->filename . '.gz', gzencode( $data, 9, FORCE_GZIP ) ); + // If PHP Brotli extension is installed, create an additional cached Brotli file. + if ( function_exists( 'brotli_compress' ) ) { + file_put_contents( $this->cachedir . $this->filename . '.br', brotli_compress( $data, 11, BROTLI_GENERIC ) ); + } + } + } + + // Provide 3rd party action hook for every cache file that is created. + // This hook can for example be used to inject a copy of the created cache file to a other domain. + do_action( 'autoptimize_action_cache_file_created', $this->cachedir . $this->filename ); + } + + /** + * Get cache filename. + * + * @return string + */ + public function getname() + { + // NOTE: This could've maybe been a do_action() instead, however, + // that ship has sailed. + // The original idea here was to provide 3rd party code a hook so that + // it can "listen" to all the complete autoptimized-urls that the page + // will emit... Or something to that effect I think? + apply_filters( 'autoptimize_filter_cache_getname', AUTOPTIMIZE_CACHE_URL . $this->filename ); + + return $this->filename; + } + + /** + * Returns true if given `$file` is considered a valid Autoptimize cache file, + * false otherwise. + * + * @param string $dir Directory name (with a trailing slash). + * @param string $file Filename. + * @return bool + */ + protected static function is_valid_cache_file( $dir, $file ) + { + if ( '.' !== $file && '..' !== $file && + false !== strpos( $file, AUTOPTIMIZE_CACHEFILE_PREFIX ) && + is_file( $dir . $file ) ) { + + // It's a valid file! + return true; + } + + // Everything else is considered invalid! + return false; + } + + /** + * Clears contents of AUTOPTIMIZE_CACHE_DIR. + * + * @return void + */ + protected static function clear_cache_classic() + { + $contents = self::get_cache_contents(); + foreach ( $contents as $name => $files ) { + $dir = rtrim( AUTOPTIMIZE_CACHE_DIR . $name, '/' ) . '/'; + foreach ( $files as $file ) { + if ( self::is_valid_cache_file( $dir, $file ) ) { + @unlink( $dir . $file ); // @codingStandardsIgnoreLine + } + } + } + + @unlink( AUTOPTIMIZE_CACHE_DIR . '/.htaccess' ); // @codingStandardsIgnoreLine + } + + /** + * Recursively deletes the specified pathname (file/directory) if possible. + * Returns true on success, false otherwise. + * + * @param string $pathname Pathname to remove. + * + * @return bool + */ + protected static function rmdir( $pathname ) + { + $files = self::get_dir_contents( $pathname ); + foreach ( $files as $file ) { + $path = $pathname . '/' . $file; + if ( is_dir( $path ) ) { + self::rmdir( $path ); + } else { + unlink( $path ); + } + } + + return rmdir( $pathname ); + } + + /** + * Clears contents of AUTOPTIMIZE_CACHE_DIR by renaming the current + * cache directory into a new one with a unique name and then + * re-creating the default (empty) cache directory. + * + * Important/ Fixme: this does not take multisite into account, so + * if advanced_cache_clear_enabled is true (it is not by default) + * then the content for all subsites is zapped! + * + * @return bool Returns true when everything is done successfully, false otherwise. + */ + protected static function clear_cache_via_rename() + { + $ok = false; + $dir = self::get_pathname_base(); + $new_name = self::get_unique_name(); + + // Makes sure the new pathname is on the same level... + $new_pathname = dirname( $dir ) . '/' . $new_name; + $renamed = @rename( $dir, $new_pathname ); // @codingStandardsIgnoreLine + + // When renamed, re-create the default cache directory back so it's + // available again... + if ( $renamed ) { + $ok = self::cacheavail(); + } + + return $ok; + } + + /** + * Returns true when advanced cache clearing is enabled. + * + * @return bool + */ + public static function advanced_cache_clear_enabled() + { + return apply_filters( 'autoptimize_filter_cache_clear_advanced', false ); + } + + /** + * Returns a (hopefully) unique new cache folder name for renaming purposes. + * + * @return string + */ + protected static function get_unique_name() + { + $prefix = self::get_advanced_cache_clear_prefix(); + $new_name = uniqid( $prefix, true ); + + return $new_name; + } + + /** + * Get cache prefix name used in advanced cache clearing mode. + * + * @return string + */ + protected static function get_advanced_cache_clear_prefix() + { + $pathname = self::get_pathname_base(); + $basename = basename( $pathname ); + $prefix = $basename . '-artifact-'; + + return $prefix; + } + + /** + * Returns an array of file and directory names found within + * the given $pathname without '.' and '..' elements. + * + * @param string $pathname Pathname. + * + * @return array + */ + protected static function get_dir_contents( $pathname ) + { + return array_slice( scandir( $pathname ), 2 ); + } + + /** + * Wipes directories which were created as part of the fast cache clearing + * routine (which renames the current cache directory into a new one with + * a custom-prefixed unique name). + * + * @return bool + */ + public static function delete_advanced_cache_clear_artifacts() + { + // Don't go through these motions (called from the cachechecker) if advanced cache clear isn't even active. + if ( ! self::advanced_cache_clear_enabled() ) { + return false; + } + + $dir = self::get_pathname_base(); + $prefix = self::get_advanced_cache_clear_prefix(); + $parent = dirname( $dir ); + $ok = false; + + // Returns the list of files without '.' and '..' elements. + $files = self::get_dir_contents( $parent ); + if ( is_array( $files ) && ! empty( $files ) ) { + foreach ( $files as $file ) { + $path = $parent . '/' . $file; + $prefixed = ( false !== strpos( $path, $prefix ) ); + // Removing only our own (prefixed) directories... + if ( is_dir( $path ) && $prefixed ) { + $ok = self::rmdir( $path ); + } + } + } + + return $ok; + } + + /** + * Returns the cache directory pathname used. + * Done as a function so we canSlightly different + * if multisite is used and `autoptimize_separate_blog_caches` filter + * is used. + * + * @return string + */ + public static function get_pathname() + { + $pathname = self::get_pathname_base(); + + if ( is_multisite() && apply_filters( 'autoptimize_separate_blog_caches', true ) ) { + $blog_id = get_current_blog_id(); + $pathname .= $blog_id . '/'; + } + + return $pathname; + } + + /** + * Returns the base path of our cache directory. + * + * @return string + */ + protected static function get_pathname_base() + { + $pathname = WP_CONTENT_DIR . AUTOPTIMIZE_CACHE_CHILD_DIR; + + return $pathname; + } + + /** + * Deletes everything from the cache directories. + * + * @param bool $propagate Whether to trigger additional actions when cache is purged. + * + * @return bool + */ + public static function clearall( $propagate = true ) + { + if ( defined( 'ET_CORE_VERSION' ) && 'Divi' === get_template() ) { + // see https://blog.futtta.be/2018/11/17/warning-divi-purging-autoptimizes-cache/ . + $dbt = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS, 2 ); + $caller = isset( $dbt[1]['function'] ) ? $dbt[1]['function'] : null; + if ( 'et_core_clear_wp_cache' === $caller ) { + if ( apply_filters( 'autoptimize_filter_cache_divi_wrong_complain', true ) ) { + _doing_it_wrong( 'autoptimizeCache::clearall', 'Divi devs: please don\'t clear Autoptimize\'s cache, it is unneeded and can break sites. You can contact me at futtta@gmail.com to discuss.', 'Autoptimize 2.9.6' ); + } + return false; + } + } + + if ( ! self::cacheavail() || true === apply_filters( 'autoptimize_filter_cache_clearall_disabled', false ) ) { + return false; + } + + // TODO/FIXME: If cache is big, switch to advanced/new cache clearing automatically? + if ( self::advanced_cache_clear_enabled() ) { + self::clear_cache_via_rename(); + } else { + self::clear_cache_classic(); + } + + // Remove 404 handler if required. + if ( self::do_fallback() ) { + $_fallback_php = trailingslashit( WP_CONTENT_DIR ) . 'autoptimize_404_handler.php'; + @unlink( $_fallback_php ); // @codingStandardsIgnoreLine + } + + // Remove the transient so it gets regenerated... + delete_transient( 'autoptimize_stats' ); + + // Cache was just purged, clear page cache and allow others to hook into our purging... + if ( true === $propagate ) { + if ( ! function_exists( 'autoptimize_do_cachepurged_action' ) ) { + function autoptimize_do_cachepurged_action() { + do_action( 'autoptimize_action_cachepurged' ); + } + } + add_action( 'shutdown', 'autoptimize_do_cachepurged_action', 11 ); + add_action( 'autoptimize_action_cachepurged', array( 'autoptimizeCache', 'flushPageCache' ), 10, 0 ); + } + + // Warm cache (part of speedupper)! + if ( apply_filters( 'autoptimize_filter_speedupper', true ) && false == get_transient( 'autoptimize_cache_warmer_protector' ) ) { + set_transient( 'autoptimize_cache_warmer_protector', 'I shall not warm cache for another 10 minutes.', 60 * 10 ); + $url = site_url() . '/?ao_speedup_cachebuster=' . rand( 1, 100000 ); + $url = apply_filters( 'autoptimize_filter_cache_warmer_url', $url ); + $cache = @wp_remote_get( $url ); // @codingStandardsIgnoreLine + unset( $cache ); + } + + return true; + } + + /** + * Wrapper for clearall but with false param + * to ensure the event is not propagated to others + * through our own hooks (to avoid infinite loops). + * + * @return bool + */ + public static function clearall_actionless() + { + return self::clearall( false ); + } + + /** + * Returns the contents of our cache dirs. + * + * @return array + */ + protected static function get_cache_contents() + { + $contents = array(); + + foreach ( array( '', 'js', 'css' ) as $dir ) { + $contents[ $dir ] = scandir( AUTOPTIMIZE_CACHE_DIR . $dir ); + } + + return $contents; + } + + /** + * Returns stats about cached contents. + * + * @return array + */ + public static function stats() + { + $stats = get_transient( 'autoptimize_stats' ); + + // If no transient, do the actual scan! + if ( ! is_array( $stats ) ) { + if ( ! self::cacheavail() ) { + return 0; + } + $stats = self::stats_scan(); + $count = $stats[0]; + if ( $count > 100 ) { + // Store results in transient. + set_transient( + 'autoptimize_stats', + $stats, + apply_filters( 'autoptimize_filter_cache_statsexpiry', HOUR_IN_SECONDS ) + ); + } + } + + return $stats; + } + + /** + * Performs a scan of cache directory contents and returns an array + * with 3 values: count, size, timestamp. + * count = total number of found files + * size = total filesize (in bytes) of found files + * timestamp = unix timestamp when the scan was last performed/finished. + * + * @return array + */ + protected static function stats_scan() + { + $count = 0; + $size = 0; + + // Scan everything in our cache directories. + foreach ( self::get_cache_contents() as $name => $files ) { + $dir = rtrim( AUTOPTIMIZE_CACHE_DIR . $name, '/' ) . '/'; + foreach ( $files as $file ) { + if ( self::is_valid_cache_file( $dir, $file ) ) { + if ( AUTOPTIMIZE_CACHE_NOGZIP && + ( + false !== strpos( $file, '.js' ) || + false !== strpos( $file, '.css' ) || + false !== strpos( $file, '.img' ) || + false !== strpos( $file, '.txt' ) + ) + ) { + // Web server is gzipping, we count .js|.css|.img|.txt files. + $count++; + } elseif ( ! AUTOPTIMIZE_CACHE_NOGZIP && false !== strpos( $file, '.none' ) ) { + // We are gzipping ourselves via php, counting only .none files. + $count++; + } + $size += filesize( $dir . $file ); + } + } + } + + $stats = array( $count, $size, time() ); + + return $stats; + } + + /** + * Ensures the cache directory exists, is writeable and contains the + * required .htaccess files. + * Returns false in case it fails to ensure any of those things. + * + * @return bool + */ + public static function cacheavail() + { + // readonly FS explicitly OK'ed by dev, let's assume the cache dirs are there! + if ( defined( 'AUTOPTIMIZE_CACHE_READONLY' ) ) { + return true; + } + + if ( false === autoptimizeCache::check_and_create_dirs() ) { + return false; + } + + // Using .htaccess inside our cache folder to overrule wp-super-cache. + $htaccess = AUTOPTIMIZE_CACHE_DIR . '/.htaccess'; + if ( ! is_file( $htaccess ) ) { + /** + * Create `wp-content/AO_htaccess_tmpl` file with + * whatever htaccess rules you might need + * if you want to override default AO htaccess + */ + $htaccess_tmpl = WP_CONTENT_DIR . '/AO_htaccess_tmpl'; + if ( is_file( $htaccess_tmpl ) ) { + $content = file_get_contents( $htaccess_tmpl ); + } elseif ( is_multisite() || ! AUTOPTIMIZE_CACHE_NOGZIP ) { + $content = ' + ExpiresActive On + ExpiresByType text/css A30672000 + ExpiresByType text/javascript A30672000 + ExpiresByType application/javascript A30672000 + + + Header append Cache-Control "public, immutable" + + + + SetOutputFilter DEFLATE + + + + + Require all granted + + + + + Order allow,deny + Allow from all + +'; + } else { + $content = ' + ExpiresActive On + ExpiresByType text/css A30672000 + ExpiresByType text/javascript A30672000 + ExpiresByType application/javascript A30672000 + + + Header append Cache-Control "public, immutable" + + + + SetOutputFilter DEFLATE + + + + + Require all denied + + + + + Order deny,allow + Deny from all + +'; + } + + if ( self::do_fallback() === true ) { + $content .= "\nErrorDocument 404 " . trailingslashit( parse_url( content_url(), PHP_URL_PATH ) ) . 'autoptimize_404_handler.php'; + } + @file_put_contents( $htaccess, $content ); // @codingStandardsIgnoreLine + } + + if ( self::do_fallback() ) { + self::check_fallback_php(); + } + + // All OK! + return true; + } + + /** + * Checks if fallback-php file exists and create it if not. + * + * Return bool + */ + public static function check_fallback_php() { + $_fallback_filename = 'autoptimize_404_handler.php'; + $_fallback_php = trailingslashit( WP_CONTENT_DIR ) . $_fallback_filename; + $_fallback_status = true; + + if ( ! file_exists( $_fallback_php ) && is_writable( WP_CONTENT_DIR ) ) { + $_fallback_php_contents = file_get_contents( AUTOPTIMIZE_PLUGIN_DIR . 'config/' . $_fallback_filename ); + $_fallback_php_contents = str_replace( '', AUTOPTIMIZE_CACHE_DIR, $_fallback_php_contents ); + $_fallback_php_contents = str_replace( '', AUTOPTIMIZE_CACHEFILE_PREFIX, $_fallback_php_contents ); + if ( is_multisite() ) { + $_fallback_php_contents = str_replace( '$multisite = false;', '$multisite = true;', $_fallback_php_contents ); + } + if ( apply_filters( 'autoptimize_filter_cache_fallback_log_errors', false ) ) { + $_fallback_php_contents = str_replace( '// error_log', 'error_log', $_fallback_php_contents ); + } + $_fallback_status = file_put_contents( $_fallback_php, $_fallback_php_contents ); + } + + return $_fallback_status; + } + + /** + * Tells if AO should try to avoid 404's by creating fallback filesize + * and create a php 404 handler and tell .htaccess to redirect to said handler + * and hook into WordPress to redirect 404 to said handler as well. NGINX users + * are smart enough to get this working, no? ;-) + * + * Return bool + */ + public static function do_fallback() { + static $_do_fallback = null; + + if ( null === $_do_fallback ) { + $_do_fallback = (bool) apply_filters( 'autoptimize_filter_cache_do_fallback', autoptimizeOptionWrapper::get_option( 'autoptimize_cache_fallback', '1' ) ); + } + + return $_do_fallback; + } + + /** + * Hooks into template_redirect, will act on 404-ing requests for + * Autoptimized files and redirects to the fallback CSS/ JS if available + * and 410'ing ("Gone") if fallback not available. + */ + public static function wordpress_notfound_fallback() { + $original_request = strtok( $_SERVER['REQUEST_URI'], '?' ); + if ( strpos( $original_request, wp_basename( WP_CONTENT_DIR ) . AUTOPTIMIZE_CACHE_CHILD_DIR ) !== false && is_404() ) { + // make sure this is not considered a 404. + global $wp_query; + $wp_query->is_404 = false; + + // set fallback path. + $js_or_css = pathinfo( $original_request, PATHINFO_EXTENSION ); + $fallback_path = AUTOPTIMIZE_CACHE_DIR . $js_or_css . '/autoptimize_fallback.' . $js_or_css; + + // prepare for Shakeeb's Unused CSS files to be 404-handled as well. + if ( strpos( $original_request, 'uucss/uucss-' ) !== false ) { + $original_request = preg_replace( '/uucss\/uucss-[a-z0-9]{32}-/', 'css/', $original_request ); + } + + // set fallback URL. + $fallback_target = preg_replace( '/(.*)_(?:[a-z0-9]{32})\.(js|css)$/', '${1}_fallback.${2}', $original_request ); + + // redirect to fallback if possible. + if ( $original_request !== $fallback_target && file_exists( $fallback_path ) ) { + // redirect to fallback. + wp_redirect( $fallback_target, 302 ); + } else { + // return HTTP 410 (gone) reponse. + status_header( 410 ); + } + } + } + + /** + * Checks if cache dirs exist and create if not. + * Returns false if not succesful. + * + * @return bool + */ + public static function check_and_create_dirs() { + if ( ! defined( 'AUTOPTIMIZE_CACHE_DIR' ) ) { + // We didn't set a cache. + return false; + } + + foreach ( array( '', 'js', 'css' ) as $dir ) { + if ( ! self::check_cache_dir( AUTOPTIMIZE_CACHE_DIR . $dir ) ) { + return false; + } + } + return true; + } + + /** + * Ensures the specified `$dir` exists and is writeable. + * Returns false if that's not the case. + * + * @param string $dir Directory to check/create. + * + * @return bool + */ + protected static function check_cache_dir( $dir ) + { + // Try creating the dir if it doesn't exist. + if ( ! file_exists( $dir ) ) { + @mkdir( $dir, 0775, true ); // @codingStandardsIgnoreLine + if ( ! file_exists( $dir ) ) { + return false; + } + } + + // If we still cannot write, bail. + if ( ! is_writable( $dir ) ) { + return false; + } + + // Create an index.html in there to avoid prying eyes! + $idx_file = rtrim( $dir, '/\\' ) . '/index.html'; + if ( ! is_file( $idx_file ) ) { + @file_put_contents( $idx_file, 'Generated by Autoptimize' ); // @codingStandardsIgnoreLine + } + + return true; + } + + /** + * Flushes as many page cache plugin's caches as possible. + * + * @return void + */ + // @codingStandardsIgnoreStart + public static function flushPageCache() + { + if ( function_exists( 'wp_cache_clear_cache' ) ) { + if ( is_multisite() ) { + $blog_id = get_current_blog_id(); + wp_cache_clear_cache( $blog_id ); + } else { + wp_cache_clear_cache(); + } + } elseif ( has_action( 'cachify_flush_cache' ) ) { + do_action( 'cachify_flush_cache' ); + } elseif ( function_exists( 'w3tc_pgcache_flush' ) ) { + w3tc_pgcache_flush(); + } elseif ( function_exists( 'wp_fast_cache_bulk_delete_all' ) ) { + wp_fast_cache_bulk_delete_all(); + } elseif ( function_exists( 'rapidcache_clear_cache' ) ) { + rapidcache_clear_cache(); + } elseif ( class_exists( 'Swift_Performance_Cache' ) ) { + Swift_Performance_Cache::clear_all_cache(); + } elseif ( class_exists( 'WpFastestCache' ) ) { + $wpfc = new WpFastestCache(); + $wpfc->deleteCache(); + } elseif ( class_exists( 'c_ws_plugin__qcache_purging_routines' ) ) { + c_ws_plugin__qcache_purging_routines::purge_cache_dir(); // quick cache + } elseif ( class_exists( 'zencache' ) ) { + zencache::clear(); + } elseif ( class_exists( 'comet_cache' ) ) { + comet_cache::clear(); + } elseif ( class_exists( 'WpeCommon' ) ) { + // WPEngine cache purge/flush methods to call by default + $wpe_methods = array( + 'purge_varnish_cache', + ); + + // More agressive clear/flush/purge behind a filter + if ( apply_filters( 'autoptimize_flush_wpengine_aggressive', false ) ) { + $wpe_methods = array_merge( $wpe_methods, array( 'purge_memcached', 'clear_maxcdn_cache' ) ); + } + + // Filtering the entire list of WpeCommon methods to be called (for advanced usage + easier testing) + $wpe_methods = apply_filters( 'autoptimize_flush_wpengine_methods', $wpe_methods ); + + foreach ( $wpe_methods as $wpe_method ) { + if ( method_exists( 'WpeCommon', $wpe_method ) ) { + WpeCommon::$wpe_method(); + } + } + } elseif ( function_exists( 'sg_cachepress_purge_cache' ) ) { + sg_cachepress_purge_cache(); + } elseif ( array_key_exists( 'KINSTA_CACHE_ZONE', $_SERVER ) ) { + $_kinsta_clear_cache_url = 'https://localhost/kinsta-clear-cache-all'; + $_kinsta_response = wp_remote_get( + $_kinsta_clear_cache_url, + array( + 'sslverify' => false, + 'timeout' => 5, + ) + ); + } elseif ( class_exists( 'RaidboxesNginxCacheFunctions' ) ) { + $rb_cache_helper = new RaidboxesNginxCacheFunctions(); + $rb_cache_helper->purge_cache(); + } elseif ( defined('NGINX_HELPER_BASENAME') ) { + do_action( 'rt_nginx_helper_purge_all' ); + } elseif ( file_exists( WP_CONTENT_DIR . '/wp-cache-config.php' ) && function_exists( 'prune_super_cache' ) ) { + // fallback for WP-Super-Cache + global $cache_path; + if ( is_multisite() ) { + $blog_id = get_current_blog_id(); + prune_super_cache( get_supercache_dir( $blog_id ), true ); + prune_super_cache( $cache_path . 'blogs/', true ); + } else { + prune_super_cache( $cache_path . 'supercache/', true ); + prune_super_cache( $cache_path, true ); + } + } elseif ( class_exists( 'NginxCache' ) ) { + $nginx_cache = new NginxCache(); + $nginx_cache->purge_zone_once(); + } + } + // @codingStandardsIgnoreEnd +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeCacheChecker.php b/wp-content/plugins/autoptimize/classes/autoptimizeCacheChecker.php new file mode 100644 index 0000000..9d32c9a --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeCacheChecker.php @@ -0,0 +1,115 @@ + 0.5GB (size is filterable), if so, an option is set which controls showing an admin notice. + */ + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +class autoptimizeCacheChecker +{ + const SCHEDULE_HOOK = 'ao_cachechecker'; + + public function __construct() + { + } + + public function run() + { + $this->add_hooks(); + } + + public function add_hooks() + { + if ( is_admin() ) { + add_action( 'plugins_loaded', array( $this, 'setup' ) ); + } + add_action( self::SCHEDULE_HOOK, array( $this, 'cronjob' ) ); + add_action( 'admin_notices', array( $this, 'show_admin_notice' ) ); + } + + public function setup() + { + $do_cache_check = (bool) apply_filters( 'autoptimize_filter_cachecheck_do', true ); + $schedule = wp_get_schedule( self::SCHEDULE_HOOK ); + $frequency = apply_filters( 'autoptimize_filter_cachecheck_frequency', 'twicedaily' ); + if ( ! in_array( $frequency, array( 'hourly', 'twicedaily', 'daily', 'weekly', 'monthly' ) ) ) { + $frequency = 'twicedaily'; + } + if ( $do_cache_check && ( ! $schedule || $schedule !== $frequency ) ) { + if ( $schedule ) { + wp_clear_scheduled_hook( self::SCHEDULE_HOOK ); + } + wp_schedule_event( time(), $frequency, self::SCHEDULE_HOOK ); + } elseif ( $schedule && ! $do_cache_check ) { + wp_clear_scheduled_hook( self::SCHEDULE_HOOK ); + } + } + + public function cronjob() + { + // Check cachesize and act accordingly. + $max_size = (int) apply_filters( 'autoptimize_filter_cachecheck_maxsize', 536870912 ); + $do_cache_check = (bool) apply_filters( 'autoptimize_filter_cachecheck_do', true ); + $stat_array = autoptimizeCache::stats(); + $cache_size = round( $stat_array[1] ); + if ( ( $cache_size > $max_size ) && ( $do_cache_check ) ) { + autoptimizeOptionWrapper::update_option( 'autoptimize_cachesize_notice', true ); + if ( apply_filters( 'autoptimize_filter_cachecheck_sendmail', true ) ) { + $home_url = esc_url( home_url() ); + $ao_mailto = apply_filters( 'autoptimize_filter_cachecheck_mailto', autoptimizeOptionWrapper::get_option( 'admin_email', '' ) ); + + $ao_mailsubject = esc_html__( 'Autoptimize cache size warning', 'autoptimize' ) . ' (' . $home_url . ')'; + $ao_mailbody = esc_html__( 'Autoptimize\'s cache size is getting big, consider purging the cache. Have a look at https://wordpress.org/plugins/autoptimize/faq/ to see how you can keep the cache size under control.', 'autoptimize' ) . ' (site: ' . $home_url . ')'; + + if ( ! empty( $ao_mailto ) ) { + $ao_mailresult = wp_mail( $ao_mailto, $ao_mailsubject, $ao_mailbody ); + if ( ! $ao_mailresult ) { + error_log( 'Autoptimize could not send cache size warning mail.' ); + } + } + } + } + + // Check if 3rd party services (e.g. image proxy) are up. + autoptimizeUtils::check_service_availability(); + + // Nukes advanced cache clearing artifacts if they exists... + autoptimizeCache::delete_advanced_cache_clear_artifacts(); + + // Check image optimization stats. + autoptimizeImages::instance()->query_img_provider_stats(); + } + + public function show_admin_notice() + { + if ( (bool) autoptimizeOptionWrapper::get_option( 'autoptimize_cachesize_notice', false ) && current_user_can( 'manage_options' ) ) { + echo '

'; + // Translators: first two variables are strong tags, 3rd is link to the AO FAQ and the 4th closes that tag. + printf( esc_html__( '%1$sAutoptimize\'s cache size is getting big%2$s, consider purging the cache. Have a look at %3$sthe Autoptimize FAQ%4$s to see how you can keep the cache size under control.', 'autoptimize' ), '', '', '', '' ); + echo '

'; + autoptimizeOptionWrapper::update_option( 'autoptimize_cachesize_notice', false ); + } + + // Notice for image proxy usage. + $_imgopt_notice = autoptimizeImages::instance()->get_imgopt_status_notice_wrapper(); + if ( current_user_can( 'manage_options' ) && is_array( $_imgopt_notice ) && array_key_exists( 'status', $_imgopt_notice ) && in_array( $_imgopt_notice['status'], array( 1, -1, -2, -3 ) ) ) { + $_dismissible = 'ao-img-opt-notice-'; + $_hide_notice = '7'; + + if ( -1 == $_imgopt_notice['status'] || -2 == $_imgopt_notice['status'] || -3 == $_imgopt_notice['status'] ) { + $_hide_notice = '1'; + } + + $_imgopt_notice_dismissible = apply_filters( 'autoptimize_filter_imgopt_notice_dismissable', $_dismissible . $_hide_notice ); + + if ( $_imgopt_notice && PAnD::is_admin_notice_active( $_imgopt_notice_dismissible ) ) { + echo '

' . esc_html__( 'Autoptimize', 'autoptimize' ) . ': ' . $_imgopt_notice['notice'] . '

'; + } + } + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeCompatibility.php b/wp-content/plugins/autoptimize/classes/autoptimizeCompatibility.php new file mode 100644 index 0000000..30aa723 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeCompatibility.php @@ -0,0 +1,146 @@ +conf = autoptimizeConfig::instance(); + $this->run(); + } + } + + /** + * Runs multiple compatibility snippets to ensure important plugins work out of the box. + */ + public function run() + { + // Edit with Elementor in frontend admin menu (so for editors/ administrators) needs JS opt. disabled to appear & function. + if ( defined( 'ELEMENTOR_VERSION' ) && is_user_logged_in() && current_user_can( 'edit_posts' ) && apply_filters( 'autoptimize_filter_compatibility_editelementor_active', true ) ) { + add_filter( 'autoptimize_filter_js_noptimize', '__return_true' ); + } + + // Revslider; jQuery should not be deferred + exclude all revslider JS. + if ( defined( 'RS_REVISION' ) && $this->conf->get( 'autoptimize_js' ) && true == $this->inline_js_config_checker() && apply_filters( 'autoptimize_filter_compatibility_revslider_active', true ) ) { + add_filter( + 'autoptimize_filter_js_exclude', + function( $js_excl = '', $html = '' ) { + $revslider_excl = 'revslider, setREVStartSize, window.RSIW, window.RS_MODULES, jquery.min.js'; + if ( ! empty( $html ) && false !== strpos( $html, 'conf->get( 'autoptimize_js' ) && false === is_user_logged_in() && apply_filters( 'autoptimize_filter_compatibility_revslider_remover_active', true ) ) { + add_filter( + 'autoptimize_filter_js_removables', + function( $to_remove = '', $html = '' ) { + if ( ! empty( $html ) && false === strpos( $html, 'inline_js_config_checker() && false === strpos( $this->conf->get( 'autoptimize_js_exclude' ), 'jquery.min.js' ) && apply_filters( 'autoptimize_filter_compatibility_inline_jquery', true ) ) { + add_filter( + 'autoptimize_filter_js_exclude', + function( $js_excl = '', $html = '' ) { + if ( ! empty( $html ) && preg_match( '/]*>[^<]*(jQuery|\$)\([^<]*<\/script>/Usm', $html ) ) { + if ( is_array( $js_excl ) ) { + $js_excl = implode( ',', $js_excl ); + } + + if ( false === strpos( $js_excl, 'jquery.min.js' ) ) { + $js_excl .= ', jquery.min.js'; + } + + // also exclude jquery.js if for whatever reason that is still used. + if ( false === strpos( $js_excl, 'jquery.js' ) ) { + $js_excl .= ', jquery.js'; + } + } + return $js_excl; + }, + 12, + 2 + ); + } + + // Make JS-based Gutenberg blocks work OOTB. + if ( $this->inline_js_config_checker() && apply_filters( 'autoptimize_filter_compatibility_gutenberg_js', true ) ) { + add_filter( + 'autoptimize_filter_js_exclude', + function( $js_excl = '', $html = '' ) { + if ( ! empty( $html ) && false !== strpos( $html, 'wp.i18n' ) || false !== strpos( $html, 'wp.apiFetch' ) || false !== strpos( $html, 'window.lodash' ) ) { + if ( is_array( $js_excl ) ) { + $js_excl = implode( ',', $js_excl ); + } + + if ( false === strpos( $js_excl, 'jquery.min.js' ) ) { + $js_excl .= ', jquery.min.js'; + } + + if ( false === strpos( $js_excl, 'wp-includes/js/dist' ) ) { + $js_excl .= ', wp-includes/js/dist'; + } + } + return $js_excl; + }, + 13, + 2 + ); + } + } + + public function inline_js_config_checker() { + static $inline_js_flagged = null; + + if ( null === $inline_js_flagged ) { + if ( ( $this->conf->get( 'autoptimize_js_aggregate' ) || apply_filters( 'autoptimize_filter_js_dontaggregate', false ) ) && apply_filters( 'autoptimize_js_include_inline', $this->conf->get( 'autoptimize_js_include_inline' ) ) ) { + // if all files and also inline JS are aggregated we don't have to worry about inline JS. + $inline_js_flagged = false; + } else if ( apply_filters( 'autoptimize_filter_js_defer_not_aggregate', $this->conf->get( 'autoptimize_js_defer_not_aggregate' ) ) && apply_filters( 'autoptimize_js_filter_defer_inline', $this->conf->get( 'autoptimize_js_defer_inline' ) ) ) { + // and when not aggregating but deferring all including inline JS, then all is OK too. + $inline_js_flagged = false; + } + + // in all other cases we need to pay attention to inline JS requiring src'ed JS to be available. + $inline_js_flagged = true; + } + + return $inline_js_flagged; + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeConfig.php b/wp-content/plugins/autoptimize/classes/autoptimizeConfig.php new file mode 100644 index 0000000..9c0ad04 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeConfig.php @@ -0,0 +1,1116 @@ +settings_screen_do_remote_http = apply_filters( 'autoptimize_settingsscreen_remotehttp', $this->settings_screen_do_remote_http ); + + if ( $this->is_ao_meta_settings_active() ) { + $meta_box = new autoptimizeMetabox(); + } + } + + // Adds the Autoptimize Toolbar to the Admin bar. + // (we load outside the is_admin check so it's also displayed on the frontend toolbar). + $toolbar = new autoptimizeToolbar(); + } + + /** + * Instantiates aoconfig. + * + * @return autoptimizeConfig + */ + static public function instance() + { + // Only one instance. + if ( null === self::$instance ) { + self::$instance = new autoptimizeConfig(); + } + + return self::$instance; + } + + public function show_network_message() { + ?> +
+

+ ao_admin_tabs(); ?> +

+
+ + + +
+ +
+

+ ao_admin_tabs(); ?> + +
+ + +
    + + +
  • +

    + + + + + +
    +
  • + + + + +
  • +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    get( 'autoptimize_js' ) ? 'checked="checked" ' : ''; ?>/>
    +' . esc_html__( '(deprecated)', 'autoptimize' ) . ''; +?> +
    +
  • + +
  • +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    get( 'autoptimize_css' ) ? 'checked="checked" ' : ''; ?>/>
    +' . esc_html__( '(deprecated)', 'autoptimize' ) . ''; +?> +
    ', '', '', '' ); ?>
    +
  • + +
  • +

    + + + + + + + + + + + + + +
    get( 'autoptimize_html' ) ? 'checked="checked" ' : ''; ?>/>
    +
  • + +
  • +

    + + + + + + +
    +
  • + +
  • +

    + + + + + + + + + + + + + +
    + 0 ) { + $details = ', ~' . $ao_cache_size . ' total'; + } + // translators: Kilobytes + timestamp shown. + printf( esc_html__( '%1$s files, totaling %2$s (calculated at %3$s)', 'autoptimize' ), $ao_stat_arr[0], $ao_cache_size, wp_date( 'H:i', $ao_stat_arr[2] ) ); // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date + } + ?> +
    +
  • + +
  • +

    + + + + + + get( 'autoptimize_css_aggregate' ) && ! $conf->get( 'autoptimize_js_aggregate' ) ) { + $_min_excl_class = 'hidden'; + } + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
  • + +
+ +

+ + +

+ +
+
+
+ + + +
+

+ +

+
+
+ get_futtta_feeds( 'http://feeds.feedburner.com/futtta_autoptimize' ); ?> +
+
+
+ +
+ +
+ +
+ +%s', esc_html__( 'Settings' ) ); + array_unshift( $links, $settings_link ); + } else { + // 2.8 and higher. + // If it's us, add the link. + if ( $file === $plugin ) { + $newlink = array( sprintf( '%s', esc_html__( 'Settings' ) ) ); + $links = array_merge( $links, $newlink ); + } + } + + return $links; + } + + /** + * Provides the default options. + * + * @return array + */ + public static function get_defaults() + { + static $config = array( + 'autoptimize_html' => 1, + 'autoptimize_html_keepcomments' => 0, + 'autoptimize_html_minify_inline' => 0, + 'autoptimize_enable_site_config' => 1, + 'autoptimize_js' => 1, + 'autoptimize_js_aggregate' => 0, + 'autoptimize_js_defer_not_aggregate' => 1, + 'autoptimize_js_defer_inline' => 1, + 'autoptimize_js_exclude' => '', + 'autoptimize_js_trycatch' => 0, + 'autoptimize_js_justhead' => 0, + 'autoptimize_js_include_inline' => 0, + 'autoptimize_js_forcehead' => 0, + 'autoptimize_css' => 1, + 'autoptimize_css_aggregate' => 0, + 'autoptimize_css_exclude' => '', + 'autoptimize_css_justhead' => 0, + 'autoptimize_css_include_inline' => 0, + 'autoptimize_css_defer' => 0, + 'autoptimize_css_defer_inline' => '', + 'autoptimize_css_inline' => 0, + 'autoptimize_css_datauris' => 0, + 'autoptimize_cdn_url' => '', + 'autoptimize_cache_nogzip' => 1, + 'autoptimize_optimize_logged' => 1, + 'autoptimize_optimize_checkout' => 0, + 'autoptimize_minify_excluded' => 1, + 'autoptimize_cache_fallback' => 1, + 'autoptimize_enable_meta_ao_settings' => 1, + 'autoptimize_installed_before_compatibility' => 0, + ); + + return $config; + } + + /** + * Returns default option values for autoptimizeExtra. + * + * @return array + */ + public static function get_ao_extra_default_options() + { + $defaults = array( + 'autoptimize_extra_checkbox_field_1' => '0', + 'autoptimize_extra_checkbox_field_0' => '0', + 'autoptimize_extra_radio_field_4' => '1', + 'autoptimize_extra_text_field_2' => '', + 'autoptimize_extra_text_field_3' => '', + 'autoptimize_extra_text_field_7' => '', + 'autoptimize_extra_checkbox_field_8' => '0', + ); + + return $defaults; + } + + /** + * Returns default option values for autoptimizeExtra. + * + * @return array + */ + public static function get_ao_imgopt_default_options() + { + $defaults = array( + 'autoptimize_imgopt_checkbox_field_1' => '0', // imgopt off. + 'autoptimize_imgopt_select_field_2' => '2', // quality glossy. + 'autoptimize_imgopt_checkbox_field_3' => '0', // lazy load off. + 'autoptimize_imgopt_checkbox_field_4' => '0', // avif off (might be removed). + 'autoptimize_imgopt_text_field_5' => '', // lazy load exclusions empty. + 'autoptimize_imgopt_text_field_6' => '', // optimization exclusions empty. + 'autoptimize_imgopt_number_field_7' => '2', // lazy load from nth image (0 = lazyload all). + ); + return $defaults; + } + + /** + * Returns preload JS onload handler. + * + * @param string $media media attribute value the JS to use. + * + * @return string + */ + public static function get_ao_css_preload_onload( $media = 'all' ) + { + $preload_onload = apply_filters( 'autoptimize_filter_css_preload_onload', "this.onload=null;this.media='" . $media . "';" ); + return $preload_onload; + } + + public function get( $key ) + { + if ( ! is_array( $this->config ) ) { + // Default config. + $config = self::get_defaults(); + + // Override with user settings. + foreach ( array_keys( $config ) as $name ) { + $conf = autoptimizeOptionWrapper::get_option( $name ); + if ( false !== $conf ) { + // It was set before! + $config[ $name ] = $conf; + } + } + + // Save for next call. + $this->config = apply_filters( 'autoptimize_filter_get_config', $config ); + } + + if ( isset( $this->config[ $key ] ) ) { + return $this->config[ $key ]; + } + + return false; + } + + private function get_futtta_feeds( $url ) { + if ( $this->settings_screen_do_remote_http ) { + $rss = fetch_feed( $url ); + $maxitems = 0; + + if ( ! is_wp_error( $rss ) ) { + $maxitems = $rss->get_item_quantity( 7 ); + $rss_items = $rss->get_items( 0, $maxitems ); + } + ?> + + esc_html__( 'JS, CSS & HTML', 'autoptimize' ) ) ); + $tab_content = ''; + $tabs_count = count( $tabs ); + if ( $tabs_count > 1 ) { + if ( isset( $_GET['page'] ) ) { + $current_id = $_GET['page']; + } else { + $current_id = 'autoptimize'; + } + $tab_content .= ''; + } else { + $tab_content = '
'; + } + + return $tab_content; + } + + /** + * Returns true if in admin (and not in admin-ajax.php!) + * + * @return bool + */ + public static function is_admin_and_not_ajax() + { + return ( is_admin() && ! self::doing_ajax() ); + } + + /** + * Returns true if doing ajax. + * + * @return bool + */ + protected static function doing_ajax() + { + if ( function_exists( 'wp_doing_ajax' ) ) { + return wp_doing_ajax(); + } + return ( defined( 'DOING_AJAX' ) && DOING_AJAX ); + } + + /** + * Returns true menu or tab is to be shown. + * + * @return bool + */ + public static function should_show_menu_tabs() { + if ( ! is_multisite() || is_network_admin() || 'on' === autoptimizeOptionWrapper::get_option( 'autoptimize_enable_site_config' ) || false === autoptimizeOptionWrapper::is_ao_active_for_network() ) { + return true; + } else { + return false; + } + } + + /** + * Returns the post meta AO settings for reuse in different optimizers. + * + * @param string $optim What optimization we need meta setting for. + * + * @return bool + */ + public static function get_post_meta_ao_settings( $optim ) { + if ( ! autoptimizeConfig::is_ao_meta_settings_active() ) { + // Per page/post settings not active, so always return true (as in; can be optimized). + if ( in_array( $optim, apply_filters( 'autoptimize_filter_meta_inactive_return_false_for', array( 'ao_post_preload' ) ) ) ) { + // but make sure to return false for text input. + return false; + } + return true; + } + + static $_meta_value = null; + if ( null === $_meta_value ) { + global $wp_query; + if ( isset( $wp_query ) ) { + $_meta_value = get_post_meta( get_the_ID(), 'ao_post_optimize', true ); + } else { + $_meta_value = false; + } + } + + // If autoptimize_post_optimize !== 'on' (except for ao_post_preload, which can have other values) then always return false as all is off. + // fixme: need unit tests to ensure below logic is sane! + if ( empty( $_meta_value ) || ! is_array( $_meta_value ) ) { + // no metabox values so all optimizations are a go. + if ( in_array( $optim, apply_filters( 'autoptimize_filter_meta_optim_nonbool', array( 'ao_post_preload' ) ) ) ) { + // but make sure to return false for text input. + return false; + } + return true; + } else if ( array_key_exists( 'ao_post_optimize', $_meta_value ) && 'on' !== $_meta_value['ao_post_optimize'] ) { + // ao entirely off for this page. + return false; + } else if ( in_array( $optim, apply_filters( 'autoptimize_filter_meta_optim_with_filters', array() ) ) ) { + // if an $optim is registered as having a filter, apply filter and return that (default false). + return apply_filters( 'autoptimize_filter_meta_filtered_optim', false, $optim, $_meta_value ); + } else if ( array_key_exists( $optim, $_meta_value ) && empty( $_meta_value[ $optim ] ) ) { + // sub-optimization off for this page. + return false; + } else if ( array_key_exists( $optim, $_meta_value ) && 'on' === $_meta_value[ $optim ] ) { + // sub-optimization is explictly on. + return true; + } else if ( array_key_exists( $optim, $_meta_value ) && in_array( $optim, array( 'ao_post_preload' ) ) && ! empty( $_meta_value[ $optim ] ) ) { + // a non-bool metabox optimization (currently only preload field), return value instead of bool. + return $_meta_value[ $optim ]; + } else if ( in_array( $optim, array( 'ao_post_preload' ) ) && ( ! array_key_exists( $optim, $_meta_value ) || empty( $_meta_value[ $optim ] ) ) ) { + // a non-bool metabox optimization not found or empty, so returning false. + return false; + } else { + // when in doubt "go" for optimization, but this should never happen? + if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { + error_log( 'AO meta box logic fallback; well, how did I get here? Maybe this helps: looking for ' . $optim . ' in ' . json_encode( $_meta_value ) ); + } + return true; + } + } + + /** + * Are the post meta AO settings active (default: no)? + * + * @return bool + */ + public static function is_ao_meta_settings_active() { + static $_meta_settings_active = null; + + if ( null === $_meta_settings_active ) { + $_meta_settings_active = apply_filters( 'autoptimize_filter_enable_meta_ao_settings', autoptimizeOptionWrapper::get_option( 'autoptimize_enable_meta_ao_settings', '1' ) ); + } + + return $_meta_settings_active; + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSBase.php b/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSBase.php new file mode 100644 index 0000000..33e7f1f --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSBase.php @@ -0,0 +1,433 @@ +filepath = __FILE__; + + // Add keychecker action for scheduled use. + add_action( 'ao_ccss_keychecker', array( $this, 'ao_ccss_check_key' ) ); + } + + public function setup() { + // check if we need to upgrade. + $this->check_upgrade(); + + // add/ remove scheduled jobs. + if ( $this->is_api_active() ) { + // make sure the 10 minutes cron schedule is added. + add_filter( 'cron_schedules', array( $this, 'ao_ccss_interval' ) ); + + if ( ! wp_next_scheduled( 'ao_ccss_queue' ) ) { + // make sure ao_ccss_queue is scheduled OK if an API key is active. + wp_schedule_event( time(), apply_filters( 'ao_ccss_queue_schedule', 'ao_ccss' ), 'ao_ccss_queue' ); + } + + if ( ! wp_next_scheduled( 'ao_ccss_maintenance' ) ) { + // and schedule maintenance job. + wp_schedule_event( time(), 'twicedaily', 'ao_ccss_maintenance' ); + } + + if ( wp_next_scheduled( 'ao_ccss_keychecker' ) ) { + // api is active now, no need to check key as it is checked by using the API. + wp_clear_scheduled_hook( 'ao_ccss_keychecker' ); + } + } else { + if ( wp_next_scheduled( 'ao_ccss_queue' ) ) { + wp_clear_scheduled_hook( 'ao_ccss_queue' ); + } + + if ( wp_next_scheduled( 'ao_ccss_maintenance' ) ) { + wp_clear_scheduled_hook( 'ao_ccss_maintenance' ); + } + + // add keychecker logic if api is not active but we have a key so maybe this is a temporary issue, check if key is OK daily. + $ao_ccss_key = $this->get_option( 'key' ); + if ( ! empty( $ao_ccss_key ) && ! wp_next_scheduled( 'ao_ccss_keychecker' ) ) { + wp_schedule_event( time(), 'twicedaily', 'ao_ccss_keychecker' ); + } else if ( empty( $ao_ccss_key ) && wp_next_scheduled( 'ao_ccss_keychecker' ) ) { + // edge case: we had a inactive key that was checked daily, but it is now removed, so remove keychecker from schedule. + wp_clear_scheduled_hook( 'ao_ccss_keychecker' ); + } + } + + // check/ create AO_CCSS_DIR. + if ( ! file_exists( AO_CCSS_DIR ) ) { + $this->create_ao_ccss_dir(); + } + } + + public function load_requires() { + // Required libs, core is always needed. + $this->_core = new autoptimizeCriticalCSSCore(); + + if ( ( defined( 'WP_CLI' ) || defined( 'DOING_CRON' ) || is_admin() ) && $this->is_api_active() ) { + // cron only initiated when doing cron (or wp_cli or is_amdin) and when we have an active API key. + $this->_cron = new autoptimizeCriticalCSSCron(); + } + + if ( is_admin() ) { + $this->_settings = new autoptimizeCriticalCSSSettings(); + } else if ( $this->is_api_active() ) { + // enqueuing only done when not wp-admin and when API is active. + $this->_enqueue = new autoptimizeCriticalCSSEnqueue(); + } + } + + /** + * Log a message via CCSS Core object + * + * @param string $msg Message to log. + * @param int $lvl Loglevel. + * + * @return empty + */ + public function log( $msg, $lvl ) { + return $this->_core->ao_ccss_log( $msg, $lvl ); + } + + /** + * Get viewport from CCSS Core object + * + * @return array + */ + public function viewport() { + return $this->_core->ao_ccss_viewport(); + } + + /** + * Check CCSS contents from Core object + * + * @param string $ccss Critical CSS to be checked. + * + * @return bool + */ + public function check_contents( $ccss ) { + return $this->_core->ao_ccss_check_contents( $ccss ); + } + + /** + * Get key status from Core object + * + * @param bool $render Indicates if key status is to be rendered. + * + * @return array + */ + public function key_status( $render ) { + return $this->_core->ao_ccss_key_status( $render ); + } + + /** + * Return valid types from core object + * + * @return array + */ + public function get_types() { + return $this->_core->get_types(); + } + + /** + * Run enqueue in CCSS Enqueue object + * + * @param string $hash Hash (default empty). + * @param string $path Path (default empty). + * @param string $type (default is_page). + */ + public function enqueue( $hash = '', $path = '', $type = 'is_page' ) { + // Enqueue is sometimes required on wp-admin requests, load it just-in-time. + if ( is_null( $this->_enqueue ) && $this->is_api_active() ) { + $this->_enqueue = new autoptimizeCriticalCSSEnqueue(); + } + + return $this->_enqueue->ao_ccss_enqueue( $hash, $path, $type ); + } + + /** + * Check auto-rules in CCSS Settings object + */ + public function has_autorules() { + return $this->_settings->ao_ccss_has_autorules(); + } + + /** + * Get a Critical CSS option + * + * @param string $name The option name. + * + * @return mixed + */ + public function get_option( $name ) { + if ( is_null( $this->_options ) ) { + $this->fetch_options(); + } + + if ( isset( $this->_options[ $name ] ) ) { + return $this->_options[ $name ]; + } + + return null; + } + + public function flush_options() { + $this->_options = null; + } + + protected function fetch_options() { + if ( ! is_null( $this->_options ) ) { + return $this->_options; + } + + $this->_options = array( + 'css_defer' => autoptimizeOptionWrapper::get_option( 'autoptimize_css_defer' ), + 'css_defer_inline' => autoptimizeOptionWrapper::get_option( 'autoptimize_css_defer_inline' ), + 'rules_raw' => get_option( 'autoptimize_ccss_rules', false ), + 'additional' => get_option( 'autoptimize_ccss_additional' ), + 'queue_raw' => get_option( 'autoptimize_ccss_queue', false ), + 'viewport' => get_option( 'autoptimize_ccss_viewport', false ), + 'finclude' => get_option( 'autoptimize_ccss_finclude', false ), + 'rtimelimit' => get_option( 'autoptimize_ccss_rtimelimit', '30' ), + 'noptimize' => get_option( 'autoptimize_ccss_noptimize', false ), + 'debug' => get_option( 'autoptimize_ccss_debug', false ), + 'key' => apply_filters( 'autoptimize_filter_ccss_key', get_option( 'autoptimize_ccss_key' ) ), + 'keyst' => get_option( 'autoptimize_ccss_keyst' ), + 'loggedin' => get_option( 'autoptimize_ccss_loggedin', '1' ), + 'forcepath' => get_option( 'autoptimize_ccss_forcepath', '1' ), + 'servicestatus' => get_option( 'autoptimize_service_availablity' ), + 'deferjquery' => get_option( 'autoptimize_ccss_deferjquery', false ), + 'domain' => get_option( 'autoptimize_ccss_domain' ), + 'unloadccss' => get_option( 'autoptimize_ccss_unloadccss', false ), + ); + + if ( ( strpos( $this->_options['domain'], 'http' ) === false && strpos( $this->_options['domain'], 'uggc' ) === 0 ) || 'abar' === $this->_options['domain'] ) { + $this->_options['domain'] = str_rot13( $this->_options['domain'] ); + } elseif ( strpos( $this->_options['domain'], 'http' ) !== false ) { + // not rot13'ed yet, do so now (goal; avoid migration plugins change the bound domain). + update_option( 'autoptimize_ccss_domain', str_rot13( $this->_options['domain'] ) ); + } + + // Setup the rules array. + if ( empty( $this->_options['rules_raw'] ) ) { + $this->_options['rules'] = array( + 'paths' => array(), + 'types' => array(), + ); + } else { + $this->_options['rules'] = json_decode( $this->_options['rules_raw'], true ); + } + + // Setup the queue array. + if ( empty( $this->_options['queue_raw'] ) ) { + $this->_options['queue'] = array(); + } else { + $this->_options['queue'] = json_decode( $this->_options['queue_raw'], true ); + } + + // Override API key if constant is defined. + if ( defined( 'AUTOPTIMIZE_CRITICALCSS_API_KEY' ) ) { + $this->_options['key'] = AUTOPTIMIZE_CRITICALCSS_API_KEY; + } + + return $this->_options; + } + + public function on_upgrade() { + $key = $this->get_option( 'key' ); + + // Create the cache directory if it doesn't exist already. + if ( ! file_exists( AO_CCSS_DIR ) ) { + $this->create_ao_ccss_dir(); + } + + // Create a scheduled event for the queue. + if ( $this->is_api_active() && ! wp_next_scheduled( 'ao_ccss_queue' ) ) { + wp_schedule_event( time(), apply_filters( 'ao_ccss_queue_schedule', 'ao_ccss' ), 'ao_ccss_queue' ); + } + + // Create a scheduled event for log maintenance. + if ( $this->is_api_active() && ! wp_next_scheduled( 'ao_ccss_maintenance' ) ) { + wp_schedule_event( time(), 'twicedaily', 'ao_ccss_maintenance' ); + } + } + + public function check_upgrade() { + $db_version = get_option( 'autoptimize_ccss_version', '' ); + if ( AO_CCSS_VER !== $db_version ) { + // check schedules & re-schedule if needed. + $this->on_upgrade(); + // and update db_version. + update_option( 'autoptimize_ccss_version', AO_CCSS_VER ); + } + } + + public function ao_ccss_interval( $schedules ) { + // Let interval be configurable. + if ( ! defined( 'AO_CCSS_DEBUG_INTERVAL' ) ) { + $intsec = 600; + $inttxt = '10 minutes'; + } else { + $intsec = AO_CCSS_DEBUG_INTERVAL; + if ( $intsec >= 120 ) { + $inttxt = $intsec / 60 . ' minutes'; + } else { + $inttxt = $intsec . ' second(s)'; + } + $this->log( 'Using custom WP-Cron interval of ' . $inttxt, 3 ); + } + + // Attach interval to schedule. + $schedules['ao_ccss'] = array( + 'interval' => $intsec, + // translators: the variable contains a string describing the insterval. + 'display' => sprintf( esc_html__( 'Every %s (Autoptimize Crit. CSS)', 'autoptimize' ), $inttxt ), + ); + return $schedules; + } + + public function create_ao_ccss_dir() { + // Make sure dir to write ao_ccss exists and is writable. + if ( ! is_dir( AO_CCSS_DIR ) ) { + // TODO: use wp_mkdir_p() ? + $mkdirresp = @mkdir( AO_CCSS_DIR, 0775, true ); // @codingStandardsIgnoreLine + } else { + $mkdirresp = true; + } + + // Make sure our index.html is there. + if ( ! is_file( AO_CCSS_DIR . 'index.html' ) ) { + $fileresp = file_put_contents( AO_CCSS_DIR . 'index.html', 'Generated by Autoptimize' ); + } else { + $fileresp = true; + } + + if ( true === $fileresp && true === $mkdirresp ) { + return true; + } else { + return false; + } + } + + /** + * Helper function to determine if there is an active API key. + * + * @return bool + */ + public function is_api_active() { + // using options instead of more complex $this->key_status (which gave some dependancy issues ... ;-) ). + $ao_ccss_key = $this->get_option( 'key' ); + $ao_ccss_keyst = $this->get_option( 'keyst' ); + + if ( ! empty( $ao_ccss_key ) && $ao_ccss_keyst && 2 == $ao_ccss_keyst ) { + return true; + } + + return false; + } + + /** + * Helper function to determine if a rule is MANUAL. + * + * @param array $rule Rule to check. + * + * @return bool + */ + public function is_rule_manual( $rule ) { + if ( is_array( $rule ) && false == $rule['hash'] && false != $rule['file'] ) { + return true; + } + + return false; + } + + /** + * Scheduled action to check an inactive key. Not part of autoptimizeCriticalCSSCron.php + * to allow us to only load the main cron logic if we have an active key to begin with. + */ + public function ao_ccss_check_key() { + $ao_ccss_key = $this->get_option( 'key' ); + $_result = $this->_core->ao_ccss_key_validation( $ao_ccss_key ); + $_resmsg = ( true === $_result ) ? 'ok' : 'nok'; + $this->log( 'Inactive key checked, result was ' . $_resmsg, 3 ); + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSCore.php b/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSCore.php new file mode 100644 index 0000000..ac019f8 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSCore.php @@ -0,0 +1,664 @@ +criticalcss = autoptimize()->criticalcss(); + $this->run(); + } + + public function run() { + $css_defer = $this->criticalcss->get_option( 'css_defer' ); + $deferjquery = $this->criticalcss->get_option( 'deferjquery' ); + $unloadccss = $this->criticalcss->get_option( 'unloadccss' ); + + if ( ! $css_defer ) { + return; + } + + // add all filters to do CCSS + // Set AO behavior: disable minification to avoid double minifying and caching. + add_filter( 'autoptimize_filter_css_critcss_minify', '__return_false' ); + add_filter( 'autoptimize_filter_css_defer_inline', array( $this, 'ao_ccss_frontend' ), 10, 1 ); + + // Add the action to enqueue jobs for CriticalCSS cron. + if ( $this->criticalcss->is_api_active() ) { + add_action( 'autoptimize_action_css_hash', array( $this->criticalcss, 'enqueue' ), 10, 1 ); + } + + // conditionally add the filter to defer jquery and others but only if not done so in autoptimizeScripts. + $_native_defer = false; + if ( 'on' === autoptimizeOptionWrapper::get_option( 'autoptimize_js_defer_not_aggregate' ) && 'on' === autoptimizeOptionWrapper::get_option( 'autoptimize_js_defer_inline' ) ) { + $_native_defer = true; + } + if ( $deferjquery && ! $_native_defer ) { + add_filter( 'autoptimize_html_after_minify', array( $this, 'ao_ccss_defer_jquery' ), 11, 1 ); + } + + // conditionally add filter to unload the CCSS. + if ( $unloadccss ) { + add_filter( 'autoptimize_html_after_minify', array( $this, 'ao_ccss_unloadccss' ), 12, 1 ); + } + + // Order paths by length, as longest ones have greater priority in the rules. + $rules = $this->criticalcss->get_option( 'rules' ); + if ( ! empty( $rules['paths'] ) ) { + $keys = array_map( 'strlen', array_keys( $rules['paths'] ) ); + array_multisort( $keys, SORT_DESC, $rules['paths'] ); + // TODO: Not sure what we're doing here. Sorted the $keys, + // but they don't seem to be used anywhere. + } + + // Add an array with default WordPress's conditional tags + // NOTE: these tags are sorted. + $this->_types = $this->get_ao_ccss_core_types(); + + // Extend conditional tags on plugin initalization. + add_action( apply_filters( 'autoptimize_filter_ccss_extend_types_hook', 'init' ), array( $this, 'ao_ccss_extend_types' ) ); + + // When autoptimize cache is cleared, also clear transient cache for page templates. + add_action( 'autoptimize_action_cachepurged', array( $this, 'ao_ccss_clear_page_tpl_cache' ), 10, 0 ); + } + + public function ao_ccss_frontend( $inlined ) { + // Apply CriticalCSS to frontend pages + // Attach types and settings arrays. + $rules = $this->criticalcss->get_option( 'rules' ); + $additional = $this->criticalcss->get_option( 'additional' ); + $loggedin = $this->criticalcss->get_option( 'loggedin' ); + $debug = $this->criticalcss->get_option( 'debug' ); + $no_ccss = ''; + $additional = autoptimizeStyles::sanitize_css( $additional ); + + // Only if keystatus is OK and option to add CCSS for logged on users is on or user is not logged in. + if ( $loggedin || ! is_user_logged_in() ) { + // Check for a valid CriticalCSS based on path to return its contents. + $req_path = strtok( $_SERVER['REQUEST_URI'], '?' ); + if ( ! empty( $rules['paths'] ) ) { + foreach ( $rules['paths'] as $path => $rule ) { + // explicit match OR partial match if MANUAL rule. + if ( ( $this->criticalcss->is_api_active() || $this->criticalcss->is_rule_manual( $rule ) ) && ( $req_path == $path || urldecode( $req_path ) == $path || ( apply_filters( 'autoptimize_filter_ccss_core_path_partial_match', true ) && false == $rule['hash'] && false != $rule['file'] && strpos( $req_path, str_replace( site_url(), '', $path ) ) !== false ) ) ) { + if ( file_exists( AO_CCSS_DIR . $rule['file'] ) ) { + $_ccss_contents = file_get_contents( AO_CCSS_DIR . $rule['file'] ); + if ( 'none' != $_ccss_contents ) { + if ( $debug ) { + $_ccss_contents = '/* PATH: ' . $path . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents; + } + return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $additional ); + } else { + if ( $debug ) { + $this->criticalcss->log( 'Path based rule with value "none" found.', 3 ); + } + $no_ccss = 'none'; + } + } + } + } + } + + // Check for a valid CriticalCSS based on conditional tags to return its contents. + if ( ! empty( $rules['types'] ) && 'none' !== $no_ccss ) { + // order types-rules by the order of the original $ao_ccss_types array so as not to depend on the order in which rules were added. + $rules['types'] = array_replace( array_intersect_key( array_flip( $this->_types ), $rules['types'] ), $rules['types'] ); + $is_front_page = is_front_page(); + + foreach ( $rules['types'] as $type => $rule ) { + if ( ( $this->criticalcss->is_api_active() || $this->criticalcss->is_rule_manual( $rule ) ) && in_array( $type, $this->_types ) && file_exists( AO_CCSS_DIR . $rule['file'] ) ) { + $_ccss_contents = file_get_contents( AO_CCSS_DIR . $rule['file'] ); + if ( $is_front_page && 'is_front_page' == $type ) { + if ( 'none' != $_ccss_contents ) { + if ( $debug ) { + $_ccss_contents = '/* TYPES: ' . $type . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents; + } + return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $additional ); + } else { + if ( $debug ) { + $this->criticalcss->log( 'Conditional rule for is_front_page with value "none" found.', 3 ); + } + $no_ccss = 'none'; + } + } elseif ( ( $this->criticalcss->is_api_active() || $this->criticalcss->is_rule_manual( $rule ) ) && strpos( $type, 'custom_post_' ) === 0 && ! $is_front_page ) { + if ( get_post_type( get_the_ID() ) === substr( $type, 12 ) ) { + if ( 'none' != $_ccss_contents ) { + if ( $debug ) { + $_ccss_contents = '/* TYPES: ' . $type . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents; + } + return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $additional ); + } else { + if ( $debug ) { + $this->criticalcss->log( 'Conditional rule custom_post with value "none" found.', 3 ); + } + $no_ccss = 'none'; + } + } + } elseif ( ( $this->criticalcss->is_api_active() || $this->criticalcss->is_rule_manual( $rule ) ) && 0 === strpos( $type, 'template_' ) && ! $is_front_page ) { + if ( is_page_template( substr( $type, 9 ) ) ) { + if ( 'none' != $_ccss_contents ) { + if ( $debug ) { + $_ccss_contents = '/* TYPES: ' . $type . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents; + } + return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $additional ); + } else { + if ( $debug ) { + $this->criticalcss->log( 'Conditional rule for template with value "none" found.', 3 ); + } + $no_ccss = 'none'; + } + } + } elseif ( ( $this->criticalcss->is_api_active() || $this->criticalcss->is_rule_manual( $rule ) ) && ! $is_front_page ) { + // all "normal" conditional tags, core + woo + buddypress + edd + bbpress + // but we have to remove the prefix for the non-core ones for them to function. + $type = str_replace( array( 'woo_', 'bp_', 'bbp_', 'edd_' ), '', $type ); + if ( function_exists( $type ) && call_user_func( $type ) ) { + if ( 'none' != $_ccss_contents ) { + if ( $debug ) { + $_ccss_contents = '/* TYPES: ' . $type . ' hash: ' . $rule['hash'] . ' file: ' . $rule['file'] . ' */ ' . $_ccss_contents; + } + return apply_filters( 'autoptimize_filter_ccss_core_ccss', $_ccss_contents . $additional ); + } else { + if ( $debug ) { + $this->criticalcss->log( 'Conditional rule for ' . $type . ' with value "none" found.', 3 ); + } + $no_ccss = 'none'; + } + } + } + } + } + } + } + + // Finally, inline the default CriticalCSS if any or else the entire CSS for the page + // This also applies to logged in users if the option to add CCSS for logged in users has been disabled. + if ( ! empty( $inlined ) && 'none' !== $no_ccss ) { + if ( $debug ) { + $this->criticalcss->log( 'Using default "above the fold" CSS.', 3 ); + } + return apply_filters( 'autoptimize_filter_ccss_core_ccss', $inlined . $additional ); + } else { + if ( $debug ) { + $this->criticalcss->log( 'No matching CCSS found, switching to inlining full CSS.', 3 ); + } + add_filter( 'autoptimize_filter_css_inline', '__return_true' ); + return; + } + } + + public function ao_ccss_defer_jquery( $in ) { + $loggedin = $this->criticalcss->get_option( 'loggedin' ); + + // defer all linked and inline JS. + if ( ( ! is_user_logged_in() || $loggedin ) && preg_match_all( '#(.*)#Usmi', $in, $matches, PREG_SET_ORDER ) ) { + foreach ( $matches as $match ) { + if ( str_replace( apply_filters( 'autoptimize_filter_ccss_core_defer_exclude', array( 'data-noptimize="1"', 'data-cfasync="false"', 'data-pagespeed-no-defer' ) ), '', $match[0] ) !== $match[0] ) { + // do not touch JS with noptimize/ cfasync/ pagespeed-no-defer flags. + continue; + } elseif ( '' !== $match[1] && ( ! preg_match( '//', $match[0] ) || preg_match( '/type\s*=\s*[\'"]?(?:text|application)\/(?:javascript|ecmascript)[\'"]?/i', $match[0] ) ) ) { + // base64-encode and defer all inline JS. + $base64_js = ''; + $in = str_replace( $match[0], $base64_js, $in ); + } elseif ( str_replace( array( ' defer', ' async' ), '', $match[0] ) === $match[0] ) { + // and defer linked JS unless already deferred or asynced. + $new_match = str_replace( '' ); + + if ( false !== strpos( $html_in, $_unloadccss_js . '' ) ) { + return $html_in; + } + + return str_replace( '', $_unloadccss_js . '', $html_in ); + } + + /** + * Get the types array. + * + * @return array|null + */ + public function get_types() { + return $this->_types; + } + + public function ao_ccss_extend_types() { + // Extend contidional tags + // Attach the conditional tags array. + + // in some cases $ao_ccss_types is empty and/or not an array, this should work around that problem. + if ( empty( $this->_types ) || ! is_array( $this->_types ) ) { + $this->_types = $this->get_ao_ccss_core_types(); + $this->ao_ccss_log( 'Empty types array in extend, refetching array with core conditionals.', 3 ); + } + + // Custom Post Types. + $cpts = get_post_types( + array( + 'public' => true, + '_builtin' => false, + ), + 'names', + 'and' + ); + foreach ( $cpts as $cpt ) { + array_unshift( $this->_types, 'custom_post_' . $cpt ); + } + + // Templates. + // Transient cache to avoid frequent disk reads. + $templates = get_transient( 'autoptimize_ccss_page_templates' ); + if ( ! $templates ) { + $templates = wp_get_theme()->get_page_templates(); + set_transient( 'autoptimize_ccss_page_templates', $templates, HOUR_IN_SECONDS ); + } + foreach ( $templates as $tplfile => $tplname ) { + array_unshift( $this->_types, 'template_' . $tplfile ); + } + + // bbPress tags. + if ( function_exists( 'is_bbpress' ) ) { + $this->_types = array_merge( + array( + 'bbp_is_bbpress', + 'bbp_is_favorites', + 'bbp_is_forum_archive', + 'bbp_is_replies_created', + 'bbp_is_reply_edit', + 'bbp_is_reply_move', + 'bbp_is_search', + 'bbp_is_search_results', + 'bbp_is_single_forum', + 'bbp_is_single_reply', + 'bbp_is_single_topic', + 'bbp_is_single_user', + 'bbp_is_single_user_edit', + 'bbp_is_single_view', + 'bbp_is_subscriptions', + 'bbp_is_topic_archive', + 'bbp_is_topic_edit', + 'bbp_is_topic_merge', + 'bbp_is_topic_split', + 'bbp_is_topic_tag', + 'bbp_is_topic_tag_edit', + 'bbp_is_topics_created', + 'bbp_is_user_home', + 'bbp_is_user_home_edit', + ), + $this->_types + ); + } + + // BuddyPress tags. + if ( function_exists( 'is_buddypress' ) ) { + $this->_types = array_merge( + array( + 'bp_is_activation_page', + 'bp_is_activity', + 'bp_is_blogs', + 'bp_is_buddypress', + 'bp_is_change_avatar', + 'bp_is_create_blog', + 'bp_is_friend_requests', + 'bp_is_friends', + 'bp_is_friends_activity', + 'bp_is_friends_screen', + 'bp_is_group_admin_page', + 'bp_is_group_create', + 'bp_is_group_forum', + 'bp_is_group_forum_topic', + 'bp_is_group_home', + 'bp_is_group_invites', + 'bp_is_group_leave', + 'bp_is_group_members', + 'bp_is_group_single', + 'bp_is_groups', + 'bp_is_messages', + 'bp_is_messages_compose_screen', + 'bp_is_messages_conversation', + 'bp_is_messages_inbox', + 'bp_is_messages_sentbox', + 'bp_is_my_activity', + 'bp_is_my_blogs', + 'bp_is_notices', + 'bp_is_profile_edit', + 'bp_is_register_page', + 'bp_is_settings_component', + 'bp_is_user', + 'bp_is_user_profile', + 'bp_is_wire', + ), + $this->_types + ); + } + + // Easy Digital Downloads (EDD) tags. + if ( function_exists( 'edd_is_checkout' ) ) { + $this->_types = array_merge( + array( + 'edd_is_checkout', + 'edd_is_failed_transaction_page', + 'edd_is_purchase_history_page', + 'edd_is_success_page', + ), + $this->_types + ); + } + + // WooCommerce tags. + if ( class_exists( 'WooCommerce' ) ) { + $this->_types = array_merge( + array( + 'woo_is_account_page', + 'woo_is_cart', + 'woo_is_checkout', + 'woo_is_product', + 'woo_is_product_category', + 'woo_is_product_tag', + 'woo_is_shop', + 'woo_is_wc_endpoint_url', + 'woo_is_woocommerce', + ), + $this->_types + ); + } + } + + public function get_ao_ccss_core_types() { + return array( + 'is_404', + 'is_front_page', + 'is_home', + 'is_page', + 'is_single', + 'is_category', + 'is_author', + 'is_archive', + 'is_search', + 'is_attachment', + 'is_sticky', + 'is_paged', + ); + } + + public function ao_ccss_key_status( $render ) { + // Provide key status + // Get key and key status. + $key = $this->criticalcss->get_option( 'key' ); + $key_status = $this->criticalcss->get_option( 'keyst' ); + + // Prepare returned variables. + $key_return = array(); + $status = false; + + if ( $key && 2 == $key_status ) { + // Key exists and its status is valid. + // Set valid key status. + $status = 'valid'; + $status_msg = esc_html__( 'Valid' ); + $color = '#46b450'; // Green. + $message = null; + } elseif ( $key && 1 == $key_status ) { + // Key exists but its validation has failed. + // Set invalid key status. + $status = 'invalid'; + $status_msg = esc_html__( 'Invalid' ); + $color = '#dc3232'; // Red. + // Translators: link to criticalcss.com page. + $message = sprintf( esc_html__( 'Your API key is invalid. Please enter a valid %1$scriticalcss.com%2$s key.', 'autoptimize' ), '', '' ); + } elseif ( $key && ! $key_status ) { + // Key exists but it has no valid status yet + // Perform key validation. + $key_check = $this->ao_ccss_key_validation( $key ); + + // Key is valid, set valid status. + if ( $key_check ) { + $status = 'valid'; + $status_msg = esc_html__( 'Valid' ); + $color = '#46b450'; // Green. + $message = null; + } else { + // Key is invalid, set invalid status. + $status = 'invalid'; + $status_msg = esc_html__( 'Invalid' ); + $color = '#dc3232'; // Red. + if ( get_option( 'autoptimize_ccss_keyst' ) == 1 ) { + // Translators: link to criticalcss.com page. + $message = sprintf( esc_html__( 'Your API key is invalid. Please enter a valid %1$scriticalcss.com%2$s key.', 'autoptimize' ), '', '' ); + } else { + $message = esc_html__( 'Something went wrong when checking your API key, make sure you server can communicate with https://criticalcss.com and/ or try again later.', 'autoptimize' ); + } + } + } else { + // No key nor status + // Set no key status. + $status = 'nokey'; + $status_msg = esc_html__( 'None' ); + $color = '#ffb900'; // Yellow. + // Translators: link to criticalcss.com page. + $message = sprintf( esc_html__( 'Please enter a valid %1$scriticalcss.com%2$s API key to start.', 'autoptimize' ), '', '' ); + } + + // Fill returned values. + $key_return['status'] = $status; + // Provide rendering information if required. + if ( $render ) { + $key_return['stmsg'] = $status_msg; + $key_return['color'] = $color; + $key_return['msg'] = $message; + } + + // Return key status. + return $key_return; + } + + public function ao_ccss_key_validation( $key ) { + $noptimize = $this->criticalcss->get_option( 'noptimize' ); + + // POST a dummy job to criticalcss.com to check for key validation + // Prepare home URL for the request. + $src_url = get_home_url(); + + // Avoid AO optimizations if required by config or avoid lazyload if lazyload is active in AO. + if ( ! empty( $noptimize ) ) { + $src_url .= '/?ao_noptirocket=1'; + } elseif ( class_exists( 'autoptimizeImages', false ) && autoptimizeImages::should_lazyload_wrapper() ) { + $src_url .= '/?ao_nolazy=1'; + } + + $src_url = apply_filters( 'autoptimize_filter_ccss_cron_srcurl', $src_url ); + + if ( true !== autoptimizeUtils::is_local_server( parse_url( $src_url, PHP_URL_HOST ) ) ) { + // Prepare the request. + $url = esc_url_raw( AO_CCSS_API . 'generate' ); + $args = array( + 'headers' => apply_filters( + 'autoptimize_ccss_cron_api_generate_headers', + array( + 'User-Agent' => 'Autoptimize v' . AO_CCSS_VER, + 'Content-type' => 'application/json; charset=utf-8', + 'Authorization' => 'JWT ' . $key, + 'Connection' => 'close', + ) + ), + // Body must be JSON. + 'body' => json_encode( + apply_filters( + 'autoptimize_ccss_cron_api_generate_body', + array( + 'url' => $src_url, + 'aff' => 1, + 'aocssv' => AO_CCSS_VER, + ) + ), + JSON_UNESCAPED_SLASHES + ), + ); + + // Dispatch the request and store its response code. + $req = wp_safe_remote_post( $url, $args ); + $code = wp_remote_retrieve_response_code( $req ); + $body = json_decode( wp_remote_retrieve_body( $req ), true ); + + if ( 200 == $code ) { + // Response is OK. + // Set key status as valid and log key check. + update_option( 'autoptimize_ccss_keyst', 2 ); + $this->ao_ccss_log( 'criticalcss.com: API key is valid, updating key status', 3 ); + + // extract job-id from $body and put it in the queue as a P job + // but only if no jobs and no rules! + $queue = $this->criticalcss->get_option( 'queue' ); + $rules = $this->criticalcss->get_option( 'rules' ); + + if ( ( empty( $queue ) || 0 == count( $queue ) ) && ( empty( $rules ) || ( is_array( $rules ) && 0 == count( $rules['types'] ) && 0 == count( $rules['paths'] ) ) ) ) { + if ( 'JOB_QUEUED' == $body['job']['status'] || 'JOB_ONGOING' == $body['job']['status'] ) { + $jprops['ljid'] = 'firstrun'; + $jprops['rtarget'] = 'types|is_front_page'; + $jprops['ptype'] = 'is_front_page'; + $jprops['hashes'][] = 'dummyhash'; + $jprops['hash'] = 'dummyhash'; + $jprops['file'] = null; + $jprops['jid'] = $body['job']['id']; + $jprops['jqstat'] = $body['job']['status']; + $jprops['jrstat'] = null; + $jprops['jvstat'] = null; + $jprops['jctime'] = microtime( true ); + $jprops['jftime'] = null; + $queue['/'] = $jprops; + $queue_raw = json_encode( $queue ); + update_option( 'autoptimize_ccss_queue', $queue_raw, false ); + $this->ao_ccss_log( 'Created P job for is_front_page based on API key check response.', 3 ); + } + } + return true; + } elseif ( 401 == $code ) { + // Response is unauthorized + // Set key status as invalid and log key check. + update_option( 'autoptimize_ccss_keyst', 1 ); + $this->ao_ccss_log( 'criticalcss.com: API key is invalid, updating key status', 3 ); + return false; + } else { + // Response unkown + // Log key check attempt. + $this->ao_ccss_log( 'criticalcss.com: could not check API key status, this is a service error, body follows if any...', 2 ); + if ( ! empty( $body ) ) { + $this->ao_ccss_log( print_r( $body, true ), 2 ); + } + if ( is_wp_error( $req ) ) { + $this->ao_ccss_log( $req->get_error_message(), 2 ); + } + return false; + } + } else { + // localhost/ private network server, no API check possible. + return false; + } + } + + public function ao_ccss_viewport() { + // Get viewport size + // Attach viewport option. + $viewport = $this->criticalcss->get_option( 'viewport' ); + + return array( + 'w' => ! empty( $viewport['w'] ) ? $viewport['w'] : '', + 'h' => ! empty( $viewport['h'] ) ? $viewport['h'] : '', + ); + } + + public function ao_ccss_check_contents( $ccss ) { + // Perform basic exploit avoidance and CSS validation. + if ( ! empty( $ccss ) ) { + // Try to avoid code injection. + $blocklist = array( '#!/', 'function(', 'ao_ccss_log( 'Critical CSS received did not seem to contain real CSS.', 2 ); + return false; + } + } + } + + // Return true if file critical CSS is sane. + return true; + } + + public function ao_ccss_log( $msg, $lvl ) { + // Commom logging facility + // Attach debug option. + $debug = $this->criticalcss->get_option( 'debug' ); + + // Prepare log levels, where accepted $lvl are: + // 1: II (for info) + // 2: EE (for error) + // 3: DD (for debug) + // Default: UU (for unkown). + $level = false; + if ( $debug ) { + switch ( $lvl ) { + case 1: + $level = 'II'; + break; + case 2: + $level = 'EE'; + break; + case 3: + $level = 'DD'; + break; + default: + $level = 'UU'; + } + } + + // Prepare and write a log message if there's a valid level. + if ( $level ) { + + // Prepare message. + $message = date( 'c' ) . ' - [' . $level . '] ' . htmlentities( $msg ) . '
'; // @codingStandardsIgnoreLine + + // Write message to log file. + error_log( $message, 3, AO_CCSS_LOG ); + } + } + + public function ao_ccss_clear_page_tpl_cache() { + // Clears transient cache for page templates. + delete_transient( 'autoptimize_ccss_page_templates' ); + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSCron.php b/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSCron.php new file mode 100644 index 0000000..2eeaa3e --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSCron.php @@ -0,0 +1,881 @@ +criticalcss = autoptimize()->criticalcss(); + + // Add queue control to a registered event. + add_action( 'ao_ccss_queue', array( $this, 'ao_ccss_queue_control' ) ); + // Add cleaning job to a registered event. + add_action( 'ao_ccss_maintenance', array( $this, 'ao_ccss_cleaning' ) ); + } + + public function ao_ccss_queue_control() { + // The queue execution backend. + $key = $this->criticalcss->get_option( 'key' ); + + if ( empty( $key ) ) { + // no key set, not processing the queue! + $this->criticalcss->log( 'No key set, so not processing queue.', 3 ); + return; + } + + /** + * Provide a debug facility for the queue + * This debug facility provides a way to easily force some queue behaviors useful for development and testing. + * To enable this feature, create the file AO_CCSS_DIR . 'queue.json' with a JSON object like the one bellow: + * + * {"enable":bool,"htcode":int,"status":0|"str","resultStatus ":0|"str","validationStatus":0|"str"} + * + * Where values are: + * - enable : 0 or 1, enable or disable this debug facility straight from the file + * - htcode : 0 or any HTTP reponse code (e.g. 2xx, 4xx, 5xx) to force API responses + * - status : 0 or a valid value for 'status' (see 'Generating critical css - Job Status Types' in spec docs) + * - resultStatus : 0 or a valid value for 'resultStatus' (see 'Appendix - Result status types' in the spec docs) + * - validationStatus: 0 or a valid value for 'validationStatus' (see 'Appendix - Validation status types' in the spec docs) + * + * When properly set, queue will always finish a job with the declared settings above regardless of the real API responses. + */ + $queue_debug = false; + if ( file_exists( AO_CCSS_DEBUG ) ) { + $qdobj_raw = file_get_contents( AO_CCSS_DEBUG ); + $qdobj = json_decode( $qdobj_raw, true ); + if ( $qdobj ) { + if ( 1 === $qdobj['enable'] ) { + $queue_debug = true; + $this->criticalcss->log( 'Queue operating in debug mode with the following settings: <' . $qdobj_raw . '>', 3 ); + } + } + } + + // Set some default values for $qdobj to avoid function call warnings. + if ( ! $queue_debug ) { + $qdobj['htcode'] = false; + } + + // Check if queue is already running. + $queue_lock = false; + if ( file_exists( AO_CCSS_LOCK ) ) { + $queue_lock = true; + } + + // Proceed with the queue if it's not already running. + if ( ! $queue_lock ) { + + // Log queue start and create the lock file. + $this->criticalcss->log( 'Queue control started', 3 ); + if ( touch( AO_CCSS_LOCK ) ) { + $this->criticalcss->log( 'Queue control locked', 3 ); + } + + // Attach required variables. + $queue = $this->criticalcss->get_option( 'queue' ); + $rtimelimit = $this->criticalcss->get_option( 'rtimelimit' ); + + // make sure we have the queue and bail if not. + if ( empty( $queue ) || ! is_array( $queue ) ) { + $this->criticalcss->log( 'Job processing cannot work on an empty queue, aborting.', 3 ); + unlink( AO_CCSS_LOCK ); + return; + } + + // Initialize counters. + if ( empty( $rtimelimit ) || 0 == $rtimelimit ) { + // no time limit set, let's go with 1000 seconds. + $rtimelimit = 1000; + } + $mt = time() + (int) $rtimelimit; // maxtime queue processing can run. + $jc = 1; // job count number. + $jr = 1; // jobs requests number. + $jt = count( $queue ); // number of jobs in queue. + + // Sort queue by ascending job status (e.g. ERROR, JOB_ONGOING, JOB_QUEUED, NEW...). + array_multisort( array_column( $queue, 'jqstat' ), $queue ); // @codingStandardsIgnoreLine + + // Iterates over the entire queue. + foreach ( $queue as $path => $jprops ) { + // Prepare flags and target rule. + $update = false; + $deljob = false; + $rule_update = false; + $oldccssfile = false; + $trule = explode( '|', $jprops['rtarget'] ); + + // Log job count. + $this->criticalcss->log( 'Processing job ' . $jc . ' of ' . $jt . ' with id <' . $jprops['ljid'] . '> and status <' . $jprops['jqstat'] . '>', 3 ); + + // Process NEW jobs. + if ( 'NEW' == $jprops['jqstat'] ) { + + // Log the new job. + $this->criticalcss->log( 'Found NEW job with local ID <' . $jprops['ljid'] . '>, starting its queue processing', 3 ); + + // Compare job and rule hashes (if any). + $hash = $this->ao_ccss_diff_hashes( $jprops['ljid'], $jprops['hash'], $jprops['hashes'], $jprops['rtarget'] ); + + // If job hash is new or different of a previous one. + if ( $hash ) { + if ( $jr > 2 ) { + // we already posted 2 jobs to criticalcss.com, don't post more this run + // but we can keep on processing the queue to keep it tidy. + $this->criticalcss->log( 'Holding off on generating request for job with local ID <' . $jprops['ljid'] . '>, maximum number of POSTS reached.', 3 ); + continue; + } + + // Set job hash. + $jprops['hash'] = $hash; + + // Dispatch the job generate request and increment request count. + $apireq = $this->ao_ccss_api_generate( $path, $queue_debug, $qdobj['htcode'] ); + $jr++; + + // NOTE: All the following conditions maps to the ones in admin_settings_queue.js.php. + if ( empty( $apireq ) ) { + // ERROR: no response + // Update job properties. + $jprops['jqstat'] = 'NO_RESPONSE'; + $jprops['jrstat'] = 'NONE'; + $jprops['jvstat'] = 'NONE'; + $jprops['jftime'] = microtime( true ); + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> request has no response, status now is <' . $jprops['jqstat'] . '>', 3 ); + } elseif ( array_key_exists( 'errorCode', $apireq ) && 'INVALID_JWT_TOKEN' == $apireq['errorCode'] ) { + // ERROR: key validation + // Update job properties. + $jprops['jqstat'] = $apireq['errorCode']; + $jprops['jrstat'] = $apireq['error']; + $jprops['jvstat'] = 'NONE'; + $jprops['jftime'] = microtime( true ); + $this->criticalcss->log( 'API key validation error when processing job id <' . $jprops['ljid'] . '>, job status is now <' . $jprops['jqstat'] . '>', 3 ); + } elseif ( array_key_exists( 'job', $apireq ) && array_key_exists( 'status', $apireq['job'] ) && ( 'JOB_QUEUED' == $apireq['job']['status'] || 'JOB_ONGOING' == $apireq['job']['status'] ) ) { + // SUCCESS: request has a valid result. + // Update job properties. + $jprops['jid'] = $apireq['job']['id']; + $jprops['jqstat'] = $apireq['job']['status']; + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> generate request successful, remote id <' . $jprops['jid'] . '>, status now is <' . $jprops['jqstat'] . '>', 3 ); + } elseif ( array_key_exists( 'job', $apireq ) && array_key_exists( 'status', $apireq['job'] ) && 'STATUS_JOB_BAD' == $apireq['job']['status'] ) { + // ERROR: concurrent requests + // Update job properties. + $jprops['jid'] = $apireq['job']['id']; + $jprops['jqstat'] = $apireq['job']['status']; + if ( $apireq['job']['error'] ) { + $jprops['jrstat'] = $apireq['job']['error']; + } else { + $jprops['jrstat'] = 'Baby did a bad bad thing'; + } + $jprops['jvstat'] = 'NONE'; + $jprops['jftime'] = microtime( true ); + $this->criticalcss->log( 'Concurrent requests when processing job id <' . $jprops['ljid'] . '>, job status is now <' . $jprops['jqstat'] . '>', 3 ); + } else { + // UNKNOWN: unhandled generate exception + // Update job properties. + $jprops['jqstat'] = 'JOB_UNKNOWN'; + $jprops['jrstat'] = 'NONE'; + $jprops['jvstat'] = 'NONE'; + $jprops['jftime'] = microtime( true ); + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> generate request has an UNKNOWN condition, status now is <' . $jprops['jqstat'] . '>, check log messages above for more information', 2 ); + $this->criticalcss->log( 'Job response was: ' . json_encode( $apireq ), 3 ); + } + } else { + // SUCCESS: Job hash is equal to a previous one, so it's done + // Update job status and finish time. + $jprops['jqstat'] = 'JOB_DONE'; + $jprops['jftime'] = microtime( true ); + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> requires no further processing, status now is <' . $jprops['jqstat'] . '>', 3 ); + } + + // Set queue update flag. + $update = true; + + } elseif ( 'JOB_QUEUED' == $jprops['jqstat'] || 'JOB_ONGOING' == $jprops['jqstat'] ) { + // Process QUEUED and ONGOING jobs + // Log the pending job. + $this->criticalcss->log( 'Found PENDING job with local ID <' . $jprops['ljid'] . '>, continuing its queue processing', 3 ); + + // Dispatch the job result request and increment request count. + $apireq = $this->ao_ccss_api_results( $jprops['jid'], $queue_debug, $qdobj['htcode'] ); + + // NOTE: All the following condigitons maps to the ones in admin_settings_queue.js.php + // Replace API response values if queue debugging is enabled and some value is set. + if ( $queue_debug ) { + if ( $qdobj['status'] ) { + $apireq['status'] = $qdobj['status']; + } + if ( $qdobj['resultStatus'] ) { + $apireq['resultStatus'] = $qdobj['resultStatus']; + } + if ( $qdobj['validationStatus'] ) { + $apireq['validationStatus'] = $qdobj['validationStatus']; + } + } + + if ( empty( $apireq ) || ! is_array( $apireq ) ) { + // ERROR: no response + // Update job properties. + $jprops['jqstat'] = 'NO_RESPONSE'; + $jprops['jrstat'] = 'NONE'; + $jprops['jvstat'] = 'NONE'; + $jprops['jftime'] = microtime( true ); + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> request has no response, status now is <' . $jprops['jqstat'] . '>', 3 ); + } elseif ( array_key_exists( 'status', $apireq ) && ( 'JOB_QUEUED' == $apireq['status'] || 'JOB_ONGOING' == $apireq['status'] ) ) { + // SUCCESS: request has a valid result + // Process a PENDING job + // Update job properties. + $jprops['jqstat'] = $apireq['status']; + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> result request successful, remote id <' . $jprops['jid'] . '>, status <' . $jprops['jqstat'] . '> unchanged', 3 ); + } elseif ( array_key_exists( 'status', $apireq ) && 'JOB_DONE' == $apireq['status'] ) { + // Process a DONE job + // New resultStatus from ccss.com "HTML_404", consider as "GOOD" for now. + if ( 'HTML_404' == $apireq['resultStatus'] ) { + $apireq['resultStatus'] = 'GOOD'; + } + + if ( 'GOOD' == $apireq['resultStatus'] && ( 'GOOD' == $apireq['validationStatus'] || 'WARN' == $apireq['validationStatus'] ) ) { + // SUCCESS: GOOD job with GOOD or WARN validation + // Update job properties. + $jprops['file'] = $this->ao_ccss_save_file( $apireq['css'], $trule, false ); + $jprops['jqstat'] = $apireq['status']; + $jprops['jrstat'] = $apireq['resultStatus']; + $jprops['jvstat'] = $apireq['validationStatus']; + $jprops['jftime'] = microtime( true ); + $rule_update = true; + do_action( 'autoptimize_action_ccss_cron_rule_saved', $jprops['rtarget'], $jprops['file'] ); + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> result request successful, remote id <' . $jprops['jid'] . '>, status <' . $jprops['jqstat'] . '>, file saved <' . $jprops['file'] . '>', 3 ); + } elseif ( 'GOOD' == $apireq['resultStatus'] && ( 'BAD' == $apireq['validationStatus'] || 'SCREENSHOT_WARN_BLANK' == $apireq['validationStatus'] ) ) { + // SUCCESS: GOOD job with BAD or SCREENSHOT_WARN_BLANK validation + // Update job properties. + $jprops['jqstat'] = $apireq['status']; + $jprops['jrstat'] = $apireq['resultStatus']; + $jprops['jvstat'] = $apireq['validationStatus']; + $jprops['jftime'] = microtime( true ); + if ( apply_filters( 'autoptimize_filter_ccss_save_review_rules', true ) ) { + $jprops['file'] = $this->ao_ccss_save_file( $apireq['css'], $trule, true ); + $rule_update = true; + do_action( 'autoptimize_action_ccss_cron_rule_saved', $jprops['rtarget'], $jprops['file'] ); + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> result request successful, remote id <' . $jprops['jid'] . '>, status <' . $jprops['jqstat'] . ', file saved <' . $jprops['file'] . '> but requires REVIEW', 3 ); + } else { + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> result request successful, remote id <' . $jprops['jid'] . '>, status <' . $jprops['jqstat'] . ', file not saved because it required REVIEW.', 3 ); + } + } elseif ( 'GOOD' != $apireq['resultStatus'] && ( 'GOOD' != $apireq['validationStatus'] || 'WARN' != $apireq['validationStatus'] || 'BAD' != $apireq['validationStatus'] || 'SCREENSHOT_WARN_BLANK' != $apireq['validationStatus'] ) ) { + // ERROR: no GOOD, WARN or BAD results + // Update job properties. + $jprops['jqstat'] = $apireq['status']; + $jprops['jrstat'] = $apireq['resultStatus']; + $jprops['jvstat'] = $apireq['validationStatus']; + $jprops['jftime'] = microtime( true ); + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> result request successful but job FAILED, status now is <' . $jprops['jqstat'] . '>', 3 ); + $apireq['css'] = '/* critical css removed for DEBUG logging purposes */'; + $this->criticalcss->log( 'Job response was: ' . json_encode( $apireq ), 3 ); + } else { + // UNKNOWN: unhandled JOB_DONE exception + // Update job properties. + $jprops['jqstat'] = 'JOB_UNKNOWN'; + $jprops['jrstat'] = $apireq['resultStatus']; + $jprops['jvstat'] = $apireq['validationStatus']; + $jprops['jftime'] = microtime( true ); + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> result request successful but job is UNKNOWN, status now is <' . $jprops['jqstat'] . '>', 2 ); + $apireq['css'] = '/* critical css removed for DEBUG logging purposes */'; + $this->criticalcss->log( 'Job response was: ' . json_encode( $apireq ), 3 ); + } + } elseif ( array_key_exists( 'job', $apireq ) && is_array( $apireq['job'] ) && array_key_exists( 'status', $apireq['job'] ) && ( 'JOB_FAILED' == $apireq['job']['status'] || 'STATUS_JOB_BAD' == $apireq['job']['status'] ) ) { + // ERROR: failed job + // Update job properties. + $jprops['jqstat'] = $apireq['job']['status']; + if ( $apireq['job']['error'] ) { + $jprops['jrstat'] = $apireq['job']['error']; + } else { + $jprops['jrstat'] = 'Baby did a bad bad thing'; + } + $jprops['jvstat'] = 'NONE'; + $jprops['jftime'] = microtime( true ); + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> result request successful but job FAILED, status now is <' . $jprops['jqstat'] . '>', 3 ); + } elseif ( array_key_exists( 'error', $apireq ) && 'This css no longer exists. Please re-generate it.' == $apireq['error'] ) { + // ERROR: CSS doesn't exist + // Update job properties. + $jprops['jqstat'] = 'NO_CSS'; + $jprops['jrstat'] = $apireq['error']; + $jprops['jvstat'] = 'NONE'; + $jprops['jftime'] = microtime( true ); + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> result request successful but job FAILED, status now is <' . $jprops['jqstat'] . '>', 3 ); + } else { + // UNKNOWN: unhandled results exception + // Update job properties. + $jprops['jqstat'] = 'JOB_UNKNOWN'; + $jprops['jrstat'] = 'NONE'; + $jprops['jvstat'] = 'NONE'; + $jprops['jftime'] = microtime( true ); + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> result request has an UNKNOWN condition, status now is <' . $jprops['jqstat'] . '>, check log messages above for more information', 2 ); + } + + // Set queue update flag. + $update = true; + } + + // Mark DONE jobs for removal. + if ( 'JOB_DONE' == $jprops['jqstat'] ) { + $update = true; + $deljob = true; + } + + // Persist updated queue object. + if ( $update ) { + if ( ! $deljob ) { + // Update properties of a NEW or PENDING job... + $queue[ $path ] = $jprops; + } else { + // ...or remove the DONE job. + unset( $queue[ $path ] ); + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> is DONE and was removed from the queue', 3 ); + } + + // Update queue object. + $queue_raw = json_encode( $queue ); + update_option( 'autoptimize_ccss_queue', $queue_raw, false ); + $this->criticalcss->log( 'Queue updated by job id <' . $jprops['ljid'] . '>', 3 ); + + // Update target rule. + if ( $rule_update ) { + $this->ao_ccss_rule_update( $jprops['ljid'], $jprops['rtarget'], $jprops['file'], $jprops['hash'] ); + $this->criticalcss->log( 'Job id <' . $jprops['ljid'] . '> updated the target rule <' . $jprops['rtarget'] . '>', 3 ); + } + } else { + // Or log no queue action. + $this->criticalcss->log( 'Nothing to do on this job', 3 ); + } + + // Break the loop if request time limit is (almost exceeded). + if ( time() > $mt ) { + $this->criticalcss->log( 'The time limit of ' . $rtimelimit . ' seconds was exceeded, queue control must finish now', 3 ); + break; + } + + // Increment job counter. + $jc++; + } + + // Remove the lock file and log the queue end. + if ( file_exists( AO_CCSS_LOCK ) ) { + unlink( AO_CCSS_LOCK ); + $this->criticalcss->log( 'Queue control unlocked', 3 ); + } + $this->criticalcss->log( 'Queue control finished', 3 ); + + // Log that queue is locked. + } else { + $this->criticalcss->log( 'Queue is already running, skipping the attempt to run it again', 3 ); + } + } + + public function ao_ccss_diff_hashes( $ljid, $hash, $hashes, $rule ) { + // Compare job hashes + // STEP 1: update job hashes. + if ( 1 == count( $hashes ) ) { + // Job with a single hash + // Set job hash. + $hash = $hashes[0]; + $this->criticalcss->log( 'Job id <' . $ljid . '> updated with SINGLE hash <' . $hash . '>', 3 ); + } else { + // Job with multiple hashes + // Loop through hashes to concatenate them. + $nhash = ''; + foreach ( $hashes as $shash ) { + $nhash .= $shash; + } + + // Set job hash. + $hash = md5( $nhash ); + $this->criticalcss->log( 'Job id <' . $ljid . '> updated with a COMPOSITE hash <' . $hash . '>', 3 ); + } + + // STEP 2: compare job to existing jobs to prevent double submission for same type+hash. + $queue = $this->criticalcss->get_option( 'queue' ); + + foreach ( $queue as $queue_item ) { + $this->criticalcss->log( 'Comparing <' . $rule . $hash . '> with <' . $queue_item['rtarget'] . $queue_item['hash'] . '>', 3 ); + if ( $queue_item['hash'] == $hash && $queue_item['rtarget'] == $rule && in_array( $queue_item['jqstat'], array( 'JOB_QUEUED', 'JOB_ONGOING', 'JOB_DONE' ) ) ) { + $this->criticalcss->log( 'Job id <' . $ljid . '> matches the already pending job <' . $queue_item['ljid'] . '>', 3 ); + return false; + } + } + + // STEP 3: compare job and existing rule (if any) hashes + // Attach required arrays. + $rules = $this->criticalcss->get_option( 'rules' ); + + // Prepare rule variables. + $trule = explode( '|', $rule ); + if ( is_array( $trule ) && ! empty( $trule ) && array_key_exists( $trule[1], $rules[ $trule[0] ] ) ) { + $srule = $rules[ $trule[0] ][ $trule[1] ]; + } else { + $srule = ''; + } + + // If hash is empty, set it to now for a "forced job". + if ( empty( $hash ) ) { + $hash = 'new'; + $this->criticalcss->log( 'Job id <' . $ljid . '> had no hash, assuming forced job so setting hash to new', 3 ); + } + + // Check if a MANUAL rule exist and return false. + if ( ! empty( $srule ) && ( 0 == $srule['hash'] && 0 != $srule['file'] ) ) { + $this->criticalcss->log( 'Job id <' . $ljid . '> matches the MANUAL rule <' . $trule[0] . '|' . $trule[1] . '>', 3 ); + return false; + } elseif ( ! empty( $srule ) ) { + // Check if an AUTO rule exist. + if ( $hash === $srule['hash'] && is_file( AO_CCSS_DIR . $srule['file'] ) && 0 != filesize( AO_CCSS_DIR . $srule['file'] ) ) { + // Check if job hash matches rule, if the CCSS file exists said file is not empty and return FALSE is so. + $this->criticalcss->log( 'Job id <' . $ljid . '> with hash <' . $hash . '> MATCH the one in rule <' . $trule[0] . '|' . $trule[1] . '>', 3 ); + return false; + } else { + // Or return the new hash if they differ. + $this->criticalcss->log( 'Job id <' . $ljid . '> with hash <' . $hash . '> DOES NOT MATCH the one in rule <' . $trule[0] . '|' . $trule[1] . '> or rule\'s CCSS file was invalid.', 3 ); + return $hash; + } + } else { + // Return the hash for a job that has no rule yet. + $this->criticalcss->log( 'Job id <' . $ljid . '> with hash <' . $hash . '> has no rule yet', 3 ); + return $hash; + } + } + + public function ao_ccss_api_generate( $path, $debug, $dcode ) { + // POST jobs to criticalcss.com and return responses + // Get key and key status. + $key = $this->criticalcss->get_option( 'key' ); + $key_status = $this->criticalcss->get_option( 'keyst' ); + $noptimize = $this->criticalcss->get_option( 'noptimize' ); + + // Prepare full URL to request. + $site_host = get_site_url(); + $site_path = parse_url( $site_host, PHP_URL_PATH ); + + if ( ! empty( $site_path ) ) { + $site_host = str_replace( $site_path, '', $site_host ); + } + + // Logic to bind to one domain to avoid site clones of sites would + // automatically begin spawning requests to criticalcss.com which has + // a per domain cost. + $domain = $this->criticalcss->get_option( 'domain' ); + if ( empty( $domain ) ) { + // first request being done, update option to allow future requests are only allowed if from same domain. + update_option( 'autoptimize_ccss_domain', str_rot13( $site_host ) ); + } elseif ( trim( $domain, '\'"' ) !== 'none' && parse_url( $site_host, PHP_URL_HOST ) !== parse_url( $domain, PHP_URL_HOST ) && apply_filters( 'autoptimize_filter_ccss_bind_domain', true ) ) { + // not the same domain, log as error and return without posting to criticalcss.com. + $this->criticalcss->log( 'Request for domain ' . $site_host . ' does not match bound domain ' . $domain . ' so not proceeding.', 2 ); + return false; + } + + $src_url = $site_host . $path; + + // Avoid AO optimizations if required by config or avoid lazyload if lazyload is active in AO. + if ( ! empty( $noptimize ) ) { + $src_url .= '?ao_noptirocket=1'; + } elseif ( ( class_exists( 'autoptimizeImages', false ) && autoptimizeImages::should_lazyload_wrapper() ) || apply_filters( 'autoptimize_filter_ccss_enforce_nolazy', false ) ) { + $src_url .= '?ao_nolazy=1'; + } + + $src_url = apply_filters( 'autoptimize_filter_ccss_cron_srcurl', $src_url ); + + if ( true !== autoptimizeUtils::is_local_server( parse_url( $src_url, PHP_URL_HOST ) ) ) { + // Initialize request body. + $body = array(); + $body['url'] = $src_url; + $body['aff'] = 1; + $body['aocssv'] = AO_CCSS_VER; + + // Prepare and add viewport size to the body if available. + $viewport = $this->criticalcss->viewport(); + if ( ! empty( $viewport['w'] ) && ! empty( $viewport['h'] ) ) { + $body['width'] = $viewport['w']; + $body['height'] = $viewport['h']; + } + + // Prepare and add forceInclude to the body if available. + $finclude = $this->criticalcss->get_option( 'finclude' ); + $finclude = $this->ao_ccss_finclude( $finclude ); + if ( ! empty( $finclude ) ) { + $body['forceInclude'] = $finclude; + } + + // Add filter to allow the body array to be altered (e.g. to add customPageHeaders). + $body = apply_filters( 'autoptimize_ccss_cron_api_generate_body', $body ); + + // Body must be json and log it. + $body = json_encode( $body, JSON_UNESCAPED_SLASHES ); + $this->criticalcss->log( 'criticalcss.com: POST generate request body is ' . $body, 3 ); + + // Prepare the request. + $url = esc_url_raw( AO_CCSS_API . 'generate?aover=' . AO_CCSS_VER ); + $args = array( + 'headers' => apply_filters( + 'autoptimize_ccss_cron_api_generate_headers', + array( + 'User-Agent' => 'Autoptimize v' . AO_CCSS_VER, + 'Content-type' => 'application/json; charset=utf-8', + 'Authorization' => 'JWT ' . $key, + 'Connection' => 'close', + ) + ), + 'body' => $body, + ); + + // Dispatch the request and store its response code. + $req = wp_safe_remote_post( $url, $args ); + $code = wp_remote_retrieve_response_code( $req ); + $body = json_decode( wp_remote_retrieve_body( $req ), true ); + + if ( $debug && $dcode ) { + // If queue debug is active, change response code. + $code = $dcode; + } + + if ( 200 == $code ) { + // Response code is OK. + // Workaround criticalcss.com non-RESTful reponses. + if ( 'JOB_QUEUED' == $body['job']['status'] || 'JOB_ONGOING' == $body['job']['status'] || 'STATUS_JOB_BAD' == $body['job']['status'] ) { + // Log successful and return encoded request body. + $this->criticalcss->log( 'criticalcss.com: POST generate request for path <' . $src_url . '> replied successfully', 3 ); + + // This code also means the key is valid, so cache key status for 24h if not already cached. + if ( ( ! $key_status || 2 != $key_status ) && $key ) { + update_option( 'autoptimize_ccss_keyst', 2 ); + $this->criticalcss->log( 'criticalcss.com: API key is valid, updating key status', 3 ); + } + + // Return the request body. + return $body; + } else { + // Log successful requests with invalid reponses. + $this->criticalcss->log( 'criticalcss.com: POST generate request for path <' . $src_url . '> replied with code <' . $code . '> and an UNKNOWN error condition, body follows...', 2 ); + $this->criticalcss->log( print_r( $body, true ), 2 ); + return $body; + } + } else { + // Response code is anything else. + // Log failed request with a valid response code and return body. + if ( $code ) { + $this->criticalcss->log( 'criticalcss.com: POST generate request for path <' . $src_url . '> replied with error code <' . $code . '>, body follows...', 2 ); + $this->criticalcss->log( print_r( $body, true ), 2 ); + + if ( 401 == $code ) { + // If request is unauthorized, also clear key status. + update_option( 'autoptimize_ccss_keyst', 1 ); + $this->criticalcss->log( 'criticalcss.com: API key is invalid, updating key status', 3 ); + } + + // Return the request body. + return $body; + } else { + // Log failed request with no response and return false. + $this->criticalcss->log( 'criticalcss.com: POST generate request for path <' . $src_url . '> has no response, this could be a service timeout', 2 ); + if ( is_wp_error( $req ) ) { + $this->criticalcss->log( $req->get_error_message(), 2 ); + } + + return false; + } + } + } else { + // localhost/ private network server, no CCSS possible. + $this->criticalcss->log( 'ccss cron: job not created at ccss.com as for local server', 3 ); + return false; + } + } + + public function ao_ccss_api_results( $jobid, $debug, $dcode ) { + // GET jobs from criticalcss.com and return responses + // Get key. + $key = $this->criticalcss->get_option( 'key' ); + + // Prepare the request. + $url = AO_CCSS_API . 'results?resultId=' . $jobid; + $args = array( + 'headers' => apply_filters( + 'autoptimize_ccss_cron_api_generate_headers', + array( + 'User-Agent' => 'Autoptimize CriticalCSS Power-Up v' . AO_CCSS_VER, + 'Authorization' => 'JWT ' . $key, + 'Connection' => 'close', + ) + ), + ); + + // Dispatch the request and store its response code. + $req = wp_safe_remote_get( $url, $args ); + $code = wp_remote_retrieve_response_code( $req ); + $body = json_decode( wp_remote_retrieve_body( $req ), true ); + + if ( $debug && $dcode ) { + // If queue debug is active, change response code. + $code = $dcode; + } + + if ( 200 == $code ) { + // Response code is OK. + if ( is_array( $body ) && ( array_key_exists( 'status', $body ) || array_key_exists( 'job', $body ) ) && ( 'JOB_QUEUED' == $body['status'] || 'JOB_ONGOING' == $body['status'] || 'JOB_DONE' == $body['status'] || 'JOB_FAILED' == $body['status'] || 'JOB_UNKNOWN' == $body['status'] || 'STATUS_JOB_BAD' == $body['job']['status'] ) ) { + // Workaround criticalcss.com non-RESTful reponses + // Log successful and return encoded request body. + $this->criticalcss->log( 'criticalcss.com: GET results request for remote job id <' . $jobid . '> replied successfully', 3 ); + return $body; + } elseif ( is_array( $body ) && ( array_key_exists( 'error', $body ) && 'This css no longer exists. Please re-generate it.' == $body['error'] ) ) { + // Handle no CSS reply + // Log no CSS error and return encoded request body. + $this->criticalcss->log( 'criticalcss.com: GET results request for remote job id <' . $jobid . '> replied successfully but the CSS for it does not exist anymore', 3 ); + return $body; + } else { + // Log failed request and return false. + $this->criticalcss->log( 'criticalcss.com: GET results request for remote job id <' . $jobid . '> replied with code <' . $code . '> and an UNKNOWN error condition, body follows...', 2 ); + $this->criticalcss->log( print_r( $body, true ), 2 ); + return false; + } + } else { + // Response code is anything else + // Log failed request with a valid response code and return body. + if ( $code ) { + $this->criticalcss->log( 'criticalcss.com: GET results request for remote job id <' . $jobid . '> replied with error code <' . $code . '>, body follows...', 2 ); + $this->criticalcss->log( print_r( $body, true ), 2 ); + if ( 401 == $code ) { + // If request is unauthorized, also clear key status. + update_option( 'autoptimize_ccss_keyst', 1 ); + $this->criticalcss->log( 'criticalcss.com: API key is invalid, updating key status', 3 ); + } + + // Return the request body. + return $body; + } else { + // Log failed request with no response and return false. + $this->criticalcss->log( 'criticalcss.com: GET results request for remote job id <' . $jobid . '> has no response, this could be a service timeout', 2 ); + return false; + } + } + } + + public function ao_ccss_save_file( $ccss, $target, $review ) { + // Save critical CSS into the filesystem and return its filename + // Prepare review mark. + if ( $review ) { + $rmark = '_R'; + } else { + $rmark = ''; + } + + // Prepare target rule, filename and content. + $filename = false; + $content = $ccss; + + if ( $this->criticalcss->check_contents( $content ) ) { + // Sanitize content, set filename and try to save file. + $file = AO_CCSS_DIR . 'ccss_' . md5( $ccss . $target[1] ) . $rmark . '.css'; + $status = file_put_contents( $file, $content, LOCK_EX ); + $filename = pathinfo( $file, PATHINFO_BASENAME ); + $this->criticalcss->log( 'Critical CSS file for the rule <' . $target[0] . '|' . $target[1] . '> was saved as <' . $filename . '>, size in bytes is <' . $status . '>', 3 ); + + if ( ! $status ) { + // If file has not been saved, reset filename. + $this->criticalcss->log( 'Critical CSS file <' . $filename . '> could not be not saved', 2 ); + $filename = false; + return $filename; + } + } else { + $this->criticalcss->log( 'Critical CSS received did not pass content check', 2 ); + return $filename; + } + + // Remove old critical CSS if a previous one existed in the rule and if that file exists in filesystem + // Attach required arrays. + $rules = $this->criticalcss->get_option( 'rules' ); + + // Only proceed if the rule already existed. + if ( array_key_exists( $target[1], $rules[ $target[0] ] ) ) { + $srule = $rules[ $target[0] ][ $target[1] ]; + $oldfile = $srule['file']; + + if ( $oldfile && $oldfile !== $filename ) { + $delfile = AO_CCSS_DIR . $oldfile; + if ( file_exists( $delfile ) ) { + $unlinkst = unlink( $delfile ); + if ( $unlinkst ) { + $this->criticalcss->log( 'A previous critical CSS file <' . $oldfile . '> was removed for the rule <' . $target[0] . '|' . $target[1] . '>', 3 ); + } + } + } + } + + // Return filename or false. + return $filename; + } + + public function ao_ccss_rule_update( $ljid, $srule, $file, $hash ) { + // Update or create a rule + // Attach required arrays. + $rules = $this->criticalcss->get_option( 'rules' ); + + // Prepare rule variables. + $trule = explode( '|', $srule ); + if ( array_key_exists( $trule[1], $rules[ $trule[0] ] ) ) { + $rule = $rules[ $trule[0] ][ $trule[1] ]; + } else { + $rule = array(); + } + $action = false; + $rtype = ''; + + if ( is_array( $rule ) && array_key_exists( 'hash', $rule ) && 0 === $rule['hash'] && array_key_exists( 'file', $rule ) && 0 !== $rule['file'] ) { + // manual rule, don't ever overwrite. + $action = 'NOT UPDATED'; + $rtype = 'MANUAL'; + } elseif ( is_array( $rule ) && array_key_exists( 'hash', $rule ) && 0 === $rule['hash'] && array_key_exists( 'file', $rule ) && 0 === $rule['file'] ) { + // If this is an user created AUTO rule with no hash and file yet, update its hash and filename + // Set rule hash, file and action flag. + $rule['hash'] = $hash; + $rule['file'] = $file; + $action = 'UPDATED'; + $rtype = 'AUTO'; + } elseif ( is_array( $rule ) && array_key_exists( 'hash', $rule ) && 0 !== $rule['hash'] && ctype_alnum( $rule['hash'] ) ) { + // If this is an genuine AUTO rule, update its hash and filename + // Set rule hash, file and action flag. + $rule['hash'] = $hash; + $rule['file'] = $file; + $action = 'UPDATED'; + $rtype = 'AUTO'; + } else { + // If rule doesn't exist, create an AUTO rule + // AUTO rules were only for types, but will now also work for paths. + if ( ( 'types' == $trule[0] || 'paths' == $trule[0] ) && ! empty( $trule[1] ) ) { + // Set rule hash and file and action flag. + $rule['hash'] = $hash; + $rule['file'] = $file; + $action = 'CREATED'; + $rtype = 'AUTO'; + } else { + // Log that no rule was created. + $this->criticalcss->log( 'Exception, no AUTO rule created', 3 ); + } + } + + if ( $action ) { + // If a rule creation/update is required, persist updated rules object. + $rules[ $trule[0] ][ $trule[1] ] = $rule; + $rules_raw = json_encode( $rules ); + update_option( 'autoptimize_ccss_rules', $rules_raw ); + $this->criticalcss->flush_options(); + $this->criticalcss->log( 'Target rule <' . $srule . '> of type <' . $rtype . '> was ' . $action . ' for job id <' . $ljid . '>', 3 ); + + // and trigger action for whoever needs to be aware. + do_action( 'autoptimize_action_ccss_cron_rule_updated', $srule, $file, '' ); + } else { + $this->criticalcss->log( 'No rule action required', 3 ); + } + } + + function ao_ccss_finclude( $finclude_raw ) { + // Prepare forceInclude object. + if ( ! empty( $finclude_raw ) ) { + // If there are any content + // Convert raw string into arra and initialize the returning object. + $fincludes = explode( ',', $finclude_raw ); + $finclude = array(); + + // Interacts over every rule. + $i = 0; + foreach ( $fincludes as $include ) { + // Trim leading and trailing whitespaces. + $include = trim( $include ); + + if ( substr( $include, 0, 2 ) === '//' ) { + // Regex rule + // Format value as required. + $include = str_replace( '//', '/', $include ); + $include = $include . '/i'; + + // Store regex object. + $finclude[ $i ]['type'] = 'RegExp'; + $finclude[ $i ]['value'] = $include; + } else { + // Simple value rule. + $finclude[ $i ]['value'] = $include; + } + + $i++; + } + + // Return forceInclude object. + return $finclude; + } else { + // Or just return false if empty. + return false; + } + } + + public function ao_ccss_cleaning() { + // Perform plugin maintenance + // Truncate log file >= 1MB . + if ( file_exists( AO_CCSS_LOG ) ) { + if ( filesize( AO_CCSS_LOG ) >= 1048576 ) { + $logfile = fopen( AO_CCSS_LOG, 'w' ); + fclose( $logfile ); + } + } + + // Remove lock file. + if ( file_exists( AO_CCSS_LOCK ) ) { + unlink( AO_CCSS_LOCK ); + } + + // Make sure queue processing is scheduled, recreate if not. + if ( ! wp_next_scheduled( 'ao_ccss_queue' ) ) { + wp_schedule_event( time(), apply_filters( 'ao_ccss_queue_schedule', 'ao_ccss' ), 'ao_ccss_queue' ); + } + + // Queue cleaning. + $queue = $this->criticalcss->get_option( 'queue' ); + + if ( isset( $queue ) && is_array( $queue ) ) { + $queue_purge_threshold = 100; + $queue_purge_age = 24 * 60 * 60; + $queue_length = count( $queue ); + $timestamp_yesterday = microtime( true ) - $queue_purge_age; + $remove_old_new = false; + $queue_altered = false; + + if ( $queue_length > $queue_purge_threshold ) { + $remove_old_new = true; + } + + foreach ( $queue as $path => $job ) { + if ( ( $remove_old_new && 'NEW' == $job['jqstat'] && $job['jctime'] < $timestamp_yesterday ) || in_array( $job['jqstat'], array( 'JOB_FAILED', 'STATUS_JOB_BAD', 'NO_CSS', 'NO_RESPONSE' ) ) ) { + unset( $queue[ $path ] ); + $queue_altered = true; + } + } + + // save queue to options! + if ( $queue_altered ) { + $queue_raw = json_encode( $queue ); + update_option( 'autoptimize_ccss_queue', $queue_raw, false ); + $this->criticalcss->log( 'Queue cleaning done.', 3 ); + } + } + + // re-check key if invalid. + $keyst = $this->criticalcss->get_option( 'keyst' ); + if ( 1 == $keyst ) { + $this->ao_ccss_api_generate( '', '', '' ); + } + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSEnqueue.php b/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSEnqueue.php new file mode 100644 index 0000000..0b27add --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSEnqueue.php @@ -0,0 +1,335 @@ +criticalcss = autoptimize()->criticalcss(); + } + + public function ao_ccss_enqueue( $hash = '', $path = '', $type = 'is_page' ) { + // Get key status. + $key = $this->criticalcss->key_status( false ); + + // Queue is available to anyone... + $enqueue = true; + + // ... which are not the ones below. + if ( true === autoptimizeUtils::is_local_server() ) { + $enqueue = false; + $this->criticalcss->log( 'cant enqueue as local/ private', 3 ); + } elseif ( 'nokey' == $key['status'] || 'invalid' == $key['status'] ) { + $enqueue = false; + $this->criticalcss->log( 'Job queuing is not available: no valid API key found.', 3 ); + } elseif ( ! empty( $hash ) && ( is_user_logged_in() || is_feed() || is_404() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || $this->ao_ccss_ua() || false === apply_filters( 'autoptimize_filter_ccss_enqueue_should_enqueue', true ) ) ) { + $enqueue = false; + $this->criticalcss->log( 'Job queuing is not available for WordPress\'s logged in users, feeds, error pages, ajax calls or calls from criticalcss.com itself.', 3 ); + } elseif ( empty( $hash ) && empty( $path ) || ( ( 'is_single' !== $type ) && ( 'is_page' !== $type ) ) ) { + $enqueue = false; + $this->criticalcss->log( 'Forced job queuing failed, no path or not right type', 3 ); + } + + if ( ! $enqueue ) { + return; + } + + // Continue if queue is available + // Attach required arrays/ vars. + $rules = $this->criticalcss->get_option( 'rules' ); + $queue_raw = $this->criticalcss->get_option( 'queue_raw' ); + $queue = $this->criticalcss->get_option( 'queue' ); + $forcepath = $this->criticalcss->get_option( 'forcepath' ); + + // Get request path and page type, and initialize the queue update flag. + if ( ! empty( $hash ) ) { + $req_orig = $_SERVER['REQUEST_URI']; + $req_type = $this->ao_ccss_get_type(); + } elseif ( ! empty( $path ) ) { + $req_orig = $path; + if ( '/' === $path ) { + $req_type = 'is_front_page'; + } else { + $req_type = $type; + } + } + $req_path = strtok( $req_orig, '?' ); + + // now that we really have the path, check if there's no garbage in there (due to some themes serving a non 404 page even if the resource does not exist resulting in all sorts of nonsense rules). + if ( true === apply_filters( 'autoptimize_filter_ccss_enqueue_block_garbage' , true ) && str_ireplace( apply_filters( 'autoptimize_filter_ccss_enqueue_blocklist', array( '.php', 'data:text/javascript;base64', '/.', '/null', '.jpeg', '.jpg', '.png' ) ), '', $req_path ) !== $req_path ) { + $this->criticalcss->log( 'Job not enqueued looks like the path is just garbage; ' . $req_path, 3 ); + return; + } + + // Check if we have a lang param. we need to keep as WPML can switch languages based on that + // and that includes RTL -> LTR so diff. structure, so rules would be RTL vs LTR + // but this needs changes in the structure of the rule object so off by default for now + // as now this will simply result in conditional rules being overwritten. + if ( apply_filters( 'autoptimize_filter_ccss_coreenqueue_honor_lang', false ) && strpos( $req_orig, 'lang=' ) !== false ) { + $req_params = strtok( '?' ); + parse_str( $req_params, $req_params_arr ); + if ( array_key_exists( 'lang', $req_params_arr ) && ! empty( $req_params_arr['lang'] ) ) { + $req_path .= '?lang=' . $req_params_arr['lang']; + } + } + + $job_qualify = false; + $target_rule = false; + $rule_properties = false; + $queue_update = false; + + // Match for paths in rules. + foreach ( $rules['paths'] as $path => $props ) { + + // Prepare rule target and log. + $target_rule = 'paths|' . $path; + $this->criticalcss->log( 'Qualifying path <' . $req_path . '> for job submission by rule <' . $target_rule . '>', 3 ); + + // Path match + // -> exact match needed for AUTO rules + // -> partial match OK for MANUAL rules (which have empty hash and a file with CCSS). + if ( $path === $req_path || ( false == $props['hash'] && false != $props['file'] && preg_match( '|' . $path . '|', $req_path ) ) ) { + + // There's a path match in the rule, so job QUALIFIES with a path rule match. + $job_qualify = true; + $rule_properties = $props; + $this->criticalcss->log( 'Path <' . $req_path . '> QUALIFIED for job submission by rule <' . $target_rule . '>', 3 ); + + // Stop processing other path rules. + break; + } + } + + // Match for types in rules if no path rule matches and if we're not enforcing paths. + if ( '' !== $hash && ! $job_qualify && ( ! $forcepath || ! in_array( $req_type, apply_filters( 'autoptimize_filter_ccss_coreenqueue_forcepathfortype', array( 'is_page' ) ) ) || ! apply_filters( 'autoptimize_filter_ccss_coreenqueue_ignorealltypes', false ) ) ) { + foreach ( $rules['types'] as $type => $props ) { + + // Prepare rule target and log. + $target_rule = 'types|' . $type; + $this->criticalcss->log( 'Qualifying page type <' . $req_type . '> on path <' . $req_path . '> for job submission by rule <' . $target_rule . '>', 3 ); + + if ( $req_type == $type ) { + // Type match. + // There's a type match in the rule, so job QUALIFIES with a type rule match. + $job_qualify = true; + $rule_properties = $props; + $this->criticalcss->log( 'Page type <' . $req_type . '> on path <' . $req_path . '> QUALIFIED for job submission by rule <' . $target_rule . '>', 3 ); + + // Stop processing other type rules. + break; + } + } + } + + if ( $job_qualify && ( ( false == $rule_properties['hash'] && false != $rule_properties['file'] ) || strpos( $req_type, 'template_' ) !== false ) ) { + // If job qualifies but rule hash is false and file isn't false (MANUAL rule) or if template, job does not qualify despite what previous evaluations says. + $job_qualify = false; + $this->criticalcss->log( 'Job submission DISQUALIFIED by MANUAL rule <' . $target_rule . '> with hash <' . $rule_properties['hash'] . '> and file <' . $rule_properties['file'] . '>', 3 ); + } elseif ( ! $job_qualify && empty( $rule_properties ) ) { + // But if job does not qualify and rule properties are set, job qualifies as there is no matching rule for it yet + // Fill-in the new target rule. + $job_qualify = true; + + // Should we switch to path-base AUTO-rules? Conditions: + // 1. forcepath option has to be enabled (off by default) + // 2. request type should be (by default, but filterable) one of is_page (removed for now: woo_is_product or woo_is_product_category). + if ( ( $forcepath && in_array( $req_type, apply_filters( 'autoptimize_filter_ccss_coreenqueue_forcepathfortype', array( 'is_page' ) ) ) ) || apply_filters( 'autoptimize_filter_ccss_coreenqueue_ignorealltypes', false ) || empty( $hash ) ) { + if ( '/' !== $req_path ) { + $target_rule = 'paths|' . $req_path; + } else { + // Exception; we don't want a path-based rule for "/" as that messes things up, hard-switch this to a type-based is_front_page rule. + $target_rule = 'types|' . 'is_front_page'; + } + } else { + $target_rule = 'types|' . $req_type; + } + $this->criticalcss->log( 'Job submission QUALIFIED by MISSING rule for page type <' . $req_type . '> on path <' . $req_path . '>, new rule target is <' . $target_rule . '>', 3 ); + } else { + // Or just log a job qualified by a matching rule. + $this->criticalcss->log( 'Job submission QUALIFIED by AUTO rule <' . $target_rule . '> with hash <' . $rule_properties['hash'] . '> and file <' . $rule_properties['file'] . '>', 3 ); + } + + // Submit job. + if ( $job_qualify ) { + if ( ! array_key_exists( $req_path, $queue ) ) { + // This is a NEW job + // Merge job into the queue. + $queue[ $req_path ] = $this->ao_ccss_define_job( + $req_path, + $target_rule, + $req_type, + $hash, + null, + null, + null, + null, + true + ); + // Set update flag. + $queue_update = true; + } else { + // This is an existing job + // The job is still NEW, most likely this is extra CSS file for the same page that needs a hash. + if ( 'NEW' == $queue[ $req_path ]['jqstat'] ) { + // Add hash if it's not already in the job. + if ( ! in_array( $hash, $queue[ $req_path ]['hashes'] ) ) { + // Push new hash to its array and update flag. + $queue_update = array_push( $queue[ $req_path ]['hashes'], $hash ); + + // Log job update. + $this->criticalcss->log( 'Hashes UPDATED on local job id <' . $queue[ $req_path ]['ljid'] . '>, job status NEW, target rule <' . $queue[ $req_path ]['rtarget'] . '>, hash added: ' . $hash, 3 ); + + // Return from here as the hash array is already updated. + return true; + } + } elseif ( 'NEW' != $queue[ $req_path ]['jqstat'] && 'JOB_QUEUED' != $queue[ $req_path ]['jqstat'] && 'JOB_ONGOING' != $queue[ $req_path ]['jqstat'] ) { + // Allow requeuing jobs that are not NEW, JOB_QUEUED or JOB_ONGOING + // Merge new job keeping some previous job values. + $queue[ $req_path ] = $this->ao_ccss_define_job( + $req_path, + $target_rule, + $req_type, + $hash, + $queue[ $req_path ]['file'], + $queue[ $req_path ]['jid'], + $queue[ $req_path ]['jrstat'], + $queue[ $req_path ]['jvstat'], + false + ); + // Set update flag. + $queue_update = true; + } + } + + if ( $queue_update ) { + // Persist the job to the queue and return. + $queue_raw = json_encode( $queue ); + update_option( 'autoptimize_ccss_queue', $queue_raw, false ); + $this->criticalcss->flush_options(); + return true; + } else { + // Or just return false if no job was added. + $this->criticalcss->log( 'A job for path <' . $req_path . '> already exist with NEW or PENDING status, skipping job creation', 3 ); + return false; + } + } + } + + public function ao_ccss_get_type() { + // Get the type of a page + // Attach the conditional tags array. + $types = $this->criticalcss->get_types(); + $forcepath = $this->criticalcss->get_option( 'forcepath' ); + + // By default, a page type is false. + $page_type = false; + + // Iterates over the array to match a type. + foreach ( $types as $type ) { + if ( is_404() ) { + $page_type = 'is_404'; + break; + } elseif ( is_front_page() ) { + // identify frontpage immediately to avoid it also matching a CPT or template. + $page_type = 'is_front_page'; + break; + } elseif ( strpos( $type, 'custom_post_' ) !== false && ( ! $forcepath || ! is_page() ) && is_singular() ) { + // Match custom post types and not page or page not forced to path-based. + if ( get_post_type( get_the_ID() ) === substr( $type, 12 ) ) { + $page_type = $type; + break; + } + } elseif ( strpos( $type, 'template_' ) !== false && ( ! $forcepath || ! is_page() ) ) { + // Match templates if not page or if page is not forced to path-based. + if ( is_page_template( substr( $type, 9 ) ) ) { + $page_type = $type; + break; + } + } else { + // Match all other existing types + // but remove prefix to be able to check if the function exists & returns true. + $_type = str_replace( array( 'woo_', 'bp_', 'bbp_', 'edd_' ), '', $type ); + if ( function_exists( $_type ) && call_user_func( $_type ) ) { + // Make sure we only return for one page, not for the "paged pages" (/page/2 ..). + if ( ! is_page() || ! is_paged() ) { + $page_type = $type; + break; + } + } + } + } + + // Return the page type. + return $page_type; + } + + public function ao_ccss_define_job( $path, $target, $type, $hash, $file, $jid, $jrstat, $jvstat, $create ) { + // Define a job entry to be created or updated + // Define commom job properties. + $path = array(); + $path['ljid'] = $this->ao_ccss_job_id(); + $path['rtarget'] = $target; + $path['ptype'] = $type; + $path['hashes'] = array( $hash ); + $path['hash'] = $hash; + $path['file'] = $file; + $path['jid'] = $jid; + $path['jqstat'] = 'NEW'; + $path['jrstat'] = $jrstat; + $path['jvstat'] = $jvstat; + $path['jctime'] = microtime( true ); + $path['jftime'] = null; + + // Set operation requested. + if ( $create ) { + $operation = 'CREATED'; + } else { + $operation = 'UPDATED'; + } + + // Log job creation. + $this->criticalcss->log( 'Job ' . $operation . ' with local job id <' . $path['ljid'] . '> for target rule <' . $target . '>', 3 ); + + return $path; + } + + public function ao_ccss_job_id( $length = 6 ) { + // Generate random strings for the local job ID + // Based on https://stackoverflow.com/a/4356295 . + $characters = '0123456789abcdefghijklmnopqrstuvwxyz'; + $characters_length = strlen( $characters ); + $random_string = 'j-'; + for ( $i = 0; $i < $length; $i++ ) { + $random_string .= $characters[ rand( 0, $characters_length - 1 ) ]; + } + return $random_string; + } + + public function ao_ccss_ua() { + // Check for criticalcss.com user agent. + $agent = ''; + if ( isset( $_SERVER['HTTP_USER_AGENT'] ) ) { + $agent = $_SERVER['HTTP_USER_AGENT']; + } + + // Check for UA and return TRUE when criticalcss.com is the detected UA, false when not. + $rtn = strpos( $agent, AO_CCSS_URL ); + if ( 0 === $rtn ) { + $rtn = true; + } else { + $rtn = false; + } + return ( $rtn ); + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSSettings.php b/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSSettings.php new file mode 100644 index 0000000..4d81c4b --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSSettings.php @@ -0,0 +1,433 @@ +criticalcss = autoptimize()->criticalcss(); + $this->settings_screen_do_remote_http = apply_filters( 'autoptimize_settingsscreen_remotehttp', $this->settings_screen_do_remote_http ); + $this->run(); + } + + protected function enabled() + { + return apply_filters( 'autoptimize_filter_show_criticalcss_tabs', true ); + } + + public function run() + { + if ( $this->enabled() ) { + add_filter( 'autoptimize_filter_settingsscreen_tabs', array( $this, 'add_critcss_tabs' ), 10, 1 ); + add_action( 'admin_enqueue_scripts', array( $this, 'admin_assets' ) ); + + if ( $this->is_multisite_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network() ) { + add_action( 'network_admin_menu', array( $this, 'add_critcss_admin_menu' ) ); + } else { + add_action( 'admin_menu', array( $this, 'add_critcss_admin_menu' ) ); + } + + $criticalcss_ajax = new autoptimizeCriticalCSSSettingsAjax(); + + // if debug logging is off but the file is present, then remove the debug log file. + if ( empty( $this->criticalcss->get_option( 'debug' ) ) && file_exists( AO_CCSS_LOG ) ) { + unlink( AO_CCSS_LOG ); + } + } + } + + public function add_critcss_tabs( $in ) + { + $in = array_merge( $in, array( 'ao_critcss' => apply_filters( 'autoptimize_filter_ccss_tab_text', '⚡ ' . esc_html__( 'Critical CSS', 'autoptimize' ) ) ) ); + + return $in; + } + + public function add_critcss_admin_menu() + { + // Register settings. + register_setting( 'ao_ccss_options_group', 'autoptimize_css_defer_inline' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_rules' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_additional' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_queue' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_viewport' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_finclude' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_rtimelimit' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_noptimize' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_debug' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_key' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_keyst' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_loggedin' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_forcepath' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_deferjquery' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_domain' ); + register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_unloadccss' ); + + // And add submenu-page. + add_submenu_page( '', 'Critical CSS', 'Critical CSS', 'manage_options', 'ao_critcss', array( $this, 'ao_criticalcsssettings_page' ) ); + } + + public function admin_assets( $hook ) { + // Return if plugin is not hooked. + if ( 'settings_page_ao_critcss' != $hook && 'admin_page_ao_critcss' != $hook ) { + return; + } + + // Stylesheets to add. + wp_enqueue_style( 'wp-jquery-ui-dialog' ); + wp_enqueue_style( 'ao-tablesorter', plugins_url( 'critcss-inc/css/ao-tablesorter/style.css', __FILE__ ), null, AUTOPTIMIZE_PLUGIN_VERSION ); + wp_enqueue_style( 'ao-ccss-admin-css', plugins_url( 'critcss-inc/css/admin_styles.css', __FILE__ ), null, AUTOPTIMIZE_PLUGIN_VERSION ); + + // Scripts to add. + wp_enqueue_script( 'jquery-ui-dialog', '', array( 'jquery' ), null, true ); + wp_enqueue_script( 'md5', plugins_url( 'critcss-inc/js/md5.min.js', __FILE__ ), null, AUTOPTIMIZE_PLUGIN_VERSION, true ); + wp_enqueue_script( 'tablesorter', plugins_url( 'critcss-inc/js/jquery.tablesorter.min.js', __FILE__ ), array( 'jquery' ), AUTOPTIMIZE_PLUGIN_VERSION, true ); + wp_enqueue_script( 'ao-ccss-admin-license', plugins_url( 'critcss-inc/js/admin_settings.js', __FILE__ ), array( 'jquery' ), AUTOPTIMIZE_PLUGIN_VERSION, true ); + } + + public function ao_criticalcsssettings_page() + { + // these are not OO yet, simply require for now. + require_once( 'critcss-inc/admin_settings_rules.php' ); + require_once( 'critcss-inc/admin_settings_queue.php' ); + require_once( 'critcss-inc/admin_settings_key.php' ); + require_once( 'critcss-inc/admin_settings_adv.php' ); + require_once( 'critcss-inc/admin_settings_explain.php' ); + + $ao_ccss_key = $this->criticalcss->get_option( 'key' ); + $ao_ccss_keyst = $this->criticalcss->get_option( 'keyst' ); + $ao_css_defer = $this->criticalcss->get_option( 'css_defer' ); + $ao_ccss_deferjquery = $this->criticalcss->get_option( 'deferjquery' ); + $ao_ccss_queue = $this->criticalcss->get_option( 'queue' ); + $ao_ccss_rules = $this->criticalcss->get_option( 'rules' ); + $ao_ccss_servicestatus = $this->criticalcss->get_option( 'servicestatus' ); + $ao_ccss_finclude = $this->criticalcss->get_option( 'finclude' ); + $ao_ccss_rtimelimit = $this->criticalcss->get_option( 'rtimelimit' ); + $ao_ccss_debug = $this->criticalcss->get_option( 'debug' ); + $ao_ccss_noptimize = $this->criticalcss->get_option( 'noptimize' ); + $ao_css_defer_inline = $this->criticalcss->get_option( 'css_defer_inline' ); + $ao_ccss_loggedin = $this->criticalcss->get_option( 'loggedin' ); + $ao_ccss_forcepath = $this->criticalcss->get_option( 'forcepath' ); + $ao_ccss_domain = $this->criticalcss->get_option( 'domain' ); + ?> + +
+
+
+

+
+ + +

+ +

+ criticalcss->create_ao_ccss_dir(); + + // Warn if we could not create those files. + if ( ( true !== $mkdirresult ) ) { + ?> +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ microtime( true ) - 60 * 60 * 4 ) { + $_jobs_too_old = false; + } + + if ( $_jobs_all_new && ! $this->ao_ccss_has_autorules() && $_jobs_too_old ) { + $_warn_cron = 'on'; + $_transient_multiplier = 1; // store for 1 hour. + } else { + $_warn_cron = 'off'; + $_transient_multiplier = 4; // store for 4 hours. + } + // and set transient. + set_transient( 'ao_ccss_cronwarning', $_warn_cron, $_transient_multiplier * HOUR_IN_SECONDS ); + } + + if ( ! empty( $ao_ccss_key ) && 'on' == $_warn_cron && PAnD::is_admin_notice_active( 'i-know-about-cron-30' ) ) { + ?> +

+ the FAQ or the info in the Job Queue instructions if all jobs remain in "N" status and no rules are created.', 'autoptimize' ); + ?> +

+ ao_ccss_has_autorules() ) { + ?> +

+ edit default rule CSS now, to avoid all CSS being inlined when no (applicable) rules are found.', 'autoptimize' ); + ?> +

+ +

+ +

+ apply_filters( 'autoptimize_ccss_rules_length_warning', 500000 ) ) { + ?> +

+ +

+ +
+ criticalcss->key_status( true ); + + if ( $this->is_multisite_network_admin() ) { + ?> +
    +
  • + Critical CSS settings cannot be set at network level as critical CSS is specific to each sub-site.

    You can however provide the critical CSS API key for use by all sites by adding this your wp-config.php as %s

    ', 'autoptimize' ), '
    define(\'AUTOPTIMIZE_CRITICALCSS_API_KEY\', \'eyJhbGmorestringsherexHa7MkOQFtDFkZgLmBLe-LpcHx4\');' ); + ?> +
  • +
+ "; + } + + // But if key is other than valid, add hidden fields to persist settings when submitting form + // Show explanation of why and how to get a API key. + ao_ccss_render_explain(); + + // Get viewport size. + $viewport = $this->criticalcss->viewport(); + + // Add hidden fields. + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + // Render key panel unconditionally. + ao_ccss_render_key( $ao_ccss_key, $key['status'], $key['stmsg'], $key['msg'], $key['color'] ); + ?> +

+ +

+ +
+ +
is_multisite_network_admin() ) { echo ' class="hidden"'; } // @codingStandardsIgnoreLine ?>> + + + +
+
+
+
+ is_multisite_network_admin() ) { + // Include debug panel if debug mode is enable. + if ( $ao_ccss_debug ) { + ?> +
+ +
+ '; + include( 'critcss-inc/admin_settings_rules.js.php' ); + include( 'critcss-inc/admin_settings_queue.js.php' ); + include( 'critcss-inc/admin_settings_impexp.js.php' ); + echo ''; + } + } + + public function ao_ccss_has_autorules() { + static $_has_auto_rules = null; + + if ( null === $_has_auto_rules ) { + $ao_ccss_rules = $this->criticalcss->get_option( 'rules' ); + $_has_auto_rules = false; + if ( ! empty( $ao_ccss_rules ) ) { + foreach ( array( 'types', 'paths' ) as $_typat ) { + foreach ( $ao_ccss_rules[ $_typat ] as $rule ) { + if ( ! empty( $rule['hash'] ) ) { + // we have at least one AUTO job, so all is fine. + $_has_auto_rules = true; + break; + } + } + if ( $_has_auto_rules ) { + break; + } + } + } + } + + return $_has_auto_rules; + } + + public static function is_multisite_network_admin() { + static $_multisite_network_admin = null; + + if ( null === $_multisite_network_admin ) { + if ( is_multisite() && is_network_admin() ) { + $_multisite_network_admin = true; + } else { + $_multisite_network_admin = false; + } + } + + return $_multisite_network_admin; + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSSettingsAjax.php b/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSSettingsAjax.php new file mode 100644 index 0000000..e2c283f --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeCriticalCSSSettingsAjax.php @@ -0,0 +1,597 @@ +criticalcss = autoptimize()->criticalcss(); + $this->run(); + } + + public function run() { + // add filters. + add_action( 'wp_ajax_fetch_critcss', array( $this, 'critcss_fetch_callback' ) ); + add_action( 'wp_ajax_save_critcss', array( $this, 'critcss_save_callback' ) ); + add_action( 'wp_ajax_rm_critcss', array( $this, 'critcss_rm_callback' ) ); + add_action( 'wp_ajax_rm_critcss_all', array( $this, 'critcss_rm_all_callback' ) ); + add_action( 'wp_ajax_ao_ccss_export', array( $this, 'ao_ccss_export_callback' ) ); + add_action( 'wp_ajax_ao_ccss_import', array( $this, 'ao_ccss_import_callback' ) ); + add_action( 'wp_ajax_ao_ccss_queuerunner', array( $this, 'ao_ccss_queuerunner_callback' ) ); + add_action( 'wp_ajax_ao_ccss_saverules', array( $this, 'ao_ccss_saverules_callback' ) ); + } + + public function critcss_fetch_callback() { + // Ajax handler to obtain a critical CSS file from the filesystem. + // Check referer. + check_ajax_referer( 'fetch_critcss_nonce', 'critcss_fetch_nonce' ); + + // Initialize error flag. + $error = true; + + // Allow no content for MANUAL rules (as they may not exist just yet). + if ( current_user_can( 'manage_options' ) && empty( $_POST['critcssfile'] ) ) { + $content = ''; + $error = false; + } elseif ( current_user_can( 'manage_options' ) && $this->critcss_check_filename( $_POST['critcssfile'] ) ) { + // Or check user permissios and filename. + // Set file path and obtain its content. + $critcssfile = AO_CCSS_DIR . strip_tags( $_POST['critcssfile'] ); + if ( file_exists( $critcssfile ) ) { + $content = file_get_contents( $critcssfile ); + $error = false; + } + } + + // Prepare response. + if ( $error ) { + $response['code'] = '500'; + $response['string'] = 'Error reading file ' . $critcssfile . '.'; + } else { + $response['code'] = '200'; + $response['string'] = $content; + } + + // Dispatch respose. + echo json_encode( $response ); + + // Close ajax request. + wp_die(); + } + + public function critcss_save_callback() { + $error = false; + $status = false; + $response = array(); + + // Ajax handler to write a critical CSS to the filesystem + // Check referer. + check_ajax_referer( 'save_critcss_nonce', 'critcss_save_nonce' ); + + // Allow empty contents for MANUAL rules (as they are fetched later). + if ( current_user_can( 'manage_options' ) && empty( $_POST['critcssfile'] ) ) { + $critcssfile = false; + $status = true; + } elseif ( current_user_can( 'manage_options' ) && $this->critcss_check_filename( $_POST['critcssfile'] ) ) { + // Or check user permissios and filename + // Set critical CSS content. + $critcsscontents = stripslashes( $_POST['critcsscontents'] ); + + // If there is content and it's valid, write the file. + if ( $critcsscontents && $this->criticalcss->check_contents( $critcsscontents ) ) { + // Set file path and status. + $critcssfile = AO_CCSS_DIR . strip_tags( $_POST['critcssfile'] ); + $status = file_put_contents( $critcssfile, $critcsscontents, LOCK_EX ); + // Or set as error. + } else { + $error = true; + $critcssfile = 'CCSS content not acceptable.'; + } + // Or just set an error. + } else { + $error = true; + $critcssfile = 'Not allowed or problem with CCSS filename.'; + } + + // Prepare response. + if ( ! $status || $error ) { + $response['code'] = '500'; + $response['string'] = 'Error saving file ' . $critcssfile . '.'; + } else { + $response['code'] = '200'; + if ( $critcssfile ) { + $response['string'] = 'File ' . $critcssfile . ' saved.'; + + if ( true === apply_filters( 'autoptimize_filter_ccss_ajax_do_actions', true ) ) { + $rule_identifiers = $this->fetch_rule_from_ccssfile( $critcssfile ); + if ( ! empty( $rule_identifiers ) && is_array( $rule_identifiers ) ) { + do_action( 'autoptimize_action_ccss_ajax_css_changed', $rule_identifiers[0], $critcssfile, $rule_identifiers[1] ); + } + } + } else { + $response['string'] = 'Empty content does not need to be saved.'; + } + } + + // Dispatch respose. + echo json_encode( $response ); + + // Close ajax request. + wp_die(); + } + + public function critcss_rm_callback() { + // Ajax handler to delete a critical CSS from the filesystem + // Check referer. + check_ajax_referer( 'rm_critcss_nonce', 'critcss_rm_nonce' ); + + // Initialize error and status flags. + $error = true; + $status = false; + + // Allow no file for MANUAL rules (as they may not exist just yet). + if ( current_user_can( 'manage_options' ) && empty( $_POST['critcssfile'] ) ) { + $error = false; + } elseif ( current_user_can( 'manage_options' ) && $this->critcss_check_filename( $_POST['critcssfile'] ) ) { + // Or check user permissios and filename + // Set file path and delete it. + $critcssfile = AO_CCSS_DIR . strip_tags( $_POST['critcssfile'] ); + if ( file_exists( $critcssfile ) ) { + $status = unlink( $critcssfile ); + $error = false; + } + } + + // Prepare response. + if ( $error ) { + $response['code'] = '500'; + $response['string'] = 'Error removing file ' . $critcssfile . '.'; + } else { + $response['code'] = '200'; + if ( $status ) { + $response['string'] = 'File ' . $critcssfile . ' removed.'; + + if ( true === apply_filters( 'autoptimize_filter_ccss_ajax_do_actions', true ) ) { + $rule_identifiers = $this->fetch_rule_from_ccssfile( $critcssfile ); + if ( ! empty( $rule_identifiers ) && is_array( $rule_identifiers ) ) { + do_action( 'autoptimize_action_ccss_ajax_css_removed', $rule_identifiers[0], $critcssfile, $rule_identifiers[1] ); + } + } + } else { + $response['string'] = 'No file to be removed.'; + } + } + + // Dispatch respose. + echo json_encode( $response ); + + // Close ajax request. + wp_die(); + } + + public function critcss_rm_all_callback() { + // Ajax handler to delete a critical CSS from the filesystem + // Check referer. + check_ajax_referer( 'rm_critcss_all_nonce', 'critcss_rm_all_nonce' ); + + // Initialize error and status flags. + $error = true; + $status = false; + + // Remove all ccss files on filesystem. + if ( current_user_can( 'manage_options' ) ) { + if ( file_exists( AO_CCSS_DIR ) && is_dir( AO_CCSS_DIR ) ) { + array_map( 'unlink', glob( AO_CCSS_DIR . 'ccss_*.css', GLOB_BRACE ) ); + $error = false; + $status = true; + + if ( true === apply_filters( 'autoptimize_filter_ccss_ajax_do_actions', true ) ) { + do_action( 'autoptimize_action_ccss_ajax_all_css_removed' ); + } + } + } + + // Prepare response. + if ( $error ) { + $response['code'] = '500'; + $response['string'] = 'Error removing all critical CSS files.'; + } else { + $response['code'] = '200'; + if ( $status ) { + $response['string'] = 'Critical CSS Files removed.'; + } else { + $response['string'] = 'No file removed.'; + } + } + + // Dispatch respose. + echo json_encode( $response ); + + // Close ajax request. + wp_die(); + } + + public function ao_ccss_export_callback() { + // Ajax handler export settings + // Check referer. + check_ajax_referer( 'ao_ccss_export_nonce', 'ao_ccss_export_nonce' ); + + if ( ! class_exists( 'ZipArchive' ) ) { + $response['code'] = '500'; + $response['msg'] = 'PHP ZipArchive not present, cannot create zipfile'; + echo json_encode( $response ); + wp_die(); + } + + // Init array, get options and prepare the raw object. + $settings = array(); + + // CCSS settings. + $settings['ccss']['rules'] = get_option( 'autoptimize_ccss_rules' ); + $settings['ccss']['additional'] = get_option( 'autoptimize_ccss_additional' ); + $settings['ccss']['viewport'] = get_option( 'autoptimize_ccss_viewport' ); + $settings['ccss']['finclude'] = get_option( 'autoptimize_ccss_finclude' ); + $settings['ccss']['rtimelimit'] = get_option( 'autoptimize_ccss_rtimelimit' ); + $settings['ccss']['noptimize'] = get_option( 'autoptimize_ccss_noptimize' ); + $settings['ccss']['debug'] = get_option( 'autoptimize_ccss_debug' ); + $settings['ccss']['key'] = get_option( 'autoptimize_ccss_key' ); + $settings['ccss']['deferjquery'] = get_option( 'autoptimize_ccss_deferjquery' ); + $settings['ccss']['domain'] = get_option( 'autoptimize_ccss_domain' ); + $settings['ccss']['forcepath'] = get_option( 'autoptimize_ccss_forcepath' ); + $settings['ccss']['loggedin'] = get_option( 'autoptimize_ccss_loggedin' ); + $settings['ccss']['rlimit'] = get_option( 'autoptimize_ccss_rlimit' ); + $settings['ccss']['unloadccss'] = get_option( 'autoptimize_ccss_unloadccss' ); + + // JS settings. + $settings['js']['root'] = get_option( 'autoptimize_js' ); + $settings['js']['aggregate'] = get_option( 'autoptimize_js_aggregate' ); + $settings['js']['defer_not_aggregate'] = get_option( 'autoptimize_js_defer_not_aggregate' ); + $settings['js']['defer_inline'] = get_option( 'autoptimize_js_defer_inline' ); + $settings['js']['exclude'] = get_option( 'autoptimize_js_exclude' ); + $settings['js']['forcehead'] = get_option( 'autoptimize_js_forcehead' ); + $settings['js']['justhead'] = get_option( 'autoptimize_js_justhead' ); + $settings['js']['trycatch'] = get_option( 'autoptimize_js_trycatch' ); + $settings['js']['include_inline'] = get_option( 'autoptimize_js_include_inline' ); + + // CSS settings. + $settings['css']['root'] = get_option( 'autoptimize_css' ); + $settings['css']['aggregate'] = get_option( 'autoptimize_css_aggregate' ); + $settings['css']['datauris'] = get_option( 'autoptimize_css_datauris' ); + $settings['css']['justhead'] = get_option( 'autoptimize_css_justhead' ); + $settings['css']['defer'] = get_option( 'autoptimize_css_defer' ); + $settings['css']['defer_inline'] = get_option( 'autoptimize_css_defer_inline' ); + $settings['css']['inline'] = get_option( 'autoptimize_css_inline' ); + $settings['css']['exclude'] = get_option( 'autoptimize_css_exclude' ); + $settings['css']['include_inline'] = get_option( 'autoptimize_css_include_inline' ); + + // Others. + $settings['other']['autoptimize_imgopt_settings'] = get_option( 'autoptimize_imgopt_settings' ); + $settings['other']['autoptimize_extra_settings'] = get_option( 'autoptimize_extra_settings' ); + $settings['other']['autoptimize_cache_fallback'] = get_option( 'autoptimize_cache_fallback' ); + $settings['other']['autoptimize_cache_nogzip'] = get_option( 'autoptimize_cache_nogzip' ); + $settings['other']['autoptimize_cdn_url'] = get_option( 'autoptimize_cdn_url' ); + $settings['other']['autoptimize_enable_meta_ao_settings'] = get_option( 'autoptimize_enable_meta_ao_settings' ); + $settings['other']['autoptimize_enable_site_config'] = get_option( 'autoptimize_enable_site_config' ); + $settings['other']['autoptimize_html'] = get_option( 'autoptimize_html' ); + $settings['other']['autoptimize_html_keepcomments'] = get_option( 'autoptimize_html_keepcomments' ); + $settings['other']['autoptimize_minify_excluded'] = get_option( 'autoptimize_minify_excluded' ); + $settings['other']['autoptimize_optimize_checkout'] = get_option( 'autoptimize_optimize_checkout' ); + $settings['other']['autoptimize_optimize_logged'] = get_option( 'autoptimize_optimize_logged' ); + + if ( defined( 'AO_PRO_VERSION' ) ) { + $settings['pro']['boosters'] = get_option( 'autoptimize_pro_boosters' ); + $settings['pro']['pagecache'] = get_option( 'autoptimize_pro_pagecache' ); + } + + // Initialize error flag. + $error = true; + + // Check user permissions. + if ( current_user_can( 'manage_options' ) ) { + // Prepare settings file path and content. + $exportfile = AO_CCSS_DIR . 'settings.json'; + $contents = json_encode( $settings ); + $status = file_put_contents( $exportfile, $contents, LOCK_EX ); + $error = false; + } + + // Prepare archive. + $zipfile = AO_CCSS_DIR . str_replace( array( '.', '/' ), '_', parse_url( AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST ) ) . '_' . date( 'Ymd-H\hi' ) . '_ao_ccss_settings.zip'; // @codingStandardsIgnoreLine + $file = pathinfo( $zipfile, PATHINFO_BASENAME ); + $zip = new ZipArchive(); + $ret = $zip->open( $zipfile, ZipArchive::CREATE ); + if ( true !== $ret ) { + $error = true; + } else { + $zip->addFile( AO_CCSS_DIR . 'settings.json', 'settings.json' ); + if ( file_exists( AO_CCSS_DIR . 'queue.json' ) ) { + $zip->addFile( AO_CCSS_DIR . 'queue.json', 'queue.json' ); + } + $options = array( + 'add_path' => './', + 'remove_all_path' => true, + ); + $zip->addGlob( AO_CCSS_DIR . '*.css', 0, $options ); + $zip->close(); + } + + // settings.json has been added to zipfile, so can be removed now. + if ( file_exists( $exportfile ) ) { + unlink( $exportfile ); + } + + // Prepare response. + if ( ! $status || $error ) { + $response['code'] = '500'; + $response['msg'] = 'Error saving file ' . $file . ', code: ' . $ret; + } else { + $response['code'] = '200'; + $response['msg'] = 'File ' . $file . ' saved.'; + $response['file'] = $file; + } + + // Dispatch respose. + echo json_encode( $response ); + + // Close ajax request. + wp_die(); + } + + public function ao_ccss_import_callback() { + // Ajax handler import settings + // Check referer. + check_ajax_referer( 'ao_ccss_import_nonce', 'ao_ccss_import_nonce' ); + + // Initialize error flag. + $error = false; + + // Process an uploaded file with no errors. + if ( current_user_can( 'manage_options' ) && ! $_FILES['file']['error'] && $_FILES['file']['size'] < 500001 && strpos( $_FILES['file']['name'], '.zip' ) === strlen( $_FILES['file']['name'] ) - 4 ) { + // create tmp dir with hard guess name in AO_CCSS_DIR. + $_secret_dir = wp_hash( uniqid( md5( AUTOPTIMIZE_CACHE_URL ), true ) ); + $_import_tmp_dir = trailingslashit( AO_CCSS_DIR . $_secret_dir ); + mkdir( $_import_tmp_dir, 0774, true ); + + // Save file to that tmp directory but give it our own name to prevent directory traversal risks when using original name. + $zipfile = $_import_tmp_dir . uniqid( 'import_settings-', true ) . '.zip'; + move_uploaded_file( $_FILES['file']['tmp_name'], $zipfile ); + + // Extract archive in the tmp directory. + $zip = new ZipArchive; + if ( $zip->open( $zipfile ) === true ) { + // loop through all files in the zipfile. + for ( $i = 0; $i < $zip->numFiles; $i++ ) { // @codingStandardsIgnoreLine + // but only extract known good files. + if ( preg_match( '/^settings\.json$|^\.\/ccss_[a-z0-9]{32}\.css$/', $zip->getNameIndex( $i ) ) > 0 ) { + $zip->extractTo( AO_CCSS_DIR, $zip->getNameIndex( $i ) ); + } + } + $zip->close(); + } else { + $error = 'could not extract'; + } + + // and remove temp. dir with all contents (the import-zipfile). + $this->rrmdir( $_import_tmp_dir ); + + if ( ! $error ) { + // Archive extraction ok, continue importing settings from AO_CCSS_DIR. + // Settings file. + $importfile = AO_CCSS_DIR . 'settings.json'; + + if ( file_exists( $importfile ) ) { + // Get settings and turn them into an object. + $settings = json_decode( file_get_contents( $importfile ), true ); + + // Update options from settings, but only for known options. + // CCSS. + foreach ( array( 'rules', 'additional', 'viewport', 'finclude', 'rtimelimit', 'noptimize', 'debug', 'key', 'deferjquery', 'domain', 'forcepath', 'loggedin', 'rlimit', 'unloadccss' ) as $ccss_setting ) { + if ( false === array_key_exists( 'ccss', $settings ) || false === array_key_exists( $ccss_setting, $settings['ccss'] ) ) { + continue; + } else { + update_option( 'autoptimize_ccss_' . $ccss_setting, autoptimizeUtils::strip_tags_array( $settings['ccss'][ $ccss_setting ] ) ); + } + } + + // JS. + foreach ( array( 'root', 'aggregate', 'defer_not_aggregate', 'defer_inline', 'exclude', 'forcehead', 'trycatch', 'include_inline' ) as $js_setting ) { + if ( false === array_key_exists( 'js', $settings ) || false === array_key_exists( $js_setting, $settings['js'] ) ) { + continue; + } else if ( 'root' === $js_setting ) { + update_option( 'autoptimize_js', $settings['js']['root'] ); + } else { + update_option( 'autoptimize_js_' . $js_setting, $settings['js'][ $js_setting ] ); + } + } + + // CSS. + foreach ( array( 'root', 'aggregate', 'datauris', 'justhead', 'defer', 'defer_inline', 'inline', 'exclude', 'include_inline' ) as $css_setting ) { + if ( false === array_key_exists( 'css', $settings ) || false === array_key_exists( $css_setting, $settings['css'] ) ) { + continue; + } else if ( 'root' === $css_setting ) { + update_option( 'autoptimize_css', $settings['css']['root'] ); + } else { + update_option( 'autoptimize_css_' . $css_setting, $settings['css'][ $css_setting ] ); + } + } + + // Other. + foreach ( array( 'autoptimize_imgopt_settings', 'autoptimize_extra_settings', 'autoptimize_cache_fallback', 'autoptimize_cache_nogzip', 'autoptimize_cdn_url', 'autoptimize_enable_meta_ao_settings', 'autoptimize_enable_site_config', 'autoptimize_html', 'autoptimize_html_keepcomments', 'autoptimize_minify_excluded', 'autoptimize_optimize_checkout', 'autoptimize_optimize_logged' ) as $other_setting ) { + if ( false === array_key_exists( 'other', $settings ) || false === array_key_exists( $other_setting, $settings['other'] ) ) { + continue; + } else { + update_option( $other_setting, $settings['other'][ $other_setting ] ); + } + } + + // AO Pro. + if ( defined( 'AO_PRO_VERSION' ) && array_key_exists( 'pro', $settings ) ) { + update_option( 'autoptimize_pro_boosters', $settings['pro']['boosters'] ); + update_option( 'autoptimize_pro_pagecache', $settings['pro']['pagecache'] ); + } + + // settings.json has been imported, so can be removed now. + if ( file_exists( $importfile ) ) { + unlink( $importfile ); + } + } else { + // Settings file doesn't exist, update error flag. + $error = 'settings file does not exist'; + } + } + } else { + $error = 'file could not be saved'; + } + + // Prepare response. + if ( $error ) { + $response['code'] = '500'; + $response['msg'] = 'Error importing settings: ' . $error; + } else { + $response['code'] = '200'; + $response['msg'] = 'Settings imported successfully'; + } + + // Dispatch respose. + echo json_encode( $response ); + + // Close ajax request. + wp_die(); + } + + public function ao_ccss_queuerunner_callback() { + check_ajax_referer( 'ao_ccss_queuerunner_nonce', 'ao_ccss_queuerunner_nonce' ); + + // Process an uploaded file with no errors. + if ( current_user_can( 'manage_options' ) ) { + if ( ! file_exists( AO_CCSS_LOCK ) ) { + $ccss_cron = new autoptimizeCriticalCSSCron(); + $ccss_cron->ao_ccss_queue_control(); + $response['code'] = '200'; + $response['msg'] = 'Queue processing done'; + } else { + $response['code'] = '302'; + $response['msg'] = 'Lock file found'; + } + } else { + $response['code'] = '500'; + $response['msg'] = 'Not allowed'; + } + + // Dispatch respose. + echo json_encode( $response ); + + // Close ajax request. + wp_die(); + } + + public function ao_ccss_saverules_callback() { + check_ajax_referer( 'ao_ccss_saverules_nonce', 'ao_ccss_saverules_nonce' ); + + // save rules over AJAX, too many users forget to press "save changes". + if ( current_user_can( 'manage_options' ) ) { + if ( array_key_exists( 'critcssrules', $_POST ) ) { + $rules = stripslashes( $_POST['critcssrules'] ); // ugly, but seems correct as per https://developer.wordpress.org/reference/functions/stripslashes_deep/#comment-1045 . + if ( ! empty( $rules ) ) { + $_unsafe_rules_array = json_decode( wp_strip_all_tags( $rules ), true ); + if ( ! empty( $_unsafe_rules_array ) && is_array( $_unsafe_rules_array ) ) { + $_safe_rules_array = array(); + if ( array_key_exists( 'paths', $_unsafe_rules_array ) ) { + $_safe_rules_array['paths'] = $_unsafe_rules_array['paths']; + } + if ( array_key_exists( 'types', $_unsafe_rules_array ) ) { + $_safe_rules_array['types'] = $_unsafe_rules_array['types']; + } + $_safe_rules = json_encode( $_safe_rules_array, JSON_FORCE_OBJECT ); + if ( ! empty( $_safe_rules ) ) { + update_option( 'autoptimize_ccss_rules', $_safe_rules ); + $response['code'] = '200'; + $response['msg'] = 'Rules saved'; + } else { + $_error = 'Could not auto-save rules (safe rules empty)'; + } + } else { + $_error = 'Could not auto-save rules (rules could not be json_decoded)'; + } + } else { + $_error = 'Could not auto-save rules (rules empty)'; + } + } else { + $_error = 'Could not auto-save rules (rules not in $_POST)'; + } + } else { + $_error = 'Not allowed'; + } + + if ( ! isset( $response ) && $_error ) { + $response['code'] = '500'; + $response['msg'] = $_error; + } + + // Dispatch respose. + echo json_encode( $response ); + + // Close ajax request. + wp_die(); + } + + public function critcss_check_filename( $filename ) { + // Try to avoid directory traversal when reading/writing/deleting critical CSS files. + if ( strpos( $filename, 'ccss_' ) !== 0 ) { + return false; + } elseif ( substr( $filename, -4, 4 ) !== '.css' ) { + return false; + } elseif ( sanitize_file_name( $filename ) !== $filename ) { + // Use WordPress core's sanitize_file_name to see if anything fishy is going on. + return false; + } else { + return true; + } + } + + public function rrmdir( $path ) { + // recursively remove a directory as found on + // https://andy-carter.com/blog/recursively-remove-a-directory-in-php. + $files = glob( $path . '/*' ); + foreach ( $files as $file ) { + is_dir( $file ) ? $this->rrmdir( $file ) : unlink( $file ); + } + rmdir( $path ); + + return; + } + + public function fetch_rule_from_ccssfile( $ccss_file = '' ) { + if ( empty( $ccss_file ) ) { + return false; + } + + $ccss_file = str_replace( AO_CCSS_DIR, '', $ccss_file ); + + static $rules = null; + if ( null === $rules ) { + $rules = $this->criticalcss->get_option( 'rules' ); + } + + foreach ( $rules as $ruletype => $rulechilds ) { + foreach ( $rulechilds as $identifier => $properties ) { + if ( $properties['file'] === $ccss_file ) { + return array( $ruletype, $identifier ); + } + } + } + + return false; + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeExitSurvey.php b/wp-content/plugins/autoptimize/classes/autoptimizeExitSurvey.php new file mode 100644 index 0000000..7f2cffd --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeExitSurvey.php @@ -0,0 +1,118 @@ + home_url(), + 'dest' => 'aHR0cHM6Ly9taXNjLm9wdGltaXppbmdtYXR0ZXJzLmNvbS9hb19leGl0X3N1cnZleS9pbmRleC5waHA=', + ); + ?> + + + options = $options; + } + + /** + * Helper for getting a singleton instance. While being an + * anti-pattern generally, it comes in handy for now from a + * readability/maintainability perspective, until we get some + * proper dependency injection going. + * + * @return self + */ + public static function instance() + { + if ( null === self::$instance ) { + self::$instance = new self(); + } + + return self::$instance; + } + + public function run() + { + if ( is_admin() ) { + if ( is_multisite() && is_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network() ) { + add_action( 'network_admin_menu', array( $this, 'admin_menu' ) ); + } else { + add_action( 'admin_menu', array( $this, 'admin_menu' ) ); + } + add_filter( 'autoptimize_filter_settingsscreen_tabs', array( $this, 'add_extra_tab' ) ); + } else { + add_action( 'wp', array( $this, 'run_on_frontend' ) ); + } + } + + public function set_options( array $options ) + { + $this->options = $options; + + return $this; + } + + public static function fetch_options() + { + $value = autoptimizeOptionWrapper::get_option( 'autoptimize_extra_settings' ); + if ( empty( $value ) ) { + // Fallback to returning defaults when no stored option exists yet. + $value = autoptimizeConfig::get_ao_extra_default_options(); + } + + return $value; + } + + public function disable_emojis() + { + // Removing all actions related to emojis! + remove_action( 'admin_print_styles', 'print_emoji_styles' ); + remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); + remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); + remove_action( 'wp_print_styles', 'print_emoji_styles' ); + remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); + remove_filter( 'the_content_feed', 'wp_staticize_emoji' ); + remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); + + // Removes TinyMCE emojis. + add_filter( 'tiny_mce_plugins', array( $this, 'filter_disable_emojis_tinymce' ) ); + + // Removes emoji dns-preftech. + add_filter( 'emoji_svg_url', '__return_false' ); + } + + public function filter_disable_emojis_tinymce( $plugins ) + { + if ( is_array( $plugins ) ) { + return array_diff( $plugins, array( 'wpemoji' ) ); + } else { + return array(); + } + } + + public function filter_remove_qs( $src ) + { + if ( ! empty( $src ) ) { + if ( strpos( $src, '?ver=' ) ) { + $src = remove_query_arg( 'ver', $src ); + } elseif ( strpos( $src, '?v=' ) ) { + $src = remove_query_arg( 'v', $src ); + } + } + + return $src; + } + + public function extra_async_js( $in ) + { + $exclusions = array(); + if ( ! empty( $in ) ) { + $exclusions = array_fill_keys( array_filter( array_map( 'trim', explode( ',', $in ) ) ), '' ); + } + + $settings = wp_strip_all_tags( $this->options['autoptimize_extra_text_field_3'] ); + $async = array_fill_keys( array_filter( array_map( 'trim', explode( ',', $settings ) ) ), '' ); + $attr = apply_filters( 'autoptimize_filter_extra_async', 'async' ); + foreach ( $async as $k => $v ) { + $async[ $k ] = $attr; + } + + // Merge exclusions & asyncs in one array and return to AO API. + $merged = array_merge( $exclusions, $async ); + + return $merged; + } + + public function run_on_frontend() + { + // only run the Extra optimizations on frontend if general conditions + // for optimizations are met, this to ensure e.g. removing querystrings + // is not done when optimizing for logged in users is off, breaking + // some pagebuilders (Divi & Elementor). + if ( false === autoptimizeMain::should_buffer() ) { + return; + } + + $options = $this->options; + + // Disable emojis if specified. + if ( ! empty( $options['autoptimize_extra_checkbox_field_1'] ) ) { + $this->disable_emojis(); + } + + // Remove version query parameters. + if ( ! empty( $options['autoptimize_extra_checkbox_field_0'] ) ) { + add_filter( 'script_loader_src', array( $this, 'filter_remove_qs' ), 15, 1 ); + add_filter( 'style_loader_src', array( $this, 'filter_remove_qs' ), 15, 1 ); + } + + // Avoiding conflicts of interest when async-javascript plugin is active! + $async_js_plugin_active = autoptimizeUtils::is_plugin_active( 'async-javascript/async-javascript.php' ); + if ( ! empty( $options['autoptimize_extra_text_field_3'] ) && ! $async_js_plugin_active ) { + add_filter( 'autoptimize_filter_js_exclude', array( $this, 'extra_async_js' ), 10, 1 ); + } + + // Optimize google fonts! + if ( ! empty( $options['autoptimize_extra_radio_field_4'] ) && ( '1' !== $options['autoptimize_extra_radio_field_4'] ) ) { + add_filter( 'wp_resource_hints', array( $this, 'filter_remove_gfonts_dnsprefetch' ), 10, 2 ); + add_filter( 'autoptimize_html_after_minify', array( $this, 'filter_optimize_google_fonts' ), 10, 1 ); + add_filter( 'autoptimize_extra_filter_tobepreconn', array( $this, 'filter_preconnect_google_fonts' ), 10, 1 ); + + if ( '2' === $options['autoptimize_extra_radio_field_4'] ) { + // remove Google Fonts, adding filters to also remove Google Fonts from 3rd party themes/ plugins. + // inspired by https://wordpress.org/plugins/disable-remove-google-fonts/. + remove_action( 'wp_footer', 'et_builder_print_font' ); // Divi. + remove_action( 'wp_footer', array( 'RevSliderFront', 'load_google_fonts' ) ); // Revslider. + add_filter( 'elementor/frontend/print_google_fonts', '__return_false' ); // Elementor. + add_filter( 'fl_builder_google_fonts_pre_enqueue', '__return_empty_array' ); // Beaver Builder. + } + } + + // Preconnect! + if ( ! empty( $options['autoptimize_extra_text_field_2'] ) || has_filter( 'autoptimize_extra_filter_tobepreconn' ) ) { + add_filter( 'wp_resource_hints', array( $this, 'filter_preconnect' ), 10, 2 ); + } + + // Preload! + if ( ! empty( $options['autoptimize_extra_text_field_7'] ) || has_filter( 'autoptimize_filter_extra_tobepreloaded' ) || ! empty( autoptimizeConfig::get_post_meta_ao_settings( 'ao_post_preload' ) ) ) { + add_filter( 'autoptimize_html_after_minify', array( $this, 'filter_preload' ), 10, 2 ); + } + + // Remove global styles. + if ( ! empty( $options['autoptimize_extra_checkbox_field_8'] ) ) { + $this->disable_global_styles(); + } + } + + public function filter_remove_gfonts_dnsprefetch( $urls, $relation_type ) + { + return $this->filter_remove_dns_prefetch( $urls, $relation_type, 'fonts.googleapis.com' ); + } + + public function filter_remove_dns_prefetch( $urls, $relation_type, $url_to_remove ) + { + $url_to_remove = (string) $url_to_remove; + + if ( ! empty( $url_to_remove ) && 'dns-prefetch' === $relation_type ) { + $cnt = 0; + foreach ( $urls as $url ) { + // $url can be an array, in which case we need to fetch the value of the href key. + if ( is_array( $url ) ) { + if ( isset( $url['href'] ) ) { + $url = $url['href']; + } else { + continue; + } + } + + if ( is_string( $url ) && false !== strpos( $url, $url_to_remove ) ) { + unset( $urls[ $cnt ] ); + } + $cnt++; + } + } + + return $urls; + } + + public function filter_optimize_google_fonts( $in ) + { + // Extract fonts, partly based on wp rocket's extraction code. + $markup = preg_replace( '//Uis', '', $in ); + preg_match_all( '#])+)?(?:\s+href\s*=\s*([\'"])((?:https?:)?\/\/fonts\.googleapis\.com\/css(?:(?!\1).)+)\1)(?:\s+[^>]*)?>#iU', $markup, $matches ); + + $fonts_collection = array(); + if ( ! $matches[2] ) { + return $in; + } + + // Store them in $fonts array. + $i = 0; + foreach ( $matches[2] as $font ) { + if ( ! preg_match( '/rel=["\']dns-prefetch["\']/', $matches[0][ $i ] ) ) { + // Get fonts name. + $font = str_replace( array( '%7C', '%7c' ), '|', $font ); + if ( strpos( $font, 'fonts.googleapis.com/css2' ) !== false ) { + // (Somewhat) change Google Fonts APIv2 syntax back to v1. + // todo: support for 100..900 + $font = rawurldecode( $font ); + $font = str_replace( array( 'css2?', 'ital,wght@', 'wght@', 'ital@', '0,', '1,', ':1', ';', '&family=' ), array( 'css?', '', '', '', '', 'italic', ':italic', ',', '%7C' ), $font ); + } + $font = explode( 'family=', $font ); + $font = ( isset( $font[1] ) ) ? explode( '&', $font[1] ) : array(); + // Add font to $fonts[$i] but make sure not to pollute with an empty family! + $_thisfont = array_values( array_filter( explode( '|', reset( $font ) ) ) ); + if ( ! empty( $_thisfont ) ) { + $fonts_collection[ $i ]['fonts'] = $_thisfont; + // And add subset if any! + $subset = ( is_array( $font ) ) ? end( $font ) : ''; + if ( false !== strpos( $subset, 'subset=' ) ) { + $subset = str_replace( array( '%2C', '%2c' ), ',', $subset ); + $subset = explode( 'subset=', $subset ); + $fonts_collection[ $i ]['subsets'] = explode( ',', $subset[1] ); + } + } + // And remove Google Fonts. + $in = str_replace( $matches[0][ $i ], '', $in ); + } + $i++; + } + + $options = $this->options; + $fonts_markup = ''; + if ( '2' === $options['autoptimize_extra_radio_field_4'] ) { + // Remove Google Fonts. + unset( $fonts_collection ); + return $in; + } elseif ( '3' === $options['autoptimize_extra_radio_field_4'] || '5' === $options['autoptimize_extra_radio_field_4'] ) { + // Aggregate & link! + $fonts_string = ''; + $subset_string = ''; + foreach ( $fonts_collection as $font ) { + $fonts_string .= '|' . trim( implode( '|', $font['fonts'] ), '|' ); + if ( ! empty( $font['subsets'] ) ) { + $subset_string .= ',' . trim( implode( ',', $font['subsets'] ), ',' ); + } + } + + if ( ! empty( $subset_string ) ) { + $subset_string = str_replace( ',', '%2C', ltrim( $subset_string, ',' ) ); + $fonts_string = $fonts_string . '&subset=' . $subset_string; + } + + $fonts_string = apply_filters( 'autoptimize_filter_extra_gfont_fontstring', str_replace( '|', '%7C', ltrim( $fonts_string, '|' ) ) ); + // only add display parameter if there is none in $fonts_string (by virtue of the filter). + if ( strpos( $fonts_string, 'display=' ) === false ) { + $fonts_string .= apply_filters( 'autoptimize_filter_extra_gfont_display', '&display=swap' ); + } + + if ( ! empty( $fonts_string ) ) { + if ( '5' === $options['autoptimize_extra_radio_field_4'] ) { + $rel_string = 'rel="stylesheet" media="print" onload="' . autoptimizeConfig::get_ao_css_preload_onload() . '"'; + } else { + $rel_string = 'rel="stylesheet"'; + } + $fonts_markup = ''; + } + } elseif ( '4' === $options['autoptimize_extra_radio_field_4'] ) { + // Aggregate & load async (webfont.js impl.)! + $fonts_array = array(); + foreach ( $fonts_collection as $_fonts ) { + if ( ! empty( $_fonts['subsets'] ) ) { + $_subset = implode( ',', $_fonts['subsets'] ); + foreach ( $_fonts['fonts'] as $key => $_one_font ) { + $_one_font = $_one_font . ':' . $_subset; + $_fonts['fonts'][ $key ] = $_one_font; + } + } + $fonts_array = array_merge( $fonts_array, $_fonts['fonts'] ); + } + + $fonts_array = array_map( 'urldecode', $fonts_array ); + $fonts_array = array_map( + function( $_f ) { + return trim( $_f, ',' ); + }, + $fonts_array + ); + + // type attrib on '; + $fonts_library_markup = ''; + $in = substr_replace( $in, $fonts_library_markup . '', strpos( $in, '' ), strlen( '' ) ); + } + + // Replace back in markup. + $inject_point = apply_filters( 'autoptimize_filter_extra_gfont_injectpoint', 'options; + $preconns = array(); + + // Get settings and store in array. + if ( array_key_exists( 'autoptimize_extra_text_field_2', $options ) ) { + $preconns = array_filter( array_map( 'trim', explode( ',', wp_strip_all_tags( $options['autoptimize_extra_text_field_2'] ) ) ) ); + } + $preconns = apply_filters( 'autoptimize_extra_filter_tobepreconn', $preconns ); + + // Walk array, extract domain and add to new array with crossorigin attribute. + foreach ( $preconns as $preconn ) { + $domain = ''; + $parsed = parse_url( $preconn ); + if ( is_array( $parsed ) && ! empty( $parsed['host'] ) && empty( $parsed['scheme'] ) ) { + $domain = '//' . $parsed['host']; + } elseif ( is_array( $parsed ) && ! empty( $parsed['host'] ) ) { + $domain = $parsed['scheme'] . '://' . $parsed['host']; + } + + if ( ! empty( $domain ) ) { + $hint = array( 'href' => $domain ); + // Fonts don't get preconnected unless crossorigin flag is set, non-fonts don't get preconnected if origin flag is set + // so hardcode fonts.gstatic.com to come with crossorigin and have filter to add other domains if needed. + $crossorigins = apply_filters( 'autoptimize_extra_filter_preconn_crossorigin', array( 'https://fonts.gstatic.com' ) ); + if ( in_array( $domain, $crossorigins ) ) { + $hint['crossorigin'] = 'anonymous'; + } + $new_hints[] = $hint; + } + } + + // Merge in WP's preconnect hints. + if ( 'preconnect' === $relation_type && ! empty( $new_hints ) ) { + $hints = array_merge( $hints, $new_hints ); + } + + return $hints; + } + + public function filter_preconnect_google_fonts( $in ) + { + if ( '2' !== $this->options['autoptimize_extra_radio_field_4'] ) { + // Preconnect to fonts.gstatic.com unless we remove gfonts. + $in[] = 'https://fonts.gstatic.com'; + } + + if ( '4' === $this->options['autoptimize_extra_radio_field_4'] ) { + // Preconnect even more hosts for webfont.js! + $in[] = 'https://ajax.googleapis.com'; + $in[] = 'https://fonts.googleapis.com'; + } + + return $in; + } + + public function filter_preload( $in ) { + // make array from comma separated list. + $options = $this->options; + $preloads = array(); + if ( array_key_exists( 'autoptimize_extra_text_field_7', $options ) ) { + $preloads = array_filter( array_map( 'trim', explode( ',', wp_strip_all_tags( $options['autoptimize_extra_text_field_7'] ) ) ) ); + } + + if ( false === autoptimizeImages::imgopt_active() && false === autoptimizeImages::should_lazyload_wrapper() ) { + // only do this here if imgopt/ lazyload are not active? + $metabox_preloads = array_filter( array_map( 'trim', explode( ',', wp_strip_all_tags( autoptimizeConfig::get_post_meta_ao_settings( 'ao_post_preload' ) ) ) ) ); + if ( ! empty( $metabox_preloads ) ) { + $preloads = array_merge( $preloads, $metabox_preloads ); + } + } + + $preloads = apply_filters( 'autoptimize_filter_extra_tobepreloaded', $preloads ); + + // immediately return if nothing to be preloaded. + if ( empty( $preloads ) ) { + return $in; + } + + // iterate through array and add preload link to tmp string. + $preload_output = ''; + foreach ( $preloads as $preload ) { + if ( filter_var( $preload, FILTER_VALIDATE_URL ) !== $preload ) { + continue; + } + $preload = esc_url_raw( $preload ); + $crossorigin = ''; + $preload_as = ''; + $mime_type = ''; + $_preload = strtok( $preload, '?' ); + + if ( autoptimizeUtils::str_ends_in( $_preload, '.css' ) ) { + $preload_as = 'style'; + } elseif ( autoptimizeUtils::str_ends_in( $_preload, '.js' ) ) { + $preload_as = 'script'; + } elseif ( autoptimizeUtils::str_ends_in( $_preload, '.woff' ) || autoptimizeUtils::str_ends_in( $_preload, '.woff2' ) || autoptimizeUtils::str_ends_in( $_preload, '.ttf' ) || autoptimizeUtils::str_ends_in( $_preload, '.eot' ) || autoptimizeUtils::str_ends_in( $_preload, '.otf' ) ) { + $preload_as = 'font'; + $crossorigin = ' crossorigin'; + $mime_type = ' type="font/' . pathinfo( $_preload, PATHINFO_EXTENSION ) . '"'; + if ( ' type="font/eot"' === $mime_type ) { + $mime_type = 'application/vnd.ms-fontobject'; + } + } elseif ( autoptimizeUtils::str_ends_in( $_preload, '.jpeg' ) || autoptimizeUtils::str_ends_in( $_preload, '.jpg' ) || autoptimizeUtils::str_ends_in( $_preload, '.webp' ) || autoptimizeUtils::str_ends_in( $_preload, '.png' ) || autoptimizeUtils::str_ends_in( $_preload, '.gif' ) || autoptimizeUtils::str_ends_in( $_preload, '.svg' ) ) { + $preload_as = 'image'; + } else { + $preload_as = 'other'; + } + + $preload_output .= ''; + } + $preload_output = apply_filters( 'autoptimize_filter_extra_preload_output', $preload_output ); + + return $this->inject_preloads( $preload_output, $in ); + } + + public static function inject_preloads( $preloads, $html ) { + // add string to head (before first link node by default). + $preload_inject = apply_filters( 'autoptimize_filter_extra_preload_inject', ' esc_html__( 'Extra', 'autoptimize' ) ) ); + } + + return $in; + } + + public function options_page() + { + // phpcs:disable Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace + + // Working with actual option values from the database here. + // That way any saves are still processed as expected, but we can still + // override behavior by using `new autoptimizeExtra($custom_options)` and not have that custom + // behavior being persisted in the DB even if save is done here. + $options = $this->fetch_options(); + $gfonts = $options['autoptimize_extra_radio_field_4']; + ?> + + +
+

+ + +

+ +

+ + +
' method='post'> + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ >
+ >
+ + >', '' ); ?>
+ + >', '' ); ?> + >
>', '' ) . ' ' . esc_html__( '(deprecated)', 'autoptimize' ); ?>

+
+ +
+ +
+ +
+ +
+ +
+ ', '' ); + } else { + ?> + '> +
+ ', '' ); + // translators: %s will be replaced by a link to the "async javascript" plugin. + echo sprintf( esc_html__( 'Configuration of async javascript is easier and more flexible using the %s plugin.', 'autoptimize' ), '"Async Javascript"' ); + $asj_install_url = network_admin_url() . 'plugin-install.php?s=async+javascript&tab=search&type=term'; + echo sprintf( ' %s', esc_html__( 'Click here to install and activate it.', 'autoptimize' ) ); + } + ?> +
+ %s', esc_html__( 'Click here to configure it.', 'autoptimize' ) ); + } else { + // translators: %s will be replaced by a link to "wp youtube lyte" plugin. + echo sprintf( esc_html__( '%s allows you to “lazy load” your videos, by inserting responsive “Lite YouTube Embeds". ', 'autoptimize' ), 'WP YouTube Lyte' ); + $lyte_install_url = network_admin_url() . 'plugin-install.php?s=lyte&tab=search&type=term'; + echo sprintf( ' %s', esc_html__( 'Click here to install and activate it.', 'autoptimize' ) ); + } + ?> +
+

+
+ ', + '', + '', + ); + + public function read( $options ) + { + // Remove the HTML comments? + $this->keepcomments = (bool) $options['keepcomments']; + + // Filter to force xhtml. + $this->forcexhtml = (bool) apply_filters( 'autoptimize_filter_html_forcexhtml', false ); + + // minify inline JS/ CSS. + $this->minify_inline = (bool) apply_filters( 'autoptimize_html_minify_inline_js_css', $options['minify_inline'] ); + + // Filterable strings to be excluded from HTML minification. + $exclude = apply_filters( 'autoptimize_filter_html_exclude', '' ); + if ( '' !== $exclude ) { + $exclude_arr = array_filter( array_map( 'trim', explode( ',', $exclude ) ) ); + $this->exclude = array_merge( $exclude_arr, $this->exclude ); + } + + // Nothing else for HTML! + return true; + } + + /** + * Minifies HTML. + * + * @return bool + */ + public function minify() + { + $noptimize = apply_filters( 'autoptimize_filter_html_noptimize', false, $this->content ); + if ( $noptimize ) { + return false; + } + + // Wrap the to-be-excluded strings in noptimize tags. + foreach ( $this->exclude as $str ) { + if ( false !== strpos( $this->content, $str ) ) { + $replacement = '' . $str . ''; + $this->content = str_replace( $str, $replacement, $this->content ); + } + } + + // Noptimize. + $this->content = $this->hide_noptimize( $this->content ); + + // Preparing options for Minify_HTML. + $options = array( 'keepComments' => $this->keepcomments ); + if ( $this->forcexhtml ) { + $options['xhtml'] = true; + } + + // Optionally minify inline JS & CSS. + if ( $this->minify_inline ) { + if ( false != autoptimizeOptionWrapper::get_option( 'autoptimize_js' ) && false != autoptimizeConfig::get_post_meta_ao_settings( 'ao_post_js_optimize' ) && true !== apply_filters( 'autoptimize_filter_js_noptimize', false, $this->content ) && false === strpos( $this->content, 'text/template' ) ) { + $options['jsMinifier'] = 'JSMin::minify'; + } + if ( false != autoptimizeOptionWrapper::get_option( 'autoptimize_css' ) && false != autoptimizeConfig::get_post_meta_ao_settings( 'ao_post_css_optimize' ) && true !== apply_filters( 'autoptimize_filter_css_noptimize', false, $this->content ) ) { + $options['cssMinifier'] = 'autoptimizeCSSmin::minify'; + } + } + + $tmp_content = AO_Minify_HTML::minify( $this->content, $options ); + if ( ! empty( $tmp_content ) ) { + $this->content = $tmp_content; + unset( $tmp_content ); + } + + // Restore noptimize. + $this->content = $this->restore_noptimize( $this->content ); + + // Remove the noptimize-wrapper from around the excluded strings. + foreach ( $this->exclude as $str ) { + $replacement = '' . $str . ''; + if ( false !== strpos( $this->content, $replacement ) ) { + $this->content = str_replace( $replacement, $str, $this->content ); + } + } + + // Revslider data attribs somehow suffer from HTML optimization, this fixes that! + if ( class_exists( 'RevSlider' ) && apply_filters( 'autoptimize_filter_html_dataattrib_cleanup', false ) ) { + $this->content = preg_replace( '#\n(data-.*$)\n#Um', ' $1 ', $this->content ); + $this->content = preg_replace( '#<[^>]*(=\"[^"\'<>\s]*\")(\w)#', '$1 $2', $this->content ); + } + + return true; + } + + /** + * Doesn't do much in case of HTML (no cache in css/js sense there) + * + * @return true + */ + public function cache() + { + return true; + } + + /** + * Returns the HTML markup. + * + * @return string + */ + public function getcontent() + { + return $this->content; + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeImages.php b/wp-content/plugins/autoptimize/classes/autoptimizeImages.php new file mode 100644 index 0000000..76dfad7 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeImages.php @@ -0,0 +1,1652 @@ +fetch_options(); + } + + $this->set_options( $options ); + } + + public function set_options( array $options ) + { + $this->options = $options; + + return $this; + } + + public static function fetch_options() + { + $value = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_settings' ); + if ( empty( $value ) ) { + // Fallback to returning defaults when no stored option exists yet. + $value = autoptimizeConfig::get_ao_imgopt_default_options(); + } + + // get service availability and add it to the options-array. + $value['availabilities'] = autoptimizeOptionWrapper::get_option( 'autoptimize_service_availablity' ); + + if ( empty( $value['availabilities'] ) || ! is_array( $value['availabilities'] ) ) { + $value['availabilities'] = null; + + if ( true === autoptimizeImages::imgopt_active() ) { + $value['availabilities'] = autoptimizeUtils::check_service_availability( true ); + } + + if ( null === $value['availabilities'] ) { + // We can't seem to check service availability, use mock result with imgopt status UP. + $_mock_settings = array( + 'extra_imgopt' => array( + 'status' => 'up', + 'hosts' => array( + '1' => 'https://sp-ao.shortpixel.ai/', + ), + ), + 'critcss' => array( + 'status' => 'up', + ), + ); + $value['availabilities'] = $_mock_settings; + } + } + + return $value; + } + + public static function imgopt_active() + { + // function to quickly check if imgopt is active, used below but also in + // autoptimizeMain.php to start ob_ even if no HTML, JS or CSS optimizing is done + // and does not use/ request the availablity data (which could slow things down). + static $imgopt_active = null; + + if ( null === $imgopt_active ) { + $opts = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_settings', '' ); + if ( ! empty( $opts ) && is_array( $opts ) && array_key_exists( 'autoptimize_imgopt_checkbox_field_1', $opts ) && ! empty( $opts['autoptimize_imgopt_checkbox_field_1'] ) && '1' === $opts['autoptimize_imgopt_checkbox_field_1'] ) { + $imgopt_active = true; + } else { + $imgopt_active = false; + } + } + + return $imgopt_active; + } + + /** + * Helper for getting a singleton instance. While being an + * anti-pattern generally, it comes in handy for now from a + * readability/maintainability perspective, until we get some + * proper dependency injection going. + * + * @return self + */ + public static function instance() + { + if ( null === self::$instance ) { + self::$instance = new self(); + } + + return self::$instance; + } + + public function run() + { + if ( is_admin() ) { + if ( is_multisite() && is_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network() ) { + add_action( 'network_admin_menu', array( $this, 'imgopt_admin_menu' ) ); + } else { + add_action( 'admin_menu', array( $this, 'imgopt_admin_menu' ) ); + } + add_filter( 'autoptimize_filter_settingsscreen_tabs', array( $this, 'add_imgopt_tab' ), 9 ); + } else { + add_action( 'wp', array( $this, 'run_on_frontend' ) ); + } + } + + public function run_on_frontend() { + if ( ! $this->should_run() ) { + if ( $this->should_lazyload() ) { + add_filter( + 'wp_lazy_loading_enabled', + array( $this, 'should_disable_core_lazyload' ), + 10, + 3 + ); + add_filter( + 'autoptimize_html_after_minify', + array( $this, 'filter_lazyload_images' ), + 10, + 1 + ); + add_action( + 'wp_footer', + array( $this, 'add_lazyload_js_footer' ), + 10, + 0 + ); + } + return; + } + + $active = false; + + if ( apply_filters( 'autoptimize_filter_imgopt_do', true ) ) { + add_filter( + 'autoptimize_html_after_minify', + array( $this, 'filter_optimize_images' ), + 10, + 1 + ); + $active = true; + } + + if ( apply_filters( 'autoptimize_filter_imgopt_do_css', true ) ) { + // fixme: also act on already minified CSS! + add_filter( + 'autoptimize_filter_base_replace_cdn', + array( $this, 'filter_optimize_css_images' ), + 10, + 1 + ); + + add_filter( + 'autoptimize_html_after_minify', + array( $this, 'filter_optimize_inline_css_images' ), + 10, + 1 + ); + + $active = true; + } + + if ( $active ) { + add_filter( + 'autoptimize_extra_filter_tobepreconn', + array( $this, 'filter_preconnect_imgopt_url' ), + 10, + 1 + ); + } + + if ( $this->should_lazyload() ) { + add_filter( + 'wp_lazy_loading_enabled', + array( $this, 'should_disable_core_lazyload' ), + 10, + 3 + ); + add_action( + 'wp_footer', + array( $this, 'add_lazyload_js_footer' ), + 10, + 0 + ); + } + } + + /** + * Disables core's native lazyload for images, not for iframes. + * + * @param bool $flag Incoming flag (mostly true). + * @param string $tag Tag (img or iframe). + * @param string $context Full context. + * + * @return bool + */ + public function should_disable_core_lazyload( $flag = true, $tag = '', $context = '' ) { + if ( 'img' === $tag ) { + return false; + } + return $flag; + } + + /** + * Basic checks before we can run. + * + * @return bool + */ + protected function should_run() + { + $opts = $this->options; + $service_not_down = ( 'down' !== $opts['availabilities']['extra_imgopt']['status'] ); + $not_launch_status = ( 'launch' !== $opts['availabilities']['extra_imgopt']['status'] ); + + $do_cdn = true; + $_userstatus = $this->get_imgopt_provider_userstatus(); + if ( isset( $_userstatus['Status'] ) && ( -2 == $_userstatus['Status'] || -3 == $_userstatus['Status'] ) ) { + // don't even attempt to put images on CDN if heavily exceeded threshold or if site not reachable. + $do_cdn = false; + } + + if ( + $this->imgopt_active() + && $do_cdn + && $service_not_down + && ( $not_launch_status || $this->launch_ok() ) + ) { + return true; + } + return false; + } + + public function get_imgopt_host() + { + static $imgopt_host = null; + + if ( null === $imgopt_host ) { + $imgopt_host = 'https://sp-ao.shortpixel.ai/'; + $avail_imgopt = $this->options['availabilities']['extra_imgopt']; + if ( ! empty( $avail_imgopt ) && array_key_exists( 'hosts', $avail_imgopt ) && is_array( $avail_imgopt['hosts'] ) ) { + $imgopt_host = array_rand( array_flip( $avail_imgopt['hosts'] ) ); + } + $imgopt_host = apply_filters( 'autoptimize_filter_imgopt_host', $imgopt_host ); + } + + return $imgopt_host; + } + + public static function get_imgopt_host_wrapper() + { + // needed for CI tests. + $self = new self(); + return $self->get_imgopt_host(); + } + + public static function get_service_url_suffix() + { + $suffix = '/af/ZQXTBY0109483/' . AUTOPTIMIZE_SITE_DOMAIN; + + return $suffix; + } + + public function get_img_quality_string() + { + static $quality = null; + + if ( null === $quality ) { + $q_array = $this->get_img_quality_array(); + $setting = $this->get_img_quality_setting(); + $quality = apply_filters( + 'autoptimize_filter_imgopt_quality', + 'q_' . $q_array[ $setting ] + ); + } + + return $quality; + } + + public function get_img_quality_array() + { + static $map = null; + + if ( null === $map ) { + $map = array( + '1' => 'lossy', + '2' => 'glossy', + '3' => 'lossless', + ); + $map = apply_filters( + 'autoptimize_filter_imgopt_quality_array', + $map + ); + } + + return $map; + } + + public function get_img_quality_setting() + { + static $q = null; + + if ( null === $q ) { + if ( is_array( $this->options ) && array_key_exists( 'autoptimize_imgopt_select_field_2', $this->options ) ) { + $setting = $this->options['autoptimize_imgopt_select_field_2']; + } + + if ( ! isset( $setting ) || empty( $setting ) || ( '1' !== $setting && '3' !== $setting ) ) { + // default image opt. value is 2 ("glossy"). + $q = '2'; + } else { + $q = $setting; + } + } + + return $q; + } + + public function filter_preconnect_imgopt_url( array $in ) + { + $url_parts = parse_url( $this->get_imgopt_base_url() ); + $in[] = $url_parts['scheme'] . '://' . $url_parts['host']; + + return $in; + } + + /** + * Makes sure given url contains the full scheme and hostname + * in case they're not present already. + * + * @param string $in Image url to normalize. + * + * @return string + */ + private function normalize_img_url( $in ) + { + // Only parse the site url once. + static $parsed_site_url = null; + if ( null === $parsed_site_url ) { + $parsed_site_url = parse_url( site_url() ); + } + + // get CDN domain once. + static $cdn_domain = null; + if ( is_null( $cdn_domain ) ) { + $cdn_url = $this->get_cdn_url(); + if ( ! empty( $cdn_url ) ) { + $cdn_domain = parse_url( $cdn_url, PHP_URL_HOST ); + } else { + $cdn_domain = ''; + } + } + + /** + * This method gets called a lot, often for identical urls it seems. + * `filter_optimize_css_images()` calls us, uses the resulting url and + * gives it to `can_optimize_image()`, and if that returns trueish + * then `build_imgopt_url()` is called (which, again, calls this method). + * Until we dig deeper into whether this all must really happen that + * way, having an internal cache here helps (to avoid doing repeated + * identical string operations). + */ + static $cache = null; + if ( null === $cache ) { + $cache = array(); + } + + // Do the work on cache miss only. + if ( ! isset( $cache[ $in ] ) ) { + // Default to (the trimmed version of) what was given to us. + $result = trim( $in ); + + // Some silly plugins wrap background images in html-encoded quotes, so remove those from the img url. + $result = $this->fix_silly_bgimg_quotes( $result ); + + if ( autoptimizeUtils::is_protocol_relative( $result ) ) { + $result = $parsed_site_url['scheme'] . ':' . $result; + } elseif ( 0 === strpos( $result, '/' ) ) { + // Root-relative... + $result = $parsed_site_url['scheme'] . '://' . $parsed_site_url['host'] . $result; + } elseif ( ! empty( $cdn_domain ) && false === strpos( $this->get_imgopt_host(), $cdn_domain ) && strpos( $result, $cdn_domain ) !== 0 ) { + // remove CDN except if it is the image optimization one. + $result = str_replace( $cdn_domain, $parsed_site_url['host'], $result ); + } + + // filter (default off) to remove QS from image URL's to avoid eating away optimization credits. + if ( apply_filters( 'autoptimize_filter_imgopt_no_querystring', false ) && strpos( $result, '?' ) !== false ) { + $result = strtok( $result, '?' ); + } + + $result = apply_filters( 'autoptimize_filter_imgopt_normalized_url', $result ); + + // Store in cache. + $cache[ $in ] = $result; + } + + return $cache[ $in ]; + } + + public function filter_optimize_css_images( $in ) + { + $in = $this->normalize_img_url( $in ); + + if ( $this->can_optimize_image( $in ) && false === strpos( $in, $this->get_imgopt_host() ) ) { + return $this->build_imgopt_url( $in, '', '' ); + } else { + return $in; + } + } + + public function filter_optimize_inline_css_images( $html ) { + preg_match_all( '#]*>([^<]*)#Um', $html, $inline_css_blocks, PREG_SET_ORDER ); + foreach ( $inline_css_blocks as $inline_css_block ) { + if ( false !== strpos( $inline_css_block[0], 'background' ) ) { + $inline_css_block_new = $this->replace_background_img_css( $inline_css_block[0] ); + if ( $inline_css_block_new !== $inline_css_block[0] ) { + $html = str_replace( $inline_css_block[0], $inline_css_block_new, $html ); + } + } + } + return $html; + } + + public static function replace_background_img_css( $css ) { + // fixme; can/ should we cache these? + preg_match_all( '#background[^;}]*url\((.*)\)#Ui', $css, $backgrounds, PREG_SET_ORDER ); + if ( is_array( $backgrounds ) && ! empty( $backgrounds ) ) { + foreach ( $backgrounds as $background ) { + if ( autoptimizeImages::can_optimize_image_wrapper( $background[1] ) ) { + $css = str_replace( $background[1], autoptimizeImages::build_imgopt_url_wrapper( $background[1] ), $css ); + } + } + } + return $css; + } + + private function get_imgopt_base_url() + { + static $imgopt_base_url = null; + + if ( null === $imgopt_base_url ) { + $imgopt_host = $this->get_imgopt_host(); + $quality = $this->get_img_quality_string(); + $ret_val = apply_filters( 'autoptimize_filter_imgopt_wait', 'ret_img' ); // values: ret_wait, ret_img, ret_json, ret_blank. + if ( $this->should_ngimg() ) { + $sp_to_string = 'to_auto'; + } else { + $sp_to_string = 'to_webp'; + } + $sp_to_string = apply_filters( 'autoptimize_filter_imgopt_format', $sp_to_string ); // values: empty (= jpeg), to_webp (smart; webp or fallback), to_avif (avif or fallback) or to_auto (smart avif, webp or fallback). + $imgopt_base_url = $imgopt_host . 'client/' . $sp_to_string . ',' . $quality . ',' . $ret_val; + $imgopt_base_url = apply_filters( 'autoptimize_filter_imgopt_base_url', $imgopt_base_url ); + } + + return $imgopt_base_url; + } + + public static function can_optimize_image_wrapper( $url, $tag = '', $testing = false ) { + $self = new self(); + return $self->can_optimize_image( $url, $tag = '', $testing = false ); + } + + private function can_optimize_image( $url, $tag = '', $testing = false ) + { + static $cdn_url = null; + static $nopti_images = null; + + if ( null === $cdn_url ) { + $cdn_url = apply_filters( + 'autoptimize_filter_base_cdnurl', + autoptimizeOptionWrapper::get_option( 'autoptimize_cdn_url', '' ) + ); + } + + if ( null === $nopti_images || $testing ) { + if ( is_array( $this->options ) && array_key_exists( 'autoptimize_imgopt_text_field_6', $this->options ) ) { + $nopti_images = $this->options['autoptimize_imgopt_text_field_6']; + } + $nopti_images = apply_filters( 'autoptimize_filter_imgopt_noptimize', $nopti_images ); + } + + $site_host = AUTOPTIMIZE_SITE_DOMAIN; + $url = $this->normalize_img_url( $url ); + $url_parsed = parse_url( $url ); + + if ( false === is_array( $url_parsed ) ) { + return false; + } elseif ( array_key_exists( 'host', $url_parsed ) && $url_parsed['host'] !== $site_host && empty( $cdn_url ) ) { + return false; + } elseif ( autoptimizeUtils::is_local_server() ) { + return false; + } elseif ( ! empty( $cdn_url ) && strpos( $url, $cdn_url ) === false && array_key_exists( 'host', $url_parsed ) && $url_parsed['host'] !== $site_host ) { + return false; + } elseif ( strpos( $url, '.php' ) !== false ) { + return false; + } elseif ( false === array_key_exists( 'path', $url_parsed ) || str_ireplace( array( '.png', '.gif', '.jpg', '.jpeg', '.webp', '.avif' ), '', $url_parsed['path'] ) === $url_parsed['path'] ) { + // fixme: better check against end of string. + return false; + } elseif ( ! empty( $nopti_images ) ) { + $nopti_images_array = array_filter( array_map( 'trim', explode( ',', $nopti_images ) ) ); + foreach ( $nopti_images_array as $nopti_image ) { + if ( strpos( $url, $nopti_image ) !== false || ( ( '' !== $tag && strpos( $tag, $nopti_image ) !== false ) ) ) { + return false; + } + } + } + return true; + } + + // wrapper for reuse in AOPro. + public static function build_imgopt_url_wrapper( $orig_url, $width = 0, $height = 0 ) { + $self = new self(); + return $self->build_imgopt_url( $orig_url, $width = 0, $height = 0 ); + } + + private function build_imgopt_url( $orig_url, $width = 0, $height = 0 ) + { + // sanitize width and height. + if ( strpos( $width, '%' ) !== false ) { + $width = 0; + } + if ( strpos( $height, '%' ) !== false ) { + $height = 0; + } + $width = (int) $width; + $height = (int) $height; + + $filtered_url = apply_filters( + 'autoptimize_filter_imgopt_build_url', + $orig_url, + $width, + $height + ); + + // If filter modified the url, return that. + if ( $filtered_url !== $orig_url ) { + return $filtered_url; + } + + $normalized_url = $this->normalize_img_url( $orig_url ); + + // if the URL is ascii we check if we have a real URL with filter_var (which only works on ascii url's) and if not a real URL we return the original one. + if ( apply_filters( 'autoptimize_filter_imgopt_check_normalized_url', true ) && ! preg_match( '/[^\x20-\x7e]/', $normalized_url ) && false === filter_var( $normalized_url, FILTER_VALIDATE_URL ) ) { + return $orig_url; + } + + $imgopt_base_url = $this->get_imgopt_base_url(); + $imgopt_size = ''; + + if ( $width && 0 !== $width ) { + $imgopt_size = ',w_' . $width; + } + + if ( $height && 0 !== $height ) { + $imgopt_size .= ',h_' . $height; + } + + $url = $imgopt_base_url . $imgopt_size . '/' . $normalized_url; + $url = apply_filters( 'autoptimize_filter_imgopt_after_build_imgopt_url', $url ); + + return $url; + } + + public function replace_data_thumbs( $matches ) + { + return $this->replace_img_callback( $matches, 150, 150 ); + } + + public function replace_img_callback( $matches, $width = 0, $height = 0 ) + { + $_normalized_img_url = $this->normalize_img_url( $matches[1] ); + if ( $this->can_optimize_image( $matches[1], $matches[0] ) ) { + return str_replace( $matches[1], $this->build_imgopt_url( $_normalized_img_url, $width, $height ), $matches[0] ); + } else { + return $matches[0]; + } + } + + public function replace_icon_callback( $matches ) + { + if ( array_key_exists( '2', $matches ) ) { + $sizes = explode( 'x', $matches[2] ); + $width = $sizes[0]; + $height = $sizes[1]; + } else { + $width = 180; + $height = 180; + } + + // make sure we're not trying to optimize a *.ico file. + if ( strpos( $matches[1], '.ico' ) === false ) { + return $this->replace_img_callback( $matches, $width, $height ); + } else { + return $matches[0]; + } + } + + public function filter_optimize_images( $in, $testing = false ) + { + /* + * potential future functional improvements: + * + * filter for critical CSS. + */ + $to_replace = array(); + $to_preload = ''; + + // hide (no)script tags to avoid replacing (and potentially breaking) images in script tags. + if ( apply_filters( 'autoptimize_filter_imgopt_hide_script', true ) || $this->should_lazyload() ) { + $in = autoptimizeBase::replace_contents_with_marker_if_exists( + 'SCRIPT', + '#is', + $in + ); + } + + // get img preloads as set in post metabox, exploding ", " instead of "," because LCP preload + // could be a shortpixel URL, which has comma's and results in way too many preloads. + $metabox_preloads = array_filter( array_map( 'trim', explode( ', ', wp_strip_all_tags( autoptimizeConfig::get_post_meta_ao_settings( 'ao_post_preload' ) ) ) ) ); + $metabox_preloads = apply_filters( 'autoptimize_filter_images_metabox_preloads', $metabox_preloads ); + + // extract img tags. + if ( preg_match_all( '#]*src[^>]*>#Usmi', $in, $matches ) ) { + foreach ( $matches[0] as $tag ) { + $tag = apply_filters( 'autoptimize_filter_imgopt_tag_preopt', $tag ); + + $orig_tag = $tag; + $imgopt_w = ''; + $imgopt_h = ''; + + // first do (data-)srcsets. + if ( preg_match_all( '#srcset=("|\')(.*)("|\')#Usmi', $tag, $allsrcsets, PREG_SET_ORDER ) ) { + foreach ( $allsrcsets as $srcset ) { + $srcset = $srcset[2]; + $orig_srcset = $srcset; + $srcsets = explode( ',', $srcset ); + foreach ( $srcsets as $indiv_srcset ) { + $indiv_srcset_parts = explode( ' ', trim( $indiv_srcset ) ); + if ( isset( $indiv_srcset_parts[1] ) && rtrim( $indiv_srcset_parts[1], 'w' ) !== $indiv_srcset_parts[1] ) { + $imgopt_w = rtrim( $indiv_srcset_parts[1], 'w' ); + } + if ( $this->can_optimize_image( $indiv_srcset_parts[0], $tag, $testing ) && false === apply_filters( 'autoptimize_filter_imgopt_do_spai', false ) ) { + $imgopt_url = $this->build_imgopt_url( $indiv_srcset_parts[0], $imgopt_w, '' ); + $srcset = str_replace( $indiv_srcset_parts[0], $imgopt_url, $srcset ); + } + } + $tag = str_replace( $orig_srcset, $srcset, $tag ); + } + } + + // proceed with img src. + // get width and height and add to $imgopt_size. + $_get_size = $this->get_size_from_tag( $tag ); + $imgopt_w = $_get_size['width']; + $imgopt_h = $_get_size['height']; + + // then start replacing images src. + if ( preg_match_all( '#src=(?:"|\')(?!data)(.*)(?:"|\')#Usmi', $tag, $urls, PREG_SET_ORDER ) ) { + foreach ( $urls as $url ) { + $full_src_orig = $url[0]; + $url = $url[1]; + if ( $this->can_optimize_image( $url, $tag, $testing ) && false === apply_filters( 'autoptimize_filter_imgopt_do_spai', false ) ) { + $imgopt_url = $this->build_imgopt_url( $url, $imgopt_w, $imgopt_h ); + $full_imgopt_src = str_replace( $url, $imgopt_url, $full_src_orig ); + $tag = str_replace( $full_src_orig, $full_imgopt_src, $tag ); + } + } + } + + // check if the image needs to be prelaoded. + if ( ! empty( $metabox_preloads ) && is_array( $metabox_preloads ) && str_replace( $metabox_preloads, '', $tag ) !== $tag ) { + $to_preload .= $this->create_img_preload_tag( $tag ); + } + + // do lazyload stuff. + if ( $this->should_lazyload( $in ) && ! empty( $url ) ) { + // first do lpiq placeholder logic. + if ( strpos( $url, $this->get_imgopt_host() ) === 0 ) { + // if all img src have been replaced during srcset, we have to extract the + // origin url from the imgopt one to be able to set a lqip placeholder. + $_url = substr( $url, strpos( $url, '/http' ) + 1 ); + } else { + $_url = $url; + } + + $_url = $this->normalize_img_url( $_url ); + + $placeholder = ''; + if ( $this->can_optimize_image( $_url, $tag ) && apply_filters( 'autoptimize_filter_imgopt_lazyload_dolqip', false, $_url ) && false === apply_filters( 'autoptimize_filter_imgopt_do_spai', false ) ) { + $lqip_w = ''; + $lqip_h = ''; + if ( isset( $imgopt_w ) && ! empty( $imgopt_w ) ) { + $lqip_w = ',w_' . $imgopt_w; + } + if ( isset( $imgopt_h ) && ! empty( $imgopt_h ) ) { + $lqip_h = ',h_' . $imgopt_h; + } + $placeholder = $this->get_imgopt_host() . 'client/q_lqip,ret_wait' . $lqip_w . $lqip_h . '/' . $_url; + } + // then call add_lazyload-function with lpiq placeholder if set. + $tag = $this->add_lazyload( $tag, $placeholder ); + } + + // add decoding="async" behind filter, not sure if I'll make it default true yet. + if ( true === apply_filters( 'autoptimize_filter_imgopt_add_decoding', true ) && false === strpos( $tag, ' decoding=' ) ) { + $tag = str_replace( ']*)?\s' . $candidate[1] . '=(?:"|\')(.+?)(?:"|\')(?:[^>]*)?>/s'; + $out = preg_replace_callback( + $_regex, + array( $this, 'replace_img_callback' ), + $out + ); + } + } + } + + // background-image in inline style. + if ( ( strpos( $out, 'background-image:' ) !== false || strpos( $out, 'background:' ) !== false ) && strpos( $out, 'url(' ) !== false && apply_filters( 'autoptimize_filter_imgopt_backgroundimages', true ) ) { + $out = preg_replace_callback( + '/style=(?:"|\')[^<>]*?background(?:-image)?:[^;"\'()>]*url\((?:"|\')?([^"\')]*)(?:"|\')?\)/', + array( $this, 'replace_img_callback' ), + $out + ); + } + + // act on icon links. + if ( ( strpos( $out, '/Um', + array( $this, 'replace_icon_callback' ), + $out + ); + } + + // lazyload picture source tags and bgimage. + if ( $this->should_lazyload() ) { + $out = $this->process_picture_tag( $out, true, true ); + $out = $this->process_bgimage( $out ); + } else { + $out = $this->process_picture_tag( $out, true, false ); + } + + // restore (no)script tags. + if ( apply_filters( 'autoptimize_filter_imgopt_hide_script', true ) || $this->should_lazyload() ) { + $out = autoptimizeBase::restore_marked_content( + 'SCRIPT', + $out + ); + } + + if ( ! empty( $metabox_preloads ) && is_array( $metabox_preloads ) && empty( $to_preload ) && false !== apply_filters( 'autoptimize_filter_imgopt_dopreloads', true ) ) { + // the preload was not in an img tag, so adding a non-responsive preload instead. + foreach ( $metabox_preloads as $img_preload ) { + $to_preload .= apply_filters( 'autoptimize_filter_imgopt_preload_tag_result', $this->kses_preload_link( '' ) ); + } + } + + if ( ! empty( $to_preload ) ) { + $out = autoptimizeExtra::inject_preloads( $to_preload, $out ); + } + + return $out; + } + + public static function get_size_from_tag( $tag ) { + // reusable function to extract widht and height from an image tag + // enforcing a filterable maximum width and height (default 4999X4999). + $width = ''; + $height = ''; + + if ( preg_match( '#width=("|\')(.*)("|\')#Usmi', $tag, $_width ) ) { + if ( strpos( $_width[2], '%' ) === false ) { + $width = (int) $_width[2]; + } + } + if ( preg_match( '#height=("|\')(.*)("|\')#Usmi', $tag, $_height ) ) { + if ( strpos( $_height[2], '%' ) === false ) { + $height = (int) $_height[2]; + } + } + + // check for and enforce (filterable) max sizes. + $_max_width = apply_filters( 'autoptimize_filter_imgopt_max_width', 4999 ); + if ( $width > $_max_width ) { + $_width = $_max_width; + if ( ! empty( $height ) && is_int( $height ) ) { + $height = $_width / $width * $height; + } + $width = $_width; + } + $_max_height = apply_filters( 'autoptimize_filter_imgopt_max_height', 4999 ); + if ( $height > $_max_height ) { + $_height = $_max_height; + if ( ! empty( $width ) && is_int( $width ) ) { + $width = $_height / $height * $width; + } + $height = $_height; + } + + return array( + 'width' => $width, + 'height' => $height, + ); + } + + /** + * Lazyload functions + */ + public static function should_lazyload_wrapper( $no_meta = false ) { + // needed in autoptimizeMain.php. + $self = new self(); + return $self->should_lazyload( '', $no_meta ); + } + + public function should_lazyload( $context = '', $no_meta = false ) { + if ( ! empty( $this->options['autoptimize_imgopt_checkbox_field_3'] ) && false === $this->check_nolazy() ) { + $lazyload_return = true; + } else { + $lazyload_return = false; + } + + // If page/ post check post_meta to see if lazyload is off for page. + if ( false === $no_meta && false === autoptimizeConfig::get_post_meta_ao_settings( 'ao_post_lazyload' ) ) { + $lazyload_return = false; + } + + $lazyload_return = apply_filters( 'autoptimize_filter_imgopt_should_lazyload', $lazyload_return, $context ); + + return $lazyload_return; + } + + public static function check_nolazy() { + if ( array_key_exists( 'ao_nolazy', $_GET ) && '1' === $_GET['ao_nolazy'] ) { + return true; + } else { + return false; + } + } + + public function filter_lazyload_images( $in ) + { + // only used is image optimization is NOT active but lazyload is. + $to_replace = array(); + $to_preload = ''; + + // hide (no)script tags to avoid nesting noscript tags (as lazyloaded images add noscript). + $out = autoptimizeBase::replace_contents_with_marker_if_exists( + 'SCRIPT', + '#is', + $in + ); + + // get img preloads as set in post metabox. + $metabox_preloads = array_filter( array_map( 'trim', explode( ',', wp_strip_all_tags( autoptimizeConfig::get_post_meta_ao_settings( 'ao_post_preload' ) ) ) ) ); + + // extract img tags and add lazyload attribs/ add preloads. + if ( preg_match_all( '#]*src[^>]*>#Usmi', $out, $matches ) ) { + foreach ( $matches[0] as $tag ) { + // check if image needs to be preloaded. + if ( ! empty( $metabox_preloads ) && is_array( $metabox_preloads ) && str_replace( $metabox_preloads, '', $tag ) !== $tag ) { + $to_preload .= $this->create_img_preload_tag( $tag ); + } + + // and lazyloaded. + if ( $this->should_lazyload( $out ) ) { + $to_replace[ $tag ] = $this->add_lazyload( $tag ); + } + } + $out = str_replace( array_keys( $to_replace ), array_values( $to_replace ), $out ); + } + + // and also lazyload picture tag. + $out = $this->process_picture_tag( $out, false, true ); + + // and inline style blocks with background-image. + $out = $this->process_bgimage( $out ); + + // restore noscript tags. + $out = autoptimizeBase::restore_marked_content( + 'SCRIPT', + $out + ); + + if ( ! empty( $metabox_preloads ) && is_array( $metabox_preloads ) && empty( $to_preload ) && false !== apply_filters( 'autoptimize_filter_imgopt_dopreloads', true ) ) { + // the preload was not in an img tag, so adding a non-responsive preload instead. + foreach ( $metabox_preloads as $img_preload ) { + $to_preload .= apply_filters( 'autoptimize_filter_imgopt_preload_tag_result', $this->kses_preload_link( '' ) ); + } + } + + if ( ! empty( $to_preload ) ) { + $out = autoptimizeExtra::inject_preloads( $to_preload, $out ); + } + + return $out; + } + + public function add_lazyload( $tag, $placeholder = '' ) { + // adds actual lazyload-attributes to an image node. + $this->lazyload_counter++; + + $_lazyload_from_nth = ''; + if ( array_key_exists( 'autoptimize_imgopt_number_field_7', $this->options ) ) { + $_lazyload_from_nth = $this->options['autoptimize_imgopt_number_field_7']; + } + $_lazyload_from_nth = apply_filters( 'autoptimize_filter_imgopt_lazyload_from_nth', $_lazyload_from_nth ); + + if ( str_ireplace( $this->get_lazyload_exclusions(), '', $tag ) === $tag && $this->lazyload_counter >= $_lazyload_from_nth ) { + $tag = $this->maybe_fix_missing_quotes( $tag ); + + // store original tag for use in noscript version. + $noscript_tag = ''; + + $lazyload_class = apply_filters( 'autoptimize_filter_imgopt_lazyload_class', 'lazyload' ); + + // insert lazyload class. + $tag = $this->inject_classes_in_tag( $tag, "$lazyload_class " ); + + if ( ! $placeholder || empty( $placeholder ) ) { + // get image width & heigth for placeholder fun (and to prevent content reflow). + $_get_size = $this->get_size_from_tag( $tag ); + $width = $_get_size['width']; + $height = $_get_size['height']; + if ( false === $width || empty( $width ) ) { + $width = 210; // default width for SVG placeholder. + } + if ( false === $height || empty( $height ) ) { + $height = $width / 3 * 2; // if no height, base it on width using the 3/2 aspect ratio. + } + + // insert the actual lazyload stuff. + // see https://css-tricks.com/preventing-content-reflow-from-lazy-loaded-images/ for great read on why we're using empty svg's. + $placeholder = apply_filters( 'autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder( $width, $height ) ); + } + + $tag = str_replace( ' src=', ' data-src=', $tag ); + $tag = str_replace( ' srcset=', ' data-srcset=', $tag ); + $tag = str_replace( '' ); + echo apply_filters( 'autoptimize_filter_imgopt_lazyload_jsconfig', 'window.lazySizesConfig=window.lazySizesConfig||{};window.lazySizesConfig.loadMode=1;' ); + echo apply_filters( 'autoptimize_filter_imgopt_lazyload_js', '' ); + } + + public function create_img_preload_tag( $tag ) { + if ( false === apply_filters( 'autoptimize_filter_imgopt_dopreloads', true ) ) { + return ''; + } + + // clean up; remove tabs/ linebreaks/ spaces. + $tag = preg_replace( '/\s+/', ' ', $tag ); + + // remove noscript. + if ( false !== strpos( $tag, '/mU', '', $tag ); + } + + // rewrite img tag to link preload img. + $_from = array( ' array( + 'rel' => true, + 'as' => true, + 'href' => true, + 'imagesizes' => true, + 'imagesrcset' => true, + 'type' => true, + 'media' => true, + 'fetchpriority' => true, + ), + ); + $_preload = wp_kses( $_preload, $allowed_html ); + + return $_preload; + } + + public static function get_cdn_url() { + // getting CDN url here to avoid having to make bigger changes to autoptimizeBase. + static $cdn_url = null; + + if ( null === $cdn_url ) { + $cdn_url = autoptimizeOptionWrapper::get_option( 'autoptimize_cdn_url', '' ); + $cdn_url = autoptimizeUtils::tweak_cdn_url_if_needed( $cdn_url ); + $cdn_url = apply_filters( 'autoptimize_filter_base_cdnurl', $cdn_url ); + } + + return $cdn_url; + } + + public function get_lazyload_exclusions() { + // returns array of strings that if found in an options; + + // set default exclusions. + $exclude_lazyload_array = array( 'skip-lazy', 'data-no-lazy', 'notlazy', 'data-src', 'data-srcset', 'data:image/', 'data-lazyload', 'rev-slidebg', 'loading="eager"', 'fetchpriority="high"' ); + + // add from setting. + if ( array_key_exists( 'autoptimize_imgopt_text_field_5', $options ) ) { + $exclude_lazyload_option = $options['autoptimize_imgopt_text_field_5']; + if ( ! empty( $exclude_lazyload_option ) ) { + $exclude_lazyload_array = array_merge( $exclude_lazyload_array, array_filter( array_map( 'trim', explode( ',', $options['autoptimize_imgopt_text_field_5'] ) ) ) ); + } + } + + // and filter for developer-initiated changes. + $exclude_lazyload_array = apply_filters( 'autoptimize_filter_imgopt_lazyload_exclude_array', $exclude_lazyload_array ); + } + + return $exclude_lazyload_array; + } + + public function inject_classes_in_tag( $tag, $target_class ) { + if ( strpos( $tag, 'class=' ) !== false ) { + $tag = preg_replace( '/(\sclass\s?=\s?("|\'))/', '$1' . $target_class, $tag ); + } else { + $tag = preg_replace( '/(<[a-zA-Z]*)\s/', '$1 class="' . trim( $target_class ) . '" ', $tag ); + } + + return $tag; + } + + public function get_default_lazyload_placeholder( $imgopt_w, $imgopt_h ) { + return 'data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20' . $imgopt_w . '%20' . $imgopt_h . '%22%3E%3C/svg%3E'; + } + + public function should_ngimg() { + static $ngimg_return = null; + + if ( is_null( $ngimg_return ) ) { + // nextgen img only works if imgopt is active. + if ( ! empty( $this->options['autoptimize_imgopt_checkbox_field_4'] ) && $this->imgopt_active() ) { + $ngimg_return = true; + } else { + $ngimg_return = false; + } + } + + return $ngimg_return; + } + + public function process_picture_tag( $in, $imgopt = false, $lazy = false ) { + // check if ". + if ( strpos( $in, 'get_lazyload_exclusions(); + $to_replace_pict = array(); + + // extract and process each picture-node. + preg_match_all( '##Usmi', $in, $_pictures, PREG_SET_ORDER ); + foreach ( $_pictures as $_picture ) { + $_picture = $this->maybe_fix_missing_quotes( $_picture ); + if ( strpos( $_picture[0], '#Usmi', $_picture[0], $_sources, PREG_SET_ORDER ) !== false ) { + foreach ( $_sources as $_source ) { + $_picture_replacement = $_source[0]; + + // should we optimize the image? + if ( $imgopt && $this->can_optimize_image( $_source[1], $_picture[0] ) ) { + $_picture_replacement = str_replace( $_source[1], $this->build_imgopt_url( $_source[1] ), $_picture_replacement ); + } + // should we lazy-load? + if ( $lazy && $this->should_lazyload() && str_ireplace( $_exclusions, '', $_picture_replacement ) === $_picture_replacement ) { + $_picture_replacement = str_replace( ' srcset=', ' data-srcset=', $_picture_replacement ); + } + $to_replace_pict[ $_source[0] ] = $_picture_replacement; + } + } + } + + // and return the fully procesed $in. + $out = str_replace( array_keys( $to_replace_pict ), array_values( $to_replace_pict ), $in ); + + return $out; + } + + public function process_bgimage( $in ) { + if ( strpos( $in, 'background-image:' ) !== false && apply_filters( 'autoptimize_filter_imgopt_lazyload_backgroundimages', true ) ) { + $out = preg_replace_callback( + '/(<(?:article|aside|body|div|footer|header|p|section|span|table)[^>]*)\sstyle=(?:"|\')[^<>]*?background-image:\s?url\((?:"|\')?([^"\')]*)(?:"|\')?\)[^>]*/', + array( $this, 'lazyload_bgimg_callback' ), + $in + ); + return $out; + } + return $in; + } + + public function lazyload_bgimg_callback( $matches ) { + if ( str_ireplace( $this->get_lazyload_exclusions(), '', $matches[0] ) === $matches[0] ) { + // get placeholder & lazyload class strings. + $placeholder = apply_filters( 'autoptimize_filter_imgopt_lazyload_placeholder', $this->get_default_lazyload_placeholder( 500, 300 ) ); + $lazyload_class = apply_filters( 'autoptimize_filter_imgopt_lazyload_class', 'lazyload' ); + // remove quotes from url() to be able to replace in next step. + $out = str_replace( array( "url('" . $matches[2] . "')", 'url("' . $matches[2] . '")' ), 'url(' . $matches[2] . ')', $matches[0] ); + // replace background-image URL with SVG placeholder. + $out = str_replace( 'url(' . $matches[2], 'url(' . $placeholder, $out ); + // sanitize bgimg src for quote sillyness. + $bgimg_src = $this->fix_silly_bgimg_quotes( $matches[2] ); + // add data-bg attribute with real background-image URL for lazyload to pick up. + $out = str_replace( $matches[1], $matches[1] . ' data-bg="' . $bgimg_src . '"', $out ); + // and finally add lazyload class to tag. + $out = $this->inject_classes_in_tag( $out, "$lazyload_class " ); + return $out; + } + return $matches[0]; + } + + public function fix_silly_bgimg_quotes( $tag_in ) { + // some themes/ pagebuilders wrap backgroundimages in HTML-encoded quotes (or linebreaks) which breaks imgopt/ lazyloading, this removes them. + return trim( str_replace( array( "\r\n", '"', '"', '"', ''', ''' ), '', $tag_in ) ); + } + + public function maybe_fix_missing_quotes( $tag_in ) { + // W3TC's Minify_HTML class removes quotes around attribute value, this re-adds them for the class and width/height attributes so we can lazyload properly. + if ( file_exists( WP_PLUGIN_DIR . '/w3-total-cache/w3-total-cache.php' ) && class_exists( 'Minify_HTML' ) && apply_filters( 'autoptimize_filter_imgopt_fixquotes', true ) ) { + $tag_out = preg_replace( '/class\s?=([^("|\')]*)(\s|>)/U', 'class=\'$1\'$2', $tag_in ); + $tag_out = preg_replace( '/\s(width|height)=(?:"|\')?([^\s"\'>]*)(?:"|\')?/', ' $1=\'$2\'', $tag_out ); + return $tag_out; + } else { + return $tag_in; + } + } + + /** + * Admin page logic and related functions below. + */ + public function imgopt_admin_menu() + { + // no acces if multisite and not network admin and no site config allowed. + if ( autoptimizeConfig::should_show_menu_tabs() ) { + add_submenu_page( + '', + 'autoptimize_imgopt', + 'autoptimize_imgopt', + 'manage_options', + 'autoptimize_imgopt', + array( $this, 'imgopt_options_page' ) + ); + } + register_setting( 'autoptimize_imgopt_settings', 'autoptimize_imgopt_settings' ); + } + + public function add_imgopt_tab( $in ) + { + if ( autoptimizeConfig::should_show_menu_tabs() ) { + $in = array_merge( $in, array( 'autoptimize_imgopt' => apply_filters( 'autoptimize_filter_imgopt_tab_text', esc_html__( 'Images', 'autoptimize' ) ) ) ); + } + + return $in; + } + + public function imgopt_options_page() + { + // phpcs:disable Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace + // phpcs:disable Generic.Formatting.DisallowMultipleStatements.SameLine + + // Check querystring for "refreshCacheChecker" and call cachechecker if so. + if ( array_key_exists( 'refreshImgProvStats', $_GET ) && 1 == $_GET['refreshImgProvStats'] ) { + $this->query_img_provider_stats( true ); + } + + $options = $this->fetch_options(); + $sp_url_suffix = $this->get_service_url_suffix(); + ?> + + +
+

+ + +

+ +

+ + +

+ ', '' ); + ?> +

+ + + launch_ok() ) { ?> +

+ +

+ + + +

+ ', '' ); + ?> +

+ +
' method='post'> + +

+ + + + + + + > + + + + > + + + + should_ngimg() ) { + ?> + > + + + + + + + + + + + > + + + + > + + + +
+ + get_imgopt_status_notice(); + if ( $_notice ) { + switch ( $_notice['status'] ) { + case 2: + $_notice_color = 'green'; + break; + case 1: + $_notice_color = 'orange'; + break; + case -1: + case -2: + case -3: + $_notice_color = 'red'; + break; + default: + $_notice_color = 'green'; + } + echo apply_filters( 'autoptimize_filter_imgopt_settings_status', '

' . esc_html__( 'Shortpixel status: ', 'autoptimize' ) . '' . $_notice['notice'] . '

' ); + } else { + // translators: link points to shortpixel. + $upsell_msg_1 = '

' . sprintf( esc_html__( 'Get more Google love by speeding up your website. Start serving on-the-fly optimized images (also in the "next-gen" %4$sWebP%5$s image format) by %1$sShortPixel%2$s. No additional image optimization plugins are needed: your images are optimized, cached and served from %3$sShortPixel\'s global CDN%2$s.', 'autoptimize' ), '', '', '', '', '' ); + if ( 'launch' === $options['availabilities']['extra_imgopt']['status'] ) { + $upsell_msg_2 = sprintf( esc_html__( 'For a limited time only, this service is offered free for all Autoptimize users, %1$sdon\'t miss the chance to test it%2$s and see how much it could improve your site\'s speed.', 'autoptimize' ), '', '' ); + } else { + // translators: 1st link points to autoptimize.com.pro, 2nd to shortpixel. + $upsell_msg_2 = sprintf( esc_html__( 'For (nearly) %5$sunlimited image optimizations %1$sbuy Autoptimize Pro%2$s%6$s which also includes Critical CSS and extra "booster" options or %3$ssign up at Shortpixel%4$s.', 'autoptimize' ), '', '', '', '', '', '' ); + } + echo apply_filters( 'autoptimize_filter_imgopt_settings_copy', $upsell_msg_1 . ' ' . $upsell_msg_2 . '

' ); + } + // translators: link points to shortpixel FAQ. + $faqcopy = sprintf( esc_html__( '%3$sQuestions%4$s? Take a look at the %1$sAutoptimize + ShortPixel FAQ%2$s!', 'autoptimize' ), '', '', '', '' ); + $faqcopy = $faqcopy . ' ' . esc_html__( 'Only works for websites and images that are publicly available.', 'autoptimize' ); + // translators: links points to shortpixel TOS & Privacy Policy. + $toscopy = sprintf( esc_html__( 'Usage of this feature is subject to Shortpixel\'s %1$sTerms of Use%2$s and %3$sPrivacy policy%4$s.', 'autoptimize' ), '', '', '', '' ); + echo apply_filters( 'autoptimize_filter_imgopt_settings_tos', '

' . $faqcopy . ' ' . $toscopy . '

' ); + ?> +
+ +
+ +

+ ', '' ) ); + ?> +

+
+ + +

+ get_img_quality_setting() && $this->should_ngimg() ) { + _e( 'Your Image optimization quality is set to "lossless", but AVIF files can end up being bigger than jpeg or webp for lossless images, so consider choosing a different quality or disable the AVIF option.', 'autoptimize' ); + } + ?> +

+ +
+ +
+ +
+ +
+

+
+ + imgopt_active() && apply_filters( 'autoptimize_filter_imgopt_status_shortpixel', true ) ) { + $_imgopt_notice = ''; + $_stat = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_provider_stat', '' ); + $_site_host = AUTOPTIMIZE_SITE_DOMAIN; + $_imgopt_upsell = 'https://misc.optimizingmatters.com/partners/?from=aofree&partner=shortpixelupsell'; + $_imgopt_assoc = 'https://shortpixel.helpscoutdocs.com/article/94-how-to-associate-a-domain-to-my-account'; + $_imgopt_unreach = 'https://shortpixel.helpscoutdocs.com/article/148-why-are-my-images-redirected-from-cdn-shortpixel-ai'; + + if ( is_array( $_stat ) ) { + if ( 1 == $_stat['Status'] ) { + // translators: "add more credits" will appear in a "a href". + $_imgopt_notice = sprintf( esc_html__( 'Your ShortPixel image optimization and CDN quota is almost used, make sure you %1$sadd more credits%2$s to avoid slowing down your website %4$sor consider using %3$sAutoptimize Pro%2$s which comes with (nearly) unlimited image optimization%5$s but also automated critical CSS and extra booster options.', 'autoptimize' ), '', '', '', '', '' ); + } elseif ( -1 == $_stat['Status'] || -2 == $_stat['Status'] ) { + // translators: "add more credits" will appear in a "a href". + $_imgopt_notice = sprintf( esc_html__( 'Your ShortPixel image optimization and CDN quota has been exhausted, %1$sadd more credits%2$s to continue to quickly deliver optimized images on your website %4$sor consider using %3$sAutoptimize Pro%2$s which comes with (nearly) unlimited image optimization%5$s but also automated critical CSS and extra booster options.', 'autoptimize' ), '', '', '', '', '' ); + // translators: "associate your domain" will appear in a "a href". + $_imgopt_notice = $_imgopt_notice . ' ' . sprintf( esc_html__( 'If you have enough CDN quota remaining, then you may need to %1$sassociate your domain%2$s to your Shortpixel account.', 'autoptimize' ), '', '' ); + } elseif ( -3 == $_stat['Status'] ) { + // translators: "check the documentation here" will appear in a "a href". + $_imgopt_notice = sprintf( esc_html__( 'It seems ShortPixel image optimization is not able to fetch images from your site, %1$scheck the documentation here%2$s for more information', 'autoptimize' ), '', '' ); + } else { + $_imgopt_upsell = 'https://misc.optimizingmatters.com/partners/?from=aofree&partner=shortpixelupsell'; + // translators: "log in to check your account" will appear in a "a href". + $_imgopt_notice = sprintf( esc_html__( 'Your ShortPixel image optimization and CDN quota are in good shape, %1$slog in to check your account%2$s.', 'autoptimize' ), '', '' ); + } + + // add info on freshness + refresh link if status is not 2 (good shape). + if ( 2 != $_stat['Status'] ) { + $_imgopt_stats_refresh_url = add_query_arg( + array( + 'page' => 'autoptimize_imgopt', + 'refreshImgProvStats' => '1', + ), + admin_url( 'options-general.php' ) + ); + if ( $_stat && array_key_exists( 'timestamp', $_stat ) && ! empty( $_stat['timestamp'] ) ) { + $_imgopt_stats_last_run = esc_html__( 'based on status at ', 'autoptimize' ) . date_i18n( autoptimizeOptionWrapper::get_option( 'time_format' ), $_stat['timestamp'] ); + } else { + $_imgopt_stats_last_run = esc_html__( 'based on previously fetched data', 'autoptimize' ); + } + $_imgopt_notice .= ' (' . $_imgopt_stats_last_run . ', '; + // translators: "here to refresh" links to the Autoptimize Extra page and forces a refresh of the img opt stats. + $_imgopt_notice .= sprintf( esc_html__( 'you can click %1$shere to refresh your quota status%2$s', 'autoptimize' ), '', ').' ); + } + + // and make the full notice filterable. + $_imgopt_notice = apply_filters( 'autoptimize_filter_imgopt_notice', $_imgopt_notice ); + + return array( + 'status' => $_stat['Status'], + 'notice' => $_imgopt_notice, + ); + } + } + return false; + } + + public static function get_imgopt_status_notice_wrapper() { + // needed for notice being shown in autoptimizeCacheChecker.php. + $self = new self(); + return $self->get_imgopt_status_notice(); + } + + /** + * Get img provider stats (used to display notice). + * + * @param bool $_refresh Should the stats be forcefully refreshed or not. + */ + public function query_img_provider_stats( $_refresh = false ) { + if ( ! empty( $this->options['autoptimize_imgopt_checkbox_field_1'] ) && apply_filters( 'autoptimize_filter_imgopt_status_shortpixel', true ) ) { + $url = ''; + $stat_dom = 'https://no-cdn.shortpixel.ai/'; + $endpoint = $stat_dom . 'read-domain/'; + $domain = AUTOPTIMIZE_SITE_DOMAIN; + + // make sure parse_url result makes sense, keeping $url empty if not. + if ( $domain && ! empty( $domain ) ) { + $url = $endpoint . $domain; + if ( true === $_refresh ) { + $url = $url . '/refresh'; + } + } + + $url = apply_filters( + 'autoptimize_filter_imgopt_stat_url', + $url + ); + + // only do the remote call if $url is not empty to make sure no parse_url + // weirdness results in useless calls. + if ( ! empty( $url ) ) { + $response = wp_remote_get( $url ); + if ( ! is_wp_error( $response ) ) { + if ( '200' == wp_remote_retrieve_response_code( $response ) ) { + $stats = json_decode( wp_remote_retrieve_body( $response ), true ); + autoptimizeOptionWrapper::update_option( 'autoptimize_imgopt_provider_stat', $stats ); + } + } + } + } + } + + public static function get_img_provider_stats() + { + // wrapper around query_img_provider_stats() so we can get to $this->options from cronjob() in autoptimizeCacheChecker. + $self = new self(); + return $self->query_img_provider_stats(); + } + + /** + * Determines and returns the service launch status. + * + * @return bool + */ + public function launch_ok() + { + static $launch_status = null; + + if ( null === $launch_status ) { + $avail_imgopt = ''; + if ( is_array( $this->options ) && array_key_exists( 'availabilities', $this->options ) && is_array( $this->options['availabilities'] ) && array_key_exists( 'extra_imgopt', $this->options['availabilities'] ) ) { + $avail_imgopt = $this->options['availabilities']['extra_imgopt']; + } + + $magic_number = intval( substr( md5( parse_url( AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST ) ), 0, 3 ), 16 ); + $has_launched = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_launched', '' ); + $launch_status = false; + if ( $has_launched || ( is_array( $avail_imgopt ) && array_key_exists( 'launch-threshold', $avail_imgopt ) && $magic_number < $avail_imgopt['launch-threshold'] ) ) { + $launch_status = true; + if ( ! $has_launched ) { + autoptimizeOptionWrapper::update_option( 'autoptimize_imgopt_launched', 'on' ); + } + } + } + + return $launch_status; + } + + public static function launch_ok_wrapper() { + // needed for "plug" notice in autoptimizeMain.php. + $self = new self(); + return $self->launch_ok(); + } + + public function get_imgopt_provider_userstatus() { + static $_provider_userstatus = null; + + if ( is_null( $_provider_userstatus ) ) { + $_stat = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_provider_stat', '' ); + if ( is_array( $_stat ) ) { + if ( array_key_exists( 'Status', $_stat ) ) { + $_provider_userstatus['Status'] = $_stat['Status']; + } else { + // if no stats then we assume all is well. + $_provider_userstatus['Status'] = 2; + } + if ( array_key_exists( 'timestamp', $_stat ) ) { + $_provider_userstatus['timestamp'] = $_stat['timestamp']; + } else { + // if no timestamp then we return "". + $_provider_userstatus['timestamp'] = ''; + } + } else { + // no provider_stat yet, assume/ return all OK. + $_provider_userstatus['Status'] = 2; + $_provider_userstatus['timestamp'] = ''; + } + } + + return $_provider_userstatus; + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeMain.php b/wp-content/plugins/autoptimize/classes/autoptimizeMain.php new file mode 100644 index 0000000..3b9dd8a --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeMain.php @@ -0,0 +1,855 @@ +version = $version; + $this->filepath = $filepath; + } + + public function run() + { + $this->add_hooks(); + + // Runs cache size checker. + $checker = new autoptimizeCacheChecker(); + $checker->run(); + } + + protected function add_hooks() + { + if ( ! defined( 'AUTOPTIMIZE_SETUP_INITHOOK' ) ) { + define( 'AUTOPTIMIZE_SETUP_INITHOOK', 'plugins_loaded' ); + } + + add_action( AUTOPTIMIZE_SETUP_INITHOOK, array( $this, 'setup' ) ); + add_action( AUTOPTIMIZE_SETUP_INITHOOK, array( $this, 'hook_page_cache_purge' ) ); + + add_action( 'autoptimize_setup_done', array( $this, 'version_upgrades_check' ) ); + add_action( 'autoptimize_setup_done', array( $this, 'check_cache_and_run' ) ); + add_action( 'autoptimize_setup_done', array( $this, 'maybe_run_ao_compat' ), 10 ); + add_action( 'autoptimize_setup_done', array( $this, 'maybe_run_ao_extra' ), 15 ); + add_action( 'autoptimize_setup_done', array( $this, 'maybe_run_admin_only_trinkets' ), 20 ); + add_action( 'autoptimize_setup_done', array( $this, 'maybe_run_criticalcss' ), 11 ); + add_action( 'autoptimize_setup_done', array( $this, 'maybe_run_notfound_fallback' ), 10 ); + + add_action( 'init', array( $this, 'load_textdomain' ) ); + + if ( is_multisite() && is_admin() ) { + // Only if multisite and if in admin we want to check if we need to save options on network level. + add_action( 'init', 'autoptimizeOptionWrapper::check_multisite_on_saving_options' ); + } + + // register uninstall & deactivation hooks. + register_uninstall_hook( $this->filepath, 'autoptimizeMain::on_uninstall' ); + register_deactivation_hook( $this->filepath, 'autoptimizeMain::on_deactivation' ); + } + + public function load_textdomain() + { + load_plugin_textdomain( 'autoptimize' ); + } + + public function setup() + { + // Do we gzip in php when caching or is the webserver doing it? + define( 'AUTOPTIMIZE_CACHE_NOGZIP', (bool) autoptimizeOptionWrapper::get_option( 'autoptimize_cache_nogzip' ) ); + + // These can be overridden by specifying them in wp-config.php or such. + if ( ! defined( 'AUTOPTIMIZE_WP_CONTENT_NAME' ) ) { + define( 'AUTOPTIMIZE_WP_CONTENT_NAME', '/' . wp_basename( WP_CONTENT_DIR ) ); + } + if ( ! defined( 'AUTOPTIMIZE_CACHE_CHILD_DIR' ) ) { + define( 'AUTOPTIMIZE_CACHE_CHILD_DIR', '/cache/autoptimize/' ); + } + if ( ! defined( 'AUTOPTIMIZE_CACHEFILE_PREFIX' ) ) { + define( 'AUTOPTIMIZE_CACHEFILE_PREFIX', 'autoptimize_' ); + } + // Note: trailing slash is not optional! + if ( ! defined( 'AUTOPTIMIZE_CACHE_DIR' ) ) { + define( 'AUTOPTIMIZE_CACHE_DIR', autoptimizeCache::get_pathname() ); + } + + define( 'WP_ROOT_DIR', substr( WP_CONTENT_DIR, 0, strlen( WP_CONTENT_DIR ) - strlen( AUTOPTIMIZE_WP_CONTENT_NAME ) ) ); + + if ( ! defined( 'AUTOPTIMIZE_WP_SITE_URL' ) ) { + if ( function_exists( 'domain_mapping_siteurl' ) ) { + define( 'AUTOPTIMIZE_WP_SITE_URL', domain_mapping_siteurl( get_current_blog_id() ) ); + } else { + define( 'AUTOPTIMIZE_WP_SITE_URL', site_url() ); + } + } + if ( ! defined( 'AUTOPTIMIZE_WP_CONTENT_URL' ) ) { + if ( function_exists( 'get_original_url' ) ) { + define( 'AUTOPTIMIZE_WP_CONTENT_URL', str_replace( get_original_url( AUTOPTIMIZE_WP_SITE_URL ), AUTOPTIMIZE_WP_SITE_URL, content_url() ) ); + } else { + define( 'AUTOPTIMIZE_WP_CONTENT_URL', content_url() ); + } + } + if ( ! defined( 'AUTOPTIMIZE_CACHE_URL' ) ) { + if ( is_multisite() && apply_filters( 'autoptimize_separate_blog_caches', true ) ) { + $blog_id = get_current_blog_id(); + define( 'AUTOPTIMIZE_CACHE_URL', AUTOPTIMIZE_WP_CONTENT_URL . AUTOPTIMIZE_CACHE_CHILD_DIR . $blog_id . '/' ); + } else { + define( 'AUTOPTIMIZE_CACHE_URL', AUTOPTIMIZE_WP_CONTENT_URL . AUTOPTIMIZE_CACHE_CHILD_DIR ); + } + } + if ( ! defined( 'AUTOPTIMIZE_WP_ROOT_URL' ) ) { + define( 'AUTOPTIMIZE_WP_ROOT_URL', str_replace( AUTOPTIMIZE_WP_CONTENT_NAME, '', AUTOPTIMIZE_WP_CONTENT_URL ) ); + } + if ( ! defined( 'AUTOPTIMIZE_HASH' ) ) { + define( 'AUTOPTIMIZE_HASH', wp_hash( AUTOPTIMIZE_CACHE_URL ) ); + } + if ( ! defined( 'AUTOPTIMIZE_SITE_DOMAIN' ) ) { + define( 'AUTOPTIMIZE_SITE_DOMAIN', parse_url( AUTOPTIMIZE_WP_SITE_URL, PHP_URL_HOST ) ); + } + + // Multibyte-capable string replacements are available with a filter. + // Also requires 'mbstring' extension. + $with_mbstring = apply_filters( 'autoptimize_filter_main_use_mbstring', false ); + if ( $with_mbstring ) { + autoptimizeUtils::mbstring_available( \extension_loaded( 'mbstring' ) ); + } else { + autoptimizeUtils::mbstring_available( false ); + } + + do_action( 'autoptimize_setup_done' ); + } + + /** + * Checks if there's a need to upgrade/update options and whatnot, + * in which case we might need to do stuff and flush the cache + * to avoid old versions of aggregated files lingering around. + */ + public function version_upgrades_check() + { + autoptimizeVersionUpdatesHandler::check_installed_and_update( $this->version ); + } + + public function check_cache_and_run() + { + if ( autoptimizeCache::cacheavail() ) { + $conf = autoptimizeConfig::instance(); + if ( $conf->get( 'autoptimize_html' ) || $conf->get( 'autoptimize_js' ) || $conf->get( 'autoptimize_css' ) || autoptimizeImages::imgopt_active() || autoptimizeImages::should_lazyload_wrapper() ) { + if ( ! defined( 'AUTOPTIMIZE_NOBUFFER_OPTIMIZE' ) ) { + // Hook into WordPress frontend. + if ( defined( 'AUTOPTIMIZE_INIT_EARLIER' ) ) { + add_action( + 'init', + array( $this, 'start_buffering' ), + self::INIT_EARLIER_PRIORITY + ); + } else { + if ( ! defined( 'AUTOPTIMIZE_HOOK_INTO' ) ) { + define( 'AUTOPTIMIZE_HOOK_INTO', 'template_redirect' ); + } + add_action( + constant( 'AUTOPTIMIZE_HOOK_INTO' ), + array( $this, 'start_buffering' ), + self::DEFAULT_HOOK_PRIORITY + ); + } + } + + // And disable Jetpack's site accelerator if JS or CSS opt. are active. + if ( class_exists( 'Jetpack' ) && apply_filters( 'autoptimize_filter_main_disable_jetpack_cdn', true ) && ( $conf->get( 'autoptimize_js' ) || $conf->get( 'autoptimize_css' ) || autoptimizeImages::imgopt_active() ) ) { + add_filter( 'jetpack_force_disable_site_accelerator', '__return_true' ); // this does not seemt to work any more? + if ( true === autoptimizeImages::imgopt_active() ) { + // only disable photon if AO is optimizing images. + add_filter( 'jetpack_photon_skip_for_url', '__return_true' ); + } + } + + // Add "no cache found" notice. + add_action( 'admin_notices', 'autoptimizeMain::notice_nopagecache', 99 ); + add_action( 'admin_notices', 'autoptimizeMain::notice_potential_conflict', 99 ); + } + } else { + add_action( 'admin_notices', 'autoptimizeMain::notice_cache_unavailable' ); + } + } + + public function maybe_run_ao_extra() + { + if ( apply_filters( 'autoptimize_filter_extra_activate', true ) ) { + $ao_imgopt = new autoptimizeImages(); + $ao_imgopt->run(); + $ao_extra = new autoptimizeExtra(); + $ao_extra->run(); + + // And show the imgopt notice. + add_action( 'admin_notices', 'autoptimizeMain::notice_plug_imgopt' ); + add_action( 'admin_notices', 'autoptimizeMain::notice_imgopt_issue' ); + } + } + + public function maybe_run_admin_only_trinkets() + { + // Loads partners tab and exit survey code if in admin (and not in admin-ajax.php)! + if ( autoptimizeConfig::is_admin_and_not_ajax() ) { + new autoptimizePartners(); + new autoptimizeExitSurvey(); + new autoptimizeProTab(); + } + } + + public function criticalcss() + { + if ( apply_filters( 'autoptimize_filter_criticalcss_active', true ) && ! autoptimizeUtils::is_plugin_active( 'autoptimize-criticalcss/ao_criticss_aas.php' ) ) { + return $this->_criticalcss; + } else { + return false; + } + } + + public function maybe_run_criticalcss() + { + // Loads criticalcss if the filter returns true & old power-up is not active. + if ( apply_filters( 'autoptimize_filter_criticalcss_active', true ) && ! autoptimizeUtils::is_plugin_active( 'autoptimize-criticalcss/ao_criticss_aas.php' ) ) { + $this->_criticalcss = new autoptimizeCriticalCSSBase(); + $this->_criticalcss->setup(); + $this->_criticalcss->load_requires(); + } + } + + public function maybe_run_notfound_fallback() + { + if ( autoptimizeCache::do_fallback() ) { + add_action( 'template_redirect', array( 'autoptimizeCache', 'wordpress_notfound_fallback' ) ); + } + } + + public function maybe_run_ao_compat() + { + $conf = autoptimizeConfig::instance(); + + // Condtionally loads the compatibility-class to ensure more out-of-the-box compatibility with big players. + $_run_compat = true; + + if ( 'on' === $conf->get( 'autoptimize_installed_before_compatibility' ) ) { + // If AO was already running before Compatibility logic was added, don't run compat by default + // because it can be assumed everything works and we want to avoid (perf) regressions that + // could occur due to compatibility code. + $_run_compat = false; + } + + if ( apply_filters( 'autoptimize_filter_init_compatibility', $_run_compat ) ) { + new autoptimizeCompatibility(); + } + } + + public function hook_page_cache_purge() + { + // hook into a collection of page cache purge actions if filter allows. + if ( apply_filters( 'autoptimize_filter_main_hookpagecachepurge', true ) ) { + $page_cache_purge_actions = array( + 'after_rocket_clean_domain', // exists. + 'hyper_cache_purged', // Stefano confirmed this will be added. + 'w3tc_flush_posts', // exits. + 'w3tc_flush_all', // exists. + 'ce_action_cache_cleared', // Sven confirmed this will be added. + 'aoce_action_cache_cleared', // Some other cache enabler. + 'comet_cache_wipe_cache', // still to be confirmed by Raam. + 'wp_cache_cleared', // cfr. https://github.com/Automattic/wp-super-cache/pull/537. + 'wpfc_delete_cache', // Emre confirmed this will be added this. + 'swift_performance_after_clear_all_cache', // swift perf. yeah! + 'wpo_cache_flush', // wp-optimize. + 'rt_nginx_helper_after_fastcgi_purge_all', // nginx helper. + ); + $page_cache_purge_actions = apply_filters( 'autoptimize_filter_main_pagecachepurgeactions', $page_cache_purge_actions ); + foreach ( $page_cache_purge_actions as $purge_action ) { + add_action( $purge_action, 'autoptimizeCache::clearall_actionless' ); + } + } + } + + /** + * Setup output buffering if needed. + * + * @return void + */ + public function start_buffering() + { + if ( $this->should_buffer() ) { + + // Load speedupper conditionally (true by default). + if ( apply_filters( 'autoptimize_filter_speedupper', true ) ) { + $ao_speedupper = new autoptimizeSpeedupper(); + } + + $conf = autoptimizeConfig::instance(); + + if ( $conf->get( 'autoptimize_js' ) ) { + if ( ! defined( 'CONCATENATE_SCRIPTS' ) ) { + define( 'CONCATENATE_SCRIPTS', false ); + } + if ( ! defined( 'COMPRESS_SCRIPTS' ) ) { + define( 'COMPRESS_SCRIPTS', false ); + } + } + + if ( $conf->get( 'autoptimize_css' ) ) { + if ( ! defined( 'COMPRESS_CSS' ) ) { + define( 'COMPRESS_CSS', false ); + } + } + + if ( apply_filters( 'autoptimize_filter_obkiller', false ) ) { + while ( ob_get_level() > 0 ) { + ob_end_clean(); + } + } + + // Now, start the real thing! + ob_start( array( $this, 'end_buffering' ) ); + } + } + + /** + * Returns true if all the conditions to start output buffering are satisfied. + * + * @param bool $doing_tests Allows overriding the optimization of only + * deciding once per request (for use in tests). + * @return bool + */ + public static function should_buffer( $doing_tests = false ) + { + static $do_buffering = null; + + // Only check once in case we're called multiple times by others but + // still allows multiple calls when doing tests. + if ( null === $do_buffering || $doing_tests ) { + + $ao_noptimize = false; + + // Checking for DONOTMINIFY constant as used by e.g. WooCommerce POS. + if ( defined( 'DONOTMINIFY' ) && ( constant( 'DONOTMINIFY' ) === true || constant( 'DONOTMINIFY' ) === 'true' ) ) { + $ao_noptimize = true; + } + + // Skip checking query strings if they're disabled. + if ( apply_filters( 'autoptimize_filter_honor_qs_noptimize', true ) ) { + // Check for `ao_noptimize` (and other) keys in the query string + // to get non-optimized page for debugging. + $keys = array( + 'ao_noptimize', + 'ao_noptirocket', + ); + foreach ( $keys as $key ) { + if ( array_key_exists( $key, $_GET ) && '1' === $_GET[ $key ] ) { + $ao_noptimize = true; + break; + } + } + } + + // If setting says not to optimize logged in user and user is logged in... + if ( false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option( 'autoptimize_optimize_logged', 'on' ) && is_user_logged_in() && current_user_can( 'edit_posts' ) ) { + $ao_noptimize = true; + } + + // If setting says not to optimize cart/checkout. + if ( false === $ao_noptimize && 'on' !== autoptimizeOptionWrapper::get_option( 'autoptimize_optimize_checkout', 'off' ) ) { + // Checking for woocommerce, easy digital downloads and wp ecommerce... + foreach ( array( 'is_checkout', 'is_cart', 'is_account_page', 'edd_is_checkout', 'wpsc_is_cart', 'wpsc_is_checkout' ) as $func ) { + if ( function_exists( $func ) && $func() ) { + $ao_noptimize = true; + break; + } + } + } + + // Misc. querystring paramaters that will stop AO from doing optimizations (pagebuilders + + // 2 generic parameters that could/ should become standard between optimization plugins?). + if ( false === $ao_noptimize ) { + $_qs_showstoppers = array( 'no_cache', 'no_optimize', 'tve', 'elementor-preview', 'fl_builder', 'vc_action', 'et_fb', 'bt-beaverbuildertheme', 'ct_builder', 'fb-edit', 'siteorigin_panels_live_editor', 'preview', 'td_action' ); + + // doing Jonathan a quick favor to allow correct unused CSS generation ;-) . + if ( apply_filters( 'autoptimize_filter_main_showstoppers_do_wp_rocket_a_favor', true ) ) { + $_qs_showstoppers[] = 'nowprocket'; + } + + foreach ( $_qs_showstoppers as $_showstopper ) { + if ( array_key_exists( $_showstopper, $_GET ) ) { + $ao_noptimize = true; + break; + } + } + } + + // Also honor PageSpeed=off parameter as used by mod_pagespeed, in use by some pagebuilders, + // see https://www.modpagespeed.com/doc/experiment#ModPagespeed for info on that. + if ( false === $ao_noptimize && array_key_exists( 'PageSpeed', $_GET ) && 'off' === $_GET['PageSpeed'] ) { + $ao_noptimize = true; + } + + // If page/ post check post_meta to see if optimize is off. + if ( false === autoptimizeConfig::get_post_meta_ao_settings( 'ao_post_optimize' ) ) { + $ao_noptimize = true; + } + + // And finally allows blocking of autoptimization on your own terms regardless of above decisions. + $ao_noptimize = (bool) apply_filters( 'autoptimize_filter_noptimize', $ao_noptimize ); + + // Check for site being previewed in the Customizer (available since WP 4.0). + $is_customize_preview = false; + if ( function_exists( 'is_customize_preview' ) && is_customize_preview() ) { + $is_customize_preview = is_customize_preview(); + } + + // explicitly disable when is_login exists and is true but don't use it direclty because older versions of WordPress don't have that yet. + $is_login = false; + if ( function_exists( 'is_login' ) && true === is_login() ) { + $is_login = true; + } + + /** + * We only buffer the frontend requests (and then only if not a feed + * and not turned off explicitly and not when being previewed in Customizer)! + * NOTE: Tests throw a notice here due to is_feed() being called + * while the main query hasn't been ran yet. Thats why we use + * AUTOPTIMIZE_INIT_EARLIER in tests. + */ + $do_buffering = ( ! is_admin() && ! is_feed() && ! is_embed() && ! $is_login && ! $is_customize_preview && ! $ao_noptimize ); + } + + return $do_buffering; + } + + /** + * Returns true if given markup is considered valid/processable/optimizable. + * + * @param string $content Markup. + * + * @return bool + */ + public function is_valid_buffer( $content ) + { + // Defaults to true. + $valid = true; + + $has_no_html_tag = ( false === stripos( $content, '/i', ltrim( $content ) ) > 0 ); + $has_noptimize_page = ( false !== stripos( $content, '' ) ); + + if ( $has_no_html_tag ) { + // Can't be valid amp markup without an html tag preceding it. + $is_amp_markup = false; + } else { + $is_amp_markup = self::is_amp_markup( $content ); + } + + // If it's not html, or if it's amp or contains xsl stylesheets we don't touch it. + if ( $has_no_html_tag && ! $has_html5_doctype || $is_amp_markup || $has_xsl_stylesheet || $has_noptimize_page ) { + $valid = false; + } + + return $valid; + } + + /** + * Returns true if given $content is considered to be AMP markup. + * This is far from actual validation against AMP spec, but it'll do for now. + * + * @param string $content Markup to check. + * + * @return bool + */ + public static function is_amp_markup( $content ) + { + // Short-circuit if the page is already AMP from the start. + if ( + preg_match( + sprintf( + '#^(?:|\s+)*+]*?\s(%1$s|%2$s|%3$s)(\s|=|>)#is', + 'amp', + "\xE2\x9A\xA1", // From \AmpProject\Attribute::AMP_EMOJI. + "\xE2\x9A\xA1\xEF\xB8\x8F" // From \AmpProject\Attribute::AMP_EMOJI_ALT, per https://github.com/ampproject/amphtml/issues/25990. + ), + $content + ) + ) { + return true; + } + + // Or else short-circuit if the AMP plugin will be processing the output to be an AMP page. + if ( function_exists( 'amp_is_request' ) ) { + return amp_is_request(); // For AMP plugin v2.0+. + } elseif ( function_exists( 'is_amp_endpoint' ) ) { + return is_amp_endpoint(); // For older/other AMP plugins (still supported in 2.0 as an alias). + } + + return false; + } + + /** + * Processes/optimizes the output-buffered content and returns it. + * If the content is not processable, it is returned unmodified. + * + * @param string $content Buffered content. + * + * @return string + */ + public function end_buffering( $content ) + { + // Bail early without modifying anything if we can't handle the content. + if ( ! $this->is_valid_buffer( $content ) ) { + return $content; + } + + $conf = autoptimizeConfig::instance(); + + // Determine what needs to be ran. + $classes = array(); + if ( $conf->get( 'autoptimize_js' ) ) { + $classes[] = 'autoptimizeScripts'; + } + if ( $conf->get( 'autoptimize_css' ) ) { + $classes[] = 'autoptimizeStyles'; + } + if ( $conf->get( 'autoptimize_html' ) ) { + $classes[] = 'autoptimizeHTML'; + } + + $classoptions = array( + 'autoptimizeScripts' => array( + 'aggregate' => $conf->get( 'autoptimize_js_aggregate' ), + 'defer_not_aggregate' => $conf->get( 'autoptimize_js_defer_not_aggregate' ), + 'defer_inline' => $conf->get( 'autoptimize_js_defer_inline' ), + 'justhead' => $conf->get( 'autoptimize_js_justhead' ), + 'forcehead' => $conf->get( 'autoptimize_js_forcehead' ), + 'trycatch' => $conf->get( 'autoptimize_js_trycatch' ), + 'js_exclude' => $conf->get( 'autoptimize_js_exclude' ), + 'cdn_url' => $conf->get( 'autoptimize_cdn_url' ), + 'include_inline' => $conf->get( 'autoptimize_js_include_inline' ), + 'minify_excluded' => $conf->get( 'autoptimize_minify_excluded' ), + ), + 'autoptimizeStyles' => array( + 'aggregate' => $conf->get( 'autoptimize_css_aggregate' ), + 'justhead' => $conf->get( 'autoptimize_css_justhead' ), + 'datauris' => $conf->get( 'autoptimize_css_datauris' ), + 'defer' => $conf->get( 'autoptimize_css_defer' ), + 'defer_inline' => $conf->get( 'autoptimize_css_defer_inline' ), + 'inline' => $conf->get( 'autoptimize_css_inline' ), + 'css_exclude' => $conf->get( 'autoptimize_css_exclude' ), + 'cdn_url' => $conf->get( 'autoptimize_cdn_url' ), + 'include_inline' => $conf->get( 'autoptimize_css_include_inline' ), + 'nogooglefont' => $conf->get( 'autoptimize_css_nogooglefont' ), + 'minify_excluded' => $conf->get( 'autoptimize_minify_excluded' ), + ), + 'autoptimizeHTML' => array( + 'keepcomments' => $conf->get( 'autoptimize_html_keepcomments' ), + 'minify_inline' => $conf->get( 'autoptimize_html_minify_inline' ), + ), + ); + + $content = apply_filters( 'autoptimize_filter_html_before_minify', $content ); + + // Run the classes! + foreach ( $classes as $name ) { + $instance = new $name( $content ); + if ( $instance->read( $classoptions[ $name ] ) ) { + $instance->minify(); + $instance->cache(); + $content = $instance->getcontent(); + } + unset( $instance ); + } + + $content = apply_filters( 'autoptimize_html_after_minify', $content ); + + return $content; + } + + public static function autoptimize_nobuffer_optimize( $html_in ) { + $html_out = $html_in; + + if ( apply_filters( 'autoptimize_filter_speedupper', true ) ) { + $ao_speedupper = new autoptimizeSpeedupper(); + } + + $self = new self( AUTOPTIMIZE_PLUGIN_VERSION, AUTOPTIMIZE_PLUGIN_FILE ); + if ( $self->should_buffer() ) { + $html_out = $self->end_buffering( $html_in ); + } + return $html_out; + } + + public static function on_uninstall() + { + // clear the cache. + autoptimizeCache::clearall(); + + // remove postmeta if active. + if ( autoptimizeConfig::is_ao_meta_settings_active() ) { + delete_post_meta_by_key( 'ao_post_optimize' ); + } + + // remove all options. + $delete_options = array( + 'autoptimize_cache_clean', + 'autoptimize_cache_nogzip', + 'autoptimize_css', + 'autoptimize_css_aggregate', + 'autoptimize_css_datauris', + 'autoptimize_css_justhead', + 'autoptimize_css_defer', + 'autoptimize_css_defer_inline', + 'autoptimize_css_inline', + 'autoptimize_css_exclude', + 'autoptimize_html', + 'autoptimize_html_keepcomments', + 'autoptimize_html_minify_inline', + 'autoptimize_enable_site_config', + 'autoptimize_enable_meta_ao_settings', + 'autoptimize_js', + 'autoptimize_js_aggregate', + 'autoptimize_js_defer_not_aggregate', + 'autoptimize_js_defer_inline', + 'autoptimize_js_exclude', + 'autoptimize_js_forcehead', + 'autoptimize_js_justhead', + 'autoptimize_js_trycatch', + 'autoptimize_version', + 'autoptimize_show_adv', + 'autoptimize_cdn_url', + 'autoptimize_cachesize_notice', + 'autoptimize_css_include_inline', + 'autoptimize_js_include_inline', + 'autoptimize_optimize_logged', + 'autoptimize_optimize_checkout', + 'autoptimize_extra_settings', + 'autoptimize_service_availablity', + 'autoptimize_imgopt_provider_stat', + 'autoptimize_imgopt_launched', + 'autoptimize_imgopt_settings', + 'autoptimize_minify_excluded', + 'autoptimize_cache_fallback', + 'autoptimize_ccss_rules', + 'autoptimize_ccss_additional', + 'autoptimize_ccss_queue', + 'autoptimize_ccss_viewport', + 'autoptimize_ccss_finclude', + 'autoptimize_ccss_rlimit', + 'autoptimize_ccss_rtimelimit', + 'autoptimize_ccss_noptimize', + 'autoptimize_ccss_debug', + 'autoptimize_ccss_key', + 'autoptimize_ccss_keyst', + 'autoptimize_ccss_version', + 'autoptimize_ccss_loggedin', + 'autoptimize_ccss_forcepath', + 'autoptimize_ccss_deferjquery', + 'autoptimize_ccss_domain', + 'autoptimize_ccss_unloadccss', + 'autoptimize_installed_before_compatibility', + ); + + if ( ! is_multisite() ) { + foreach ( $delete_options as $del_opt ) { + delete_option( $del_opt ); + } + autoptimizeMain::remove_cronjobs(); + } else { + global $wpdb; + $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" ); + $original_blog_id = get_current_blog_id(); + foreach ( $blog_ids as $blog_id ) { + switch_to_blog( $blog_id ); + foreach ( $delete_options as $del_opt ) { + delete_option( $del_opt ); + } + autoptimizeMain::remove_cronjobs(); + } + switch_to_blog( $original_blog_id ); + } + + // Remove AO CCSS cached files and directory. + $ao_ccss_dir = WP_CONTENT_DIR . '/uploads/ao_ccss/'; + if ( file_exists( $ao_ccss_dir ) && is_dir( $ao_ccss_dir ) && defined( 'GLOB_BRACE' ) ) { + // fixme: should check for subdirs when in multisite and remove contents of those as well. + // fixme: if GLOB_BRACE is not avaible we need to remove AO_CCSS_DIR differently? + array_map( 'unlink', glob( $ao_ccss_dir . '*.{css,html,json,log,zip,lock}', GLOB_BRACE ) ); + rmdir( $ao_ccss_dir ); + } + + // Remove 404-handler (although that should have been removed in clearall already). + $_fallback_php = trailingslashit( WP_CONTENT_DIR ) . 'autoptimize_404_handler.php'; + if ( file_exists( $_fallback_php ) ) { + unlink( $_fallback_php ); + } + } + + public static function on_deactivation() + { + if ( is_multisite() && is_network_admin() ) { + global $wpdb; + $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" ); + $original_blog_id = get_current_blog_id(); + foreach ( $blog_ids as $blog_id ) { + switch_to_blog( $blog_id ); + autoptimizeMain::remove_cronjobs(); + } + switch_to_blog( $original_blog_id ); + } else { + autoptimizeMain::remove_cronjobs(); + } + autoptimizeCache::clearall(); + } + + public static function remove_cronjobs() { + // Remove scheduled events. + foreach ( array( 'ao_cachechecker', 'ao_ccss_queue', 'ao_ccss_maintenance', 'ao_ccss_keychecker' ) as $_event ) { + if ( wp_get_schedule( $_event ) ) { + wp_clear_scheduled_hook( $_event ); + } + } + } + + public static function notice_cache_unavailable() + { + echo '

'; + // Translators: %s is the cache directory location. + printf( esc_html__( 'Autoptimize cannot write to the cache directory (%s), please fix to enable CSS/ JS optimization!', 'autoptimize' ), AUTOPTIMIZE_CACHE_DIR ); + echo '

'; + } + + public static function notice_installed() + { + echo ''; + } + + public static function notice_updated() + { + echo '

'; + printf( esc_html__( 'Autoptimize has just been updated. Please %1$stest your site now%2$s and adapt Autoptimize config if needed.', 'autoptimize' ), '', '' ); + echo '

'; + } + + public static function notice_plug_imgopt() + { + // Translators: the URL added points to the Autopmize Extra settings. + $_ao_imgopt_plug_notice = sprintf( esc_html__( 'Did you know that Autoptimize offers on-the-fly image optimization (with support for WebP and AVIF) and CDN via ShortPixel? Check out the %1$sAutoptimize Image settings%2$s to enable this option.', 'autoptimize' ), '', '' ); + $_ao_imgopt_plug_notice = apply_filters( 'autoptimize_filter_main_imgopt_plug_notice', $_ao_imgopt_plug_notice ); + $_ao_imgopt_launch_ok = autoptimizeImages::launch_ok_wrapper(); + $_ao_imgopt_plug_dismissible = 'ao-img-opt-plug-123'; + $_ao_imgopt_active = autoptimizeImages::imgopt_active(); + $_is_ao_settings_page = autoptimizeUtils::is_ao_settings(); + + if ( current_user_can( 'manage_options' ) && ! defined( 'AO_PRO_VERSION' ) && $_is_ao_settings_page && '' !== $_ao_imgopt_plug_notice && ! $_ao_imgopt_active && $_ao_imgopt_launch_ok && PAnD::is_admin_notice_active( $_ao_imgopt_plug_dismissible ) ) { + echo '

'; + echo $_ao_imgopt_plug_notice; + echo '

'; + } + } + + public static function notice_imgopt_issue() + { + // Translators: the URL added points to the Autopmize Extra settings. + $_ao_imgopt_issue_notice = sprintf( esc_html__( 'Shortpixel reports it cannot always reach your site, which might mean some images are not optimized. You can %1$sread more about why this happens and how you can fix that problem here%2$s.', 'autoptimize' ), '', '' ); + $_ao_imgopt_issue_notice = apply_filters( 'autoptimize_filter_main_imgopt_issue_notice', $_ao_imgopt_issue_notice ); + $_ao_imgopt_issue_dismissible = 'ao-img-opt-issue-14'; + $_ao_imgopt_active = autoptimizeImages::imgopt_active(); + $_ao_imgopt_status = autoptimizeOptionWrapper::get_option( 'autoptimize_imgopt_provider_stat', '' ); + + if ( is_array( $_ao_imgopt_status ) && array_key_exists( 'TemporaryRedirectOrigin', $_ao_imgopt_status ) && ( $_ao_imgopt_status['TemporaryRedirectOrigin'] === "true" || $_ao_imgopt_status['TemporaryRedirectOrigin'] === true ) ) { + $_ao_imgopt_status_redirect_warning = true; + } else { + $_ao_imgopt_status_redirect_warning = false; + } + + if ( current_user_can( 'manage_options' ) && $_ao_imgopt_active && $_ao_imgopt_status_redirect_warning && '' !== $_ao_imgopt_issue_notice && PAnD::is_admin_notice_active( $_ao_imgopt_issue_dismissible ) ) { + echo '

'; + echo $_ao_imgopt_issue_notice; + echo '

'; + } + } + + + public static function notice_nopagecache() + { + /* + * Autoptimize does not do page caching (yet) but not everyone knows, so below logic tries to find out if page caching is available and if not show a notice on the AO Settings pages. + * + * uses helper function in autoptimizeUtils.php + */ + // translators: strong tags and a break. + $_ao_nopagecache_notice = sprintf( esc_html__( 'It looks like your site might not have %1$spage caching%2$s which is a %1$smust-have for performance%2$s. If you are sure you have a page cache, you can close this notice.%3$sWhen in doubt check with your host if they offer this or install a free page caching plugin like for example KeyCDN Cache Enabler', 'autoptimize' ), '', '', '
' ); + // translators: strong tags. + $_ao_nopagecache_notice .= ' ' . esc_html__('or consider ', 'autoptimize') . 'Autoptimize Pro' . sprintf( esc_html__( ' which not only has page caching but also image optimization, critical CSS and advanced booster options %1$sto make your site significantly faster%2$s!', 'autoptimize' ), '', '' ); + $_ao_nopagecache_dismissible = 'ao-nopagecache-forever'; // the notice is only shown once and will not re-appear when dismissed. + $_is_ao_settings_page = autoptimizeUtils::is_ao_settings(); + + if ( current_user_can( 'manage_options' ) && $_is_ao_settings_page && PAnD::is_admin_notice_active( $_ao_nopagecache_dismissible ) && true === apply_filters( 'autoptimize_filter_main_show_pagecache_notice', true ) ) { + if ( false === autoptimizeUtils::find_pagecache() ) { + echo '

'; + echo $_ao_nopagecache_notice; + echo '

'; + } + } + } + + public static function notice_potential_conflict() + { + /* + * Using other plugins to do CSS/ JS optimization can cause unexpected and hard to troubleshoot issues, warn users who seem to be in that situation. + */ + // Translators: some strong tags + the sentence will be finished with the name of the offending plugin and a final stop. + $_ao_potential_conflict_notice = sprintf( esc_html__( 'It looks like you have %1$sanother plugin also doing CSS and/ or JS optimization%2$s, which can result in hard to troubleshoot %1$sconflicts%2$s. For this reason it is recommended to disable this functionality in', 'autoptimize' ), '', '' ) . ' '; + $_ao_potential_conflict_dismissible = 'ao-potential-conflict-forever'; // the notice is only shown once and will not re-appear when dismissed. + $_is_ao_settings_page = autoptimizeUtils::is_ao_settings(); + + if ( current_user_can( 'manage_options' ) && $_is_ao_settings_page && PAnD::is_admin_notice_active( $_ao_potential_conflict_dismissible ) && true === apply_filters( 'autoptimize_filter_main_show_potential_conclict_notice', true ) ) { + $_potential_conflicts = autoptimizeUtils::find_potential_conflicts(); + if ( false !== $_potential_conflicts ) { + $_ao_potential_conflict_notice .= '' . $_potential_conflicts . '.'; + echo '

'; + echo $_ao_potential_conflict_notice; + echo '

'; + } + } + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeMetabox.php b/wp-content/plugins/autoptimize/classes/autoptimizeMetabox.php new file mode 100644 index 0000000..e71010a --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeMetabox.php @@ -0,0 +1,351 @@ +run(); + } + + public function run() + { + add_action( 'add_meta_boxes', array( $this, 'ao_metabox_add_box' ) ); + add_action( 'save_post', array( $this, 'ao_metabox_save' ) ); + add_action( 'wp_ajax_ao_metabox_ccss_addjob', array( $this, 'ao_metabox_generateccss_callback' ) ); + } + + public function ao_metabox_add_box() + { + $screens = array( + 'post', + 'page', + // add extra types e.g. product or ... ? + ); + + $screens = apply_filters( 'autoptimize_filter_metabox_screens', $screens ); + + foreach ( $screens as $screen ) { + add_meta_box( + 'ao_metabox', + esc_html__( 'Autoptimize this page', 'autoptimize' ), + array( $this, 'ao_metabox_content' ), + $screen, + 'side' + ); + } + } + + /** + * Prints the box content. + * + * @param WP_Post $post The object for the current post/page. + */ + function ao_metabox_content( $post ) + { + // phpcs:disable Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace + + wp_nonce_field( 'ao_metabox', 'ao_metabox_nonce' ); + + $ao_opt_value = $this->check_ao_opt_sanity( get_post_meta( $post->ID, 'ao_post_optimize', true ) ); + + $_ao_meta_sub_opacity = ''; + if ( 'on' !== $ao_opt_value['ao_post_optimize'] ) { + $_ao_meta_sub_opacity = 'opacity:.33;'; + } + ?> +

+ /> + +

+ '; + ?> + /> + +

+ '; + ?> + /> + +

+ '; + ?> + /> + +

+ '; + ?> + /> + +

+ +

+ + + +

+ +

 

+

+ post_type ) { + $_type = 'is_page'; + } + + // if CSS opt and inline & defer are on and if we have a slug, the button can be active. + if ( false !== $_slug && 'on' === autoptimizeOptionWrapper::get_option( 'autoptimize_css', false ) && 'on' === autoptimizeOptionWrapper::get_option( 'autoptimize_css_defer', false ) && ! empty( apply_filters( 'autoptimize_filter_ccss_key', autoptimizeOptionWrapper::get_option( 'autoptimize_ccss_key', false ) ) ) && '2' === autoptimizeOptionWrapper::get_option( 'autoptimize_ccss_keyst', false ) ) { + $_generate_disabled = false; + } + ?> + +

+ + criticalcss(); + $_result = $criticalcss->enqueue( '', $path, $type ); + + if ( $_result ) { + $response['code'] = '200'; + $response['string'] = $path . ' added to job queue.'; + } else { + $response['code'] = '404'; + $response['string'] = 'could not add ' . $path . ' to job queue.'; + } + } else { + $response['code'] = '500'; + $response['string'] = 'nok'; + } + + // Dispatch respose. + echo json_encode( $response ); + + // Close ajax request. + wp_die(); + } + + public function get_metabox_default_values() + { + $ao_metabox_defaults = array( + 'ao_post_optimize' => 'on', + 'ao_post_js_optimize' => 'on', + 'ao_post_css_optimize' => 'on', + 'ao_post_ccss' => 'on', + 'ao_post_lazyload' => 'on', + 'ao_post_preload' => '', + ); + return $ao_metabox_defaults; + } + + public function check_ao_opt_sanity( $ao_opt_val ) { + if ( empty( $ao_opt_val ) || ! is_array( $ao_opt_val ) ) { + $ao_opt_val = $this->get_metabox_default_values(); + } else { + foreach ( array( 'ao_post_optimize', 'ao_post_js_optimize', 'ao_post_css_optimize', 'ao_post_ccss', 'ao_post_lazyload' ) as $key ) { + if ( ! array_key_exists( $key, $ao_opt_val ) ) { + $ao_opt_val[ $key ] = 'off'; + } + } + } + + return $ao_opt_val; + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeOptionWrapper.php b/wp-content/plugins/autoptimize/classes/autoptimizeOptionWrapper.php new file mode 100644 index 0000000..207d516 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeOptionWrapper.php @@ -0,0 +1,150 @@ +run(); + } + + public function run() + { + if ( $this->enabled() ) { + add_filter( 'autoptimize_filter_settingsscreen_tabs', array( $this, 'add_partner_tabs' ), 10, 1 ); + } + if ( is_multisite() && is_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network() ) { + add_action( 'network_admin_menu', array( $this, 'add_admin_menu' ) ); + } else { + add_action( 'admin_menu', array( $this, 'add_admin_menu' ) ); + } + } + + protected function enabled() + { + return apply_filters( 'autoptimize_filter_show_partner_tabs', true ); + } + + public function add_partner_tabs( $in ) + { + $in = array_merge( + $in, + array( + 'ao_partners' => esc_html__( 'Optimize More!', 'autoptimize' ), + ) + ); + + return $in; + } + + public function add_admin_menu() + { + if ( $this->enabled() ) { + add_submenu_page( '', 'AO partner', 'AO partner', 'manage_options', 'ao_partners', array( $this, 'ao_partners_page' ) ); + } + } + + protected function get_ao_partner_feed_markup() + { + $no_feed_text = sprintf( esc_html__( 'Have a look at %1$sAutoptimize Pro%2$s to power-up your site!', 'autoptimize' ), '', '' ); + $output = ''; + if ( apply_filters( 'autoptimize_settingsscreen_remotehttp', true ) ) { + $rss = fetch_feed( 'http://feeds.feedburner.com/OptimizingMattersDownloads' ); + $maxitems = 0; + + if ( ! is_wp_error( $rss ) ) { + $maxitems = $rss->get_item_quantity( 20 ); + $rss_items = $rss->get_items( 0, $maxitems ); + } + + if ( 0 == $maxitems ) { + $output .= $no_feed_text; + } else { + $output .= '
    '; + foreach ( $rss_items as $item ) { + $item_url = esc_url( $item->get_permalink() ); + $enclosure = $item->get_enclosure(); + + $output .= '
  • '; + $output .= '

    ' . esc_html( $item->get_title() ) . '

    '; + + if ( $enclosure && ( false !== strpos( $enclosure->get_type(), 'image' ) ) ) { + $img_url = esc_url( $enclosure->get_link() ); + $output .= '
    '; + } + + $output .= '
    ' . wp_kses_post( $item->get_description() ) . '
    '; + $output .= ''; + $output .= '
  • '; + } + $output .= '
'; + } + } else { + $output .= $no_feed_text; + } + + return $output; + } + + public function ao_partners_page() + { + ?> + + +
+

+ + ' . esc_html__( "These Autoptimize power-ups and related services will improve your site's performance even more!", 'autoptimize' ) . ''; ?> +
+ get_ao_partner_feed_markup(); ?> +
+
+ run(); + } + + public function run() + { + if ( $this->enabled() ) { + add_filter( 'autoptimize_filter_settingsscreen_tabs', array( $this, 'add_pro_tabs' ), 10, 1 ); + } + if ( is_multisite() && is_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network() ) { + add_action( 'network_admin_menu', array( $this, 'add_admin_menu' ) ); + } else { + add_action( 'admin_menu', array( $this, 'add_admin_menu' ) ); + } + } + + protected function enabled() + { + return apply_filters( 'autoptimize_filter_show_partner_tabs', true ); + } + + public function add_pro_tabs( $in ) + { + $in = array_merge( + $in, + array( + 'ao_protab' => '🚀 ' . $this->get_rnd_title() + ) + ); + + return $in; + } + + public function add_admin_menu() + { + if ( $this->enabled() ) { + add_submenu_page( '', 'AO pro', 'AO pro', 'manage_options', 'ao_protab', array( $this, 'ao_pro_page' ) ); + } + } + + public function ao_pro_page() + { + ?> + + +
+

+ ', '', '

', '

', '', '', '', '', '', '' ); + } else { + // we were able to fetch the explenation, so add the JS to show correct language. + $aopro_explanation .= ""; + } + ?> +
+ +
+
+ rnd_title = esc_html__( 'Page Cache', 'autoptimize' ); + } else { + $this->rnd_title = esc_html__( 'Pro Boosters', 'autoptimize' ); + } + return $this->rnd_title; + } +} diff --git a/wp-content/plugins/autoptimize/classes/autoptimizeScripts.php b/wp-content/plugins/autoptimize/classes/autoptimizeScripts.php new file mode 100644 index 0000000..f4a6335 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/autoptimizeScripts.php @@ -0,0 +1,861 @@ + array(), + 'last' => array(), + ); + + /** + * List of not to be moved JS. + * + * @var array + */ + private $dontmove = array( + 'document.write', + 'html5.js', + 'show_ads.js', + 'google_ad', + 'histats.com/js', + 'statcounter.com/counter/counter.js', + 'ws.amazon.com/widgets', + 'media.fastclick.net', + '/ads/', + 'comment-form-quicktags/quicktags.php', + 'edToolbar', + 'intensedebate.com', + 'scripts.chitika.net/', + '_gaq.push', + 'jotform.com/', + 'admin-bar.min.js', + 'GoogleAnalyticsObject', + 'plupload.full.min.js', + 'syntaxhighlighter', + 'adsbygoogle', + 'gist.github.com', + '_stq', + 'nonce', + 'post_id', + 'data-noptimize', + 'data-cfasync', + 'data-pagespeed-no-defer', + 'logHuman', + 'amp-mobile-version-switcher', + 'data-rocketlazyloadscript', + 'rocket-browser-checker-js-after', + ); + + /** + * List of to be moved JS. + * + * @var array + */ + private $domove = array( + 'gaJsHost', + 'load_cmc', + 'jd.gallery.transitions.js', + 'swfobject.embedSWF(', + 'tiny_mce.js', + 'tinyMCEPreInit.go', + ); + + /** + * List of JS that can be moved last (not used any more). + * + * @var array + */ + private $domovelast = array( + 'addthis.com', + '/afsonline/show_afs_search.js', + 'disqus.js', + 'networkedblogs.com/getnetworkwidget', + 'infolinks.com/js/', + 'jd.gallery.js.php', + 'jd.gallery.transitions.js', + 'swfobject.embedSWF(', + 'linkwithin.com/widget.js', + 'tiny_mce.js', + 'tinyMCEPreInit.go', + ); + + /** + * Setting CDN base URL. + * + * @var string + */ + public $cdn_url = ''; + + /** + * Setting; aggregate or not. + * + * @var bool + */ + private $aggregate = true; + + /** + * Setting; if not aggregated, should we defer? + * + * @var bool + */ + private $defer_not_aggregate = false; + + /** + * Setting; defer inline JS? + * + * @var bool + */ + private $defer_inline = false; + + /** + * Setting; try/catch wrapping or not. + * + * @var bool + */ + private $trycatch = false; + + /** + * State; is JS already minified. + * + * @var bool + */ + private $alreadyminified = false; + + /** + * Setting; force JS in head or not. + * + * @var bool + */ + private $forcehead = true; + + /** + * Setting; aggregate inline JS or not. + * + * @var bool + */ + private $include_inline = false; + + /** + * State; holds JS code. + * + * @var string + */ + private $jscode = ''; + + /** + * State; holds URL of JS-file. + * + * @var string + */ + private $url = ''; + + /** + * State; stores rest of HTML if (old) option "only in head" is on. + * + * @var string + */ + private $restofcontent = ''; + + /** + * State; holds md5-hash. + * + * @var string + */ + private $md5hash = ''; + + /** + * Setting (filter); allowlist of to be aggregated JS. + * + * @var string + */ + private $allowlist = ''; + + /** + * Setting (filter); holds JS that should be removed. + * + * @var array + */ + private $jsremovables = array(); + + /** + * Setting (filter); can we inject already minified files after the + * unminified aggregate JS has been minified. + * + * @var bool + */ + private $inject_min_late = true; + + /** + * Setting; should excluded JS be minified (if not already). + * + * @var bool + */ + private $minify_excluded = true; + + /** + * Reads the page and collects script tags. + * + * @param array $options all options. + */ + public function read( $options ) + { + $noptimize_js = false; + + // If page/ post check post_meta to see if optimize is off. + if ( false === autoptimizeConfig::get_post_meta_ao_settings( 'ao_post_js_optimize' ) ) { + $noptimize_js = true; + } + + // And a filter to enforce JS noptimize. + $noptimize_js = apply_filters( 'autoptimize_filter_js_noptimize', $noptimize_js, $this->content ); + + // And finally bail if noptimize_js is true. + if ( $noptimize_js ) { + return false; + } + + // only optimize known good JS? + $allowlist_js = apply_filters( 'autoptimize_filter_js_allowlist', '', $this->content ); + if ( ! empty( $allowlist_js ) ) { + $this->allowlist = array_filter( array_map( 'trim', explode( ',', $allowlist_js ) ) ); + } + + // is there JS we should simply remove? + $removable_js = apply_filters( 'autoptimize_filter_js_removables', '', $this->content ); + if ( ! empty( $removable_js ) ) { + $this->jsremovables = array_filter( array_map( 'trim', explode( ',', $removable_js ) ) ); + } + + // only header? + if ( apply_filters( 'autoptimize_filter_js_justhead', $options['justhead'] ) ) { + $content = explode( '', $this->content, 2 ); + $this->content = $content[0] . ''; + $this->restofcontent = $content[1]; + } + + // Determine whether we're doing JS-files aggregation or not. + if ( ! $options['aggregate'] ) { + $this->aggregate = false; + } + // Returning true for "dontaggregate" turns off aggregation. + if ( $this->aggregate && apply_filters( 'autoptimize_filter_js_dontaggregate', false ) ) { + $this->aggregate = false; + } + // and the filter that should have been there to begin with. + $this->aggregate = apply_filters( 'autoptimize_filter_js_aggregate', $this->aggregate ); + + // Defer when not aggregating. + if ( false === $this->aggregate && apply_filters( 'autoptimize_filter_js_defer_not_aggregate', $options['defer_not_aggregate'] ) ) { + $this->defer_not_aggregate = true; + } + + // Defer inline JS? + if ( ( true === $this->defer_not_aggregate && apply_filters( 'autoptimize_js_filter_defer_inline', $options['defer_inline'] ) ) || apply_filters( 'autoptimize_js_filter_force_defer_inline', false ) ) { + $this->defer_inline = true; + } + + // include inline? + if ( apply_filters( 'autoptimize_js_include_inline', $options['include_inline'] ) ) { + $this->include_inline = true; + } + + // filter to "late inject minified JS", default to true for now (it is faster). + $this->inject_min_late = apply_filters( 'autoptimize_filter_js_inject_min_late', true ); + + // filters to override hardcoded do(nt)move(last) array contents (array in, array out!). + $this->dontmove = apply_filters( 'autoptimize_filter_js_dontmove', $this->dontmove ); + $this->domovelast = apply_filters( 'autoptimize_filter_js_movelast', $this->domovelast ); + $this->domove = apply_filters( 'autoptimize_filter_js_domove', $this->domove ); + + // Determine whether excluded files should be minified if not yet so. + if ( ! $options['minify_excluded'] && $options['aggregate'] ) { + $this->minify_excluded = false; + } + $this->minify_excluded = apply_filters( 'autoptimize_filter_js_minify_excluded', $this->minify_excluded, '' ); + + // get extra exclusions settings or filter. + $exclude_js = $options['js_exclude']; + $exclude_js = apply_filters( 'autoptimize_filter_js_exclude', $exclude_js, $this->content ); + + if ( '' !== $exclude_js ) { + if ( is_array( $exclude_js ) ) { + $remove_keys = array_keys( $exclude_js, 'remove' ); + if ( false !== $remove_keys ) { + foreach ( $remove_keys as $remove_key ) { + unset( $exclude_js[ $remove_key ] ); + $this->jsremovables[] = $remove_key; + } + } + $excl_js_arr = array_keys( $exclude_js ); + } else { + $excl_js_arr = array_filter( array_map( 'trim', explode( ',', $exclude_js ) ) ); + } + $this->dontmove = array_merge( $excl_js_arr, $this->dontmove ); + } + + // Should we add try-catch? + if ( $options['trycatch'] ) { + $this->trycatch = true; + } + + // force js in head? + if ( $options['forcehead'] ) { + $this->forcehead = true; + } else { + $this->forcehead = false; + } + + $this->forcehead = apply_filters( 'autoptimize_filter_js_forcehead', $this->forcehead ); + + // get cdn url. + $this->cdn_url = $options['cdn_url']; + + // noptimize me. + $this->content = $this->hide_noptimize( $this->content ); + + // Save IE hacks. + $this->content = $this->hide_iehacks( $this->content ); + + // comments. + $this->content = $this->hide_comments( $this->content ); + + // Get script files. + if ( preg_match_all( '##Usmi', $this->content, $matches ) ) { + foreach ( $matches[0] as $tag ) { + // only consider script aggregation for types allowlisted in should_aggregate-function. + $should_aggregate = $this->should_aggregate( $tag ); + if ( ! $should_aggregate ) { + $tag = ''; + continue; + } + + if ( preg_match( '#]*src=("|\')([^>]*)("|\')#Usmi', $tag, $source ) ) { + // non-inline script. + if ( $this->isremovable( $tag, $this->jsremovables ) ) { + $this->content = str_replace( $tag, '', $this->content ); + continue; + } + + $orig_tag = null; + $url = current( explode( '?', $source[2], 2 ) ); + $path = $this->getpath( $url ); + if ( false !== $path && preg_match( '#\.js$#', $path ) && $this->ismergeable( $tag ) ) { + // ok to optimize, add to array. + $this->scripts[] = $path; + } else { + $orig_tag = $tag; + $new_tag = $tag; + + // non-mergeable script (excluded or dynamic or external). + if ( is_array( $exclude_js ) ) { + // should we add flags? + foreach ( $exclude_js as $excl_tag => $excl_flags ) { + if ( false !== strpos( $orig_tag, $excl_tag ) && in_array( $excl_flags, array( 'async', 'defer' ) ) ) { + $new_tag = str_replace( '#Usmi', $tag, $code ); + $code = preg_replace( '#.*.*#sm', '$1', $code[1] ); + $code = preg_replace( '/(?:^\\s*\\s*$)/', '', $code ); + $this->scripts[] = 'INLINE;' . $code; + } else { + $_inline_deferable = apply_filters( 'autoptimize_filters_js_inline_deferable', array( 'nonce', 'post_id', 'syntaxhighlighter' ) ); + $_inline_dontmove = array_values( array_diff( $this->dontmove, $_inline_deferable ) ); + if ( false === $this->defer_inline ) { + // Can we move this? + $autoptimize_js_moveable = apply_filters( 'autoptimize_js_moveable', '', $tag ); + if ( $this->ismovable( $tag ) || '' !== $autoptimize_js_moveable ) { + if ( $this->movetolast( $tag ) || 'last' === $autoptimize_js_moveable ) { + $this->move['last'][] = $tag; + } else { + $this->move['first'][] = $tag; + } + } else { + $tag = ''; + } + } else if ( str_replace( $_inline_dontmove, '', $tag ) === $tag && strlen( $tag ) < apply_filters( 'autoptimize_filter_script_defer_inline_maxsize', 200000 ) ) { + // defer inline JS by base64 encoding it but only if string is not ridiculously huge (to avoid issues with below regex mainly). + preg_match( '#](?!id=))*\s*(?:id=(["\'])([^"\']+)\1)*+[^>]*+>(.*?)<\/script>#is', $tag, $match ); + if ( $match[2] ) { + $_id = 'id="' . $match[2] . '" '; + } else { + $_id = ''; + } + + // if "minify inline" is on and if more then 9 spaces or 4 line breaks are found + // in the inline JS then it is likely not minified, so minify before base64-encoding. + $_script_contents = $match[3]; + if ( 'on' === autoptimizeOptionWrapper::get_option( 'autoptimize_html_minify_inline', 'off' ) && substr_count( $_script_contents, ' ' ) > 9 && substr_count( $_script_contents, "\n" ) > 4 && true === apply_filters( 'autoptimize_filter_script_defer_inline_minify', true ) ) { + $_tmp_script_contents = trim( JSMin::minify( $_script_contents ) ); + if ( ! empty( $_tmp_script_contents ) ) { + $_script_contents = $_tmp_script_contents; + } + } + + // base64 and defer the lot already. + $new_tag = ''; + $this->content = str_replace( $this->hide_comments( $tag ), $new_tag, $this->content ); + $tag = ''; + } else { + $tag = ''; + } + } + // Re-hide comments to be able to do the removal based on tag from $this->content. + $tag = $this->hide_comments( $tag ); + } + + // Remove the original script tag. + $this->content = str_replace( $tag, '', $this->content ); + } + + return true; + } + + // No script files, great ;-) . + return false; + } + + /** + * Determines wheter a certain `'; + $bodyreplacementpayload = apply_filters( 'autoptimize_filter_js_bodyreplacementpayload', $bodyreplacementpayload ); + + $bodyreplacement = implode( '', $this->move['first'] ); + $bodyreplacement .= $bodyreplacementpayload; + $bodyreplacement .= implode( '', $this->move['last'] ); + + $replace_tag = apply_filters( 'autoptimize_filter_js_replacetag', $replace_tag ); + + if ( strlen( $this->jscode ) > 0 ) { + $this->inject_in_html( $bodyreplacement, $replace_tag ); + } + + // Restore comments. + $this->content = $this->restore_comments( $this->content ); + + // Restore IE hacks. + $this->content = $this->restore_iehacks( $this->content ); + + // Restore noptimize. + $this->content = $this->restore_noptimize( $this->content ); + + // Return the modified HTML. + return $this->content; + } + + /** + * Checks against the allow- and blocklists. + * + * @param string $tag JS tag. + */ + private function ismergeable( $tag ) + { + if ( empty( $tag ) || ! $this->aggregate ) { + return false; + } + + if ( ! empty( $this->allowlist ) ) { + foreach ( $this->allowlist as $match ) { + if ( false !== strpos( $tag, $match ) ) { + return true; + } + } + // No match with allowlist. + return false; + } else { + foreach ( $this->domove as $match ) { + if ( false !== strpos( $tag, $match ) ) { + // Matched something. + return false; + } + } + + if ( $this->movetolast( $tag ) ) { + return false; + } + + foreach ( $this->dontmove as $match ) { + if ( false !== strpos( $tag, $match ) ) { + // Matched something. + return false; + } + } + + // If we're here it's safe to merge. + return true; + } + } + + /** + * Checks agains the blocklist. + * + * @param string $tag tag to check for blocklist (exclusions). + */ + private function ismovable( $tag ) + { + if ( empty( $tag ) || true !== $this->include_inline || apply_filters( 'autoptimize_filter_js_unmovable', true ) ) { + return false; + } + + foreach ( $this->domove as $match ) { + if ( false !== strpos( $tag, $match ) ) { + // Matched something. + return true; + } + } + + if ( $this->movetolast( $tag ) ) { + return true; + } + + foreach ( $this->dontmove as $match ) { + if ( false !== strpos( $tag, $match ) ) { + // Matched something. + return false; + } + } + + // If we're here it's safe to move. + return true; + } + + private function movetolast( $tag ) + { + if ( empty( $tag ) ) { + return false; + } + + foreach ( $this->domovelast as $match ) { + if ( false !== strpos( $tag, $match ) ) { + // Matched, return true. + return true; + } + } + + // Should be in 'first'. + return false; + } + + /** + * Determines wheter a +
    +
    + ', '', '

    ', '

    ', '', '', '', '', '', '' ); + } else { + // we were able to fetch the explenation, so add the JS to show correct language. + $ccss_explanation .= ""; + } + + // and echo it. + echo $ccss_explanation; + ?> +
    +
+ +// Export and download settings +function exportSettings( idToEdit ) { + console.log('Exporting...'); + var data = { + 'action': 'ao_ccss_export', + 'ao_ccss_export_nonce': '', + }; + + jQuery.post(ajaxurl, data, function(response) { + response_array=JSON.parse(response); + if (response_array['code'] == 200) { + + export_url = '/uploads/ao_ccss' + '' + response_array['file']; + msg = "Download export-file from: "+ export_url + ""; + } else { + msg = response_array['msg']; + } + jQuery("#importdialog").html(msg); + jQuery("#importdialog").dialog({ + autoOpen: true, + height: 210, + width: 700, + title: "", + modal: true, + buttons: { + OK: function() { + jQuery( this ).dialog( "close" ); + } + } + }); + }); +} + +// Upload and import settings +function upload(){ + var fd = new FormData(); + var file = jQuery(document).find('#settingsfile'); + var settings_file = file[0].files[0]; + fd.append('file', settings_file); + fd.append('action', 'ao_ccss_import'); + fd.append('ao_ccss_import_nonce', ''); + + jQuery.ajax({ + url: ajaxurl, + type: 'POST', + data: fd, + contentType: false, + processData: false, + success: function(response) { + response_array=JSON.parse(response); + if (response_array['code'] == 200) { + window.location.reload(); + } + } + }); +} diff --git a/wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_key.php b/wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_key.php new file mode 100644 index 0000000..b533944 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_key.php @@ -0,0 +1,67 @@ + + + +
    +
  • +

    :

    + + +
    + + +
  • +
+ +// Hide object text box +var queueOriginEl = document.getElementById('ao-ccss-queue' ); +if (queueOriginEl) { + queueOriginEl.style.display = 'none'; + + // Get queue object and call table renderer + jQuery(document).ready(function() { + // Instance and parse queue object + var aoCssQueueRaw = document.getElementById('ao-ccss-queue').value; + var aoCssQueue = aoCssQueueRaw.indexOf('{"') === 0 ? + JSON.parse(aoCssQueueRaw) : + ""; + var aoCssQueueLog = aoCssQueue === "" ? + "empty" : + aoCssQueue; + + + // hook up "remove all jobs" button to the JS action. + jQuery("#removeAllJobs").click(function(){removeAllJobs();}); + + // Render queue table + drawQueueTable(aoCssQueue); + + // Make queue table sortable if there are any elements + var queueBodyEl = jQuery('#queue > tr').length; + if (queueBodyEl > 0) { + jQuery('#queue-tbl').tablesorter({ + sortList: [[0,0]], + headers: {6: {sorter: false}} + }); + } + + // unhide queuerunner button conditionally (we don't want people running the queue continuously) and attach event to it. + if (queueBodyEl > 4 || ( queueBodyEl > 0 && jQuery('#rules > tr').length < 1 ) ) { + jQuery('#queuerunner-container').show(); + jQuery("#queuerunner").click(function(){queuerunner();}); + } + }); +} + +// Render the queue in a table +function drawQueueTable(queue) { + jQuery('#queue').empty(); + rowNumber=0; + jQuery.each(queue, function(path, keys) { + // Prepare commom job values + ljid = keys.ljid; + targetArr = keys.rtarget.split('|' ); + target = targetArr[1]; + type = keys.ptype; + ctime = EpochToDate(keys.jctime); + rbtn = false; + dbtn = false; + hbtn = false; + + // don't list jobs that don't have a type, they are irrelevant and this also avoids "type.replace is not a function". + if ( type == false ) { + return; + } + + // Prepare job statuses + if (keys.jqstat === 'NEW') { + // Status: NEW (N, sort order 1) + status = 'N'; + statusClass = 'new'; + title = ' (' + ljid + ')'; + buttons = ''; + } else if (keys.jqstat === 'JOB_QUEUED' || keys.jqstat === 'JOB_ONGOING') { + // Status: PENDING (P, sort order 2) + status = 'P'; + statusClass = 'pending'; + title = ' (' + ljid + ')'; + buttons = ''; + } else if (keys.jqstat === 'JOB_DONE' && keys.jrstat === 'GOOD' && (keys.jvstat === 'WARN' || keys.jvstat === 'BAD')) { + // Status: REVIEW (R, sort order 5) + status = 'R'; + statusClass = 'review'; + title = " (" + ljid + ")\n\n" + keys.jid + "\n" + keys.jqstat + "\n" + keys.jrstat + "\n" + keys.jvstat; + buttons = ''; + dbtn = true; + } else if (keys.jqstat === 'JOB_DONE') { + // Status: DONE (D, sort order 6) + status = 'D'; + statusClass = 'done'; + title = ' (' + ljid + ')'; + buttons = ''; + dbtn = true; + } else if (keys.jqstat === 'JOB_FAILED' || keys.jqstat === 'STATUS_JOB_BAD' || keys.jqstat === 'INVALID_JWT_TOKEN' || keys.jqstat === 'NO_CSS' || keys.jqstat === 'NO_RESPONSE') { + // Status: ERROR (E, sort order 4) + status = 'E'; + statusClass = 'error'; + title = " (" + ljid + ")\n\n" + keys.jid + "\n" + keys.jqstat + "\n" + keys.jrstat + "\n" + keys.jvstat; + buttons = ''; + rbtn = true; + dbtn = true; + hbtn = true; + } else { + // Status: UNKNOWN (U, sort order 5) + status = 'U'; + statusClass = 'unknown'; + title = " (" + ljid + ")\n\n" + keys.jid + "\n" + keys.jqstat + "\n" + keys.jrstat + "\n" + keys.jvstat; + buttons = ''; + dbtn = true; + hbtn = true; + } + + // Prepare job finish time + if (keys.jftime === null) { + ftime = ''; + } else { + ftime = EpochToDate(keys.jftime); + } + + // Append job entry + jQuery("#queue").append("" + title + "'>" + status + "" + target.replace(/(woo_|template_|custom_post_|edd_|bp_|bbp_)/,'') + "" + path + "" + type.replace(/(woo_|template_|custom_post_|edd_|bp_|bbp_)/,'') + "" + ctime + "" + ftime + "" + buttons + ""); + + // Attach button actions + if (rbtn) { + jQuery('#' + ljid + '_retry').click(function(){retryJob(queue, this.id, path);}); + } + if (dbtn) { + jQuery('#' + ljid + '_remove').click(function(){delJob(queue, this.id, path);}); + } + if (hbtn) { + jQuery('#' + ljid + '_help').click(function(){jid=this.id.split('_' );window.open('https://criticalcss.com/faq?aoid=' + jid[0], '_blank' );}); + } + }); +} + +// Delete a job from the queue +function delJob(queue, jid, jpath) { + jid = jid.split('_' ); + jQuery('#queue-confirm-rm').dialog({ + resizable: false, + height: 180, + modal: true, + buttons: { + "": function() { + delete queue[jpath]; + updateQueue(queue); + jQuery(this).dialog('close' ); + }, + "": function() { + jQuery(this).dialog('close' ); + } + } + }); +} + +function removeAllJobs() { + jQuery( "#queue-confirm-rm-all" ).dialog({ + resizable: false, + height:235, + modal: true, + buttons: { + "": function() { + queue=[]; + updateQueue(queue); + jQuery( this ).dialog( "close" ); + }, + "": function() { + jQuery( this ).dialog( "close" ); + } + } + }); +} + +// Retry jobs with error +function retryJob(queue, jid, jpath) { + jid = jid.split('_' ); + jQuery('#queue-confirm-retry').dialog({ + resizable: false, + height: 180, + modal: true, + buttons: { + "": function() { + + queue[jpath].jid = null; + queue[jpath].jqstat = 'NEW'; + queue[jpath].jrstat = null; + queue[jpath].jvstat = null; + queue[jpath].jctime = (new Date).getTime() / 1000; + queue[jpath].jftime = null; + updateQueue(queue); + jQuery(this).dialog('close' ); + }, + "": function() { + jQuery(this).dialog('close' ); + } + } + }); +} + +// Refresh queue +function updateQueue(queue) { + document.getElementById('ao-ccss-queue').value=JSON.stringify(queue); + drawQueueTable(queue); + jQuery('#unSavedWarning').show(); + document.getElementById('ao_title_and_button').scrollIntoView(); + +} + +// Run the queue manually (in case of cron issues/ impatient users). +function queuerunner() { + var data = { + 'action': 'ao_ccss_queuerunner', + 'ao_ccss_queuerunner_nonce': '', + }; + + jQuery.post(ajaxurl, data, function(response) { + response_array=JSON.parse(response); + if (response_array['code'] == 200) { + displayNotice( '', 'success' ) + setTimeout(window.location.reload.bind(window.location), 1.5*1000); + } else if ( response_array['code'] == 302 ) { + displayNotice( 'wp-content/uploads/ao_ccss/queue.lock file.', 'autoptimize' ); ?>', 'warning' ) + } else { + displayNotice( '', 'error' ) + } + }); +} + +// Convert epoch to date for job times +function EpochToDate(epoch) { + if (epoch < 10000000000) + epoch *= 1000; + var epoch = epoch + (new Date().getTimezoneOffset() * -1); //for timeZone + var sdate = new Date(epoch); + var ldate = sdate.toLocaleString(); + return ldate; +} diff --git a/wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_queue.php b/wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_queue.php new file mode 100644 index 0000000..78a83f3 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_queue.php @@ -0,0 +1,96 @@ +criticalcss(); + $ao_ccss_queue = $criticalcss->get_option( 'queue' ); + + // Prepare the queue object. + if ( empty( $ao_ccss_queue ) ) { + $ao_ccss_queue = ''; + } else { + $ao_ccss_queue = json_encode( $ao_ccss_queue ); + } + ?> + +
    +
  • +

    + + has_autorules() ) { + $_queue_visibility = 'hidden'; + } else { + $_queue_visibility = 'visible'; + } + ?> +
    + + + + + + + + + + + + +
    +
    +

    +

    +
    + + +
    + + + + + +
    + +
    + +
    + +
    +
    +
    + +
  • +
+ + +var rulesOriginEl = document.getElementById("critCssOrigin"); +var deferInlineEl = document.getElementById("autoptimize_css_defer_inline"); +var additionalEl = document.getElementById("autoptimize_ccss_additional"); +if (rulesOriginEl) + rulesOriginEl.style.display = 'none'; +if (deferInlineEl) + deferInlineEl.style.display = 'none'; +if (additionalEl) + additionalEl.style.display = 'none'; + +if (rulesOriginEl) { + jQuery(document).ready(function() { + critCssArray=JSON.parse(document.getElementById("critCssOrigin").value); + + drawTable(critCssArray); + jQuery("#addCritCssButton").click(function(){addEditRow();}); + jQuery("#editDefaultButton").click(function(){editDefaultCritCss();}); + jQuery("#editAdditionalButton").click(function(){editAdditionalCritCss();}); + jQuery("#removeAllRules").click(function(){removeAllRules();}); + }); +} + +function drawTable(critCssArray) { + jQuery("#rules-list").empty(); + rnotice = 0; + jQuery.each(critCssArray,function(k,v) { + if (k=="paths") { + kstring=""; + } else { + kstring=""; + } + if (!(jQuery.isEmptyObject(v))) { + jQuery("#rules-list").append("

" + kstring + "

"); + jQuery("#rules-list").append(""); + } + nodeNumber=0; + jQuery.each(v,function(i,nv){ + nodeNumber++; + nodeId=k + "_" + nodeNumber; + hash=nv.hash; + file=nv.file; + filest=nv.file; + auto_style = ''; + is_api_active() ) { + echo 'api_active = 1;' . "\n"; + } else { + echo 'api_active = 0;' . "\n"; + } + ?> + if (file == 0) { + file=''; + } + if (nv.hash === 0 && filest != 0) { + type=''; + typeClass = 'manual'; + } else { + type=''; + typeClass = 'auto'; + if ( api_active != 1 ) { + auto_style = ' style="opacity:.5;" ' + } + } + if (file && typeof file == 'string') { + rmark_find=file.split('_'); + if (rmark_find[2] || rmark_find[2] == 'R.css') { + rnotice = rnotice + 1; + } + } + if ( k == "paths" ) { + + target = '' + i + ''; + + target = i; + + } else { + target = i.replace(/(woo_|template_|custom_post_|edd_|bp_|bbp_)/,''); + } + + jQuery("#rules-list").append("" + type + "" + target + "" + file + ""); + if ( typeClass == 'manual' || api_active == 1 ) { + jQuery("#" + nodeId + "_edit").click(function(){addEditRow(this.id);}); + } + jQuery("#" + nodeId + "_remove").click(function(){confirmRemove(this.id);}); + }) + }); + if ( rnotice && rnotice != 0 ) { + // R rules were found, show a notice! + // and add some JS magic to ensure the notice works as a notice, but is shown inline + // in the rules panel instead of in the notice area where it would be too prominent. + + jQuery("#rules-notices").append( " "); + jQuery( document ).ready(function() { + jQuery("div.rnotice").detach().appendTo('#rules-notices'); + jQuery("div.rnotice").show(); + }); + + console.log( "Autoptimize: " + rnotice + " " ); + + } +} + +function confirmRemove(idToRemove) { + jQuery( "#confirm-rm" ).dialog({ + resizable: false, + height:235, + modal: true, + buttons: { + "": function() { + removeRow(idToRemove); + updateAfterChange(); + jQuery( this ).dialog( "close" ); + }, + "": function() { + jQuery( this ).dialog( "close" ); + } + } + }); +} + +function removeAllRules() { + jQuery( "#confirm-rm-all" ).dialog({ + resizable: false, + height:235, + modal: true, + buttons: { + "": function() { + critCssArray={'paths':[],'types':[]}; + drawTable(critCssArray); + updateAfterChange(); + removeAllCcssFilesOnServer(); + jQuery( this ).dialog( "close" ); + }, + "": function() { + jQuery( this ).dialog( "close" ); + } + } + }); +} + +function removeRow(idToRemove) { + splits=idToRemove.split(/_/); + crit_type=splits[0]; + crit_item=splits[1]; + crit_key=Object.keys(critCssArray[crit_type])[crit_item-1]; + crit_file=critCssArray[crit_type][crit_key].file; + delete critCssArray[crit_type][crit_key]; + + var data = { + 'action': 'rm_critcss', + 'critcss_rm_nonce': '', + 'cachebustingtimestamp': new Date().getTime(), + 'critcssfile': crit_file + }; + + jQuery.ajaxSetup({ + async: false + }); + + jQuery.post(ajaxurl, data, function(response) { + response_array=JSON.parse(response); + if (response_array["code"]!=200) { + // not displaying notice, as the end result is OK; the file isn't there + // displayNotice(response_array["string"]); + } + }); +} + +function removeAllCcssFilesOnServer() { + var data = { + 'action': 'rm_critcss_all', + 'critcss_rm_all_nonce': '', + 'cachebustingtimestamp': new Date().getTime() + }; + + jQuery.ajaxSetup({ + async: false + }); + + jQuery.post(ajaxurl, data, function(response) { + response_array=JSON.parse(response); + if (response_array["code"]!=200) { + // not displaying notice, as the end result is OK; the file isn't there + // displayNotice(response_array["string"]); + } + }); +} + +function addEditRow(idToEdit) { + resetForm(); + if (idToEdit) { + dialogTitle=""; + + splits=idToEdit.split(/_/); + crit_type=splits[0]; + crit_item=splits[1]; + crit_key=Object.keys(critCssArray[crit_type])[crit_item-1]; + crit_file=critCssArray[crit_type][crit_key].file; + + jQuery("#critcss_addedit_id").val(idToEdit); + jQuery("#critcss_addedit_type").val(crit_type); + jQuery("#critcss_addedit_file").val(crit_file); + jQuery("#critcss_addedit_css").attr("placeholder", ""); + jQuery("#critcss_addedit_css").attr("spellcheck",false); + jQuery("#critcss_addedit_type").attr("disabled",true); + + if (crit_type==="paths") { + jQuery("#critcss_addedit_path").val(crit_key); + jQuery("#critcss_addedit_path_wrapper").show(); + jQuery("#critcss_addedit_pagetype_wrapper").hide(); + } else { + jQuery("#critcss_addedit_pagetype").val(crit_key); + jQuery("#critcss_addedit_pagetype_wrapper").show(); + jQuery("#critcss_addedit_path_wrapper").hide(); + } + + var data = { + 'action': 'fetch_critcss', + 'critcss_fetch_nonce': '', + 'cachebustingtimestamp': new Date().getTime(), + 'critcssfile': crit_file + }; + + jQuery.post(ajaxurl, data, function(response) { + response_array=JSON.parse(response); + if (response_array["code"]==200) { + jQuery("#critcss_addedit_css").val(response_array["string"]); + } else { + jQuery("#critcss_addedit_css").attr("placeholder", "").focus(); + } + }); + } else { + dialogTitle=""; + + // default: paths, hide content type field + jQuery("#critcss_addedit_type").val("paths"); + jQuery("#critcss_addedit_css").attr("spellcheck",false); + jQuery("#critcss_addedit_pagetype_wrapper").hide(); + + // event handler on type to switch display + jQuery("#critcss_addedit_type").on('change', function (e) { + if(this.value==="types") { + jQuery("#critcss_addedit_pagetype_wrapper").show(); + jQuery("#critcss_addedit_path_wrapper").hide(); + jQuery("#critcss_addedit_css").attr("placeholder", ""); + } else { + jQuery("#critcss_addedit_path_wrapper").show(); + jQuery("#critcss_addedit_pagetype_wrapper").hide(); + jQuery("#critcss_addedit_css").attr("placeholder", ""); + } + }); + } + + jQuery("#addEditCritCss").dialog({ + autoOpen: true, + height: 500, + width: 700, + title: dialogTitle, + modal: true, + buttons: { + "": function() { + rpath = jQuery("#critcss_addedit_path").val(); + rtype = jQuery("#critcss_addedit_pagetype option:selected").val(); + rccss = jQuery("#critcss_addedit_css").val(); + + console.log('rpath: ' + rpath, 'rtype: ' + rtype, 'rccss: ' + rccss); + + if (rpath === '' && rtype === '') { + alert(''); + } else if (rtype !== '' && rccss == '') { + alert(''); + } else if (rpath !== rpath.replace(/("|\'|<|>|\[|\]|{|}|\|)/,'')) { + alert(''); + } else { + saveEditCritCss(); + jQuery(this).dialog('close'); + } + }, + "": function() { + resetForm(); + jQuery(this).dialog("close"); + } + } + }); +} + +function editDefaultCritCss(){ + document.getElementById("dummyDefault").value=document.getElementById("autoptimize_css_defer_inline").value; + jQuery("#dummyDefault").attr("spellcheck",false); + jQuery("#default_critcss_wrapper").dialog({ + autoOpen: true, + height: 505, + width: 700, + title: "", + modal: true, + buttons: { + "": function() { + document.getElementById("autoptimize_css_defer_inline").value=document.getElementById("dummyDefault").value; + jQuery("#unSavedWarning").show(); + jQuery("#default_critcss_wrapper").dialog( "close" ); + }, + "": function() { + jQuery("#default_critcss_wrapper").dialog( "close" ); + } + } + }); +} + +function editAdditionalCritCss(){ + document.getElementById("dummyAdditional").value=document.getElementById("autoptimize_ccss_additional").value; + jQuery("#dummyAdditional").attr("spellcheck",false); + jQuery("#additional_critcss_wrapper").dialog({ + autoOpen: true, + height: 505, + width: 700, + title: "", + modal: true, + buttons: { + "": function() { + document.getElementById("autoptimize_ccss_additional").value=document.getElementById("dummyAdditional").value; + jQuery("#unSavedWarning").show(); + jQuery("#additional_critcss_wrapper").dialog( "close" ); + }, + "": function() { + jQuery("#additional_critcss_wrapper").dialog( "close" ); + } + } + }); +} + +function saveEditCritCss(){ + critcssfile=jQuery("#critcss_addedit_file").val(); + critcsscontents=jQuery("#critcss_addedit_css").val(); + critcsstype=jQuery("#critcss_addedit_type").val(); + critcssid=jQuery("#critcss_addedit_id").val(); + + if (critcssid) { + // this was an "edit" action, so remove original + // will also remove the file, but that will get rewritten anyway + removeRow(critcssid); + } + if (critcsstype==="types") { + critcsstarget=jQuery("#critcss_addedit_pagetype").val(); + } else { + critcsstarget=jQuery("#critcss_addedit_path").val(); + } + + if (!critcssfile && !critcsscontents) { + critcssfile=0; + } else if (!critcssfile && critcsscontents) { + critcssfile="ccss_" + md5(critcsscontents+critcsstarget) + ".css"; + } + + // Compose the rule object + critCssArray[critcsstype][critcsstarget]={}; + critCssArray[critcsstype][critcsstarget].hash=0; + critCssArray[critcsstype][critcsstarget].file=critcssfile; + + + + updateAfterChange(); + + var data = { + 'action': 'save_critcss', + 'critcss_save_nonce': '', + 'critcssfile': critcssfile, + 'critcsscontents': critcsscontents + }; + + jQuery.post(ajaxurl, data, function(response) { + response_array=JSON.parse(response); + if (response_array["code"]!=200) { + displayNotice(response_array["string"]); + } + }); +} + +function updateAfterChange() { + document.getElementById("critCssOrigin").value=JSON.stringify(critCssArray); + drawTable(critCssArray); + + + var data = { + 'action': 'ao_ccss_saverules', + 'ao_ccss_saverules_nonce': '', + 'critcssrules': document.getElementById("critCssOrigin").value + }; + + jQuery.post(ajaxurl, data, function(response) { + response_array=JSON.parse(response); + if (response_array["code"]!=200) { + displayNotice(response_array["msg"]); + jQuery("#unSavedWarning").show(); + } + }); + + jQuery("#unSavedWarning").show(); + + + document.getElementById('ao_title_and_button').scrollIntoView(); +} + +function displayNotice(textIn, level = 'error') { + jQuery('

'+textIn+'

').insertBefore("#unSavedWarning"); + document.getElementById('ao_title_and_button').scrollIntoView(); +} + +function resetForm() { + jQuery("#critcss_addedit_css").attr("placeholder", ""); + jQuery("#critcss_addedit_type").attr("disabled",false); + jQuery("#critcss_addedit_path_wrapper").show(); + jQuery("#critcss_addedit_id").val(""); + jQuery("#critcss_addedit_path").val(""); + jQuery("#critcss_addedit_file").val(""); + jQuery("#critcss_addedit_pagetype").val(""); + jQuery("#critcss_addedit_css").val(""); +} diff --git a/wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_rules.php b/wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_rules.php new file mode 100644 index 0000000..6c62443 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/critcss-inc/admin_settings_rules.php @@ -0,0 +1,238 @@ +criticalcss(); + $ao_ccss_rules = sanitize_rules( $criticalcss->get_option( 'rules' ) ); + $ao_ccss_types = $criticalcss->get_types(); + + if ( empty( $ao_ccss_types ) || ! is_array( $ao_ccss_types ) ) { + $ao_ccss_types = array( 'No conditionals, check CSS optimization settings.' ); + } + ?> +
    +
  • +

    + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    +

    +
    + + +
    + + +
    + + +
    + +
    +
    + + + +
    +
    + +
    +
    + +
  • +
+ $value ) { + $newkey = esc_url( $key ); + if ( $newkey !== $key ) { + if ( 0 === strpos( $newkey, 'http://' ) && 0 !== strpos( $key, 'http://' ) ) { + // esc_url adds "http://" to any string that does not start with either a protocol or a + // slash, see https://developer.wordpress.org/reference/functions/esc_url/#more-information + // this removes that unneeded protocol again. + $newkey = substr_replace( $newkey, '', 0, 7 ); + } + unset( $rules['paths'][ $key ] ); + $rules['paths'][ $newkey ] = $value; + } + } + } + } + + $rules = autoptimizeUtils::strip_tags_array( $rules ); + return $rules; +} + +?> diff --git a/wp-content/plugins/autoptimize/classes/critcss-inc/css/admin_styles.css b/wp-content/plugins/autoptimize/classes/critcss-inc/css/admin_styles.css new file mode 100644 index 0000000..9881a48 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/critcss-inc/css/admin_styles.css @@ -0,0 +1,253 @@ +/* form */ +.itemTitle { + margin: 0; +} +.itemTitle.fleft { + float: left; +} +.toggle-btn { + float: right; + position: relative; + top: -10px; + width: 36px; + height: 36px; + margin: 0; + padding: 0; + border: 0; + background: 0 0; + cursor: pointer; + outline: none; +} +.toggle-indicator { + color: #72777c; + display: inline-block; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none!important; + outline: none; +} +.itemDetail { + background: #fff; + border: 1px solid #ccc; + padding: 15px; + margin: 15px 10px 10px 0; + min-height: 15px; + word-break: break-word; +} +.collapsible { + clear: both; +} +.howto { + margin: 10px 0 0; + padding: 2px 10px; + min-height: 45px; + font-style: normal; + border-left: solid; + border-left-width: 5px; + border-left-color: #00a0d2; + background-color: white; +} +.howto .title-wrap { + float: left; + margin: 5px 0 15px; +} +.howto .title { + margin: 0; +} +.howto .subtitle { + margin: 0; + padding: 0; + font-weight: 100; + font-style: italic; + color: #72777c; +} +.howto .toggle-btn { + top: -4px; + left: 10px; +} +.howto-wrap { + clear: both; + width: 100%; +} +.form-table { + margin-top: 20px; +} +.form-table tr { + vertical-align: top; +} +.form-table p.notes, +.form-table p code { + font-size: 12px !important; +} +.form-table p.notes { + color: #666; +} +.form-table.rules { + margin-top: 0; +} +.form-table.rules th { + width: 175px; +} +.ui-dialog .form-table.rules th, +.ui-dialog .form-table.rules td { + padding: 5px 0px; +} +.rules-list { + width: 100%; + margin-bottom: 10px; +} +.rules-list tr.header th { + background-color: #f1f1f1; +} +.rules-list tbody .rule:nth-child(even) td { + background-color: #f9f9f9; +} +#rules-list, +#queue { + margin-bottom: 20px; +} +#rules-list h4 { + margin: 20px 0 10px; + font-size: 1.2em; +} +#rules-list .header th, +#rules-list .rule td { + padding: 4px; +} +#rules-list .rule td { + margin: 0; + border-bottom: 1px solid #ccc; +} +#rules-list .type { + width: 80px; +} +#rules-list .btn { + width: 55px; +} +#rules-list .rule td.btn { + width: 70px; + padding: 4px 0 4px 2px; +} +.badge { + padding: 0 5px; + color: #fff; + background-color: #00a0d2; + border-radius: 5px; + font-size: .8em; + font-weight: bold; + text-align: center; +} +.badge.manual { + background-color: #46b450; +} +#rules-list .btn span { + width: 67px; + text-align: center; +} +p.rules-btn { + margin: 20px 0 0; + padding: 0; +} +.queue { + table-layout: fixed; + border-collapse: collapse; +} +.queue .job td { + border-bottom: 1px solid #ccc; +} +.queue .status, +.queue .job td.status { + width: 45px; +} +.queue td.status { + text-align: center; +} +.queue .badge { + border-radius: 3px; + cursor: default; +} +.badge.new { + background-color: #666; +} +.badge.pending { + background-color: #00a0d2; +} +.badge.done { + background-color: #46b450; +} +.badge.review { + background-color: #ffb900; +} +.badge.review.rule { + margin-left: 2px; +} +.badge.error { + background-color: #dc3232; +} +.badge.unknown { + color: #666; + background-color: #ccc; +} +.queue .btn { + width: 86px; +} +.queue .button-secondary { + line-height: 17px; + height: 19px; + padding: 0 2px; + font-size: 8pt; +} +.queue .button-secondary.to-right { + margin-left: 2px; +} +.queue .button-secondary a { + color: #555; + text-decoration: none; +} +.queue .button-secondary a:hover { + color: #23282d; +} +.queue .button-secondary .dashicons { + position: relative; + top: 1px; + font-size: 15px; +} +p.submit.left { + float: left; +} +#importSettingsForm { + float: right; + text-align: left; + max-width: 100%; + margin-top: 20px; + padding-top: 10px; + position: relative; + overflow: hidden; +} +#settingsfile { + padding: 0 2px; +} +#settingsfile { + padding: 0 2px; +} + +/* debug block */ +#debug { + clear: both; +} +#debug .debug th, +#debug .debug td { + padding: 5px 10px; + font-size: 13px; +} +#debug pre { + margin: 0 0 1em; + font-size: 12px; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + white-space: pre-wrap; +} +#explain-panel p { + font-size:120% +} diff --git a/wp-content/plugins/autoptimize/classes/critcss-inc/css/ao-tablesorter/asc.gif b/wp-content/plugins/autoptimize/classes/critcss-inc/css/ao-tablesorter/asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..744675f319f283f3963539a65f5115fcc1c531e3 GIT binary patch literal 54 zcmZ?wbhEHb6lGvxXkcV0DzEwf|G(l-7DfgJMg|=QAOOiQF!A=tFW`Q0{?_dDi`go= G4AuaE)eg!4 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/autoptimize/classes/critcss-inc/css/ao-tablesorter/bg.gif b/wp-content/plugins/autoptimize/classes/critcss-inc/css/ao-tablesorter/bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..7222de598c4ab4d3c3543200609b44a33c5df073 GIT binary patch literal 64 zcmZ?wbhEHb6lLIKXkcVWOH2Fz|G(l-7DfgJMg|=QAOOiYFp2l{H=JJ0yVz&JzRH}V RdBuw(<6rcu1~V{N0{}hZ6SDvS literal 0 HcmV?d00001 diff --git a/wp-content/plugins/autoptimize/classes/critcss-inc/css/ao-tablesorter/desc.gif b/wp-content/plugins/autoptimize/classes/critcss-inc/css/ao-tablesorter/desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..d143bdff3c3b571e126f87cc317f38b584f9db34 GIT binary patch literal 54 zcmZ?wbhEHb6lGvxXkcV0DzEwf|G(l-7DfgJMg|=QAOOiQF!A>EGoD<#VNP?1QCB1* GgEats$qpX? literal 0 HcmV?d00001 diff --git a/wp-content/plugins/autoptimize/classes/critcss-inc/css/ao-tablesorter/style.css b/wp-content/plugins/autoptimize/classes/critcss-inc/css/ao-tablesorter/style.css new file mode 100644 index 0000000..4cbdbd9 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/critcss-inc/css/ao-tablesorter/style.css @@ -0,0 +1,40 @@ +/* tables */ +table.tablesorter { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + margin: 30px 0 5px; + font-size: 8pt; + width: 100%; + text-align: left; +} +table.tablesorter thead tr th, +table.tablesorter tfoot tr th { + background-color: #f1f1f1; + font-size: 8pt; + padding: 2px; +} +table.tablesorter thead tr .header { + background-image: url(bg.gif); + background-repeat: no-repeat; + background-position: center right; + cursor: pointer; +} +table.tablesorter tbody td { + color: #444; + padding: 4px; + background-color: #fff; + vertical-align: middle; +} +table.tablesorter tbody tr.even td, +table.tablesorter tbody tr:nth-child(even) td { + background-color: #f9f9f9; +} +table.tablesorter thead tr .headerSortUp { + background-image: url(asc.gif); +} +table.tablesorter thead tr .headerSortDown { + background-image: url(desc.gif); +} +table.tablesorter thead tr .headerSortDown, +table.tablesorter thead tr .headerSortUp { + background-color: #ccc; +} diff --git a/wp-content/plugins/autoptimize/classes/critcss-inc/js/admin_settings.js b/wp-content/plugins/autoptimize/classes/critcss-inc/js/admin_settings.js new file mode 100644 index 0000000..5516646 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/critcss-inc/js/admin_settings.js @@ -0,0 +1,11 @@ +// Toggle button control for collapsible elements +jQuery(".toggle-btn").click(function () { + $header = jQuery(this); + $content = $header.next(); + $content.slideToggle(250, "swing", function () { + jQuery("span.toggle-indicator", $header).toggleClass('dashicons-arrow-down'); + }); +}); + +// Attach an event to export buttons +jQuery("#exportSettings").click(function(){exportSettings();}); \ No newline at end of file diff --git a/wp-content/plugins/autoptimize/classes/critcss-inc/js/jquery.tablesorter.min.js b/wp-content/plugins/autoptimize/classes/critcss-inc/js/jquery.tablesorter.min.js new file mode 100644 index 0000000..32a2bae --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/critcss-inc/js/jquery.tablesorter.min.js @@ -0,0 +1,4 @@ + +(function($){$.extend({tablesorter:new +function(){var parsers=[],widgets=[];this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",cssChildRow:"expand-child",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,sortLocaleCompare:true,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:'/\.|\,/g',onRenderHeader:null,selectorHeaders:'thead th',debug:false};function benchmark(s,d){log(s+","+(new Date().getTime()-d.getTime())+"ms");}this.benchmark=benchmark;function log(s){if(typeof console!="undefined"&&typeof console.debug!="undefined"){console.log(s);}else{alert(s);}}function buildParserCache(table,$headers){if(table.config.debug){var parsersDebug="";}if(table.tBodies.length==0)return;var rows=table.tBodies[0].rows;if(rows[0]){var list=[],cells=rows[0].cells,l=cells.length;for(var i=0;i1){arr=arr.concat(checkCellColSpan(table,headerArr,row++));}else{if(table.tHead.length==1||(cell.rowSpan>1||!r[row+1])){arr.push(cell);}}}return arr;};function checkHeaderMetadata(cell){if(($.metadata)&&($(cell).metadata().sorter===false)){return true;};return false;}function checkHeaderOptions(table,i){if((table.config.headers[i])&&(table.config.headers[i].sorter===false)){return true;};return false;}function checkHeaderOptionsSortingLocked(table,i){if((table.config.headers[i])&&(table.config.headers[i].lockedOrder))return table.config.headers[i].lockedOrder;return false;}function applyWidget(table){var c=table.config.widgets;var l=c.length;for(var i=0;i');$("tr:first td",table.tBodies[0]).each(function(){colgroup.append($('').css('width',$(this).width()));});$(table).prepend(colgroup);};}function updateHeaderSortCount(table,sortList){var c=table.config,l=sortList.length;for(var i=0;i b["+i+"]) ? 1 : 0));";};function makeSortTextDesc(i){return"((b["+i+"] < a["+i+"]) ? -1 : ((b["+i+"] > a["+i+"]) ? 1 : 0));";};function makeSortNumeric(i){return"a["+i+"]-b["+i+"];";};function makeSortNumericDesc(i){return"b["+i+"]-a["+i+"];";};function sortText(a,b){if(table.config.sortLocaleCompare)return a.localeCompare(b);return((ab)?1:0));};function sortTextDesc(a,b){if(table.config.sortLocaleCompare)return b.localeCompare(a);return((ba)?1:0));};function sortNumeric(a,b){return a-b;};function sortNumericDesc(a,b){return b-a;};function getCachedSortType(parsers,i){return parsers[i].type;};this.construct=function(settings){return this.each(function(){if(!this.tHead||!this.tBodies)return;var $this,$document,$headers,cache,config,shiftDown=0,sortOrder;this.config={};config=$.extend(this.config,$.tablesorter.defaults,settings);$this=$(this);$.data(this,"tablesorter",config);$headers=buildHeaders(this);this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);var sortCSS=[config.cssDesc,config.cssAsc];fixColumnWidth(this);$headers.click(function(e){var totalRows=($this[0].tBodies[0]&&$this[0].tBodies[0].rows.length)||0;if(!this.sortDisabled&&totalRows>0){$this.trigger("sortStart");var $cell=$(this);var i=this.column;this.order=this.count++%2;if(this.lockedOrder)this.order=this.lockedOrder;if(!e[config.sortMultiSortKey]){config.sortList=[];if(config.sortForce!=null){var a=config.sortForce;for(var j=0;j0){$this.trigger("sorton",[config.sortList]);}applyWidget(this);});};this.addParser=function(parser){var l=parsers.length,a=true;for(var i=0;i>16)+(t>>16)+(r>>16)<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)]=r;var e,i,a,d,h,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function d(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(d(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="";for(r=0;r>>4&15)+"0123456789abcdef".charAt(15&t);return e}function v(n){return unescape(encodeURIComponent(n))}function m(n){return h(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}"function"==typeof define&&define.amd?define(function(){return A}):"object"==typeof module&&module.exports?module.exports=A:n.md5=A}(this); +//# sourceMappingURL=md5.min.js.map \ No newline at end of file diff --git a/wp-content/plugins/autoptimize/classes/external/do_not_donate_smallest.png b/wp-content/plugins/autoptimize/classes/external/do_not_donate_smallest.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c977ef504ddfed873234388a6d5380e9f7acca GIT binary patch literal 9585 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 z zzI=&s ze`p(->Q82ClK>*|rflKmUAb~46$PnnV`KBUW5h+fydb8&M1FuT zb7dvf1j!PWNhCFaGLrF6H_2=eU0Tx-k96wS**L6b&6ndxjl#~II}s8RVrje?vxb0$%O#3kM*5yT{l{1?bnlF*qwqXm?(R;F(HWRX;S#v^?c$2SV=^5>rv zVQ1&RhNHGc*k=qGFaUmjeh3ccPuZ$+(&P(~XED`xf^ol`9tcUL+R1+_a8N z@GKKsN^;qO{6u8_E*W9?>)hlg0~+u0X&Eyb(a|-nq?I_*Lgsw;9q!(}Ys?*@M|3|{ zh?qG`l1Eu_xouvo46R7`DxGyg-B(P@k|046PYH)*2xTsj0Y;e!U#8KM#8Gk~5lWEC zmtpyaCILpW+(zWDD`cio$(P;>&y9klOBZD&#K5^)9??n;(`}6|RSIpGhj@E?Cz-2? zLl9T?PanQ{m4N;+&Q*EglF5HXWLnsyN*qNX8B%#=5=jO)4-uJXS4#NkiRo7oRKW=q-Y5tkbQ3EPVN9h8 zPLn2lrj^ybs`>I=nK6C(+pSx-8grA6?L#E5kzo{ChE}+6;csr)x>*R*-bS zG8`hAxco0|V*gC#lL%uJgb%tIMTx>dVSM%J(*4N1q+#vSrK__QU*!#@Bnf+C3PQ{1 z!;ykd65?Cp!sI_Y8j;l|KmSEoi%}4UzD7|}rVM4Gc!r()U|oR%`JOLdo`w%46yZY( zmt&9iCe~8E7(q;7v4pKM)Y8S&x5)oYC3eUqNi2qfXzbX-D8_YK$7C&Y<}zUo8dwEx z+m?#0H)X|&6$??23w+2Sk~g!I45uVE1eR@Oc)n}bu6jmRVYIwnJjQ1mNR8KOOnr;| zUzPlww)}60Wa>#3jae#`gyiyUz*&m1kbOrTUE#vkw2GACMxv=(x2`QKZa7`m{6T{T zz2f6L#!5}7g@_n@!UVis8^N1k`*??PW{DCdDt{4z#29XoKT|1T5=L?cnU?%h3nS5) z2q9tfcchkPWn~v$t(sUw^4RcqASu|Q)A7DYHa@6uuV&4fxNzY@f(4NqR^Ktvom;AQdW9F#g8y(xpoYLb83jE2AI`5dJxWL|24V8j+D%NigNlW6BWu{}BlYWQJ|| zTi4jgz@dm(hsYR~xI>wEU&ggQD!lB_p@UHnKIn$3RjY!1i$%z@SVHaEwNboyars$8 boPzuxf96k4@`(3z00000NkvXXu0mjfwa9U* literal 0 HcmV?d00001 diff --git a/wp-content/plugins/autoptimize/classes/external/index.html b/wp-content/plugins/autoptimize/classes/external/index.html new file mode 100644 index 0000000..fe7267f --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/index.html @@ -0,0 +1 @@ +Generated by Autoptimize diff --git a/wp-content/plugins/autoptimize/classes/external/js/index.html b/wp-content/plugins/autoptimize/classes/external/js/index.html new file mode 100644 index 0000000..fe7267f --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/js/index.html @@ -0,0 +1 @@ +Generated by Autoptimize diff --git a/wp-content/plugins/autoptimize/classes/external/js/jquery.cookie.js b/wp-content/plugins/autoptimize/classes/external/js/jquery.cookie.js new file mode 100644 index 0000000..1389adf --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/js/jquery.cookie.js @@ -0,0 +1,89 @@ +/*jslint browser: true */ /*global jQuery: true */ + +/** + * jQuery Cookie plugin + * + * Copyright (c) 2010 Klaus Hartl (stilbuero.de) + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + */ + +// TODO JsDoc + +/** + * Create a cookie with the given key and value and other optional parameters. + * + * @example $.cookie('the_cookie', 'the_value'); + * @desc Set the value of a cookie. + * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true }); + * @desc Create a cookie with all available options. + * @example $.cookie('the_cookie', 'the_value'); + * @desc Create a session cookie. + * @example $.cookie('the_cookie', null); + * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain + * used when the cookie was set. + * + * @param String key The key of the cookie. + * @param String value The value of the cookie. + * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. + * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. + * If a negative value is specified (e.g. a date in the past), the cookie will be deleted. + * If set to null or omitted, the cookie will be a session cookie and will not be retained + * when the the browser exits. + * @option String path The value of the path attribute of the cookie (default: path of page that created the cookie). + * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). + * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will + * require a secure protocol (like HTTPS). + * @type undefined + * + * @name $.cookie + * @cat Plugins/Cookie + * @author Klaus Hartl/klaus.hartl@stilbuero.de + */ + +/** + * Get the value of a cookie with the given key. + * + * @example $.cookie('the_cookie'); + * @desc Get the value of a cookie. + * + * @param String key The key of the cookie. + * @return The value of the cookie. + * @type String + * + * @name $.cookie + * @cat Plugins/Cookie + * @author Klaus Hartl/klaus.hartl@stilbuero.de + */ +jQuery.cookie = function (key, value, options) { + + // key and value given, set cookie... + if (arguments.length > 1 && (value === null || typeof value !== "object")) { + options = jQuery.extend({}, options); + + if (value === null) { + options.expires = -1; + } + + if (typeof options.expires === 'number') { + var days = options.expires, t = options.expires = new Date(); + t.setDate(t.getDate() + days); + } + + return (document.cookie = [ + encodeURIComponent(key), '=', + options.raw ? String(value) : encodeURIComponent(String(value)), + options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE + options.path ? '; path=' + options.path : '', + options.domain ? '; domain=' + options.domain : '', + options.secure ? '; secure' : '' + ].join('')); + } + + // key and possibly options given, get cookie... + options = value || {}; + var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent; + return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null; +}; diff --git a/wp-content/plugins/autoptimize/classes/external/js/jquery.cookie.min.js b/wp-content/plugins/autoptimize/classes/external/js/jquery.cookie.min.js new file mode 100644 index 0000000..927fc7c --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/js/jquery.cookie.min.js @@ -0,0 +1 @@ +jQuery.cookie=function(key,value,options){if(arguments.length>1&&(value===null||typeof value!=="object")){options=jQuery.extend({},options);if(value===null){options.expires=-1;}if(typeof options.expires==='number'){var days=options.expires,t=options.expires=new Date();t.setDate(t.getDate()+days);}return(document.cookie=[encodeURIComponent(key),'=',options.raw?String(value):encodeURIComponent(String(value)),options.expires?'; expires='+options.expires.toUTCString():'',options.path?'; path='+options.path:'',options.domain?'; domain='+options.domain:'',options.secure?'; secure':''].join(''));}options=value||{};var result,decode=options.raw?function(s){return s;}:decodeURIComponent;return(result=new RegExp('(?:^|; )'+encodeURIComponent(key)+'=([^;]*)').exec(document.cookie))?decode(result[1]):null;}; diff --git a/wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js b/wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js new file mode 100644 index 0000000..7f2da7d --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js @@ -0,0 +1,3 @@ +/*! lazysizes + ls unveilhooks - v5.3.1 (incl. ls-uvh data-link fix) */ +!function(e){var t=function(u,D,f){"use strict";var k,H;if(function(){var e;var t={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",fastLoadedClass:"ls-is-cached",iframeLoadMode:0,srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:true,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:true,ricTimeout:0,throttleDelay:125};H=u.lazySizesConfig||u.lazysizesConfig||{};for(e in t){if(!(e in H)){H[e]=t[e]}}}(),!D||!D.getElementsByClassName){return{init:function(){},cfg:H,noSupport:true}}var O=D.documentElement,i=u.HTMLPictureElement,P="addEventListener",$="getAttribute",q=u[P].bind(u),I=u.setTimeout,U=u.requestAnimationFrame||I,o=u.requestIdleCallback,j=/^picture$/i,r=["load","error","lazyincluded","_lazyloaded"],a={},G=Array.prototype.forEach,J=function(e,t){if(!a[t]){a[t]=new RegExp("(\\s|^)"+t+"(\\s|$)")}return a[t].test(e[$]("class")||"")&&a[t]},K=function(e,t){if(!J(e,t)){e.setAttribute("class",(e[$]("class")||"").trim()+" "+t)}},Q=function(e,t){var a;if(a=J(e,t)){e.setAttribute("class",(e[$]("class")||"").replace(a," "))}},V=function(t,a,e){var i=e?P:"removeEventListener";if(e){V(t,a)}r.forEach(function(e){t[i](e,a)})},X=function(e,t,a,i,r){var n=D.createEvent("Event");if(!a){a={}}a.instance=k;n.initEvent(t,!i,!r);n.detail=a;e.dispatchEvent(n);return n},Y=function(e,t){var a;if(!i&&(a=u.picturefill||H.pf)){if(t&&t.src&&!e[$]("srcset")){e.setAttribute("srcset",t.src)}a({reevaluate:true,elements:[e]})}else if(t&&t.src){e.src=t.src}},Z=function(e,t){return(getComputedStyle(e,null)||{})[t]},s=function(e,t,a){a=a||e.offsetWidth;while(a49?function(){o(t,{timeout:n});if(n!==H.ricTimeout){n=H.ricTimeout}}:te(function(){I(t)},true);return function(e){var t;if(e=e===true){n=33}if(a){return}a=true;t=r-(f.now()-i);if(t<0){t=0}if(e||t<9){s()}else{I(s,t)}}},ie=function(e){var t,a;var i=99;var r=function(){t=null;e()};var n=function(){var e=f.now()-a;if(e0;if(r&&Z(i,"overflow")!="visible"){a=i.getBoundingClientRect();r=C>a.left&&pa.top-1&&g500&&O.clientWidth>500?500:370:H.expand;k._defEx=u;f=u*H.expFactor;c=H.hFac;A=null;if(w2&&h>2&&!D.hidden){w=f;N=0}else if(h>1&&N>1&&M<6){w=u}else{w=_}}if(l!==n){y=innerWidth+n*c;z=innerHeight+n;s=n*-1;l=n}a=d[t].getBoundingClientRect();if((b=a.bottom)>=s&&(g=a.top)<=z&&(C=a.right)>=s*c&&(p=a.left)<=y&&(b||C||p||g)&&(H.loadHidden||x(d[t]))&&(m&&M<3&&!o&&(h<3||N<4)||W(d[t],n))){R(d[t]);r=true;if(M>9){break}}else if(!r&&m&&!i&&M<4&&N<4&&h>2&&(v[0]||H.preloadAfterLoad)&&(v[0]||!o&&(b||C||p||g||d[t][$](H.sizesAttr)!="auto"))){i=v[0]||d[t]}}if(i&&!r){R(i)}}};var a=ae(t);var S=function(e){var t=e.target;if(t._lazyCache){delete t._lazyCache;return}L(e);K(t,H.loadedClass);Q(t,H.loadingClass);V(t,B);X(t,"lazyloaded")};var i=te(S);var B=function(e){i({target:e.target})};var T=function(e,t){var a=e.getAttribute("data-load-mode")||H.iframeLoadMode;if(a==0){e.contentWindow.location.replace(t)}else if(a==1){e.src=t}};var F=function(e){var t;var a=e[$](H.srcsetAttr);if(t=H.customMedia[e[$]("data-media")||e[$]("media")]){e.setAttribute("media",t)}if(a){e.setAttribute("srcset",a)}};var s=te(function(t,e,a,i,r){var n,s,o,l,u,f;if(!(u=X(t,"lazybeforeunveil",e)).defaultPrevented){if(i){if(a){K(t,H.autosizesClass)}else{t.setAttribute("sizes",i)}}s=t[$](H.srcsetAttr);n=t[$](H.srcAttr);if(r){o=t.parentNode;l=o&&j.test(o.nodeName||"")}f=e.firesLoad||"src"in t&&(s||n||l);u={target:t};K(t,H.loadingClass);if(f){clearTimeout(c);c=I(L,2500);V(t,B,true)}if(l){G.call(o.getElementsByTagName("source"),F)}if(s){t.setAttribute("srcset",s)}else if(n&&!l){if(d.test(t.nodeName)){T(t,n)}else{t.src=n}}if(r&&(s||l)){Y(t,{src:n})}}if(t._lazyRace){delete t._lazyRace}Q(t,H.lazyClass);ee(function(){var e=t.complete&&t.naturalWidth>1;if(!f||e){if(e){K(t,H.fastLoadedClass)}S(u);t._lazyCache=true;I(function(){if("_lazyCache"in t){delete t._lazyCache}},9)}if(t.loading=="lazy"){M--}},true)});var R=function(e){if(e._lazyRace){return}var t;var a=n.test(e.nodeName);var i=a&&(e[$](H.sizesAttr)||e[$]("sizes"));var r=i=="auto";if((r||!m)&&a&&(e[$]("src")||e.srcset)&&!e.complete&&!J(e,H.errorClass)&&J(e,H.lazyClass)){return}t=X(e,"lazyunveilread").detail;if(r){re.updateElem(e,true,e.offsetWidth)}e._lazyRace=true;M++;s(e,t,r,i,a)};var r=ie(function(){H.loadMode=3;a()});var o=function(){if(H.loadMode==3){H.loadMode=2}r()};var l=function(){if(m){return}if(f.now()-e<999){I(l,999);return}m=true;H.loadMode=3;a();q("scroll",o,true)};return{_:function(){e=f.now();k.elements=D.getElementsByClassName(H.lazyClass);v=D.getElementsByClassName(H.lazyClass+" "+H.preloadClass);q("scroll",a,true);q("resize",a,true);q("pageshow",function(e){if(e.persisted){var t=D.querySelectorAll("."+H.loadingClass);if(t.length&&t.forEach){U(function(){t.forEach(function(e){if(e.complete){R(e)}})})}}});if(u.MutationObserver){new MutationObserver(a).observe(O,{childList:true,subtree:true,attributes:true})}else{O[P]("DOMNodeInserted",a,true);O[P]("DOMAttrModified",a,true);setInterval(a,999)}q("hashchange",a,true);["focus","mouseover","click","load","transitionend","animationend"].forEach(function(e){D[P](e,a,true)});if(/d$|^c/.test(D.readyState)){l()}else{q("load",l);D[P]("DOMContentLoaded",a);I(l,2e4)}if(k.elements.length){t();ee._lsFlush()}else{a()}},checkElems:a,unveil:R,_aLSL:o}}(),re=function(){var a;var n=te(function(e,t,a,i){var r,n,s;e._lazysizesWidth=i;i+="px";e.setAttribute("sizes",i);if(j.test(t.nodeName||"")){r=t.getElementsByTagName("source");for(n=0,s=r.length;nli{float:left}.unslider-vertical>ul{height:100%}.unslider-vertical li{float:none;width:100%}.unslider-fade{position:relative}.unslider-fade .unslider-wrap li{position:absolute;left:0;top:0;right:0;z-index:8}.unslider-fade .unslider-wrap li.unslider-active{z-index:10}.unslider li,.unslider ol,.unslider ul{list-style:none;margin:0;padding:0;border:none}.unslider-arrow{position:absolute;left:20px;z-index:2;cursor:pointer}.unslider-arrow.next{left:auto;right:20px} diff --git a/wp-content/plugins/autoptimize/classes/external/js/unslider.min.js b/wp-content/plugins/autoptimize/classes/external/js/unslider.min.js new file mode 100644 index 0000000..600c9d1 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/js/unslider.min.js @@ -0,0 +1 @@ +!function($){return $?($.Unslider=function(t,n){var e=this;return e._="unslider",e.defaults={autoplay:!1,delay:3e3,speed:750,easing:"swing",keys:{prev:37,next:39},nav:!0,arrows:{prev:'',next:''},animation:"horizontal",selectors:{container:"ul:first",slides:"li"},animateHeight:!1,activeClass:e._+"-active",swipe:!0,swipeThreshold:.2},e.$context=t,e.options={},e.$parent=null,e.$container=null,e.$slides=null,e.$nav=null,e.$arrows=[],e.total=0,e.current=0,e.prefix=e._+"-",e.eventSuffix="."+e.prefix+~~(2e3*Math.random()),e.interval=null,e.init=function(t){return e.options=$.extend({},e.defaults,t),e.$container=e.$context.find(e.options.selectors.container).addClass(e.prefix+"wrap"),e.$slides=e.$container.children(e.options.selectors.slides),e.setup(),$.each(["nav","arrows","keys","infinite"],function(t,n){e.options[n]&&e["init"+$._ucfirst(n)]()}),jQuery.event.special.swipe&&e.options.swipe&&e.initSwipe(),e.options.autoplay&&e.start(),e.calculateSlides(),e.$context.trigger(e._+".ready"),e.animate(e.options.index||e.current,"init")},e.setup=function(){e.$context.addClass(e.prefix+e.options.animation).wrap('
'),e.$parent=e.$context.parent("."+e._);var t=e.$context.css("position");"static"===t&&e.$context.css("position","relative"),e.$context.css("overflow","hidden")},e.calculateSlides=function(){if(e.total=e.$slides.length,"fade"!==e.options.animation){var t="width";"vertical"===e.options.animation&&(t="height"),e.$container.css(t,100*e.total+"%").addClass(e.prefix+"carousel"),e.$slides.css(t,100/e.total+"%")}},e.start=function(){return e.interval=setTimeout(function(){e.next()},e.options.delay),e},e.stop=function(){return clearTimeout(e.interval),e},e.initNav=function(){var t=$('');e.$slides.each(function(n){var i=this.getAttribute("data-nav")||n+1;$.isFunction(e.options.nav)&&(i=e.options.nav.call(e.$slides.eq(n),n,i)),t.children("ol").append('
  • '+i+"
  • ")}),e.$nav=t.insertAfter(e.$context),e.$nav.find("li").on("click"+e.eventSuffix,function(){var t=$(this).addClass(e.options.activeClass);t.siblings().removeClass(e.options.activeClass),e.animate(t.attr("data-slide"))})},e.initArrows=function(){e.options.arrows===!0&&(e.options.arrows=e.defaults.arrows),$.each(e.options.arrows,function(t,n){e.$arrows.push($(n).insertAfter(e.$context).on("click"+e.eventSuffix,e[t]))})},e.initKeys=function(){e.options.keys===!0&&(e.options.keys=e.defaults.keys),$(document).on("keyup"+e.eventSuffix,function(t){$.each(e.options.keys,function(n,i){t.which===i&&$.isFunction(e[n])&&e[n].call(e)})})},e.initSwipe=function(){var t=e.$slides.width();"fade"!==e.options.animation&&e.$container.on({movestart:function(t){return t.distX>t.distY&&t.distX<-t.distY||t.distX-t.distY?!!t.preventDefault():void e.$container.css("position","relative")},move:function(n){e.$container.css("left",-(100*e.current)+100*n.distX/t+"%")},moveend:function(n){Math.abs(n.distX)/t>e.options.swipeThreshold?e[n.distX<0?"next":"prev"]():e.$container.animate({left:-(100*e.current)+"%"},e.options.speed/2)}})},e.initInfinite=function(){var t=["first","last"];$.each(t,function(n,i){e.$slides.push.apply(e.$slides,e.$slides.filter(':not(".'+e._+'-clone")')[i]().clone().addClass(e._+"-clone")["insert"+(0===n?"After":"Before")](e.$slides[t[~~!n]]()))})},e.destroyArrows=function(){$.each(e.$arrows,function(t,n){n.remove()})},e.destroySwipe=function(){e.$container.off("movestart move moveend")},e.destroyKeys=function(){$(document).off("keyup"+e.eventSuffix)},e.setIndex=function(t){return 0>t&&(t=e.total-1),e.current=Math.min(Math.max(0,t),e.total-1),e.options.nav&&e.$nav.find('[data-slide="'+e.current+'"]')._active(e.options.activeClass),e.$slides.eq(e.current)._active(e.options.activeClass),e},e.animate=function(t,n){if("first"===t&&(t=0),"last"===t&&(t=e.total),isNaN(t))return e;e.options.autoplay&&e.stop().start(),e.setIndex(t),e.$context.trigger(e._+".change",[t,e.$slides.eq(t)]);var i="animate"+$._ucfirst(e.options.animation);return $.isFunction(e[i])&&e[i](e.current,n),e},e.next=function(){var t=e.current+1;return t>=e.total&&(t=0),e.animate(t,"next")},e.prev=function(){return e.animate(e.current-1,"prev")},e.animateHorizontal=function(t){var n="left";return"rtl"===e.$context.attr("dir")&&(n="right"),e.options.infinite&&e.$container.css("margin-"+n,"-100%"),e.slide(n,t)},e.animateVertical=function(t){return e.options.animateHeight=!0,e.options.infinite&&e.$container.css("margin-top",-e.$slides.outerHeight()),e.slide("top",t)},e.slide=function(t,n){if(e.options.animateHeight&&e._move(e.$context,{height:e.$slides.eq(n).outerHeight()},!1),e.options.infinite){var i;n===e.total-1&&(i=e.total-3,n=-1),n===e.total-2&&(i=0,n=e.total-2),"number"==typeof i&&(e.setIndex(i),e.$context.on(e._+".moved",function(){e.current===i&&e.$container.css(t,-(100*i)+"%").off(e._+".moved")}))}var o={};return o[t]=-(100*n)+"%",e._move(e.$container,o)},e.animateFade=function(t){var n=e.$slides.eq(t).addClass(e.options.activeClass);e._move(n.siblings().removeClass(e.options.activeClass),{opacity:0}),e._move(n,{opacity:1},!1)},e._move=function(t,n,i,o){return i!==!1&&(i=function(){e.$context.trigger(e._+".moved")}),t._move(n,o||e.options.speed,e.options.easing,i)},e.init(n)},$.fn._active=function(t){return this.addClass(t).siblings().removeClass(t)},$._ucfirst=function(t){return(t+"").toLowerCase().replace(/^./,function(t){return t.toUpperCase()})},$.fn._move=function(){return this.stop(!0,!0),$.fn[$.fn.velocity?"velocity":"animate"].apply(this,arguments)},void($.fn.unslider=function(t){return this.each(function(){var n=$(this);if("string"==typeof t&&n.data("unslider")){t=t.split(":");var e=n.data("unslider")[t[0]];if($.isFunction(e))return e.apply(n,t[1]?t[1].split(","):null)}return n.data("unslider",new $.Unslider(n,t))})})):console.warn("Unslider needs jQuery")}(window.jQuery); diff --git a/wp-content/plugins/autoptimize/classes/external/php/ao-minify-html.php b/wp-content/plugins/autoptimize/classes/external/php/ao-minify-html.php new file mode 100644 index 0000000..8718611 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/php/ao-minify-html.php @@ -0,0 +1,276 @@ + + */ +class AO_Minify_HTML { + + /** @var string */ + private $_html; + + /** + * "Minify" an HTML page + * + * @param string $html + * + * @param array $options + * + * 'cssMinifier' : (optional) callback function to process content of STYLE + * elements. + * + * 'jsMinifier' : (optional) callback function to process content of SCRIPT + * elements. Note: the type attribute is ignored. + * + * 'xhtml' : (optional boolean) should content be treated as XHTML1.0? If + * unset, minify will sniff for an XHTML doctype. + * + * 'keepComments' : (optional boolean) should the HTML comments be kept + * in the HTML Code? + * + * @return string + */ + public static function minify($html, $options = array()) { + $min = new AO_Minify_HTML($html, $options); + return $min->process(); + } + + + /** + * Create a minifier object + * + * @param string $html + * + * @param array $options + * + * 'cssMinifier' : (optional) callback function to process content of STYLE + * elements. + * + * 'jsMinifier' : (optional) callback function to process content of SCRIPT + * elements. Note: the type attribute is ignored. + * + * 'xhtml' : (optional boolean) should content be treated as XHTML1.0? If + * unset, minify will sniff for an XHTML doctype. + * + * 'xhtml' : (optional boolean) should content be treated as XHTML1.0? If + * unset, minify will sniff for an XHTML doctype. + * + * @return null + */ + public function __construct($html, $options = array()) + { + $this->_html = str_replace("\r\n", "\n", trim($html)); + if (isset($options['xhtml'])) { + $this->_isXhtml = (bool)$options['xhtml']; + } + if (isset($options['cssMinifier'])) { + $this->_cssMinifier = $options['cssMinifier']; + } + if (isset($options['jsMinifier'])) { + $this->_jsMinifier = $options['jsMinifier']; + } + if (isset($options['keepComments'])) { + $this->_keepComments = $options['keepComments']; + } + } + + + /** + * Minify the markeup given in the constructor + * + * @return string + */ + public function process() + { + if ($this->_isXhtml === null) { + $this->_isXhtml = (false !== strpos($this->_html, '_replacementHash = 'MINIFYHTML' . bin2hex( random_bytes( 16 ) ); + $this->_placeholders = array(); + + // replace SCRIPTs (and minify) with placeholders + $this->_html = preg_replace_callback( + '/(\\s*)(]*?>)([\\s\\S]*?)<\\/script>(\\s*)/i' + ,array($this, '_removeScriptCB') + ,$this->_html); + + // replace STYLEs (and minify) with placeholders + $this->_html = preg_replace_callback( + '/\\s*(]*?>)([\\s\\S]*?)<\\/style>\\s*/i' + ,array($this, '_removeStyleCB') + ,$this->_html); + + // remove HTML comments (not containing IE conditional comments). + if ($this->_keepComments == false) { + $this->_html = preg_replace_callback( + '//' + ,array($this, '_commentCB') + ,$this->_html); + } + + // replace PREs with placeholders + $this->_html = preg_replace_callback('/\\s*(]*?>[\\s\\S]*?<\\/pre>)\\s*/i' + ,array($this, '_removePreCB') + ,$this->_html); + + // replace TEXTAREAs with placeholders + $this->_html = preg_replace_callback( + '/\\s*(]*?>[\\s\\S]*?<\\/textarea>)\\s*/i' + ,array($this, '_removeTextareaCB') + ,$this->_html); + + // replace data: URIs with placeholders + $this->_html = preg_replace_callback( + '/(=("|\')data:.*\\2)/Ui' + ,array($this, '_removeDataURICB') + ,$this->_html); + + // trim each line. + // replace by space instead of '' to avoid newline after opening tag getting zapped + $this->_html = preg_replace('/^\s+|\s+$/m', ' ', $this->_html); + + // remove ws around block/undisplayed elements + $this->_html = preg_replace('/\\s+(<\\/?(?:area|article|aside|base(?:font)?|blockquote|body' + .'|canvas|caption|center|col(?:group)?|dd|dir|div|dl|dt|fieldset|figcaption|figure|footer|form' + .'|frame(?:set)?|h[1-6]|head|header|hgroup|hr|html|legend|li|link|main|map|menu|meta|nav' + .'|ol|opt(?:group|ion)|output|p|param|section|t(?:able|body|head|d|h||r|foot|itle)' + .'|ul|video)\\b[^>]*>)/i', '$1', $this->_html); + + // remove ws outside of all elements + $this->_html = preg_replace_callback( + '/>([^<]+)_html); + + // use newlines before 1st attribute in open tags (to limit line lengths) + //$this->_html = preg_replace('/(<[a-z\\-]+)\\s+([^>]+>)/i', "$1\n$2", $this->_html); + + // reverse order while preserving keys to ensure the last replacement is done first, etc ... + $this->_placeholders = array_reverse( $this->_placeholders, true ); + + // fill placeholders + $this->_html = str_replace( + array_keys($this->_placeholders) + ,array_values($this->_placeholders) + ,$this->_html + ); + return $this->_html; + } + + protected function _commentCB($m) + { + return (0 === strpos($m[1], '[') || false !== strpos($m[1], '_replacementHash . count($this->_placeholders) . '%'; + $this->_placeholders[$placeholder] = $content; + return $placeholder; + } + + protected $_isXhtml = null; + protected $_replacementHash = null; + protected $_placeholders = array(); + protected $_cssMinifier = null; + protected $_jsMinifier = null; + protected $_keepComments = false; + + protected function _outsideTagCB($m) + { + return '>' . preg_replace('/^\\s+|\\s+$/', ' ', $m[1]) . '<'; + } + + protected function _removePreCB($m) + { + return $this->_reservePlace($m[1]); + } + + protected function _removeTextareaCB($m) + { + return $this->_reservePlace($m[1]); + } + + protected function _removeDataURICB($m) + { + return $this->_reservePlace($m[1]); + } + + protected function _removeStyleCB($m) + { + $openStyle = $m[1]; + $css = $m[2]; + // remove HTML comments + $css = preg_replace('/(?:^\\s*\\s*$)/', '', $css); + + // remove CDATA section markers + $css = $this->_removeCdata($css); + + // minify + $minifier = $this->_cssMinifier + ? $this->_cssMinifier + : 'trim'; + $css = call_user_func($minifier, $css); + + return $this->_reservePlace($this->_needsCdata($css) + ? "{$openStyle}/**/" + : "{$openStyle}{$css}" + ); + } + + protected function _removeScriptCB($m) + { + $openScript = $m[2]; + $js = $m[3]; + + // whitespace surrounding? preserve at least one space + $ws1 = ($m[1] === '') ? '' : ' '; + $ws2 = ($m[4] === '') ? '' : ' '; + + if ($this->_keepComments == false) { + // remove HTML comments (and ending "//" if present) + $js = preg_replace('/(?:^\\s*\\s*$)/', '', $js); + + // remove CDATA section markers + $js = $this->_removeCdata($js); + } + + // minify + $minifier = $this->_jsMinifier + ? $this->_jsMinifier + : 'trim'; + $js = call_user_func($minifier, $js); + + return $this->_reservePlace($this->_needsCdata($js) + ? "{$ws1}{$openScript}/**/{$ws2}" + : "{$ws1}{$openScript}{$js}{$ws2}" + ); + } + + protected function _removeCdata($str) + { + return (false !== strpos($str, ' */','/**/',''), '', $str) + : $str; + } + + protected function _needsCdata($str) + { + return ($this->_isXhtml && preg_match('/(?:[<&]|\\-\\-|\\]\\]>)/', $str)); + } +} diff --git a/wp-content/plugins/autoptimize/classes/external/php/index.html b/wp-content/plugins/autoptimize/classes/external/php/index.html new file mode 100644 index 0000000..fe7267f --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/php/index.html @@ -0,0 +1 @@ +Generated by Autoptimize diff --git a/wp-content/plugins/autoptimize/classes/external/php/jsmin.php b/wp-content/plugins/autoptimize/classes/external/php/jsmin.php new file mode 100644 index 0000000..cf4f462 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/php/jsmin.php @@ -0,0 +1,466 @@ + + * $minifiedJs = JSMin::minify($js); + * + * + * This is a modified port of jsmin.c. Improvements: + * + * Does not choke on some regexp literals containing quote characters. E.g. /'/ + * + * Spaces are preserved after some add/sub operators, so they are not mistakenly + * converted to post-inc/dec. E.g. a + ++b -> a+ ++b + * + * Preserves multi-line comments that begin with /*! + * + * PHP 5 or higher is required. + * + * Permission is hereby granted to use this version of the library under the + * same terms as jsmin.c, which has the following license: + * + * -- + * Copyright (c) 2002 Douglas Crockford (www.crockford.com) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * The Software shall be used for Good, not Evil. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * -- + * + * @package JSMin + * @author Ryan Grove (PHP port) + * @author Steve Clay (modifications + cleanup) + * @author Andrea Giammarchi (spaceBeforeRegExp) + * @copyright 2002 Douglas Crockford (jsmin.c) + * @copyright 2008 Ryan Grove (PHP port) + * @license http://opensource.org/licenses/mit-license.php MIT License + * @link http://code.google.com/p/jsmin-php/ + */ +class JSMin { + const ACTION_KEEP_A = 1; + const ACTION_DELETE_A = 2; + const ACTION_DELETE_A_B = 3; + + protected $a = "\n"; + protected $b = ''; + protected $input = ''; + protected $inputIndex = 0; + protected $inputLength = 0; + protected $lookAhead = null; + protected $output = ''; + protected $lastByteOut = ''; + protected $keptComment = ''; + + /** + * Minify Javascript. + * + * @param string $js Javascript to be minified + * + * @return string + */ + public static function minify($js) + { + $jsmin = new JSMin($js); + return $jsmin->min(); + } + + /** + * @param string $input + */ + public function __construct($input) + { + $this->input = $input; + } + + /** + * Perform minification, return result + * + * @return string + */ + public function min() + { + if ($this->output !== '') { // min already run + return $this->output; + } + + $mbIntEnc = null; + if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) { + $mbIntEnc = mb_internal_encoding(); + mb_internal_encoding('8bit'); + } + + if (isset($this->input[0]) && $this->input[0] === "\xef") { + $this->input = substr($this->input, 3); + } + + $this->input = str_replace("\r\n", "\n", $this->input); + $this->inputLength = strlen($this->input); + + $this->action(self::ACTION_DELETE_A_B); + + while ($this->a !== null) { + // determine next command + $command = self::ACTION_KEEP_A; // default + if ($this->isWhiteSpace($this->a)) { + if (($this->lastByteOut === '+' || $this->lastByteOut === '-') + && ($this->b === $this->lastByteOut)) { + // Don't delete this space. If we do, the addition/subtraction + // could be parsed as a post-increment + } elseif (! $this->isAlphaNum($this->b)) { + $command = self::ACTION_DELETE_A; + } + } elseif ($this->isLineTerminator($this->a)) { + if ($this->isWhiteSpace($this->b)) { + $command = self::ACTION_DELETE_A_B; + + // in case of mbstring.func_overload & 2, must check for null b, + // otherwise mb_strpos will give WARNING + } elseif ($this->b === null + || (false === strpos('{[(+-!~#', $this->b) + && ! $this->isAlphaNum($this->b))) { + $command = self::ACTION_DELETE_A; + } + } elseif (! $this->isAlphaNum($this->a)) { + if ($this->isWhiteSpace($this->b) + || ($this->isLineTerminator($this->b) + && (false === strpos('}])+-"\'`', $this->a)))) { + $command = self::ACTION_DELETE_A_B; + } + } + $this->action($command); + } + $this->output = trim($this->output); + + if ($mbIntEnc !== null) { + mb_internal_encoding($mbIntEnc); + } + return $this->output; + } + + /** + * ACTION_KEEP_A = Output A. Copy B to A. Get the next B. + * ACTION_DELETE_A = Copy B to A. Get the next B. + * ACTION_DELETE_A_B = Get the next B. + * + * @param int $command + * @throws JSMin_UnterminatedRegExpException|UnterminatedStringException + */ + protected function action($command) + { + // make sure we don't compress "a + ++b" to "a+++b", etc. + if ($command === self::ACTION_DELETE_A_B + && $this->b === ' ' + && ($this->a === '+' || $this->a === '-')) { + // Note: we're at an addition/substraction operator; the inputIndex + // will certainly be a valid index + if ($this->input[$this->inputIndex] === $this->a) { + // This is "+ +" or "- -". Don't delete the space. + $command = self::ACTION_KEEP_A; + } + } + + switch ($command) { + case self::ACTION_KEEP_A: // 1 + $this->output .= $this->a; + + if ($this->keptComment) { + $this->output = rtrim($this->output, "\n"); + $this->output .= $this->keptComment; + $this->keptComment = ''; + } + + $this->lastByteOut = $this->a; + + // fallthrough intentional + case self::ACTION_DELETE_A: // 2 + $this->a = $this->b; + if ($this->a === "'" || $this->a === '"' || $this->a === '`') { // string/template literal + $delimiter = $this->a; + $str = $this->a; // in case needed for exception + for(;;) { + $this->output .= $this->a; + $this->lastByteOut = $this->a; + + $this->a = $this->get(); + if ($this->a === $this->b) { // end quote + break; + } + if ($delimiter === '`' && $this->isLineTerminator($this->a)) { + // leave the newline + } elseif ($this->isEOF($this->a)) { + $byte = $this->inputIndex - 1; + throw new JSMin_UnterminatedStringException( + "JSMin: Unterminated String at byte {$byte}: {$str}"); + } + $str .= $this->a; + if ($this->a === '\\') { + $this->output .= $this->a; + $this->lastByteOut = $this->a; + + $this->a = $this->get(); + $str .= $this->a; + } + } + } + + // fallthrough intentional + case self::ACTION_DELETE_A_B: // 3 + $this->b = $this->next(); + if ($this->b === '/' && $this->isRegexpLiteral()) { + $this->output .= $this->a . $this->b; + $pattern = '/'; // keep entire pattern in case we need to report it in the exception + for(;;) { + $this->a = $this->get(); + $pattern .= $this->a; + if ($this->a === '[') { + for(;;) { + $this->output .= $this->a; + $this->a = $this->get(); + $pattern .= $this->a; + if ($this->a === ']') { + break; + } + if ($this->a === '\\') { + $this->output .= $this->a; + $this->a = $this->get(); + $pattern .= $this->a; + } + if ($this->isEOF($this->a)) { + throw new JSMin_UnterminatedRegExpException( + "JSMin: Unterminated set in RegExp at byte " + . $this->inputIndex .": {$pattern}"); + } + } + } + + if ($this->a === '/') { // end pattern + break; // while (true) + } elseif ($this->a === '\\') { + $this->output .= $this->a; + $this->a = $this->get(); + $pattern .= $this->a; + } elseif ($this->isEOF($this->a)) { + $byte = $this->inputIndex - 1; + throw new JSMin_UnterminatedRegExpException( + "JSMin: Unterminated RegExp at byte {$byte}: {$pattern}"); + } + $this->output .= $this->a; + $this->lastByteOut = $this->a; + } + $this->b = $this->next(); + } + // end case ACTION_DELETE_A_B + } + } + + /** + * @return bool + */ + protected function isRegexpLiteral() + { + if (false !== strpos("(,=:[!&|?+-~*{;", $this->a)) { + // we can't divide after these tokens + return true; + } + + // check if first non-ws token is "/" (see starts-regex.js) + $length = strlen($this->output); + if ($this->isWhiteSpace($this->a) || $this->isLineTerminator($this->a)) { + if ($length < 2) { // weird edge case + return true; + } + } + + // if the "/" follows a keyword, it must be a regexp, otherwise it's best to assume division + + $subject = $this->output . trim($this->a); + if (!preg_match('/(?:case|else|in|return|typeof)$/', $subject, $m)) { + // not a keyword + return false; + } + + // can't be sure it's a keyword yet (see not-regexp.js) + $charBeforeKeyword = substr($subject, 0 - strlen($m[0]) - 1, 1); + if ($this->isAlphaNum($charBeforeKeyword)) { + // this is really an identifier ending in a keyword, e.g. "xreturn" + return false; + } + + // it's a regexp. Remove unneeded whitespace after keyword + if ($this->isWhiteSpace($this->a) || $this->isLineTerminator($this->a)) { + $this->a = ''; + } + + return true; + } + + /** + * Return the next character from stdin. Watch out for lookahead. If the character is a control character, + * translate it to a space or linefeed. + * + * @return string + */ + protected function get() + { + $c = $this->lookAhead; + $this->lookAhead = null; + if ($c === null) { + // getc(stdin) + if ($this->inputIndex < $this->inputLength) { + $c = $this->input[$this->inputIndex]; + $this->inputIndex += 1; + } else { + $c = null; + } + } + if ($c === "\r") { + return "\n"; + } + return $c; + } + + /** + * Does $a indicate end of input? + * + * @param string $a + * @return bool + */ + protected function isEOF($a) + { + return $a === null || $this->isLineTerminator($a); + } + + /** + * Get next char (without getting it). If is ctrl character, translate to a space or newline. + * + * @return string + */ + protected function peek() + { + $this->lookAhead = $this->get(); + return $this->lookAhead; + } + + /** + * Return true if the character is a letter, digit, underscore, dollar sign, or non-ASCII character. + * + * @param string $c + * + * @return bool + */ + protected function isAlphaNum($c) + { + return (preg_match('/^[a-z0-9A-Z_\\$\\\\]$/', $c) || ord($c) > 126); + } + + /** + * Consume a single line comment from input (possibly retaining it) + */ + protected function consumeSingleLineComment() + { + $comment = ''; + while (true) { + $get = $this->get(); + $comment .= $get; + if ($this->isEOF($get)) { + // if IE conditional comment + if (preg_match('/^\\/@(?:cc_on|if|elif|else|end)\\b/', $comment)) { + $this->keptComment .= "/{$comment}"; + } + return; + } + } + } + + /** + * Consume a multiple line comment from input (possibly retaining it) + * + * @throws JSMin_UnterminatedCommentException + */ + protected function consumeMultipleLineComment() + { + $this->get(); + $comment = ''; + for(;;) { + $get = $this->get(); + if ($get === '*') { + if ($this->peek() === '/') { // end of comment reached + $this->get(); + if (0 === strpos($comment, '!')) { + // preserved by YUI Compressor + if (!$this->keptComment) { + // don't prepend a newline if two comments right after one another + $this->keptComment = "\n"; + } + $this->keptComment .= "/*!" . substr($comment, 1) . "*/\n"; + } else if (preg_match('/^@(?:cc_on|if|elif|else|end)\\b/', $comment)) { + // IE conditional + $this->keptComment .= "/*{$comment}*/"; + } + return; + } + } elseif ($get === null) { + throw new JSMin_UnterminatedCommentException( + "JSMin: Unterminated comment at byte {$this->inputIndex}: /*{$comment}"); + } + $comment .= $get; + } + } + + /** + * Get the next character, skipping over comments. Some comments may be preserved. + * + * @return string + */ + protected function next() + { + $get = $this->get(); + if ($get === '/') { + switch ($this->peek()) { + case '/': + $this->consumeSingleLineComment(); + $get = "\n"; + break; + case '*': + $this->consumeMultipleLineComment(); + $get = ' '; + break; + } + } + return $get; + } + + protected function isWhiteSpace($s) { + // https://www.ecma-international.org/ecma-262/#sec-white-space + return $s !== null && strpos(" \t\v\f", $s) !== false; + } + + protected function isLineTerminator($s) { + // https://www.ecma-international.org/ecma-262/#sec-line-terminators + return $s !== null && strpos("\n\r", $s) !== false; + } +} + +class JSMin_UnterminatedStringException extends Exception {} +class JSMin_UnterminatedCommentException extends Exception {} +class JSMin_UnterminatedRegExpException extends Exception {} diff --git a/wp-content/plugins/autoptimize/classes/external/php/persist-admin-notices-dismissal/README.md b/wp-content/plugins/autoptimize/classes/external/php/persist-admin-notices-dismissal/README.md new file mode 100644 index 0000000..19afd83 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/php/persist-admin-notices-dismissal/README.md @@ -0,0 +1,117 @@ +# Persist Admin notice Dismissals +[![Latest Stable Version](https://poser.pugx.org/collizo4sky/persist-admin-notices-dismissal/v/stable)](https://packagist.org/packages/collizo4sky/persist-admin-notices-dismissal) +[![Total Downloads](https://poser.pugx.org/collizo4sky/persist-admin-notices-dismissal/downloads)](https://packagist.org/packages/collizo4sky/persist-admin-notices-dismissal) + +Simple framework library that persists the dismissal of admin notices across pages in WordPress dashboard. + +## Installation + +Run `composer require collizo4sky/persist-admin-notices-dismissal` + +Alternatively, clone or download this repo into the `vendor/` folder in your plugin, and include/require the `persist-admin-notices-dismissal.php` file like so + +```php +require __DIR__ . '/vendor/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php'; +add_action( 'admin_init', array( 'PAnD', 'init' ) ); +``` + +or let Composer's autoloader do the work. + +## How to Use +Firstly, install and activate this library within a plugin. + +Say you have the following markup as your admin notice, + + +```php +function sample_admin_notice__success() { + ?> +
    +

    +
    + +
    +

    +
    + +
    +

    +
    + +
    +

    +
    + base_prefix . 'sitemeta' : $wpdb->base_prefix . 'options'; +$column = is_multisite() ? 'meta_key' : 'option_name'; +$delete_string = 'DELETE FROM ' . $table . ' WHERE ' . $column . ' LIKE %s LIMIT 1000'; +$wpdb->query( $wpdb->prepare( $delete_string, array( '%pand-%' ) ) ); +``` + +Cool beans. Isn't it? diff --git a/wp-content/plugins/autoptimize/classes/external/php/persist-admin-notices-dismissal/dismiss-notice.js b/wp-content/plugins/autoptimize/classes/external/php/persist-admin-notices-dismissal/dismiss-notice.js new file mode 100644 index 0000000..4eaafc8 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/php/persist-admin-notices-dismissal/dismiss-notice.js @@ -0,0 +1,33 @@ +(function ($) { + //shorthand for ready event. + $( + function () { + $( 'div[data-dismissible] button.notice-dismiss' ).on('click', + function (event) { + event.preventDefault(); + var $this = $( this ); + + var attr_value, option_name, dismissible_length, data; + + attr_value = $this.parent().attr( 'data-dismissible' ).split( '-' ); + + // remove the dismissible length from the attribute value and rejoin the array. + dismissible_length = attr_value.pop(); + + option_name = attr_value.join( '-' ); + + data = { + 'action': 'dismiss_admin_notice', + 'option_name': option_name, + 'dismissible_length': dismissible_length, + 'nonce': dismissible_notice.nonce + }; + + // We can also pass the url value separately from ajaxurl for front end AJAX implementations + $.post( ajaxurl, data ); + } + ); + } + ) + +}(jQuery)); diff --git a/wp-content/plugins/autoptimize/classes/external/php/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php b/wp-content/plugins/autoptimize/classes/external/php/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php new file mode 100644 index 0000000..6d34e0c --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/php/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php @@ -0,0 +1,159 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * @package Persist Admin notices Dismissal + * @author Collins Agbonghama + * @author Andy Fragen + * @license http://www.gnu.org/licenses GNU General Public License + * @version 1.4.1 + */ + +/** + * Exit if called directly. + */ +if ( ! defined( 'ABSPATH' ) ) { + die; +} + +if ( ! class_exists( 'PAnD' ) ) { + + /** + * Class PAnD + */ + class PAnD { + + /** + * Init hooks. + */ + public static function init() { + add_action( 'admin_enqueue_scripts', array( __CLASS__, 'load_script' ) ); + add_action( 'wp_ajax_dismiss_admin_notice', array( __CLASS__, 'dismiss_admin_notice' ) ); + } + + /** + * Enqueue javascript and variables. + */ + public static function load_script() { + + if ( is_customize_preview() ) { + return; + } + + wp_enqueue_script( + 'dismissible-notices', + plugins_url( 'dismiss-notice.js', __FILE__ ), + array( 'jquery', 'common' ), + false, + true + ); + + wp_localize_script( + 'dismissible-notices', + 'dismissible_notice', + array( + 'nonce' => wp_create_nonce( 'dismissible-notice' ), + ) + ); + } + + /** + * Handles Ajax request to persist notices dismissal. + * Uses check_ajax_referer to verify nonce. + */ + public static function dismiss_admin_notice() { + $option_name = sanitize_text_field( $_POST['option_name'] ); + $dismissible_length = sanitize_text_field( $_POST['dismissible_length'] ); + + if ( 'forever' != $dismissible_length ) { + // If $dismissible_length is not an integer default to 1 + $dismissible_length = ( 0 == absint( $dismissible_length ) ) ? 1 : $dismissible_length; + $dismissible_length = strtotime( absint( $dismissible_length ) . ' days' ); + } + + check_ajax_referer( 'dismissible-notice', 'nonce' ); + self::set_admin_notice_cache( $option_name, $dismissible_length ); + wp_die(); + } + + /** + * Is admin notice active? + * + * @param string $arg data-dismissible content of notice. + * + * @return bool + */ + public static function is_admin_notice_active( $arg ) { + $array = explode( '-', $arg ); + $length = array_pop( $array ); + $option_name = implode( '-', $array ); + $db_record = self::get_admin_notice_cache( $option_name ); + if ( 'forever' == $db_record ) { + return false; + } elseif ( absint( $db_record ) >= time() ) { + return false; + } else { + return true; + } + } + + /** + * Returns admin notice cached timeout. + * + * @access public + * + * @param string|bool $id admin notice name or false. + * + * @return array|bool The timeout. False if expired. + */ + public static function get_admin_notice_cache( $id = false ) { + if ( ! $id ) { + return false; + } + $cache_key = 'pand-' . md5( $id ); + $timeout = get_site_option( $cache_key ); + $timeout = 'forever' === $timeout ? time() + 60 : $timeout; + + if ( empty( $timeout ) || time() > $timeout ) { + return false; + } + + return $timeout; + } + + /** + * Sets admin notice timeout in site option. + * + * @access public + * + * @param string $id Data Identifier. + * @param string|bool $timeout Timeout for admin notice. + * + * @return bool + */ + public static function set_admin_notice_cache( $id, $timeout ) { + $cache_key = 'pand-' . md5( $id ); + update_site_option( $cache_key, $timeout ); + + return true; + } + + } + +} diff --git a/wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/Colors.php b/wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/Colors.php new file mode 100644 index 0000000..d37115a --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/Colors.php @@ -0,0 +1,155 @@ + 'azure', + '#f5f5dc' => 'beige', + '#ffe4c4' => 'bisque', + '#a52a2a' => 'brown', + '#ff7f50' => 'coral', + '#ffd700' => 'gold', + '#808080' => 'gray', + '#008000' => 'green', + '#4b0082' => 'indigo', + '#fffff0' => 'ivory', + '#f0e68c' => 'khaki', + '#faf0e6' => 'linen', + '#800000' => 'maroon', + '#000080' => 'navy', + '#fdf5e6' => 'oldlace', + '#808000' => 'olive', + '#ffa500' => 'orange', + '#da70d6' => 'orchid', + '#cd853f' => 'peru', + '#ffc0cb' => 'pink', + '#dda0dd' => 'plum', + '#800080' => 'purple', + '#f00' => 'red', + '#fa8072' => 'salmon', + '#a0522d' => 'sienna', + '#c0c0c0' => 'silver', + '#fffafa' => 'snow', + '#d2b48c' => 'tan', + '#008080' => 'teal', + '#ff6347' => 'tomato', + '#ee82ee' => 'violet', + '#f5deb3' => 'wheat' + ); + } + + public static function getNamedToHexMap() + { + // Named colors longer than hex counterpart + return array( + 'aliceblue' => '#f0f8ff', + 'antiquewhite' => '#faebd7', + 'aquamarine' => '#7fffd4', + 'black' => '#000', + 'blanchedalmond' => '#ffebcd', + 'blueviolet' => '#8a2be2', + 'burlywood' => '#deb887', + 'cadetblue' => '#5f9ea0', + 'chartreuse' => '#7fff00', + 'chocolate' => '#d2691e', + 'cornflowerblue' => '#6495ed', + 'cornsilk' => '#fff8dc', + 'darkblue' => '#00008b', + 'darkcyan' => '#008b8b', + 'darkgoldenrod' => '#b8860b', + 'darkgray' => '#a9a9a9', + 'darkgreen' => '#006400', + 'darkgrey' => '#a9a9a9', + 'darkkhaki' => '#bdb76b', + 'darkmagenta' => '#8b008b', + 'darkolivegreen' => '#556b2f', + 'darkorange' => '#ff8c00', + 'darkorchid' => '#9932cc', + 'darksalmon' => '#e9967a', + 'darkseagreen' => '#8fbc8f', + 'darkslateblue' => '#483d8b', + 'darkslategray' => '#2f4f4f', + 'darkslategrey' => '#2f4f4f', + 'darkturquoise' => '#00ced1', + 'darkviolet' => '#9400d3', + 'deeppink' => '#ff1493', + 'deepskyblue' => '#00bfff', + 'dodgerblue' => '#1e90ff', + 'firebrick' => '#b22222', + 'floralwhite' => '#fffaf0', + 'forestgreen' => '#228b22', + 'fuchsia' => '#f0f', + 'gainsboro' => '#dcdcdc', + 'ghostwhite' => '#f8f8ff', + 'goldenrod' => '#daa520', + 'greenyellow' => '#adff2f', + 'honeydew' => '#f0fff0', + 'indianred' => '#cd5c5c', + 'lavender' => '#e6e6fa', + 'lavenderblush' => '#fff0f5', + 'lawngreen' => '#7cfc00', + 'lemonchiffon' => '#fffacd', + 'lightblue' => '#add8e6', + 'lightcoral' => '#f08080', + 'lightcyan' => '#e0ffff', + 'lightgoldenrodyellow' => '#fafad2', + 'lightgray' => '#d3d3d3', + 'lightgreen' => '#90ee90', + 'lightgrey' => '#d3d3d3', + 'lightpink' => '#ffb6c1', + 'lightsalmon' => '#ffa07a', + 'lightseagreen' => '#20b2aa', + 'lightskyblue' => '#87cefa', + 'lightslategray' => '#778899', + 'lightslategrey' => '#778899', + 'lightsteelblue' => '#b0c4de', + 'lightyellow' => '#ffffe0', + 'limegreen' => '#32cd32', + 'mediumaquamarine' => '#66cdaa', + 'mediumblue' => '#0000cd', + 'mediumorchid' => '#ba55d3', + 'mediumpurple' => '#9370db', + 'mediumseagreen' => '#3cb371', + 'mediumslateblue' => '#7b68ee', + 'mediumspringgreen' => '#00fa9a', + 'mediumturquoise' => '#48d1cc', + 'mediumvioletred' => '#c71585', + 'midnightblue' => '#191970', + 'mintcream' => '#f5fffa', + 'mistyrose' => '#ffe4e1', + 'moccasin' => '#ffe4b5', + 'navajowhite' => '#ffdead', + 'olivedrab' => '#6b8e23', + 'orangered' => '#ff4500', + 'palegoldenrod' => '#eee8aa', + 'palegreen' => '#98fb98', + 'paleturquoise' => '#afeeee', + 'palevioletred' => '#db7093', + 'papayawhip' => '#ffefd5', + 'peachpuff' => '#ffdab9', + 'powderblue' => '#b0e0e6', + 'rebeccapurple' => '#663399', + 'rosybrown' => '#bc8f8f', + 'royalblue' => '#4169e1', + 'saddlebrown' => '#8b4513', + 'sandybrown' => '#f4a460', + 'seagreen' => '#2e8b57', + 'seashell' => '#fff5ee', + 'slateblue' => '#6a5acd', + 'slategray' => '#708090', + 'slategrey' => '#708090', + 'springgreen' => '#00ff7f', + 'steelblue' => '#4682b4', + 'turquoise' => '#40e0d0', + 'white' => '#fff', + 'whitesmoke' => '#f5f5f5', + 'yellow' => '#ff0', + 'yellowgreen' => '#9acd32' + ); + } +} diff --git a/wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/Minifier.php b/wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/Minifier.php new file mode 100644 index 0000000..b28e66b --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/Minifier.php @@ -0,0 +1,935 @@ +raisePhpLimits = (bool) $raisePhpLimits; + $this->memoryLimit = 128 * 1048576; // 128MB in bytes + $this->pcreBacktrackLimit = 1000 * 1000; + $this->pcreRecursionLimit = 500 * 1000; + $this->hexToNamedColorsMap = Colors::getHexToNamedMap(); + $this->namedToHexColorsMap = Colors::getNamedToHexMap(); + $this->namedToHexColorsRegex = sprintf( + '/([:,( ])(%s)( |,|\)|;|$)/Si', + implode('|', array_keys($this->namedToHexColorsMap)) + ); + $this->numRegex = sprintf('-?\d*\.?\d+%s?', $this->unitsGroupRegex); + $this->setShortenZeroValuesRegexes(); + } + + /** + * Parses & minifies the given input CSS string + * @param string $css + * @return string + */ + public function run($css = '') + { + if (empty($css) || !is_string($css)) { + return ''; + } + + $this->resetRunProperties(); + + if ($this->raisePhpLimits) { + $this->doRaisePhpLimits(); + } + + return $this->minify($css); + } + + /** + * Sets whether to keep or remove sourcemap special comment. + * Sourcemap comments are removed by default. + * @param bool $keepSourceMapComment + */ + public function keepSourceMapComment($keepSourceMapComment = true) + { + $this->keepSourceMapComment = (bool) $keepSourceMapComment; + } + + /** + * Sets whether to keep or remove important comments. + * Important comments outside of a declaration block are kept by default. + * @param bool $removeImportantComments + */ + public function removeImportantComments($removeImportantComments = true) + { + $this->keepImportantComments = !(bool) $removeImportantComments; + } + + /** + * Sets the approximate column after which long lines will be splitted in the output + * with a linebreak. + * @param int $position + */ + public function setLineBreakPosition($position) + { + $this->linebreakPosition = (int) $position; + } + + /** + * Sets the memory limit for this script + * @param int|string $limit + */ + public function setMemoryLimit($limit) + { + $this->memoryLimit = Utils::normalizeInt($limit); + } + + /** + * Sets the maximum execution time for this script + * @param int|string $seconds + */ + public function setMaxExecutionTime($seconds) + { + $this->maxExecutionTime = (int) $seconds; + } + + /** + * Sets the PCRE backtrack limit for this script + * @param int $limit + */ + public function setPcreBacktrackLimit($limit) + { + $this->pcreBacktrackLimit = (int) $limit; + } + + /** + * Sets the PCRE recursion limit for this script + * @param int $limit + */ + public function setPcreRecursionLimit($limit) + { + $this->pcreRecursionLimit = (int) $limit; + } + + /** + * Builds regular expressions needed for shortening zero values + */ + private function setShortenZeroValuesRegexes() + { + $zeroRegex = '0'. $this->unitsGroupRegex; + $numOrPosRegex = '('. $this->numRegex .'|top|left|bottom|right|center) '; + $oneZeroSafeProperties = array( + '(?:line-)?height', + '(?:(?:min|max)-)?width', + 'top', + 'left', + 'background-position', + 'bottom', + 'right', + 'border(?:-(?:top|left|bottom|right))?(?:-width)?', + 'border-(?:(?:top|bottom)-(?:left|right)-)?radius', + 'column-(?:gap|width)', + 'margin(?:-(?:top|left|bottom|right))?', + 'outline-width', + 'padding(?:-(?:top|left|bottom|right))?' + ); + + // First zero regex + $regex = '/(^|;)('. implode('|', $oneZeroSafeProperties) .'):%s/Si'; + $this->shortenOneZeroesRegex = sprintf($regex, $zeroRegex); + + // Multiple zeroes regexes + $regex = '/(^|;)(margin|padding|border-(?:width|radius)|background-position):%s/Si'; + $this->shortenTwoZeroesRegex = sprintf($regex, $numOrPosRegex . $zeroRegex); + $this->shortenThreeZeroesRegex = sprintf($regex, $numOrPosRegex . $numOrPosRegex . $zeroRegex); + $this->shortenFourZeroesRegex = sprintf($regex, $numOrPosRegex . $numOrPosRegex . $numOrPosRegex . $zeroRegex); + } + + /** + * Resets properties whose value may change between runs + */ + private function resetRunProperties() + { + $this->comments = array(); + $this->ruleBodies = array(); + $this->preservedTokens = array(); + } + + /** + * Tries to configure PHP to use at least the suggested minimum settings + * @return void + */ + private function doRaisePhpLimits() + { + $phpLimits = array( + 'memory_limit' => $this->memoryLimit, + 'max_execution_time' => $this->maxExecutionTime, + 'pcre.backtrack_limit' => $this->pcreBacktrackLimit, + 'pcre.recursion_limit' => $this->pcreRecursionLimit + ); + + // If current settings are higher respect them. + foreach ($phpLimits as $name => $suggested) { + $current = Utils::normalizeInt(ini_get($name)); + + if ($current >= $suggested) { + continue; + } + + // memoryLimit exception: allow -1 for "no memory limit". + if ($name === 'memory_limit' && $current === -1) { + continue; + } + + // maxExecutionTime exception: allow 0 for "no memory limit". + if ($name === 'max_execution_time' && $current === 0) { + continue; + } + + ini_set($name, $suggested); + } + } + + /** + * Registers a preserved token + * @param string $token + * @return string The token ID string + */ + private function registerPreservedToken($token) + { + $tokenId = sprintf(self::PRESERVED_TOKEN, count($this->preservedTokens)); + $this->preservedTokens[$tokenId] = $token; + return $tokenId; + } + + /** + * Registers a candidate comment token + * @param string $comment + * @return string The comment token ID string + */ + private function registerCommentToken($comment) + { + $tokenId = sprintf(self::COMMENT_TOKEN, count($this->comments)); + $this->comments[$tokenId] = $comment; + return $tokenId; + } + + /** + * Registers a rule body token + * @param string $body the minified rule body + * @return string The rule body token ID string + */ + private function registerRuleBodyToken($body) + { + if (empty($body)) { + return ''; + } + + $tokenId = sprintf(self::RULE_BODY_TOKEN, count($this->ruleBodies)); + $this->ruleBodies[$tokenId] = $body; + return $tokenId; + } + + private function registerUnquotedFontToken($body) + { + if (empty($body)) { + return ''; + } + + $tokenId = sprintf(self::UNQUOTED_FONT_TOKEN, count($this->unquotedFontTokens)); + $this->unquotedFontTokens[$tokenId] = $body; + return $tokenId; + } + + /** + * Parses & minifies the given input CSS string + * @param string $css + * @return string + */ + private function minify($css) + { + // Process data urls + $css = $this->processDataUrls($css); + + // Process comments + $css = preg_replace_callback( + '/(?processComments($css); + + // Process rule bodies + $css = $this->processRuleBodies($css); + + // Process at-rules and selectors + $css = $this->processAtRulesAndSelectors($css); + + // Restore preserved rule bodies before splitting + $css = strtr($css, $this->ruleBodies); + + // Split long lines in output if required + $css = $this->processLongLineSplitting($css); + + // Restore preserved comments and strings + $css = strtr($css, $this->preservedTokens); + + return trim($css); + } + + /** + * Searches & replaces all data urls with tokens before we start compressing, + * to avoid performance issues running some of the subsequent regexes against large string chunks. + * @param string $css + * @return string + */ + private function processDataUrls($css) + { + $ret = ''; + $searchOffset = $substrOffset = 0; + + // Since we need to account for non-base64 data urls, we need to handle + // ' and ) being part of the data string. + while (preg_match('/url\(\s*(["\']?)data:/Si', $css, $m, PREG_OFFSET_CAPTURE, $searchOffset)) { + $matchStartIndex = $m[0][1]; + $dataStartIndex = $matchStartIndex + 4; // url( length + $searchOffset = $matchStartIndex + strlen($m[0][0]); + $terminator = $m[1][0]; // ', " or empty (not quoted) + $terminatorRegex = '/(?registerPreservedToken(trim($token)) .')'; + // No end terminator found, re-add the whole match. Should we throw/warn here? + } else { + $ret .= substr($css, $matchStartIndex, $searchOffset - $matchStartIndex); + } + + $substrOffset = $searchOffset; + } + + $ret .= substr($css, $substrOffset); + + return $ret; + } + + /** + * Registers all comments found as candidates to be preserved. + * @param array $matches + * @return string + */ + private function processCommentsCallback($matches) + { + return '/*'. $this->registerCommentToken($matches[1]) .'*/'; + } + + /** + * Preserves old IE Matrix string definition + * @param array $matches + * @return string + */ + private function processOldIeSpecificMatrixDefinitionCallback($matches) + { + return 'filter:progid:DXImageTransform.Microsoft.Matrix('. $this->registerPreservedToken($matches[1]) .')'; + } + + /** + * Preserves strings found + * @param array $matches + * @return string + */ + private function processStringsCallback($matches) + { + $match = $matches[0]; + $quote = substr($match, 0, 1); + $match = substr($match, 1, -1); + + // maybe the string contains a comment-like substring? + // one, maybe more? put'em back then + if (strpos($match, self::COMMENT_TOKEN_START) !== false) { + $match = strtr($match, $this->comments); + } + + // minify alpha opacity in filter strings + $match = str_ireplace('progid:DXImageTransform.Microsoft.Alpha(Opacity=', 'alpha(opacity=', $match); + + return $quote . $this->registerPreservedToken($match) . $quote; + } + + /** + * Searches & replaces all import at-rule unquoted urls with tokens so URI reserved characters such as a semicolon + * may be used safely in a URL. + * @param array $matches + * @return string + */ + private function processImportUnquotedUrlAtRulesCallback($matches) + { + return '@import url('. $this->registerPreservedToken($matches[1]) .')'. $matches[2]; + } + + /** + * Preserves or removes comments found. + * @param string $css + * @return string + */ + private function processComments($css) + { + foreach ($this->comments as $commentId => $comment) { + $commentIdString = '/*'. $commentId .'*/'; + + // ! in the first position of the comment means preserve + // so push to the preserved tokens keeping the ! + if ($this->keepImportantComments && strpos($comment, '!') === 0) { + $preservedTokenId = $this->registerPreservedToken($comment); + // Put new lines before and after /*! important comments + $css = str_replace($commentIdString, "\n/*$preservedTokenId*/\n", $css); + continue; + } + + // # sourceMappingURL= in the first position of the comment means sourcemap + // so push to the preserved tokens if {$this->keepSourceMapComment} is truthy. + if ($this->keepSourceMapComment && strpos($comment, '# sourceMappingURL=') === 0) { + $preservedTokenId = $this->registerPreservedToken($comment); + // Add new line before the sourcemap comment + $css = str_replace($commentIdString, "\n/*$preservedTokenId*/", $css); + continue; + } + + // Keep empty comments after child selectors (IE7 hack) + // e.g. html >/**/ body + if (strlen($comment) === 0 && strpos($css, '>/*'.$commentId) !== false) { + $css = str_replace($commentId, $this->registerPreservedToken(''), $css); + continue; + } + + // in all other cases kill the comment + $css = str_replace($commentIdString, '', $css); + } + + // Normalize whitespace again + $css = preg_replace('/ +/S', ' ', $css); + + return $css; + } + + /** + * Finds, minifies & preserves all rule bodies. + * @param string $css the whole stylesheet. + * @return string + */ + private function processRuleBodies($css) + { + $ret = ''; + $searchOffset = $substrOffset = 0; + + while (($blockStartPos = strpos($css, '{', $searchOffset)) !== false) { + $blockEndPos = strpos($css, '}', $blockStartPos); + // When ending curly brace is missing, let's + // behave like there was one at the end of the block... + if ( false === $blockEndPos ) { + $blockEndPos = strlen($css) - 1; + } + $nextBlockStartPos = strpos($css, '{', $blockStartPos + 1); + $ret .= substr($css, $substrOffset, $blockStartPos - $substrOffset); + + if ($nextBlockStartPos !== false && $nextBlockStartPos < $blockEndPos) { + $ret .= substr($css, $blockStartPos, $nextBlockStartPos - $blockStartPos); + $searchOffset = $nextBlockStartPos; + } else { + $ruleBody = substr($css, $blockStartPos + 1, $blockEndPos - $blockStartPos - 1); + $ruleBodyToken = $this->registerRuleBodyToken($this->processRuleBody($ruleBody)); + $ret .= '{'. $ruleBodyToken .'}'; + $searchOffset = $blockEndPos + 1; + } + + $substrOffset = $searchOffset; + } + + $ret .= substr($css, $substrOffset); + + return $ret; + } + + /** + * Compresses non-group rule bodies. + * @param string $body The rule body without curly braces + * @return string + */ + private function processRuleBody($body) + { + $body = trim($body); + + // Remove spaces before the things that should not have spaces before them. + $body = preg_replace('/ ([:=,)*\/;\n])/S', '$1', $body); + + // Remove the spaces after the things that should not have spaces after them. + $body = preg_replace('/([:=,(*\/!;\n]) /S', '$1', $body); + + // Replace multiple semi-colons in a row by a single one + $body = preg_replace('/;;+/S', ';', $body); + + // Remove semicolon before closing brace except when: + // - The last property is prefixed with a `*` (lte IE7 hack) to avoid issues on Symbian S60 3.x browsers. + if (!preg_match('/\*[a-z0-9-]+:[^;]+;$/Si', $body)) { + $body = rtrim($body, ';'); + } + + // Remove important comments inside a rule body (because they make no sense here). + if (strpos($body, '/*') !== false) { + $body = preg_replace('/\n?\/\*[A-Z0-9_]+\*\/\n?/S', '', $body); + } + + // Empty rule body? Exit :) + if (empty($body)) { + return ''; + } + + // Shorten font-weight values + $body = preg_replace( + array('/(font-weight:)bold\b/Si', '/(font-weight:)normal\b/Si'), + array('${1}700', '${1}400'), + $body + ); + + // Shorten background property + $body = preg_replace('/(background:)(?:none|transparent)( !|;|$)/Si', '${1}0 0$2', $body); + + // Shorten opacity IE filter + $body = str_ireplace('progid:DXImageTransform.Microsoft.Alpha(Opacity=', 'alpha(opacity=', $body); + + // Shorten colors from rgb(51,102,153) to #336699, rgb(100%,0%,0%) to #ff0000 (sRGB color space) + // Shorten colors from hsl(0, 100%, 50%) to #ff0000 (sRGB color space) + // This makes it more likely that it'll get further compressed in the next step. + $body = preg_replace_callback( + '/(rgb|hsl)\(([0-9,.% -]+)\)(.|$)/Si', + array($this, 'shortenHslAndRgbToHexCallback'), + $body + ); + + // Shorten colors from #AABBCC to #ABC or shorter color name: + // - Look for hex colors which don't have a "=" in front of them (to avoid MSIE filters) + $body = preg_replace_callback( + '/(?unquotedFontsRegex, + array($this, 'preserveUnquotedFontTokens'), + $body + ); + + // Shorten long named colors with a shorter HEX counterpart: white -> #fff. + // Run at least 2 times to cover most cases + $body = preg_replace_callback( + array($this->namedToHexColorsRegex, $this->namedToHexColorsRegex), + array($this, 'shortenNamedColorsCallback'), + $body + ); + + // Restore unquoted font tokens now after colors have been changed. + $body = $this->restoreUnquotedFontTokens($body); + + // Replace positive sign from numbers before the leading space is removed. + // +1.2em to 1.2em, +.8px to .8px, +2% to 2% + $body = preg_replace('/([ :,(])\+(\.?\d+)/S', '$1$2', $body); + + // shorten ms to s + $body = preg_replace_callback('/([ :,(])(-?)(\d{3,})ms/Si', function ($matches) { + return $matches[1] . $matches[2] . ((int) $matches[3] / 1000) .'s'; + }, $body); + + // Remove leading zeros from integer and float numbers. + // 000.6 to .6, -0.8 to -.8, 0050 to 50, -01.05 to -1.05 + $body = preg_replace('/([ :,(])(-?)0+([1-9]?\.?\d+)/S', '$1$2$3', $body); + + // Remove trailing zeros from float numbers. + // -6.0100em to -6.01em, .0100 to .01, 1.200px to 1.2px + $body = preg_replace('/([ :,(])(-?\d?\.\d+?)0+([^\d])/S', '$1$2$3', $body); + + // Remove trailing .0 -> -9.0 to -9 + $body = preg_replace('/([ :,(])(-?\d+)\.0([^\d])/S', '$1$2$3', $body); + + // Replace 0 length numbers with 0 + $body = preg_replace('/([ :,(])-?\.?0+([^\d])/S', '${1}0$2', $body); + + // Shorten zero values for safe properties only + $body = preg_replace( + array( + $this->shortenOneZeroesRegex, + $this->shortenTwoZeroesRegex, + $this->shortenThreeZeroesRegex, + $this->shortenFourZeroesRegex + ), + array( + '$1$2:0', + '$1$2:$3 0', + '$1$2:$3 $4 0', + '$1$2:$3 $4 $5 0' + ), + $body + ); + + // Replace 0 0 0; or 0 0 0 0; with 0 0 for background-position property. + $body = preg_replace('/(background-position):0(?: 0){2,3}( !|;|$)/Si', '$1:0 0$2', $body); + + // Shorten suitable shorthand properties with repeated values + $body = preg_replace( + array( + '/(margin|padding|border-(?:width|radius)):('.$this->numRegex.')(?: \2)+( !|;|$)/Si', + '/(border-(?:style|color)):([#a-z0-9]+)(?: \2)+( !|;|$)/Si' + ), + '$1:$2$3', + $body + ); + $body = preg_replace( + array( + '/(margin|padding|border-(?:width|radius)):'. + '('.$this->numRegex.') ('.$this->numRegex.') \2 \3( !|;|$)/Si', + '/(border-(?:style|color)):([#a-z0-9]+) ([#a-z0-9]+) \2 \3( !|;|$)/Si' + ), + '$1:$2 $3$4', + $body + ); + $body = preg_replace( + array( + '/(margin|padding|border-(?:width|radius)):'. + '('.$this->numRegex.') ('.$this->numRegex.') ('.$this->numRegex.') \3( !|;|$)/Si', + '/(border-(?:style|color)):([#a-z0-9]+) ([#a-z0-9]+) ([#a-z0-9]+) \3( !|;|$)/Si' + ), + '$1:$2 $3 $4$5', + $body + ); + + // Lowercase some common functions that can be values + $body = preg_replace_callback( + '/(?:attr|blur|brightness|circle|contrast|cubic-bezier|drop-shadow|ellipse|from|grayscale|'. + 'hsla?|hue-rotate|inset|invert|local|minmax|opacity|perspective|polygon|rgba?|rect|repeat|saturate|sepia|'. + 'steps|to|url|var|-webkit-gradient|'. + '(?:-(?:atsc|khtml|moz|ms|o|wap|webkit)-)?(?:calc|(?:repeating-)?(?:linear|radial)-gradient))\(/Si', + array($this, 'strtolowerCallback'), + $body + ); + + // Lowercase all uppercase properties + $body = preg_replace_callback('/(?:^|;)[A-Z-]+:/S', array($this, 'strtolowerCallback'), $body); + + return $body; + } + + private function preserveUnquotedFontTokens($matches) + { + return $this->registerUnquotedFontToken($matches[0]); + } + + private function restoreUnquotedFontTokens($body) + { + return strtr($body, $this->unquotedFontTokens); + } + + /** + * Compresses At-rules and selectors. + * @param string $css the whole stylesheet with rule bodies tokenized. + * @return string + */ + private function processAtRulesAndSelectors($css) + { + $charset = ''; + $imports = ''; + $namespaces = ''; + + // Remove spaces before the things that should not have spaces before them. + $css = preg_replace('/ ([@{};>+)\]~=,\/\n])/S', '$1', $css); + + // Remove the spaces after the things that should not have spaces after them. + $css = preg_replace('/([{}:;>+(\[~=,\/\n]) /S', '$1', $css); + + // Shorten shortable double colon (CSS3) pseudo-elements to single colon (CSS2) + $css = preg_replace('/::(before|after|first-(?:line|letter))(\{|,)/Si', ':$1$2', $css); + + // Retain space for special IE6 cases + $css = preg_replace_callback('/:first-(line|letter)(\{|,)/Si', function ($matches) { + return ':first-'. strtolower($matches[1]) .' '. $matches[2]; + }, $css); + + // Find a fraction that may used in some @media queries such as: (min-aspect-ratio: 1/1) + // Add token to add the "/" back in later + $css = preg_replace('/\(([a-z-]+):([0-9]+)\/([0-9]+)\)/Si', '($1:$2'. self::QUERY_FRACTION .'$3)', $css); + + // Remove empty rule blocks up to 2 levels deep. + $css = preg_replace(array_fill(0, 2, '/(\{)[^{};\/\n]+\{\}/S'), '$1', $css); + $css = preg_replace('/[^{};\/\n]+\{\}/S', '', $css); + + // Two important comments next to each other? Remove extra newline. + if ($this->keepImportantComments) { + $css = str_replace("\n\n", "\n", $css); + } + + // Restore fraction + $css = str_replace(self::QUERY_FRACTION, '/', $css); + + // Lowercase some popular @directives + $css = preg_replace_callback( + '/(?charsetRegex, $css, $matches)) { + // Keep the first @charset at-rule found + $charset = $matches[0]; + // Delete all @charset at-rules + $css = preg_replace($this->charsetRegex, '', $css); + } + + // @import handling + $css = preg_replace_callback($this->importRegex, function ($matches) use (&$imports) { + // Keep all @import at-rules found for later + $imports .= $matches[0]; + // Delete all @import at-rules + return ''; + }, $css); + + // @namespace handling + $css = preg_replace_callback($this->namespaceRegex, function ($matches) use (&$namespaces) { + // Keep all @namespace at-rules found for later + $namespaces .= $matches[0]; + // Delete all @namespace at-rules + return ''; + }, $css); + + // Order critical at-rules: + // 1. @charset first + // 2. @imports below @charset + // 3. @namespaces below @imports + $css = $charset . $imports . $namespaces . $css; + + return $css; + } + + /** + * Splits long lines after a specific column. + * + * Some source control tools don't like it when files containing lines longer + * than, say 8000 characters, are checked in. The linebreak option is used in + * that case to split long lines after a specific column. + * + * @param string $css the whole stylesheet. + * @return string + */ + private function processLongLineSplitting($css) + { + if ($this->linebreakPosition > 0) { + $l = strlen($css); + $offset = $this->linebreakPosition; + while (preg_match('/(?linebreakPosition; + $l += 1; + if ($offset > $l) { + break; + } + } + } + + return $css; + } + + /** + * Converts hsl() & rgb() colors to HEX format. + * @param $matches + * @return string + */ + private function shortenHslAndRgbToHexCallback($matches) + { + $type = $matches[1]; + $values = explode(',', $matches[2]); + $terminator = $matches[3]; + + if ($type === 'hsl') { + $values = Utils::hslToRgb($values); + } + + $hexColors = Utils::rgbToHex($values); + + // Restore space after rgb() or hsl() function in some cases such as: + // background-image: linear-gradient(to bottom, rgb(210,180,140) 10%, rgb(255,0,0) 90%); + if (!empty($terminator) && !preg_match('/[ ,);]/S', $terminator)) { + $terminator = ' '. $terminator; + } + + return '#'. implode('', $hexColors) . $terminator; + } + + /** + * Compresses HEX color values of the form #AABBCC to #ABC or short color name. + * @param $matches + * @return string + */ + private function shortenHexColorsCallback($matches) + { + $hex = $matches[1]; + + // Shorten suitable 6 chars HEX colors + if (strlen($hex) === 6 && preg_match('/^([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3$/Si', $hex, $m)) { + $hex = $m[1] . $m[2] . $m[3]; + } + + // Lowercase + $hex = '#'. strtolower($hex); + + // Replace Hex colors with shorter color names + $color = array_key_exists($hex, $this->hexToNamedColorsMap) ? $this->hexToNamedColorsMap[$hex] : $hex; + + return $color . $matches[2]; + } + + /** + * Shortens all named colors with a shorter HEX counterpart for a set of safe properties + * e.g. white -> #fff + * @param array $matches + * @return string + */ + private function shortenNamedColorsCallback($matches) + { + return $matches[1] . $this->namedToHexColorsMap[strtolower($matches[2])] . $matches[3]; + } + + /** + * Makes a string lowercase + * @param array $matches + * @return string + */ + private function strtolowerCallback($matches) + { + return strtolower($matches[0]); + } +} diff --git a/wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/Utils.php b/wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/Utils.php new file mode 100644 index 0000000..6afdb63 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/Utils.php @@ -0,0 +1,149 @@ + 1 ? $vh - 1 : $vh); + + if ($vh * 6 < 1) { + return $v1 + ($v2 - $v1) * 6 * $vh; + } + + if ($vh * 2 < 1) { + return $v2; + } + + if ($vh * 3 < 2) { + return $v1 + ($v2 - $v1) * ((2 / 3) - $vh) * 6; + } + + return $v1; + } + + /** + * Convert strings like "64M" or "30" to int values + * @param mixed $size + * @return int + */ + public static function normalizeInt($size) + { + if (is_string($size)) { + $letter = substr($size, -1); + $size = intval($size); + switch ($letter) { + case 'M': + case 'm': + return (int) $size * 1048576; + case 'K': + case 'k': + return (int) $size * 1024; + case 'G': + case 'g': + return (int) $size * 1073741824; + } + } + return (int) $size; + } + + /** + * Converts a string containing and RGB percentage value into a RGB integer value i.e. '90%' -> 229.5 + * @param $rgbPercentage + * @return int + */ + public static function rgbPercentageToRgbInteger($rgbPercentage) + { + if (strpos($rgbPercentage, '%') !== false) { + $rgbPercentage = self::roundNumber(floatval(str_replace('%', '', $rgbPercentage)) * 2.55); + } + + return intval($rgbPercentage, 10); + } + + /** + * Converts a RGB color into a HEX color + * @param array $rgbColors + * @return array + */ + public static function rgbToHex($rgbColors) + { + $hexColors = array(); + + // Values outside the sRGB color space should be clipped (0-255) + for ($i = 0, $l = count($rgbColors); $i < $l; $i++) { + $hexColors[$i] = sprintf("%02x", self::clampNumberSrgb(self::rgbPercentageToRgbInteger($rgbColors[$i]))); + } + + return $hexColors; + } + + /** + * Rounds a number to its closest integer + * @param $n + * @return int + */ + public static function roundNumber($n) + { + return intval(round(floatval($n)), 10); + } +} diff --git a/wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/index.html b/wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/index.html new file mode 100644 index 0000000..fe7267f --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/external/php/yui-php-cssmin-bundled/index.html @@ -0,0 +1 @@ +Generated by Autoptimize diff --git a/wp-content/plugins/autoptimize/classes/index.html b/wp-content/plugins/autoptimize/classes/index.html new file mode 100644 index 0000000..e5346ce --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/index.html @@ -0,0 +1 @@ +Generated by Autoptimize \ No newline at end of file diff --git a/wp-content/plugins/autoptimize/classes/static/exit-survey/exit-survey.css b/wp-content/plugins/autoptimize/classes/static/exit-survey/exit-survey.css new file mode 100644 index 0000000..402870d --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/static/exit-survey/exit-survey.css @@ -0,0 +1,221 @@ + +tr[data-slug="autoptimize"] span.deactivate{ + position: relative; +} + +.ao-feedback { + background: #fff; + max-width: 400px; + z-index: 10000; + box-shadow: 0 0 15px -5px rgba(0, 0, 0, .5); + transition: all .3s ease-out; +} + + +.ao-feedback .popup--header { + position: relative; + background-color: #e5e5e5; +} + +.ao-feedback .popup--header h5 { + margin: 0; + font-size: 16px; + padding: 10px 15px; + color: #222; + font-weight: 900; + text-align: left; +} + +.ao-feedback .popup--body { + padding: 15px; + padding-top: 5px; +} + +.ao-feedback .popup--form { + margin: 0; + font-size: 13px; + padding-top: 10px; +} + +.ao-feedback .popup--form input[type="radio"] { + margin: 0 10px 0 0; +} + +.ao-feedback .popup--form input[type="radio"]:checked ~ textarea { + display: block; +} + +.ao-feedback .popup--form textarea { + width: 100%; + margin: 10px 0 0; + display: none; + max-height: 150px; +} + +.ao-feedback .popup--form input[type='email'] { + width: 100%; + margin: 10px 0 0; +} + +.ao-feedback .popup--form input[type='email']:invalid { + color:red; + border-color:red; +} + +.ao-feedback .popup--form p.last-attempt { + display: none; +} + +.ao-feedback li { + display: flex; + align-items: center; + margin-bottom: 15px; + flex-wrap: wrap; +} + +.ao-feedback li label { + max-width: 90%; +} + +.ao-feedback li:last-child { + margin-bottom: 0; +} + +.ao-feedback .popup--footer { + padding: 0 15px 15px; +} + +.ao-feedback .actions { + display: flex; + flex-wrap: wrap; +} + +.info-disclosure-link { + width: 100%; + margin-bottom: 15px; +} + +.ao-feedback .info-disclosure-content { + max-height: 0; + overflow: hidden; + width: 100%; + transition: .3s ease; +} + +.ao-feedback .info-disclosure-content.active { + max-height: 300px; +} + +.ao-feedback .info-disclosure-content p { + margin: 0; +} + +.ao-feedback .info-disclosure-content ul { + margin: 10px 0; + border-radius: 3px; +} + +.ao-feedback .info-disclosure-content ul li { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 5px 0; + border-bottom: 1px solid #ccc; +} + +.ao-feedback .buttons { + display: flex; + width: 100%; +} + +.ao-feedback .buttons input:nth-child(2) { + margin: auto; +} + +.ao-feedback .buttons input:last-child { + margin-left: auto; +} + +.ao-plugin-uninstall-feedback-popup .popup--header:before { + content: ""; + display: block; + position: absolute; + border: 20px solid #e5e5e5; + left: -10px; + top: 50%; + border-top: 20px solid transparent; + border-bottom: 20px solid transparent; + border-left: 0; + transform: translateY(-50%); +} + +.ao-plugin-uninstall-feedback-popup { + display: none; + position: absolute; + white-space: normal; + width: 400px; + left: 122%; + top: -21px; +} + +.ao-plugin-uninstall-feedback-popup.sending-feedback .popup--body i { + animation: rotation 2s infinite linear; + display: block; + float: none; + align-items: center; + width: 100%; + margin: 0 auto; + height: 100%; + background: transparent; + padding: 0; +} + +.ao-plugin-uninstall-feedback-popup.sending-feedback .popup--body i:before { + padding: 0; + background: transparent; + box-shadow: none; + color: #b4b9be +} + + +.ao-plugin-uninstall-feedback-popup.active { + display: block; +} + +body.ao-feedback-open .ao-feedback-overlay { + content: ""; + display: block; + background-color: rgba(0, 0, 0, 0.5); + top: 0; + bottom: 0; + right: 0; + left: 0; + z-index: 10000; + position: fixed; +} + +.rtl .ao-plugin-uninstall-feedback-popup { + left: -500px; +} +.rtl .ao-feedback .popup--header h5 { + text-align: right; +} +.rtl .ao-plugin-uninstall-feedback-popup .popup--header:before { + display:none; +} + +@media (max-width: 768px) { + .ao-plugin-uninstall-feedback-popup, .rtl .ao-plugin-uninstall-feedback-popup { + position: fixed; + max-width: 100%; + margin: 0 auto; + left: 50%; + top: 50px; + transform: translateX(-50%); + } + + .ao-plugin-uninstall-feedback-popup .popup--header:before { + display: none; + } +} diff --git a/wp-content/plugins/autoptimize/classes/static/exit-survey/exit-survey.js b/wp-content/plugins/autoptimize/classes/static/exit-survey/exit-survey.js new file mode 100644 index 0000000..7a516da --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/static/exit-survey/exit-survey.js @@ -0,0 +1,122 @@ +(function ($) { + $(document).ready(function () { + var targetElement = 'tr[data-slug="autoptimize"] span.deactivate a'; + var redirectUrl = $(targetElement).attr('href'); + if ($('.ao-feedback-overlay').length === 0) { + $('body').prepend('
    '); + } + $('#ao_uninstall_feedback_popup').appendTo($(targetElement).parent()); + + $(targetElement).on('click', function (e) { + e.preventDefault(); + $('#ao_uninstall_feedback_popup ').addClass('active'); + $('body').addClass('ao-feedback-open'); + $('.ao-feedback-overlay').on('click', function () { + $('#ao_uninstall_feedback_popup ').removeClass('active'); + $('body').removeClass('ao-feedback-open'); + }); + }); + + $('#ao_uninstall_feedback_popup .info-disclosure-link').on('click', function (e) { + e.preventDefault(); + $(this).parent().find('.info-disclosure-content').toggleClass('active'); + }); + + $('#ao_uninstall_feedback_popup input[type="radio"]').on('change', function () { + var radio = $(this); + $('p.last-attempt').hide(); + if (radio.parent().find('textarea').length > 0 && + radio.parent().find('textarea').val().length === 0) { + $('#ao_uninstall_feedback_popup #ao-deactivate-yes').attr('disabled', 'disabled'); + radio.parent().find('textarea').on('keyup', function (e) { + if ($(this).val().length === 0) { + $('#ao_uninstall_feedback_popup #ao-deactivate-yes').attr('disabled', 'disabled'); + } else if ( $('#ao_feedback998')[0].checkValidity() == true ) { + $('#ao_uninstall_feedback_popup #ao-deactivate-yes').removeAttr('disabled'); + } + }); + } else { + if ( $('#ao_feedback998')[0].checkValidity() == true ) { + $('#ao_uninstall_feedback_popup #ao-deactivate-yes').removeAttr('disabled'); + } + $(this).siblings('p.last-attempt').show(); + } + }); + + $('#ao_feedback998').on('keyup', function (e) { + email_node = $(this); + email_val = email_node.val(); + if ( email_val.length > 0 && email_node[0].checkValidity() == false ) { + $('#ao_uninstall_feedback_popup #ao-deactivate-yes').attr('disabled', 'disabled'); + } else if ( $( '#ao_uninstall_feedback_popup input[name="ao-deactivate-option"]:checked' ).length > 0 ) { + $('#ao_uninstall_feedback_popup #ao-deactivate-yes').removeAttr('disabled'); + } + }); + + $('#ao_uninstall_feedback_popup #ao-deactivate-no').on('click', function (e) { + e.preventDefault(); + e.stopPropagation(); + $(targetElement).unbind('click'); + $('body').removeClass('ao-feedback-open'); + $('#ao_uninstall_feedback_popup').remove(); + if (redirectUrl !== '') { + location.href = redirectUrl; + } + }); + + $('#ao_uninstall_feedback_popup #ao-deactivate-cancel').on('click', function (e) { + e.preventDefault(); + e.stopPropagation(); + $('#ao_uninstall_feedback_popup ').removeClass('active'); + $('body').removeClass('ao-feedback-open'); + }); + + $('#ao_feedback_email_toggle').on('click', function (e) { + $('#ao_feedback998').toggle(); + }); + + $('#ao_uninstall_feedback_popup #ao-deactivate-yes').on('click', function (e) { + e.preventDefault(); + e.stopPropagation(); + $(targetElement).unbind('click'); + + var modal_data = JSON.parse(atob($('#ao_uninstall_feedback_popup').data('modal'))) + + var selectedOption = $( '#ao_uninstall_feedback_popup input[name="ao-deactivate-option"]:checked' ); + + var reason; + + if( selectedOption.attr("id") === "ao_feedback999" ){ + reason = 'Other: ' + selectedOption.parent().find('textarea').val().trim() + }else{ + reason = selectedOption.parent().find('label').attr('data-reason').trim() + } + + var data = { + 'url': modal_data.home, + 'reason': reason, + 'type': 'WP ' + $('#core_version').text().trim(), + 'version' : 'AO ' + $('#ao_plugin_version').text().trim(), + 'email': $('#ao_feedback998').val().trim(), + }; + + $.ajax({ + type: 'POST', + url: atob( modal_data.dest ), + data: data, + complete() { + $('body').removeClass('ao-feedback-open'); + $('#ao_uninstall_feedback_popup').remove(); + if (redirectUrl !== '') { + location.href = redirectUrl; + } + }, + beforeSend() { + $('#ao_uninstall_feedback_popup').addClass('sending-feedback'); + $('#ao_uninstall_feedback_popup .popup--footer').remove(); + $('#ao_uninstall_feedback_popup .popup--body').html(''); + } + }); + }); + }); +})(jQuery); diff --git a/wp-content/plugins/autoptimize/classes/static/loading.gif b/wp-content/plugins/autoptimize/classes/static/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..176577b0b18dc65180b2f09a5acd047f6cc33992 GIT binary patch literal 4640 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 K7y@*7l79oxMboAL literal 0 HcmV?d00001 diff --git a/wp-content/plugins/autoptimize/classes/static/toolbar.css b/wp-content/plugins/autoptimize/classes/static/toolbar.css new file mode 100644 index 0000000..dddd885 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/static/toolbar.css @@ -0,0 +1,246 @@ +/* Loading Modal */ +.autoptimize-loading +{ + display: none; + position: fixed; + background-color: rgba(102, 102, 102, 0.8); + background-image: url('loading.gif'); + background-position: center; + background-repeat: no-repeat; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9000000000; +} + +/* Toolbar Font Colors */ +#wp-admin-bar-autoptimize .white +{ + color: #EEE; +} + +#wp-admin-bar-autoptimize .green +{ + color: #26BD26; +} + +#wp-admin-bar-autoptimize .orange +{ + color: #EC9103; +} + +#wp-admin-bar-autoptimize .red +{ + color: #EA1919; +} + +#wp-admin-bar-autoptimize .bg-green +{ + background: #26BD26; +} + +#wp-admin-bar-autoptimize .bg-orange +{ + background: #EC9103; +} + +#wp-admin-bar-autoptimize .bg-red +{ + background: #EA1919; +} + +/* Toolbar Bullet Icons */ +#wp-admin-bar-autoptimize.bullet-green .ab-icon::before, +#wp-admin-bar-autoptimize.bullet-green:hover .ab-icon::before +{ + content: "\f159"; + color: #02CA02; + font-size: 14px; +} + +#wp-admin-bar-autoptimize.bullet-orange .ab-icon::before, +#wp-admin-bar-autoptimize.bullet-orange:hover .ab-icon::before +{ + content: "\f159"; + color: #EC9103; + font-size: 14px; +} + +#wp-admin-bar-autoptimize.bullet-red .ab-icon::before, +#wp-admin-bar-autoptimize.bullet-red:hover .ab-icon::before +{ + content: "\f159"; + color: #EA1919; + font-size: 14px; + -webkit-animation: blink 1s step-end infinite; + animation: blink 1s step-end infinite; +} + +@-webkit-keyframes blink { 50% { visibility: hidden; }} + @keyframes blink { 50% { visibility: hidden; }} + + +/* Some cosmetic Toolbar things */ +#wp-admin-bar-autoptimize table, #wp-admin-bar-autoptimize th, #wp-admin-bar-autoptimize td +{ + border: 0px !important; +} + +#wp-admin-bar-autoptimize-default +{ + padding-top: 0 !important; +} + +#wp-admin-bar-autoptimize-delete-cache .ab-item +{ + cursor: pointer !important; + background: #464b50; +} + +#wp-admin-bar-autoptimize-delete-cache .ab-item:hover +{ + color: rgba(240,245,250,0.85) !important; + background: #B57373 !important; +} + +#wp-admin-bar-autoptimize-cache-info +{ + padding-top: 8px !important; + padding-bottom: 8px !important; +} + +#wp-admin-bar-autoptimize-cache-info, +#wp-admin-bar-autoptimize-cache-info .ab-item +{ + height: auto !important; + cursor: default !important; +} + +#wp-admin-bar-autoptimize-cache-info td + td +{ + padding-left: 3px; +} + +#wp-admin-bar-autoptimize-cache-info .ab-item, +#wp-admin-bar-autoptimize-cache-info .ab-item:hover +{ + color: #b4b9be !important; +} + +#wp-admin-bar-autoptimize-cache-info .ab-item > p +{ + display: block; +} + +#wp-admin-bar-autoptimize-cache-info .ab-item p, +#wp-admin-bar-autoptimize-cache-info .ab-item td +{ + font-size: 11px !important; + line-height: 16px !important; +} + +#wp-admin-bar-autoptimize-cache-info .ab-item table +{ + display: inline-block !important; + margin-left: 10px !important; +} + +/* Radial Bar */ +.autoptimize-radial-bar +{ + display: inline-block !important; + margin-top: 5px !important; +} +.autoptimize-radial-bar, +.autoptimize-radial-bar .mask, +.autoptimize-radial-bar .fill, +.autoptimize-radial-bar .shadow +{ + width : 36px !important; + height : 36px !important; +} +.autoptimize-radial-bar +{ + background-color : #d6dadc; +} +.autoptimize-radial-bar .fill +{ + background-color : #02ca02; +} +.autoptimize-radial-bar .numbers +{ + color : #02ca02; +} +.autoptimize-radial-bar .mask +{ + clip : rect(0px, 36px, 36px, 18px); +} +.autoptimize-radial-bar .fill +{ + clip : rect(0px, 18px, 36px, 0px); +} +.autoptimize-radial-bar .inset +{ + width : 26px !important; + height : 26px !important; + + margin-left : 5px !important; + margin-top : 5px !important; + + background-color : #32373c; +} +.autoptimize-radial-bar .percentage +{ + width : 26px !important; + height : 16px !important; + line-height : 11px !important; + + top : 7px !important; + left : 0px !important; + + overflow : hidden; +} +.autoptimize-radial-bar .numbers +{ + width : 26px !important; + font-weight : 600 !important; + font-size : 9px !important; + + margin-top : -5px !important; + + display : inline-block; + vertical-align : top; + text-align : center; +} + +.autoptimize-radial-bar .inset +{ + box-shadow : 3px 3px 5px rgba(0,0,0,0.3) !important; +} +.autoptimize-radial-bar .shadow +{ + box-shadow : 3px 3px 5px rgba(0,0,0,0.3) inset !important; +} + +.autoptimize-radial-bar .mask, +.autoptimize-radial-bar .fill, +.autoptimize-radial-bar .shadow, +.autoptimize-radial-bar .inset, +.autoptimize-radial-bar .percentage +{ + position : absolute !important; +} + +.autoptimize-radial-bar, +.autoptimize-radial-bar .mask, +.autoptimize-radial-bar .fill, +.autoptimize-radial-bar .shadow, +.autoptimize-radial-bar .inset +{ + border-radius : 50% !important; +} + +/* fixes for toolbar on frontend for other themes messing things up */ +#wp-admin-bar-autoptimize tr{border:0 !important} +#wp-admin-bar-autoptimize td{background-color:#32373c !important} diff --git a/wp-content/plugins/autoptimize/classes/static/toolbar.js b/wp-content/plugins/autoptimize/classes/static/toolbar.js new file mode 100644 index 0000000..1d65c1b --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/static/toolbar.js @@ -0,0 +1,82 @@ +jQuery( document ).ready(function() +{ + var percentage = jQuery( '#wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar' ).attr('percentage'); + var rotate = percentage * 1.8; + + jQuery( '#wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar .mask.full, #wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar .fill' ).css({ + '-webkit-transform' : 'rotate(' + rotate + 'deg)', + '-ms-transform' : 'rotate(' + rotate + 'deg)', + 'transform' : 'rotate(' + rotate + 'deg)' + }); + + // Fix Background color of circle percentage & delete cache to fit with the current color theme + jQuery( '#wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar .inset' ).css( 'background-color', jQuery( '#wp-admin-bar-autoptimize .ab-sub-wrapper' ).css( 'background-color') ); + jQuery( '#wp-admin-bar-autoptimize-delete-cache .ab-item' ).css( 'background-color', jQuery( '#wpadminbar' ).css( 'background-color') ); + + jQuery( '#wp-admin-bar-autoptimize-default li' ).on('click', function(e) + { + var id = ( typeof e.target.id != 'undefined' && e.target.id ) ? e.target.id : jQuery( e.target ).parent( 'li' ).attr( 'id' ); + var action = ''; + + if( id == 'wp-admin-bar-autoptimize-delete-cache' ){ + action = 'autoptimize_delete_cache'; + } else { + return; + } + + // Remove the class "hover" from drop-down Autoptimize menu to hide it. + jQuery( '#wp-admin-bar-autoptimize' ).removeClass( 'hover' ); + + // Create and Show the Autoptimize Loading Modal + var modal_loading = jQuery( '
    ' ).appendTo( 'body' ).show(); + + var success = function() { + // Reset output values & class names of cache info + jQuery( '#wp-admin-bar-autoptimize-cache-info .size' ).attr( 'class', 'size green' ).html( '0.00 B' ); + jQuery( '#wp-admin-bar-autoptimize-cache-info .files' ).html( '0' ); + jQuery( '#wp-admin-bar-autoptimize-cache-info .percentage .numbers' ).attr( 'class', 'numbers green' ).html( '0%' ); + jQuery( '#wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar .fill' ).attr( 'class', 'fill bg-green' ); + + // Reset the class names of bullet icon + jQuery( '#wp-admin-bar-autoptimize' ).attr( 'class', 'menupop bullet-green' ); + + // Reset the Radial Bar progress + jQuery( '#wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar .mask.full, #wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar .fill' ).css({ + '-webkit-transform' : 'rotate(0deg)', + '-ms-transform' : 'rotate(0deg)', + 'transform' : 'rotate(0deg)' + }); + }; + + var notice = function() { + jQuery( '

    ' + autoptimize_ajax_object.error_msg + '


    ' ).insertAfter( '#wpbody .wrap h1:first-of-type' ).show(); + }; + + jQuery.ajax({ + type : 'GET', + url : autoptimize_ajax_object.ajaxurl, + data : {'action':action, 'nonce':autoptimize_ajax_object.nonce}, + dataType : 'json', + cache : false, + timeout : 9000, + success : function( cleared ) + { + // Remove the Autoptimize Loading Modal + modal_loading.remove(); + if ( cleared ) { + success(); + } else { + notice(); + } + }, + error: function( jqXHR, textStatus ) + { + // Remove the Autoptimize Loading Modal + modal_loading.remove(); + + // WordPress Admin Notice + notice(); + } + }); + }); +}); diff --git a/wp-content/plugins/autoptimize/classes/static/toolbar.min.css b/wp-content/plugins/autoptimize/classes/static/toolbar.min.css new file mode 100644 index 0000000..20c8efb --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/static/toolbar.min.css @@ -0,0 +1 @@ +.autoptimize-loading{display:none;position:fixed;background-color:rgba(102,102,102,.8);background-image:url(loading.gif);background-position:center;background-repeat:no-repeat;top:0;left:0;width:100%;height:100%;z-index:9000000000}#wp-admin-bar-autoptimize .white{color:#eee}#wp-admin-bar-autoptimize .green{color:#26bd26}#wp-admin-bar-autoptimize .orange{color:#ec9103}#wp-admin-bar-autoptimize .red{color:#ea1919}#wp-admin-bar-autoptimize .bg-green{background:#26bd26}#wp-admin-bar-autoptimize .bg-orange{background:#ec9103}#wp-admin-bar-autoptimize .bg-red{background:#ea1919}#wp-admin-bar-autoptimize.bullet-green .ab-icon:before,#wp-admin-bar-autoptimize.bullet-green:hover .ab-icon:before{content:"\f159";color:#02ca02;font-size:14px}#wp-admin-bar-autoptimize.bullet-orange .ab-icon:before,#wp-admin-bar-autoptimize.bullet-orange:hover .ab-icon:before{content:"\f159";color:#ec9103;font-size:14px}#wp-admin-bar-autoptimize.bullet-red .ab-icon:before,#wp-admin-bar-autoptimize.bullet-red:hover .ab-icon:before{content:"\f159";color:#ea1919;font-size:14px;-webkit-animation:blink 1s step-end infinite;animation:blink 1s step-end infinite}@-webkit-keyframes blink{50%{visibility:hidden}}@keyframes blink{50%{visibility:hidden}}#wp-admin-bar-autoptimize table,#wp-admin-bar-autoptimize th,#wp-admin-bar-autoptimize td{border:0 !important}#wp-admin-bar-autoptimize-default{padding-top:0 !important}#wp-admin-bar-autoptimize-delete-cache .ab-item{cursor:pointer !important;background:#464b50}#wp-admin-bar-autoptimize-delete-cache .ab-item:hover{color:rgba(240,245,250,.85) !important;background:#b57373 !important}#wp-admin-bar-autoptimize-cache-info{padding-top:8px !important;padding-bottom:8px !important}#wp-admin-bar-autoptimize-cache-info,#wp-admin-bar-autoptimize-cache-info .ab-item{height:auto !important;cursor:default !important}#wp-admin-bar-autoptimize-cache-info td+td{padding-left:3px}#wp-admin-bar-autoptimize-cache-info .ab-item,#wp-admin-bar-autoptimize-cache-info .ab-item:hover{color:#b4b9be !important}#wp-admin-bar-autoptimize-cache-info .ab-item>p{display:block}#wp-admin-bar-autoptimize-cache-info .ab-item p,#wp-admin-bar-autoptimize-cache-info .ab-item td{font-size:11px !important;line-height:16px !important}#wp-admin-bar-autoptimize-cache-info .ab-item table{display:inline-block !important;margin-left:10px !important}.autoptimize-radial-bar{display:inline-block !important;margin-top:5px !important}.autoptimize-radial-bar,.autoptimize-radial-bar .mask,.autoptimize-radial-bar .fill,.autoptimize-radial-bar .shadow{width:36px !important;height:36px !important}.autoptimize-radial-bar{background-color:#d6dadc}.autoptimize-radial-bar .fill{background-color:#02ca02}.autoptimize-radial-bar .numbers{color:#02ca02}.autoptimize-radial-bar .mask{clip:rect(0px,36px,36px,18px)}.autoptimize-radial-bar .fill{clip:rect(0px,18px,36px,0px)}.autoptimize-radial-bar .inset{width:26px !important;height:26px !important;margin-left:5px !important;margin-top:5px !important;background-color:#32373c}.autoptimize-radial-bar .percentage{width:26px !important;height:16px !important;line-height:11px !important;top:7px !important;left:0 !important;overflow:hidden}.autoptimize-radial-bar .numbers{width:26px !important;font-weight:600 !important;font-size:9px !important;margin-top:-5px !important;display:inline-block;vertical-align:top;text-align:center}.autoptimize-radial-bar .inset{box-shadow:3px 3px 5px rgba(0,0,0,.3) !important}.autoptimize-radial-bar .shadow{box-shadow:3px 3px 5px rgba(0,0,0,.3) inset !important}.autoptimize-radial-bar .mask,.autoptimize-radial-bar .fill,.autoptimize-radial-bar .shadow,.autoptimize-radial-bar .inset,.autoptimize-radial-bar .percentage{position:absolute !important}.autoptimize-radial-bar,.autoptimize-radial-bar .mask,.autoptimize-radial-bar .fill,.autoptimize-radial-bar .shadow,.autoptimize-radial-bar .inset{border-radius:50% !important}#wp-admin-bar-autoptimize tr{border:0 !important}#wp-admin-bar-autoptimize td{background-color:#32373c !important} diff --git a/wp-content/plugins/autoptimize/classes/static/toolbar.min.js b/wp-content/plugins/autoptimize/classes/static/toolbar.min.js new file mode 100644 index 0000000..64e2c80 --- /dev/null +++ b/wp-content/plugins/autoptimize/classes/static/toolbar.min.js @@ -0,0 +1,6 @@ +jQuery(document).ready(function() +{var percentage=jQuery('#wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar').attr('percentage');var rotate=percentage*1.8;jQuery('#wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar .mask.full, #wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar .fill').css({'-webkit-transform':'rotate('+rotate+'deg)','-ms-transform':'rotate('+rotate+'deg)','transform':'rotate('+rotate+'deg)'});jQuery('#wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar .inset').css('background-color',jQuery('#wp-admin-bar-autoptimize .ab-sub-wrapper').css('background-color'));jQuery('#wp-admin-bar-autoptimize-delete-cache .ab-item').css('background-color',jQuery('#wpadminbar').css('background-color'));jQuery('#wp-admin-bar-autoptimize-default li').on('click',function(e) +{var id=(typeof e.target.id!='undefined'&&e.target.id)?e.target.id:jQuery(e.target).parent('li').attr('id');var action='';if(id=='wp-admin-bar-autoptimize-delete-cache'){action='autoptimize_delete_cache';}else{return;} +jQuery('#wp-admin-bar-autoptimize').removeClass('hover');var modal_loading=jQuery('
    ').appendTo('body').show();var success=function(){jQuery('#wp-admin-bar-autoptimize-cache-info .size').attr('class','size green').html('0.00 B');jQuery('#wp-admin-bar-autoptimize-cache-info .files').html('0');jQuery('#wp-admin-bar-autoptimize-cache-info .percentage .numbers').attr('class','numbers green').html('0%');jQuery('#wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar .fill').attr('class','fill bg-green');jQuery('#wp-admin-bar-autoptimize').attr('class','menupop bullet-green');jQuery('#wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar .mask.full, #wp-admin-bar-autoptimize-cache-info .autoptimize-radial-bar .fill').css({'-webkit-transform':'rotate(0deg)','-ms-transform':'rotate(0deg)','transform':'rotate(0deg)'});};var notice=function(){jQuery('

    '+autoptimize_ajax_object.error_msg+'


    ').insertAfter('#wpbody .wrap h1:first-of-type').show();};jQuery.ajax({type:'GET',url:autoptimize_ajax_object.ajaxurl,data:{'action':action,'nonce':autoptimize_ajax_object.nonce},dataType:'json',cache:false,timeout:9000,success:function(cleared) +{modal_loading.remove();if(cleared){success();}else{notice();}},error:function(jqXHR,textStatus) +{modal_loading.remove();notice();}});});}); diff --git a/wp-content/plugins/autoptimize/config/autoptimize_404_handler.php b/wp-content/plugins/autoptimize/config/autoptimize_404_handler.php new file mode 100644 index 0000000..d48b644 --- /dev/null +++ b/wp-content/plugins/autoptimize/config/autoptimize_404_handler.php @@ -0,0 +1,52 @@ +'; +$js_or_css = pathinfo( $original_request, PATHINFO_EXTENSION ); + +// add multisite logic. +$multisite = false; +if ( true === $multisite ) { + preg_match( '#\/([0-9]{1,5})\/(?:js|css)\/[a-z0-9]*_fallback\.(?:js|css)$#', $fallback_target, $child_site_id ); + $ao_root_cache_dir = preg_replace( '#[0-9]*\/$#', '', $ao_cache_dir ); + $ao_cache_dir = $ao_root_cache_dir . $child_site_id[1] . '/'; +} + +$fallback_path = $ao_cache_dir . $js_or_css . '/fallback.' . $js_or_css; + +if ( $original_request !== $fallback_target && file_exists( $fallback_path ) ) { + // error_log( 'Autoptimize file ' . $original_request . ' not found, using fallback instead.' ); + header( 'HTTP/1.1 302 Found' ); + header( 'Location: ' . $fallback_target ); +} else { + // error_log( 'Autoptimize file ' . $original_request . ' not found, sending 410 gone response.' ); + header( 'HTTP/1.1 410 Gone' ); +} + +exit(); diff --git a/wp-content/plugins/autoptimize/config/default.php b/wp-content/plugins/autoptimize/config/default.php new file mode 100644 index 0000000..7080855 --- /dev/null +++ b/wp-content/plugins/autoptimize/config/default.php @@ -0,0 +1,87 @@ +Generated by Autoptimize \ No newline at end of file diff --git a/wp-content/plugins/autoptimize/index.html b/wp-content/plugins/autoptimize/index.html new file mode 100644 index 0000000..e5346ce --- /dev/null +++ b/wp-content/plugins/autoptimize/index.html @@ -0,0 +1 @@ +Generated by Autoptimize \ No newline at end of file diff --git a/wp-content/plugins/autoptimize/readme.txt b/wp-content/plugins/autoptimize/readme.txt new file mode 100644 index 0000000..45fd873 --- /dev/null +++ b/wp-content/plugins/autoptimize/readme.txt @@ -0,0 +1,462 @@ +=== Autoptimize === +Contributors: futtta, optimizingmatters, zytzagoo, turl +Tags: optimize, performance, images, core web vitals, pagespeed +Donate link: http://blog.futtta.be/2013/10/21/do-not-donate-to-me/ +License: GPLv3 +License URI: [https://www.gnu.org/licenses/gpl-3.0.html](https://www.gnu.org/licenses/gpl-3.0.html) +Requires at least: 5.3 +Tested up to: 6.9 +Requires PHP: 7.1 +Stable tag: 3.1.15.1 + +Autoptimize speeds up your website by optimizing JS, CSS, images (incl. lazy-load), HTML and Google Fonts, asyncing JS, removing emoji cruft and more. + +== Description == + +Autoptimize makes optimizing your site really easy. It can aggregate, minify and cache scripts and styles, injects CSS in the page head by default but can also inline critical CSS and defer the aggregated full CSS, moves and defers scripts to the footer and minifies HTML. You can optimize and lazy-load images (with support for WebP and AVIF formats), optimize Google Fonts, async non-aggregated JavaScript, remove WordPress core emoji cruft and more. As such it can improve your site's performance even when already on HTTP/2! There is extensive API available to enable you to tailor Autoptimize to each and every site's specific needs. +If you think performance indeed is important, you should at least consider one of the many free page caching plugins (e.g. [Speed Booster pack](https://wordpress.org/plugins/speed-booster-pack/) or [KeyCDN's Cache Enabler](https://wordpress.org/plugins/cache-enabler)) to complement Autoptimize or even [consider Autoptimize Pro](https://misc.optimizingmatters.com/partners/?from=partnertab&partner=aopro) which not only has page caching but also image optimization, CDN, critical CSS and more! + +> Autoptimize Pro
    +> [Autoptimize Pro is a premium Power-Up](https://misc.optimizingmatters.com/partners/?from=partnertab&partner=aopro), adding image optimization, CDN, page caching, automatic critical CSS rules and extra “booster” options, all in one handy subscription to [make your site even faster!](https://misc.optimizingmatters.com/partners/?from=partnertab&partner=aopro)! + +> Premium Support
    +> We provide great [Premium Support and Web Performance Optimization services](https://misc.optimizingmatters.com/partners/?from=partnertab&partner=autoptimizepro) with Accelera, check out our offering on [https://accelerawp.com/](https://misc.optimizingmatters.com/partners/?from=partnertab&partner=autoptimizepro)! + +(Speed-surfing image under creative commons [by LL Twistiti](https://www.flickr.com/photos/twistiti/818552808/)) + +== Installation == + +Just install from your WordPress "Plugins > Add New" screen and all will be well. Manual installation is very straightforward as well: + +1. Upload the zip file and unzip it in the `/wp-content/plugins/` directory +1. Activate the plugin through the 'Plugins' menu in WordPress +1. Go to `Settings > Autoptimize` and enable the options you want. Generally this means "Optimize HTML/ CSS/ JavaScript". + +== Frequently Asked Questions == + += What does the plugin do to help speed up my site? = + +It minifies all scripts and styles and configures your webserver to compresses them with good expires headers. JavaScript be default will be made non-render-blocking and CSS can be too by adding critical CSS. You can configure it to combine (aggregate) CSS & JS-files, in which case styles are moved to the page head, and scripts to the footer. It also minifies the HTML code and can also optimize images and Google Fonts, making your page really lightweight. + += But I'm on HTTP/2, so I don't need Autoptimize? = + +HTTP/2 is a great step forward for sure, reducing the impact of multiple requests from the same server significantly by using the same connection to perform several concurrent requests and for that reason on new installations Autoptimize will not aggregate CSS and JS files any more. That being said, [concatenation of CSS/ JS can still make a lot of sense](http://engineering.khanacademy.org/posts/js-packaging-http2.htm), as described in [this css-tricks.com article](https://css-tricks.com/http2-real-world-performance-test-analysis/) and this [blogpost from one of the Ebay engineers](http://calendar.perfplanet.com/2015/packaging-for-performance/). The conclusion; configure, test, reconfigure, retest, tweak and look what works best in your context. Maybe it's just HTTP/2, maybe it's HTTP/2 + aggregation and minification, maybe it's HTTP/2 + minification (which AO can do as well, simply untick the "aggregate JS-files" and/ or "aggregate CSS-files" options). And Autoptimize can do a lot more then "just" optimizing your JS & CSS off course ;-) + += Will this work with my blog? = + +Although Autoptimize comes without any warranties, it will in general work flawlessly if you configure it correctly. See "Troubleshooting" below for info on how to configure in case of problems. If you want you can [test Autoptimize on a new free dummy site, courtesy of tastewp.com](https://demo.tastewp.com/autoptimize). + += Why is jquery.min.js not optimized when aggregating JavaScript? = + +Starting from AO 2.1 WordPress core's jquery.min.js is not optimized for the simple reason a lot of popular plugins inject inline JS that is not aggregated either (due to possible cache size issues with unique code in inline JS) which relies on jquery being available, so excluding jquery.min.js ensures that most sites will work out of the box. If you want optimize jquery as well, you can remove it from the JS optimization exclusion-list (you might have to enable "also aggregate inline JS" as well or switch to "force JS in head"). + += Why is Autoptimized JS render blocking? = + +This happens when aggregating JavaSCript and ticking the "force in head" option or when not aggregating and not deferring. Consider changing settings. + += Why is the autoptimized CSS still called out as render blocking? = + +With the default Autoptimize configuration the CSS is linked in the head, which is a safe default but has Google PageSpeed Insights complaining. You can look into "inline all CSS" (easy) or "inline and defer CSS" (better) which are explained in this FAQ as well. + += What is the use of "inline and defer CSS"? = + +CSS in general should go in the head of the document. Recently a.o. Google started promoting deferring non-essential CSS, while inlining those styles needed to build the page above the fold. This is especially important to render pages as quickly as possible on mobile devices. As from Autoptimize 1.9.0 this is easy; select "inline and defer CSS", paste the block of "above the fold CSS" in the input field (text area) and you're good to go! + += But how can one find out what the "above the fold CSS" is? = + +There's no easy solution for that as "above the fold" depends on where the fold is, which in turn depends on screensize. There are some tools available however, which try to identify just what is "above the fold". [This list of tools](https://github.com/addyosmani/above-the-fold-css-tools) is a great starting point. The [Sitelocity critical CSS generator](https://www.sitelocity.com/critical-path-css-generator) and [Jonas Ohlsson's criticalpathcssgenerator](http://jonassebastianohlsson.com/criticalpathcssgenerator/) are nice basic solutions and [http://criticalcss.com/](http://misc.optimizingmatters.com/partners/?from=faq&partner=critcss) is a premium solution by the same Jonas Ohlsson. Alternatively [this bookmarklet](https://gist.github.com/PaulKinlan/6284142) (Chrome-only) can be helpful as well. + += Or should you inline all CSS? = + +The short answer: probably not. Although inlining all CSS will make the CSS non-render blocking, it will result in your base HTML-page getting significantly bigger thus requiring more "roundtrip times". Moreover when considering multiple pages being requested in a browsing session the inline CSS is sent over each time, whereas when not inlined it would be served from cache. Finally the inlined CSS will push the meta-tags in the HTML down to a position where Facebook or Whatsapp might not look for it any more, breaking e.g. thumbnails when sharing on these platforms. + += My cache is getting huge, doesn't Autoptimize purge the cache? = + +Autoptimize does not have its proper cache purging mechanism, as this could remove optimized CSS/JS which is still referred to in other caches, which would break your site. Moreover a fast growing cache is an indication of [other problems you should avoid](http://blog.futtta.be/2016/09/15/autoptimize-cache-size-the-canary-in-the-coal-mine/). + +Instead you can keep the cache size at an acceptable level by either: + +* disactivating the "aggregate inline JS" and/ or "aggregate inline CSS" options +* excluding JS-variables (or sometimes CSS-selectors) that change on a per page (or per pageload) basis. You can read how you can do that [in this blogpost](http://blog.futtta.be/2014/03/19/how-to-keep-autoptimizes-cache-size-under-control-and-improve-visitor-experience/). + +Despite above objections, there are 3rd party solutions to automatically purge the AO cache, e.g. using [this code](https://wordpress.org/support/topic/contribution-autoptimize-cache-size-under-control-by-schedule-auto-cache-purge/) or [this plugin](https://wordpress.org/plugins/bi-clean-cache/), but for reasons above these are to be used only if you really know what you're doing. + += "Clear cache" doesn't seem to work? = + +When clicking the "Delete Cache" link in the Autoptimize dropdown in the admin toolbar, you might to get a "Your cache might not have been purged successfully". In that case go to Autoptimizes setting page and click the "Save changes & clear cache"-button. + +Moreover don't worry if your cache never is down to 0 files/ 0KB, as Autoptimize (as from version 2.2) will automatically preload the cache immediately after it has been cleared to speed further minification significantly up. + += My site looks broken when I purge Autoptimize's cache! = + +When clearing AO's cache, no page cache should contain pages (HTML) that refers to the removed optimized CSS/ JS. Although for that purpose there is integration between Autoptimize and some page caches, this integration does not cover 100% of setups so you might need to purge your page cache manually. + += Can I still use Cloudflare's Rocket Loader? = + +Cloudflare Rocket Loader is a pretty advanced but invasive way to make JavaScript non-render-blocking, which [Cloudflare still considers Beta](https://wordpress.org/support/topic/rocket-loader-breaking-onload-js-on-linked-css/#post-9263738). Sometimes Autoptimize & Rocket Loader work together, sometimes they don't. The best approach is to disable Rocket Loader, configure Autoptimize and re-enable Rocket Loader (if you think it can help) after that and test if everything still works. + +At the moment (June 2017) it seems RocketLoader might break AO's "inline & defer CSS", which is based on [Filamentgroup’s loadCSS](https://github.com/filamentgroup/loadCSS), resulting in the deferred CSS not loading. + += I tried Autoptimize but my Google Pagespeed Scored barely improved = + +Autoptimize is not a simple "fix my Pagespeed-problems" plugin; it "only" aggregates & minifies (local) JS & CSS and images and allows for some nice extra's as removing Google Fonts and deferring the loading of the CSS. As such Autoptimize will allow you to improve your performance (load time measured in seconds) and will probably also help you tackle some specific Pagespeed warnings. If you want to improve further, you will probably also have to look into e.g. page caching and your webserver configuration, which will improve real performance (again, load time as measured by e.g. https://webpagetest.org) and your "performance best practice" pagespeed ratings. + += What can I do with the API? = + +A whole lot; there are filters you can use to conditionally disable Autoptimize per request, to change the CSS- and JS-excludes, to change the limit for CSS background-images to be inlined in the CSS, to define what JS-files are moved behind the aggregated one, to change the defer-attribute on the aggregated JS script-tag, ... There are examples for some filters in autoptimize_helper.php_example and in this FAQ. + += How does CDN work? = + +Starting from version 1.7.0, CDN is activated upon entering the CDN blog root directory (e.g. http://cdn.example.net/wordpress/). If that URL is present, it will used for all Autoptimize-generated files (i.e. aggregated CSS and JS), including background-images in the CSS (when not using data-uri's). + +If you want your uploaded images to be on the CDN as well, you can change the upload_url_path in your WordPress configuration (/wp-admin/options.php) to the target CDN upload directory (e.g. http://cdn.example.net/wordpress/wp-content/uploads/). Do take into consideration this only works for images uploaded from that point onwards, not for images that already were uploaded. Thanks to [BeautyPirate for the tip](http://wordpress.org/support/topic/please-don%c2%b4t-remove-cdn?replies=15#post-4720048)! + += Why aren't my fonts put on the CDN as well? = + +Autoptimize supports this, but it is not enabled by default because [non-local fonts might require some extra configuration](http://davidwalsh.name/cdn-fonts). But if you have your cross-origin request policy in order, you can tell Autoptimize to put your fonts on the CDN by hooking into the API, setting `autoptimize_filter_css_fonts_cdn` to `true` this way; + +`add_filter( 'autoptimize_filter_css_fonts_cdn', '__return_true' );` + += I'm using Cloudflare, what should I enter as CDN root directory = + +Nothing, when on Cloudflare your autoptimized CSS/ JS is on the Cloudflare's CDN automatically. + += How can I force the aggregated files to be static CSS or JS instead of PHP? = + +If your webserver is properly configured to handle compression (gzip or deflate) and cache expiry (expires and cache-control with sufficient cacheability), you don't need Autoptimize to handle that for you. In that case you can check the "Save aggregated script/css as static files?"-option, which will force Autoptimize to save the aggregated files as .css and .js-files (meaning no PHP is needed to serve these files). This setting is default as of Autoptimize 1.8. + += How does "exclude from optimizing" work? = + +Both CSS and JS optimization can skip code from being aggregated and minimized by adding "identifiers" to the comma-separated exclusion list. The exact identifier string to use can be determined this way: + +* if you want to exclude a specific file, e.g. wp-content/plugins/funkyplugin/css/style.css, you could simply exclude "funkyplugin/css/style.css" +* if you want to exclude all files of a specific plugin, e.g. wp-content/plugins/funkyplugin/js/*, you can exclude for example "funkyplugin/js/" or "plugins/funkyplugin" +* if you want to exclude inline code, you'll have to find a specific, unique string in that block of code and add that to the exclusion list. Example: to exclude ``, the identifier is "funky_data". + += Troubleshooting Autoptimize = + +Have a look at the troubleshooitng instructions at https://blog.futtta.be/2022/05/05/what-to-do-when-autoptimize-breaks-your-site/ + += I excluded files but they are still being autoptimized? = + +AO minifies excluded JS/ CSS if the filename indicates the file is not minified yet. As of AO 2.5 you can disable this on the "JS, CSS & HTML"-tab under misc. options by unticking "minify excluded files". + += Help, I have a blank page or an internal server error after enabling Autoptimize!! = + +Make sure you're not running other HTML, CSS or JS minification plugins (BWP minify, WP minify, ...) simultaneously with Autoptimize or disable that functionality your page caching plugin (W3 Total Cache, WP Fastest Cache, ...). Try enabling only CSS or only JS optimization to see which one causes the server error and follow the generic troubleshooting steps to find a workaround. + += But I still have blank autoptimized CSS or JS-files! = + +If you are running Apache, the .htaccess file written by Autoptimize can in some cases conflict with the AllowOverrides settings of your Apache configuration (as is the case with the default configuration of some Ubuntu installations), which results in "internal server errors" on the autoptimize CSS- and JS-files. This can be solved by [setting AllowOverrides to All](http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride). + += Can't log in on domain mapped multisites = + +Domain mapped multisites require Autoptimize to be initialized at a different WordPress action, add this line of code to your wp-config.php to make it so to hook into `setup_theme` for example: + +`define( 'AUTOPTIMIZE_SETUP_INITHOOK', 'setup_theme' );` + += I get no error, but my pages are not optimized at all? = + +Autoptimize does a number of checks before actually optimizing. When one of the following is true, your pages won't be optimized: + +* when in the customizer +* if there is no opening `<script>alert('this will not get autoptimized');</script><!--/noptimize-->` + +You can do this in your page/ post content, in widgets and in your theme files (consider creating [a child theme](http://codex.wordpress.org/Child_Themes) to avoid your work being overwritten by theme updates). + += Can I change the directory & filename of cached autoptimize files? = + +Yes, if you want to serve files from e.g. /wp-content/resources/aggregated_12345.css instead of the default /wp-content/cache/autoptimize/autoptimize_12345.css, then add this to wp-config.php: +` +define('AUTOPTIMIZE_CACHE_CHILD_DIR','/resources/'); +define('AUTOPTIMIZE_CACHEFILE_PREFIX','aggregated_'); +` + += Does this work with non-default WP_CONTENT_URL ? = + +No, Autoptimize does not support a non-default WP_CONTENT_URL out-of-the-box, but this can be accomplished with a couple of lines of code hooking into Autoptimize's API. + += Can the generated JS/ CSS be pre-gzipped? = + +Yes, but this is off by default. You can enable this by passing ´true´ to ´autoptimize_filter_cache_create_static_gzip´. You'll obviously still have to configure your webserver to use these files instead of the non-gzipped ones to avoid the overhead of on-the-fly compression. + += What does "remove emojis" do? = + +This new option in Autoptimize 2.3 removes the inline CSS, inline JS and linked JS-file added by WordPress core. As such is can have a small positive impact on your site's performance. + += Is "remove query strings" useful? = + +Although some online performance assessment tools will single out "query strings for static files" as an issue for performance, in general the impact of these is almost non-existant. As such Autoptimize, since version 2.3, allows you to have the query string (or more precisely the "ver"-parameter) removed, but ticking "remove query strings from static resources" will have little or no impact of on your site's performance as measured in (milli-)seconds. + += (How) should I optimize Google Fonts? = + +Google Fonts are typically loaded by a "render blocking" linked CSS-file. If you have a theme and plugins that use Google Fonts, you might end up with multiple such CSS-files. Autoptimize (since version 2.3) now let's you lessen the impact of Google Fonts by either removing them alltogether or by optimizing the way they are loaded. There are two optimization-flavors; the first one is "combine and link", which replaces all requests for Google Fonts into one request, which will still be render-blocking but will allow the fonts to be loaded immediately (meaning you won't see fonts change while the page is loading). The alternative is "combine and load async" which uses JavaScript to load the fonts in a non-render blocking manner but which might cause a "flash of unstyled text". + += Should I use "preconnect" = + +Preconnect is a somewhat advanced feature to instruct browsers ([if they support it](https://caniuse.com/#feat=link-rel-preconnect)) to make a connection to specific domains even if the connection is not immediately needed. This can be used e.g. to lessen the impact of 3rd party resources on HTTPS (as DNS-request, TCP-connection and SSL/TLS negotiation are executed early). Use with care, as preconnecting to too many domains can be counter-productive. + += When can('t) I async JS? = + +JavaScript files that are not autoptimized (because they were excluded or because they are hosted elsewhere) are typically render-blocking. By adding them in the comma-separated "async JS" field, Autoptimize will add the async flag causing the browser to load those files asynchronously (i.e. non-render blocking). This can however break your site (page), e.g. if you async "js/jquery/jquery.min.js" you will very likely get "jQuery is not defined"-errors. Use with care. + += How does image optimization work? = + +When image optimization is on, Autoptimize will look for png, gif, jpeg (.jpg) files in image tags and in your CSS files that are loaded from your own domain and change the src (source) to the ShortPixel CDN for those. Important: this can only work for publicly available images, otherwise the image optimization proxy will not be able to get the image to optimize it, so firewalls or proxies or password protection or even hotlinking-prevention might break image optimization. + += Can I use image optimization for my intranet/ protected site? = + +No; Image optimization depends on the ability of the external image optimization service to fetch the original image from your site, optimize it and save it on the CDN. If you images cannot be downloaded by anonymous visitors (due to firewall/ proxy/ password protection/ hotlinking-protection), image optimization will not work. + += Where can I get more info on image optimization? = + +Have a look at [Shortpixel's FAQ](https://shortpixel.helpscoutdocs.com/category/60-shortpixel-ai-cdn). + += Can I disable AO listening to page cache purges? = + +As from AO 2.4 AO "listens" to page cache purges to clear its own cache. You can disable this behavior with this filter; + +` +add_filter('autoptimize_filter_main_hookpagecachepurge','__return_false');` + += Some of the non-ASCII characters get lost after optimization = + +By default AO uses non multibyte-safe string methods, but if your PHP has the mbstring extension you can enable multibyte-safe string functions with this filter; + +` +add_filter('autoptimize_filter_main_use_mbstring', '__return_true');` + += I can't get Critical CSS working = + +Check [the FAQ on the (legacy) "power-up" here](https://wordpress.org/plugins/autoptimize-criticalcss/#faq), this info will be integrated in this FAQ at a later date. + += Do I still need the Critical CSS power-up when I have Autoptimize 2.7 or higher? = + +No, the Critical CSS power-up is not needed any more, all functionality (and many fixes/ improvements) are now part of Autoptimize. + += What does "enable 404 fallbacks" do? Why would I need this? = + +Autoptimize caches aggregated & optimized CSS/ JS and links to those cached files are stored in the HTML, which will be stored in a page cache (which can be a plugin, can be at host level, can be at 3rd party, in the Google cache, in a browser). If there is HTML in a page cache that links to Autoptimized CSS/ JS that has been removed in the mean time (when the cache was cleared) then the page from cache will not look/ work as expected as the CSS or JS were not found (a 404 error). + +This setting aims to prevent things from breaking by serving "fallback" CSS or JS. The fallback-files are copies of the first Autoptimized CSS & JS files created after the cache was emptied and as such will based on the homepage. This means that the CSS/ JS migth not apply 100% on other pages, but at least the impact of missing CSS/ JS will be lessened (often significantly). + +When the option is enabled, Autoptimize adds an `ErrorDocument 404` to the .htaccess (as used by Apache) and will also hook into WordPress core `template_redirect` to capture 404's handled by Wordpress. When using NGINX something like below should work (I'm not an NGINX specialist, but it does work for me); + +` +location ~* /wp-content/cache/autoptimize/.*\.(js|css)$ { + try_files $uri $uri/ /wp-content/autoptimize_404_handler.php; +}` + +And this a nice alternative approach (provided by fboylovesyou); + +`location ~* /wp-content/cache/autoptimize/.*\.(css)$ { + try_files $uri $uri/ /wp-content/cache/autoptimize/css/autoptimize_fallback.css; +} +location ~* /wp-content/cache/autoptimize/.*\.(js)$ { + try_files $uri $uri/ /wp-content/cache/autoptimize/js/autoptimize_fallback.js; +}` + += What open source software/ projects are used in Autoptimize? = + +The following great open source projects are used in Autoptimize in some form or another: + +* [Mr Clay's Minify](https://github.com/mrclay/minify/) for JS & HTML minification +* [YUI CSS compressor PHP Port](https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port) for CSS minification +* [Lazysizes](https://github.com/aFarkas/lazysizes) for lazyload +* [Persist Admin Notices Dismissal](https://github.com/w3guy/persist-admin-notices-dismissal) for notices in the administration screens +* [Plugin Update Checker](https://github.com/YahnisElsts/plugin-update-checker/) for automated updates from Github for the beta version +* [LoadCSS](https://github.com/filamentgroup/loadCSS) for deferring full CSS +* [jQuery cookie](https://github.com/carhartl/jquery-cookie) to store the "futtta about" category selection in a cookie +* [jQuery tablesorter](https://github.com/christianbach/tablesorter) for the critical CSS rules/ jobs display +* [jQuery unslider](https://github.com/idiot/unslider/) for the mini-slider in the top right corner on the main settings page (repo gone) +* [JavaScript-md5](https://github.com/blueimp/JavaScript-MD5) for critical CSS rules editing +* [Speed Booster Pack](https://wordpress.org/plugins/speed-booster-pack/) for advanced JS deferring +* [Disable Remove Google Fonts](https://wordpress.org/plugins/disable-remove-google-fonts/) for additional Google Font removal + += Where can I get help? = + +You can get help on the [wordpress.org support forum](http://wordpress.org/support/plugin/autoptimize). If you are 100% sure this your problem cannot be solved using Autoptimize configuration and that you in fact discovered a bug in the code, you can [create an issue on GitHub](https://github.com/futtta/autoptimize/issues). If you're looking for premium support, check out our [Autoptimize Pro Support and Web Performance Optimization services](http://autoptimize.com/). + += I want out, how should I remove Autoptimize? = + +* Disable the plugin (this will remove options and cache) +* Remove the plugin +* Clear any cache that might still have pages which reference Autoptimized CSS/JS (e.g. of a page caching plugin such as WP Super Cache) + += How can I help/ contribute? = + +Just [fork Autoptimize on Github](https://github.com/futtta/autoptimize) and code away! + +== Changelog == + += 3.1.15.1 = +* fix for "Uncaught Error: Using $this when not in object context" when preloads are set + += 3.1.15 = +* also add fetchpriority=high to preload set on Extra tab +* improve exit survey display in RTL languages +* security enhancements for 2 authenticated stored XSS issues responsibly reported by stealhcopter and bashu +* multiple minor changes/ improvements/ bugfixes, see the [GitHub commit log](https://github.com/futtta/autoptimize/commits/beta). + += 3.1.14 = +* improve HTML output for {let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;at,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)t-e)).pop(),e}function N(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return nt[s][e]et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ht="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ct(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,ht.call(window,(()=>{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>"start"===t?"left":"end"===t?"right":"center",ft=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,gt=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function pt(t,e,i){const n=e.length;let o=0,a=n;if(t._sorted){const{iScale:r,vScale:l,_parsed:h}=t,c=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,d=r.axis,{min:u,max:f,minDefined:g,maxDefined:p}=r.getUserBounds();if(g){if(o=Math.min(it(h,d,u).lo,i?n:it(e,d,r.getPixelForValue(u)).lo),c){const t=h.slice(0,o+1).reverse().findIndex((t=>!s(t[l.axis])));o-=Math.max(0,t)}o=Z(o,0,n-1)}if(p){let t=Math.max(it(h,r.axis,f,!0).hi+1,i?0:it(e,d,r.getPixelForValue(f),!0).hi+1);if(c){const e=h.slice(t-1).findIndex((t=>!s(t[l.axis])));t+=Math.max(0,e)}a=Z(t,o,n)-o}else a=n-o}return{start:o,count:a}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class xt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var bt=new xt; +/*! + * @kurkle/color v0.3.2 + * https://github.com/kurkle/color#readme + * (c) 2023 Jukka Kurkela + * Released under the MIT License + */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return"r"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Jt{constructor(t){if(t instanceof Jt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Kt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Jt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Zt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Qt(t){return Zt(t)?t:new Jt(t)}function te(t){return Zt(t)?t:new Jt(t).saturate(.5).darken(.1).hexString()}const ee=["x","y","borderWidth","radius","tension"],ie=["color","borderColor","backgroundColor"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):""}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:ie},numbers:{type:"number",properties:ee}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function xe(t,e){return me(t).getPropertyValue(e)}const be=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=be[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const ye=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function ve(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(ye(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const Me=t=>Math.round(10*t)/10;function we(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=t&&ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=Me(Math.min(h,a,l.maxWidth)),c=Me(Math.min(c,r,l.maxHeight)),h&&!c&&(c=Me(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=Me(Math.floor(c*s))),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Me(t.height*s),o=Me(t.width*s);t.height=Me(t.height),t.width=Me(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};fe()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function Pe(t,e){const i=xe(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Ce(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Oe(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;hi.length){for(h=0;h0&&t.stroke()}}function Re(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),s(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;ct[0])){const o=i||t;void 0===s&&(s=ti("_fallback",t));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:s,_getTarget:n,override:i=>je([i,...t],e,o,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>qe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=ti(Ue(o,t),i),void 0!==n)return Xe(t,n)?Ze(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ei(t).includes(e),ownKeys:t=>ei(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function $e(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ye(t,s),setContext:e=>$e(t,e,i,s),override:n=>$e(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>qe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let l=e(o,a||s);r.delete(t),Xe(t,l)&&(l=Ze(n._scopes,n,t,l));return l}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(void 0!==a.index&&s(t))return e[a.index%e.length];if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Ze(s,n,t,o);e.push($e(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Xe(e,h)&&(h=$e(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function Ye(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ue=(t,e)=>t?t+w(e):e,Xe=(t,e)=>o(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function qe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const s=i();return t[e]=s,s}function Ke(t,e,i){return S(t)?t(e,i):t}const Ge=(t,e)=>!0===t?e:"string"==typeof t?M(e,t):void 0;function Je(t,e,i,s,n){for(const o of e){const e=Ge(i,o);if(e){t.add(e);const o=Ke(e._fallback,i,n);if(void 0!==o&&o!==i&&o!==s)return o}else if(!1===e&&void 0!==s&&i!==s)return null}return!1}function Ze(t,e,i,s){const a=e._rootScopes,r=Ke(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Qe(h,l,i,r||i,s);return null!==c&&((void 0===r||r===i||(c=Qe(h,l,r,c,s),null!==c))&&je(Array.from(h),[""],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Qe(t,e,i,s,n){for(;i;)i=Je(t,e,i,s,n);return i}function ti(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function ei(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ii(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;re"x"===t?"y":"x";function ai(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ri(t,e="x"){const i=oi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=ni(t,0);for(a=0;a!t.skip))),"monotone"===e.cubicInterpolationMode)ri(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,fi={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ci(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ci(t)?t:di(t,.075,.3),easeOutElastic:t=>ci(t)?t:ui(t,.075,.3),easeInOutElastic(t){const e=.1125;return ci(t)?t:t<.5?.5*di(2*t,e,.45):.5+.5*ui(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-fi.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*fi.easeInBounce(2*t):.5*fi.easeOutBounce(2*t-1)+.5};function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function pi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function mi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=gi(t,n,i),r=gi(n,o,i),l=gi(o,e,i),h=gi(a,r,i),c=gi(r,l,i);return gi(h,c,i)}const xi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,bi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function _i(t,e){const i=(""+t).match(xi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const yi=t=>+t||0;function vi(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=yi(a(t));return i}function Mi(t){return vi(t,{top:"y",right:"x",bottom:"y",left:"x"})}function wi(t){return vi(t,["topLeft","topRight","bottomLeft","bottomRight"])}function ki(t){const e=Mi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Si(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(bi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:_i(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=De(n),n}function Pi(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;oi&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ci(t,e){return Object.assign(Object.create(t),e)}function Oi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ai(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Ti(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Li(t){return"angle"===t?{between:J,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ei({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Ri(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Li(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Li(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hb||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ei({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Ei({start:_,end:d,loop:u,count:a,style:f})),g}function Ii(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Fi(t,[{start:a,end:r,loop:o}],i,e);return Fi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r!s(t[e.axis])));n.lo-=Math.max(0,a);const r=i.slice(n.hi).findIndex((t=>!s(t[e.axis])));n.hi+=Math.max(0,r)}return n}if(o._sharedOptions){const t=a[0],s="function"==typeof t.getRange&&t.getRange(e);if(s){const t=r(a,e,i-s),n=r(a,e,i+s);return{lo:t.lo,hi:n.hi}}}}return{lo:0,hi:a.length-1}}function $i(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t{t[a]&&t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Ki={evaluateInteractionItems:$i,modes:{index(t,e,i,s){const n=ve(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;tYi(t,ve(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return Xi(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>qi(t,ve(e,t),"x",i.intersect,s),y:(t,e,i,s)=>qi(t,ve(e,t),"y",i.intersect,s)}};const Gi=["left","top","right","bottom"];function Ji(t,e){return t.filter((t=>t.pos===e))}function Zi(t,e){return t.filter((t=>-1===Gi.indexOf(t.pos)&&t.box.axis===e))}function Qi(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function ts(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Gi.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function os(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=Qi(Ji(e,"left"),!0),n=Qi(Ji(e,"right")),o=Qi(Ji(e,"top"),!0),a=Qi(Ji(e,"bottom")),r=Zi(e,"x"),l=Zi(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Ji(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);is(f,ki(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=ts(l.concat(h),d);os(r.fullSize,g,d,p),os(l,g,d,p),os(h,g,d,p)&&os(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),rs(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,rs(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class hs{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class cs extends hs{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ds="$chartjs",us={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},fs=t=>null===t||""===t;const gs=!!Se&&{passive:!0};function ps(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,gs)}function ms(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function xs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.addedNodes,s),e=e&&!ms(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function bs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.removedNodes,s),e=e&&!ms(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const _s=new Map;let ys=0;function vs(){const t=window.devicePixelRatio;t!==ys&&(ys=t,_s.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function Ms(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){_s.size||window.addEventListener("resize",vs),_s.set(t,e)}(t,o),a}function ws(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){_s.delete(t),_s.size||window.removeEventListener("resize",vs)}(t)}function ks(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=us[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t&&t.addEventListener(e,i,gs)}(s,e,n),n}class Ss extends hs{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t[ds]={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",fs(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(fs(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[ds])return!1;const i=e[ds].initial;["height","width"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e[ds],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:xs,detach:bs,resize:Ms}[e]||ks;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:ws,detach:ws,resize:ws}[e]||ps)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return we(t,e,i,s)}isAttached(t){const e=t&&ge(t);return!(!e||!e.isConnected)}}function Ps(t){return!fe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?cs:Ss}var Ds=Object.freeze({__proto__:null,BasePlatform:hs,BasicPlatform:cs,DomPlatform:Ss,_detectPlatform:Ps});const Cs="transparent",Os={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||Cs),n=s.valid&&Qt(e||Cs);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class As{constructor(t,e,i,s){const n=e[i];s=Pi([t.to,s,n,t.from]);const o=Pi([t.from,n,s]);this._active=!0,this._fn=t.fn||Os[t.type||typeof o],this._easing=fi[t.easing]||fi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=Pi([t.to,e,s,t.from]),this._from=Pi([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new As(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(bt.add(this._chart,i),!0):void 0}}function Ls(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Es(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function Vs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Ws(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const Ns=t=>"reset"===t||"none"===t,Hs=(t,e)=>e?t:Object.assign({},t);class js{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Is(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Ws(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=l(i.xAxisID,Bs(t,"x")),o=e.yAxisID=l(i.yAxisID,Bs(t,"y")),a=e.rAxisID=l(i.rAxisID,Bs(t,"r")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Ws(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:s}=e,n="x"===i.axis?"x":"y",o="x"===s.axis?"x":"y",a=Object.keys(t),r=new Array(a.length);let l,h,c;for(l=0,h=a.length;l0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]t&&!e.hidden&&e._stacked&&{keys:Es(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s=0&&tthis.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Hs(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Ts(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Ns(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){Ns(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!Ns(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function Ys(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;io)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)/(r-1)):null;for(Us(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t"top"===e||"left"===e?t[e]+i:t[e]-i,qs=(t,e)=>Math.min(e||t,t);function Ks(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Js(t){return t.drawTicks?t.tickLength:0}function Zs(t,e){if(!t.display)return 0;const i=Si(t.font,e),s=ki(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function Qs(t,e,i){let s=ut(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class tn extends $s{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;rs?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Di(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=Z(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Js(t.grid)-e.padding-Zs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(Z((h.highest.height+6)/o,-1,1)),Math.asin(Z(a/r,-1,1))-Math.asin(Z(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Zs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Js(n)+o):(t.height=this.maxHeight,t.width=Js(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){d(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Ae(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Js(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,x=function(t){return Ae(i,t,p)};let b,_,y,v,M,w,k,S,P,D,C,O;if("top"===a)b=x(this.bottom),w=this.bottom-u,S=b-m,D=x(t.top)+m,O=t.bottom;else if("bottom"===a)b=x(this.top),D=t.top,O=x(t.bottom)-m,w=b+m,S=this.top+u;else if("left"===a)b=x(this.right),M=this.right-u,k=b-m,P=x(t.left)+m,C=t.right;else if("right"===a)b=x(this.left),P=t.left,C=x(t.right)-m,M=b+m,k=this.left+u;else if("x"===e){if("center"===a)b=x((t.top+t.bottom)/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=b+m,S=w+u}else if("y"===e){if("center"===a)b=x((t.left+t.right)/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}M=b-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/A));for(_=0;_0&&(o-=s/2)}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}x.push({label:v,font:P,textOffset:O,options:{rotation:m,color:i,strokeColor:o,strokeWidth:h,textAlign:f,textBaseline:A,translation:[M,w],backdrop:d}})}return x}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-$(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return"left"===e?s?(l=this.right+n,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l+=a)):(l=this.right-o,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l=this.left)):"right"===e?s?(l=this.left+n,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l-=a)):(l=this.left+o,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l=this.right)):r="right",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class sn{constructor(){this.controllers=new en(js,"datasets",!0),this.elements=new en($s,"elements"),this.plugins=new en(Object,"plugins"),this.scales=new en(tn,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function an(t,e){return e||!1!==t?!0===t?{}:t:null}function rn(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function ln(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function hn(t){if("x"===t||"y"===t||"r"===t)return t}function cn(t,...e){if(hn(t))return t;for(const s of e){const e=s.axis||("top"===(i=s.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&hn(t[0].toLowerCase());if(e)return e}var i;throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function dn(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function un(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=ln(t.type,e),a=Object.create(null);return Object.keys(s).forEach((e=>{const r=s[e];if(!o(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const l=cn(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(i.length)return dn(t,"x",i[0])||dn(t,"y",i[0])}return{}}(e,t),ue.scales[r.type]),h=function(t,e){return t===e?"_index_":"_value_"}(l,n),c=i.scales||{};a[e]=b(Object.create(null),[{axis:l},r,c[l],c[h]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||ln(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||e;a[n]=a[n]||Object.create(null),b(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];b(e,[ue.scales[e.type],ue.scale])})),a}function fn(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=un(t,e)}function gn(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const pn=new Map,mn=new Set;function xn(t,e){let i=pn.get(t);return i||(i=e(),pn.set(t,i),mn.add(i)),i}const bn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class _n{constructor(t){this._config=function(t){return(t=t||{}).data=gn(t.data),fn(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=gn(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),fn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return xn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return xn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return xn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return xn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>bn(r,t,e)))),e.forEach((t=>bn(r,s,t))),e.forEach((t=>bn(r,re[n]||{},t))),e.forEach((t=>bn(r,ue,t))),e.forEach((t=>bn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),mn.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=yn(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=Ye(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||vn(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=$e(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:n}=yn(this._resolverCache,t,i);return o(e)?$e(n,e,void 0,s):n}}function yn(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:je(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const vn=t=>o(t)&&Object.getOwnPropertyNames(t).some((e=>S(t[e])));const Mn=["top","bottom","left","right","chartArea"];function wn(t,e){return"top"===t||"bottom"===t||-1===Mn.indexOf(t)&&"x"===e}function kn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function Sn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function Pn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function Dn(t){return fe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Cn={},On=t=>{const e=Dn(t);return Object.values(Cn).filter((t=>t.canvas===e)).pop()};function An(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class Tn{static defaults=ue;static instances=Cn;static overrides=re;static registry=nn;static version="4.5.1";static getChart=On;static register(...t){nn.add(...t),Ln()}static unregister(...t){nn.remove(...t),Ln()}constructor(t,e){const s=this.config=new _n(e),n=Dn(t),o=On(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||Ps(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new on,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],Cn[this.id]=this,r&&l?(bt.listen(this,"complete",Sn),bt.listen(this,"progress",Pn),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return nn}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Te(this.canvas,this.ctx),this}stop(){return bt.stop(this),this}resize(t,e){bt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=cn(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),u(n,(e=>{const n=e.options,o=n.id,a=cn(o,n),r=l(n.type,e.dtype);void 0!==n.position&&wn(n.position,a)===wn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(nn.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{ls.configure(this,t,t.options),ls.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(kn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{ls.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){An(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;tt.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ls.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i={meta:t,index:t.index,cancelable:!0},s=Ni(this,t);!1!==this.notifyPlugins("beforeDatasetDraw",i)&&(s&&Ie(e,s),t.controller.draw(),s&&ze(e),i.cancelable=!1,this.notifyPlugins("afterDatasetDraw",i))}isPointInArea(t){return Re(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Ki.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ci(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),bt.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function Ln(){return u(Tn.instances,(t=>t._plugins.invalidate()))}function En(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Rn{static override(t){Object.assign(Rn.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return En()}parse(){return En()}format(){return En()}add(){return En()}diff(){return En()}startOf(){return En()}endOf(){return En()}}var In={_date:Rn};function zn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function Vn(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i="left",s="right"):(e=t.base"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data,{labels:{pointStyle:i,textAlign:s,color:n,useBorderRadius:o,borderRadius:a}}=t.legend.options;return e.labels.length&&e.datasets.length?e.labels.map(((e,r)=>{const l=t.getDatasetMeta(0).controller.getStyle(r);return{text:e,fillStyle:l.backgroundColor,fontColor:n,hidden:!t.getDataVisibility(r),lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:l.borderWidth,strokeStyle:l.borderColor,textAlign:s,pointStyle:i,borderRadius:o&&(a||l.borderRadius),index:r}})):[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t="value"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;nJ(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>J(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),x=g(C,h,d),b=g(C+E,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),x=(i.width-o)/f,b=(i.height-o)/g,_=Math.max(Math.min(x,b)/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(se.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Un=Object.freeze({__proto__:null,BarController:class extends js{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return Vn(t,e,i,s)}parseArrayData(t,e,i,s){return Vn(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;dt.controller.options.grouped)),o=i.options.stacked,a=[],r=this._cachedMeta.controller.getParsed(e),l=r&&r[i.axis],h=t=>{const e=t._parsed.find((t=>t[i.axis]===l)),n=e&&e[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!h(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){const t=this.chart.scales,e=this.chart.options.indexAxis;return Object.keys(t).filter((i=>t[i].axis===e)).shift()}_getAxis(){const t={},e=this.getFirstScaleIdForIndexAxis();for(const i of this.chart.data.datasets)t[l("x"===this.chart.options.indexAxis?i.xAxisID:i.yAxisID,e)]=!0;return Object.keys(t)}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n=i?1:-1)}(u,e,r)*a,f===r&&(x-=u/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);x=Math.max(Math.min(x,h),o),d=x+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(x))}if(x===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)/2;x+=t,u-=t}return{size:u,base:x,head:d,center:d+u/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1/0);let r,h;const c=this._getAxisCount();if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,d="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||"",value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=x?g:{};if(i=b){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?"active":n)),x||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends $n{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:Yn,RadarController:class extends js{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a0&&this.getParsed(e-1);for(let c=e;c0&&Math.abs(i[f]-_[f])>x,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),b||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}});function Xn(t,e,i,s){const n=vi(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return Z(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:Z(n.innerStart,0,a),innerEnd:Z(n.innerEnd,0,a)}}function qn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Kn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/C)/d)/2,m=l+p+f,x=n-p-f,{outerStart:b,outerEnd:_,innerStart:y,innerEnd:v}=Xn(e,u,d,x-m),M=d-b,w=d-_,k=m+b/M,S=x-_/w,P=u+y,D=u+v,O=m+y/P,A=x-v/D;if(t.beginPath(),o){const e=(k+S)/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=qn(w,S,a,r);t.arc(e.x,e.y,_,S,x+E)}const i=qn(D,x,a,r);if(t.lineTo(i.x,i.y),v>0){const e=qn(D,A,a,r);t.arc(e.x,e.y,v,x+E,A+Math.PI)}const s=(x-v/u+(m+y/u))/2;if(t.arc(a,r,u,x-v/u,s,!0),t.arc(a,r,u,s,m+y/u,!0),y>0){const e=qn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=qn(M,m,a,r);if(t.lineTo(n.x,n.y),b>0){const e=qn(M,k,a,r);t.arc(e.x,e.y,b,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Gn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c,borderDash:d,borderDashOffset:u,borderRadius:f}=l,g="inner"===l.borderAlign;if(!h)return;t.setLineDash(d||[]),t.lineDashOffset=u,g?(t.lineWidth=2*h,t.lineJoin=c||"round"):(t.lineWidth=h,t.lineJoin=c||"bevel");let p=e.endAngle;if(o){Kn(t,e,i,s,p,n);for(let e=0;en?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,p),l.selfJoin&&p-a>=C&&0===f&&"miter"!==c&&function(t,e,i){const{startAngle:s,x:n,y:o,outerRadius:a,innerRadius:r,options:l}=e,{borderWidth:h,borderJoinStyle:c}=l,d=Math.min(h/a,G(s-i));if(t.beginPath(),t.arc(n,o,a-h/2,s+d/2,i-d/2),r>0){const e=Math.min(h/r,G(s-i));t.arc(n,o,r+h/2,i-e/2,s+e/2,!0)}else{const e=Math.min(h/2,a*G(s-i));if("round"===c)t.arc(n,o,e,i-C/2,s+C/2,!0);else if("bevel"===c){const a=2*e*e,r=-a*Math.cos(i+C/2)+n,l=-a*Math.sin(i+C/2)+o,h=a*Math.cos(s+C/2)+n,c=a*Math.sin(s+C/2)+o;t.lineTo(r,l),t.lineTo(h,c)}}t.closePath(),t.moveTo(0,0),t.rect(0,0,t.canvas.width,t.canvas.height),t.clip("evenodd")}(t,e,p),o||(Kn(t,e,i,s,p,n),t.stroke())}function Jn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function Zn(t,e,i){t.lineTo(i.x,i.y)}function Qn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=nr&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function io(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?eo:to}const so="function"==typeof Path2D;function no(t,e,i,s){so&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Jn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=io(e);for(const r of n)Jn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class oo extends $s{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;hi(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=zi(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ii(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?pi:t.tension||"monotone"===t.cubicInterpolationMode?mi:gi}(i);let l,h;for(l=0,h=o.length;l"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps(["x","y"],i),{angle:n,distance:o}=X(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:h,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),u=(this.options.spacing+this.options.borderWidth)/2,f=l(d,r-a),g=J(n,a,r)&&a!==r,p=f>=O||g,m=tt(o,h+u,c+u);return p&&m}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/4,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){Kn(t,e,i,s,l,n);for(let e=0;e("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function mo(t){const e=this.getLabels();return t>=0&&ts=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,x=!s(a),b=!s(r),_=!s(h),y=(m-p)/(d+1);let v,M,w,k,S=B((m-p)/g/f)*f;if(S<1e-14&&!x&&!b)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=B(k*S/g/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(M=Math.floor(p/S)*S,w=Math.ceil(m/S)*S):(M=p,w=m),x&&b&&o&&H((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,M=a,w=r):_?(M=x?a:M,w=b?r:w,k=h-1,S=(w-M)/k):(k=(w-M)/S,k=V(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)/v,w=Math.round(w*v)/v;let D=0;for(x&&(u&&M!==a?(i.push({value:a}),Mr)break;i.push({value:t})}return b&&u&&w!==r?i.length&&V(i[i.length-1].value,r,xo(r,y,t))?i[i.length-1].value=r:i.push({value:r}):b&&w!==r||i.push({value:w}),i}({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&j(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return ne(t,this.chart.options.locale,this.options.ticks.format)}}class _o extends bo{static id="linear";static defaults={ticks:{callback:ae.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?t:0,this.max=a(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=$(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const yo=t=>Math.floor(z(t)),vo=(t,e)=>Math.pow(10,yo(t)+e);function Mo(t){return 1===t/Math.pow(10,yo(t))}function wo(t,e,i){const s=Math.pow(10,i),n=Math.floor(t/s);return Math.ceil(e/s)-n}function ko(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=yo(e);let o=function(t,e){let i=yo(e-t);for(;wo(t,e,i)>10;)i++;for(;wo(t,e,i)<10;)i--;return Math.min(i,yo(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)/a,d=Math.floor((e-h)/l/10)*l*10;let u=Math.floor((c-d)/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)/a);for(;f=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)/a;const g=r(t.max,f);return s.push({value:g,major:Mo(g),significand:u}),s}class So extends tn{static id="logarithmic";static defaults={ticks:{callback:ae.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=bo.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===vo(this.min,0)?vo(this.min,-1):vo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(vo(i,-1)),o(vo(s,1)))),i<=0&&n(vo(s,-1)),s<=0&&o(vo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=ko({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&j(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function Po(t){const e=t.ticks;if(e.display&&t.display){const t=ki(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function Do(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:tn?{start:e-i,end:e}:{start:e,end:e+i}}function Co(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;ue.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function Ao(t,e,i){const s=t.drawingArea,{extra:n,additionalAngle:o,padding:a,size:r}=i,l=t.getPointPosition(e,s+n+a,o),h=Math.round(Y(G(l.angle+E))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,r.h,h),d=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(h),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,r.w,d);return{visible:!0,x:l.x,y:c,textAlign:d,left:u,top:c,right:u+r.w,bottom:c+r.h}}function To(t,e){if(!e)return!0;const{left:i,top:s,right:n,bottom:o}=t;return!(Re({x:i,y:s},e)||Re({x:i,y:o},e)||Re({x:n,y:s},e)||Re({x:n,y:o},e))}function Lo(t,e,i){const{left:n,top:o,right:a,bottom:r}=i,{backdropColor:l}=e;if(!s(l)){const i=wi(e.borderRadius),s=ki(e.backdropPadding);t.fillStyle=l;const h=n-s.left,c=o-s.top,d=a-n+s.width,u=r-o+s.height;Object.values(i).some((t=>0!==t))?(t.beginPath(),He(t,{x:h,y:c,w:d,h:u,radius:i}),t.fill()):t.fillRect(h,c,d,u)}}function Eo(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;ot,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=ki(Po(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Po(this.options))}generateTickLabels(t){bo.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Co(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const o=s.setContext(t.getPointLabelContext(n));Lo(i,o,e);const a=Si(o.font),{x:r,y:l,textAlign:h}=e;Ne(i,t._pointLabels[n],r,l+a.lineHeight/2,a,{color:o.color,textAlign:h,textBaseline:"middle"})}}(this,o),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e||0===e&&this.min<0){r=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),a=s.setContext(i),l=n.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash||[]),o.lineDashOffset=n.dashOffset,o.beginPath(),Eo(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,a,r,o,l)}})),i.display){for(t.save(),a=o-1;a>=0;a--){const s=i.setContext(this.getPointLabelContext(a)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,r=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&this.min>=0&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=Si(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=ki(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ne(t,s.label,0,-n,l,{color:r.color,strokeColor:r.textStrokeColor,strokeWidth:r.textStrokeWidth})})),t.restore()}drawTitle(){}}const Io={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},zo=Object.keys(Io);function Fo(t,e){return t-e}function Vo(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),a(l)||(l="string"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l="week"!==o||!N(r)&&!0!==r?i.startOf(l,o):i.startOf(l,"isoWeek",r)),+l)}function Bo(t,e,i,s){const n=zo.length;for(let o=zo.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function No(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class Ho extends tn{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),s=this._adapter=new In._date(t.adapters.date);s.init(e),b(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Vo(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?Bo(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=zo.length-1;o>=zo.indexOf(i);o--){const i=zo[o];if(Io[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return zo[i?zo.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=zo.indexOf(t)+1,i=zo.length;e+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=Z(s,0,o),n=Z(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||Bo(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r="week"===o&&n.isoWeekday,h=N(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",r)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}var $o=Object.freeze({__proto__:null,CategoryScale:class extends tn{static id="category";static defaults={ticks:{callback:mo}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:Z(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:po(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return mo.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:_o,LogarithmicScale:So,RadialLinearScale:Ro,TimeScale:Ho,TimeSeriesScale:class extends Ho{static id="timeseries";static defaults=Ho.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=jo(e,this.min),this._tableRange=jo(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;ot-e))}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(jo(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return jo(this._table,i*this._tableRange+this._minPos,!0)}}});const Yo=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Uo=Yo.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Xo(t){return Yo[t%Yo.length]}function qo(t){return Uo[t%Uo.length]}function Ko(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof $n?e=function(t,e){return t.backgroundColor=t.data.map((()=>Xo(e++))),e}(i,e):n instanceof Yn?e=function(t,e){return t.backgroundColor=t.data.map((()=>qo(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Xo(e),t.backgroundColor=qo(e),++e}(i,e))}}function Go(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var Jo={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n,a=Go(s)||(r=n)&&(r.borderColor||r.backgroundColor)||o&&Go(o)||"rgba(0,0,0,0.1)"!==ue.borderColor||"rgba(0,0,0,0.1)"!==ue.backgroundColor;var r;if(!i.forceOverride&&a)return;const l=Ko(t);s.forEach(l)}};function Zo(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Qo(t){t.data.datasets.forEach((t=>{Zo(t)}))}var ta={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Qo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===Pi([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=Z(it(e,o.axis,a).lo,0,i-1)),s=h?Z(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void Zo(e);let f;switch(s(a)&&(e._data=h,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case"min-max":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const x=[],b=e+i-1,_=t[e].x,y=t[b].x-_;for(o=e;og&&(g=l,d=o),p=(m*p+a.x)/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&x.push({...t[e],x:p}),s!==u&&s!==i&&x.push({...t[s],x:p})}o>0&&i!==u&&x.push(t[i]),x.push(a),h=e,m=0,f=g=l,c=d=u=o}}return x}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Qo(t)}};function ea(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function ia(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function sa(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function na(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=ia(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new oo({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function oa(t){return t&&!1!==t.fill}function aa(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function ra(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function la(t,e,i){const s=[];for(let n=0;n=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&ua(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;oa(i)&&ua(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;oa(s)&&"beforeDatasetDraw"===i.drawTime&&ua(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const _a=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class ya extends $s{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=d(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=Si(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=_a(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;"string"!=typeof e.text&&(s=va(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Oi(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Ie(t,this),this._draw(),ze(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Oi(t.rtl,this.left,this.width),h=Si(o.font),{padding:c}=o,d=h.size,u=d/2;let f;this.drawTitle(),s.textAlign=r.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=_a(o,d),x=this.isHorizontal(),b=this._computeTitleHeight();f=x?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+b,line:0}:{x:this.left+c,y:ft(n,this.top+b+c,this.bottom-e[0].height),line:0},Ai(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),x?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+b+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,"butt"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g/2);Ee(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)/2,0),a=r.leftForLtr(t,g),l=wi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?He(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,x?S+k:this.right,t.rtl),function(t,e,i){Ne(s,i.text,t,e+m/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),x)f.x+=k+c;else if("string"!=typeof y.text){const t=h.lineHeight;f.y+=va(y,t)+c}else f.y+=_})),Ti(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=Si(e.font),s=ki(e.padding);if(!e.display)return;const n=Oi(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ne(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=Si(t.font),i=ki(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=ki(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class wa extends $s{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=ki(i.padding);const o=s*Si(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=Si(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ne(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:"middle",translation:[n,o]})}}var ka={id:"title",_element:wa,start(t,e,i){!function(t,e){const i=new wa({ctx:t.ctx,options:e,chart:t});ls.configure(t,i,e),ls.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ls.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ls.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Sa=new WeakMap;var Pa={id:"subtitle",start(t,e,i){const s=new wa({ctx:t.ctx,options:i,chart:t});ls.configure(t,s,i),ls.addBox(t,s),Sa.set(t,s)},stop(t){ls.removeBox(t,Sa.get(t)),Sa.delete(t)},beforeUpdate(t,e,i){const s=Sa.get(t);ls.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Da={average(t){if(!t.length)return!1;let e,i,s=new Set,n=0,o=0;for(e=0,i=t.length;et+e))/s.size,y:n/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i-1?t.split("\n"):t}function Aa(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Ta(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=Si(e.bodyFont),h=Si(e.titleFont),c=Si(e.footerFont),d=o.length,f=n.length,g=s.length,p=ki(e.padding);let m=p.height,x=0,b=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(b-g)*l.lineHeight+(b-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){x=Math.max(x,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),x+=p.width,{width:x,height:m}}function La(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Ea(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||La(t,e,i,s),yAlign:s}}function Ra(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:Z(g,0,s.width-e.width),y:Z(p,0,s.height-e.height)}}function Ia(t,e,i){const s=ki(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function za(t){return Ca([],Oa(t))}function Fa(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const Va={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex{const e={before:[],lines:[],after:[]},n=Fa(i,t);Ca(e.before,Oa(Ba(n,"beforeLabel",this,t))),Ca(e.lines,Ba(n,"label",this,t)),Ca(e.after,Oa(Ba(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return za(Ba(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Ba(i,"beforeFooter",this,t),n=Ba(i,"footer",this,t),o=Ba(i,"afterFooter",this,t);let a=[];return a=Ca(a,Oa(s)),a=Ca(a,Oa(n)),a=Ca(a,Oa(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=Fa(t.callbacks,e);s.push(Ba(i,"labelColor",this,e)),n.push(Ba(i,"labelPointStyle",this,e)),o.push(Ba(i,"labelTextColor",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Da[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Ta(this,i),a=Object.assign({},t,e),r=Ea(this.chart,i,a),l=Ra(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=wi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Oi(i.rtl,this.x,this.width);for(t.x=Ia(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=Si(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,He(t,{x:e,y:g,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),He(t,{x:i,y:g+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,h,l),t.strokeRect(e,g,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,g+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=Si(i.bodyFont);let d=c.lineHeight,f=0;const g=Oi(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d/2),t.y+=d+n},m=g.textAlign(o);let x,b,_,y,v,M,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Ia(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,M=s.length;y0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Da[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Ta(this,t),a=Object.assign({},i,this._size),r=Ea(e,t,a),l=Ra(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=ki(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ai(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Ti(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Da[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var Na={id:"tooltip",_element:Wa,positioners:Da,afterInit(t,e,i){i&&(t.tooltip=new Wa({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Va},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};return Tn.register(Un,$o,go,t),Tn.helpers={...Hi},Tn._adapters=In,Tn.Animation=As,Tn.Animations=Ts,Tn.animator=bt,Tn.controllers=nn.controllers.items,Tn.DatasetController=js,Tn.Element=$s,Tn.elements=go,Tn.Interaction=Ki,Tn.layouts=ls,Tn.platforms=Ds,Tn.Scale=tn,Tn.Ticks=ae,Object.assign(Tn,Un,$o,go,t,Ds),Tn.Chart=Tn,"undefined"!=typeof window&&(window.Chart=Tn),Tn})); +//# sourceMappingURL=chart.umd.min.js.map diff --git a/wp-content/plugins/cookie-notice/assets/microtip/microtip.css b/wp-content/plugins/cookie-notice/assets/microtip/microtip.css new file mode 100644 index 0000000..3a253c4 --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/microtip/microtip.css @@ -0,0 +1,266 @@ +/* ------------------------------------------------------------------- + Microtip + + Modern, lightweight css-only tooltips + Just 1kb minified and gzipped + + @author Ghosh + @package Microtip + +---------------------------------------------------------------------- + 1. Base Styles + 2. Direction Modifiers + 3. Position Modifiers +--------------------------------------------------------------------*/ + + +/* ------------------------------------------------ + [1] Base Styles +-------------------------------------------------*/ + +[aria-label][role~="tooltip"] { + position: relative; +} + +[aria-label][role~="tooltip"]::before, +[aria-label][role~="tooltip"]::after { + transform: translate3d(0, 0, 0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + will-change: transform; + opacity: 0; + pointer-events: none; + transition: all var(--microtip-transition-duration, .18s) var(--microtip-transition-easing, ease-in-out) var(--microtip-transition-delay, 0s); + position: absolute; + box-sizing: border-box; + z-index: 10; + transform-origin: top; +} + +[aria-label][role~="tooltip"]::before { + background-size: 100% auto !important; + content: ""; +} + +[aria-label][role~="tooltip"]::after { + background: rgba(17, 17, 17, .9); + border-radius: 4px; + color: #ffffff; + content: attr(aria-label); + font-size: var(--microtip-font-size, 13px); + font-weight: var(--microtip-font-weight, normal); + text-transform: var(--microtip-text-transform, none); + padding: .5em 1em; + white-space: nowrap; + box-sizing: content-box; +} + +[aria-label][role~="tooltip"]:hover::before, +[aria-label][role~="tooltip"]:hover::after, +[aria-label][role~="tooltip"]:focus::before, +[aria-label][role~="tooltip"]:focus::after { + opacity: 1; + pointer-events: auto; +} + + + +/* ------------------------------------------------ + [2] Position Modifiers +-------------------------------------------------*/ + +[role~="tooltip"][data-microtip-position|="top"]::before { + background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2236px%22%20height%3D%2212px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%280%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E") no-repeat; + height: 6px; + width: 18px; + margin-bottom: 5px; +} + +[role~="tooltip"][data-microtip-position|="top"]::after { + margin-bottom: 11px; +} + +[role~="tooltip"][data-microtip-position|="top"]::before { + transform: translate3d(-50%, 0, 0); + bottom: 100%; + left: 50%; +} + +[role~="tooltip"][data-microtip-position|="top"]:hover::before { + transform: translate3d(-50%, -5px, 0); +} + +[role~="tooltip"][data-microtip-position|="top"]::after { + transform: translate3d(-50%, 0, 0); + bottom: 100%; + left: 50%; +} + +[role~="tooltip"][data-microtip-position="top"]:hover::after { + transform: translate3d(-50%, -5px, 0); +} + +/* ------------------------------------------------ + [2.1] Top Left +-------------------------------------------------*/ +[role~="tooltip"][data-microtip-position="top-left"]::after { + transform: translate3d(calc(-100% + 16px), 0, 0); + bottom: 100%; +} + +[role~="tooltip"][data-microtip-position="top-left"]:hover::after { + transform: translate3d(calc(-100% + 16px), -5px, 0); +} + + +/* ------------------------------------------------ + [2.2] Top Right +-------------------------------------------------*/ +[role~="tooltip"][data-microtip-position="top-right"]::after { + transform: translate3d(calc(0% + -16px), 0, 0); + bottom: 100%; +} + +[role~="tooltip"][data-microtip-position="top-right"]:hover::after { + transform: translate3d(calc(0% + -16px), -5px, 0); +} + + +/* ------------------------------------------------ + [2.3] Bottom +-------------------------------------------------*/ +[role~="tooltip"][data-microtip-position|="bottom"]::before { + background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2236px%22%20height%3D%2212px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%28180%2018%206%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E") no-repeat; + height: 6px; + width: 18px; + margin-top: 5px; + margin-bottom: 0; +} + +[role~="tooltip"][data-microtip-position|="bottom"]::after { + margin-top: 11px; +} + +[role~="tooltip"][data-microtip-position|="bottom"]::before { + transform: translate3d(-50%, -10px, 0); + bottom: auto; + left: 50%; + top: 100%; +} + +[role~="tooltip"][data-microtip-position|="bottom"]:hover::before { + transform: translate3d(-50%, 0, 0); +} + +[role~="tooltip"][data-microtip-position|="bottom"]::after { + transform: translate3d(-50%, -10px, 0); + top: 100%; + left: 50%; +} + +[role~="tooltip"][data-microtip-position="bottom"]:hover::after { + transform: translate3d(-50%, 0, 0); +} + + +/* ------------------------------------------------ + [2.4] Bottom Left +-------------------------------------------------*/ +[role~="tooltip"][data-microtip-position="bottom-left"]::after { + transform: translate3d(calc(-100% + 16px), -10px, 0); + top: 100%; +} + +[role~="tooltip"][data-microtip-position="bottom-left"]:hover::after { + transform: translate3d(calc(-100% + 16px), 0, 0); +} + + +/* ------------------------------------------------ + [2.5] Bottom Right +-------------------------------------------------*/ +[role~="tooltip"][data-microtip-position="bottom-right"]::after { + transform: translate3d(calc(0% + -16px), -10px, 0); + top: 100%; +} + +[role~="tooltip"][data-microtip-position="bottom-right"]:hover::after { + transform: translate3d(calc(0% + -16px), 0, 0); +} + + +/* ------------------------------------------------ + [2.6] Left +-------------------------------------------------*/ +[role~="tooltip"][data-microtip-position="left"]::before, +[role~="tooltip"][data-microtip-position="left"]::after { + bottom: auto; + left: auto; + right: 100%; + top: 50%; + transform: translate3d(10px, -50%, 0); +} + +[role~="tooltip"][data-microtip-position="left"]::before { + background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212px%22%20height%3D%2236px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%28-90%2018%2018%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E") no-repeat; + height: 18px; + width: 6px; + margin-right: 5px; + margin-bottom: 0; +} + +[role~="tooltip"][data-microtip-position="left"]::after { + margin-right: 11px; +} + +[role~="tooltip"][data-microtip-position="left"]:hover::before, +[role~="tooltip"][data-microtip-position="left"]:hover::after { + transform: translate3d(0, -50%, 0); +} + + +/* ------------------------------------------------ + [2.7] Right +-------------------------------------------------*/ +[role~="tooltip"][data-microtip-position="right"]::before, +[role~="tooltip"][data-microtip-position="right"]::after { + bottom: auto; + left: 100%; + top: 50%; + transform: translate3d(-10px, -50%, 0); +} + +[role~="tooltip"][data-microtip-position="right"]::before { + background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212px%22%20height%3D%2236px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%2890%206%206%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E") no-repeat; + height: 18px; + width: 6px; + margin-bottom: 0; + margin-left: 5px; +} + +[role~="tooltip"][data-microtip-position="right"]::after { + margin-left: 11px; +} + +[role~="tooltip"][data-microtip-position="right"]:hover::before, +[role~="tooltip"][data-microtip-position="right"]:hover::after { + transform: translate3d(0, -50%, 0); +} + +/* ------------------------------------------------ + [3] Size +-------------------------------------------------*/ +[role~="tooltip"][data-microtip-size="small"]::after { + white-space: initial; + width: 80px; +} + +[role~="tooltip"][data-microtip-size="medium"]::after { + white-space: initial; + width: 150px; +} + +[role~="tooltip"][data-microtip-size="large"]::after { + white-space: initial; + width: 260px; +} diff --git a/wp-content/plugins/cookie-notice/assets/microtip/microtip.min.css b/wp-content/plugins/cookie-notice/assets/microtip/microtip.min.css new file mode 100644 index 0000000..d8c5d40 --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/microtip/microtip.min.css @@ -0,0 +1,15 @@ +/* ------------------------------------------------------------------- + Microtip + + Modern, lightweight css-only tooltips + Just 1kb minified and gzipped + + @author Ghosh + @package Microtip + +---------------------------------------------------------------------- + 1. Base Styles + 2. Direction Modifiers + 3. Position Modifiers +--------------------------------------------------------------------*/ +[aria-label][role~="tooltip"]{position:relative}[aria-label][role~="tooltip"]::before,[aria-label][role~="tooltip"]::after{transform:translate3d(0,0,0);-webkit-backface-visibility:hidden;backface-visibility:hidden;will-change:transform;opacity:0;pointer-events:none;transition:all var(--microtip-transition-duration,.18s) var(--microtip-transition-easing,ease-in-out) var(--microtip-transition-delay,0s);position:absolute;box-sizing:border-box;z-index:10;transform-origin:top}[aria-label][role~="tooltip"]::before{background-size:100% auto!important;content:""}[aria-label][role~="tooltip"]::after{background:rgba(17,17,17,.9);border-radius:4px;color:#fff;content:attr(aria-label);font-size:var(--microtip-font-size,13px);font-weight:var(--microtip-font-weight,normal);text-transform:var(--microtip-text-transform,none);padding:.5em 1em;white-space:nowrap;box-sizing:content-box}[aria-label][role~="tooltip"]:hover::before,[aria-label][role~="tooltip"]:hover::after,[aria-label][role~="tooltip"]:focus::before,[aria-label][role~="tooltip"]:focus::after{opacity:1;pointer-events:auto}[role~="tooltip"][data-microtip-position|="top"]::before{background:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2236px%22%20height%3D%2212px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%280%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E) no-repeat;height:6px;width:18px;margin-bottom:5px}[role~="tooltip"][data-microtip-position|="top"]::after{margin-bottom:11px}[role~="tooltip"][data-microtip-position|="top"]::before{transform:translate3d(-50%,0,0);bottom:100%;left:50%}[role~="tooltip"][data-microtip-position|="top"]:hover::before{transform:translate3d(-50%,-5px,0)}[role~="tooltip"][data-microtip-position|="top"]::after{transform:translate3d(-50%,0,0);bottom:100%;left:50%}[role~="tooltip"][data-microtip-position="top"]:hover::after{transform:translate3d(-50%,-5px,0)}[role~="tooltip"][data-microtip-position="top-left"]::after{transform:translate3d(calc(-100% + 16px),0,0);bottom:100%}[role~="tooltip"][data-microtip-position="top-left"]:hover::after{transform:translate3d(calc(-100% + 16px),-5px,0)}[role~="tooltip"][data-microtip-position="top-right"]::after{transform:translate3d(calc(0% + -16px),0,0);bottom:100%}[role~="tooltip"][data-microtip-position="top-right"]:hover::after{transform:translate3d(calc(0% + -16px),-5px,0)}[role~="tooltip"][data-microtip-position|="bottom"]::before{background:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2236px%22%20height%3D%2212px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%28180%2018%206%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E) no-repeat;height:6px;width:18px;margin-top:5px;margin-bottom:0}[role~="tooltip"][data-microtip-position|="bottom"]::after{margin-top:11px}[role~="tooltip"][data-microtip-position|="bottom"]::before{transform:translate3d(-50%,-10px,0);bottom:auto;left:50%;top:100%}[role~="tooltip"][data-microtip-position|="bottom"]:hover::before{transform:translate3d(-50%,0,0)}[role~="tooltip"][data-microtip-position|="bottom"]::after{transform:translate3d(-50%,-10px,0);top:100%;left:50%}[role~="tooltip"][data-microtip-position="bottom"]:hover::after{transform:translate3d(-50%,0,0)}[role~="tooltip"][data-microtip-position="bottom-left"]::after{transform:translate3d(calc(-100% + 16px),-10px,0);top:100%}[role~="tooltip"][data-microtip-position="bottom-left"]:hover::after{transform:translate3d(calc(-100% + 16px),0,0)}[role~="tooltip"][data-microtip-position="bottom-right"]::after{transform:translate3d(calc(0% + -16px),-10px,0);top:100%}[role~="tooltip"][data-microtip-position="bottom-right"]:hover::after{transform:translate3d(calc(0% + -16px),0,0)}[role~="tooltip"][data-microtip-position="left"]::before,[role~="tooltip"][data-microtip-position="left"]::after{bottom:auto;left:auto;right:100%;top:50%;transform:translate3d(10px,-50%,0)}[role~="tooltip"][data-microtip-position="left"]::before{background:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212px%22%20height%3D%2236px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%28-90%2018%2018%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E) no-repeat;height:18px;width:6px;margin-right:5px;margin-bottom:0}[role~="tooltip"][data-microtip-position="left"]::after{margin-right:11px}[role~="tooltip"][data-microtip-position="left"]:hover::before,[role~="tooltip"][data-microtip-position="left"]:hover::after{transform:translate3d(0,-50%,0)}[role~="tooltip"][data-microtip-position="right"]::before,[role~="tooltip"][data-microtip-position="right"]::after{bottom:auto;left:100%;top:50%;transform:translate3d(-10px,-50%,0)}[role~="tooltip"][data-microtip-position="right"]::before{background:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212px%22%20height%3D%2236px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%2890%206%206%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E) no-repeat;height:18px;width:6px;margin-bottom:0;margin-left:5px}[role~="tooltip"][data-microtip-position="right"]::after{margin-left:11px}[role~="tooltip"][data-microtip-position="right"]:hover::before,[role~="tooltip"][data-microtip-position="right"]:hover::after{transform:translate3d(0,-50%,0)}[role~="tooltip"][data-microtip-size="small"]::after{white-space:initial;width:80px}[role~="tooltip"][data-microtip-size="medium"]::after{white-space:initial;width:150px}[role~="tooltip"][data-microtip-size="large"]::after{white-space:initial;width:260px} \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/assets/modaal/css/modaal.css b/wp-content/plugins/cookie-notice/assets/modaal/css/modaal.css new file mode 100644 index 0000000..644bc33 --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/modaal/css/modaal.css @@ -0,0 +1,782 @@ +/*! + Modaal - accessible modals - v0.4.4 + by Humaan, for all humans. + http://humaan.com + */ + +.modaal-noscroll { + overflow: hidden; +} + +.modaal-accessible-hide { + position: absolute !important; + clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ + clip: rect(1px, 1px, 1px, 1px); + padding: 0 !important; + border: 0 !important; + height: 1px !important; + width: 1px !important; + overflow: hidden; +} + +.modaal-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 999; + opacity: 0; +} + +.modaal-wrapper { + display: block; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + overflow: auto; + opacity: 1; + box-sizing: border-box; + -webkit-overflow-scrolling: touch; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} + +.modaal-wrapper * { + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-backface-visibility: hidden; +} + +.modaal-wrapper .modaal-close { + border: none; + background: transparent; + padding: 0; + -webkit-appearance: none; +} + +.modaal-wrapper.modaal-start_none { + display: none; + opacity: 1; +} + +.modaal-wrapper.modaal-start_fade { + opacity: 0; +} + +.modaal-wrapper *[tabindex="0"] { + outline: none !important; +} + +.modaal-wrapper.modaal-fullscreen { + overflow: hidden; +} + +.modaal-outer-wrapper { + display: table; + position: relative; + width: 100%; + height: 100%; +} + +.modaal-fullscreen .modaal-outer-wrapper { + display: block; +} + +.modaal-inner-wrapper { + display: table-cell; + width: 100%; + height: 100%; + position: relative; + vertical-align: middle; + text-align: center; + padding: 80px 25px; +} + +.modaal-fullscreen .modaal-inner-wrapper { + padding: 0; + display: block; + vertical-align: top; +} + +.modaal-container { + position: relative; + display: inline-block; + width: 100%; + margin: auto; + text-align: left; + color: #000; + max-width: 1000px; + border-radius: 0px; + background: #fff; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); + cursor: auto; +} + +.modaal-container.is_loading { + height: 100px; + width: 100px; + overflow: hidden; +} + +.modaal-fullscreen .modaal-container { + max-width: none; + height: 100%; + overflow: auto; +} + +.modaal-close { + position: fixed; + right: 20px; + top: 20px; + color: #fff; + cursor: pointer; + opacity: 1; + width: 50px; + height: 50px; + background: rgba(0, 0, 0, 0); + border-radius: 100%; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.modaal-close:focus, +.modaal-close:hover { + outline: none; + background: #fff; +} + +.modaal-close:focus:before, +.modaal-close:focus:after, +.modaal-close:hover:before, +.modaal-close:hover:after { + background: #b93d0c; +} + +.modaal-close span { + position: absolute !important; + clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ + clip: rect(1px, 1px, 1px, 1px); + padding: 0 !important; + border: 0 !important; + height: 1px !important; + width: 1px !important; + overflow: hidden; +} + +.modaal-close:before, +.modaal-close:after { + display: block; + content: " "; + position: absolute; + top: 14px; + left: 23px; + width: 4px; + height: 22px; + border-radius: 4px; + background: #fff; + -webkit-transition: background 0.2s ease-in-out; + transition: background 0.2s ease-in-out; +} + +.modaal-close:before { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); +} + +.modaal-close:after { + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} + +.modaal-fullscreen .modaal-close { + background: #afb7bc; + right: 10px; + top: 10px; +} + +.modaal-content-container { + padding: 30px; +} + +.modaal-confirm-wrap { + padding: 30px 0 0; + text-align: center; + font-size: 0; +} + +.modaal-confirm-btn { + font-size: 14px; + display: inline-block; + margin: 0 10px; + vertical-align: middle; + cursor: pointer; + border: none; + background: transparent; +} + +.modaal-confirm-btn.modaal-ok { + padding: 10px 15px; + color: #fff; + background: #555; + border-radius: 3px; + -webkit-transition: background 0.2s ease-in-out; + transition: background 0.2s ease-in-out; +} + +.modaal-confirm-btn.modaal-ok:hover { + background: #2f2f2f; +} + +.modaal-confirm-btn.modaal-cancel { + text-decoration: underline; +} + +.modaal-confirm-btn.modaal-cancel:hover { + text-decoration: none; + color: #2f2f2f; +} + +.modaal-instagram .modaal-container { + width: auto; + background: transparent; + box-shadow: none !important; +} + +.modaal-instagram .modaal-content-container { + padding: 0; + background: transparent; +} + +.modaal-instagram .modaal-content-container > blockquote { + width: 1px !important; + height: 1px !important; + opacity: 0 !important; +} + +.modaal-instagram iframe { + opacity: 0; + margin: -6px !important; + border-radius: 0 !important; + width: 1000px !important; + max-width: 800px !important; + box-shadow: none !important; + -webkit-animation: instaReveal 1s linear forwards; + animation: instaReveal 1s linear forwards; +} + +.modaal-image .modaal-inner-wrapper { + padding-left: 140px; + padding-right: 140px; +} + +.modaal-image .modaal-container { + width: auto; + max-width: 100%; +} + +.modaal-gallery-wrap { + position: relative; + color: #fff; +} + +.modaal-gallery-item { + display: none; +} + +.modaal-gallery-item img { + display: block; +} + +.modaal-gallery-item.is_active { + display: block; +} + +.modaal-gallery-label { + position: absolute; + left: 0; + width: 100%; + margin: 20px 0 0; + font-size: 18px; + text-align: center; + color: #fff; +} + +.modaal-gallery-label:focus { + outline: none; +} + +.modaal-gallery-control { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + opacity: 1; + cursor: pointer; + color: #fff; + width: 50px; + height: 50px; + background: rgba(0, 0, 0, 0); + border: none; + border-radius: 100%; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.modaal-gallery-control.is_hidden { + opacity: 0; + cursor: default; +} + +.modaal-gallery-control:focus, +.modaal-gallery-control:hover { + outline: none; + background: #fff; +} + +.modaal-gallery-control:focus:before, +.modaal-gallery-control:focus:after, +.modaal-gallery-control:hover:before, +.modaal-gallery-control:hover:after { + background: #afb7bc; +} + +.modaal-gallery-control span { + position: absolute !important; + clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ + clip: rect(1px, 1px, 1px, 1px); + padding: 0 !important; + border: 0 !important; + height: 1px !important; + width: 1px !important; + overflow: hidden; +} + +.modaal-gallery-control:before, +.modaal-gallery-control:after { + display: block; + content: " "; + position: absolute; + top: 16px; + left: 25px; + width: 4px; + height: 18px; + border-radius: 4px; + background: #fff; + -webkit-transition: background 0.2s ease-in-out; + transition: background 0.2s ease-in-out; +} + +.modaal-gallery-control:before { + margin: -5px 0 0; + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); +} + +.modaal-gallery-control:after { + margin: 5px 0 0; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} + +.modaal-gallery-next-inner { + left: 100%; + margin-left: 40px; +} + +.modaal-gallery-next-outer { + right: 45px; +} + +.modaal-gallery-prev:before, +.modaal-gallery-prev:after { + left: 22px; +} + +.modaal-gallery-prev:before { + margin: 5px 0 0; + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); +} + +.modaal-gallery-prev:after { + margin: -5px 0 0; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} + +.modaal-gallery-prev-inner { + right: 100%; + margin-right: 40px; +} + +.modaal-gallery-prev-outer { + left: 45px; +} + +.modaal-video-wrap { + margin: auto 50px; + position: relative; +} + +.modaal-video-container { + position: relative; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; + max-width: 100%; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + background: #000; + max-width: 1300px; + margin-left: auto; + margin-right: auto; +} + +.modaal-video-container iframe, +.modaal-video-container object, +.modaal-video-container embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.modaal-iframe .modaal-content { + width: 100%; + height: 100%; +} + +.modaal-iframe-elem { + width: 100%; + height: 100%; + display: block; +} + +.modaal-loading-spinner { + background: none; + position: absolute; + width: 200px; + height: 200px; + top: 50%; + left: 50%; + margin: -100px 0 0 -100px; + -webkit-transform: scale(0.25); + -ms-transform: scale(0.25); + transform: scale(0.25); +} + +.modaal-loading-spinner > div { + width: 24px; + height: 24px; + margin-left: 4px; + margin-top: 4px; + position: absolute; +} + +.modaal-loading-spinner > div > div { + width: 100%; + height: 100%; + border-radius: 15px; + background: #fff; +} + +.modaal-loading-spinner > div:nth-of-type(1) > div { + -webkit-animation: modaal-loading-spinner 1s linear infinite; + animation: modaal-loading-spinner 1s linear infinite; + -webkit-animation-delay: 0s; + animation-delay: 0s; +} + +.modaal-loading-spinner > div:nth-of-type(2) > div, +.modaal-loading-spinner > div:nth-of-type(3) > div { + -ms-animation: modaal-loading-spinner 1s linear infinite; + -moz-animation: modaal-loading-spinner 1s linear infinite; + -webkit-animation: modaal-loading-spinner 1s linear infinite; + -o-animation: modaal-loading-spinner 1s linear infinite; +} + +.modaal-loading-spinner > div:nth-of-type(1) { + -ms-transform: translate(84px, 84px) rotate(45deg) translate(70px, 0); + -webkit-transform: translate(84px, 84px) rotate(45deg) translate(70px, 0); + transform: translate(84px, 84px) rotate(45deg) translate(70px, 0); +} + +.modaal-loading-spinner > div:nth-of-type(2) > div { + -webkit-animation: modaal-loading-spinner 1s linear infinite; + animation: modaal-loading-spinner 1s linear infinite; + -webkit-animation-delay: .12s; + animation-delay: .12s; +} + +.modaal-loading-spinner > div:nth-of-type(2) { + -ms-transform: translate(84px, 84px) rotate(90deg) translate(70px, 0); + -webkit-transform: translate(84px, 84px) rotate(90deg) translate(70px, 0); + transform: translate(84px, 84px) rotate(90deg) translate(70px, 0); +} + +.modaal-loading-spinner > div:nth-of-type(3) > div { + -webkit-animation: modaal-loading-spinner 1s linear infinite; + animation: modaal-loading-spinner 1s linear infinite; + -webkit-animation-delay: .25s; + animation-delay: .25s; +} + +.modaal-loading-spinner > div:nth-of-type(4) > div, +.modaal-loading-spinner > div:nth-of-type(5) > div { + -ms-animation: modaal-loading-spinner 1s linear infinite; + -moz-animation: modaal-loading-spinner 1s linear infinite; + -webkit-animation: modaal-loading-spinner 1s linear infinite; + -o-animation: modaal-loading-spinner 1s linear infinite; +} + +.modaal-loading-spinner > div:nth-of-type(3) { + -ms-transform: translate(84px, 84px) rotate(135deg) translate(70px, 0); + -webkit-transform: translate(84px, 84px) rotate(135deg) translate(70px, 0); + transform: translate(84px, 84px) rotate(135deg) translate(70px, 0); +} + +.modaal-loading-spinner > div:nth-of-type(4) > div { + -webkit-animation: modaal-loading-spinner 1s linear infinite; + animation: modaal-loading-spinner 1s linear infinite; + -webkit-animation-delay: .37s; + animation-delay: .37s; +} + +.modaal-loading-spinner > div:nth-of-type(4) { + -ms-transform: translate(84px, 84px) rotate(180deg) translate(70px, 0); + -webkit-transform: translate(84px, 84px) rotate(180deg) translate(70px, 0); + transform: translate(84px, 84px) rotate(180deg) translate(70px, 0); +} + +.modaal-loading-spinner > div:nth-of-type(5) > div { + -webkit-animation: modaal-loading-spinner 1s linear infinite; + animation: modaal-loading-spinner 1s linear infinite; + -webkit-animation-delay: .5s; + animation-delay: .5s; +} + +.modaal-loading-spinner > div:nth-of-type(6) > div, +.modaal-loading-spinner > div:nth-of-type(7) > div { + -ms-animation: modaal-loading-spinner 1s linear infinite; + -moz-animation: modaal-loading-spinner 1s linear infinite; + -webkit-animation: modaal-loading-spinner 1s linear infinite; + -o-animation: modaal-loading-spinner 1s linear infinite; +} + +.modaal-loading-spinner > div:nth-of-type(5) { + -ms-transform: translate(84px, 84px) rotate(225deg) translate(70px, 0); + -webkit-transform: translate(84px, 84px) rotate(225deg) translate(70px, 0); + transform: translate(84px, 84px) rotate(225deg) translate(70px, 0); +} + +.modaal-loading-spinner > div:nth-of-type(6) > div { + -webkit-animation: modaal-loading-spinner 1s linear infinite; + animation: modaal-loading-spinner 1s linear infinite; + -webkit-animation-delay: .62s; + animation-delay: .62s; +} + +.modaal-loading-spinner > div:nth-of-type(6) { + -ms-transform: translate(84px, 84px) rotate(270deg) translate(70px, 0); + -webkit-transform: translate(84px, 84px) rotate(270deg) translate(70px, 0); + transform: translate(84px, 84px) rotate(270deg) translate(70px, 0); +} + +.modaal-loading-spinner > div:nth-of-type(7) > div { + -webkit-animation: modaal-loading-spinner 1s linear infinite; + animation: modaal-loading-spinner 1s linear infinite; + -webkit-animation-delay: .75s; + animation-delay: .75s; +} + +.modaal-loading-spinner > div:nth-of-type(7) { + -ms-transform: translate(84px, 84px) rotate(315deg) translate(70px, 0); + -webkit-transform: translate(84px, 84px) rotate(315deg) translate(70px, 0); + transform: translate(84px, 84px) rotate(315deg) translate(70px, 0); +} + +.modaal-loading-spinner > div:nth-of-type(8) > div { + -webkit-animation: modaal-loading-spinner 1s linear infinite; + animation: modaal-loading-spinner 1s linear infinite; + -webkit-animation-delay: .87s; + animation-delay: .87s; +} + +.modaal-loading-spinner > div:nth-of-type(8) { + -ms-transform: translate(84px, 84px) rotate(360deg) translate(70px, 0); + -webkit-transform: translate(84px, 84px) rotate(360deg) translate(70px, 0); + transform: translate(84px, 84px) rotate(360deg) translate(70px, 0); +} + +@media only screen and (min-width: 1400px) { + +.modaal-video-container { + padding-bottom: 0; + height: 731px; +} + +} + +@media only screen and (max-width: 1140px) { + +.modaal-image .modaal-inner-wrapper { + padding-left: 25px; + padding-right: 25px; +} + +.modaal-gallery-control { + top: auto; + bottom: 20px; + -webkit-transform: none; + -ms-transform: none; + transform: none; + background: rgba(0, 0, 0, 0.7); +} + +.modaal-gallery-control:before, +.modaal-gallery-control:after { + background: #fff; +} + +.modaal-gallery-next { + left: auto; + right: 20px; +} + +.modaal-gallery-prev { + left: 20px; + right: auto; +} + +} + +@media screen and (max-width: 900px) { + +.modaal-instagram iframe { + width: 500px !important; +} + +} + +@media only screen and (max-width: 600px) { + +.modaal-instagram iframe { + width: 280px !important; +} + +} + +@media screen and (max-height: 1100px) { + +.modaal-instagram iframe { + width: 700px !important; +} + +} + +@media screen and (max-height: 1000px) { + +.modaal-inner-wrapper { + padding-top: 60px; + padding-bottom: 60px; +} + +.modaal-instagram iframe { + width: 600px !important; +} + +} + +@media screen and (max-height: 900px) { + +.modaal-instagram iframe { + width: 500px !important; +} + +.modaal-video-container { + max-width: 900px; + max-height: 510px; +} + +} + +@media only screen and (max-height: 820px) { + +.modaal-gallery-label { + display: none; +} + +} + +@keyframes instaReveal { + +0% { + opacity: 0; +} + +100% { + opacity: 1; +} + +} + +@-webkit-keyframes instaReveal { + +0% { + opacity: 0; +} + +100% { + opacity: 1; +} + +} + +@-webkit-keyframes modaal-loading-spinner { + +0% { + opacity: 1; + -ms-transform: scale(1.5); + -webkit-transform: scale(1.5); + transform: scale(1.5); +} + +100% { + opacity: .1; + -ms-transform: scale(1); + -webkit-transform: scale(1); + transform: scale(1); +} + +} + +@keyframes modaal-loading-spinner { + +0% { + opacity: 1; + -ms-transform: scale(1.5); + -webkit-transform: scale(1.5); + transform: scale(1.5); +} + +100% { + opacity: .1; + -ms-transform: scale(1); + -webkit-transform: scale(1); + transform: scale(1); +} + +} + diff --git a/wp-content/plugins/cookie-notice/assets/modaal/css/modaal.min.css b/wp-content/plugins/cookie-notice/assets/modaal/css/modaal.min.css new file mode 100644 index 0000000..714a667 --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/modaal/css/modaal.min.css @@ -0,0 +1,5 @@ +/*! + Modaal - accessible modals - v0.4.4 + by Humaan, for all humans. + http://humaan.com + */.modaal-noscroll{overflow:hidden}.modaal-accessible-hide{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden}.modaal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;z-index:999;opacity:0}.modaal-wrapper{display:block;position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;overflow:auto;opacity:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.modaal-wrapper *{box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden}.modaal-wrapper .modaal-close{border:none;background:0 0;padding:0;-webkit-appearance:none}.modaal-wrapper.modaal-start_none{display:none;opacity:1}.modaal-wrapper.modaal-start_fade{opacity:0}.modaal-wrapper [tabindex="0"]{outline:0!important}.modaal-wrapper.modaal-fullscreen{overflow:hidden}.modaal-outer-wrapper{display:table;position:relative;width:100%;height:100%}.modaal-fullscreen .modaal-outer-wrapper{display:block}.modaal-inner-wrapper{display:table-cell;width:100%;height:100%;position:relative;vertical-align:middle;text-align:center;padding:80px 25px}.modaal-fullscreen .modaal-inner-wrapper{padding:0;display:block;vertical-align:top}.modaal-container{position:relative;display:inline-block;width:100%;margin:auto;text-align:left;color:#000;max-width:1000px;border-radius:0;background:#fff;box-shadow:0 4px 15px rgba(0,0,0,.2);cursor:auto}.modaal-container.is_loading{height:100px;width:100px;overflow:hidden}.modaal-fullscreen .modaal-container{max-width:none;height:100%;overflow:auto}.modaal-close{position:fixed;right:20px;top:20px;color:#fff;cursor:pointer;opacity:1;width:50px;height:50px;background:rgba(0,0,0,0);border-radius:100%;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.modaal-close:focus,.modaal-close:hover{outline:0;background:#fff}.modaal-close:focus:after,.modaal-close:focus:before,.modaal-close:hover:after,.modaal-close:hover:before{background:#b93d0c}.modaal-close span{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden}.modaal-close:after,.modaal-close:before{display:block;content:" ";position:absolute;top:14px;left:23px;width:4px;height:22px;border-radius:4px;background:#fff;-webkit-transition:background .2s ease-in-out;transition:background .2s ease-in-out}.modaal-close:before{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.modaal-close:after{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.modaal-fullscreen .modaal-close{background:#afb7bc;right:10px;top:10px}.modaal-content-container{padding:30px}.modaal-confirm-wrap{padding:30px 0 0;text-align:center;font-size:0}.modaal-confirm-btn{font-size:14px;display:inline-block;margin:0 10px;vertical-align:middle;cursor:pointer;border:none;background:0 0}.modaal-confirm-btn.modaal-ok{padding:10px 15px;color:#fff;background:#555;border-radius:3px;-webkit-transition:background .2s ease-in-out;transition:background .2s ease-in-out}.modaal-confirm-btn.modaal-ok:hover{background:#2f2f2f}.modaal-confirm-btn.modaal-cancel{text-decoration:underline}.modaal-confirm-btn.modaal-cancel:hover{text-decoration:none;color:#2f2f2f}.modaal-instagram .modaal-container{width:auto;background:0 0;box-shadow:none!important}.modaal-instagram .modaal-content-container{padding:0;background:0 0}.modaal-instagram .modaal-content-container>blockquote{width:1px!important;height:1px!important;opacity:0!important}.modaal-instagram iframe{opacity:0;margin:-6px!important;border-radius:0!important;width:1000px!important;max-width:800px!important;box-shadow:none!important;-webkit-animation:instaReveal 1s linear forwards;animation:instaReveal 1s linear forwards}.modaal-image .modaal-inner-wrapper{padding-left:140px;padding-right:140px}.modaal-image .modaal-container{width:auto;max-width:100%}.modaal-gallery-wrap{position:relative;color:#fff}.modaal-gallery-item{display:none}.modaal-gallery-item img{display:block}.modaal-gallery-item.is_active{display:block}.modaal-gallery-label{position:absolute;left:0;width:100%;margin:20px 0 0;font-size:18px;text-align:center;color:#fff}.modaal-gallery-label:focus{outline:0}.modaal-gallery-control{position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);opacity:1;cursor:pointer;color:#fff;width:50px;height:50px;background:rgba(0,0,0,0);border:none;border-radius:100%;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.modaal-gallery-control.is_hidden{opacity:0;cursor:default}.modaal-gallery-control:focus,.modaal-gallery-control:hover{outline:0;background:#fff}.modaal-gallery-control:focus:after,.modaal-gallery-control:focus:before,.modaal-gallery-control:hover:after,.modaal-gallery-control:hover:before{background:#afb7bc}.modaal-gallery-control span{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden}.modaal-gallery-control:after,.modaal-gallery-control:before{display:block;content:" ";position:absolute;top:16px;left:25px;width:4px;height:18px;border-radius:4px;background:#fff;-webkit-transition:background .2s ease-in-out;transition:background .2s ease-in-out}.modaal-gallery-control:before{margin:-5px 0 0;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.modaal-gallery-control:after{margin:5px 0 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.modaal-gallery-next-inner{left:100%;margin-left:40px}.modaal-gallery-next-outer{right:45px}.modaal-gallery-prev:after,.modaal-gallery-prev:before{left:22px}.modaal-gallery-prev:before{margin:5px 0 0;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.modaal-gallery-prev:after{margin:-5px 0 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.modaal-gallery-prev-inner{right:100%;margin-right:40px}.modaal-gallery-prev-outer{left:45px}.modaal-video-wrap{margin:auto 50px;position:relative}.modaal-video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;box-shadow:0 0 10px rgba(0,0,0,.3);background:#000;max-width:1300px;margin-left:auto;margin-right:auto}.modaal-video-container embed,.modaal-video-container iframe,.modaal-video-container object{position:absolute;top:0;left:0;width:100%;height:100%}.modaal-iframe .modaal-content{width:100%;height:100%}.modaal-iframe-elem{width:100%;height:100%;display:block}.modaal-loading-spinner{background:0 0;position:absolute;width:200px;height:200px;top:50%;left:50%;margin:-100px 0 0 -100px;-webkit-transform:scale(.25);-ms-transform:scale(.25);transform:scale(.25)}.modaal-loading-spinner>div{width:24px;height:24px;margin-left:4px;margin-top:4px;position:absolute}.modaal-loading-spinner>div>div{width:100%;height:100%;border-radius:15px;background:#fff}.modaal-loading-spinner>div:nth-of-type(1)>div{-webkit-animation:modaal-loading-spinner 1s linear infinite;animation:modaal-loading-spinner 1s linear infinite;-webkit-animation-delay:0s;animation-delay:0s}.modaal-loading-spinner>div:nth-of-type(2)>div,.modaal-loading-spinner>div:nth-of-type(3)>div{-ms-animation:modaal-loading-spinner 1s linear infinite;-moz-animation:modaal-loading-spinner 1s linear infinite;-webkit-animation:modaal-loading-spinner 1s linear infinite;-o-animation:modaal-loading-spinner 1s linear infinite}.modaal-loading-spinner>div:nth-of-type(1){-ms-transform:translate(84px,84px) rotate(45deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(45deg) translate(70px,0);transform:translate(84px,84px) rotate(45deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(2)>div{-webkit-animation:modaal-loading-spinner 1s linear infinite;animation:modaal-loading-spinner 1s linear infinite;-webkit-animation-delay:.12s;animation-delay:.12s}.modaal-loading-spinner>div:nth-of-type(2){-ms-transform:translate(84px,84px) rotate(90deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(90deg) translate(70px,0);transform:translate(84px,84px) rotate(90deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(3)>div{-webkit-animation:modaal-loading-spinner 1s linear infinite;animation:modaal-loading-spinner 1s linear infinite;-webkit-animation-delay:.25s;animation-delay:.25s}.modaal-loading-spinner>div:nth-of-type(4)>div,.modaal-loading-spinner>div:nth-of-type(5)>div{-ms-animation:modaal-loading-spinner 1s linear infinite;-moz-animation:modaal-loading-spinner 1s linear infinite;-webkit-animation:modaal-loading-spinner 1s linear infinite;-o-animation:modaal-loading-spinner 1s linear infinite}.modaal-loading-spinner>div:nth-of-type(3){-ms-transform:translate(84px,84px) rotate(135deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(135deg) translate(70px,0);transform:translate(84px,84px) rotate(135deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(4)>div{-webkit-animation:modaal-loading-spinner 1s linear infinite;animation:modaal-loading-spinner 1s linear infinite;-webkit-animation-delay:.37s;animation-delay:.37s}.modaal-loading-spinner>div:nth-of-type(4){-ms-transform:translate(84px,84px) rotate(180deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(180deg) translate(70px,0);transform:translate(84px,84px) rotate(180deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(5)>div{-webkit-animation:modaal-loading-spinner 1s linear infinite;animation:modaal-loading-spinner 1s linear infinite;-webkit-animation-delay:.5s;animation-delay:.5s}.modaal-loading-spinner>div:nth-of-type(6)>div,.modaal-loading-spinner>div:nth-of-type(7)>div{-ms-animation:modaal-loading-spinner 1s linear infinite;-moz-animation:modaal-loading-spinner 1s linear infinite;-webkit-animation:modaal-loading-spinner 1s linear infinite;-o-animation:modaal-loading-spinner 1s linear infinite}.modaal-loading-spinner>div:nth-of-type(5){-ms-transform:translate(84px,84px) rotate(225deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(225deg) translate(70px,0);transform:translate(84px,84px) rotate(225deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(6)>div{-webkit-animation:modaal-loading-spinner 1s linear infinite;animation:modaal-loading-spinner 1s linear infinite;-webkit-animation-delay:.62s;animation-delay:.62s}.modaal-loading-spinner>div:nth-of-type(6){-ms-transform:translate(84px,84px) rotate(270deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(270deg) translate(70px,0);transform:translate(84px,84px) rotate(270deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(7)>div{-webkit-animation:modaal-loading-spinner 1s linear infinite;animation:modaal-loading-spinner 1s linear infinite;-webkit-animation-delay:.75s;animation-delay:.75s}.modaal-loading-spinner>div:nth-of-type(7){-ms-transform:translate(84px,84px) rotate(315deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(315deg) translate(70px,0);transform:translate(84px,84px) rotate(315deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(8)>div{-webkit-animation:modaal-loading-spinner 1s linear infinite;animation:modaal-loading-spinner 1s linear infinite;-webkit-animation-delay:.87s;animation-delay:.87s}.modaal-loading-spinner>div:nth-of-type(8){-ms-transform:translate(84px,84px) rotate(360deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(360deg) translate(70px,0);transform:translate(84px,84px) rotate(360deg) translate(70px,0)}@media only screen and (min-width:1400px){.modaal-video-container{padding-bottom:0;height:731px}}@media only screen and (max-width:1140px){.modaal-image .modaal-inner-wrapper{padding-left:25px;padding-right:25px}.modaal-gallery-control{top:auto;bottom:20px;-webkit-transform:none;-ms-transform:none;transform:none;background:rgba(0,0,0,.7)}.modaal-gallery-control:after,.modaal-gallery-control:before{background:#fff}.modaal-gallery-next{left:auto;right:20px}.modaal-gallery-prev{left:20px;right:auto}}@media screen and (max-width:900px){.modaal-instagram iframe{width:500px!important}}@media only screen and (max-width:600px){.modaal-instagram iframe{width:280px!important}}@media screen and (max-height:1100px){.modaal-instagram iframe{width:700px!important}}@media screen and (max-height:1000px){.modaal-inner-wrapper{padding-top:60px;padding-bottom:60px}.modaal-instagram iframe{width:600px!important}}@media screen and (max-height:900px){.modaal-instagram iframe{width:500px!important}.modaal-video-container{max-width:900px;max-height:510px}}@media only screen and (max-height:820px){.modaal-gallery-label{display:none}}@keyframes instaReveal{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes instaReveal{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes modaal-loading-spinner{0%{opacity:1;-ms-transform:scale(1.5);-webkit-transform:scale(1.5);transform:scale(1.5)}100%{opacity:.1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}}@keyframes modaal-loading-spinner{0%{opacity:1;-ms-transform:scale(1.5);-webkit-transform:scale(1.5);transform:scale(1.5)}100%{opacity:.1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}} \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/assets/modaal/css/modaal.scss b/wp-content/plugins/cookie-notice/assets/modaal/css/modaal.scss new file mode 100644 index 0000000..ddef4bd --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/modaal/css/modaal.scss @@ -0,0 +1,555 @@ +/*! + Modaal - accessible modals - v0.4.4 + by Humaan, for all humans. + http://humaan.com + */ + +// Modaal Variables +// -------------------------------------------------------- + +$modaal-overlay-color: rgba(0,0,0, 0.8); + +$modaal-radius: 0px; //5px +$modaal-main-bg: #fff; +$modaal-main-text: #000; +$modaal-max-width: 1000px; +$modaal-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); +$modaal-padding: 30px; +$modaal-hover-color: rgba(0,0,0, 0.7); +$modaal-close-hover-color: #b93d0c; + +$modaal-light: #fff; +$modaal-primary: #555; +$modaal-grey: #afb7bc; + + +// Modaal Mixins +// -------------------------------------------------------- +@mixin modaal-transition($type, $speed: .2s, $ease: ease-in-out) { + transition: $type #{$speed} #{$ease}; +} +@mixin modaal-hidetext() { + position: absolute !important; + clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ + clip: rect(1px, 1px, 1px, 1px); + padding:0 !important; + border:0 !important; + height: 1px !important; + width: 1px !important; + overflow: hidden; +} + + +// Modaal Structure +// -------------------------------------------------------- +.modaal-noscroll { + overflow: hidden; +} +.modaal-accessible-hide { + @include modaal-hidetext; +} + +.modaal-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 999; + opacity: 0; +} +.modaal-wrapper { + display: block; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + overflow: auto; + opacity: 1; + box-sizing: border-box; + -webkit-overflow-scrolling: touch; + @include modaal-transition(all, 0.3s); + & * { + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-backface-visibility: hidden; + } + .modaal-close { + border: none; + background: transparent; + padding: 0; + -webkit-appearance: none; + } + + &.modaal-start_none { + display: none; + opacity: 1; + } + &.modaal-start_fade { + opacity: 0; + } + + & *[tabindex="0"] { + outline: none !important; + } + + // is fullscreen + &.modaal-fullscreen { + overflow: hidden; + } +} +.modaal-outer-wrapper { + display: table; + position: relative; + width: 100%; + height: 100%; + .modaal-fullscreen & { + display: block; + } +} +.modaal-inner-wrapper { + display: table-cell; + width: 100%; + height: 100%; + position: relative; + vertical-align: middle; + text-align: center; + padding: 80px 25px; + + // when is fullscreen + .modaal-fullscreen & { + padding: 0; + display: block; + vertical-align: top; + } +} +.modaal-container { + position: relative; + display: inline-block; + width: 100%; + margin: auto; + text-align: left; + color: $modaal-main-text; + max-width: $modaal-max-width; + border-radius: $modaal-radius; + background: $modaal-main-bg; + box-shadow: $modaal-shadow; + cursor: auto; + + // while loading + &.is_loading { + height: 100px; + width: 100px; + overflow: hidden; + } + // when is fullscreen + .modaal-fullscreen & { + max-width: none; + height: 100%; + overflow: auto; + } +} + +.modaal-close { + position: fixed; + right: 20px; + top: 20px; + color: $modaal-light; + cursor: pointer; + opacity: 1; + width: 50px; + height: 50px; + background: rgba(0,0,0, 0); + border-radius: 100%; + @include modaal-transition(all); + &:focus, + &:hover { + outline: none; + background: #fff; + &:before, + &:after { background: $modaal-close-hover-color; } + } + span { + @include modaal-hidetext; + } + &:before, + &:after { + display: block; + content: " "; + position: absolute; + top: 14px; + left: 23px; + width: 4px; + height: 22px; + border-radius: 4px; + background: #fff; + @include modaal-transition(background); + } + &:before { + transform: rotate(-45deg); + } + &:after { + transform: rotate(45deg); + } + .modaal-fullscreen & { + background: $modaal-grey; + right: 10px; + top: 10px; + } +} + +.modaal-content-container { + padding: $modaal-padding; +} + + +// Confirm Modaal +// -------------------------------------------------------- + +.modaal-confirm-wrap { + padding: 30px 0 0; + text-align: center; + font-size: 0; +} +.modaal-confirm-btn { + font-size: 14px; + display: inline-block; + margin: 0 10px; + vertical-align: middle; + cursor: pointer; + border: none; + background: transparent; + + // Ok Button + &.modaal-ok { + padding: 10px 15px; + color: $modaal-light; + background: $modaal-primary; + border-radius: 3px; + @include modaal-transition(background); + &:hover { + background: darken($modaal-primary, 15%); + } + } + &.modaal-cancel { + text-decoration: underline; + &:hover { + text-decoration: none; + color: darken($modaal-primary, 15%); + } + } +} + + + +@keyframes instaReveal { + 0% { opacity: 0; } + 100% { opacity: 1; } +} +@-o-keyframes instaReveal { + 0% { opacity: 0; } + 100% { opacity: 1; } +} +@-moz-keyframes instaReveal { + 0% { opacity: 0; } + 100% { opacity: 1; } +} +@-webkit-keyframes instaReveal { + 0% { opacity: 0; } + 100% { opacity: 1; } +} +@-ms-keyframes instaReveal { + 0% { opacity: 0; } + 100% { opacity: 1; } +} + +// Instagram Photo +// -------------------------------------------------------- + +.modaal-instagram { + .modaal-container { + width: auto; + background: transparent; + box-shadow: none !important; + } + .modaal-content-container { + padding: 0; + background: transparent; + } + .modaal-content-container > blockquote { + width: 1px !important; + height: 1px !important; + opacity: 0 !important; + } + iframe { + opacity: 0; + margin: -6px !important; + border-radius: 0 !important; + width: 1000px !important; + max-width: 800px !important; + box-shadow: none !important; + + animation: instaReveal 1s linear forwards; + } +} + + + +// Gallery +// -------------------------------------------------------- +.modaal-image { + .modaal-inner-wrapper { + padding-left: 140px; + padding-right: 140px; + } + .modaal-container { + width: auto; + max-width: 100%; + } +} + +.modaal-gallery-wrap { + position: relative; + color: $modaal-light; +} +.modaal-gallery-item { + display: none; + img { + display: block; + //width: 100%; + } + &.is_active { + display: block; + } +} +.modaal-gallery-label { + position: absolute; + left: 0; + width: 100%; + margin: 20px 0 0; + font-size: 18px; + text-align: center; + color: #fff; + &:focus { + outline: none; + } +} +.modaal-gallery-control { + position: absolute; + top: 50%; + transform: translateY(-50%); + opacity: 1; + cursor: pointer; + color: $modaal-light; + width: 50px; + height: 50px; + background: rgba(0,0,0, 0); + border: none; + border-radius: 100%; + @include modaal-transition(all); + &.is_hidden { + opacity: 0; + cursor: default; + } + &:focus, + &:hover { + outline: none; + background: #fff; + &:before, + &:after { + background: $modaal-grey; + } + } + span { + @include modaal-hidetext; + } + + &:before, + &:after { + display: block; + content: " "; + position: absolute; + top: 16px; + left: 25px; + width: 4px; + height: 18px; + border-radius: 4px; + background: #fff; + @include modaal-transition(background); + } + &:before { + margin: -5px 0 0; + transform: rotate(-45deg); + } + &:after { + margin: 5px 0 0; + transform: rotate(45deg); + } +} +.modaal-gallery-next { + &-inner { + left: 100%; + margin-left: 40px; + } + &-outer { + right: 45px; + } +} +.modaal-gallery-prev { + &:before, + &:after { left: 22px; } + &:before { + margin: 5px 0 0; + transform: rotate(-45deg); + } + &:after { + margin: -5px 0 0; + transform: rotate(45deg); + } + + &-inner { + right: 100%; + margin-right: 40px; + } + &-outer { + left: 45px; + } +} + + +// Video +// -------------------------------------------------------- +.modaal-video-wrap { + margin: auto 50px; + position: relative; +} + +.modaal-video-container { + position: relative; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; + max-width: 100%; + box-shadow: 0 0 10px rgba(0,0,0, 0.3); + background: #000; + max-width: 1300px; + margin-left: auto; + margin-right: auto; + iframe, + object, + embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + } +} + +// Modaal iFrame +// -------------------------------------------------------- +.modaal-iframe .modaal-content { + width: 100%; + height: 100%; +} +.modaal-iframe-elem { + width: 100%; + height: 100%; + display: block; +} + + +// Responsive styles +// -------------------------------------------------------- +@media only screen and (min-width: 1400px) { + .modaal-video-container { + padding-bottom: 0; + height: 731px; + } +} + +@media only screen and (max-width: 1140px) { + .modaal-image { + .modaal-inner-wrapper { + padding-left: 25px; + padding-right: 25px; + } + } + .modaal-gallery-control { + top: auto; + bottom: 20px; + transform: none; + background: rgba(0,0,0, 0.7);; + &:before, + &:after { + background: #fff; + } + } + .modaal-gallery-next { + left: auto; + right: 20px; + } + .modaal-gallery-prev { + left: 20px; + right: auto; + } +} + +@media screen and (max-width: 900px) { + .modaal-instagram iframe { + width: 500px !important; + } +} +@media screen and (max-height: 1100px) { + .modaal-instagram iframe { + width: 700px !important; + } +} +@media screen and (max-height: 1000px) { + .modaal-inner-wrapper { + padding-top: 60px; + padding-bottom: 60px; + } + .modaal-instagram iframe { + width: 600px !important; + } +} +@media screen and (max-height: 900px) { + .modaal-instagram iframe { + width: 500px !important; + } + .modaal-video-container { + max-width: 900px; + max-height: 510px; + } +} + +@media only screen and (max-width: 600px) { + .modaal-instagram iframe { + width: 280px !important; + } +} +@media only screen and (max-height: 820px) { + .modaal-gallery-label { + display: none; + } +} + + + +// CSS loading gif +// -------------------------------------------------------- +.modaal-loading-spinner { + background: none; + position: absolute; + width: 200px; + height: 200px; + top: 50%; + left: 50%; + margin: -100px 0 0 -100px; + transform: scale(0.25); +} +@-ms-keyframes modaal-loading-spinner{0%{opacity:1;-ms-transform:scale(1.5);-moz-transform:scale(1.5);-webkit-transform:scale(1.5);-o-transform:scale(1.5);transform:scale(1.5)}100%{opacity:.1;-ms-transform:scale(1);-moz-transform:scale(1);-webkit-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-moz-keyframes modaal-loading-spinner{0%{opacity:1;-ms-transform:scale(1.5);-moz-transform:scale(1.5);-webkit-transform:scale(1.5);-o-transform:scale(1.5);transform:scale(1.5)}100%{opacity:.1;-ms-transform:scale(1);-moz-transform:scale(1);-webkit-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-webkit-keyframes modaal-loading-spinner{0%{opacity:1;-ms-transform:scale(1.5);-moz-transform:scale(1.5);-webkit-transform:scale(1.5);-o-transform:scale(1.5);transform:scale(1.5)}100%{opacity:.1;-ms-transform:scale(1);-moz-transform:scale(1);-webkit-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-o-keyframes modaal-loading-spinner{0%{opacity:1;-ms-transform:scale(1.5);-moz-transform:scale(1.5);-webkit-transform:scale(1.5);-o-transform:scale(1.5);transform:scale(1.5)}100%{opacity:.1;-ms-transform:scale(1);-moz-transform:scale(1);-webkit-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@keyframes modaal-loading-spinner{0%{opacity:1;-ms-transform:scale(1.5);-moz-transform:scale(1.5);-webkit-transform:scale(1.5);-o-transform:scale(1.5);transform:scale(1.5)}100%{opacity:.1;-ms-transform:scale(1);-moz-transform:scale(1);-webkit-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.modaal-loading-spinner>div{width:24px;height:24px;margin-left:4px;margin-top:4px;position:absolute}.modaal-loading-spinner>div>div{width:100%;height:100%;border-radius:15px;background:#fff}.modaal-loading-spinner>div:nth-of-type(1)>div{-ms-animation:modaal-loading-spinner 1s linear infinite;-moz-animation:modaal-loading-spinner 1s linear infinite;-webkit-animation:modaal-loading-spinner 1s linear infinite;-o-animation:modaal-loading-spinner 1s linear infinite;animation:modaal-loading-spinner 1s linear infinite;-ms-animation-delay:0s;-moz-animation-delay:0s;-webkit-animation-delay:0s;-o-animation-delay:0s;animation-delay:0s}.modaal-loading-spinner>div:nth-of-type(2)>div,.modaal-loading-spinner>div:nth-of-type(3)>div{-ms-animation:modaal-loading-spinner 1s linear infinite;-moz-animation:modaal-loading-spinner 1s linear infinite;-webkit-animation:modaal-loading-spinner 1s linear infinite;-o-animation:modaal-loading-spinner 1s linear infinite}.modaal-loading-spinner>div:nth-of-type(1){-ms-transform:translate(84px,84px) rotate(45deg) translate(70px,0);-moz-transform:translate(84px,84px) rotate(45deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(45deg) translate(70px,0);-o-transform:translate(84px,84px) rotate(45deg) translate(70px,0);transform:translate(84px,84px) rotate(45deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(2)>div{animation:modaal-loading-spinner 1s linear infinite;-ms-animation-delay:.12s;-moz-animation-delay:.12s;-webkit-animation-delay:.12s;-o-animation-delay:.12s;animation-delay:.12s}.modaal-loading-spinner>div:nth-of-type(2){-ms-transform:translate(84px,84px) rotate(90deg) translate(70px,0);-moz-transform:translate(84px,84px) rotate(90deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(90deg) translate(70px,0);-o-transform:translate(84px,84px) rotate(90deg) translate(70px,0);transform:translate(84px,84px) rotate(90deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(3)>div{animation:modaal-loading-spinner 1s linear infinite;-ms-animation-delay:.25s;-moz-animation-delay:.25s;-webkit-animation-delay:.25s;-o-animation-delay:.25s;animation-delay:.25s}.modaal-loading-spinner>div:nth-of-type(4)>div,.modaal-loading-spinner>div:nth-of-type(5)>div{-ms-animation:modaal-loading-spinner 1s linear infinite;-moz-animation:modaal-loading-spinner 1s linear infinite;-webkit-animation:modaal-loading-spinner 1s linear infinite;-o-animation:modaal-loading-spinner 1s linear infinite}.modaal-loading-spinner>div:nth-of-type(3){-ms-transform:translate(84px,84px) rotate(135deg) translate(70px,0);-moz-transform:translate(84px,84px) rotate(135deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(135deg) translate(70px,0);-o-transform:translate(84px,84px) rotate(135deg) translate(70px,0);transform:translate(84px,84px) rotate(135deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(4)>div{animation:modaal-loading-spinner 1s linear infinite;-ms-animation-delay:.37s;-moz-animation-delay:.37s;-webkit-animation-delay:.37s;-o-animation-delay:.37s;animation-delay:.37s}.modaal-loading-spinner>div:nth-of-type(4){-ms-transform:translate(84px,84px) rotate(180deg) translate(70px,0);-moz-transform:translate(84px,84px) rotate(180deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(180deg) translate(70px,0);-o-transform:translate(84px,84px) rotate(180deg) translate(70px,0);transform:translate(84px,84px) rotate(180deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(5)>div{animation:modaal-loading-spinner 1s linear infinite;-ms-animation-delay:.5s;-moz-animation-delay:.5s;-webkit-animation-delay:.5s;-o-animation-delay:.5s;animation-delay:.5s}.modaal-loading-spinner>div:nth-of-type(6)>div,.modaal-loading-spinner>div:nth-of-type(7)>div{-ms-animation:modaal-loading-spinner 1s linear infinite;-moz-animation:modaal-loading-spinner 1s linear infinite;-webkit-animation:modaal-loading-spinner 1s linear infinite;-o-animation:modaal-loading-spinner 1s linear infinite}.modaal-loading-spinner>div:nth-of-type(5){-ms-transform:translate(84px,84px) rotate(225deg) translate(70px,0);-moz-transform:translate(84px,84px) rotate(225deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(225deg) translate(70px,0);-o-transform:translate(84px,84px) rotate(225deg) translate(70px,0);transform:translate(84px,84px) rotate(225deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(6)>div{animation:modaal-loading-spinner 1s linear infinite;-ms-animation-delay:.62s;-moz-animation-delay:.62s;-webkit-animation-delay:.62s;-o-animation-delay:.62s;animation-delay:.62s}.modaal-loading-spinner>div:nth-of-type(6){-ms-transform:translate(84px,84px) rotate(270deg) translate(70px,0);-moz-transform:translate(84px,84px) rotate(270deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(270deg) translate(70px,0);-o-transform:translate(84px,84px) rotate(270deg) translate(70px,0);transform:translate(84px,84px) rotate(270deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(7)>div{animation:modaal-loading-spinner 1s linear infinite;-ms-animation-delay:.75s;-moz-animation-delay:.75s;-webkit-animation-delay:.75s;-o-animation-delay:.75s;animation-delay:.75s}.modaal-loading-spinner>div:nth-of-type(7){-ms-transform:translate(84px,84px) rotate(315deg) translate(70px,0);-moz-transform:translate(84px,84px) rotate(315deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(315deg) translate(70px,0);-o-transform:translate(84px,84px) rotate(315deg) translate(70px,0);transform:translate(84px,84px) rotate(315deg) translate(70px,0)}.modaal-loading-spinner>div:nth-of-type(8)>div{-ms-animation:modaal-loading-spinner 1s linear infinite;-moz-animation:modaal-loading-spinner 1s linear infinite;-webkit-animation:modaal-loading-spinner 1s linear infinite;-o-animation:modaal-loading-spinner 1s linear infinite;animation:modaal-loading-spinner 1s linear infinite;-ms-animation-delay:.87s;-moz-animation-delay:.87s;-webkit-animation-delay:.87s;-o-animation-delay:.87s;animation-delay:.87s}.modaal-loading-spinner>div:nth-of-type(8){-ms-transform:translate(84px,84px) rotate(360deg) translate(70px,0);-moz-transform:translate(84px,84px) rotate(360deg) translate(70px,0);-webkit-transform:translate(84px,84px) rotate(360deg) translate(70px,0);-o-transform:translate(84px,84px) rotate(360deg) translate(70px,0);transform:translate(84px,84px) rotate(360deg) translate(70px,0)} diff --git a/wp-content/plugins/cookie-notice/assets/modaal/js/modaal.js b/wp-content/plugins/cookie-notice/assets/modaal/js/modaal.js new file mode 100644 index 0000000..1487347 --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/modaal/js/modaal.js @@ -0,0 +1,1390 @@ +/*! + Modaal - accessible modals - v0.4.4 + by Humaan, for all humans. + http://humaan.com + */ +/** + Modaal jQuery Plugin : Accessible Modals + + ==== General Options === + type (string) : ajax, inline, image, iframe, confirm. Defaults to 'inline' + content_source (stribg) : Accepts a string value for your target element, such as '#my-content'. This allows for when trigger element is + an `` link. Not to be confused with the already existing `source` event. + animation (string) : Fade, expand, down, up. Defaults to 'fade' + after_callback_delay (integer) : Specify a delay value for the after open callbacks. This is necessary because with the bundled animations + have a set duration in the bundled CSS. Specify a delay of the same amount as the animation duration in so + more accurately fire the after open/close callbacks. Defaults 350, does not apply if animation is 'none', + after open callbacks are dispatched immediately + + is_locked (boolean) : Set this to true to disable closing the modal via keypress or clicking the background. Beware that if + type != 'confirm' there will be no interface to dismiss the modal if is_locked = true, you'd have to + programmatically arrange to dismiss the modal. Confirm modals are always locked regardless of this option + Defaults to false + + hide_close (boolean) : Set this to true to hide the close modal button. Key press and overlay click will still close the modal. + This method is best used when you want to put a custom close button inside the modal container space. + + background (string) : Background overlay style. Defaults to '#000' + overlay_opacity (float) : Background overlay transparency. Defaults to 0.8 + overlay_close (boolean) : Set this to false if you want to disable click to close on overlay background. + + accessible_title (string) : Accessible title. Default 'Dialog Window' + start_open (boolean) : Set this to true to launch the Modaal window immediately on page open + fullscreen (boolean) : Set this to true to make the modaal fill the entire screen, false will default to own width/height attributes. + custom_class (string) : Fill in this string with a custom class that will be applied to the outer most modal wrapper. + + width (integer) : Desired width of the modal. Required for iframe type. Defaults to undefined //TODO + height (integer) : Desired height of the modal. Required for iframe type. Defaults to undefined //TODO + + background_scroll (boolean) : Set this to true to enable the page to scroll behind the open modal. + + should_open (boolean|function) : Boolean or closure that returns a boolean to determine whether to open the modal or not. + + close_text : String for close button text. Available for localisation and alternative languages to be used. + close_aria_label : String for close button aria-label attribute (value that screen readers will read out). Available for localisation and alternative languages to be used. + + === Events === + before_open (function) : Callback function executed before modal is opened + after_open (function) : Callback function executed after modal is opened + before_close (function) : Callback function executed before modal is closed + after_close (function) : Callback function executed after modal is closed + source (function(element, src)) : Callback function executed on the default source, it is intended to transform the + source (href in an AJAX modal or iframe). The function passes in the triggering element + as well as the default source depending of the modal type. The default output of the + function is an untransformed default source. + + + === Confirm Options & Events === + confirm_button_text (string) : Text on the confirm button. Defaults to 'Confirm' + confirm_cancel_button_text (string) : Text on the confirm modal cancel button. Defaults to 'Cancel' + confirm_title (string) : Title for confirm modal. Default 'Confirm Title' + confirm_content (string) : HTML content for confirm message + confirm_callback (function) : Callback function for when the confirm button is pressed as opposed to cancel + confirm_cancel_callback (function) : Callback function for when the cancel button is pressed + + + === Gallery Options & Events === + gallery_active_class (string) : Active class applied to the currently active image or image slide in a gallery 'gallery_active_item' + outer_controls (boolean) : Set to true to put the next/prev controls outside the Modaal wrapper, at the edges of the browser window. + before_image_change (function) : Callback function executed before the image slide changes in a gallery modal. Default function( current_item, incoming_item ) + after_image_change (function) : Callback function executed after the image slide changes in a gallery modal. Default function ( current_item ) + + + === AJAX Options & Events === + loading_content (string) : HTML content for loading message. Default 'Loading …' + loading_class (string) : Class name to be applied while content is loaded via AJAX. Default 'is_loading' + ajax_error_class (string) : Class name to be applied when content has failed to load. Default is 'modaal-error' + ajax_success (function) : Callback for when AJAX content is loaded in + + + === SOCIAL CONTENT === + instagram_id (string) : Unique photo ID for an Instagram photo. + +*/ +( function( $ ) { + + var modaal_loading_spinner = '
    ' + + var Modaal = { + init : function(options, elem) { + var self = this; + + self.dom = $('body'); + + self.$elem = $(elem); + self.options = $.extend({}, $.fn.modaal.options, self.$elem.data(), options); + self.xhr = null; + + // set up the scope + self.scope = { + is_open: false, + id: 'modaal_' + ( new Date().getTime() ) + ( Math.random().toString(16).substring(2) ), + source: self.options.content_source ? self.options.content_source : self.$elem.attr('href') + }; + + // add scope attribute to trigger element + self.$elem.attr('data-modaal-scope', self.scope.id); + + // private options + self.private_options = { + active_class: 'is_active' + }; + + self.lastFocus = null; + + // if is_locked + if ( self.options.is_locked || self.options.type == 'confirm' || self.options.hide_close ) { + self.scope.close_btn = ''; + } else { + self.scope.close_btn = ''; + } + + // reset animation_speed + if (self.options.animation === 'none' ){ + self.options.animation_speed = 0; + self.options.after_callback_delay = 0; + } + + // On click to open modal + $(elem).on('click.Modaal', function(e) { + e.preventDefault(); + self.create_modaal(self, e); + }); + + // Define next/prev buttons + if (self.options.outer_controls === true) { + var mod_class = 'outer'; + } else { + var mod_class = 'inner'; + } + self.scope.prev_btn = ''; + self.scope.next_btn = ''; + + // Check for start_open + if (self.options.start_open === true ){ + self.create_modaal( self ); + } + }, + + // Initial create to determine which content type it requires + // ---------------------------------------------------------------- + create_modaal : function(self, e) { + var self = this; + var source; + + // Save last active state before modal + self.lastFocus = self.$elem; + + if ( self.options.should_open === false || ( typeof self.options.should_open === 'function' && self.options.should_open() === false ) ) { + return; + } + + // CB: before_open + self.options.before_open.call(self, e); + + switch (self.options.type) { + case 'inline': + self.create_basic(); + break; + + case 'ajax': + source = self.options.source( self.$elem, self.scope.source ); + self.fetch_ajax( source ); + break; + + case 'confirm': + self.options.is_locked = true; + self.create_confirm(); + break; + + case 'image': + self.create_image(); + break; + + case 'iframe': + source = self.options.source( self.$elem, self.scope.source ); + self.create_iframe( source ); + break; + + case 'video': + self.create_video(self.scope.source); + break; + + case 'instagram': + self.create_instagram(); + break; + } + + // call events to be watched (click, tab, keyup, keydown etc.) + self.watch_events(); + }, + + // Watching Modal + // ---------------------------------------------------------------- + watch_events : function() { + var self = this; + + self.dom.off('click.Modaal keyup.Modaal keydown.Modaal'); + + // Body keydown + self.dom.on('keydown.Modaal', function(e) { + var key = e.keyCode; + var target = e.target; + + // look for tab change and reset focus to modal window + // done in keydown so the check fires repeatedly when you hold the tab key down + if (key == 9 && self.scope.is_open) { + if (!$.contains(document.getElementById(self.scope.id), target) ) { + $('#' + self.scope.id).find('*[tabindex="0"]').focus(); + } + } + }); + + // Body keyup + self.dom.on('keyup.Modaal', function(e) { + var key = e.keyCode; + var target = e.target; + + if ( (e.shiftKey && e.keyCode == 9) && self.scope.is_open) { + // Watch for shift + tab key press. if open shift focus to close button. + if (!$.contains(document.getElementById(self.scope.id), target) ) { + $('#' + self.scope.id).find('.modaal-close').focus(); + } + } + + if ( !self.options.is_locked ){ + // On escape key press close modal + if (key == 27 && self.scope.is_open ) { + if ( $(document.activeElement).is('input:not(:checkbox):not(:radio)') ) { + return false; + } + + self.modaal_close(); + return; + } + } + + // is gallery open and images length is > 1 + if ( self.options.type == 'image' ) { + // arrow left for back + if (key == 37 && self.scope.is_open && (!$('#' + self.scope.id + ' .modaal-gallery-prev').hasClass('is_hidden')) ) { + self.gallery_update('prev'); + } + // arrow right for next + if (key == 39 && self.scope.is_open && (!$('#' + self.scope.id + ' .modaal-gallery-next').hasClass('is_hidden')) ) { + self.gallery_update('next'); + } + return; + } + }); + + // Body click/touch + self.dom.on('click.Modaal', function(e) { + var trigger = $(e.target); + + // General Controls: If it's not locked allow greedy close + if ( !self.options.is_locked ){ + if ( (self.options.overlay_close && trigger.is('.modaal-inner-wrapper')) || trigger.is('.modaal-close') || trigger.closest('.modaal-close').length ) { + self.modaal_close(); + return; + } + } + + //Confirm Controls + if ( trigger.is('.modaal-confirm-btn' ) ){ + // if 'OK' button is clicked, run confirm_callback() + if ( trigger.is('.modaal-ok') ) { + self.options.confirm_callback.call(self, self.lastFocus); + } + + if ( trigger.is('.modaal-cancel') ) { + self.options.confirm_cancel_callback.call(self, self.lastFocus); + } + self.modaal_close(); + return; + } + + // Gallery Controls + if ( trigger.is( '.modaal-gallery-control' ) ){ + // it not active, don't do nuthin! + if ( trigger.hasClass('is_hidden') ) { + return; + } + + // trigger previous + if ( trigger.is('.modaal-gallery-prev') ) { + self.gallery_update('prev'); + } + // trigger next + if ( trigger.is('.modaal-gallery-next') ) { + self.gallery_update('next'); + } + return; + } + }); + }, + + // Append markup into DOM + build_modal : function(content) { + var self = this; + + // if is instagram + var igClass = ''; + if ( self.options.type == 'instagram' ) { + igClass = ' modaal-instagram'; + } + + var wrap_class = (self.options.type == 'video') ? 'modaal-video-wrap' : 'modaal-content'; + + /* + modaal-start_none : fully hidden via display:none; + modaal-start_fade : hidden via opacity:0 + modaal-start_slidedown : ... + + */ + var animation_class; + switch ( self.options.animation ) { + case 'fade' : + animation_class = ' modaal-start_fade'; + break; + case 'slide-down' : + animation_class = ' modaal-start_slidedown'; + break; + default : + animation_class = ' modaal-start_none' + } + + // fullscreen check + var fullscreen_class = ''; + if ( self.options.fullscreen ) { + fullscreen_class = ' modaal-fullscreen'; + } + + // custom class check + if ( self.options.custom_class !== '' || typeof(self.options.custom_class) !== 'undefined' ) { + self.options.custom_class = ' ' + self.options.custom_class; + } + + // if width and heights exists and is typeof number + var dimensionsStyle = ''; + if ( self.options.width && self.options.height && typeof self.options.width == 'number' && typeof self.options.height == 'number' ) { + // if width and height exist, and they are both numbers + dimensionsStyle = ' style="max-width:' + self.options.width + 'px;height:' + self.options.height + 'px;overflow:auto;"'; + } else if ( self.options.width && typeof self.options.width == 'number' ) { + // if only width + dimensionsStyle = ' style="max-width:' + self.options.width + 'px;"'; + } else if ( self.options.height && typeof self.options.height == 'number' ) { + // if only height + dimensionsStyle = ' style="height:' + self.options.height + 'px;overflow:auto;"'; + } + + // Reset dimensions style (width and height) for certain types + if ( self.options.type == 'image' || self.options.type == 'video' || self.options.type == 'instagram' || self.options.fullscreen ) { + dimensionsStyle = ''; + } + + // if is touch + // this is a bug fix for iOS to allow regular click events on div elements. + var touchTrigger = ''; + if ( self.is_touch() ) { + touchTrigger = ' style="cursor:pointer;"' + } + + var build_markup = '
    '; + + // hide if video + if (self.options.type != 'video') { + build_markup += '
    '; + } + + // add the guts of the content + build_markup += '' + self.scope.close_btn; + + // hide if video + if (self.options.type != 'video') { + build_markup += '
    '; + } + + // close off modaal-inner-wrapper + build_markup += '
    '; + + // If type is image AND outer_controls is true: add gallery next and previous controls. + if (self.options.type == 'image' && self.options.outer_controls === true) { + build_markup += self.scope.prev_btn + self.scope.next_btn; + } + + // close off modaal-wrapper + build_markup += '
    '; + + // append ajax modal markup to dom + if ($('#' + self.scope.id + '_overlay').length < 1) { + self.dom.append(build_markup); + } + + // if inline, clone content into space + if (self.options.type == 'inline') { + content.appendTo('#' + self.scope.id + ' .modaal-content-container'); + } + + // Trigger overlay show (which triggers modal show) + self.modaal_overlay('show'); + }, + + // Create Basic Inline Modal + // ---------------------------------------------------------------- + create_basic : function() { + var self = this; + var target = $(self.scope.source); + var content = ''; + + if (target.length) { + content = target.contents().detach(); + target.empty(); + } else { + content = 'Content could not be loaded. Please check the source and try again.'; + } + + // now push content into markup + self.build_modal(content); + }, + + // Create Instagram Modal + // ---------------------------------------------------------------- + create_instagram : function() { + var self = this; + var id = self.options.instagram_id; + var content = ''; + + var error_msg = 'Instagram photo couldn\'t be loaded, please check the embed code and try again.'; + + self.build_modal('
    ' + self.options.loading_content + '
    ' ); + + // ID exists, is not empty null or undefined. + if ( id != '' && id !== null && id !== undefined ) { + // set up oembed url + var ig_url = 'https://api.instagram.com/oembed?url=http://instagr.am/p/' + id + '/'; + + $.ajax({ + url: ig_url, + dataType: "jsonp", + cache: false, + success: function (data) { + + // Create temp dom element from which we'll clone into the modaal instance. This is required to bypass the unusual small thumb issue instagram oembed was serving up + self.dom.append('
    ' + data.html + '
    '); + + // Check if it has loaded once before. + // This is to stop the Embeds.process from throwing and error the first time it's being loaded. + // private_options are individual to a modaal_scope so will not work across multiple scopes when checking if true, only that one item. + if ( self.dom.attr('data-igloaded') ) { + window.instgrm.Embeds.process(); + } else { + // first time it's loaded, let's set a new private option to use next time it's opened. + self.dom.attr('data-igloaded', 'true'); + } + + // now set location for new content + // timeout is required as well to bypass the unusual small thumb issue instagram oembed was serving up + var target = '#' + self.scope.id + ' .modaal-content-container'; + if ( $(target).length > 0) { + setTimeout(function() { + $('#temp-ig').contents().clone().appendTo( target ); + $('#temp-ig').remove(); + }, 1000); + } + + }, + error: function() { + content = error_msg; + + // now set location for new content + var target = $('#' + self.scope.id + ' .modaal-content-container'); + if ( target.length > 0) { + target.removeClass( self.options.loading_class ).addClass( self.options.ajax_error_class ); + target.html(content); + } + } + }); + + } else { + content = error_msg; + } + + return false; + }, + + // Fetch Ajax Data + // ---------------------------------------------------------------- + fetch_ajax : function(url) { + var self = this; + var content = ''; + + // If no accessible title, set it to 'Dialog Window' + if ( self.options.accessible_title == null ) { + self.options.accessible_title = 'Dialog Window' + } + + if ( self.xhr !== null ){ + self.xhr.abort(); + self.xhr = null; + } + + self.build_modal('
    ' + self.options.loading_content + '
    ' ); + + self.xhr = $.ajax(url, { + success: function(data) { + // content fetch is successful so push it into markup + var target = $('#' + self.scope.id).find('.modaal-content-container'); + if ( target.length > 0){ + target.removeClass( self.options.loading_class ); + target.html( data ); + + self.options.ajax_success.call(self, target); + } + }, + error: function( xhr ) { + // There were some errors so return an error message + if ( xhr.statusText == 'abort' ){ + return; + } + + var target = $('#' + self.scope.id + ' .modaal-content-container'); + if ( target.length > 0){ + target.removeClass( self.options.loading_class ).addClass( self.options.ajax_error_class ); + target.html( 'Content could not be loaded. Please check the source and try again.' ); + } + } + }); + }, + + // Create Confirm Modal + // ---------------------------------------------------------------- + create_confirm : function() { + var self = this; + var content; + + content = '
    ' + + '

    ' + self.options.confirm_title + '

    ' + + '
    ' + self.options.confirm_content + '
    ' + + '
    ' + + '' + + '' + + '
    ' + + '
    ' + + '
    '; + + // now push content into markup + self.build_modal(content); + }, + + // Create Image/Gallery Modal + // ---------------------------------------------------------------- + create_image : function() { + var self = this; + var content; + + var modaal_image_markup = ''; + var gallery_total; + + // If has group attribute + if ( self.$elem.is('[data-group]') || self.$elem.is('[rel]') ) { + + // find gallery groups + var use_group = self.$elem.is('[data-group]'); + var gallery_group = use_group ? self.$elem.attr('data-group') : self.$elem.attr('rel'); + var gallery_group_items = use_group ? $('[data-group="' + gallery_group + '"]') : $('[rel="' + gallery_group + '"]'); + + // remove any previous active attribute to any in the group + gallery_group_items.removeAttr('data-gallery-active', 'is_active'); + // add active attribute to the item clicked + self.$elem.attr('data-gallery-active', 'is_active'); + + // how many in the grouping are there (-1 to connect with each function starting with 0) + gallery_total = gallery_group_items.length - 1; + + // prepare array for gallery data + var gallery = []; + + // start preparing markup + modaal_image_markup = ''; + + // Add next and previous buttons if outside + if (self.options.outer_controls != true) { + modaal_image_markup += self.scope.prev_btn + self.scope.next_btn; + } + } else { + // This is only a single gallery item so let's grab the necessary values + + // define the source, check if content_source option exists, and use that or fall back to href. + var this_img_src; + var img_src_error = false; + if ( self.$elem.attr('data-modaal-content-source') ) { + this_img_src = self.$elem.attr('data-modaal-content-source'); + } else if ( self.$elem.attr('href') ) { + this_img_src = self.$elem.attr('href'); + } else if ( self.$elem.attr('src') ) { + this_img_src = self.$elem.attr('src'); + } else { + this_img_src = 'trigger requires href or data-modaal-content-source attribute'; + img_src_error = true; + } + + var this_img_alt_txt = ''; + var this_img_alt = ''; + var aria_label = ''; + + if ( self.$elem.attr('data-modaal-desc') ) { + aria_label = self.$elem.attr('data-modaal-desc'); + this_img_alt_txt = self.$elem.attr('data-modaal-desc'); + this_img_alt = ''; + } else { + aria_label = "Image with no description"; + } + + // if image item has source error, output message rather than undefined image + var image_output = img_src_error ? this_img_src : ' '; + + // build up the html + modaal_image_markup = ''; + } + + // Update content variable + content = modaal_image_markup; + + // now push content into markup + self.build_modal(content); + + // setup next & prev buttons + if ( $('.modaal-gallery-item.is_active').is('.gallery-item-0') ) { + $('.modaal-gallery-prev').hide(); + } + if ( $('.modaal-gallery-item.is_active').is('.gallery-item-' + gallery_total) ) { + $('.modaal-gallery-next').hide(); + } + }, + + // Gallery Change Image + // ---------------------------------------------------------------- + gallery_update : function(direction) { + var self = this; + var this_gallery = $('#' + self.scope.id); + var this_gallery_item = this_gallery.find('.modaal-gallery-item'); + var this_gallery_total = this_gallery_item.length - 1; + + // if single item, don't proceed + if ( this_gallery_total == 0 ) { + return false; + } + + var prev_btn = this_gallery.find('.modaal-gallery-prev'), + next_btn = this_gallery.find('.modaal-gallery-next'); + + var duration = 250; + + var new_img_w = 0, + new_img_h = 0; + + // CB: Before image change + var current_item = this_gallery.find( '.modaal-gallery-item.' + self.private_options.active_class ), + incoming_item = ( direction == 'next' ? current_item.next( '.modaal-gallery-item' ) : current_item.prev( '.modaal-gallery-item' ) ); + self.options.before_image_change.call(self, current_item, incoming_item); + + // stop change if at start of end + if ( direction == 'prev' && this_gallery.find('.gallery-item-0').hasClass('is_active') ) { + return false; + } else if ( direction == 'next' && this_gallery.find('.gallery-item-' + this_gallery_total).hasClass('is_active') ) { + return false; + } + + + // lock dimensions + current_item.stop().animate({ + opacity: 0 + }, duration, function(){ + // Move to appropriate image + incoming_item.addClass('is_next').css({ + 'position': 'absolute', + 'display': 'block', + 'opacity': 0 + }); + + // Collect doc width + var doc_width = $(document).width(); + var width_threshold = doc_width > 1140 ? 280 : 50; + + // start toggle to 'is_next' + new_img_w = this_gallery.find('.modaal-gallery-item.is_next').width(); + new_img_h = this_gallery.find('.modaal-gallery-item.is_next').height(); + + var new_natural_w = this_gallery.find('.modaal-gallery-item.is_next img').prop('naturalWidth'); + var new_natural_h = this_gallery.find('.modaal-gallery-item.is_next img').prop('naturalHeight'); + + // if new image is wider than doc width + if ( new_natural_w > (doc_width - width_threshold) ) { + // set new width just below doc width + new_img_w = doc_width - width_threshold; + + // Set temp widths so we can calulate the correct height; + this_gallery.find('.modaal-gallery-item.is_next').css({ 'width': new_img_w }); + this_gallery.find('.modaal-gallery-item.is_next img').css({ 'width': new_img_w }); + + // Set new height variable + new_img_h = this_gallery.find('.modaal-gallery-item.is_next').find('img').height(); + } else { + // new img is not wider than screen, so let's set the new dimensions + new_img_w = new_natural_w; + new_img_h = new_natural_h; + } + + // resize gallery region + this_gallery.find('.modaal-gallery-item-wrap').stop().animate({ + 'width': new_img_w, + 'height': new_img_h + }, duration, function() { + // hide old active image + current_item.removeClass(self.private_options.active_class + ' ' + self.options.gallery_active_class).removeAttr('style'); + current_item.find('img').removeAttr('style'); + + // show new image + incoming_item.addClass(self.private_options.active_class + ' ' + self.options.gallery_active_class).removeClass('is_next').css('position',''); + + // animate in new image (now has the normal is_active class + incoming_item.stop().animate({ + opacity: 1 + }, duration, function(){ + $(this).removeAttr('style').css({ + 'width': '100%' + }); + $(this).find('img').css('width', '100%'); + + // remove dimension lock + this_gallery.find('.modaal-gallery-item-wrap').removeAttr('style'); + + // CB: After image change + self.options.after_image_change.call( self, incoming_item ); + }); + + // Focus on the new gallery item + this_gallery.find('.modaal-gallery-item').removeAttr('tabindex'); + this_gallery.find('.modaal-gallery-item.' + self.private_options.active_class + '').attr('tabindex', '0').focus(); + + // hide/show next/prev + if ( this_gallery.find('.modaal-gallery-item.' + self.private_options.active_class).is('.gallery-item-0') ) { + prev_btn.stop().animate({ + opacity: 0 + }, 150, function(){ + $(this).hide(); + }); + } else { + prev_btn.stop().css({ + 'display': 'block', + 'opacity': prev_btn.css('opacity') + }).animate({ + opacity: 1 + }, 150); + } + if ( this_gallery.find('.modaal-gallery-item.' + self.private_options.active_class).is('.gallery-item-' + this_gallery_total) ) { + next_btn.stop().animate({ + opacity: 0 + }, 150, function(){ + $(this).hide(); + }); + } else { + next_btn.stop().css({ + 'display': 'block', + 'opacity': prev_btn.css('opacity') + }).animate({ + opacity: 1 + }, 150); + } + }); + }); + }, + + // Create Video Modal + // ---------------------------------------------------------------- + create_video : function(url) { + var self = this; + var content; + + // video markup + content = ''; + + // now push content into markup + self.build_modal('
    ' + content + '
    '); + }, + + // Create iFrame Modal + // ---------------------------------------------------------------- + create_iframe : function(url) { + var self = this; + var content; + + if ( self.options.width !== null || self.options.width !== undefined || self.options.height !== null || self.options.height !== undefined ) { + // video markup + content = ''; + } else { + content = '
    Please specify a width and height for your iframe
    '; + } + + // now push content into markup + self.build_modal(content); + }, + + // Open Modaal + // ---------------------------------------------------------------- + modaal_open : function() { + var self = this; + var modal_wrapper = $( '#' + self.scope.id ); + var animation_type = self.options.animation; + + if (animation_type === 'none' ){ + modal_wrapper.removeClass('modaal-start_none'); + self.options.after_open.call(self, modal_wrapper); + } + + // Open with fade + if (animation_type === 'fade') { + modal_wrapper.removeClass('modaal-start_fade'); + } + + // Open with slide down + if (animation_type === 'slide-down') { + modal_wrapper.removeClass('modaal-start_slide_down'); + } + + var focusTarget = modal_wrapper; + + // Switch focusTarget tabindex (switch from other modal if exists) + $('.modaal-wrapper *[tabindex=0]').removeAttr('tabindex'); + + if ( self.options.type == 'image' ) { + focusTarget = $('#' + self.scope.id).find('.modaal-gallery-item.' + self.private_options.active_class); + + } else if ( modal_wrapper.find('.modaal-iframe-elem').length ) { + focusTarget = modal_wrapper.find('.modaal-iframe-elem'); + + } else if ( modal_wrapper.find('.modaal-video-wrap').length ) { + focusTarget = modal_wrapper.find('.modaal-video-wrap'); + + } else { + focusTarget = modal_wrapper.find('.modaal-focus'); + + } + + // now set the focus + focusTarget.attr('tabindex', '0').focus(); + + // Run after_open + if (animation_type !== 'none') { + // CB: after_open + setTimeout(function() { + self.options.after_open.call(self, modal_wrapper) + }, self.options.after_callback_delay); + } + }, + + // Close Modal + // ---------------------------------------------------------------- + modaal_close : function() { + var self = this; + var modal_wrapper = $( '#' + self.scope.id ); + + // CB: before_close + self.options.before_close.call(self, modal_wrapper); + + if (self.xhr !== null){ + self.xhr.abort(); + self.xhr = null; + } + + // Now we close the modal + if (self.options.animation === 'none' ){ + modal_wrapper.addClass('modaal-start_none'); + } + + // Close with fade + if (self.options.animation === 'fade') { + modal_wrapper.addClass('modaal-start_fade'); + } + + // Close with slide up (using initial slide down) + if (self.options.animation === 'slide-down') { + modal_wrapper.addClass('modaal-start_slide_down'); + } + + // CB: after_close and remove + setTimeout(function() { + // clone inline content back to origin place + if (self.options.type == 'inline') { + $('#' + self.scope.id + ' .modaal-content-container').contents().detach().appendTo( self.scope.source ) + } + // remove markup from dom + modal_wrapper.remove(); + // CB: after_close + self.options.after_close.call(self); + // scope is now closed + self.scope.is_open = false; + + }, self.options.after_callback_delay); + + // Call overlay hide + self.modaal_overlay('hide'); + + // Roll back to last focus state before modal open. If was closed programmatically, this might not be set + if (self.lastFocus != null) { + self.lastFocus.focus(); + } + }, + + // Overlay control (accepts action for show or hide) + // ---------------------------------------------------------------- + modaal_overlay : function(action) { + var self = this; + + if (action == 'show') { + // Modal is open so update scope + self.scope.is_open = true; + + // set body to overflow hidden if background_scroll is false + if (! self.options.background_scroll) { + self.dom.addClass('modaal-noscroll'); + } + + // append modaal overlay + if ($('#' + self.scope.id + '_overlay').length < 1) { + self.dom.append('
    '); + } + + // now show + $('#' + self.scope.id + '_overlay').css('background', self.options.background).stop().animate({ + opacity: self.options.overlay_opacity + }, self.options.animation_speed, function(){ + // now open the modal + self.modaal_open(); + }); + + } else if (action == 'hide') { + + // now hide the overlay + $('#' + self.scope.id + '_overlay').stop().animate({ + opacity: 0 + }, self.options.animation_speed, function(){ + // remove overlay from dom + $(this).remove(); + + // remove body overflow lock + self.dom.removeClass('modaal-noscroll'); + }); + } + }, + + // Check if is touch + // ---------------------------------------------------------------- + is_touch : function() { + return 'ontouchstart' in window || navigator.maxTouchPoints; + } + }; + + // Define default object to store + var modaal_existing_selectors = []; + + // Declare the modaal jQuery method + // ------------------------------------------------------------ + $.fn.modaal = function(options) { + return this.each(function (i) { + var existing_modaal = $(this).data('modaal'); + + if ( existing_modaal ){ + // Checking for string value, used for methods + if (typeof(options) == 'string'){ + switch (options) { + case 'open': + // create the modal + existing_modaal.create_modaal(existing_modaal); + break; + case 'close': + existing_modaal.modaal_close(); + break; + } + } + } else { + // Not a string, so let's setup the modal ready to use + var modaal = Object.create(Modaal); + modaal.init(options, this); + $.data(this, "modaal", modaal); + + // push this select into existing selectors array which is referenced during modaal_dom_observer + modaal_existing_selectors.push({ + 'element': $(this).attr('class'), + 'options': options + }); + } + }); + }; + + // Default options + // ------------------------------------------------------------ + $.fn.modaal.options = { + + //General + type: 'inline', + content_source: null, + animation: 'fade', + animation_speed: 300, + after_callback_delay: 350, + is_locked: false, + hide_close: false, + background: '#000', + overlay_opacity: '0.8', + overlay_close: true, + accessible_title: 'Dialog Window', + start_open: false, + fullscreen: false, + custom_class: '', + background_scroll: false, + should_open: true, + close_text: 'Close', + close_aria_label: 'Close (Press escape to close)', + width: null, + height: null, + + //Events + before_open: function(){}, + after_open: function(){}, + before_close: function(){}, + after_close: function(){}, + source: function( element, src ){ + return src; + }, + + //Confirm Modal + confirm_button_text: 'Confirm', // text on confirm button + confirm_cancel_button_text: 'Cancel', + confirm_title: 'Confirm Title', // title for confirm modal + confirm_content: '

    This is the default confirm dialog content. Replace me through the options

    ', // html for confirm message + confirm_callback: function() {}, + confirm_cancel_callback: function() {}, + + + //Gallery Modal + gallery_active_class: 'gallery_active_item', + outer_controls: false, + before_image_change: function( current_item, incoming_item ) {}, + after_image_change: function( current_item ) {}, + + //Ajax Modal + loading_content: modaal_loading_spinner, + loading_class: 'is_loading', + ajax_error_class: 'modaal-error', + ajax_success: function(){}, + + //Instagram + instagram_id: null + }; + + // Check and Set Inline Options + // ------------------------------------------------------------ + function modaal_inline_options(self) { + + // new empty options + var options = {}; + var inline_options = false; + + // option: type + if ( self.attr('data-modaal-type') ) { + inline_options = true; + options.type = self.attr('data-modaal-type'); + } + + // option: type + if ( self.attr('data-modaal-content-source') ) { + inline_options = true; + options.content_source = self.attr('data-modaal-content-source'); + } + + // option: animation + if ( self.attr('data-modaal-animation') ) { + inline_options = true; + options.animation = self.attr('data-modaal-animation'); + } + + // option: animation_speed + if ( self.attr('data-modaal-animation-speed') ) { + inline_options = true; + options.animation_speed = self.attr('data-modaal-animation-speed'); + } + + // option: after_callback_delay + if ( self.attr('data-modaal-after-callback-delay') ) { + inline_options = true; + options.after_callback_delay = self.attr('data-modaal-after-callback-delay'); + } + + // option: is_locked + if ( self.attr('data-modaal-is-locked') ) { + inline_options = true; + options.is_locked = (self.attr('data-modaal-is-locked') === 'true' ? true : false); + } + + // option: hide_close + if ( self.attr('data-modaal-hide-close') ) { + inline_options = true; + options.hide_close = (self.attr('data-modaal-hide-close') === 'true' ? true : false); + } + + // option: background + if ( self.attr('data-modaal-background') ) { + inline_options = true; + options.background = self.attr('data-modaal-background'); + } + + // option: overlay_opacity + if ( self.attr('data-modaal-overlay-opacity') ) { + inline_options = true; + options.overlay_opacity = self.attr('data-modaal-overlay-opacity'); + } + + // option: overlay_close + if ( self.attr('data-modaal-overlay-close') ) { + inline_options = true; + options.overlay_close = (self.attr('data-modaal-overlay-close') === 'false' ? false : true); + } + + // option: accessible_title + if ( self.attr('data-modaal-accessible-title') ) { + inline_options = true; + options.accessible_title = self.attr('data-modaal-accessible-title'); + } + + // option: start_open + if ( self.attr('data-modaal-start-open') ) { + inline_options = true; + options.start_open = (self.attr('data-modaal-start-open') === 'true' ? true : false); + } + + // option: fullscreen + if ( self.attr('data-modaal-fullscreen') ) { + inline_options = true; + options.fullscreen = (self.attr('data-modaal-fullscreen') === 'true' ? true : false); + } + + // option: custom_class + if ( self.attr('data-modaal-custom-class') ) { + inline_options = true; + options.custom_class = self.attr('data-modaal-custom-class'); + } + + // option: close_text + if ( self.attr('data-modaal-close-text') ) { + inline_options = true; + options.close_text = self.attr('data-modaal-close-text'); + } + + // option: close_aria_label + if ( self.attr('data-modaal-close-aria-label') ) { + inline_options = true; + options.close_aria_label = self.attr('data-modaal-close-aria-label'); + } + + // option: background_scroll + if ( self.attr('data-modaal-background-scroll') ) { + inline_options = true; + options.background_scroll = (self.attr('data-modaal-background-scroll') === 'true' ? true : false); + } + + // option: width + if ( self.attr('data-modaal-width') ) { + inline_options = true; + options.width = parseInt( self.attr('data-modaal-width') ); + } + + // option: height + if ( self.attr('data-modaal-height') ) { + inline_options = true; + options.height = parseInt( self.attr('data-modaal-height') ); + } + + // option: confirm_button_text + if ( self.attr('data-modaal-confirm-button-text') ) { + inline_options = true; + options.confirm_button_text = self.attr('data-modaal-confirm-button-text'); + } + + // option: confirm_cancel_button_text + if ( self.attr('data-modaal-confirm-cancel-button-text') ) { + inline_options = true; + options.confirm_cancel_button_text = self.attr('data-modaal-confirm-cancel-button-text'); + } + + // option: confirm_title + if ( self.attr('data-modaal-confirm-title') ) { + inline_options = true; + options.confirm_title = self.attr('data-modaal-confirm-title'); + } + + // option: confirm_content + if ( self.attr('data-modaal-confirm-content') ) { + inline_options = true; + options.confirm_content = self.attr('data-modaal-confirm-content'); + } + + // option: gallery_active_class + if ( self.attr('data-modaal-gallery-active-class') ) { + inline_options = true; + options.gallery_active_class = self.attr('data-modaal-gallery-active-class'); + } + + // option: loading_content + if ( self.attr('data-modaal-loading-content') ) { + inline_options = true; + options.loading_content = self.attr('data-modaal-loading-content'); + } + + // option: loading_class + if ( self.attr('data-modaal-loading-class') ) { + inline_options = true; + options.loading_class = self.attr('data-modaal-loading-class'); + } + + // option: ajax_error_class + if ( self.attr('data-modaal-ajax-error-class') ) { + inline_options = true; + options.ajax_error_class = self.attr('data-modaal-ajax-error-class'); + } + + // option: start_open + if ( self.attr('data-modaal-instagram-id') ) { + inline_options = true; + options.instagram_id = self.attr('data-modaal-instagram-id'); + } + + // now set it up for the trigger, but only if inline_options is true + if ( inline_options ) { + self.modaal(options); + } + }; + + // On body load (or now, if already loaded), init any modaals defined inline + // Ensure this is done after $.fn.modaal and default options are declared + // ---------------------------------------------------------------- + $(function(){ + + var single_modaal = $('.modaal'); + + // Check for existing modaal elements + if ( single_modaal.length ) { + single_modaal.each(function() { + var self = $(this); + modaal_inline_options(self); + }); + } + + // Obvserve DOM mutations for newly added triggers + var modaal_dom_observer = new MutationObserver(function(mutations) { + mutations.forEach(function(mutation) { + if (mutation.addedNodes && mutation.addedNodes.length > 0) { + // element added to DOM + var findElement = [].some.call(mutation.addedNodes, function(el) { + var elm = $(el); + if ( elm.is('a') || elm.is('button') ) { + + if ( elm.hasClass('modaal') ) { + // is inline Modaal, initialise options + modaal_inline_options(elm); + } else { + // is not inline modaal. Check for existing selector + modaal_existing_selectors.forEach(function(modaalSelector) { + if ( modaalSelector.element == elm.attr('class') ) { + $(elm).modaal( modaalSelector.options ); + return false; + } + }); + } + + } + }); + } + }); + }); + var observer_config = { + subtree: true, + attributes: true, + childList: true, + characterData: true + }; + + // pass in the target node, as well as the observer options + setTimeout(function() { + modaal_dom_observer.observe(document.body, observer_config); + }, 500); + + }); + +} ( jQuery, window, document ) ); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/assets/modaal/js/modaal.min.js b/wp-content/plugins/cookie-notice/assets/modaal/js/modaal.min.js new file mode 100644 index 0000000..e06bfbb --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/modaal/js/modaal.min.js @@ -0,0 +1,6 @@ +/*! + Modaal - accessible modals - v0.4.4 + by Humaan, for all humans. + http://humaan.com + */ +!function(a){function t(a){var t={},o=!1;a.attr("data-modaal-type")&&(o=!0,t.type=a.attr("data-modaal-type")),a.attr("data-modaal-content-source")&&(o=!0,t.content_source=a.attr("data-modaal-content-source")),a.attr("data-modaal-animation")&&(o=!0,t.animation=a.attr("data-modaal-animation")),a.attr("data-modaal-animation-speed")&&(o=!0,t.animation_speed=a.attr("data-modaal-animation-speed")),a.attr("data-modaal-after-callback-delay")&&(o=!0,t.after_callback_delay=a.attr("data-modaal-after-callback-delay")),a.attr("data-modaal-is-locked")&&(o=!0,t.is_locked="true"===a.attr("data-modaal-is-locked")),a.attr("data-modaal-hide-close")&&(o=!0,t.hide_close="true"===a.attr("data-modaal-hide-close")),a.attr("data-modaal-background")&&(o=!0,t.background=a.attr("data-modaal-background")),a.attr("data-modaal-overlay-opacity")&&(o=!0,t.overlay_opacity=a.attr("data-modaal-overlay-opacity")),a.attr("data-modaal-overlay-close")&&(o=!0,t.overlay_close="false"!==a.attr("data-modaal-overlay-close")),a.attr("data-modaal-accessible-title")&&(o=!0,t.accessible_title=a.attr("data-modaal-accessible-title")),a.attr("data-modaal-start-open")&&(o=!0,t.start_open="true"===a.attr("data-modaal-start-open")),a.attr("data-modaal-fullscreen")&&(o=!0,t.fullscreen="true"===a.attr("data-modaal-fullscreen")),a.attr("data-modaal-custom-class")&&(o=!0,t.custom_class=a.attr("data-modaal-custom-class")),a.attr("data-modaal-close-text")&&(o=!0,t.close_text=a.attr("data-modaal-close-text")),a.attr("data-modaal-close-aria-label")&&(o=!0,t.close_aria_label=a.attr("data-modaal-close-aria-label")),a.attr("data-modaal-background-scroll")&&(o=!0,t.background_scroll="true"===a.attr("data-modaal-background-scroll")),a.attr("data-modaal-width")&&(o=!0,t.width=parseInt(a.attr("data-modaal-width"))),a.attr("data-modaal-height")&&(o=!0,t.height=parseInt(a.attr("data-modaal-height"))),a.attr("data-modaal-confirm-button-text")&&(o=!0,t.confirm_button_text=a.attr("data-modaal-confirm-button-text")),a.attr("data-modaal-confirm-cancel-button-text")&&(o=!0,t.confirm_cancel_button_text=a.attr("data-modaal-confirm-cancel-button-text")),a.attr("data-modaal-confirm-title")&&(o=!0,t.confirm_title=a.attr("data-modaal-confirm-title")),a.attr("data-modaal-confirm-content")&&(o=!0,t.confirm_content=a.attr("data-modaal-confirm-content")),a.attr("data-modaal-gallery-active-class")&&(o=!0,t.gallery_active_class=a.attr("data-modaal-gallery-active-class")),a.attr("data-modaal-loading-content")&&(o=!0,t.loading_content=a.attr("data-modaal-loading-content")),a.attr("data-modaal-loading-class")&&(o=!0,t.loading_class=a.attr("data-modaal-loading-class")),a.attr("data-modaal-ajax-error-class")&&(o=!0,t.ajax_error_class=a.attr("data-modaal-ajax-error-class")),a.attr("data-modaal-instagram-id")&&(o=!0,t.instagram_id=a.attr("data-modaal-instagram-id")),o&&a.modaal(t)}var o={init:function(t,o){var e=this;if(e.dom=a("body"),e.$elem=a(o),e.options=a.extend({},a.fn.modaal.options,e.$elem.data(),t),e.xhr=null,e.scope={is_open:!1,id:"modaal_"+(new Date).getTime()+Math.random().toString(16).substring(2),source:e.options.content_source?e.options.content_source:e.$elem.attr("href")},e.$elem.attr("data-modaal-scope",e.scope.id),e.private_options={active_class:"is_active"},e.lastFocus=null,e.options.is_locked||"confirm"==e.options.type||e.options.hide_close?e.scope.close_btn="":e.scope.close_btn='","none"===e.options.animation&&(e.options.animation_speed=0,e.options.after_callback_delay=0),a(o).on("click.Modaal",function(a){a.preventDefault(),e.create_modaal(e,a)}),!0===e.options.outer_controls)var i="outer";else var i="inner";e.scope.prev_btn='',e.scope.next_btn='',!0===e.options.start_open&&e.create_modaal(e)},create_modaal:function(a,t){var o,a=this;if(a.lastFocus=a.$elem,!1!==a.options.should_open&&("function"!=typeof a.options.should_open||!1!==a.options.should_open())){switch(a.options.before_open.call(a,t),a.options.type){case"inline":a.create_basic();break;case"ajax":o=a.options.source(a.$elem,a.scope.source),a.fetch_ajax(o);break;case"confirm":a.options.is_locked=!0,a.create_confirm();break;case"image":a.create_image();break;case"iframe":o=a.options.source(a.$elem,a.scope.source),a.create_iframe(o);break;case"video":a.create_video(a.scope.source);break;case"instagram":a.create_instagram()}a.watch_events()}},watch_events:function(){var t=this;t.dom.off("click.Modaal keyup.Modaal keydown.Modaal"),t.dom.on("keydown.Modaal",function(o){var e=o.keyCode,i=o.target;9==e&&t.scope.is_open&&(a.contains(document.getElementById(t.scope.id),i)||a("#"+t.scope.id).find('*[tabindex="0"]').focus())}),t.dom.on("keyup.Modaal",function(o){var e=o.keyCode,i=o.target;return o.shiftKey&&9==o.keyCode&&t.scope.is_open&&(a.contains(document.getElementById(t.scope.id),i)||a("#"+t.scope.id).find(".modaal-close").focus()),!t.options.is_locked&&27==e&&t.scope.is_open?!a(document.activeElement).is("input:not(:checkbox):not(:radio)")&&void t.modaal_close():"image"==t.options.type?(37==e&&t.scope.is_open&&!a("#"+t.scope.id+" .modaal-gallery-prev").hasClass("is_hidden")&&t.gallery_update("prev"),void(39==e&&t.scope.is_open&&!a("#"+t.scope.id+" .modaal-gallery-next").hasClass("is_hidden")&&t.gallery_update("next"))):void 0}),t.dom.on("click.Modaal",function(o){var e=a(o.target);if(!t.options.is_locked&&(t.options.overlay_close&&e.is(".modaal-inner-wrapper")||e.is(".modaal-close")||e.closest(".modaal-close").length))return void t.modaal_close();if(e.is(".modaal-confirm-btn"))return e.is(".modaal-ok")&&t.options.confirm_callback.call(t,t.lastFocus),e.is(".modaal-cancel")&&t.options.confirm_cancel_callback.call(t,t.lastFocus),void t.modaal_close();if(e.is(".modaal-gallery-control")){if(e.hasClass("is_hidden"))return;return e.is(".modaal-gallery-prev")&&t.gallery_update("prev"),void(e.is(".modaal-gallery-next")&&t.gallery_update("next"))}})},build_modal:function(t){var o=this,e="";"instagram"==o.options.type&&(e=" modaal-instagram");var i,l="video"==o.options.type?"modaal-video-wrap":"modaal-content";switch(o.options.animation){case"fade":i=" modaal-start_fade";break;case"slide-down":i=" modaal-start_slidedown";break;default:i=" modaal-start_none"}var n="";o.options.fullscreen&&(n=" modaal-fullscreen"),""===o.options.custom_class&&void 0===o.options.custom_class||(o.options.custom_class=" "+o.options.custom_class);var s="";o.options.width&&o.options.height&&"number"==typeof o.options.width&&"number"==typeof o.options.height?s=' style="max-width:'+o.options.width+"px;height:"+o.options.height+'px;overflow:auto;"':o.options.width&&"number"==typeof o.options.width?s=' style="max-width:'+o.options.width+'px;"':o.options.height&&"number"==typeof o.options.height&&(s=' style="height:'+o.options.height+'px;overflow:auto;"'),("image"==o.options.type||"video"==o.options.type||"instagram"==o.options.type||o.options.fullscreen)&&(s="");var d="";o.is_touch()&&(d=' style="cursor:pointer;"');var r='
    ";"video"!=o.options.type&&(r+='
    "),r+='"+o.scope.close_btn,"video"!=o.options.type&&(r+="
    "),r+="
    ","image"==o.options.type&&!0===o.options.outer_controls&&(r+=o.scope.prev_btn+o.scope.next_btn),r+="
    ",a("#"+o.scope.id+"_overlay").length<1&&o.dom.append(r),"inline"==o.options.type&&t.appendTo("#"+o.scope.id+" .modaal-content-container"),o.modaal_overlay("show")},create_basic:function(){var t=this,o=a(t.scope.source),e="";o.length?(e=o.contents().detach(),o.empty()):e="Content could not be loaded. Please check the source and try again.",t.build_modal(e)},create_instagram:function(){var t=this,o=t.options.instagram_id,e="",i="Instagram photo couldn't be loaded, please check the embed code and try again.";if(t.build_modal('
    '+t.options.loading_content+"
    "),""!=o&&null!==o&&void 0!==o){var l="https://api.instagram.com/oembed?url=http://instagr.am/p/"+o+"/";a.ajax({url:l,dataType:"jsonp",cache:!1,success:function(o){t.dom.append('
    '+o.html+"
    "),t.dom.attr("data-igloaded")?window.instgrm.Embeds.process():t.dom.attr("data-igloaded","true");var e="#"+t.scope.id+" .modaal-content-container";a(e).length>0&&setTimeout(function(){a("#temp-ig").contents().clone().appendTo(e),a("#temp-ig").remove()},1e3)},error:function(){e=i;var o=a("#"+t.scope.id+" .modaal-content-container");o.length>0&&(o.removeClass(t.options.loading_class).addClass(t.options.ajax_error_class),o.html(e))}})}else e=i;return!1},fetch_ajax:function(t){var o=this;null==o.options.accessible_title&&(o.options.accessible_title="Dialog Window"),null!==o.xhr&&(o.xhr.abort(),o.xhr=null),o.build_modal('
    '+o.options.loading_content+"
    "),o.xhr=a.ajax(t,{success:function(t){var e=a("#"+o.scope.id).find(".modaal-content-container");e.length>0&&(e.removeClass(o.options.loading_class),e.html(t),o.options.ajax_success.call(o,e))},error:function(t){if("abort"!=t.statusText){var e=a("#"+o.scope.id+" .modaal-content-container");e.length>0&&(e.removeClass(o.options.loading_class).addClass(o.options.ajax_error_class),e.html("Content could not be loaded. Please check the source and try again."))}}})},create_confirm:function(){var a,t=this;a='

    '+t.options.confirm_title+'

    '+t.options.confirm_content+'
    ",t.build_modal(a)},create_image:function(){var t,o,e=this,i="";if(e.$elem.is("[data-group]")||e.$elem.is("[rel]")){var l=e.$elem.is("[data-group]"),n=l?e.$elem.attr("data-group"):e.$elem.attr("rel"),s=a(l?'[data-group="'+n+'"]':'[rel="'+n+'"]');s.removeAttr("data-gallery-active","is_active"),e.$elem.attr("data-gallery-active","is_active"),o=s.length-1;var d=[];i='",1!=e.options.outer_controls&&(i+=e.scope.prev_btn+e.scope.next_btn)}else{var u,_=!1;e.$elem.attr("data-modaal-content-source")?u=e.$elem.attr("data-modaal-content-source"):e.$elem.attr("href")?u=e.$elem.attr("href"):e.$elem.attr("src")?u=e.$elem.attr("src"):(u="trigger requires href or data-modaal-content-source attribute",_=!0);var v="",f="",m="";e.$elem.attr("data-modaal-desc")?(m=e.$elem.attr("data-modaal-desc"),v=e.$elem.attr("data-modaal-desc"),f='"):m="Image with no description";var p=_?u:' ';i='"}t=i,e.build_modal(t),a(".modaal-gallery-item.is_active").is(".gallery-item-0")&&a(".modaal-gallery-prev").hide(),a(".modaal-gallery-item.is_active").is(".gallery-item-"+o)&&a(".modaal-gallery-next").hide()},gallery_update:function(t){var o=this,e=a("#"+o.scope.id),i=e.find(".modaal-gallery-item"),l=i.length-1;if(0==l)return!1;var n=e.find(".modaal-gallery-prev"),s=e.find(".modaal-gallery-next"),d=0,r=0,c=e.find(".modaal-gallery-item."+o.private_options.active_class),m="next"==t?c.next(".modaal-gallery-item"):c.prev(".modaal-gallery-item");return o.options.before_image_change.call(o,c,m),("prev"!=t||!e.find(".gallery-item-0").hasClass("is_active"))&&(("next"!=t||!e.find(".gallery-item-"+l).hasClass("is_active"))&&void c.stop().animate({opacity:0},250,function(){m.addClass("is_next").css({position:"absolute",display:"block",opacity:0});var t=a(document).width(),i=t>1140?280:50;d=e.find(".modaal-gallery-item.is_next").width(),r=e.find(".modaal-gallery-item.is_next").height();var p=e.find(".modaal-gallery-item.is_next img").prop("naturalWidth"),u=e.find(".modaal-gallery-item.is_next img").prop("naturalHeight");p>t-i?(d=t-i,e.find(".modaal-gallery-item.is_next").css({width:d}),e.find(".modaal-gallery-item.is_next img").css({width:d}),r=e.find(".modaal-gallery-item.is_next").find("img").height()):(d=p,r=u),e.find(".modaal-gallery-item-wrap").stop().animate({width:d,height:r},250,function(){c.removeClass(o.private_options.active_class+" "+o.options.gallery_active_class).removeAttr("style"),c.find("img").removeAttr("style"),m.addClass(o.private_options.active_class+" "+o.options.gallery_active_class).removeClass("is_next").css("position",""),m.stop().animate({opacity:1},250,function(){a(this).removeAttr("style").css({width:"100%"}),a(this).find("img").css("width","100%"),e.find(".modaal-gallery-item-wrap").removeAttr("style"),o.options.after_image_change.call(o,m)}),e.find(".modaal-gallery-item").removeAttr("tabindex"),e.find(".modaal-gallery-item."+o.private_options.active_class).attr("tabindex","0").focus(),e.find(".modaal-gallery-item."+o.private_options.active_class).is(".gallery-item-0")?n.stop().animate({opacity:0},150,function(){a(this).hide()}):n.stop().css({display:"block",opacity:n.css("opacity")}).animate({opacity:1},150),e.find(".modaal-gallery-item."+o.private_options.active_class).is(".gallery-item-"+l)?s.stop().animate({opacity:0},150,function(){a(this).hide()}):s.stop().css({display:"block",opacity:n.css("opacity")}).animate({opacity:1},150)})}))},create_video:function(a){var t,o=this;t='',o.build_modal('
    '+t+"
    ")},create_iframe:function(a){var t,o=this;t=null!==o.options.width||void 0!==o.options.width||null!==o.options.height||void 0!==o.options.height?'':'
    Please specify a width and height for your iframe
    ',o.build_modal(t)},modaal_open:function(){var t=this,o=a("#"+t.scope.id),e=t.options.animation;"none"===e&&(o.removeClass("modaal-start_none"),t.options.after_open.call(t,o)),"fade"===e&&o.removeClass("modaal-start_fade"),"slide-down"===e&&o.removeClass("modaal-start_slide_down");var i=o;a(".modaal-wrapper *[tabindex=0]").removeAttr("tabindex"),i="image"==t.options.type?a("#"+t.scope.id).find(".modaal-gallery-item."+t.private_options.active_class):o.find(".modaal-iframe-elem").length?o.find(".modaal-iframe-elem"):o.find(".modaal-video-wrap").length?o.find(".modaal-video-wrap"):o.find(".modaal-focus"),i.attr("tabindex","0").focus(),"none"!==e&&setTimeout(function(){t.options.after_open.call(t,o)},t.options.after_callback_delay)},modaal_close:function(){var t=this,o=a("#"+t.scope.id);t.options.before_close.call(t,o),null!==t.xhr&&(t.xhr.abort(),t.xhr=null),"none"===t.options.animation&&o.addClass("modaal-start_none"),"fade"===t.options.animation&&o.addClass("modaal-start_fade"),"slide-down"===t.options.animation&&o.addClass("modaal-start_slide_down"),setTimeout(function(){"inline"==t.options.type&&a("#"+t.scope.id+" .modaal-content-container").contents().detach().appendTo(t.scope.source),o.remove(),t.options.after_close.call(t),t.scope.is_open=!1},t.options.after_callback_delay),t.modaal_overlay("hide"),null!=t.lastFocus&&t.lastFocus.focus()},modaal_overlay:function(t){var o=this;"show"==t?(o.scope.is_open=!0,o.options.background_scroll||o.dom.addClass("modaal-noscroll"),a("#"+o.scope.id+"_overlay").length<1&&o.dom.append('
    '),a("#"+o.scope.id+"_overlay").css("background",o.options.background).stop().animate({opacity:o.options.overlay_opacity},o.options.animation_speed,function(){o.modaal_open()})):"hide"==t&&a("#"+o.scope.id+"_overlay").stop().animate({opacity:0},o.options.animation_speed,function(){a(this).remove(),o.dom.removeClass("modaal-noscroll")})},is_touch:function(){return"ontouchstart"in window||navigator.maxTouchPoints}},e=[];a.fn.modaal=function(t){return this.each(function(i){var l=a(this).data("modaal");if(l){if("string"==typeof t)switch(t){case"open":l.create_modaal(l);break;case"close":l.modaal_close()}}else{var n=Object.create(o);n.init(t,this),a.data(this,"modaal",n),e.push({element:a(this).attr("class"),options:t})}})},a.fn.modaal.options={type:"inline",content_source:null,animation:"fade",animation_speed:300,after_callback_delay:350,is_locked:!1,hide_close:!1,background:"#000",overlay_opacity:"0.8",overlay_close:!0,accessible_title:"Dialog Window",start_open:!1,fullscreen:!1,custom_class:"",background_scroll:!1,should_open:!0,close_text:"Close",close_aria_label:"Close (Press escape to close)",width:null,height:null,before_open:function(){},after_open:function(){},before_close:function(){},after_close:function(){},source:function(a,t){return t},confirm_button_text:"Confirm",confirm_cancel_button_text:"Cancel",confirm_title:"Confirm Title",confirm_content:"

    This is the default confirm dialog content. Replace me through the options

    ",confirm_callback:function(){},confirm_cancel_callback:function(){},gallery_active_class:"gallery_active_item",outer_controls:!1,before_image_change:function(a,t){},after_image_change:function(a){},loading_content:'
    ',loading_class:"is_loading",ajax_error_class:"modaal-error",ajax_success:function(){},instagram_id:null},a(function(){var o=a(".modaal");o.length&&o.each(function(){t(a(this))});var i=new MutationObserver(function(o){o.forEach(function(o){if(o.addedNodes&&o.addedNodes.length>0){[].some.call(o.addedNodes,function(o){var i=a(o);(i.is("a")||i.is("button"))&&(i.hasClass("modaal")?t(i):e.forEach(function(t){if(t.element==i.attr("class"))return a(i).modaal(t.options),!1}))})}})}),l={subtree:!0,attributes:!0,childList:!0,characterData:!0};setTimeout(function(){i.observe(document.body,l)},500)})}(jQuery,window,document); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/assets/pagination/pagination.css b/wp-content/plugins/cookie-notice/assets/pagination/pagination.css new file mode 100644 index 0000000..b6225cc --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/pagination/pagination.css @@ -0,0 +1 @@ +.paginationjs{display:flex;line-height:1.6;font-family:Marmelad,"Lucida Grande",Arial,"Hiragino Sans GB",Georgia,sans-serif;font-size:14px;box-sizing:initial}.paginationjs:after{display:table;content:" ";clear:both}.paginationjs .paginationjs-pages{float:left;margin-left:10px}.paginationjs .paginationjs-pages ul{float:left;margin:0;padding:0}.paginationjs .paginationjs-go-button,.paginationjs .paginationjs-go-input,.paginationjs .paginationjs-size-changer{margin-left:10px;float:left;font-size:14px}.paginationjs .paginationjs-pages li{float:left;border:1px solid #aaa;border-right:none;list-style:none}.paginationjs .paginationjs-pages li>a{min-width:30px;height:28px;line-height:28px;display:block;background:#fff;font-size:14px;color:#333;text-decoration:none;text-align:center;cursor:pointer}.paginationjs .paginationjs-pages li>a:hover{background:#eee}.paginationjs .paginationjs-pages li.active{border:none}.paginationjs .paginationjs-pages li.active>a{height:30px;line-height:30px;background:#aaa;color:#fff;cursor:default}.paginationjs .paginationjs-pages li.disabled>a{opacity:.3;cursor:default}.paginationjs .paginationjs-pages li.disabled>a:hover{background:0 0}.paginationjs .paginationjs-pages li:first-child,.paginationjs .paginationjs-pages li:first-child>a{border-radius:3px 0 0 3px}.paginationjs .paginationjs-pages li:last-child{border-right:1px solid #aaa;border-radius:0 3px 3px 0}.paginationjs .paginationjs-pages li:last-child>a{border-radius:0 3px 3px 0}.paginationjs .paginationjs-size-changer>select{height:28px;background:#fff;border-radius:3px;border:1px solid #aaa;padding:0;font-size:14px;text-align:center;vertical-align:baseline;outline:0;box-shadow:none;box-sizing:initial}.paginationjs .paginationjs-go-input>input[type=text]{width:30px;height:28px;background:#fff;border-radius:3px;border:1px solid #aaa;padding:0;font-size:14px;text-align:center;vertical-align:baseline;outline:0;box-shadow:none;box-sizing:initial}.paginationjs .paginationjs-go-button>input[type=button]{min-width:40px;height:30px;line-height:28px;background:#fff;border-radius:3px;border:1px solid #aaa;text-align:center;padding:0 8px;font-size:14px;vertical-align:baseline;outline:0;box-shadow:none;color:#333;cursor:pointer;vertical-align:middle\9}.paginationjs .paginationjs-go-button>input[type=button]:hover{background-color:#f8f8f8}.paginationjs .paginationjs-nav{float:left;height:30px;line-height:30px;font-size:14px}.paginationjs.paginationjs-small{font-size:12px}.paginationjs.paginationjs-small .paginationjs-pages li>a{min-width:26px;height:24px;line-height:24px;font-size:12px}.paginationjs.paginationjs-small .paginationjs-pages li.active>a{height:26px;line-height:26px}.paginationjs.paginationjs-small .paginationjs-size-changer{font-size:12px}.paginationjs.paginationjs-small .paginationjs-size-changer>select{height:24px;font-size:12px}.paginationjs.paginationjs-small .paginationjs-go-input{font-size:12px}.paginationjs.paginationjs-small .paginationjs-go-input>input[type=text]{width:26px;height:24px;font-size:12px}.paginationjs.paginationjs-small .paginationjs-go-button{font-size:12px}.paginationjs.paginationjs-small .paginationjs-go-button>input[type=button]{min-width:30px;height:26px;line-height:24px;padding:0 6px;font-size:12px}.paginationjs.paginationjs-small .paginationjs-nav{height:26px;line-height:26px;font-size:12px}.paginationjs.paginationjs-big{font-size:16px}.paginationjs.paginationjs-big .paginationjs-pages li>a{min-width:36px;height:34px;line-height:34px;font-size:16px}.paginationjs.paginationjs-big .paginationjs-pages li.active>a{height:36px;line-height:36px}.paginationjs.paginationjs-big .paginationjs-size-changer{font-size:16px}.paginationjs.paginationjs-big .paginationjs-size-changer>select{height:34px;font-size:16px}.paginationjs.paginationjs-big .paginationjs-go-input{font-size:16px}.paginationjs.paginationjs-big .paginationjs-go-input>input[type=text]{width:36px;height:34px;font-size:16px}.paginationjs.paginationjs-big .paginationjs-go-button{font-size:16px}.paginationjs.paginationjs-big .paginationjs-go-button>input[type=button]{min-width:50px;height:36px;line-height:34px;padding:0 12px;font-size:16px}.paginationjs.paginationjs-big .paginationjs-nav{height:36px;line-height:36px;font-size:16px}.paginationjs>:first-child{margin-left:0}.paginationjs.paginationjs-theme-blue .paginationjs-pages li{border-color:#289de9}.paginationjs.paginationjs-theme-blue .paginationjs-pages li>a{color:#289de9}.paginationjs.paginationjs-theme-blue .paginationjs-pages li>a:hover{background:#e9f4fc}.paginationjs.paginationjs-theme-blue .paginationjs-pages li.active>a{background:#289de9;color:#fff}.paginationjs.paginationjs-theme-blue .paginationjs-pages li.disabled>a:hover{background:0 0}.paginationjs.paginationjs-theme-blue .paginationjs-go-input>input[type=text],.paginationjs.paginationjs-theme-blue .paginationjs-size-changer>select{border-color:#289de9}.paginationjs.paginationjs-theme-blue .paginationjs-go-button>input[type=button]{background:#289de9;border-color:#289de9;color:#fff}.paginationjs.paginationjs-theme-blue .paginationjs-go-button>input[type=button]:hover{background-color:#3ca5ea}.paginationjs.paginationjs-theme-green .paginationjs-pages li{border-color:#449d44}.paginationjs.paginationjs-theme-green .paginationjs-pages li>a{color:#449d44}.paginationjs.paginationjs-theme-green .paginationjs-pages li>a:hover{background:#ebf4eb}.paginationjs.paginationjs-theme-green .paginationjs-pages li.active>a{background:#449d44;color:#fff}.paginationjs.paginationjs-theme-green .paginationjs-pages li.disabled>a:hover{background:0 0}.paginationjs.paginationjs-theme-green .paginationjs-go-input>input[type=text],.paginationjs.paginationjs-theme-green .paginationjs-size-changer>select{border-color:#449d44}.paginationjs.paginationjs-theme-green .paginationjs-go-button>input[type=button]{background:#449d44;border-color:#449d44;color:#fff}.paginationjs.paginationjs-theme-green .paginationjs-go-button>input[type=button]:hover{background-color:#55a555}.paginationjs.paginationjs-theme-yellow .paginationjs-pages li{border-color:#ec971f}.paginationjs.paginationjs-theme-yellow .paginationjs-pages li>a{color:#ec971f}.paginationjs.paginationjs-theme-yellow .paginationjs-pages li>a:hover{background:#fdf5e9}.paginationjs.paginationjs-theme-yellow .paginationjs-pages li.active>a{background:#ec971f;color:#fff}.paginationjs.paginationjs-theme-yellow .paginationjs-pages li.disabled>a:hover{background:0 0}.paginationjs.paginationjs-theme-yellow .paginationjs-go-input>input[type=text],.paginationjs.paginationjs-theme-yellow .paginationjs-size-changer>select{border-color:#ec971f}.paginationjs.paginationjs-theme-yellow .paginationjs-go-button>input[type=button]{background:#ec971f;border-color:#ec971f;color:#fff}.paginationjs.paginationjs-theme-yellow .paginationjs-go-button>input[type=button]:hover{background-color:#eea135}.paginationjs.paginationjs-theme-red .paginationjs-pages li{border-color:#c9302c}.paginationjs.paginationjs-theme-red .paginationjs-pages li>a{color:#c9302c}.paginationjs.paginationjs-theme-red .paginationjs-pages li>a:hover{background:#faeaea}.paginationjs.paginationjs-theme-red .paginationjs-pages li.active>a{background:#c9302c;color:#fff}.paginationjs.paginationjs-theme-red .paginationjs-pages li.disabled>a:hover{background:0 0}.paginationjs.paginationjs-theme-red .paginationjs-go-input>input[type=text],.paginationjs.paginationjs-theme-red .paginationjs-size-changer>select{border-color:#c9302c}.paginationjs.paginationjs-theme-red .paginationjs-go-button>input[type=button]{background:#c9302c;border-color:#c9302c;color:#fff}.paginationjs.paginationjs-theme-red .paginationjs-go-button>input[type=button]:hover{background-color:#ce4541}.paginationjs .paginationjs-pages li.paginationjs-next{border-right:1px solid #aaa\9}.paginationjs .paginationjs-size-changer{margin-left:5px\9}.paginationjs .paginationjs-size-changer>select{line-height:28px\9;vertical-align:middle\9}.paginationjs .paginationjs-go-input{margin-left:5px\9}.paginationjs .paginationjs-go-input>input[type=text]{line-height:28px\9;vertical-align:middle\9}.paginationjs .paginationjs-go-button{margin-left:5px\9}.paginationjs.paginationjs-big .paginationjs-pages li>a{line-height:36px\9}.paginationjs.paginationjs-big .paginationjs-go-input>input[type=text]{height:36px\9;line-height:36px\9} \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/assets/pagination/pagination.js b/wp-content/plugins/cookie-notice/assets/pagination/pagination.js new file mode 100644 index 0000000..fba4345 --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/pagination/pagination.js @@ -0,0 +1,1190 @@ +/* + * pagination.js 2.6.0 + * A jQuery plugin to provide simple yet fully customisable pagination. + * https://github.com/superRaytin/paginationjs + * + * Homepage: http://pagination.js.org + * + * Copyright 2014-2100, superRaytin + * Released under the MIT license. + */ + +(function(global, $) { + + if (typeof $ === 'undefined') { + throwError('Pagination requires jQuery.'); + } + + var pluginName = 'pagination'; + + var pluginHookMethod = 'addHook'; + + var eventPrefix = '__pagination-'; + + if ($.fn.pagination) { + throwError('plugin conflicted, the name "pagination" has been taken by another jQuery plugin.'); + } + + $.fn[pluginName] = function(options) { + + if (typeof options === 'undefined') { + return this; + } + + var container = $(this); + + var attributes = $.extend({}, $.fn[pluginName].defaults, options); + + var pagination = { + + initialize: function() { + var self = this; + + // Cache data for current instance + if (!container.data('pagination')) { + container.data('pagination', {}); + } + + if (self.callHook('beforeInit') === false) return; + + // Pagination has been initialized, destroy it + if (container.data('pagination').initialized) { + $('.paginationjs', container).remove(); + } + + // Whether to disable Pagination at the initialization + self.disabled = !!attributes.disabled; + + // Model will be passed to the callback function + var model = self.model = { + pageRange: attributes.pageRange, + pageSize: attributes.pageSize + }; + + // Parse dataSource to find available paging data + self.parseDataSource(attributes.dataSource, function(dataSource) { + + // Asynchronous mode + self.isAsync = Helpers.isString(dataSource); + if (Helpers.isArray(dataSource)) { + model.totalNumber = attributes.totalNumber = dataSource.length; + } + + // Asynchronous mode and a 'totalNumberLocator' has been specified + self.isDynamicTotalNumber = self.isAsync && attributes.totalNumberLocator; + + var el = self.render(true); + + // Add extra className to the pagination element + if (attributes.className) { + el.addClass(attributes.className); + } + + model.el = el; + + // Append / prepend pagination element to the container + container[attributes.position === 'bottom' ? 'append' : 'prepend'](el); + + // Bind events + self.observer(); + + // Mark pagination has been initialized + container.data('pagination').initialized = true; + + // Call hook after initialization + self.callHook('afterInit', el); + }); + }, + + render: function(isBoot) { + var self = this; + var model = self.model; + var el = model.el || $('
    '); + var isForced = isBoot !== true; + + self.callHook('beforeRender', isForced); + + var currentPage = model.pageNumber || attributes.pageNumber; + var pageRange = attributes.pageRange || 0; + var totalPage = self.getTotalPage(); + + var rangeStart = currentPage - pageRange; + var rangeEnd = currentPage + pageRange; + + if (rangeEnd > totalPage) { + rangeEnd = totalPage; + rangeStart = totalPage - pageRange * 2; + rangeStart = rangeStart < 1 ? 1 : rangeStart; + } + + if (rangeStart <= 1) { + rangeStart = 1; + rangeEnd = Math.min(pageRange * 2 + 1, totalPage); + } + + el.html(self.generateHTML({ + currentPage: currentPage, + pageRange: pageRange, + rangeStart: rangeStart, + rangeEnd: rangeEnd + })); + + // Whether to hide pagination when there is only one page + if (attributes.hideOnlyOnePage) { + el[totalPage <= 1 ? 'hide' : 'show'](); + } + + self.callHook('afterRender', isForced); + + return el; + }, + + getPageLinkTag: function(index) { + var pageLink = attributes.pageLink; + return pageLink ? `
    ${index}` : `${index}`; + }, + + // Generate HTML for page numbers + generatePageNumbersHTML: function(args) { + var self = this; + var currentPage = args.currentPage; + var totalPage = self.getTotalPage(); + var getPageLinkTag = self.getPageLinkTag; + var rangeStart = args.rangeStart; + var rangeEnd = args.rangeEnd; + var html = ''; + var i; + + var ellipsisText = attributes.ellipsisText; + + var classPrefix = attributes.classPrefix; + var pageClassName = attributes.pageClassName || ''; + var activeClassName = attributes.activeClassName || ''; + var disableClassName = attributes.disableClassName || ''; + + // Display all page numbers if page range disabled + if (attributes.pageRange === null) { + for (i = 1; i <= totalPage; i++) { + if (i == currentPage) { + html += `
  • ${i}
  • `; + } else { + html += `
  • ${getPageLinkTag(i)}
  • `; + } + } + return html; + } + + if (rangeStart <= 3) { + for (i = 1; i < rangeStart; i++) { + if (i == currentPage) { + html += `
  • ${i}
  • `; + } else { + html += `
  • ${getPageLinkTag(i)}
  • `; + } + } + } else { + if (!attributes.hideFirstOnEllipsisShow) { + html += `
  • ${getPageLinkTag(1)}
  • `; + } + html += `
  • ${ellipsisText}
  • `; + } + + for (i = rangeStart; i <= rangeEnd; i++) { + if (i == currentPage) { + html += `
  • ${i}
  • `; + } else { + html += `
  • ${getPageLinkTag(i)}
  • `; + } + } + + if (rangeEnd >= totalPage - 2) { + for (i = rangeEnd + 1; i <= totalPage; i++) { + html += `
  • ${getPageLinkTag(i)}
  • `; + } + } else { + html += `
  • ${ellipsisText}
  • `; + + if (!attributes.hideLastOnEllipsisShow) { + html += `
  • ${getPageLinkTag(totalPage)}
  • `; + } + } + + return html; + }, + + // Generate HTML content + generateHTML: function(args) { + var self = this; + var currentPage = args.currentPage; + var totalPage = self.getTotalPage(); + var getPageLinkTag = self.getPageLinkTag; + + var totalNumber = self.getTotalNumber(); + + var pageSize = attributes.pageSize; + var showPrevious = attributes.showPrevious; + var showNext = attributes.showNext; + var showPageNumbers = attributes.showPageNumbers; + var showNavigator = attributes.showNavigator; + var showSizeChanger = attributes.showSizeChanger; + var sizeChangerOptions = attributes.sizeChangerOptions; + var showGoInput = attributes.showGoInput; + var showGoButton = attributes.showGoButton; + + var prevText = attributes.prevText; + var nextText = attributes.nextText; + var goButtonText = attributes.goButtonText; + + var classPrefix = attributes.classPrefix; + var disableClassName = attributes.disableClassName || ''; + var ulClassName = attributes.ulClassName || ''; + var prevClassName = attributes.prevClassName || ''; + var nextClassName = attributes.nextClassName || ''; + + var html = ''; + var sizeSelect = `'; + var goButton = ``; + var formattedString; + + var formatSizeChanger = typeof attributes.formatSizeChanger === 'function' ? attributes.formatSizeChanger(currentPage, totalPage, totalNumber) : attributes.formatSizeChanger; + var formatNavigator = typeof attributes.formatNavigator === 'function' ? attributes.formatNavigator(currentPage, totalPage, totalNumber) : attributes.formatNavigator; + var formatGoInput = typeof attributes.formatGoInput === 'function' ? attributes.formatGoInput(goInput, currentPage, totalPage, totalNumber) : attributes.formatGoInput; + var formatGoButton = typeof attributes.formatGoButton === 'function' ? attributes.formatGoButton(goButton, currentPage, totalPage, totalNumber) : attributes.formatGoButton; + + var autoHidePrevious = typeof attributes.autoHidePrevious === 'function' ? attributes.autoHidePrevious() : attributes.autoHidePrevious; + var autoHideNext = typeof attributes.autoHideNext === 'function' ? attributes.autoHideNext() : attributes.autoHideNext; + + var header = typeof attributes.header === 'function' ? attributes.header(currentPage, totalPage, totalNumber) : attributes.header; + var footer = typeof attributes.footer === 'function' ? attributes.footer(currentPage, totalPage, totalNumber) : attributes.footer; + + // Prepend extra contents to the pagination buttons + if (header) { + formattedString = self.replaceVariables(header, { + currentPage: currentPage, + totalPage: totalPage, + totalNumber: totalNumber + }); + html += formattedString; + } + + // Whether to display navigator + if (showNavigator) { + if (formatNavigator) { + formattedString = self.replaceVariables(formatNavigator, { + currentPage: currentPage, + totalPage: totalPage, + totalNumber: totalNumber, + rangeStart: (currentPage - 1) * pageSize + 1, + rangeEnd: Math.min(currentPage * pageSize, totalNumber) + }); + html += `
    ${formattedString}
    `; + } + } + + if (showPrevious || showPageNumbers || showNext) { + html += '
    '; + + if (ulClassName) { + html += `
      `; + } else { + html += '
        '; + } + + // Whether to display Previous button + if (showPrevious) { + if (currentPage <= 1) { + if (!autoHidePrevious) { + html += `
      • ${prevText}
      • `; + } + } else { + html += `
      • ${getPageLinkTag(prevText)}
      • `; + } + } + + // Whether to display page numbers + if (showPageNumbers) { + html += self.generatePageNumbersHTML(args); + } + + // Whether to display Next button + if (showNext) { + if (currentPage >= totalPage) { + if (!autoHideNext) { + html += `
      • ${nextText}
      • `; + } + } else { + html += `
      • ${getPageLinkTag(nextText)}
      • `; + } + } + html += `
    `; + } + + if (showSizeChanger) { + if (Helpers.isArray(sizeChangerOptions)) { + if (sizeChangerOptions.indexOf(pageSize) === -1) { + sizeChangerOptions.unshift(pageSize); + sizeChangerOptions.sort((a, b) => a - b); + } + for (let i = 0; i < sizeChangerOptions.length; i++) { + sizeSelect += ``; + } + sizeSelect += ``; + formattedString = sizeSelect; + + if (formatSizeChanger) { + formattedString = self.replaceVariables(formatSizeChanger, { + length: sizeSelect, + total: totalNumber + }); + } + html += `
    ${formattedString}
    `; + } + } + + // Whether to display Go input + if (showGoInput) { + if (formatGoInput) { + formattedString = self.replaceVariables(formatGoInput, { + currentPage: currentPage, + totalPage: totalPage, + totalNumber: totalNumber, + input: goInput + }); + html += `
    ${formattedString}
    `; + } + } + + // Whether to display Go button + if (showGoButton) { + if (formatGoButton) { + formattedString = self.replaceVariables(formatGoButton, { + currentPage: currentPage, + totalPage: totalPage, + totalNumber: totalNumber, + button: goButton + }); + html += `
    ${formattedString}
    `; + } + } + + // Append extra contents to the pagination buttons + if (footer) { + formattedString = self.replaceVariables(footer, { + currentPage: currentPage, + totalPage: totalPage, + totalNumber: totalNumber + }); + html += formattedString; + } + + return html; + }, + + // dataSource is a request URL and a 'totalNumberLocator' function specified + // execute it to find out 'totalNumber' from the response + findTotalNumberFromRemoteResponse: function(response) { + var self = this; + self.model.totalNumber = attributes.totalNumberLocator(response); + }, + + // Go to the specified page + go: function(number, callback) { + var self = this; + var model = self.model; + + if (self.disabled) return; + + var pageNumber = number; + pageNumber = parseInt(pageNumber); + + if (!pageNumber || pageNumber < 1) return; + + var pageSize = attributes.pageSize; + var totalNumber = self.getTotalNumber(); + var totalPage = self.getTotalPage(); + + if (totalNumber > 0 && pageNumber > totalPage) return; + + // Pick paging data in synchronous mode + if (!self.isAsync) { + render(self.getPagingData(pageNumber)); + return; + } + + var postData = {}; + var alias = attributes.alias || {}; + var pageSizeName = alias.pageSize ? alias.pageSize : 'pageSize'; + var pageNumberName = alias.pageNumber ? alias.pageNumber : 'pageNumber'; + postData[pageSizeName] = pageSize; + postData[pageNumberName] = pageNumber; + + var ajaxParams = typeof attributes.ajax === 'function' ? attributes.ajax() : attributes.ajax; + + // If the pageNumber's value starts with 0 via Ajax + if (ajaxParams && ajaxParams.pageNumberStartWithZero) { + postData[pageNumberName] = pageNumber - 1; + } + + var formatAjaxParams = { + type: 'get', + cache: false, + data: {}, + contentType: 'application/x-www-form-urlencoded; charset=UTF-8', + dataType: 'json', + async: true + }; + + $.extend(true, formatAjaxParams, ajaxParams); + $.extend(formatAjaxParams.data, postData); + + formatAjaxParams.url = attributes.dataSource; + formatAjaxParams.success = function(response) { + try { + self.model.originalResponse = response; + if (self.isDynamicTotalNumber) { + self.findTotalNumberFromRemoteResponse(response); + } else { + self.model.totalNumber = attributes.totalNumber; + } + + var finalData = self.filterDataWithLocator(response); + render(finalData); + } catch (e) { + if(typeof attributes.onError === 'function') { + attributes.onError(e, 'ajaxSuccessHandlerError'); + } else { + throw e; + } + } + }; + formatAjaxParams.error = function(jqXHR, textStatus, errorThrown) { + attributes.formatAjaxError && attributes.formatAjaxError(jqXHR, textStatus, errorThrown); + self.enable(); + }; + + self.disable(); + + if (attributes.ajaxFunction) { + attributes.ajaxFunction(formatAjaxParams); + } else { + $.ajax(formatAjaxParams); + } + + function render(data) { + if (self.callHook('beforePaging', pageNumber) === false) return false; + + // Pagination direction + model.direction = typeof model.pageNumber === 'undefined' ? 0 : (pageNumber > model.pageNumber ? 1 : -1); + + model.pageNumber = pageNumber; + + self.render(); + + if (self.disabled && self.isAsync) { + // enable pagination + self.enable(); + } + + // cache model data + container.data('pagination').model = model; + + // format result data before callback invoked + if (attributes.formatResult) { + var cloneData = $.extend(true, [], data); + if (!Helpers.isArray(data = attributes.formatResult(cloneData))) { + data = cloneData; + } + } + + container.data('pagination').currentPageData = data; + + self.doCallback(data, callback); + + self.callHook('afterPaging', pageNumber); + + if (pageNumber == 1) { + self.callHook('afterIsFirstPage'); + } else if (pageNumber == self.getTotalPage()) { + self.callHook('afterIsLastPage'); + } + } + }, + + doCallback: function(data, customCallback) { + var self = this; + var model = self.model; + + if (typeof customCallback === 'function') { + customCallback(data, model); + } else if (typeof attributes.callback === 'function') { + attributes.callback(data, model); + } + }, + + destroy: function() { + if (this.callHook('beforeDestroy') === false) return; + + this.model.el.remove(); + container.off(); + + // Remove style element + $('#paginationjs-style').remove(); + + this.callHook('afterDestroy'); + }, + + previous: function(callback) { + this.go(this.model.pageNumber - 1, callback); + }, + + next: function(callback) { + this.go(this.model.pageNumber + 1, callback); + }, + + disable: function() { + var self = this; + var source = self.isAsync ? 'async' : 'sync'; + + if (self.callHook('beforeDisable', source) === false) return; + + self.disabled = true; + self.model.disabled = true; + + self.callHook('afterDisable', source); + }, + + enable: function() { + var self = this; + var source = self.isAsync ? 'async' : 'sync'; + + if (self.callHook('beforeEnable', source) === false) return; + + self.disabled = false; + self.model.disabled = false; + + self.callHook('afterEnable', source); + }, + + refresh: function(callback) { + this.go(this.model.pageNumber, callback); + }, + + show: function() { + var self = this; + + if (self.model.el.is(':visible')) return; + + self.model.el.show(); + }, + + hide: function() { + var self = this; + + if (!self.model.el.is(':visible')) return; + + self.model.el.hide(); + }, + + // Replace variables for template string + replaceVariables: function(template, variables) { + var formattedString; + + for (var key in variables) { + var value = variables[key]; + var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img'); + + formattedString = (formattedString || template).replace(regexp, value); + } + + return formattedString; + }, + + getPagingData: function(number) { + var pageSize = attributes.pageSize; + var dataSource = attributes.dataSource; + var totalNumber = this.getTotalNumber(); + + var start = pageSize * (number - 1) + 1; + var end = Math.min(number * pageSize, totalNumber); + + return dataSource.slice(start - 1, end); + }, + + getTotalNumber: function() { + return this.model.totalNumber || attributes.totalNumber || 0; + }, + + getTotalPage: function() { + return Math.ceil(this.getTotalNumber() / attributes.pageSize); + }, + + getLocator: function(locator) { + var result; + + if (typeof locator === 'string') { + result = locator; + } else if (typeof locator === 'function') { + result = locator(); + } else { + throwError('"locator" is incorrect. Expect string or function type.'); + } + + return result; + }, + + // Filter data with "locator" + filterDataWithLocator: function(dataSource) { + var locator = this.getLocator(attributes.locator); + var filteredData; + + // Datasource is an Object, use "locator" to locate available data + if (Helpers.isObject(dataSource)) { + try { + $.each(locator.split('.'), function(index, item) { + filteredData = (filteredData ? filteredData : dataSource)[item]; + }); + } + catch (e) { + // ignore + } + + if (!filteredData) { + throwError('dataSource.' + locator + ' is undefined.'); + } else if (!Helpers.isArray(filteredData)) { + throwError('dataSource.' + locator + ' should be an Array.'); + } + } + + return filteredData || dataSource; + }, + + parseDataSource: function(dataSource, callback) { + var self = this; + + if (Helpers.isObject(dataSource)) { + callback(attributes.dataSource = self.filterDataWithLocator(dataSource)); + } else if (Helpers.isArray(dataSource)) { + callback(attributes.dataSource = dataSource); + } else if (typeof dataSource === 'function') { + attributes.dataSource(function(data) { + if (!Helpers.isArray(data)) { + throwError('The parameter of "done" Function should be an Array.'); + } + self.parseDataSource.call(self, data, callback); + }); + } else if (typeof dataSource === 'string') { + if (/^https?|file:/.test(dataSource)) { + attributes.ajaxDataType = 'jsonp'; + } + callback(dataSource); + } else { + throwError('Unexpected dataSource type'); + } + }, + + callHook: function(hook) { + var paginationData = container.data('pagination') || {}; + var result; + + var args = Array.prototype.slice.apply(arguments); + args.shift(); + + if (attributes[hook] && typeof attributes[hook] === 'function') { + if (attributes[hook].apply(global, args) === false) { + result = false; + } + } + + if (paginationData.hooks && paginationData.hooks[hook]) { + $.each(paginationData.hooks[hook], function(index, item) { + if (item.apply(global, args) === false) { + result = false; + } + }); + } + + return result !== false; + }, + + observer: function() { + var self = this; + var el = self.model.el; + + // Go to specified page number + container.on(eventPrefix + 'go', function(event, pageNumber, done) { + if (typeof pageNumber === 'string') { + pageNumber = parseInt(pageNumber.trim()); + } + + if (!pageNumber) return; + + if (typeof pageNumber !== 'number') { + throwError('"pageNumber" is incorrect. (Number)'); + } + + self.go(pageNumber, done); + }); + + // Page number button click listener + el.on('click', '.J-paginationjs-page', function(event) { + var current = $(event.currentTarget); + var pageNumber = current.attr('data-num').trim(); + + if (!pageNumber || current.hasClass(attributes.disableClassName) || current.hasClass(attributes.activeClassName)) return; + + if (self.callHook('beforePageOnClick', event, pageNumber) === false) return false; + + self.go(pageNumber); + + self.callHook('afterPageOnClick', event, pageNumber); + + if (!attributes.pageLink) return false; + }); + + // Previous button click listener + el.on('click', '.J-paginationjs-previous', function(event) { + var current = $(event.currentTarget); + var pageNumber = current.attr('data-num').trim(); + + if (!pageNumber || current.hasClass(attributes.disableClassName)) return; + + if (self.callHook('beforePreviousOnClick', event, pageNumber) === false) return false; + + self.go(pageNumber); + + self.callHook('afterPreviousOnClick', event, pageNumber); + + if (!attributes.pageLink) return false; + }); + + // Next button click listener + el.on('click', '.J-paginationjs-next', function(event) { + var current = $(event.currentTarget); + var pageNumber = current.attr('data-num').trim(); + + if (!pageNumber || current.hasClass(attributes.disableClassName)) return; + + if (self.callHook('beforeNextOnClick', event, pageNumber) === false) return false; + + self.go(pageNumber); + + self.callHook('afterNextOnClick', event, pageNumber); + + if (!attributes.pageLink) return false; + }); + + // Go button click listener + el.on('click', '.J-paginationjs-go-button', function(event) { + var pageNumber = $('.J-paginationjs-go-pagenumber', el).val(); + + if (self.callHook('beforeGoButtonOnClick', event, pageNumber) === false) return false; + + container.trigger(eventPrefix + 'go', pageNumber); + + self.callHook('afterGoButtonOnClick', event, pageNumber); + }); + + // go input enter keyup listener + el.on('keyup', '.J-paginationjs-go-pagenumber', function(event) { + if (event.which === 13) { + var pageNumber = $(event.currentTarget).val(); + + if (self.callHook('beforeGoInputOnEnter', event, pageNumber) === false) return false; + + container.trigger(eventPrefix + 'go', pageNumber); + + // Maintain the cursor + $('.J-paginationjs-go-pagenumber', el).focus(); + + self.callHook('afterGoInputOnEnter', event, pageNumber); + } + }); + + el.on('change', '.J-paginationjs-size-select', function(event) { + var current = $(event.currentTarget); + var size = parseInt(current.val()); + var currentPage = self.model.pageNumber || attributes.pageNumber; + + if (typeof size !== 'number') return; + + if (self.callHook('beforeSizeSelectorChange', event, size) === false) return false; + + attributes.pageSize = size; + self.model.pageSize = size; + self.model.totalPage = self.getTotalPage(); + if (currentPage > self.model.totalPage) { + currentPage = self.model.totalPage; + } + self.go(currentPage); + + self.callHook('afterSizeSelectorChange', event, size); + + if (!attributes.pageLink) return false; + }); + + // Previous page + container.on(eventPrefix + 'previous', function(event, done) { + self.previous(done); + }); + + // Next page + container.on(eventPrefix + 'next', function(event, done) { + self.next(done); + }); + + // Disable + container.on(eventPrefix + 'disable', function() { + self.disable(); + }); + + // Enable + container.on(eventPrefix + 'enable', function() { + self.enable(); + }); + + // Refresh + container.on(eventPrefix + 'refresh', function(event, done) { + self.refresh(done); + }); + + // Show + container.on(eventPrefix + 'show', function() { + self.show(); + }); + + // Hide + container.on(eventPrefix + 'hide', function() { + self.hide(); + }); + + // Destroy + container.on(eventPrefix + 'destroy', function() { + self.destroy(); + }); + + // Whether to load the default page + var validTotalPage = Math.max(self.getTotalPage(), 1) + var defaultPageNumber = attributes.pageNumber; + + // Default pageNumber should be 1 when totalNumber is dynamic + if (self.isDynamicTotalNumber) { + if (attributes.resetPageNumberOnInit) defaultPageNumber = 1; + } + + if (attributes.triggerPagingOnInit) { + container.trigger(eventPrefix + 'go', Math.min(defaultPageNumber, validTotalPage)); + } + } + }; + + // Pagination has been initialized + if (container.data('pagination') && container.data('pagination').initialized === true) { + // Handle events + if (isNumeric(options)) { + // eg: container.pagination(5) + container.trigger.call(this, eventPrefix + 'go', options, arguments[1]); + return this; + } else if (typeof options === 'string') { + var args = Array.prototype.slice.apply(arguments); + args[0] = eventPrefix + args[0]; + + switch (options) { + case 'previous': + case 'next': + case 'go': + case 'disable': + case 'enable': + case 'refresh': + case 'show': + case 'hide': + case 'destroy': + container.trigger.apply(this, args); + break; + case 'getSelectedPageNum': + case 'getCurrentPageNum': + if (container.data('pagination').model) { + return container.data('pagination').model.pageNumber; + } else { + return container.data('pagination').attributes.pageNumber; + } + case 'getTotalPage': + return Math.ceil(container.data('pagination').model.totalNumber / container.data('pagination').model.pageSize); + case 'getSelectedPageData': + case 'getCurrentPageData': + return container.data('pagination').currentPageData; + // Whether pagination has been disabled + case 'isDisabled': + return container.data('pagination').model.disabled === true; + default: + throwError('Unknown action: ' + options); + } + return this; + } else { + // Uninstall the old instance before initializing a new one + uninstallPlugin(container); + } + } else { + if (!Helpers.isObject(options)) throwError('Illegal options'); + } + + // Check parameters + parameterChecker(attributes); + + pagination.initialize(); + + return this; + }; + + // Instance defaults + $.fn[pluginName].defaults = { + + // Data source + // Array | String | Function | Object + //dataSource: '', + + // String | Function + //locator: 'data', + + // Function + //totalNumberLocator: function() {}, + + // Total number of data items + totalNumber: 0, + + // Default page number + pageNumber: 1, + + // Number of data items per page + pageSize: 10, + + // Page range (pages around current page) + pageRange: 2, + + // Whether to display the 'Previous' button + showPrevious: true, + + // Whether to display the 'Next' button + showNext: true, + + // Whether to display the page buttons + showPageNumbers: true, + + showNavigator: false, + + // Whether to display the 'Go' input + showGoInput: false, + + // Whether to display the 'Go' button + showGoButton: false, + + showSizeChanger: false, + + sizeChangerOptions: [10, 20, 50, 100], + + // Page link + pageLink: '', + + // 'Previous' text + prevText: '‹', + + // 'Next' text + nextText: '›', + + // Ellipsis text + ellipsisText: '...', + + // 'Go' button text + goButtonText: 'Go', + + // Additional class name(s) for the Pagination container + //className: '', + + classPrefix: 'paginationjs', + + activeClassName: 'active', + + // class name when disabled + disableClassName: 'disabled', + + //ulClassName: '', + + //pageClassName: '', + + //prevClassName: '', + + //nextClassName: '', + + formatNavigator: 'Total <%= totalNumber %> items', + + formatGoInput: '<%= input %>', + + formatGoButton: '<%= button %>', + + // position in the container + position: 'bottom', + + // Auto hide previous button when current page is the first + autoHidePrevious: false, + + // Auto hide next button when current page is the last + autoHideNext: false, + + //header: '', + + //footer: '', + + //alias: {}, + + // Whether to trigger pagination at initialization + triggerPagingOnInit: true, + + // Whether to reset page number at initialization, it works only if dataSource is a URL and totalNumberLocator is specified + resetPageNumberOnInit: true, + + // Whether to hide pagination when less than one page + hideOnlyOnePage: false, + + hideFirstOnEllipsisShow: false, + + hideLastOnEllipsisShow: false, + + // Customize item's innerHTML + callback: function() {} + }; + + // Hook register + $.fn[pluginHookMethod] = function(hook, callback) { + if (arguments.length < 2) { + throwError('Expect 2 arguments at least.'); + } + + if (typeof callback !== 'function') { + throwError('callback should be a function.'); + } + + var container = $(this); + var paginationData = container.data('pagination'); + + if (!paginationData) { + container.data('pagination', {}); + paginationData = container.data('pagination'); + } + + !paginationData.hooks && (paginationData.hooks = {}); + + //paginationData.hooks[hook] = callback; + paginationData.hooks[hook] = paginationData.hooks[hook] || []; + paginationData.hooks[hook].push(callback); + + }; + + // Static method + $[pluginName] = function(selector, options) { + if (arguments.length < 2) { + throwError('Requires two parameters.'); + } + + var container; + + // 'selector' is a jQuery object + if (typeof selector !== 'string' && selector instanceof jQuery) { + container = selector; + } else { + container = $(selector); + } + + if (!container.length) return; + + container.pagination(options); + + return container; + }; + + // ============================================================ + // helpers + // ============================================================ + + var Helpers = {}; + + // Throw error + function throwError(content) { + throw new Error('Pagination: ' + content); + } + + // Check parameters + function parameterChecker(args) { + if (!args.dataSource) { + throwError('"dataSource" is required.'); + } + + if (typeof args.dataSource === 'string') { + if (args.totalNumberLocator === undefined) { + if (args.totalNumber === undefined) { + throwError('"totalNumber" is required.'); + } else if (!isNumeric(args.totalNumber)) { + throwError('"totalNumber" is incorrect. Expect numberic type'); + } + } else { + if (typeof args.totalNumberLocator !== 'function') { + throwError('"totalNumberLocator" should be a Function.'); + } + } + } else if (Helpers.isObject(args.dataSource)) { + if (typeof args.locator === 'undefined') { + throwError('"dataSource" is an Object, please specify a "locator".'); + } else if (typeof args.locator !== 'string' && typeof args.locator !== 'function') { + throwError('' + args.locator + ' is incorrect. Expect string or function type'); + } + } + + if (args.formatResult !== undefined && typeof args.formatResult !== 'function') { + throwError('"formatResult" should be a Function.'); + } + + if (args.onError !== undefined && typeof args.onError !== 'function') { + throwError('"onError" should be a Function.'); + } + } + + // uninstall plugin + function uninstallPlugin(target) { + var events = ['go', 'previous', 'next', 'disable', 'enable', 'refresh', 'show', 'hide', 'destroy']; + + // off all events + $.each(events, function(index, value) { + target.off(eventPrefix + value); + }); + + // reset pagination data + target.data('pagination', {}); + + // remove pagination element + $('.paginationjs', target).remove(); + } + + // Object type detection + function getObjectType(object, tmp) { + return ( (tmp = typeof(object)) == "object" ? object == null && "null" || Object.prototype.toString.call(object).slice(8, -1) : tmp ).toLowerCase(); + } + + function isNumeric(n) { + return !isNaN(parseFloat(n)) && isFinite(n); + } + + $.each(['Object', 'Array', 'String'], function(index, name) { + Helpers['is' + name] = function(object) { + return getObjectType(object) === name.toLowerCase(); + }; + }); + + /* + * export via AMD or CommonJS + * */ + if (typeof define === 'function' && define.amd) { + define(function() { + return $; + }); + } + +})(this, window.jQuery); diff --git a/wp-content/plugins/cookie-notice/assets/pagination/pagination.min.js b/wp-content/plugins/cookie-notice/assets/pagination/pagination.min.js new file mode 100644 index 0000000..e91bd2f --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/pagination/pagination.min.js @@ -0,0 +1,11 @@ +/* + * pagination.js 2.6.0 + * A jQuery plugin to provide simple yet fully customisable pagination + * https://github.com/superRaytin/paginationjs + + * Homepage: http://pagination.js.org + * + * Copyright 2014-2100, superRaytin + * Released under the MIT license. +*/ +!function(n,u){void 0===u&&l("Pagination requires jQuery.");var r="pagination",s="__pagination-",D=(u.fn.pagination&&l('plugin conflicted, the name "pagination" has been taken by another jQuery plugin.'),u.fn[r]=function(a){if(void 0!==a){var t,c=u(this),J=u.extend({},u.fn[r].defaults,a),e={initialize:function(){var e,t=this;c.data("pagination")||c.data("pagination",{}),!1!==t.callHook("beforeInit")&&(c.data("pagination").initialized&&u(".paginationjs",c).remove(),t.disabled=!!J.disabled,e=t.model={pageRange:J.pageRange,pageSize:J.pageSize},t.parseDataSource(J.dataSource,function(a){t.isAsync=D.isString(a),D.isArray(a)&&(e.totalNumber=J.totalNumber=a.length),t.isDynamicTotalNumber=t.isAsync&&J.totalNumberLocator;a=t.render(!0);J.className&&a.addClass(J.className),e.el=a,c["bottom"===J.position?"append":"prepend"](a),t.observer(),c.data("pagination").initialized=!0,t.callHook("afterInit",a)}))},render:function(a){var e=this,t=e.model,o=t.el||u('
    '),a=!0!==a,t=(e.callHook("beforeRender",a),t.pageNumber||J.pageNumber),i=J.pageRange||0,n=e.getTotalPage(),r=t-i,s=t+i;return(r=n${a}`:`${a}`},generatePageNumbersHTML:function(a){var e,t=a.currentPage,o=this.getTotalPage(),i=this.getPageLinkTag,n=a.rangeStart,r=a.rangeEnd,s="",a=J.ellipsisText,l=J.classPrefix,c=J.pageClassName||"",u=J.activeClassName||"",g=J.disableClassName||"";if(null===J.pageRange)for(e=1;e<=o;e++)s+=e==t?`
  • ${e}
  • `:`
  • ${i(e)}
  • `;else{if(n<=3)for(e=1;e${e}`:`
  • ${i(e)}
  • `;else J.hideFirstOnEllipsisShow||(s+=`
  • ${i(1)}
  • `),s+=`
  • ${a}
  • `;for(e=n;e<=r;e++)s+=e==t?`
  • ${e}
  • `:`
  • ${i(e)}
  • `;if(o-2<=r)for(e=r+1;e<=o;e++)s+=`
  • ${i(e)}
  • `;else s+=`
  • ${a}
  • `,J.hideLastOnEllipsisShow||(s+=`
  • ${i(o)}
  • `)}return s},generateHTML:function(a){var e,t=this,o=a.currentPage,i=t.getTotalPage(),n=t.getPageLinkTag,r=t.getTotalNumber(),s=J.pageSize,l=J.showPrevious,c=J.showNext,u=J.showPageNumbers,g=J.showNavigator,p=J.showSizeChanger,f=J.sizeChangerOptions,d=J.showGoInput,m=J.showGoButton,b=J.prevText,h=J.nextText,v=J.goButtonText,y=J.classPrefix,N=J.disableClassName||"",$=J.ulClassName||"",k=J.prevClassName||"",P=J.nextClassName||"",x="",j='',v=``,T="function"==typeof J.formatSizeChanger?J.formatSizeChanger(o,i,r):J.formatSizeChanger,C="function"==typeof J.formatNavigator?J.formatNavigator(o,i,r):J.formatNavigator,H="function"==typeof J.formatGoInput?J.formatGoInput(S,o,i,r):J.formatGoInput,w="function"==typeof J.formatGoButton?J.formatGoButton(v,o,i,r):J.formatGoButton,O="function"==typeof J.autoHidePrevious?J.autoHidePrevious():J.autoHidePrevious,z="function"==typeof J.autoHideNext?J.autoHideNext():J.autoHideNext,L="function"==typeof J.header?J.header(o,i,r):J.header,E="function"==typeof J.footer?J.footer(o,i,r):J.footer;if(L&&(x+=e=t.replaceVariables(L,{currentPage:o,totalPage:i,totalNumber:r})),g&&C&&(x+=`
    ${e=t.replaceVariables(C,{currentPage:o,totalPage:i,totalNumber:r,rangeStart:(o-1)*s+1,rangeEnd:Math.min(o*s,r)})}
    `),(l||u||c)&&(x=x+'
    '+($?`
      `:"
        "),l&&(o<=1?O||(x+=`
      • ${b}
      • `):x+=`
      • ${n(b)}
      • `),u&&(x+=t.generatePageNumbersHTML(a)),c&&(i<=o?z||(x+=`
      • ${h}
      • `):x+=`
      • ${n(h)}
      • `),x+="
    "),p&&D.isArray(f)){-1===f.indexOf(s)&&(f.unshift(s),f.sort((a,e)=>a-e));for(let a=0;a${f[a]} / page`;e=j+="",x+=`
    ${e=T?t.replaceVariables(T,{length:j,total:r}):e}
    `}return d&&H&&(x+=`
    ${e=t.replaceVariables(H,{currentPage:o,totalPage:i,totalNumber:r,input:S})}
    `),m&&w&&(x+=`
    ${e=t.replaceVariables(w,{currentPage:o,totalPage:i,totalNumber:r,button:v})}
    `),E&&(x+=e=t.replaceVariables(E,{currentPage:o,totalPage:i,totalNumber:r})),x},findTotalNumberFromRemoteResponse:function(a){this.model.totalNumber=J.totalNumberLocator(a)},go:function(a,t){var e,o,i,n,r=this,s=r.model;function l(a){var e;!1!==r.callHook("beforePaging",n)&&(s.direction=void 0===s.pageNumber?0:n>s.pageNumber?1:-1,s.pageNumber=n,r.render(),r.disabled&&r.isAsync&&r.enable(),c.data("pagination").model=s,J.formatResult&&(e=u.extend(!0,[],a),D.isArray(a=J.formatResult(e))||(a=e)),c.data("pagination").currentPageData=a,r.doCallback(a,t),r.callHook("afterPaging",n),1==n?r.callHook("afterIsFirstPage"):n==r.getTotalPage()&&r.callHook("afterIsLastPage"))}r.disabled||(n=a,!(n=parseInt(n)))||n<1||(a=J.pageSize,o=r.getTotalNumber(),i=r.getTotalPage(),0","img"),i=(i||a).replace(t,o);return i},getPagingData:function(a){var e=J.pageSize,t=J.dataSource,o=this.getTotalNumber(),i=e*(a-1)+1,a=Math.min(a*e,o);return t.slice(i-1,a)},getTotalNumber:function(){return this.model.totalNumber||J.totalNumber||0},getTotalPage:function(){return Math.ceil(this.getTotalNumber()/J.pageSize)},getLocator:function(a){var e;return"string"==typeof a?e=a:"function"==typeof a?e=a():l('"locator" is incorrect. Expect string or function type.'),e},filterDataWithLocator:function(t){var o,a=this.getLocator(J.locator);if(D.isObject(t)){try{u.each(a.split("."),function(a,e){o=(o||t)[e]})}catch(a){}o?D.isArray(o)||l("dataSource."+a+" should be an Array."):l("dataSource."+a+" is undefined.")}return o||t},parseDataSource:function(a,e){var t=this;D.isObject(a)?e(J.dataSource=t.filterDataWithLocator(a)):D.isArray(a)?e(J.dataSource=a):"function"==typeof a?J.dataSource(function(a){D.isArray(a)||l('The parameter of "done" Function should be an Array.'),t.parseDataSource.call(t,a,e)}):"string"==typeof a?(/^https?|file:/.test(a)&&(J.ajaxDataType="jsonp"),e(a)):l("Unexpected dataSource type")},callHook:function(a){var t,e=c.data("pagination")||{},o=Array.prototype.slice.apply(arguments);return o.shift(),J[a]&&"function"==typeof J[a]&&!1===J[a].apply(n,o)&&(t=!1),e.hooks&&e.hooks[a]&&u.each(e.hooks[a],function(a,e){!1===e.apply(n,o)&&(t=!1)}),!1!==t},observer:function(){var o=this,t=o.model.el,a=(c.on(s+"go",function(a,e,t){(e="string"==typeof e?parseInt(e.trim()):e)&&("number"!=typeof e&&l('"pageNumber" is incorrect. (Number)'),o.go(e,t))}),t.on("click",".J-paginationjs-page",function(a){var e=u(a.currentTarget),t=e.attr("data-num").trim();if(t&&!e.hasClass(J.disableClassName)&&!e.hasClass(J.activeClassName))return!1!==o.callHook("beforePageOnClick",a,t)&&(o.go(t),o.callHook("afterPageOnClick",a,t),!!J.pageLink)&&void 0}),t.on("click",".J-paginationjs-previous",function(a){var e=u(a.currentTarget),t=e.attr("data-num").trim();if(t&&!e.hasClass(J.disableClassName))return!1!==o.callHook("beforePreviousOnClick",a,t)&&(o.go(t),o.callHook("afterPreviousOnClick",a,t),!!J.pageLink)&&void 0}),t.on("click",".J-paginationjs-next",function(a){var e=u(a.currentTarget),t=e.attr("data-num").trim();if(t&&!e.hasClass(J.disableClassName))return!1!==o.callHook("beforeNextOnClick",a,t)&&(o.go(t),o.callHook("afterNextOnClick",a,t),!!J.pageLink)&&void 0}),t.on("click",".J-paginationjs-go-button",function(a){var e=u(".J-paginationjs-go-pagenumber",t).val();if(!1===o.callHook("beforeGoButtonOnClick",a,e))return!1;c.trigger(s+"go",e),o.callHook("afterGoButtonOnClick",a,e)}),t.on("keyup",".J-paginationjs-go-pagenumber",function(a){if(13===a.which){var e=u(a.currentTarget).val();if(!1===o.callHook("beforeGoInputOnEnter",a,e))return!1;c.trigger(s+"go",e),u(".J-paginationjs-go-pagenumber",t).focus(),o.callHook("afterGoInputOnEnter",a,e)}}),t.on("change",".J-paginationjs-size-select",function(a){var e=u(a.currentTarget),e=parseInt(e.val()),t=o.model.pageNumber||J.pageNumber;if("number"==typeof e)return!1!==o.callHook("beforeSizeSelectorChange",a,e)&&(J.pageSize=e,o.model.pageSize=e,o.model.totalPage=o.getTotalPage(),t>o.model.totalPage&&(t=o.model.totalPage),o.go(t),o.callHook("afterSizeSelectorChange",a,e),!!J.pageLink)&&void 0}),c.on(s+"previous",function(a,e){o.previous(e)}),c.on(s+"next",function(a,e){o.next(e)}),c.on(s+"disable",function(){o.disable()}),c.on(s+"enable",function(){o.enable()}),c.on(s+"refresh",function(a,e){o.refresh(e)}),c.on(s+"show",function(){o.show()}),c.on(s+"hide",function(){o.hide()}),c.on(s+"destroy",function(){o.destroy()}),Math.max(o.getTotalPage(),1)),e=J.pageNumber;o.isDynamicTotalNumber&&J.resetPageNumberOnInit&&(e=1),J.triggerPagingOnInit&&c.trigger(s+"go",Math.min(e,a))}};if(c.data("pagination")&&!0===c.data("pagination").initialized){if(g(a))return c.trigger.call(this,s+"go",a,arguments[1]),this;if("string"==typeof a){var o=Array.prototype.slice.apply(arguments);switch(o[0]=s+o[0],a){case"previous":case"next":case"go":case"disable":case"enable":case"refresh":case"show":case"hide":case"destroy":c.trigger.apply(this,o);break;case"getSelectedPageNum":case"getCurrentPageNum":return(c.data("pagination").model?c.data("pagination").model:c.data("pagination").attributes).pageNumber;case"getTotalPage":return Math.ceil(c.data("pagination").model.totalNumber/c.data("pagination").model.pageSize);case"getSelectedPageData":case"getCurrentPageData":return c.data("pagination").currentPageData;case"isDisabled":return!0===c.data("pagination").model.disabled;default:l("Unknown action: "+a)}return this}t=c,u.each(["go","previous","next","disable","enable","refresh","show","hide","destroy"],function(a,e){t.off(s+e)}),t.data("pagination",{}),u(".paginationjs",t).remove()}else D.isObject(a)||l("Illegal options");var i=J;i.dataSource||l('"dataSource" is required.'),"string"==typeof i.dataSource?void 0===i.totalNumberLocator?void 0===i.totalNumber?l('"totalNumber" is required.'):g(i.totalNumber)||l('"totalNumber" is incorrect. Expect numberic type'):"function"!=typeof i.totalNumberLocator&&l('"totalNumberLocator" should be a Function.'):D.isObject(i.dataSource)&&(void 0===i.locator?l('"dataSource" is an Object, please specify a "locator".'):"string"!=typeof i.locator&&"function"!=typeof i.locator&&l(i.locator+" is incorrect. Expect string or function type")),void 0!==i.formatResult&&"function"!=typeof i.formatResult&&l('"formatResult" should be a Function.'),void 0!==i.onError&&"function"!=typeof i.onError&&l('"onError" should be a Function.'),e.initialize()}return this},u.fn[r].defaults={totalNumber:0,pageNumber:1,pageSize:10,pageRange:2,showPrevious:!0,showNext:!0,showPageNumbers:!0,showNavigator:!1,showGoInput:!1,showGoButton:!1,showSizeChanger:!1,sizeChangerOptions:[10,20,50,100],pageLink:"",prevText:"‹",nextText:"›",ellipsisText:"...",goButtonText:"Go",classPrefix:"paginationjs",activeClassName:"active",disableClassName:"disabled",formatNavigator:"Total <%= totalNumber %> items",formatGoInput:"<%= input %>",formatGoButton:"<%= button %>",position:"bottom",autoHidePrevious:!1,autoHideNext:!1,triggerPagingOnInit:!0,resetPageNumberOnInit:!0,hideOnlyOnePage:!1,hideFirstOnEllipsisShow:!1,hideLastOnEllipsisShow:!1,callback:function(){}},u.fn.addHook=function(a,e){arguments.length<2&&l("Expect 2 arguments at least."),"function"!=typeof e&&l("callback should be a function.");var t=u(this),o=t.data("pagination");o||(t.data("pagination",{}),o=t.data("pagination")),o.hooks||(o.hooks={}),o.hooks[a]=o.hooks[a]||[],o.hooks[a].push(e)},u[r]=function(a,e){var t;if(arguments.length<2&&l("Requires two parameters."),(t="string"!=typeof a&&a instanceof jQuery?a:u(a)).length)return t.pagination(e),t},{});function l(a){throw new Error("Pagination: "+a)}function g(a){return!isNaN(parseFloat(a))&&isFinite(a)}u.each(["Object","Array","String"],function(a,t){D["is"+t]=function(a){return("object"==(e=typeof(a=a))?null==a?"null":Object.prototype.toString.call(a).slice(8,-1):e).toLowerCase()===t.toLowerCase();var e}}),"function"==typeof define&&define.amd&&define(function(){return u})}(this,window.jQuery); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/assets/react-admin/cn-admin-react.css b/wp-content/plugins/cookie-notice/assets/react-admin/cn-admin-react.css new file mode 100644 index 0000000..17ca033 --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/react-admin/cn-admin-react.css @@ -0,0 +1 @@ +@charset "UTF-8";._thumb_1g9ys_1{width:160px;height:90px;border-radius:4px;overflow:hidden;border:1px solid var(--cn-color-border);background:#f8f9fa;position:relative;flex-shrink:0}._chrome_1g9ys_12{height:10px;background:#e5e7eb;border-bottom:1px solid #d1d5db;display:flex;align-items:center;padding:0 4px;gap:2px;flex-shrink:0}._dot_1g9ys_23{width:4px;height:4px;border-radius:50%;background:#9ca3af;flex-shrink:0}._urlBar_1g9ys_31{flex:1;height:4px;border-radius:2px;background:#d1d5db;margin-left:3px}._page_1g9ys_39{height:80px;position:relative;overflow:hidden}._lines_1g9ys_45{padding:6px 8px;display:flex;flex-direction:column;gap:3px}._lines_1g9ys_45>div{height:3px;border-radius:2px;background:#d1d5db}._banner_1g9ys_57{position:absolute;display:flex;flex-direction:column;gap:2px;padding:4px 5px 3px;box-shadow:0 -1px 4px #0000001f;animation-fill-mode:both;animation-duration:.45s;animation-timing-function:ease}._bar-bottom_1g9ys_69{bottom:0;left:0;right:0}._bar-top_1g9ys_75{top:0;left:0;right:0}._floating_1g9ys_81{left:8px;right:8px;border-radius:4px}._fixed_1g9ys_87{left:0;right:0}._panel-left_1g9ys_92{left:2px;bottom:2px;width:38%;box-shadow:2px 0 6px #00000026}._panel-right_1g9ys_99{right:2px;bottom:2px;width:38%;box-shadow:-2px 0 6px #00000026}._panelFloating_1g9ys_106{border-radius:4px}._panelFixed_1g9ys_110{top:10px;border-radius:0}._popup_1g9ys_115{top:50%;left:50%;transform:translate(-50%) translateY(-50%);width:68%;border-radius:4px;box-shadow:0 4px 16px #0003}._bannerHeader_1g9ys_124{display:flex;align-items:center;justify-content:space-between;margin-bottom:1px}._toolbarDots_1g9ys_131{display:flex;gap:2px}._toolbarDots_1g9ys_131 span{display:block;width:3px;height:3px;border-radius:50%;background:var(--dot-color, rgba(255, 255, 255, .4))}._pills_1g9ys_143{display:flex;gap:2px;align-items:center;justify-content:center}._pill_1g9ys_143{display:flex;align-items:center;gap:1px;padding:1px 3px;border-radius:20px;border:1px solid currentColor;opacity:.85}._pillDot_1g9ys_160{width:4px;height:4px;border-radius:50%;flex-shrink:0}._saveBtn_1g9ys_167{height:6px;width:38%;margin:1px auto 0;opacity:.9}._footerLinks_1g9ys_174{display:flex;justify-content:space-between;gap:4px;margin-top:1px}._link_1g9ys_181{height:2px;width:35%;border-radius:1px;background:#ffffff59}._anim-slide-bottom_1g9ys_188{animation-name:_huPreviewSlideUp_1g9ys_1}._anim-slide-top_1g9ys_192{animation-name:_huPreviewSlideDown_1g9ys_1}._anim-slide-left_1g9ys_196{animation-name:_huPreviewSlideLeft_1g9ys_1}._anim-slide-right_1g9ys_200{animation-name:_huPreviewSlideRight_1g9ys_1}._anim-slide-center_1g9ys_204{animation-name:_huPreviewScaleIn_1g9ys_1}._anim-fade_1g9ys_208{animation-name:_huPreviewFade_1g9ys_1}@keyframes _huPreviewSlideUp_1g9ys_1{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _huPreviewSlideDown_1g9ys_1{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _huPreviewSlideLeft_1g9ys_1{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes _huPreviewSlideRight_1g9ys_1{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes _huPreviewScaleIn_1g9ys_1{0%{transform:translate(-50%) translateY(-50%) scale(.85);opacity:0}to{transform:translate(-50%) translateY(-50%) scale(1);opacity:1}}@keyframes _huPreviewFade_1g9ys_1{0%{opacity:0}to{opacity:1}}._container_nva6m_2{display:flex;gap:16px;align-items:flex-start}._grid_nva6m_8{display:grid;grid-template-columns:1fr 1fr;gap:10px;flex:0 0 auto;width:280px}._card_nva6m_16{border:2px solid var(--cn-border, #e2e8f0);border-radius:10px;padding:12px 10px 10px;cursor:pointer;transition:border-color .15s,box-shadow .15s,background .15s;text-align:center;position:relative;background:#fff;-webkit-user-select:none;user-select:none}._card_nva6m_16:hover{border-color:#a0c4c0;box-shadow:0 2px 8px #20c19e1a}._cardSelected_nva6m_32{border-color:var(--cn-primary, #20c19e);background:#20c19e0a;box-shadow:0 0 0 3px #20c19e1f}._geoArt_nva6m_38{width:80px;height:52px;margin:0 auto 8px;display:flex;align-items:center;justify-content:center}._lawName_nva6m_47{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading, #1a1a2e);line-height:1.2}._jurisdiction_nva6m_54{font-size:var(--cn-text-sm);color:var(--cn-muted, #718096);margin-top:2px}._hiddenCheckbox_nva6m_60{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}._checkmark_nva6m_72{position:absolute;top:6px;right:6px;width:16px;height:16px;border-radius:50%;background:var(--cn-primary, #20c19e);display:flex;align-items:center;justify-content:center;font-size:var(--cn-text-xs);color:#fff;font-weight:700}._autoBadge_nva6m_88{position:absolute;top:-8px;left:50%;transform:translate(-50%);background:var(--cn-primary, #20c19e);color:#fff;font-size:var(--cn-text-xs);font-weight:600;padding:2px 6px;border-radius:10px;white-space:nowrap}._detail_nva6m_102{flex:1;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:18px 20px;animation:_slideIn_nva6m_1 .2s ease;min-height:240px}._detailHeader_nva6m_112{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px}._detailTitle_nva6m_119{font-size:var(--cn-text-lg);font-weight:700;color:var(--cn-heading, #1a1a2e)}._detailJurisdiction_nva6m_125{font-size:var(--cn-text-sm);color:var(--cn-muted, #718096);margin-top:2px}._detailClose_nva6m_131{background:none;border:none;cursor:pointer;font-size:var(--cn-text-lg);color:#718096;line-height:1;padding:0}._detailClose_nva6m_131:hover{color:#1a1a2e}._detailSection_nva6m_144{margin-bottom:14px}._detailSectionLabel_nva6m_148{font-size:var(--cn-text-sm);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--cn-primary, #20c19e);margin-bottom:6px}._detailOverview_nva6m_157{font-size:var(--cn-text-sm);color:#4a5568;line-height:1.6}._detailList_nva6m_163{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}._detailListItem_nva6m_172{font-size:var(--cn-text-sm);color:#4a5568;display:flex;gap:6px;align-items:flex-start;line-height:1.4}._detailListItem_nva6m_172:before{content:"✓";color:var(--cn-primary, #20c19e);font-weight:700;flex-shrink:0;margin-top:1px}._detailEnforcement_nva6m_188{font-size:var(--cn-text-sm);color:#a0aec0;border-top:1px solid #e2e8f0;padding-top:10px;margin-top:4px;line-height:1.5}._detailEmpty_nva6m_197{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:200px;text-align:center;padding:32px}._detailEmptyArrow_nva6m_208{font-size:var(--cn-text-xl);color:#20c19e;opacity:.4;margin-bottom:12px}._detailEmptyText_nva6m_215{font-size:var(--cn-text-md);color:#9ca3af;line-height:1.6;max-width:240px}._detailDnsHelp_nva6m_222{font-size:var(--cn-text-base);color:#6b7280;margin-bottom:8px}._dnsCallout_nva6m_228{display:flex;gap:10px;background:#fffbeb;border:1px solid #f59e0b;border-radius:8px;padding:12px;margin-top:10px}._dnsCalloutIcon_nva6m_238{flex:0 0 auto;font-size:var(--cn-text-lg);line-height:1}._dnsCalloutBody_nva6m_244{flex:1 1 auto;min-width:0}._dnsCalloutTitle_nva6m_249{font-size:var(--cn-text-base);font-weight:700;color:#92400e;margin-bottom:4px}._dnsCalloutHelp_nva6m_256{font-size:var(--cn-text-sm);color:#92400e;margin:0 0 8px;line-height:1.4}._dnsInput_nva6m_263{width:100%;padding:8px 10px;border:1px solid #e0e4e8;border-radius:6px;font-size:var(--cn-text-base);box-sizing:border-box}._dnsInput_nva6m_263:focus{outline:none;border-color:var(--cn-primary, #20c19e);box-shadow:0 0 0 2px #20c19e26}@keyframes _slideIn_nva6m_1{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}._loading_1lg0v_1{padding:40px 20px;text-align:center;color:#787c82;font-size:var(--cn-text-base)}._stepContent_1lg0v_8{padding:4px 0}._stepDesc_1lg0v_12{font-size:var(--cn-text-base);color:#4a5568;line-height:1.6;margin:0}._scanSummary_1lg0v_19{display:flex;align-items:center;gap:8px;padding:12px 16px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin-bottom:16px}._scanStat_1lg0v_30{font-size:var(--cn-text-base);font-weight:600;color:#1d2327}._scanStatWarn_1lg0v_36{color:#d97706}._scanDivider_1lg0v_40{color:#c3c4c7;font-size:var(--cn-text-lg)}._catList_1lg0v_45{display:flex;flex-direction:column;gap:8px}._catSection_1lg0v_51{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;background:#fff}._catHeader_1lg0v_58{width:100%;display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:none;border:none;cursor:pointer;text-align:left}._catHeader_1lg0v_58:hover{background:#f8fafc}._catHeaderLeft_1lg0v_73{display:flex;align-items:center;gap:8px}._catDot_1lg0v_79{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0}._catName_1lg0v_87{font-size:var(--cn-text-base);font-weight:600;color:#1d2327}._catCount_1lg0v_93{font-size:var(--cn-text-sm);color:#787c82}._catWarnBadge_1lg0v_98{font-size:var(--cn-text-sm);font-weight:600;color:#d97706;background:#fef3c7;padding:2px 8px;border-radius:10px}._catChevron_1lg0v_107{font-size:var(--cn-text-md);color:#787c82}._catDesc_1lg0v_112{font-size:var(--cn-text-sm);color:#787c82;padding:0 14px 10px;line-height:1.4}._catDescInner_1lg0v_119{font-size:var(--cn-text-sm);color:#787c82;padding:0 14px 8px;line-height:1.4}._catBody_1lg0v_126{border-top:1px solid #f0f0f1}._providerRow_1lg0v_130{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-top:1px solid #f0f0f1}._providerRow_1lg0v_130:first-child{border-top:none}._providerInfo_1lg0v_141{display:flex;flex-direction:column;gap:2px;min-width:0}._providerName_1lg0v_148{font-size:var(--cn-text-base);font-weight:600;color:#1d2327}._providerUrl_1lg0v_154{font-size:var(--cn-text-sm);color:#787c82;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}._providerMeta_1lg0v_163{display:flex;align-items:center;gap:10px;flex-shrink:0}._patternCount_1lg0v_170{font-size:var(--cn-text-sm);color:#787c82}._statusPillOk_1lg0v_175{font-size:var(--cn-text-sm);font-weight:600;color:#059669;background:#d1fae5;padding:2px 8px;border-radius:10px}._statusPillWarn_1lg0v_184{font-size:var(--cn-text-sm);font-weight:600;color:#d97706;background:#fef3c7;padding:2px 8px;border-radius:10px}._issueBanner_1lg0v_193{background:#fef3c7;border:1px solid #f59e0b;border-radius:6px;padding:10px 14px;margin-bottom:12px;font-size:13px;color:#92400e}._issueBanner_1lg0v_193 a{color:#b45309;font-weight:600;text-decoration:underline}._issueBanner_1lg0v_193 a:hover{color:#92400e}._lastSynced_1lg0v_211{font-size:12px;color:#9ca3af;margin-top:8px;margin-bottom:12px;display:block}._portalLink_1lg0v_219{font-size:13px;color:#20c19e;text-decoration:none;font-weight:500}._portalLink_1lg0v_219:hover{text-decoration:underline}._basicPanel_1lg0v_229{text-align:center;padding:30px 20px}._basicIcon_1lg0v_234{font-size:var(--cn-text-xl);margin-bottom:12px}._basicTitle_1lg0v_239{font-size:var(--cn-text-lg);font-weight:700;color:#1d2327;margin:0 0 10px}._basicDesc_1lg0v_246{font-size:var(--cn-text-base);color:#4a5568;line-height:1.6;max-width:440px;margin:0 auto 20px}._panel_19w0d_1{background:#fff;border:1px solid #dcdcde;border-radius:8px;margin-bottom:20px;overflow:hidden}._panelHeader_19w0d_9{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #dcdcde;background:#f6f7f7}._panelTitle_19w0d_18{font-size:var(--cn-text-md);font-weight:600;color:#1d2327;margin:0}._closeBtn_19w0d_25{background:none;border:none;cursor:pointer;font-size:var(--cn-text-xl);color:#787c82;padding:0 4px;line-height:1}._closeBtn_19w0d_25:hover{color:#1d2327}._footer_19w0d_38{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:16px 20px;border-top:1px solid #dcdcde;background:#f6f7f7}._layout_19w0d_48{display:flex;gap:16px;align-items:flex-start;min-height:380px}._modeList_19w0d_55{flex:0 0 220px;width:220px;display:flex;flex-direction:column;gap:12px}._modeSection_19w0d_63{display:flex;flex-direction:column;gap:6px}._modeSectionLabel_19w0d_69{font-size:var(--cn-text-sm);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#787c82;padding:0 2px;margin-bottom:2px}._modeCard_19w0d_79{width:100%;text-align:left;background:#fff;border:2px solid #e2e8f0;border-radius:10px;padding:12px 14px;cursor:pointer;transition:border-color .15s,box-shadow .15s,background .15s}._modeCard_19w0d_79:hover{border-color:#a0c4c0;box-shadow:0 2px 8px #20c19e1a}._modeCardActive_19w0d_94{border-color:#20c19e;background:#20c19e0a;box-shadow:0 0 0 3px #20c19e1f}._modeCardLocked_19w0d_100{opacity:.7;border-style:dashed;position:relative}._modeCardProOverlay_19w0d_106{display:flex;align-items:center;gap:4px;margin-top:6px;padding:4px 8px;background:#f59e0b14;border-radius:4px;cursor:pointer;transition:background .15s ease}._modeCardProOverlay_19w0d_106:hover{background:#f59e0b2e}._lockIconLarge_19w0d_121{font-size:var(--cn-text-base)}._modeCardProLabel_19w0d_125{font-size:var(--cn-text-sm);font-weight:600;color:#92400e}._modeCardTop_19w0d_131{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}._modeCardName_19w0d_138{font-size:var(--cn-text-base);font-weight:600;color:#1d2327}._modeCardDesc_19w0d_144{font-size:var(--cn-text-sm);color:#787c82;line-height:1.4}._statusDot_19w0d_150{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}._statusDotOn_19w0d_158{background:#20c19e}._statusDotOff_19w0d_162{background:#c3c4c7}._detailCol_19w0d_166{flex:1;min-width:0}._detail_19w0d_166{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:18px 20px;animation:_slideIn_19w0d_1 .18s ease}._detailHeader_19w0d_179{display:flex;align-items:center;gap:8px;margin-bottom:10px}._detailTitle_19w0d_186{font-size:var(--cn-text-md);font-weight:700;color:#1d2327}._detailDesc_19w0d_192{font-size:var(--cn-text-base);color:#4a5568;line-height:1.6;margin:0 0 14px}._detailFooter_19w0d_199{display:flex;justify-content:flex-end;padding-top:14px;margin-top:14px;border-top:1px solid #e2e8f0}._enableToggle_19w0d_207{display:inline-flex;align-items:center;gap:10px;cursor:pointer;margin-bottom:16px}._enableToggleInput_19w0d_215{position:absolute;opacity:0;width:0;height:0}._enableToggleTrack_19w0d_222{position:relative;display:inline-block;width:36px;height:20px;border-radius:10px;background:#c3c4c7;transition:background .2s;flex-shrink:0}._enableToggleInput_19w0d_215:checked+._enableToggleTrack_19w0d_222{background:#20c19e}._enableToggleThumb_19w0d_236{position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0003;transition:transform .2s}._enableToggleInput_19w0d_215:checked~._enableToggleTrack_19w0d_222 ._enableToggleThumb_19w0d_236{transform:translate(16px)}._enableToggleLabel_19w0d_251{font-size:var(--cn-text-base);font-weight:600;color:#1d2327}._signalConfig_19w0d_257{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:14px 16px;margin-bottom:8px}._signalConfigTitle_19w0d_265{font-size:var(--cn-text-sm);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#20c19e;margin-bottom:10px}._groupRow_19w0d_274{display:flex;align-items:center;justify-content:space-between;padding:6px 0}._groupLabel_19w0d_281{font-size:var(--cn-text-base);font-weight:500;color:#1d2327}._groupSelect_19w0d_287{font-size:var(--cn-text-sm);padding:5px 8px;border:1px solid #8c8f94;border-radius:4px;background:#fff;min-width:170px}._groupSelect_19w0d_287:disabled{opacity:.5;cursor:not-allowed}._groupSelect_19w0d_287:focus{outline:none;border-color:#20c19e;box-shadow:0 0 0 2px #20c19e26}._groupHint_19w0d_305{font-size:var(--cn-text-sm);color:#787c82;margin:2px 0 10px;line-height:1.4}._advancedToggle_19w0d_312{background:none;border:none;cursor:pointer;font-size:var(--cn-text-sm);color:#50575e;padding:8px 0 4px;display:block;width:100%;text-align:left}._advancedToggle_19w0d_312:hover{color:#1d2327}._advancedGrid_19w0d_327{display:flex;flex-direction:column;gap:6px;margin-top:6px;padding-top:8px;border-top:1px solid #f0f0f1}._advancedRow_19w0d_336{display:flex;align-items:center;justify-content:space-between;padding:4px 0}._advancedLabel_19w0d_343{font-size:var(--cn-text-sm);color:#4a5568}._subToggles_19w0d_348{margin-top:10px;padding-top:10px;border-top:1px solid #f0f0f1}._subToggleTitle_19w0d_354{font-size:var(--cn-text-sm);font-weight:600;color:#787c82;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}._subToggleRow_19w0d_363{display:flex;align-items:center;gap:8px;font-size:var(--cn-text-base);color:#1d2327;cursor:pointer;padding:4px 0}._proGate_19w0d_373{display:flex;align-items:center;justify-content:space-between;background:#f0faf8;border:1px solid #c3e8e0;border-radius:8px;padding:12px 14px;font-size:var(--cn-text-base);color:#1d2327;gap:12px;margin:8px 0}._proGateLink_19w0d_387{white-space:nowrap;font-weight:600;color:#20c19e;text-decoration:none}._proGateLink_19w0d_387:hover{text-decoration:underline}@keyframes _slideIn_19w0d_1{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}.cn-section-label{font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-muted);text-transform:uppercase;letter-spacing:.6px}.cn-banner-selector{margin-bottom:28px}.cn-banner-selector__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.cn-banner-selector__portal-link{font-size:var(--cn-text-sm);color:var(--cn-primary);font-weight:600;text-decoration:none}.cn-banner-selector__portal-link:hover{text-decoration:underline}.cn-banner-selector__grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.cn-banner-selector__card{background:var(--cn-surface);border:2px solid var(--cn-border);border-radius:10px;padding:16px 12px 12px;min-height:200px;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.cn-banner-selector__card:hover{transform:translateY(-3px);box-shadow:0 6px 20px #00000017;border-color:#c5ccd4}.cn-banner-selector__card--active{border-color:var(--cn-primary);box-shadow:0 0 0 3px #20c19e26}.cn-banner-selector__card--active:hover{transform:translateY(-3px);box-shadow:0 0 0 3px #20c19e26,0 6px 20px #20c19e1f}.cn-banner-selector__thumb{width:100%;height:90px;background:#e8eaed;border-radius:6px;margin-bottom:10px;position:relative;overflow:hidden}.cn-banner-selector__thumb:before{content:"";position:absolute;top:0;left:0;right:0;height:12px;background:#d0d3d8;border-radius:6px 6px 0 0}.cn-banner-selector__thumb:after{content:"";position:absolute;top:3px;left:8px;width:6px;height:6px;background:#b8bcc4;border-radius:50%}.cn-banner-selector__pos{position:absolute;background:#2c2f35;transition:all .25s ease}.cn-banner-selector__pos.pos-top{top:12px;left:0;right:0;height:16px;width:auto;border-radius:0}.cn-banner-selector__pos.pos-bottom{bottom:0;left:0;right:0;height:18px;width:auto;border-radius:0}.cn-banner-selector__pos.pos-left{top:12px;left:0;bottom:0;width:26%;height:auto;border-radius:0;right:auto}.cn-banner-selector__pos.pos-right{top:12px;right:0;bottom:0;width:26%;height:auto;border-radius:0;left:auto}.cn-banner-selector__pos.pos-popup{top:50%;left:50%;transform:translate(-50%,-40%);width:46%;height:36px;border-radius:4px;bottom:auto;right:auto}.cn-banner-selector__grid--floating .cn-banner-selector__pos.pos-top{top:16px;left:50%;right:auto;transform:translate(-50%);width:56%;height:22px;border-radius:3px}.cn-banner-selector__grid--floating .cn-banner-selector__pos.pos-bottom{bottom:8px;left:50%;right:auto;transform:translate(-50%);width:56%;height:26px;border-radius:3px}.cn-banner-selector__grid--floating .cn-banner-selector__pos.pos-left{top:auto;bottom:6px;left:4px;width:32%;height:44px;border-radius:3px;right:auto}.cn-banner-selector__grid--floating .cn-banner-selector__pos.pos-right{top:auto;bottom:6px;right:4px;width:32%;height:44px;border-radius:3px;left:auto}.cn-banner-selector__grid--floating .cn-banner-selector__pos.pos-popup{top:50%;left:50%;transform:translate(-50%,-40%);width:46%;height:36px;border-radius:4px}.cn-banner-selector__meta{display:flex;align-items:center;justify-content:space-between;margin-bottom:3px}.cn-banner-selector__name{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading)}.cn-banner-selector__active-pill{font-size:var(--cn-text-xs);font-weight:700;padding:2px 7px;border-radius:10px;background:#e8f5e9;color:#2e7d32;text-transform:uppercase;letter-spacing:.3px}.cn-banner-selector__toggle-row{display:flex;align-items:center;gap:14px;margin-top:14px;margin-bottom:6px}.cn-banner-selector__size-label{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading)}.cn-banner-selector__size-opts{display:flex}.cn-banner-selector__size-opt{font-size:var(--cn-text-sm);font-weight:600;padding:5px 16px;cursor:pointer;border:1.5px solid var(--cn-border);background:#fff;color:var(--cn-muted);transition:all .15s;font-family:inherit}.cn-banner-selector__size-opt:first-child{border-radius:16px 0 0 16px}.cn-banner-selector__size-opt:last-child{border-radius:0 16px 16px 0;border-left:none}.cn-banner-selector__size-opt--on{background:var(--cn-primary);color:#fff;border-color:var(--cn-primary)}.cn-banner-selector__size-opt--on+.cn-banner-selector__size-opt{border-left-color:var(--cn-primary)}.cn-banner-selector__size-desc{font-size:var(--cn-text-sm);color:var(--cn-muted);margin-top:4px;line-height:1.4}.cn-banner-design__grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.cn-banner-design__col{display:flex;flex-direction:column;gap:0}.cn-advanced-settings__grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.cn-consent-modes__title{font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px}.cn-consent-modes__row{display:flex;align-items:center;justify-content:space-between;padding:5px 0;border-bottom:1px solid var(--cn-border);font-size:var(--cn-text-sm)}.cn-consent-modes__row:last-of-type{border-bottom:none}.cn-consent-modes__label{color:var(--cn-muted);display:flex;align-items:center;gap:5px}.cn-consent-modes__value{font-weight:700;color:var(--cn-heading)}.cn-consent-modes__value--off{color:var(--cn-muted);font-weight:400}.cn-consent-modes__note{margin-top:10px;padding-top:8px;border-top:1px solid var(--cn-border);font-size:var(--cn-text-sm)}.cn-consent-modes__note a{color:var(--cn-primary);text-decoration:none}.cn-consent-modes__note a:hover{text-decoration:underline}.cn-script-summary__title{font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px}.cn-script-summary__row{display:flex;align-items:center;justify-content:space-between;padding:5px 0;border-bottom:1px solid var(--cn-border);font-size:var(--cn-text-sm)}.cn-script-summary__row:last-of-type{border-bottom:none}.cn-script-summary__row--warn .cn-script-summary__label{color:#d35400}.cn-script-summary__label{color:var(--cn-muted)}.cn-script-summary__value{font-weight:700;color:var(--cn-heading)}.cn-script-summary__value--warn{color:#d35400}.cn-script-summary__value--ok{color:var(--cn-primary)}.cn-script-summary__note{margin-top:10px;padding-top:8px;border-top:1px solid var(--cn-border);font-size:var(--cn-text-sm);display:flex;align-items:center;justify-content:space-between}.cn-script-summary__note a{color:var(--cn-primary);text-decoration:none}.cn-script-summary__note a:hover{text-decoration:underline}.cn-script-summary__review-btn{font-size:var(--cn-text-sm);font-weight:700;padding:5px 12px;border-radius:20px;background:var(--cn-primary);color:#fff!important;text-decoration:none!important;cursor:pointer}.cn-script-summary__review-btn--warn{background:#d35400}.cn-script-summary__review-btn:hover{opacity:.9}.cn-banner-summary{margin-bottom:12px}.cn-banner-summary__rows{display:flex;flex-direction:column;gap:4px;margin-top:6px}.cn-banner-summary__row{display:flex;gap:8px;font-size:var(--cn-text-base)}.cn-banner-summary__key{color:var(--cn-muted);font-weight:600;min-width:70px}.cn-banner-summary__key:after{content:":"}.cn-banner-summary__val{color:var(--cn-text)}.cn-banner-summary__note{font-size:var(--cn-text-sm);color:var(--cn-muted);margin-top:8px}.cn-upsell-card{padding:2px 0 4px}.cn-upsell-card__headline{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading);margin:0 0 10px}.cn-upsell-card__features{list-style:none;margin:0 0 14px;padding:0}.cn-upsell-card__features li{font-size:var(--cn-text-sm);color:var(--cn-body);padding:4px 0 4px 18px;position:relative}.cn-upsell-card__features li:before{content:"✓";position:absolute;left:0;color:var(--cn-green, #20c19e);font-weight:700}.cn-upsell-card__cta{display:block;text-align:center;text-decoration:none}.cn-change-badge{display:inline-block;font-size:var(--cn-text-xs);font-weight:700;padding:1px 5px;border-radius:4px;text-transform:uppercase;letter-spacing:.2px;margin-right:4px}.cn-change-badge--banner{background:#20c19e1a;color:var(--cn-primary)}.cn-change-badge--regulation{background:#6179e81a;color:#6179e8}.cn-change-badge--blocking{background:#fff3e0;color:#d35400}.cn-template-presets{margin-bottom:24px}.cn-template-presets__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:12px}.cn-template-presets__label{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading);margin-top:10px}.cn-template-presets__warning{font-size:var(--cn-text-sm);color:#d35400;margin:8px 0;padding:6px 10px;background:#fff3e0;border-radius:6px}.cn-template-presets__error{font-size:var(--cn-text-sm);color:#c0392b;margin:8px 0;padding:6px 10px;background:#fdecea;border-radius:6px}.cn-template-presets__pagination{display:flex;justify-content:center;gap:6px;margin-top:14px}.cn-template-presets__dot{width:8px;height:8px;border-radius:50%;border:none;background:#d1d5db;cursor:pointer;padding:0;transition:background .2s ease,transform .2s ease}.cn-template-presets__dot:hover{background:#9ca3af}.cn-template-presets__dot--active{background:var(--cn-primary);transform:scale(1.2)}.cn-empty-hero{text-align:center;padding:48px 24px;background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;margin-bottom:24px}.cn-empty-hero__icon{display:block;margin:0 auto 20px;width:80px;height:80px}.cn-empty-hero__heading{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading);margin-bottom:10px}.cn-empty-hero__sub{font-size:var(--cn-text-md);color:var(--cn-muted);max-width:440px;margin:0 auto 24px;line-height:1.6}.cn-empty-hero__footnote{margin-top:12px;font-size:var(--cn-text-sm);color:var(--cn-muted)}.cn-blurred-teaser{position:relative;border-radius:10px;overflow:hidden;margin-bottom:24px}.cn-blurred-teaser__blur{filter:blur(4px);pointer-events:none;-webkit-user-select:none;user-select:none}.cn-blurred-teaser__overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#ffffffbf;gap:10px;padding:24px;text-align:center}.cn-blurred-teaser__overlay-icon{font-size:var(--cn-text-xl);line-height:1}.cn-blurred-teaser__overlay-label{font-size:var(--cn-text-lg);font-weight:700;color:var(--cn-heading)}.cn-blurred-teaser__overlay-sub{font-size:var(--cn-text-base);color:var(--cn-muted);max-width:380px;line-height:1.5}.cn-blurred-teaser__section{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;padding:18px 20px;margin-bottom:16px}.cn-blurred-teaser__section:last-child{margin-bottom:0}.cn-blurred-teaser__section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.cn-blurred-teaser__section-title{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading)}.cn-blurred-teaser__section-meta{font-size:var(--cn-text-sm);color:var(--cn-muted)}.cn-blurred-teaser__table{width:100%;border-collapse:collapse;font-size:var(--cn-text-base)}.cn-blurred-teaser__table thead tr{background:#f0f2f5}.cn-blurred-teaser__table th{font-size:var(--cn-text-sm);font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--cn-muted);padding:8px 12px;text-align:left;border-bottom:1px solid var(--cn-border)}.cn-blurred-teaser__table td{padding:8px 12px;border-bottom:1px solid var(--cn-border);color:var(--cn-text)}.cn-blurred-teaser__table td:last-child{border-bottom:none}.cn-blurred-teaser__table tr:last-child td{border-bottom:none}.cn-blurred-teaser__timeline{display:flex;flex-direction:column;gap:12px}.cn-blurred-teaser__tl-row{display:flex;align-items:flex-start;gap:12px}.cn-blurred-teaser__tl-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;margin-top:3px;background:var(--cn-border)}.cn-blurred-teaser__tl-dot--banner{background:var(--cn-primary)}.cn-blurred-teaser__tl-dot--setting{background:var(--cn-info, #6179e8)}.cn-blurred-teaser__tl-dot--scan{background:var(--cn-yellow, #f5a623)}.cn-blurred-teaser__tl-text{flex:1}.cn-blurred-teaser__tl-what{font-size:var(--cn-text-base);color:var(--cn-heading);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.cn-blurred-teaser__tl-when{font-size:var(--cn-text-sm);color:var(--cn-muted);margin-top:2px}.cn-consent-id{font-family:monospace;font-size:var(--cn-text-sm);color:var(--cn-heading);background:#f0f2f5;padding:2px 6px;border-radius:4px;letter-spacing:.3px}.cn-ip-masked{font-family:monospace;font-size:var(--cn-text-sm);color:var(--cn-muted)}.cn-level-pill{display:inline-block;padding:3px 10px;border-radius:12px;font-size:var(--cn-text-sm);font-weight:700;text-transform:capitalize}.cn-level-pill--accept{background:var(--cn-green-bg, #e8faf5);color:var(--cn-green, #20c19e)}.cn-level-pill--custom{background:#6179e81a;color:var(--cn-info, #6179e8)}.cn-level-pill--reject{background:var(--cn-red-bg, #fdecea);color:var(--cn-red, #e74c3c)}.cn-cat-tags{display:flex;flex-wrap:wrap;gap:4px}.cn-cat-tag{display:inline-block;padding:2px 8px;border-radius:10px;font-size:var(--cn-text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.3px}.cn-cat-tag--essential{background:var(--cn-green-bg, #e8faf5);color:var(--cn-green, #20c19e)}.cn-cat-tag--analytics{background:#6179e81a;color:var(--cn-info, #6179e8)}.cn-cat-tag--marketing{background:var(--cn-yellow-bg, #fef7e8);color:var(--cn-yellow, #f5a623)}.cn-cat-tag--functional{background:var(--cn-light-bg, #f0f2f5);color:var(--cn-muted)}.cn-consent-log-table{margin-bottom:28px}.cn-consent-log-table__controls{display:flex;align-items:center;gap:12px;margin-bottom:12px}.cn-consent-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}.cn-consent-stat{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;padding:16px 18px;text-align:center}.cn-consent-stat__value{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading);line-height:1.2;margin-bottom:4px}.cn-consent-stat__label{font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-muted);text-transform:uppercase;letter-spacing:.4px}.cn-config-timeline{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;overflow:hidden;margin-bottom:24px}.cn-config-timeline__header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:#f0f2f5;border-bottom:1px solid var(--cn-border)}.cn-config-timeline__title{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading)}.cn-config-timeline__period{font-size:var(--cn-text-sm);color:var(--cn-muted)}.cn-config-timeline__body{padding:0 18px}.cn-timeline-list{display:flex;flex-direction:column}.cn-timeline-item{display:flex;align-items:flex-start;gap:14px;padding:16px 0;border-bottom:1px solid var(--cn-border)}.cn-timeline-item:last-child{border-bottom:none}.cn-timeline-item__dot-wrap{padding-top:3px;flex-shrink:0}.cn-timeline-item__dot{width:10px;height:10px;border-radius:50%;background:var(--cn-border)}.cn-timeline-item__dot--banner{background:var(--cn-primary)}.cn-timeline-item__dot--setting{background:var(--cn-info, #6179e8)}.cn-timeline-item__dot--scan{background:var(--cn-yellow, #f5a623)}.cn-timeline-item__content{flex:1}.cn-timeline-item__top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.cn-timeline-item__what{font-size:var(--cn-text-base);font-weight:600;color:var(--cn-heading);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.cn-timeline-item__when{font-size:var(--cn-text-sm);color:var(--cn-muted);white-space:nowrap;flex-shrink:0}.cn-timeline-item__detail{font-size:var(--cn-text-sm);color:var(--cn-muted);line-height:1.5;margin-bottom:4px}.cn-timeline-item__user{font-size:var(--cn-text-sm);color:var(--cn-muted);font-style:italic}.cn-change-badge{display:inline-block;padding:2px 8px;border-radius:3px;font-size:var(--cn-text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.3px}.cn-change-badge--banner{background:var(--cn-green-bg, #e8faf5);color:var(--cn-green, #20c19e)}.cn-change-badge--setting{background:#6179e81a;color:var(--cn-info, #6179e8)}.cn-change-badge--scan{background:var(--cn-yellow-bg, #fef7e8);color:var(--cn-yellow, #f5a623)}.cn-compliance-evidence{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;overflow:hidden;margin-bottom:24px}.cn-evidence-tabs{display:flex;border-bottom:1px solid var(--cn-border);background:#f0f2f5;padding:0 4px}.cn-evidence-tab{padding:10px 18px;font-size:var(--cn-text-base);font-weight:600;color:var(--cn-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;font-family:var(--cn-font);display:inline-flex;align-items:center;gap:6px;transition:color .15s,border-color .15s}.cn-evidence-tab:hover{color:var(--cn-heading)}.cn-evidence-tab--active{color:var(--cn-primary);border-bottom-color:var(--cn-primary);background:var(--cn-surface)}.cn-evidence-panel{padding:18px 20px}.cn-evidence-panel--locked{display:flex;align-items:center;justify-content:center;min-height:160px}.cn-evidence-item{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--cn-border);font-size:var(--cn-text-base)}.cn-evidence-item:last-child{border-bottom:none;padding-bottom:0}.cn-evidence-item:first-child{padding-top:0}.cn-evidence-item__icon{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--cn-text-sm);font-weight:700;flex-shrink:0;margin-top:1px}.cn-evidence-item__icon--pass{background:var(--cn-green-bg, #e8faf5);color:var(--cn-green, #20c19e)}.cn-evidence-item__icon--warn{background:var(--cn-yellow-bg, #fef7e8);color:var(--cn-yellow, #f5a623)}.cn-evidence-item__icon--fail{background:var(--cn-red-bg, #fdecea);color:var(--cn-red, #e74c3c)}.cn-evidence-item__icon--na{background:#f0f2f5;color:#9ca3af;font-size:var(--cn-text-base);font-weight:400}.cn-evidence-item__text{flex:1;color:var(--cn-text);line-height:1.5}.cn-evidence-lock{text-align:center;padding:20px}.cn-evidence-lock__icon{font-size:var(--cn-text-xl);display:block;margin-bottom:12px}.cn-evidence-lock__msg{font-size:var(--cn-text-base);color:var(--cn-muted);margin:0 0 16px;line-height:1.5;max-width:320px}.cn-export-section{display:flex;flex-direction:column;gap:10px}.cn-export-section--locked{opacity:.7}.cn-export-section__label{font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-muted);text-transform:uppercase;letter-spacing:.4px}.cn-retention-info{display:flex;flex-direction:column;gap:2px;padding:10px 0}.cn-retention-info--pro .cn-retention-info__value{color:var(--cn-primary)}.cn-retention-info__value{font-size:var(--cn-text-lg);font-weight:700;color:var(--cn-heading);line-height:1.2}.cn-retention-info__label{font-size:var(--cn-text-sm);color:var(--cn-muted)}.cn-retention-info__note{font-size:var(--cn-text-sm);color:var(--cn-muted);margin:6px 0 0;line-height:1.5}.cn-benefit-item__icon{width:18px;height:18px;border-radius:50%;background:var(--cn-green-bg, #e8faf5);color:var(--cn-green, #20c19e);font-size:var(--cn-text-xs);font-weight:900;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}@media(max-width:960px){.cn-consent-stats{grid-template-columns:repeat(2,1fr)}}@media(max-width:540px){.cn-consent-stats{grid-template-columns:1fr 1fr}.cn-timeline-item__top{flex-direction:column;align-items:flex-start}}.cn-modal__close{top:20px}.cn-step-indicator{padding-right:48px}.cn-wizard-step,.cn-welcome-step{padding:8px 0 4px}.cn-wizard-step__heading,.cn-welcome-step__heading{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading);margin:0 0 8px;line-height:1.3}.cn-wizard-step__heading--sm,.cn-welcome-step__heading--sm{font-size:var(--cn-text-lg)}.cn-wizard-step__desc,.cn-welcome-step__body,.cn-welcome-step__sub{font-size:var(--cn-text-md);color:var(--cn-muted);line-height:1.6;margin:0 0 20px}.cn-wizard-step__form-card{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;padding:20px 24px;margin-bottom:24px}.cn-wizard-step__nav{display:flex;align-items:center;padding-top:4px}.cn-wizard-step__nav-spacer{flex:1}.cn-welcome-split{display:grid;grid-template-columns:1fr 280px;gap:24px;align-items:start}.cn-welcome-split__main{display:flex;flex-direction:column;gap:14px}.cn-welcome-step__badge{display:inline-block;background:var(--cn-red-bg, #fdecea);color:var(--cn-red, #c0392b);font-size:var(--cn-text-sm);font-weight:700;padding:4px 10px;border-radius:20px;text-transform:uppercase;letter-spacing:.4px}.cn-risk-sidebar{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;padding:16px 18px}.cn-risk-sidebar__title{font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px}.cn-risk-item{display:flex;align-items:flex-start;gap:8px;padding:7px 0;border-bottom:1px solid var(--cn-border);font-size:var(--cn-text-sm)}.cn-risk-item:last-child{border-bottom:none}.cn-risk-item--critical .cn-risk-item__icon{color:var(--cn-red, #c0392b);font-weight:900}.cn-risk-item--high .cn-risk-item__icon{color:var(--cn-orange, #d35400);font-weight:900}.cn-risk-item--medium .cn-risk-item__icon{color:var(--cn-yellow, #b7950b);font-weight:900}.cn-risk-item__icon{font-size:var(--cn-text-base);width:16px;text-align:center;flex-shrink:0;margin-top:1px}.cn-risk-item__text{color:var(--cn-heading);line-height:1.4}.cn-auth-or{display:flex;align-items:center;gap:10px;margin:20px 0;color:#9ca3af;font-size:var(--cn-text-base)}.cn-auth-or:before,.cn-auth-or:after{content:"";flex:1;height:1px;background:#e0e4e8}.cn-auth-signin-teaser{border:1px solid #e0e4e8;border-radius:8px;padding:20px 16px;display:flex;flex-direction:column;align-items:center;gap:12px;font-size:var(--cn-text-md);background:#f9fafb;transition:border-color .15s}.cn-auth-signin-teaser:hover{border-color:#20c19e}.cn-auth-signin-teaser__heading{font-weight:600;color:var(--cn-heading);margin:0}.cn-welcome-step--account .cn-form-field__input{padding:11px 14px;font-size:var(--cn-text-md);border-radius:8px}.cn-welcome-step--account .cn-form-field__label{font-size:var(--cn-text-base);font-weight:600;color:var(--cn-heading);text-transform:none;letter-spacing:0}.cn-account-heading{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading);text-align:center;margin:0 0 8px;line-height:1.3}.cn-account-subtitle{font-size:var(--cn-text-md);color:#6b7280;text-align:center;margin:0 0 20px}.cn-auth-back-link{background:none;border:none;color:var(--cn-primary);font-size:var(--cn-text-base);font-family:var(--cn-font);cursor:pointer;padding:0;margin-bottom:12px}.cn-auth-back-link:hover{text-decoration:underline}.cn-auth-form{display:flex;flex-direction:column;gap:2px;max-width:440px}.cn-auth-form__terms{display:flex;align-items:flex-start;gap:8px;font-size:var(--cn-text-sm);color:var(--cn-muted);line-height:1.5;margin:4px 0;cursor:pointer}.cn-auth-form__terms input[type=checkbox]{margin-top:2px;flex-shrink:0;accent-color:var(--cn-primary)}.cn-auth-form__terms a{color:var(--cn-primary);text-decoration:none}.cn-auth-form__terms a:hover{text-decoration:underline}.cn-auth-form__forgot{text-align:right;margin-top:-4px;margin-bottom:4px}.cn-auth-form__forgot a{font-size:var(--cn-text-sm);color:var(--cn-primary);text-decoration:none}.cn-auth-form__forgot a:hover{text-decoration:underline}.cn-auth-form__subtitle{font-size:var(--cn-text-md);color:#6b7280;margin:0 0 24px;text-align:center}.cn-auth-form__actions{display:flex;gap:10px;margin-top:8px}.cn-auth-form__actions .cn-button{width:100%;padding:14px;font-size:var(--cn-text-md)}.cn-auth-form .cn-form-field__label{text-transform:none}.cn-plan-cards{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px}.cn-plan-card{background:var(--cn-surface);border:1.5px solid var(--cn-border);border-radius:12px;padding:24px 20px;display:flex;flex-direction:column;gap:16px;position:relative}.cn-plan-card--highlighted{border-color:var(--cn-primary);box-shadow:0 4px 18px #20c19e26}.cn-plan-card__popular-badge{position:absolute;top:-11px;left:50%;transform:translate(-50%);background:var(--cn-primary);color:#fff;font-size:var(--cn-text-xs);font-weight:700;padding:3px 12px;border-radius:20px;white-space:nowrap;text-transform:uppercase;letter-spacing:.4px}.cn-plan-card__name{font-size:var(--cn-text-lg);font-weight:700;color:var(--cn-heading)}.cn-plan-card__price{display:flex;align-items:baseline;gap:4px}.cn-plan-card__price-amount{font-size:var(--cn-text-xl);font-weight:900;color:var(--cn-heading);line-height:1}.cn-plan-card__price-period{font-size:var(--cn-text-base);color:var(--cn-muted)}.cn-plan-card__features{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;flex:1}.cn-plan-card__feature{display:flex;align-items:flex-start;gap:7px;font-size:var(--cn-text-base);color:var(--cn-text);line-height:1.4}.cn-plan-card__feature-icon{color:var(--cn-primary);font-weight:700;font-size:var(--cn-text-sm);flex-shrink:0;margin-top:1px}.cn-plan-card__feature-icon--pro{color:var(--cn-primary)}.cn-welcome-step__back-link{background:none;border:none;color:var(--cn-muted);font-size:var(--cn-text-base);font-family:var(--cn-font);cursor:pointer;padding:0;margin-top:8px}.cn-welcome-step__back-link:hover{color:var(--cn-heading)}.cn-pricing-hero{text-align:center;padding:8px 0 20px}.cn-pricing-hero__heading{font-size:var(--cn-text-xl);font-weight:900;color:var(--cn-heading);margin:0 0 8px}.cn-pricing-hero__sub{font-size:var(--cn-text-md);color:var(--cn-muted);margin:0 auto;max-width:480px;line-height:1.6}.cn-benefit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px}.cn-benefit-card{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;padding:14px 16px;text-align:center}.cn-benefit-card__icon{font-size:var(--cn-text-xl);margin-bottom:6px}.cn-benefit-card__title{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading);margin-bottom:4px}.cn-benefit-card__desc{font-size:var(--cn-text-sm);color:var(--cn-muted);line-height:1.5}.cn-pricing-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:8px}.cn-pricing-card{background:var(--cn-surface);border:1.5px solid var(--cn-border);border-radius:12px;padding:20px 18px;text-align:center;display:flex;flex-direction:column;gap:12px;position:relative}.cn-pricing-card--popular{border-color:var(--cn-primary);box-shadow:0 4px 18px #20c19e26}.cn-pricing-card__popular-badge{position:absolute;top:-11px;left:50%;transform:translate(-50%);background:var(--cn-primary);color:#fff;font-size:var(--cn-text-xs);font-weight:700;padding:3px 12px;border-radius:20px;white-space:nowrap;text-transform:uppercase;letter-spacing:.4px}.cn-pricing-card__domains{font-size:var(--cn-text-xl);font-weight:900;color:var(--cn-heading);line-height:1}.cn-pricing-card__domains-label{font-size:var(--cn-text-sm);font-weight:600;color:var(--cn-muted);text-transform:uppercase;letter-spacing:.4px;margin-top:-8px}.cn-pricing-card__price{font-size:var(--cn-text-xl);font-weight:900;color:var(--cn-heading);line-height:1.2}.cn-pricing-card__price sup{font-size:var(--cn-text-md);font-weight:700;vertical-align:super}.cn-pricing-card__price sub{font-size:var(--cn-text-sm);font-weight:400;color:var(--cn-muted);vertical-align:baseline}.cn-pricing-card__billed-note{font-size:var(--cn-text-sm);color:var(--cn-muted);margin-top:-6px}.cn-pricing-card__tagline{font-size:11px;color:#64748b;margin-top:2px;text-align:center}.cn-pricing-card .cn-button--outline{border:1.5px solid #d1d5db;background:#fff;color:var(--cn-text)}.cn-pricing-card .cn-button--outline:hover{background:var(--cn-bg-hover, #f8fafc);border-color:#20c19e;color:#20c19e}.cn-pricing-footer__learn-more{text-align:center;margin-top:24px}.cn-pricing-footer__learn-more .cn-link{font-size:13px;color:#6366f1;text-decoration:none;font-weight:500}.cn-pricing-footer__learn-more .cn-link:hover{text-decoration:underline}.cn-pricing-footer__dismiss{text-align:center;margin-top:12px;padding-bottom:8px}.cn-pricing-footer__dismiss .cn-link-btn{background:none;border:none;font-size:13px;color:#94a3b8;cursor:pointer;padding:4px 8px;font-weight:400}.cn-pricing-footer__dismiss .cn-link-btn:hover{color:#64748b;text-decoration:underline}.cn-step-dots{display:flex;align-items:center;justify-content:center;gap:8px;padding:16px;border-top:1px solid var(--cn-border);margin-top:16px}.cn-step-dot{width:8px;height:8px;border-radius:50%;background:var(--cn-border);transition:all .2s}.cn-step-dot--active{background:var(--cn-primary);width:24px;border-radius:4px}.cn-step-dot--done{background:var(--cn-primary)}.cn-choose__heading{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading);margin:0 0 24px;text-align:center}.cn-choose__google-notice{margin:-8px 0 20px;padding:12px 14px;border-radius:8px;background:#f5f8ff;border:1px solid #c7d7fe;color:#1e3a8a;font-size:var(--cn-text-sm)}.cn-choose__sub{font-size:var(--cn-text-md);color:var(--cn-muted);text-align:center;margin:0 0 28px}.cn-protection-cards{display:flex;gap:20px;width:100%}.cn-protection-card{flex:1;display:flex;flex-direction:column;border:2px solid var(--cn-border);border-radius:14px;padding:28px 24px;text-align:center;position:relative;transition:all .2s;cursor:default;background:#fff}.cn-protection-card:hover{border-color:#c0c4cc;transform:translateY(-2px);box-shadow:0 6px 20px #0000000f}.cn-protection-card--recommended{border-color:var(--cn-primary);box-shadow:0 4px 16px #20c19e26}.cn-protection-card__risk-tag-row--spacer{visibility:hidden;pointer-events:none;height:36px;margin-bottom:0}.cn-protection-card__risk-tag{display:inline-block;background:var(--cn-red-bg, #fdecea);color:var(--cn-red, #c0392b);font-size:var(--cn-text-xs);font-weight:700;padding:3px 10px;border-radius:10px;margin-bottom:12px;text-transform:uppercase;letter-spacing:.04em}.cn-protection-card__badge{position:absolute;top:-11px;left:50%;transform:translate(-50%);font-size:var(--cn-text-xs);font-weight:700;padding:3px 12px;border-radius:10px;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.cn-protection-card__badge--risk{background:#6b7280;color:#fff}.cn-protection-card__badge--rec{background:var(--cn-primary);color:#fff}.cn-protection-card__badge--max{background:#ffc107;color:#1a1a2e}.cn-protection-card__icon{width:56px;height:56px;border-radius:14px;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:var(--cn-text-xl)}.cn-protection-card__icon--banner{background:#f0f2f5}.cn-protection-card__icon--protect{background:#e6f9f4}.cn-protection-card__icon--comply{background:#fff8e1}.cn-protection-card__title{font-size:var(--cn-text-lg);font-weight:700;color:var(--cn-heading);margin-bottom:6px;line-height:1.3}.cn-protection-card__subtitle{font-size:var(--cn-text-sm);color:var(--cn-muted);margin-bottom:0;line-height:1.5;min-height:40px}.cn-protection-card__price-zone{min-height:88px;margin-top:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%}.cn-protection-card__price-label{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading);margin-bottom:4px;margin-top:2px}.cn-protection-card__price{margin-bottom:4px}.cn-protection-card__price-amount{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading)}.cn-protection-card__price-amount sup{font-size:var(--cn-text-md);vertical-align:super}.cn-protection-card__price-period{font-size:var(--cn-text-sm);color:var(--cn-muted)}.cn-protection-card__price-note{font-size:var(--cn-text-sm);color:var(--cn-muted);font-weight:600;margin-top:6px;margin-bottom:4px;display:block}.cn-protection-card__price-note--danger{color:var(--cn-red, #c0392b)}.cn-protection-card__price-discount{font-size:var(--cn-text-sm);color:var(--cn-primary);font-weight:600;display:block;margin-top:4px}.cn-protection-card__divider{height:1px;background:var(--cn-border);margin:16px 0}.cn-protection-card__features{list-style:none;padding:0;margin:14px 0 0;text-align:left}.cn-protection-card__feature{padding:5px 0;font-size:var(--cn-text-sm);color:var(--cn-text);display:flex;align-items:flex-start;gap:8px;line-height:1.4}.cn-protection-card__feature--included .cn-protection-card__feature-icon{color:var(--cn-primary)}.cn-protection-card__feature--excluded .cn-protection-card__feature-icon{color:#ccc}.cn-protection-card__feature--excluded{color:var(--cn-muted)}.cn-protection-card__feature--warning .cn-protection-card__feature-icon{color:var(--cn-red, #c0392b)}.cn-protection-card__feature--warning{color:var(--cn-red, #c0392b);font-weight:600}.cn-protection-card__feature-icon{flex-shrink:0;font-size:var(--cn-text-base);margin-top:1px}.cn-protection-card__footer{margin-top:auto;padding-top:20px;display:flex;flex-direction:column;align-items:center;gap:10px;width:100%}.cn-protection-card__btn{width:100%;text-align:center;padding:12px 28px;border-radius:24px;font-family:var(--cn-font);font-size:var(--cn-text-md);font-weight:700;border:none;box-sizing:border-box;cursor:pointer;transition:all .15s}.cn-protection-card__btn--ghost{background:transparent;color:var(--cn-muted);border:2px solid var(--cn-border);padding:10px 26px}.cn-protection-card__btn--ghost:hover{color:var(--cn-heading);border-color:#c0c4cc}.cn-protection-card__btn--primary{background:var(--cn-primary);color:#fff}.cn-protection-card__btn--primary:hover{background:var(--cn-primary-hover)}.cn-protection-card__btn--secondary{background:#ffc107;color:#1a1a2e}.cn-protection-card__btn--secondary:hover{background:#e6ad00}.cn-protection-card__learn-more{background:none;border:none;color:var(--cn-muted);font-size:var(--cn-text-base);font-family:var(--cn-font);cursor:pointer;padding:0;margin-top:10px}.cn-protection-card__learn-more:hover{color:var(--cn-primary)}.cn-warning-modal{background:#fff;border:3px solid var(--cn-red, #c0392b);border-radius:14px;padding:36px 32px;text-align:center;box-shadow:0 8px 40px #c0392b26;max-width:680px;margin:0 auto}.cn-warning-modal__icon{width:72px;height:72px;background:var(--cn-red-bg, #fdecea);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 20px;font-size:var(--cn-text-xl)}.cn-warning-modal__heading{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-red, #c0392b);margin-bottom:12px}.cn-warning-modal__text{font-size:var(--cn-text-md);color:var(--cn-text);max-width:600px;margin:0 auto 20px;line-height:1.7}.cn-warning-modal__consequences{background:#fdf0ee;border:1px solid #f5cac3;border-radius:10px;padding:20px 24px;margin:0 auto 24px;max-width:600px;text-align:left}.cn-warning-modal__consequences h5{font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-red, #c0392b);text-transform:uppercase;letter-spacing:.04em;margin-bottom:10px}.cn-warning-modal__consequences ul{list-style:none;padding:0;margin:0}.cn-warning-modal__consequences li{padding:6px 0;font-size:var(--cn-text-base);color:var(--cn-text);display:flex;align-items:flex-start;gap:10px;border-bottom:1px solid #f5cac3;line-height:1.5}.cn-warning-modal__consequences li:last-child{border-bottom:none}.cn-warning-modal__consequence-icon{color:var(--cn-red, #c0392b);font-size:var(--cn-text-md);flex-shrink:0;margin-top:2px}.cn-warning-modal__checkbox{display:flex;align-items:flex-start;gap:10px;background:#fff;border:2px solid var(--cn-border);border-radius:10px;padding:14px 16px;margin:0 auto 20px;max-width:600px;text-align:left;cursor:pointer;transition:border-color .15s}.cn-warning-modal__checkbox:hover{border-color:var(--cn-red, #c0392b)}.cn-warning-modal__checkbox input[type=checkbox]{width:18px;height:18px;margin-top:2px;flex-shrink:0;accent-color:var(--cn-red, #c0392b)}.cn-warning-modal__checkbox span{font-size:var(--cn-text-base);color:var(--cn-text);line-height:1.5}.cn-warning-modal__checkbox strong{color:var(--cn-red, #c0392b)}.cn-warning-modal__actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.cn-warning-modal__btn{display:inline-block;padding:12px 28px;border-radius:24px;font-family:var(--cn-font);font-size:var(--cn-text-md);font-weight:700;border:none;cursor:pointer;transition:all .15s}.cn-warning-modal__btn--danger{background:var(--cn-red, #c0392b);color:#fff}.cn-warning-modal__btn--danger:hover{background:#a93226}.cn-warning-modal__btn--danger[disabled]{opacity:.4;cursor:not-allowed}.cn-warning-modal__btn--safe{background:var(--cn-primary);color:#fff}.cn-warning-modal__btn--safe:hover{background:var(--cn-primary-hover)}.cn-pro-pricing__hero{text-align:center;margin-bottom:28px}.cn-pro-pricing__heading{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading);margin:0 0 8px}.cn-pro-pricing__sub{font-size:var(--cn-text-md);color:var(--cn-muted);margin:0}.cn-pro-pricing__benefits{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:32px}.cn-pro-pricing__benefit{background:#f8fffe;border:1px solid #d4f0e8;border-radius:10px;padding:16px;text-align:center}.cn-pro-pricing__benefit-icon{font-size:var(--cn-text-xl);margin-bottom:8px}.cn-pro-pricing__benefit-title{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading);margin:0 0 4px}.cn-pro-pricing__benefit-desc{font-size:var(--cn-text-sm);color:var(--cn-muted);line-height:1.4;margin:0}.cn-pro-pricing__cards{display:flex;gap:16px;margin-bottom:16px}.cn-pro-pricing__card{flex:1;border:2px solid var(--cn-border);border-radius:12px;padding:24px 20px;text-align:center;position:relative;transition:all .15s;cursor:pointer;background:#fff}.cn-pro-pricing__card:hover{border-color:#c0c4cc;transform:translateY(-1px);box-shadow:0 4px 12px #0000000f}.cn-pro-pricing__card--popular{border-color:var(--cn-primary);box-shadow:0 4px 16px #20c19e26}.cn-pro-pricing__card-badge{position:absolute;top:-10px;left:50%;transform:translate(-50%);background:var(--cn-primary);color:#fff;font-size:var(--cn-text-xs);font-weight:700;padding:2px 10px;border-radius:10px;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.cn-pro-pricing__card-domains{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading);line-height:1}.cn-pro-pricing__card-domains-label{font-size:var(--cn-text-sm);color:var(--cn-muted);margin-bottom:12px;display:block}.cn-pro-pricing__card-price{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading);margin-bottom:4px}.cn-pro-pricing__card-price sup{font-size:var(--cn-text-md);vertical-align:super}.cn-pro-pricing__card-price sub{font-size:var(--cn-text-sm);font-weight:400;color:var(--cn-muted)}.cn-pro-pricing__card-per-domain{font-size:var(--cn-text-sm);color:var(--cn-muted);margin-bottom:16px;display:block}.cn-pro-pricing__card-btn{width:100%;text-align:center;padding:10px;border-radius:20px;font-family:var(--cn-font);font-size:var(--cn-text-base);font-weight:700;border:2px solid var(--cn-border);background:transparent;color:var(--cn-heading);cursor:pointer;transition:all .15s}.cn-pro-pricing__card-btn:hover{border-color:var(--cn-primary);color:var(--cn-primary)}.cn-pro-pricing__card-btn--primary{background:var(--cn-primary);color:#fff;border-color:var(--cn-primary)}.cn-pro-pricing__card-btn--primary:hover{background:var(--cn-primary-hover);border-color:var(--cn-primary-hover)}.cn-pro-pricing__back{display:inline-flex;align-items:center;gap:6px;font-size:var(--cn-text-base);color:var(--cn-muted);cursor:pointer;margin-top:8px;border:none;background:none;font-family:var(--cn-font)}.cn-pro-pricing__back:hover{color:var(--cn-primary)}.cn-script-blocking{margin:12px 0 8px}.cn-script-blocking__label{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading);margin-bottom:4px}.cn-script-blocking__desc{font-size:var(--cn-text-sm);color:var(--cn-muted);margin:0 0 10px}.cn-script-blocking__tabs{display:flex;gap:0;margin-bottom:8px}.cn-script-blocking__tab{padding:6px 16px;font-size:var(--cn-text-sm);font-weight:600;font-family:var(--cn-font);border:1.5px solid var(--cn-border);background:var(--cn-surface);color:var(--cn-muted);cursor:pointer;transition:all .15s}.cn-script-blocking__tab:first-child{border-radius:6px 0 0 6px}.cn-script-blocking__tab:last-child{border-radius:0 6px 6px 0;border-left:none}.cn-script-blocking__tab--active{background:var(--cn-primary);color:#fff;border-color:var(--cn-primary)}.cn-script-blocking__tab--active+.cn-script-blocking__tab{border-left:none}@media(max-width:760px){.cn-category-grid,.cn-welcome-split,.cn-plan-cards,.cn-benefit-grid,.cn-pricing-cards{grid-template-columns:1fr}.cn-protection-cards{flex-direction:column}.cn-pro-pricing__benefits{grid-template-columns:1fr}.cn-pro-pricing__cards{flex-direction:column}}.cn-payment-step{padding:8px 0 16px}.cn-payment-step__heading{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading);margin:0 0 16px;text-align:center}.cn-payment-step__plan-pill{display:inline-block;background:var(--cn-green-bg);color:var(--cn-primary);border:1px solid var(--cn-primary);border-radius:20px;padding:4px 14px;font-size:var(--cn-text-base);font-weight:600;margin:0 auto 20px;text-align:center;width:100%;box-sizing:border-box}.cn-payment-step__error{background:var(--cn-red-bg);color:var(--cn-red);border:1px solid var(--cn-red);border-radius:6px;padding:10px 14px;font-size:var(--cn-text-base);margin-bottom:16px}.cn-payment-step__loading{text-align:center;color:var(--cn-muted);font-size:var(--cn-text-base);padding:32px 0}.cn-payment-step__form{width:100%}.cn-payment-step__field{margin-bottom:14px;flex:1}.cn-payment-step__label{display:block;font-size:var(--cn-text-sm);font-weight:600;color:var(--cn-text);margin-bottom:5px;font-family:var(--cn-font)}.cn-payment-step__input{width:100%;height:40px;padding:0 12px;border:1.5px solid var(--cn-border);border-radius:6px;font-size:var(--cn-text-md);font-family:var(--cn-font);color:var(--cn-text);background:var(--cn-surface);box-sizing:border-box;transition:border-color .15s}.cn-payment-step__input:focus{outline:none;border-color:var(--cn-primary)}.cn-payment-step__hosted-field{height:40px;padding:0 12px;border:1.5px solid var(--cn-border);border-radius:6px;background:var(--cn-surface);box-sizing:border-box;transition:border-color .15s}.cn-payment-step__hosted-field.braintree-hosted-fields-focused{border-color:var(--cn-primary)}.cn-payment-step__hosted-field.braintree-hosted-fields-invalid{border-color:var(--cn-red)}.cn-payment-step__hosted-field.braintree-hosted-fields-valid{border-color:var(--cn-green)}.cn-payment-step__row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.cn-payment-step__braintree-badge{font-size:var(--cn-text-sm);color:var(--cn-muted);text-align:center;margin:8px 0 16px}.cn-payment-step__submit{width:100%;height:44px;font-size:var(--cn-text-md);font-weight:600}.cn-payment-step__back{margin-top:10px;height:44px}.cn-payment-step__back--standalone{margin-top:16px}.cn-auth-form__error{background:var(--cn-red-bg);color:var(--cn-red);border:1px solid var(--cn-red);border-radius:6px;padding:10px 14px;font-size:var(--cn-text-base);margin-bottom:14px}.cn-auth-form__switch-link{background:none;border:none;padding:0;color:var(--cn-red);font-size:var(--cn-text-base);font-weight:600;text-decoration:underline;cursor:pointer;font-family:var(--cn-font)}.cn-auth-form__switch-link:hover{color:var(--cn-primary)}.cn-auth-form__field-hint{margin:-6px 0 10px;font-size:var(--cn-text-sm);color:var(--cn-muted);line-height:1.4}.cn-license-select{text-align:center}.cn-license-select__upsell-icon{font-size:var(--cn-text-xl);margin-bottom:12px}.cn-license-select__heading{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading);margin:0 0 10px;line-height:1.3;text-align:center}.cn-license-select__sub{font-size:var(--cn-text-md);color:var(--cn-muted);line-height:1.6;max-width:420px;margin:0 auto 20px}.cn-license-select__choose-label{font-size:var(--cn-text-base);color:var(--cn-text);margin:0 0 12px;text-align:left}.cn-license-select__single-card{display:flex;align-items:center;justify-content:space-between;border:1.5px solid var(--cn-primary);border-radius:10px;padding:16px 20px;background:var(--cn-green-bg, #e8faf5);margin-bottom:20px;text-align:left}.cn-license-select__cards{display:flex;flex-direction:column;gap:10px;margin-bottom:20px;text-align:left}.cn-license-select__card{display:flex;align-items:center;gap:12px;border:1.5px solid var(--cn-border);border-radius:10px;padding:14px 16px;cursor:pointer;background:var(--cn-surface);transition:border-color .15s,background .15s}.cn-license-select__card:hover{border-color:var(--cn-primary)}.cn-license-select__card--selected{border-color:var(--cn-primary);background:var(--cn-green-bg, #e8faf5)}.cn-license-select__radio{flex-shrink:0;accent-color:var(--cn-primary);width:16px;height:16px}.cn-license-select__card-body{display:flex;flex-direction:column;gap:2px;flex:1}.cn-license-select__card-name{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading)}.cn-license-select__card-slots{font-size:var(--cn-text-sm);color:var(--cn-muted)}.cn-license-select__error{background:var(--cn-red-bg, #fdecea);color:var(--cn-red, #e74c3c);border:1px solid var(--cn-red, #e74c3c);border-radius:6px;padding:10px 14px;font-size:var(--cn-text-base);margin-bottom:14px;text-align:left}.cn-license-select__actions{margin-bottom:12px}.cn-license-select__free-link{background:none;border:none;color:var(--cn-muted);font-size:var(--cn-text-base);font-family:var(--cn-font);cursor:pointer;padding:0;text-decoration:underline}.cn-license-select__free-link:hover{color:var(--cn-text)}.cn-plugin-settings{margin-top:24px}.cn-plugin-settings__actions{display:flex;align-items:center;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--cn-border, #e2e8f0)}.cn-plugin-settings__saved{color:var(--cn-success, #16a34a);font-size:var(--cn-text-base);font-weight:500}.cn-toggle-row{padding:10px 0;border-bottom:1px solid var(--cn-border-light, #f1f5f9)}.cn-toggle-row:last-child{border-bottom:none}.cn-toggle-row__label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:var(--cn-text-base);font-weight:500;color:var(--cn-text, #1e293b)}.cn-toggle-row__input{width:16px;height:16px;accent-color:var(--cn-primary, #3b82f6);cursor:pointer}.cn-toggle-row__desc{margin-top:4px;padding-left:24px;font-size:var(--cn-text-sm);color:var(--cn-text-muted, #64748b)}.cn-radio-group{padding:8px 0}.cn-radio-group__label{font-size:var(--cn-text-base);font-weight:500;color:var(--cn-text, #1e293b);margin-bottom:6px}.cn-radio-group__options{display:flex;gap:16px;flex-wrap:wrap}.cn-radio-group__option{display:flex;align-items:center;gap:6px;font-size:var(--cn-text-base);color:var(--cn-text, #1e293b);cursor:pointer}.cn-radio-group__option input[type=radio]{accent-color:var(--cn-primary, #3b82f6);cursor:pointer}.cn-opacity-slider{width:100%;height:6px;accent-color:var(--cn-primary, #3b82f6);cursor:pointer}.cn-compliance-behavior__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}@media(max-width:900px){.cn-compliance-behavior__grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.cn-compliance-behavior__grid{grid-template-columns:1fr}}.cn-compliance-behavior__footer{padding:10px 14px;background:var(--cn-bg-muted, #f8fafc);border-radius:6px;font-size:var(--cn-text-sm);color:var(--cn-text-muted, #64748b);line-height:1.5}.cn-compliance-card__pills{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.cn-compliance-card__note{font-size:var(--cn-text-sm);color:var(--cn-text-muted, #64748b);margin-top:4px;line-height:1.4}.cn-compliance-empty{padding:24px 20px;border:1px dashed var(--cn-border, #e2e8f0);border-radius:8px;text-align:center}.cn-compliance-empty__icon{font-size:var(--cn-text-xl);margin-bottom:10px}.cn-compliance-empty__title{font-size:var(--cn-text-md);font-weight:600;color:var(--cn-text, #1e293b);margin-bottom:6px}.cn-compliance-empty__body{font-size:var(--cn-text-base);color:var(--cn-text-muted, #64748b);margin-bottom:14px;max-width:320px;margin-left:auto;margin-right:auto}.cn-compliance-empty__link{font-size:var(--cn-text-base);font-weight:600;color:var(--cn-primary, #3b82f6);text-decoration:none}.cn-compliance-empty__link:hover{text-decoration:underline}.cn-rule-builder{margin-top:8px}.cn-rule-builder__empty{padding:10px 14px;background:var(--cn-bg-muted, #f8fafc);border:1px dashed var(--cn-border, #e2e8f0);border-radius:6px;font-size:var(--cn-text-sm);color:var(--cn-text-muted, #64748b);margin:0 0 8px}.cn-rule-builder__add-group{background:none;border:1px dashed var(--cn-border, #e2e8f0);border-radius:6px;padding:8px 14px;cursor:pointer;font-size:var(--cn-text-sm);color:var(--cn-primary, #00a99d);width:100%;margin-top:8px}.cn-rule-builder__add-group:hover{border-color:var(--cn-primary, #00a99d);background:var(--cn-bg-muted, #f8fafc)}.cn-rule-group__or{text-align:center;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--cn-text-muted, #64748b);padding:6px 0;letter-spacing:.05em}.cn-rule-group__and{font-size:11px;font-weight:600;text-transform:uppercase;color:var(--cn-text-muted, #94a3b8);padding:2px 0 2px 4px}.cn-rule-group__card{border:1px solid var(--cn-border, #e2e8f0);border-radius:6px;padding:10px;background:var(--cn-bg-muted, #f8fafc)}.cn-rule-group__add-rule{background:none;border:none;padding:4px 0;cursor:pointer;font-size:var(--cn-text-sm);color:var(--cn-primary, #00a99d)}.cn-rule-group__add-rule:hover{text-decoration:underline}.cn-rule-row{display:flex;gap:6px;align-items:center;margin-bottom:4px}.cn-rule-row select{flex:1;min-width:0;padding:5px 8px;border:1px solid var(--cn-border, #e2e8f0);border-radius:4px;font-size:var(--cn-text-sm);background:#fff}.cn-rule-row__param{flex:1.2}.cn-rule-row__operator{flex:1}.cn-rule-row__value{flex:1.5}.cn-rule-row__remove{background:none;border:none;cursor:pointer;font-size:18px;color:var(--cn-text-muted, #94a3b8);padding:2px 6px;line-height:1;flex-shrink:0}.cn-rule-row__remove:hover{color:#ef4444}.cn-pill-toggle{display:flex;background:var(--cn-light-bg, #f0f2f5);border-radius:24px;padding:4px;width:fit-content}.cn-pill-toggle__btn{flex:1;border:none;background:transparent;border-radius:20px;cursor:pointer;font-size:var(--cn-text-base);font-family:var(--cn-font);font-weight:600;padding:8px 24px;color:var(--cn-muted);transition:all .15s;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.cn-pill-toggle__btn--active{background:#fff;box-shadow:0 1px 3px #0000001a;color:var(--cn-heading)}.cn-pill-toggle__btn:not(.cn-pill-toggle__btn--active):hover{color:var(--cn-heading)}.cn-pill-toggle__badge{background:linear-gradient(135deg,#f7b731,#f5a623);color:#1a1a1a;font-size:var(--cn-text-xs);font-weight:900;padding:2px 6px;border-radius:3px;text-transform:uppercase;letter-spacing:.3px}.cn-pill-toggle-desc{font-size:var(--cn-text-sm);color:var(--cn-muted);margin:8px 0 6px}.cn-pill-toggle-note{font-size:var(--cn-text-xs);color:var(--cn-text-muted, #64748b);margin-top:12px}.cn-protection-header{margin-bottom:20px}.cn-protection-header__title{font-size:var(--cn-text-xl);font-weight:600;color:#434f58;margin:0 0 4px}.cn-protection-header__subtitle{font-size:var(--cn-text-base);color:#6b7280;margin:0}.cn-first-run{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;padding:24px;margin-bottom:24px;box-shadow:0 1px 4px #0000000f}.cn-first-run__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.cn-first-run__title{font-size:var(--cn-text-lg);font-weight:600;color:#434f58;margin:0}.cn-first-run__dismiss{background:none;border:none;cursor:pointer;font-size:var(--cn-text-xl);color:#6b7280;line-height:1;padding:2px 6px;border-radius:4px}.cn-first-run__dismiss:hover{background:#f3f4f6;color:#434f58}.cn-first-run__progress{display:flex;align-items:center;gap:0;margin-bottom:24px;counter-reset:step}.cn-first-run__step-indicator{display:flex;align-items:center;gap:8px;flex:1;position:relative}.cn-first-run__step-indicator:not(:last-child):after{content:"";display:block;flex:1;height:2px;background:var(--cn-border);margin:0 8px;order:3}.cn-first-run__step-indicator--done .cn-first-run__step-num{background:var(--cn-primary);border-color:var(--cn-primary);color:#fff}.cn-first-run__step-indicator--done .cn-first-run__step-num:before{content:"✓"}.cn-first-run__step-indicator--done:after{background:var(--cn-primary)!important}.cn-first-run__step-indicator--active .cn-first-run__step-num{background:var(--cn-primary);border-color:var(--cn-primary);color:#fff}.cn-first-run__step-indicator--active .cn-first-run__step-label{color:var(--cn-primary);font-weight:600}.cn-first-run__step-num{width:28px;height:28px;border-radius:50%;border:2px solid var(--cn-border);background:#fff;color:#6b7280;font-size:var(--cn-text-sm);font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;order:1;transition:background .2s,border-color .2s}.cn-first-run__step-label{font-size:var(--cn-text-sm);color:#6b7280;order:2;white-space:nowrap}.cn-first-run__body{margin-bottom:20px}.cn-first-run__body h3{font-size:var(--cn-text-md);font-weight:600;color:#434f58;margin:0 0 4px}.cn-first-run__body p{font-size:var(--cn-text-base);color:#6b7280;margin:0 0 16px}.cn-first-run__step-badge{display:inline-block;font-size:var(--cn-text-sm);font-weight:500;color:#6b7280;background:#f1f5f9;padding:2px 8px;border-radius:20px;margin-left:8px;vertical-align:middle}.cn-first-run__nav{display:flex;align-items:center;justify-content:space-between;padding-top:16px;border-top:1px solid var(--cn-border)}.cn-first-run__nav-right{display:flex;align-items:center;gap:8px;margin-left:auto}.cn-inline-panel{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;padding:24px;margin-bottom:24px;box-shadow:0 1px 4px #0000000f}.cn-inline-panel__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.cn-inline-panel__title{font-size:var(--cn-text-lg);font-weight:600;color:#434f58;margin:0}.cn-inline-panel__dismiss{background:none;border:none;cursor:pointer;font-size:var(--cn-text-xl);color:#6b7280;line-height:1;padding:2px 6px;border-radius:4px}.cn-inline-panel__dismiss:hover{background:#f3f4f6;color:#434f58}.cn-inline-panel__body{margin-bottom:20px}.cn-inline-panel__body h3{font-size:var(--cn-text-md);font-weight:600;color:#434f58;margin:0 0 4px}.cn-inline-panel__body p{font-size:var(--cn-text-base);color:#6b7280;margin:0 0 16px}.cn-inline-panel__footer{display:flex;align-items:center;justify-content:space-between;padding-top:16px;border-top:1px solid var(--cn-border)}@media(prefers-reduced-motion:no-preference){@keyframes cn-panel-enter{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.cn-inline-panel{animation:cn-panel-enter .22s cubic-bezier(.16,1,.3,1) both}.cn-inline-panel--closing{animation:none;transition:opacity .16s ease,transform .16s ease;opacity:0;transform:translateY(-6px);pointer-events:none}}.cn-template-presets__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px}@media(max-width:700px){.cn-template-presets__grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:no-preference){@keyframes cn-fade-in{0%{opacity:0}to{opacity:1}}.cn-template-presets__grid{animation:cn-fade-in .15s ease both}}.cn-template-presets__card{border:2px solid var(--cn-border);border-radius:10px;padding:14px;cursor:pointer;background:var(--cn-surface);transition:border-color .15s,box-shadow .15s;position:relative;text-align:left;width:100%}.cn-template-presets__card:hover{border-color:var(--cn-primary);box-shadow:0 2px 8px #20c19e1f}.cn-template-presets__card--active{border-color:var(--cn-primary);background:var(--cn-primary-light, #e6faf5)}.cn-template-presets__card--applying{opacity:.7;pointer-events:none}.cn-template-presets__thumb{width:100%;height:56px;border-radius:4px;background:#f3f4f6;margin-bottom:10px;position:relative;overflow:hidden;border:1px solid #e5e7eb}.cn-template-presets__thumb:before{content:"";display:block;height:8px;background:#e5e7eb;border-bottom:1px solid #d1d5db}.cn-template-presets__btn-preview{position:absolute;height:12px;width:70%;border-radius:2px;left:50%;transform:translate(-50%);opacity:.85}.cn-template-presets__meta{display:flex;align-items:center;justify-content:space-between;gap:8px}.cn-template-presets__name{font-size:var(--cn-text-base);font-weight:600;color:#434f58}.cn-template-presets__active-pill{font-size:var(--cn-text-xs);font-weight:600;color:#189b7e;background:var(--cn-primary-light, #e6faf5);border:1px solid rgba(32,193,158,.3);border-radius:20px;padding:2px 8px;letter-spacing:.02em}.cn-template-presets__swatches{display:flex;gap:4px;margin-top:8px}.cn-template-presets__swatch{width:16px;height:16px;border-radius:50%;border:1px solid rgba(0,0,0,.1);flex-shrink:0}.cn-template-presets__spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(32,193,158,.3);border-top-color:var(--cn-primary);border-radius:50%;animation:cn-spin .6s linear infinite;margin-right:6px;vertical-align:middle}.cn-template-presets__portal-link{display:block;font-size:var(--cn-text-sm);color:var(--cn-primary);text-decoration:none;margin-top:8px}.cn-template-presets__portal-link:hover{text-decoration:underline}.cn-template-presets__pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:16px}.cn-template-presets__page-btn{background:none;border:1px solid #e0e4e8;border-radius:6px;width:32px;height:32px;cursor:pointer;font-size:var(--cn-text-lg);display:flex;align-items:center;justify-content:center;transition:border-color .15s}.cn-template-presets__page-btn:disabled{opacity:.35;cursor:default}.cn-template-presets__page-btn:not(:disabled):hover{border-color:var(--cn-primary)}.cn-template-presets__page-count{font-size:var(--cn-text-base);color:#6b7280}.cn-template-presets__error{font-size:var(--cn-text-sm);color:#d63638;margin-top:8px}.cn-template-card__descriptor{font-size:var(--cn-text-sm);color:#9ca3af;letter-spacing:.02em;margin-top:2px}@keyframes cn-spin{to{transform:rotate(360deg)}}.cn-law-selector__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:16px}@media(max-width:600px){.cn-law-selector__grid{grid-template-columns:1fr}}.cn-law-selector__card{display:flex;align-items:flex-start;gap:10px;border:2px solid var(--cn-border);border-radius:10px;padding:12px 14px;cursor:pointer;background:var(--cn-surface);transition:border-color .15s}.cn-law-selector__card:hover{border-color:var(--cn-primary)}.cn-law-selector__card--active{border-color:var(--cn-primary);background:var(--cn-primary-light, #e6faf5)}.cn-law-selector__checkbox{width:16px;height:16px;margin-top:1px;flex-shrink:0;accent-color:var(--cn-primary)}.cn-law-selector__info{flex:1}.cn-law-selector__name{font-size:var(--cn-text-base);font-weight:600;color:#434f58;margin-bottom:1px}.cn-law-selector__jurisdiction{font-size:var(--cn-text-sm);color:#6b7280;margin-bottom:2px}.cn-law-selector__desc{font-size:var(--cn-text-sm);color:#6b7280;line-height:1.4}.cn-law-selector__dns-url{margin-top:12px;padding:14px;background:#fffbeb;border:1px solid #fde68a;border-radius:10px}.cn-law-selector__dns-label{font-size:var(--cn-text-base);font-weight:600;color:#434f58;margin-bottom:4px;display:block}.cn-law-selector__dns-help{font-size:var(--cn-text-sm);color:#6b7280;margin-bottom:8px;display:block}.cn-law-selector__dns-input{width:100%;padding:8px 10px;border:1px solid var(--cn-border);border-radius:4px;font-size:var(--cn-text-base);box-sizing:border-box}.cn-law-selector__dns-input:focus{outline:none;border-color:var(--cn-primary);box-shadow:0 0 0 2px #20c19e26}.cn-law-selector__dns-required{font-size:var(--cn-text-sm);color:#d63638;margin-top:4px}.cn-compliance-rules__consent-modes{margin-top:16px;border-top:1px solid var(--cn-border);padding-top:16px}.cn-compliance-rules__mode-toggle{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid #f3f4f6}.cn-compliance-rules__mode-toggle:last-child{border-bottom:none}.cn-compliance-rules__mode-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-size:var(--cn-text-sm);font-weight:700;margin-right:8px;flex-shrink:0}.cn-compliance-rules__mode-icon--g{background:#ea4335;color:#fff}.cn-compliance-rules__mode-icon--f{background:#1877f2;color:#fff}.cn-compliance-rules__mode-icon--m{background:#00a4ef;color:#fff}.cn-compliance-rules__detected-badge{font-size:var(--cn-text-xs);font-weight:600;color:#0d6efd;background:#e7f1ff;border-radius:20px;padding:2px 7px;margin-left:6px}.cn-compliance-rules__suggestion{background:#f0f9ff;border:1px solid #bae6fd;border-radius:4px;padding:10px 12px;font-size:var(--cn-text-sm);color:#0369a1;margin-bottom:14px}.cn-compliance-rules__portal-link{display:block;font-size:var(--cn-text-sm);color:var(--cn-primary);text-decoration:none;margin-top:14px}.cn-compliance-rules__portal-link:hover{text-decoration:underline}.cn-compliance-rules__actions{margin-top:16px;display:flex;gap:8px;align-items:center}.cn-language-picker__grid{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.cn-language-picker__badge{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border:1px solid var(--cn-border);border-radius:20px;background:#fff;font-size:var(--cn-text-sm);font-weight:500;color:#434f58;cursor:pointer;transition:border-color .15s,background .15s}.cn-language-picker__badge:hover{border-color:var(--cn-primary)}.cn-language-picker__badge--active{border-color:var(--cn-primary);background:var(--cn-primary-light, #e6faf5);color:#189b7e;font-weight:600}.cn-language-picker__badge--locked{opacity:.45;cursor:pointer;border-color:var(--cn-border);background:#f9fafb;color:#6b7280}.cn-language-picker__badge--locked:hover{border-color:var(--cn-primary);opacity:.65}.cn-language-picker__note{font-size:var(--cn-text-sm);color:#6b7280;margin-bottom:12px;display:block}.cn-language-picker__hint{font-size:var(--cn-text-sm);color:#6b7280;line-height:1.5;margin:0 0 12px;padding:8px 10px;background:#f8fafc;border-left:3px solid var(--cn-border);border-radius:0 4px 4px 0}.cn-language-picker__actions{display:flex;gap:8px;margin-top:12px}.cn-language-picker__error{font-size:var(--cn-text-sm);color:#d63638;margin-top:6px}.cn-dns-url{margin-top:12px}.cn-dns-url label{display:block;font-size:var(--cn-text-base);font-weight:600;color:#434f58;margin-bottom:4px}.cn-dns-url input{width:100%;padding:8px 10px;border:1px solid var(--cn-border);border-radius:4px;font-size:var(--cn-text-base);box-sizing:border-box}.cn-dns-url input:focus{outline:none;border-color:var(--cn-primary);box-shadow:0 0 0 2px #20c19e26}.cn-saved-indicator{font-size:var(--cn-text-sm);color:#166534;font-weight:500}.cn-error-indicator{font-size:var(--cn-text-sm);color:#d63638;font-weight:500}@font-face{font-family:Lato;font-style:normal;font-weight:300;font-display:swap;src:url(./lato-300.woff2) format("woff2")}@font-face{font-family:Lato;font-style:normal;font-weight:400;font-display:swap;src:url(./lato-400.woff2) format("woff2")}@font-face{font-family:Lato;font-style:normal;font-weight:700;font-display:swap;src:url(./lato-700.woff2) format("woff2")}@font-face{font-family:Lato;font-style:normal;font-weight:900;font-display:swap;src:url(./lato-900.woff2) format("woff2")}:root{--cn-bg: #f7f8fa;--cn-surface: #ffffff;--cn-primary: #20c19e;--cn-primary-hover: #1baa8a;--cn-heading: #1a1a2e;--cn-text: #434f58;--cn-border: #e0e4e8;--cn-muted: #8a9199;--cn-green: #20c19e;--cn-green-bg: #e8faf5;--cn-yellow: #f5a623;--cn-yellow-bg: #fef7e8;--cn-red: #e74c3c;--cn-red-bg: #fdecea;--cn-orange: #f39c12;--cn-orange-bg: #fef5e7;--cn-secondary: #ffc107;--cn-info: #6179e8;--cn-light-bg: #f0f2f5;--cn-gold: #f5a623;--cn-gold-bg: #fef7e8;--cn-ok-icon: #16a34a;--cn-ok-dot: #16a34a;--cn-ok-pill-bg: #dcfce7;--cn-ok-pill-txt: #15803d;--cn-ok-val: #111827;--cn-warn-icon: #b45309;--cn-warn-dot: #d97706;--cn-warn-pill-bg: #fde68a;--cn-warn-pill-txt:#92400e;--cn-warn-val: #b45309;--cn-crit-icon: #dc2626;--cn-crit-dot: #ef4444;--cn-crit-pill-bg: #fee2e2;--cn-crit-pill-txt:#b91c1c;--cn-crit-val: #dc2626;--cn-crit-card-bg: #fff8f8;--cn-crit-border: #fecaca;--cn-warn-card-bg: #fffbeb;--cn-warn-border: #fde68a;--cn-off-icon: #9ca3af;--cn-off-dot: #d1d5db;--cn-off-pill-bg: #f3f4f6;--cn-off-pill-txt: #6b7280;--cn-off-val: #9ca3af;--cn-link-neutral: #374151;--cn-font: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;--cn-text-xs: 10px;--cn-text-sm: 12px;--cn-text-base: 13px;--cn-text-md: 14px;--cn-text-lg: 18px;--cn-text-xl: 22px}.cn-admin-app{font-family:var(--cn-font);color:var(--cn-text);margin-top:20px}.cn-admin-app *,.cn-admin-app *:before,.cn-admin-app *:after{box-sizing:border-box}.cn-tab-nav{display:flex;background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:6px 6px 0 0;padding:0 16px;margin:0;list-style:none}.cn-tab-nav__item{padding:12px 20px;font-weight:500;font-size:var(--cn-text-md);color:var(--cn-muted);border-bottom:2px solid transparent;background:none;border-top:none;border-left:none;border-right:none;cursor:pointer;transition:color .2s,border-color .2s;font-family:var(--cn-font)}.cn-tab-nav__item:hover{color:var(--cn-heading)}.cn-tab-nav__item--active{color:var(--cn-primary);border-bottom-color:var(--cn-primary)}.cn-tab-content{background:var(--cn-bg);border:1px solid var(--cn-border);border-top:none;border-radius:0 0 6px 6px;padding:24px}.cn-page-layout{display:flex;gap:24px;align-items:flex-start}.cn-page-layout .cn-main{flex:1;min-width:0}.cn-page-layout .cn-sidebar{width:300px;flex-shrink:0;position:sticky;top:32px}.cn-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.cn-section-header h2{font-size:var(--cn-text-base);font-weight:600;color:var(--cn-muted);margin:0;text-transform:uppercase;letter-spacing:.5px}.cn-section-header a{font-size:var(--cn-text-base);color:var(--cn-primary);text-decoration:none}.cn-section-header a:hover{color:var(--cn-primary-hover);text-decoration:underline}.cn-side-card{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;padding:20px;margin-bottom:16px}.cn-side-card h3{font-size:var(--cn-text-md);font-weight:600;color:var(--cn-heading);margin:0 0 12px}.cn-side-card ul{list-style:none;margin:0;padding:0}.cn-side-card ul li{margin-bottom:8px}.cn-side-card ul li a{color:var(--cn-primary);text-decoration:none;font-size:var(--cn-text-md)}.cn-side-card ul li a:hover{color:var(--cn-primary-hover);text-decoration:underline}.cn-button{display:inline-flex;align-items:center;justify-content:center;padding:6px 14px;border-radius:20px;font-size:var(--cn-text-sm);font-weight:700;font-family:var(--cn-font);cursor:pointer;border:none;transition:background .2s,box-shadow .2s;text-decoration:none}.cn-button--sm{font-size:var(--cn-text-sm);padding:4px 12px}.cn-button--md{font-size:var(--cn-text-sm);padding:6px 14px}.cn-button--lg{font-size:var(--cn-text-md);padding:9px 24px}.cn-button--primary{background:var(--cn-primary);color:#fff}.cn-button--primary:hover{background:var(--cn-primary-hover)}.cn-button--outline{background:transparent;color:var(--cn-muted);border:1.5px solid var(--cn-border)}.cn-button--outline:hover{border-color:var(--cn-muted);color:var(--cn-heading)}.cn-button--upgrade{background:linear-gradient(135deg,#f7b731,#f5a623);color:#1a1a1a}.cn-button--upgrade:hover{filter:brightness(1.05)}.cn-button--warn{background:var(--cn-orange);color:#fff}.cn-button--warn:hover{background:#c0470a}.cn-button--ghost{background:transparent;color:var(--cn-muted);border:1.5px solid var(--cn-border)}.cn-button--ghost:hover{color:var(--cn-heading);border-color:var(--cn-muted)}.cn-button--block{width:100%;display:block;text-align:center}.cn-button--outline-primary{border:1px solid var(--cn-primary);color:var(--cn-primary);background:transparent}.cn-button--outline-primary:hover{background:var(--cn-primary);color:#fff}.cn-pro-badge{display:inline-block;background:linear-gradient(135deg,#f7b731,#f5a623);color:#1a1a1a;font-size:var(--cn-text-xs);font-weight:900;text-transform:uppercase;letter-spacing:.3px;padding:1px 5px;border-radius:3px}.cn-tier-gate{position:relative}.cn-tier-gate__content{filter:blur(2px);pointer-events:none;-webkit-user-select:none;user-select:none}.cn-tier-gate__overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#ffffffb3}.cn-tier-gate__cta{text-align:center;padding:20px}.cn-tier-gate__cta p{margin:8px 0 16px;color:var(--cn-text);font-size:var(--cn-text-base)}.cn-tier-gate-inline{display:flex;align-items:flex-start;gap:14px;padding:16px 18px;background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;margin-bottom:20px}.cn-tier-gate-inline svg{flex-shrink:0;margin-top:2px}.cn-tier-gate-inline p{margin:4px 0 0;color:var(--cn-muted);font-size:var(--cn-text-sm)}.cn-compliance-hero{text-align:center;padding:48px 24px;background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px}.cn-compliance-hero h3{font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading);margin:16px 0 8px}.cn-compliance-hero p{color:var(--cn-muted);font-size:var(--cn-text-md);max-width:480px;margin:0 auto 24px;line-height:1.6}.cn-compliance-grade{display:inline-flex;align-items:center;justify-content:center;width:80px;height:80px;border-radius:50%;background:var(--cn-red-bg);border:3px solid var(--cn-red)}.cn-compliance-grade__letter{font-size:var(--cn-text-xl);font-weight:900;color:var(--cn-red)}.cn-conn-error{color:var(--cn-red);margin:8px 0}.cn-inline-notice{margin-bottom:16px;padding:12px 14px;border-radius:8px;border:1px solid var(--cn-border);background:var(--cn-surface);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.cn-inline-notice--success{border-color:#b7ebc6;background:#f6fff8}.cn-inline-notice--warning{border-color:#fde68a;background:#fffbea}.cn-inline-notice--info{background:#f6f7fb;border-color:var(--cn-border)}.cn-inline-notice__message{font-size:var(--cn-text-md)}.cn-inline-notice--success .cn-inline-notice__message{color:#1e4620}.cn-inline-notice--warning .cn-inline-notice__message{color:#92400e}.cn-inline-notice--info .cn-inline-notice__message{color:#334155;font-size:var(--cn-text-base)}.cn-inline-notice__actions{display:flex;gap:12px;align-items:center}.cn-footer{margin-top:32px;padding-top:16px;border-top:1px solid var(--cn-border);display:flex;align-items:center;justify-content:space-between;font-size:var(--cn-text-base);color:var(--cn-muted)}.cn-footer a{color:var(--cn-primary);text-decoration:none;margin-left:16px}.cn-footer a:hover{color:var(--cn-primary-hover);text-decoration:underline}.cn-modal-overlay{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:#0009!important;z-index:100000!important;display:flex!important;align-items:center;justify-content:center;padding:32px}.cn-modal{background:var(--cn-surface);border-radius:12px;width:100%;overflow:visible;box-shadow:0 20px 60px #0000004d;position:relative}.cn-modal__close{position:absolute;top:16px;right:20px;background:none;border:none;font-size:var(--cn-text-xl);color:var(--cn-muted);cursor:pointer;line-height:1;padding:4px 8px;z-index:1}.cn-modal__close:hover{color:var(--cn-heading)}.cn-modal__header{padding:24px 36px 0;font-size:var(--cn-text-xl);font-weight:700;color:var(--cn-heading)}.cn-modal__content{padding:36px;overflow-y:auto;max-height:calc(100vh - 140px)}.cn-wizard-shell{display:flex;flex-direction:column}.cn-wizard-shell__body{flex:1;overflow-y:auto}.cn-wizard-shell__nav{display:flex;align-items:center;padding-top:16px;border-top:1px solid var(--cn-border);margin-top:16px}.cn-wizard-shell__spacer{flex:1}.cn-wizard-confirm{padding:24px 16px;text-align:center}.cn-wizard-confirm__text{font-size:var(--cn-text-sm);color:var(--cn-text);margin:0 0 20px;line-height:1.6}.cn-wizard-confirm__actions{display:flex;justify-content:center;gap:10px}.cn-accordion{margin-bottom:24px}.cn-accordion__summary{font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-muted);text-transform:uppercase;letter-spacing:.6px;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;list-style:none;transition:border-color .15s,background .15s}.cn-accordion__summary::-webkit-details-marker{display:none}.cn-accordion__summary::marker{display:none}.cn-accordion__summary:hover{border-color:#c5ccd4;background:#f0f2f5}.cn-accordion[open]>.cn-accordion__summary{border-radius:10px 10px 0 0;border-bottom-color:var(--cn-border);background:var(--cn-surface)}.cn-accordion__left{display:flex;align-items:center;gap:8px}.cn-accordion__title{font-weight:700;color:var(--cn-muted);text-transform:uppercase;letter-spacing:.6px;font-size:var(--cn-text-sm)}.cn-accordion__subtitle{color:var(--cn-text);font-weight:400;text-transform:none;letter-spacing:0;font-size:var(--cn-text-base)}.cn-accordion__chevron{font-size:var(--cn-text-xs);color:var(--cn-muted);transition:transform .2s;flex-shrink:0}.cn-accordion[open] .cn-accordion__chevron{transform:rotate(180deg)}.cn-accordion__body{background:var(--cn-surface);border:1px solid var(--cn-border);border-top:none;border-radius:0 0 10px 10px;padding:16px 18px}.cn-form-field{margin-bottom:12px}.cn-form-field:last-child{margin-bottom:0}.cn-form-field__label{display:block;font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px}.cn-form-field__req{color:#ff4848;margin-left:2px}.cn-form-field__input{width:100%;padding:7px 10px;font-size:var(--cn-text-base);font-family:var(--cn-font);border:1.5px solid var(--cn-border);border-radius:6px;color:var(--cn-heading);background:var(--cn-surface);transition:border-color .15s;outline:none}.cn-form-field__input:focus{border-color:var(--cn-primary)}.cn-form-field__input--error{border-color:#ff4848}.cn-form-field__textarea{resize:vertical;min-height:60px}.cn-form-field__select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238a9199' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.cn-form-field__error{font-size:var(--cn-text-sm);color:#ff4848;margin-top:5px}.cn-form-field__helper{font-size:var(--cn-text-sm);color:var(--cn-muted);margin-top:5px}.cn-color-picker__row{display:flex;align-items:center;gap:8px}.cn-color-picker__swatch{width:28px;height:28px;border-radius:6px;border:1.5px solid var(--cn-border);cursor:pointer;flex-shrink:0;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.cn-color-picker__swatch::-webkit-color-swatch-wrapper{padding:0}.cn-color-picker__swatch::-webkit-color-swatch{border:none;border-radius:4px}.cn-data-table{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;overflow:hidden}.cn-data-table__table{width:100%;border-collapse:collapse}.cn-data-table__header{background:#f0f2f5}.cn-data-table__th{font-size:var(--cn-text-sm);font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--cn-muted);padding:10px 14px;text-align:left;border-bottom:1px solid var(--cn-border)}.cn-data-table__th--sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.cn-data-table__th--sortable:hover{color:var(--cn-heading)}.cn-data-table__sort{margin-left:4px;font-size:var(--cn-text-xs);color:var(--cn-border)}.cn-data-table__sort--active{color:var(--cn-primary)}.cn-data-table__td{font-size:var(--cn-text-base);padding:10px 14px;border-bottom:1px solid var(--cn-border);color:var(--cn-text)}.cn-data-table__row--expandable{cursor:pointer}.cn-data-table__row--expandable:hover,.cn-data-table__row--expanded{background:#f9fafb}.cn-data-table__expanded{padding:12px 14px;background:#f0f2f5;font-size:var(--cn-text-sm)}.cn-data-table__empty{text-align:center;color:var(--cn-muted);font-style:italic;padding:32px 14px}.cn-data-table__pagination{display:flex;align-items:center;justify-content:center;gap:12px;padding:12px;border-top:1px solid var(--cn-border)}.cn-data-table__page-btn{width:28px;height:28px;border-radius:6px;border:1px solid var(--cn-border);background:var(--cn-surface);cursor:pointer;font-size:var(--cn-text-sm);color:var(--cn-heading);display:flex;align-items:center;justify-content:center}.cn-data-table__page-btn:hover:not(:disabled){border-color:var(--cn-primary);color:var(--cn-primary)}.cn-data-table__page-btn:disabled{opacity:.4;cursor:not-allowed}.cn-data-table__page-info{font-size:var(--cn-text-sm);color:var(--cn-muted)}.cn-date-range{display:flex;align-items:center;gap:12px}.cn-date-range__input{width:auto}.cn-date-range__separator{font-size:var(--cn-text-base);color:var(--cn-muted)}.cn-date-range__limit{font-size:var(--cn-text-sm);color:var(--cn-text);font-weight:600;background:#eef2ff;border:1px solid #c7d2fe;border-radius:999px;padding:3px 8px;line-height:1}.cn-progress-bar-wrap{margin-bottom:8px}.cn-progress-bar{height:8px;background:#f0f2f5;border-radius:4px;overflow:hidden}.cn-progress-bar__fill{height:100%;border-radius:4px;transition:width .3s}.cn-progress-bar__fill--primary{background:var(--cn-primary)}.cn-progress-bar__fill--warning{background:linear-gradient(90deg,var(--cn-primary),var(--cn-orange))}.cn-progress-bar__fill--danger{background:var(--cn-red)}.cn-progress-bar__label{font-size:var(--cn-text-sm);color:var(--cn-muted);margin-top:4px}.cn-step-indicator{display:flex;align-items:center;margin-bottom:28px}.cn-step-indicator__item{display:flex;align-items:center;flex:1}.cn-step-indicator__circle{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--cn-text-base);font-weight:700;flex-shrink:0;border:2px solid var(--cn-border);background:var(--cn-surface);color:var(--cn-muted);position:relative;z-index:1;transition:all .2s}.cn-step-indicator__circle--active{background:var(--cn-primary);border-color:var(--cn-primary);color:#fff;box-shadow:0 0 0 4px #20c19e26}.cn-step-indicator__circle--done{background:var(--cn-primary);border-color:var(--cn-primary);color:#fff}.cn-step-indicator__label{font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-muted);white-space:nowrap;margin-left:8px;text-transform:uppercase;letter-spacing:.4px}.cn-step-indicator__label--active{color:var(--cn-primary)}.cn-step-indicator__label--done{color:var(--cn-heading)}.cn-step-indicator__connector{flex:1;height:2px;background:var(--cn-border);margin:0 8px}.cn-step-indicator__connector--done{background:var(--cn-primary)}.cn-score-hero{display:flex;align-items:center;gap:16px;background:#fef2f2;border:1px solid #fca5a5;border-radius:10px;padding:16px 20px;margin-bottom:20px}.cn-score-hero__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:56px;height:56px;color:#dc2626}.cn-score-hero__icon svg{width:100%;height:100%;display:block}.cn-score-hero__body{flex:1;min-width:0}.cn-score-hero__title{font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;white-space:normal;overflow-wrap:anywhere}.cn-score-hero__summary{font-size:var(--cn-text-lg);font-weight:700;color:#991b1b;margin-bottom:4px;white-space:normal;overflow-wrap:anywhere}.cn-score-hero__sub{font-size:var(--cn-text-sm);color:var(--cn-muted);margin-top:6px;white-space:normal;overflow-wrap:anywhere}.cn-score-hero__actions{flex-shrink:0;margin-left:16px;align-self:center}.cn-score-hero__cta{display:inline-block;max-width:100%;font-family:var(--cn-font);font-size:var(--cn-text-md);font-weight:700;padding:9px 24px;border-radius:20px;cursor:pointer;border:none;background:linear-gradient(135deg,#f7b731,#f5a623);color:#1a1a1a;white-space:nowrap;transition:filter .2s}.cn-score-hero__cta:hover{filter:brightness(1.05)}.cn-alert{display:flex;gap:16px;padding:16px 20px;border-radius:10px;border:1px solid var(--cn-border);background:var(--cn-surface);align-items:center}.cn-alert--warning{border-color:#fcd34d;background:#fffbeb}.cn-alert--warning .cn-alert__icon{color:#d97706}.cn-alert--warning .cn-alert__title{color:#92400e}.cn-alert--warning .cn-alert__desc{color:#b45309}.cn-alert--crit{border-color:#fca5a5;background:#fef2f2}.cn-alert--crit .cn-alert__icon{color:#dc2626}.cn-alert--crit .cn-alert__title{color:#991b1b}.cn-alert--crit .cn-alert__desc{color:#b91c1c}.cn-alert--info{border-color:#99f0dd;background:#f0fdf9}.cn-alert--info .cn-alert__icon{color:var(--cn-primary)}.cn-alert--info .cn-alert__title{color:#065f46}.cn-alert--info .cn-alert__desc{color:#047857}.cn-alert__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:28px;height:28px}.cn-alert__icon svg{width:100%;height:100%}.cn-alert__content{flex:1}.cn-alert__title{margin:0 0 4px;font-size:var(--cn-text-base);font-weight:700;line-height:1.3}.cn-alert__desc{margin:0;font-size:var(--cn-text-sm);line-height:1.5}.cn-alert__actions{flex-shrink:0;margin-left:16px;align-self:center}.cn-alert__dismiss{background:none;border:none;cursor:pointer;color:inherit;opacity:.5;padding:4px;flex-shrink:0}.cn-alert__dismiss:hover{opacity:1}.cn-alert__dismiss svg{display:block}.cn-vuln-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px}.cn-vuln-card{background:var(--cn-surface);border-radius:10px;padding:16px 18px;border:1px solid var(--cn-border);border-left:4px solid var(--cn-border)}.cn-vuln-card--ok{border-left-color:var(--cn-primary)}.cn-vuln-card--critical{border-left-color:var(--cn-red, #c0392b);background:#fff8f8}.cn-vuln-card--high{border-left-color:var(--cn-orange, #f39c12);background:#fffaf4}.cn-vuln-card--exposed{border-left-color:var(--cn-red, #c0392b);background:#fff8f8}.cn-vuln-card__top{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.cn-vuln-card__label{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading)}.cn-vuln-card__value{font-size:var(--cn-text-sm);color:var(--cn-muted);line-height:1.5}.cn-vuln-card__value b{color:var(--cn-heading)}.cn-vuln-card__sub{margin-top:4px;font-size:var(--cn-text-sm);color:var(--cn-muted)}.cn-vuln-card__risk{display:inline-flex;align-items:center;gap:4px;font-size:var(--cn-text-xs);font-weight:700;padding:2px 8px;border-radius:10px;margin-top:6px}.cn-vuln-card__risk--critical{color:var(--cn-red, #c0392b);background:var(--cn-red-bg, #fdecea)}.cn-vuln-card__risk--high{color:#9a3412;background:#fff1e6}.cn-vuln-cta{margin-bottom:24px}.cn-vuln-cta__btn{font-size:var(--cn-text-base);font-weight:600}.cn-layer{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;padding:18px 20px;margin-bottom:14px}.cn-layer--locked{opacity:.85}.cn-layer__hdr{display:flex;align-items:center;gap:10px;margin-bottom:14px}.cn-layer__num{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--cn-text-sm);font-weight:900;color:#fff;flex-shrink:0}.cn-layer__num--green{background:var(--cn-primary)}.cn-layer__num--orange{background:var(--cn-orange, #d35400)}.cn-layer__num--gray{background:#b0b5ba}.cn-layer__title{font-size:var(--cn-text-md);font-weight:700;color:var(--cn-heading);flex:1}.cn-layer__badge{font-size:var(--cn-text-xs);font-weight:700;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.3px;flex-shrink:0}.cn-layer__badge--enforcing{background:var(--cn-green-bg, #e8f5e9);color:var(--cn-green, #2e7d32)}.cn-layer__badge--warn{background:var(--cn-orange-bg, #fff3e0);color:var(--cn-orange, #d35400)}.cn-layer__badge--locked{background:var(--cn-light-bg, #f0f2f5);color:var(--cn-muted)}.cn-layer__badge--platforms{background:#6179e81a;color:var(--cn-info, #6179e8)}.cn-layer__badge--collecting{background:var(--cn-green-bg, #e8f5e9);color:var(--cn-green, #2e7d32)}.cn-layer__metrics{display:flex;gap:24px;margin-bottom:12px}.cn-layer__metric-val{font-size:var(--cn-text-lg);font-weight:700;color:var(--cn-heading);line-height:1.2}.cn-layer__metric-lbl{font-size:var(--cn-text-xs);color:var(--cn-muted);text-transform:uppercase;letter-spacing:.3px}.cn-layer__warn{font-size:var(--cn-text-sm);color:var(--cn-orange, #d35400);font-weight:600;margin-bottom:10px}.cn-layer__warn-muted{font-size:var(--cn-text-sm);color:var(--cn-muted);margin-bottom:10px}.cn-layer__cta{margin-top:8px}.cn-layer__links{display:flex;gap:14px;margin-top:8px}.cn-layer__links a,.cn-layer__links button.cn-layer__links-btn{font-size:var(--cn-text-sm);color:var(--cn-primary);font-weight:600;text-decoration:none}.cn-layer__links a:hover,.cn-layer__links button.cn-layer__links-btn:hover{text-decoration:underline}.cn-layer__link-btn{background:none;border:none;padding:0;cursor:pointer;font-size:var(--cn-text-sm);color:var(--cn-primary);font-weight:600}.cn-layer__link-btn:hover{text-decoration:underline}.cn-blocking-bar-wrap{margin-bottom:10px}.cn-blocking-bar{display:flex;height:8px;border-radius:4px;overflow:hidden;margin-bottom:4px}.cn-blocking-bar__blocked{background:var(--cn-primary)}.cn-blocking-bar__unblocked{background:var(--cn-orange, #d35400)}.cn-blocking-bar__labels{display:flex;justify-content:space-between;font-size:var(--cn-text-xs)}.cn-blocking-bar__lbl-blocked{color:var(--cn-primary);font-weight:700}.cn-blocking-bar__lbl-unblocked{color:var(--cn-orange, #d35400);font-weight:700}.cn-platform-grid{display:flex;flex-direction:column;gap:6px}.cn-platform-item{display:flex;align-items:center;gap:8px;font-size:var(--cn-text-base);color:var(--cn-heading)}.cn-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;vertical-align:middle}.cn-dot--green{background:var(--cn-primary)}.cn-dot--gray{background:var(--cn-border)}.cn-dot--yellow{background:var(--cn-secondary, #ffc107)}.cn-lang-bars{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.cn-lang-row{display:flex;align-items:center;gap:8px}.cn-lang-row__label{font-size:var(--cn-text-sm);color:var(--cn-muted);width:28px;flex-shrink:0;text-align:right}.cn-lang-row__track{flex:1;height:6px;background:var(--cn-light-bg, #f0f2f5);border-radius:3px;overflow:hidden}.cn-lang-row__fill{height:100%;border-radius:3px;background:var(--cn-primary)}.cn-lang-row__pct{font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-heading);width:32px}.cn-threat-section{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;padding:18px 20px;margin-top:10px}.cn-threat-section__header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}.cn-threat-section__title{font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-muted);text-transform:uppercase;letter-spacing:.5px}.cn-threat-section__updated{font-size:var(--cn-text-sm);color:var(--cn-muted);font-style:italic}.cn-threat-list{display:flex;flex-direction:column}.cn-threat-item{padding:14px 0;border-bottom:1px solid var(--cn-border)}.cn-threat-item:last-child{border-bottom:none;padding-bottom:0}.cn-threat-item:first-child{padding-top:0}.cn-threat-item__title{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading);margin-bottom:4px}.cn-threat-item__desc{font-size:var(--cn-text-sm);color:var(--cn-muted);line-height:1.5;margin-bottom:6px}.cn-threat-item__status{font-size:var(--cn-text-sm);font-weight:700;color:var(--cn-primary)}.cn-threat-item__status--ok{color:var(--cn-primary)}.cn-threat-item__status--warn{color:#b45309}.cn-threat-tag{display:inline-block;font-size:var(--cn-text-xs);font-weight:700;padding:1px 6px;border-radius:3px;text-transform:uppercase;letter-spacing:.3px;margin-right:6px;vertical-align:middle}.cn-threat-tag--enforcement{background:var(--cn-red-bg, #fdecea);color:var(--cn-red, #c0392b)}.cn-threat-tag--regulation{background:#6179e81a;color:var(--cn-info, #6179e8)}.cn-threat-tag--update{background:var(--cn-yellow-bg, #fffde7);color:var(--cn-yellow, #b7950b)}.cn-dom-credentials{margin-top:12px;padding-top:12px;border-top:1px solid var(--cn-border);display:flex;flex-direction:column;gap:8px}.cn-dom-row{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px solid var(--cn-border);font-size:var(--cn-text-sm);align-items:baseline}.cn-dom-row:last-child{border-bottom:none}.cn-dom-row__k{color:var(--cn-muted)}.cn-dom-row__v{color:var(--cn-heading);font-weight:700;text-align:right}.cn-dom-row__v--mono{font-size:var(--cn-text-sm);font-family:monospace}.cn-pull-config{margin-top:14px;padding-top:14px;border-top:1px solid var(--cn-border)}.cn-pull-config__row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.cn-pull-config__timestamp{font-size:var(--cn-text-xs, .75rem);color:var(--cn-muted);white-space:nowrap}.cn-pull-config__desc{margin:6px 0 0;font-size:var(--cn-text-sm);color:var(--cn-muted);line-height:1.45}.cn-pull-config__desc--error{color:var(--cn-red, #c0392b)}.cn-conn-hint{display:block;font-size:var(--cn-text-sm);margin:8px 0}.cn-conn-hint.cn-layer__link-btn{margin-bottom:10px;font-weight:600}.cn-conn-hint--returning{color:var(--cn-muted);margin-top:8px;margin-bottom:14px}.cn-conn-hint--returning a{color:var(--cn-primary);text-decoration:none}.cn-conn-hint--returning a:hover{text-decoration:underline}.cn-dom-link{display:block;margin-top:10px;padding-top:8px;border-top:1px solid var(--cn-border);font-size:var(--cn-text-sm);color:var(--cn-primary);font-weight:600;text-decoration:none}.cn-dom-link:hover{text-decoration:underline}.cn-connect-nudge{font-size:var(--cn-text-sm);color:var(--cn-muted);text-align:center;padding:12px 0 4px;line-height:1.5}.cn-connect-nudge strong{color:var(--cn-heading);display:block;margin-bottom:2px}.cn-benefit-list{list-style:none;display:flex;flex-direction:column;gap:8px;padding:0;margin:0}.cn-benefit-item{display:flex;align-items:flex-start;gap:8px;font-size:var(--cn-text-sm);color:var(--cn-text);line-height:1.4}.cn-benefit-icon{width:16px;height:16px;border-radius:50%;background:var(--cn-green-bg, #e8f5e9);color:var(--cn-green, #2e7d32);font-size:var(--cn-text-xs);font-weight:900;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.cn-connect-cta{margin-top:16px}.cn-connect-cta__caption{font-size:var(--cn-text-xs);color:var(--cn-muted);text-align:center;margin-top:8px}.cn-usage-bar-wrap{margin-bottom:8px}.cn-usage-bar{height:8px;background:var(--cn-light-bg, #f0f2f5);border-radius:4px;overflow:hidden}.cn-usage-bar__labels{display:flex;justify-content:space-between;font-size:var(--cn-text-sm);margin-bottom:4px}.cn-usage-bar__used{color:var(--cn-heading);font-weight:700}.cn-usage-bar__total{color:var(--cn-muted)}.cn-usage-bar__fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--cn-primary),var(--cn-orange, #d35400))}.cn-unlimited-sessions{font-size:var(--cn-text-md);font-weight:700;color:var(--cn-heading);margin-bottom:4px}.cn-unlimited-note{font-size:var(--cn-text-sm);color:var(--cn-muted)}.cn-pro-gate-placeholder{min-height:200px}.cn-placeholder-charts{min-height:180px;background:var(--cn-light-bg, #f0f2f5);border-radius:8px}@media(max-width:960px){.cn-page-layout{flex-direction:column}.cn-page-layout .cn-sidebar{width:100%;position:static}.cn-vuln-grid{grid-template-columns:1fr}.cn-score-hero{flex-direction:column;text-align:center}}.cn-dev-switcher{position:fixed;top:40px;right:16px;z-index:99999;background:#1a1a2e;color:#fff;border-radius:8px;padding:10px 12px;min-width:148px;box-shadow:0 4px 16px #0006;font-family:Lato,sans-serif;font-size:var(--cn-text-sm)}.cn-dev-switcher__header{display:flex;align-items:center;gap:5px;margin-bottom:8px}.cn-dev-switcher__icon{font-size:var(--cn-text-sm)}.cn-dev-switcher__title{font-size:var(--cn-text-xs);font-weight:700;letter-spacing:.08em;color:#20c19e;text-transform:uppercase}.cn-dev-switcher__label{font-size:var(--cn-text-xs);color:#8a9199;text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px}.cn-dev-switcher__buttons{display:flex;gap:4px;margin-bottom:2px}.cn-dev-switcher__btn{flex:1;padding:4px 0;border:1px solid #3a3a5c;border-radius:4px;background:#2a2a48;color:#c0c0d0;font-size:var(--cn-text-sm);font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.cn-dev-switcher__btn:hover{background:#3a3a5c;color:#fff}.cn-dev-switcher__btn--active{background:#20c19e;border-color:#20c19e;color:#fff}.cn-dev-switcher__usage{margin-top:8px;border-top:1px solid #2a2a48;padding-top:7px}.cn-dev-switcher__usage-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.cn-dev-switcher__usage-label{font-size:var(--cn-text-xs);color:#8a9199;text-transform:uppercase;letter-spacing:.06em}.cn-dev-switcher__usage-val{font-size:var(--cn-text-sm);font-weight:700;color:#20c19e}.cn-dev-switcher__slider{width:100%;accent-color:#20c19e;cursor:pointer}.cn-banner-design__footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:16px;padding-top:12px;border-top:1px solid var(--cn-border, #e2e5ea)}.cn-banner-design__status{font-size:var(--cn-text-base)}.cn-banner-design__status--saved{color:var(--cn-green)}.cn-banner-design__status--error{color:var(--cn-red)}.cn-auth-form__error{margin-bottom:12px;padding:10px 14px;background:var(--cn-red-bg, #fdecea);color:var(--cn-red, #e74c3c);border-radius:6px;font-size:var(--cn-text-base)}.cn-consent-log-table__controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:12px}.cn-consent-log-table__count{font-size:var(--cn-text-sm);color:var(--cn-muted)}.cn-card-grid{display:grid;gap:14px;margin-top:24px}.cn-card-grid--3{grid-template-columns:repeat(3,1fr)}.cn-card-grid--auto{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}@media(max-width:960px){.cn-card-grid--3{grid-template-columns:1fr}}.cn-card{background:var(--cn-surface);border:1px solid var(--cn-border);border-radius:10px;padding:16px 18px;display:flex;flex-direction:column}.cn-card--crit{background:var(--cn-crit-card-bg);border-color:var(--cn-crit-border)}.cn-card--warn{background:var(--cn-warn-card-bg);border-color:var(--cn-warn-border)}.cn-card__top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:8px}.cn-card__icon svg{display:block}.cn-card__dot{width:9px;height:9px;border-radius:50%;margin-top:2px;flex-shrink:0}.cn-card__dot--ok{background:var(--cn-ok-dot)}.cn-card__dot--warn{background:var(--cn-warn-dot)}.cn-card__dot--crit{background:var(--cn-crit-dot)}.cn-card__dot--off{background:var(--cn-off-dot)}.cn-card__main{font-size:var(--cn-text-xl);font-weight:800;line-height:1.15;margin-bottom:2px}.cn-card__main--ok{color:var(--cn-ok-val)}.cn-card__main--warn{color:var(--cn-warn-val)}.cn-card__main--crit{color:var(--cn-crit-val)}.cn-card__main--off{color:var(--cn-off-val);font-weight:500;font-size:var(--cn-text-lg)}.cn-card__sub{font-size:var(--cn-text-sm);color:var(--cn-muted);line-height:1.4;margin-bottom:10px}.cn-card__sub--warn{color:var(--cn-warn-val)}.cn-card__preview{margin:8px 0 10px;transform:scale(.6);transform-origin:left top;width:160px;height:90px;overflow:hidden;flex-shrink:0;border-radius:4px}.cn-card__pills{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:10px}.cn-card__pill{font-size:var(--cn-text-sm);font-weight:600;padding:2px 8px;border-radius:10px}.cn-card__pill--ok{background:var(--cn-ok-pill-bg);color:var(--cn-ok-pill-txt)}.cn-card__pill--warn{background:var(--cn-warn-pill-bg);color:var(--cn-warn-pill-txt)}.cn-card__pill--crit{background:var(--cn-crit-pill-bg);color:var(--cn-crit-pill-txt)}.cn-card__pill--off{background:var(--cn-off-pill-bg);color:var(--cn-off-pill-txt)}.cn-card__foot{margin-top:auto;padding-top:10px;border-top:1px solid var(--cn-border);min-height:30px;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}.cn-card__foot-btn{background:none;border:none;font-size:var(--cn-text-sm);font-weight:600;color:var(--cn-primary);cursor:pointer;padding:0}.cn-card__foot-btn:hover{text-decoration:underline}.cn-card__foot a,.cn-card__foot button{font-size:var(--cn-text-sm);font-weight:600;color:var(--cn-link-neutral);text-decoration:underline;text-decoration-color:var(--cn-border);text-underline-offset:2px;background:none;border:none;padding:0;cursor:pointer;font-family:var(--cn-font);display:inline-block}.cn-card__foot a:hover,.cn-card__foot button:hover{color:var(--cn-heading);text-decoration-color:var(--cn-muted)}.cn-card__bar-wrap{height:4px;background:var(--cn-light-bg);border-radius:2px;margin:8px 0 6px}.cn-card__bar-fill{height:4px;border-radius:2px}.cn-card__bar-fill--warn{background:var(--cn-warn-dot)}.cn-card__bar-fill--crit{background:var(--cn-crit-dot)}.cn-card__row{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px solid var(--cn-border);font-size:var(--cn-text-sm);align-items:baseline}.cn-card__row--last{border-bottom:none}.cn-card__row-k{color:var(--cn-muted);flex-shrink:0}.cn-card__row-v{color:var(--cn-heading);font-weight:700;text-align:right}.cn-card__row-v--muted{color:var(--cn-muted);font-weight:400}.cn-portal-bridge-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100000;padding:20px}.cn-portal-bridge{background:var(--cn-surface);border-radius:14px;width:100%;max-width:440px;box-shadow:0 20px 60px #0000002e;overflow:hidden;font-family:var(--cn-font)}.cn-portal-bridge__header{background:var(--cn-ok-icon);padding:18px 22px;display:flex;align-items:flex-start;gap:12px}.cn-portal-bridge__header-title{color:#fff;font-size:var(--cn-text-md);font-weight:700;line-height:1.3}.cn-portal-bridge__header-sub{color:#ffffffb3;font-size:var(--cn-text-sm);margin-top:2px}.cn-portal-bridge__body{padding:20px 22px}.cn-portal-bridge__summary{font-size:var(--cn-text-base);color:var(--cn-text);line-height:1.5;margin-bottom:14px}.cn-portal-bridge__context{background:var(--cn-light-bg);border-radius:8px;padding:10px 12px;display:flex;align-items:flex-start;gap:10px;margin-bottom:16px}.cn-portal-bridge__context-dot{width:8px;height:8px;border-radius:50%;background:var(--cn-ok-dot);margin-top:3px;flex-shrink:0}.cn-portal-bridge__context-text{font-size:var(--cn-text-sm);color:var(--cn-heading);line-height:1.5}.cn-portal-bridge__steps{display:flex;flex-direction:column;gap:12px;margin-bottom:18px}.cn-portal-bridge__step{display:flex;gap:12px;align-items:flex-start}.cn-portal-bridge__step-num{width:22px;height:22px;border-radius:50%;background:var(--cn-ok-pill-bg);border:1.5px solid var(--cn-ok-icon);color:var(--cn-ok-icon);font-size:var(--cn-text-sm);font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.cn-portal-bridge__step-title{font-size:var(--cn-text-base);font-weight:700;color:var(--cn-heading);margin-bottom:2px}.cn-portal-bridge__step-desc{font-size:var(--cn-text-sm);color:var(--cn-muted);line-height:1.4}.cn-portal-bridge__error{background:var(--cn-red-bg);color:var(--cn-red);border-radius:6px;padding:8px 12px;font-size:var(--cn-text-sm);margin-bottom:12px}.cn-portal-bridge__actions{display:flex;flex-direction:column;gap:8px}.cn-portal-bridge__btn{display:block;width:100%;padding:11px 16px;border-radius:8px;font-size:var(--cn-text-base);font-weight:600;cursor:pointer;text-align:center;text-decoration:none;font-family:var(--cn-font);border:none;line-height:1}.cn-portal-bridge__btn--primary{background:var(--cn-ok-icon);color:#fff}.cn-portal-bridge__btn--primary:hover{background:#15803d}.cn-portal-bridge__btn--secondary{background:none;border:1px solid var(--cn-border);color:var(--cn-heading)}.cn-portal-bridge__btn--secondary:hover{background:var(--cn-light-bg)}.cn-portal-bridge__btn--secondary:disabled{opacity:.6;cursor:default}.cn-portal-bridge__dismiss{text-align:center;padding:12px 22px;border-top:1px solid var(--cn-light-bg)}.cn-portal-bridge__dismiss-btn{background:none;border:none;font-size:var(--cn-text-sm);color:var(--cn-muted);cursor:pointer;font-family:var(--cn-font)}.cn-portal-bridge__dismiss-btn:hover{color:var(--cn-heading)}.cn-error-boundary{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 24px;text-align:center}.cn-error-boundary__message{font-size:15px;color:var(--cn-muted, #6c7781);margin-bottom:16px} diff --git a/wp-content/plugins/cookie-notice/assets/react-admin/cn-admin-react.js b/wp-content/plugins/cookie-notice/assets/react-admin/cn-admin-react.js new file mode 100644 index 0000000..9c6cd4c --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/react-admin/cn-admin-react.js @@ -0,0 +1,1064 @@ +(function(){"use strict";var Ii,Fi,Bi;var Ls={exports:{}},hr={},Ps={exports:{}},xe={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Ao;function ku(){if(Ao)return xe;Ao=1;var o=Symbol.for("react.element"),i=Symbol.for("react.portal"),c=Symbol.for("react.fragment"),p=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),g=Symbol.for("react.provider"),m=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),v=Symbol.for("react.suspense"),w=Symbol.for("react.memo"),x=Symbol.for("react.lazy"),S=Symbol.iterator;function L(k){return k===null||typeof k!="object"?null:(k=S&&k[S]||k["@@iterator"],typeof k=="function"?k:null)}var z={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,P={};function N(k,M,de){this.props=k,this.context=M,this.refs=P,this.updater=de||z}N.prototype.isReactComponent={},N.prototype.setState=function(k,M){if(typeof k!="object"&&typeof k!="function"&&k!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,k,M,"setState")},N.prototype.forceUpdate=function(k){this.updater.enqueueForceUpdate(this,k,"forceUpdate")};function D(){}D.prototype=N.prototype;function I(k,M,de){this.props=k,this.context=M,this.refs=P,this.updater=de||z}var A=I.prototype=new D;A.constructor=I,C(A,N.prototype),A.isPureReactComponent=!0;var W=Array.isArray,$=Object.prototype.hasOwnProperty,O={current:null},K={key:!0,ref:!0,__self:!0,__source:!0};function Q(k,M,de){var he,oe={},fe=null,Y=null;if(M!=null)for(he in M.ref!==void 0&&(Y=M.ref),M.key!==void 0&&(fe=""+M.key),M)$.call(M,he)&&!K.hasOwnProperty(he)&&(oe[he]=M[he]);var ve=arguments.length-2;if(ve===1)oe.children=de;else if(1>>1,M=V[k];if(0>>1;kd(oe,q))fed(Y,oe)?(V[k]=Y,V[fe]=q,k=fe):(V[k]=oe,V[he]=q,k=he);else if(fed(Y,q))V[k]=Y,V[fe]=q,k=fe;else break e}}return ae}function d(V,ae){var q=V.sortIndex-ae.sortIndex;return q!==0?q:V.id-ae.id}if(typeof performance=="object"&&typeof performance.now=="function"){var g=performance;o.unstable_now=function(){return g.now()}}else{var m=Date,f=m.now();o.unstable_now=function(){return m.now()-f}}var v=[],w=[],x=1,S=null,L=3,z=!1,C=!1,P=!1,N=typeof setTimeout=="function"?setTimeout:null,D=typeof clearTimeout=="function"?clearTimeout:null,I=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function A(V){for(var ae=c(w);ae!==null;){if(ae.callback===null)p(w);else if(ae.startTime<=V)p(w),ae.sortIndex=ae.expirationTime,i(v,ae);else break;ae=c(w)}}function W(V){if(P=!1,A(V),!C)if(c(v)!==null)C=!0,ge($);else{var ae=c(w);ae!==null&&_e(W,ae.startTime-V)}}function $(V,ae){C=!1,P&&(P=!1,D(Q),Q=-1),z=!0;var q=L;try{for(A(ae),S=c(v);S!==null&&(!(S.expirationTime>ae)||V&&!J());){var k=S.callback;if(typeof k=="function"){S.callback=null,L=S.priorityLevel;var M=k(S.expirationTime<=ae);ae=o.unstable_now(),typeof M=="function"?S.callback=M:S===c(v)&&p(v),A(ae)}else p(v);S=c(v)}if(S!==null)var de=!0;else{var he=c(w);he!==null&&_e(W,he.startTime-ae),de=!1}return de}finally{S=null,L=q,z=!1}}var O=!1,K=null,Q=-1,Z=5,T=-1;function J(){return!(o.unstable_now()-TV||125k?(V.sortIndex=q,i(w,V),c(v)===null&&V===c(w)&&(P?(D(Q),Q=-1):P=!0,_e(W,q-k))):(V.sortIndex=M,i(v,V),C||z||(C=!0,ge($))),V},o.unstable_shouldYield=J,o.unstable_wrapCallback=function(V){var ae=L;return function(){var q=L;L=ae;try{return V.apply(this,arguments)}finally{L=q}}}})(Rs)),Rs}var Oo;function bu(){return Oo||(Oo=1,Ts.exports=Cu()),Ts.exports}/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Uo;function Lu(){if(Uo)return tn;Uo=1;var o=Es(),i=bu();function c(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),v=Object.prototype.hasOwnProperty,w=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,x={},S={};function L(e){return v.call(S,e)?!0:v.call(x,e)?!1:w.test(e)?S[e]=!0:(x[e]=!0,!1)}function z(e,n,r,l){if(r!==null&&r.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return l?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function C(e,n,r,l){if(n===null||typeof n>"u"||z(e,n,r,l))return!0;if(l)return!1;if(r!==null)switch(r.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function P(e,n,r,l,s,a,u){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=l,this.attributeNamespace=s,this.mustUseProperty=r,this.propertyName=e,this.type=n,this.sanitizeURL=a,this.removeEmptyString=u}var N={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){N[e]=new P(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];N[n]=new P(n,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){N[e]=new P(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){N[e]=new P(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){N[e]=new P(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){N[e]=new P(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){N[e]=new P(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){N[e]=new P(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){N[e]=new P(e,5,!1,e.toLowerCase(),null,!1,!1)});var D=/[\-:]([a-z])/g;function I(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(D,I);N[n]=new P(n,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(D,I);N[n]=new P(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(D,I);N[n]=new P(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){N[e]=new P(e,1,!1,e.toLowerCase(),null,!1,!1)}),N.xlinkHref=new P("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){N[e]=new P(e,1,!1,e.toLowerCase(),null,!0,!0)});function A(e,n,r,l){var s=N.hasOwnProperty(n)?N[n]:null;(s!==null?s.type!==0:l||!(2h||s[u]!==a[h]){var y=` +`+s[u].replace(" at new "," at ");return e.displayName&&y.includes("")&&(y=y.replace("",e.displayName)),y}while(1<=u&&0<=h);break}}}finally{de=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?M(e):""}function oe(e){switch(e.tag){case 5:return M(e.type);case 16:return M("Lazy");case 13:return M("Suspense");case 19:return M("SuspenseList");case 0:case 2:case 15:return e=he(e.type,!1),e;case 11:return e=he(e.type.render,!1),e;case 1:return e=he(e.type,!0),e;default:return""}}function fe(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case K:return"Fragment";case O:return"Portal";case Z:return"Profiler";case Q:return"StrictMode";case te:return"Suspense";case ee:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case J:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case me:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ie:return n=e.displayName||null,n!==null?n:fe(e.type)||"Memo";case ge:n=e._payload,e=e._init;try{return fe(e(n))}catch{}}return null}function Y(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return fe(n);case 8:return n===Q?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function ve(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function je(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function Je(e){var n=je(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),l=""+e[n];if(!e.hasOwnProperty(n)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var s=r.get,a=r.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return s.call(this)},set:function(u){l=""+u,a.call(this,u)}}),Object.defineProperty(e,n,{enumerable:r.enumerable}),{getValue:function(){return l},setValue:function(u){l=""+u},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function Dn(e){e._valueTracker||(e._valueTracker=Je(e))}function vl(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var r=n.getValue(),l="";return e&&(l=je(e)?e.checked?"true":"false":e.value),e=l,e!==r?(n.setValue(e),!0):!1}function kn(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function _r(e,n){var r=n.checked;return q({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function yl(e,n){var r=n.defaultValue==null?"":n.defaultValue,l=n.checked!=null?n.checked:n.defaultChecked;r=ve(n.value!=null?n.value:r),e._wrapperState={initialChecked:l,initialValue:r,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function xr(e,n){n=n.checked,n!=null&&A(e,"checked",n,!1)}function Ft(e,n){xr(e,n);var r=ve(n.value),l=n.type;if(r!=null)l==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(l==="submit"||l==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?Bt(e,n.type,r):n.hasOwnProperty("defaultValue")&&Bt(e,n.type,ve(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function jr(e,n,r){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var l=n.type;if(!(l!=="submit"&&l!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,r||n===e.value||(e.value=n),e.defaultValue=n}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function Bt(e,n,r){(n!=="number"||kn(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var jt=Array.isArray;function Qn(e,n,r,l){if(e=e.options,n){n={};for(var s=0;s"+n.valueOf().toString()+"",n=wt.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function qn(e,n){if(n){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=n;return}}e.textContent=n}var Zn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},_l=["Webkit","ms","Moz","O"];Object.keys(Zn).forEach(function(e){_l.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),Zn[n]=Zn[e]})});function Sr(e,n,r){return n==null||typeof n=="boolean"||n===""?"":r||typeof n!="number"||n===0||Zn.hasOwnProperty(e)&&Zn[e]?(""+n).trim():n+"px"}function Cr(e,n){e=e.style;for(var r in n)if(n.hasOwnProperty(r)){var l=r.indexOf("--")===0,s=Sr(r,n[r],l);r==="float"&&(r="cssFloat"),l?e.setProperty(r,s):e[r]=s}}var xl=q({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function $t(e,n){if(n){if(xl[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(c(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(c(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(c(61))}if(n.style!=null&&typeof n.style!="object")throw Error(c(62))}}function Wt(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Te=null;function Ys(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var qs=null,Gt=null,Ht=null;function Oi(e){if(e=Qr(e)){if(typeof qs!="function")throw Error(c(280));var n=e.stateNode;n&&(n=Wl(n),qs(e.stateNode,e.type,n))}}function Ui(e){Gt?Ht?Ht.push(e):Ht=[e]:Gt=e}function $i(){if(Gt){var e=Gt,n=Ht;if(Ht=Gt=null,Oi(e),n)for(e=0;e>>=0,e===0?32:31-(t3(e)/r3|0)|0}var Sl=64,Cl=4194304;function Er(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function bl(e,n){var r=e.pendingLanes;if(r===0)return 0;var l=0,s=e.suspendedLanes,a=e.pingedLanes,u=r&268435455;if(u!==0){var h=u&~s;h!==0?l=Er(h):(a&=u,a!==0&&(l=Er(a)))}else u=r&~s,u!==0?l=Er(u):a!==0&&(l=Er(a));if(l===0)return 0;if(n!==0&&n!==l&&(n&s)===0&&(s=l&-l,a=n&-n,s>=a||s===16&&(a&4194240)!==0))return n;if((l&4)!==0&&(l|=r&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=l;0r;r++)n.push(e);return n}function Dr(e,n,r){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-Nn(n),e[n]=r}function o3(e,n){var r=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var l=e.eventTimes;for(e=e.expirationTimes;0=Br),gc=" ",vc=!1;function yc(e,n){switch(e){case"keyup":return A3.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function _c(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Qt=!1;function I3(e,n){switch(e){case"compositionend":return _c(n);case"keypress":return n.which!==32?null:(vc=!0,gc);case"textInput":return e=n.data,e===gc&&vc?null:e;default:return null}}function F3(e,n){if(Qt)return e==="compositionend"||!ha&&yc(e,n)?(e=uc(),Tl=ia=tt=null,Qt=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:r,offset:n-e};e=l}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Cc(r)}}function Lc(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Lc(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function Pc(){for(var e=window,n=kn();n instanceof e.HTMLIFrameElement;){try{var r=typeof n.contentWindow.location.href=="string"}catch{r=!1}if(r)e=n.contentWindow;else break;n=kn(e.document)}return n}function va(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function K3(e){var n=Pc(),r=e.focusedElem,l=e.selectionRange;if(n!==r&&r&&r.ownerDocument&&Lc(r.ownerDocument.documentElement,r)){if(l!==null&&va(r)){if(n=l.start,e=l.end,e===void 0&&(e=n),"selectionStart"in r)r.selectionStart=n,r.selectionEnd=Math.min(e,r.value.length);else if(e=(n=r.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var s=r.textContent.length,a=Math.min(l.start,s);l=l.end===void 0?a:Math.min(l.end,s),!e.extend&&a>l&&(s=l,l=a,a=s),s=bc(r,a);var u=bc(r,l);s&&u&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==u.node||e.focusOffset!==u.offset)&&(n=n.createRange(),n.setStart(s.node,s.offset),e.removeAllRanges(),a>l?(e.addRange(n),e.extend(u.node,u.offset)):(n.setEnd(u.node,u.offset),e.addRange(n)))}}for(n=[],e=r;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r=document.documentMode,Yt=null,ya=null,Wr=null,_a=!1;function Ec(e,n,r){var l=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;_a||Yt==null||Yt!==kn(l)||(l=Yt,"selectionStart"in l&&va(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Wr&&$r(Wr,l)||(Wr=l,l=Ol(ya,"onSelect"),0er||(e.current=Da[er],Da[er]=null,er--)}function Le(e,n){er++,Da[er]=e.current,e.current=n}var at={},Ye=st(at),rn=st(!1),St=at;function nr(e,n){var r=e.type.contextTypes;if(!r)return at;var l=e.stateNode;if(l&&l.__reactInternalMemoizedUnmaskedChildContext===n)return l.__reactInternalMemoizedMaskedChildContext;var s={},a;for(a in r)s[a]=n[a];return l&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=s),s}function ln(e){return e=e.childContextTypes,e!=null}function Gl(){Ee(rn),Ee(Ye)}function Hc(e,n,r){if(Ye.current!==at)throw Error(c(168));Le(Ye,n),Le(rn,r)}function Vc(e,n,r){var l=e.stateNode;if(n=n.childContextTypes,typeof l.getChildContext!="function")return r;l=l.getChildContext();for(var s in l)if(!(s in n))throw Error(c(108,Y(e)||"Unknown",s));return q({},r,l)}function Hl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||at,St=Ye.current,Le(Ye,e),Le(rn,rn.current),!0}function Kc(e,n,r){var l=e.stateNode;if(!l)throw Error(c(169));r?(e=Vc(e,n,St),l.__reactInternalMemoizedMergedChildContext=e,Ee(rn),Ee(Ye),Le(Ye,e)):Ee(rn),Le(rn,r)}var Un=null,Vl=!1,Ta=!1;function Qc(e){Un===null?Un=[e]:Un.push(e)}function s0(e){Vl=!0,Qc(e)}function ot(){if(!Ta&&Un!==null){Ta=!0;var e=0,n=Ce;try{var r=Un;for(Ce=1;e>=u,s-=u,$n=1<<32-Nn(n)+s|r<pe?(He=ue,ue=null):He=ue.sibling;var Ne=F(b,ue,E[pe],H);if(Ne===null){ue===null&&(ue=He);break}e&&ue&&Ne.alternate===null&&n(b,ue),_=a(Ne,_,pe),ce===null?se=Ne:ce.sibling=Ne,ce=Ne,ue=He}if(pe===E.length)return r(b,ue),De&&bt(b,pe),se;if(ue===null){for(;pepe?(He=ue,ue=null):He=ue.sibling;var gt=F(b,ue,Ne.value,H);if(gt===null){ue===null&&(ue=He);break}e&&ue&>.alternate===null&&n(b,ue),_=a(gt,_,pe),ce===null?se=gt:ce.sibling=gt,ce=gt,ue=He}if(Ne.done)return r(b,ue),De&&bt(b,pe),se;if(ue===null){for(;!Ne.done;pe++,Ne=E.next())Ne=U(b,Ne.value,H),Ne!==null&&(_=a(Ne,_,pe),ce===null?se=Ne:ce.sibling=Ne,ce=Ne);return De&&bt(b,pe),se}for(ue=l(b,ue);!Ne.done;pe++,Ne=E.next())Ne=X(ue,b,pe,Ne.value,H),Ne!==null&&(e&&Ne.alternate!==null&&ue.delete(Ne.key===null?pe:Ne.key),_=a(Ne,_,pe),ce===null?se=Ne:ce.sibling=Ne,ce=Ne);return e&&ue.forEach(function(B0){return n(b,B0)}),De&&bt(b,pe),se}function Ie(b,_,E,H){if(typeof E=="object"&&E!==null&&E.type===K&&E.key===null&&(E=E.props.children),typeof E=="object"&&E!==null){switch(E.$$typeof){case $:e:{for(var se=E.key,ce=_;ce!==null;){if(ce.key===se){if(se=E.type,se===K){if(ce.tag===7){r(b,ce.sibling),_=s(ce,E.props.children),_.return=b,b=_;break e}}else if(ce.elementType===se||typeof se=="object"&&se!==null&&se.$$typeof===ge&&e1(se)===ce.type){r(b,ce.sibling),_=s(ce,E.props),_.ref=Yr(b,ce,E),_.return=b,b=_;break e}r(b,ce);break}else n(b,ce);ce=ce.sibling}E.type===K?(_=At(E.props.children,b.mode,H,E.key),_.return=b,b=_):(H=xs(E.type,E.key,E.props,null,b.mode,H),H.ref=Yr(b,_,E),H.return=b,b=H)}return u(b);case O:e:{for(ce=E.key;_!==null;){if(_.key===ce)if(_.tag===4&&_.stateNode.containerInfo===E.containerInfo&&_.stateNode.implementation===E.implementation){r(b,_.sibling),_=s(_,E.children||[]),_.return=b,b=_;break e}else{r(b,_);break}else n(b,_);_=_.sibling}_=Eo(E,b.mode,H),_.return=b,b=_}return u(b);case ge:return ce=E._init,Ie(b,_,ce(E._payload),H)}if(jt(E))return re(b,_,E,H);if(ae(E))return le(b,_,E,H);ql(b,E)}return typeof E=="string"&&E!==""||typeof E=="number"?(E=""+E,_!==null&&_.tag===6?(r(b,_.sibling),_=s(_,E),_.return=b,b=_):(r(b,_),_=Po(E,b.mode,H),_.return=b,b=_),u(b)):r(b,_)}return Ie}var sr=n1(!0),t1=n1(!1),Zl=st(null),Xl=null,ar=null,Fa=null;function Ba(){Fa=ar=Xl=null}function Oa(e){var n=Zl.current;Ee(Zl),e._currentValue=n}function Ua(e,n,r){for(;e!==null;){var l=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,l!==null&&(l.childLanes|=n)):l!==null&&(l.childLanes&n)!==n&&(l.childLanes|=n),e===r)break;e=e.return}}function or(e,n){Xl=e,Fa=ar=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&n)!==0&&(sn=!0),e.firstContext=null)}function yn(e){var n=e._currentValue;if(Fa!==e)if(e={context:e,memoizedValue:n,next:null},ar===null){if(Xl===null)throw Error(c(308));ar=e,Xl.dependencies={lanes:0,firstContext:e}}else ar=ar.next=e;return n}var Lt=null;function $a(e){Lt===null?Lt=[e]:Lt.push(e)}function r1(e,n,r,l){var s=n.interleaved;return s===null?(r.next=r,$a(n)):(r.next=s.next,s.next=r),n.interleaved=r,Gn(e,l)}function Gn(e,n){e.lanes|=n;var r=e.alternate;for(r!==null&&(r.lanes|=n),r=e,e=e.return;e!==null;)e.childLanes|=n,r=e.alternate,r!==null&&(r.childLanes|=n),r=e,e=e.return;return r.tag===3?r.stateNode:null}var it=!1;function Wa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function l1(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Hn(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function ct(e,n,r){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(ke&2)!==0){var s=l.pending;return s===null?n.next=n:(n.next=s.next,s.next=n),l.pending=n,Gn(e,r)}return s=l.interleaved,s===null?(n.next=n,$a(l)):(n.next=s.next,s.next=n),l.interleaved=n,Gn(e,r)}function Jl(e,n,r){if(n=n.updateQueue,n!==null&&(n=n.shared,(r&4194240)!==0)){var l=n.lanes;l&=e.pendingLanes,r|=l,n.lanes=r,ra(e,r)}}function s1(e,n){var r=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,r===l)){var s=null,a=null;if(r=r.firstBaseUpdate,r!==null){do{var u={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};a===null?s=a=u:a=a.next=u,r=r.next}while(r!==null);a===null?s=a=n:a=a.next=n}else s=a=n;r={baseState:l.baseState,firstBaseUpdate:s,lastBaseUpdate:a,shared:l.shared,effects:l.effects},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=n:e.next=n,r.lastBaseUpdate=n}function es(e,n,r,l){var s=e.updateQueue;it=!1;var a=s.firstBaseUpdate,u=s.lastBaseUpdate,h=s.shared.pending;if(h!==null){s.shared.pending=null;var y=h,R=y.next;y.next=null,u===null?a=R:u.next=R,u=y;var B=e.alternate;B!==null&&(B=B.updateQueue,h=B.lastBaseUpdate,h!==u&&(h===null?B.firstBaseUpdate=R:h.next=R,B.lastBaseUpdate=y))}if(a!==null){var U=s.baseState;u=0,B=R=y=null,h=a;do{var F=h.lane,X=h.eventTime;if((l&F)===F){B!==null&&(B=B.next={eventTime:X,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,next:null});e:{var re=e,le=h;switch(F=n,X=r,le.tag){case 1:if(re=le.payload,typeof re=="function"){U=re.call(X,U,F);break e}U=re;break e;case 3:re.flags=re.flags&-65537|128;case 0:if(re=le.payload,F=typeof re=="function"?re.call(X,U,F):re,F==null)break e;U=q({},U,F);break e;case 2:it=!0}}h.callback!==null&&h.lane!==0&&(e.flags|=64,F=s.effects,F===null?s.effects=[h]:F.push(h))}else X={eventTime:X,lane:F,tag:h.tag,payload:h.payload,callback:h.callback,next:null},B===null?(R=B=X,y=U):B=B.next=X,u|=F;if(h=h.next,h===null){if(h=s.shared.pending,h===null)break;F=h,h=F.next,F.next=null,s.lastBaseUpdate=F,s.shared.pending=null}}while(!0);if(B===null&&(y=U),s.baseState=y,s.firstBaseUpdate=R,s.lastBaseUpdate=B,n=s.shared.interleaved,n!==null){s=n;do u|=s.lane,s=s.next;while(s!==n)}else a===null&&(s.shared.lanes=0);Dt|=u,e.lanes=u,e.memoizedState=U}}function a1(e,n,r){if(e=n.effects,n.effects=null,e!==null)for(n=0;nr?r:4,e(!0);var l=Qa.transition;Qa.transition={};try{e(!1),n()}finally{Ce=r,Qa.transition=l}}function S1(){return _n().memoizedState}function c0(e,n,r){var l=ft(e);if(r={lane:l,action:r,hasEagerState:!1,eagerState:null,next:null},C1(e))b1(n,r);else if(r=r1(e,n,r,l),r!==null){var s=nn();En(r,e,l,s),L1(r,n,l)}}function u0(e,n,r){var l=ft(e),s={lane:l,action:r,hasEagerState:!1,eagerState:null,next:null};if(C1(e))b1(n,s);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=n.lastRenderedReducer,a!==null))try{var u=n.lastRenderedState,h=a(u,r);if(s.hasEagerState=!0,s.eagerState=h,Sn(h,u)){var y=n.interleaved;y===null?(s.next=s,$a(n)):(s.next=y.next,y.next=s),n.interleaved=s;return}}catch{}finally{}r=r1(e,n,s,l),r!==null&&(s=nn(),En(r,e,l,s),L1(r,n,l))}}function C1(e){var n=e.alternate;return e===ze||n!==null&&n===ze}function b1(e,n){Jr=rs=!0;var r=e.pending;r===null?n.next=n:(n.next=r.next,r.next=n),e.pending=n}function L1(e,n,r){if((r&4194240)!==0){var l=n.lanes;l&=e.pendingLanes,r|=l,n.lanes=r,ra(e,r)}}var as={readContext:yn,useCallback:qe,useContext:qe,useEffect:qe,useImperativeHandle:qe,useInsertionEffect:qe,useLayoutEffect:qe,useMemo:qe,useReducer:qe,useRef:qe,useState:qe,useDebugValue:qe,useDeferredValue:qe,useTransition:qe,useMutableSource:qe,useSyncExternalStore:qe,useId:qe,unstable_isNewReconciler:!1},d0={readContext:yn,useCallback:function(e,n){return An().memoizedState=[e,n===void 0?null:n],e},useContext:yn,useEffect:v1,useImperativeHandle:function(e,n,r){return r=r!=null?r.concat([e]):null,ls(4194308,4,x1.bind(null,n,e),r)},useLayoutEffect:function(e,n){return ls(4194308,4,e,n)},useInsertionEffect:function(e,n){return ls(4,2,e,n)},useMemo:function(e,n){var r=An();return n=n===void 0?null:n,e=e(),r.memoizedState=[e,n],e},useReducer:function(e,n,r){var l=An();return n=r!==void 0?r(n):n,l.memoizedState=l.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},l.queue=e,e=e.dispatch=c0.bind(null,ze,e),[l.memoizedState,e]},useRef:function(e){var n=An();return e={current:e},n.memoizedState=e},useState:m1,useDebugValue:no,useDeferredValue:function(e){return An().memoizedState=e},useTransition:function(){var e=m1(!1),n=e[0];return e=i0.bind(null,e[1]),An().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,r){var l=ze,s=An();if(De){if(r===void 0)throw Error(c(407));r=r()}else{if(r=n(),Ge===null)throw Error(c(349));(Et&30)!==0||u1(l,n,r)}s.memoizedState=r;var a={value:r,getSnapshot:n};return s.queue=a,v1(p1.bind(null,l,a,e),[e]),l.flags|=2048,tl(9,d1.bind(null,l,a,r,n),void 0,null),r},useId:function(){var e=An(),n=Ge.identifierPrefix;if(De){var r=Wn,l=$n;r=(l&~(1<<32-Nn(l)-1)).toString(32)+r,n=":"+n+"R"+r,r=el++,0<\/script>",e=e.removeChild(e.firstChild)):typeof l.is=="string"?e=u.createElement(r,{is:l.is}):(e=u.createElement(r),r==="select"&&(u=e,l.multiple?u.multiple=!0:l.size&&(u.size=l.size))):e=u.createElementNS(e,r),e[Rn]=n,e[Kr]=l,Q1(e,n,!1,!1),n.stateNode=e;e:{switch(u=Wt(r,l),r){case"dialog":Pe("cancel",e),Pe("close",e),s=l;break;case"iframe":case"object":case"embed":Pe("load",e),s=l;break;case"video":case"audio":for(s=0;spr&&(n.flags|=128,l=!0,rl(a,!1),n.lanes=4194304)}else{if(!l)if(e=ns(u),e!==null){if(n.flags|=128,l=!0,r=e.updateQueue,r!==null&&(n.updateQueue=r,n.flags|=4),rl(a,!0),a.tail===null&&a.tailMode==="hidden"&&!u.alternate&&!De)return Ze(n),null}else 2*Me()-a.renderingStartTime>pr&&r!==1073741824&&(n.flags|=128,l=!0,rl(a,!1),n.lanes=4194304);a.isBackwards?(u.sibling=n.child,n.child=u):(r=a.last,r!==null?r.sibling=u:n.child=u,a.last=u)}return a.tail!==null?(n=a.tail,a.rendering=n,a.tail=n.sibling,a.renderingStartTime=Me(),n.sibling=null,r=Re.current,Le(Re,l?r&1|2:r&1),n):(Ze(n),null);case 22:case 23:return Co(),l=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==l&&(n.flags|=8192),l&&(n.mode&1)!==0?(mn&1073741824)!==0&&(Ze(n),n.subtreeFlags&6&&(n.flags|=8192)):Ze(n),null;case 24:return null;case 25:return null}throw Error(c(156,n.tag))}function _0(e,n){switch(za(n),n.tag){case 1:return ln(n.type)&&Gl(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return ir(),Ee(rn),Ee(Ye),Ka(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 5:return Ha(n),null;case 13:if(Ee(Re),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(c(340));lr()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return Ee(Re),null;case 4:return ir(),null;case 10:return Oa(n.type._context),null;case 22:case 23:return Co(),null;case 24:return null;default:return null}}var us=!1,Xe=!1,x0=typeof WeakSet=="function"?WeakSet:Set,ne=null;function ur(e,n){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(l){Ae(e,n,l)}else r.current=null}function ho(e,n,r){try{r()}catch(l){Ae(e,n,l)}}var Z1=!1;function j0(e,n){if(Sa=El,e=Pc(),va(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var l=r.getSelection&&r.getSelection();if(l&&l.rangeCount!==0){r=l.anchorNode;var s=l.anchorOffset,a=l.focusNode;l=l.focusOffset;try{r.nodeType,a.nodeType}catch{r=null;break e}var u=0,h=-1,y=-1,R=0,B=0,U=e,F=null;n:for(;;){for(var X;U!==r||s!==0&&U.nodeType!==3||(h=u+s),U!==a||l!==0&&U.nodeType!==3||(y=u+l),U.nodeType===3&&(u+=U.nodeValue.length),(X=U.firstChild)!==null;)F=U,U=X;for(;;){if(U===e)break n;if(F===r&&++R===s&&(h=u),F===a&&++B===l&&(y=u),(X=U.nextSibling)!==null)break;U=F,F=U.parentNode}U=X}r=h===-1||y===-1?null:{start:h,end:y}}else r=null}r=r||{start:0,end:0}}else r=null;for(Ca={focusedElem:e,selectionRange:r},El=!1,ne=n;ne!==null;)if(n=ne,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,ne=e;else for(;ne!==null;){n=ne;try{var re=n.alternate;if((n.flags&1024)!==0)switch(n.tag){case 0:case 11:case 15:break;case 1:if(re!==null){var le=re.memoizedProps,Ie=re.memoizedState,b=n.stateNode,_=b.getSnapshotBeforeUpdate(n.elementType===n.type?le:bn(n.type,le),Ie);b.__reactInternalSnapshotBeforeUpdate=_}break;case 3:var E=n.stateNode.containerInfo;E.nodeType===1?E.textContent="":E.nodeType===9&&E.documentElement&&E.removeChild(E.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(c(163))}}catch(H){Ae(n,n.return,H)}if(e=n.sibling,e!==null){e.return=n.return,ne=e;break}ne=n.return}return re=Z1,Z1=!1,re}function ll(e,n,r){var l=n.updateQueue;if(l=l!==null?l.lastEffect:null,l!==null){var s=l=l.next;do{if((s.tag&e)===e){var a=s.destroy;s.destroy=void 0,a!==void 0&&ho(n,r,a)}s=s.next}while(s!==l)}}function ds(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var r=n=n.next;do{if((r.tag&e)===e){var l=r.create;r.destroy=l()}r=r.next}while(r!==n)}}function mo(e){var n=e.ref;if(n!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof n=="function"?n(e):n.current=e}}function X1(e){var n=e.alternate;n!==null&&(e.alternate=null,X1(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Rn],delete n[Kr],delete n[Ea],delete n[r0],delete n[l0])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function J1(e){return e.tag===5||e.tag===3||e.tag===4}function eu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||J1(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function go(e,n,r){var l=e.tag;if(l===5||l===6)e=e.stateNode,n?r.nodeType===8?r.parentNode.insertBefore(e,n):r.insertBefore(e,n):(r.nodeType===8?(n=r.parentNode,n.insertBefore(e,r)):(n=r,n.appendChild(e)),r=r._reactRootContainer,r!=null||n.onclick!==null||(n.onclick=$l));else if(l!==4&&(e=e.child,e!==null))for(go(e,n,r),e=e.sibling;e!==null;)go(e,n,r),e=e.sibling}function vo(e,n,r){var l=e.tag;if(l===5||l===6)e=e.stateNode,n?r.insertBefore(e,n):r.appendChild(e);else if(l!==4&&(e=e.child,e!==null))for(vo(e,n,r),e=e.sibling;e!==null;)vo(e,n,r),e=e.sibling}var Ve=null,Ln=!1;function ut(e,n,r){for(r=r.child;r!==null;)nu(e,n,r),r=r.sibling}function nu(e,n,r){if(Tn&&typeof Tn.onCommitFiberUnmount=="function")try{Tn.onCommitFiberUnmount(Nl,r)}catch{}switch(r.tag){case 5:Xe||ur(r,n);case 6:var l=Ve,s=Ln;Ve=null,ut(e,n,r),Ve=l,Ln=s,Ve!==null&&(Ln?(e=Ve,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):Ve.removeChild(r.stateNode));break;case 18:Ve!==null&&(Ln?(e=Ve,r=r.stateNode,e.nodeType===8?Pa(e.parentNode,r):e.nodeType===1&&Pa(e,r),Mr(e)):Pa(Ve,r.stateNode));break;case 4:l=Ve,s=Ln,Ve=r.stateNode.containerInfo,Ln=!0,ut(e,n,r),Ve=l,Ln=s;break;case 0:case 11:case 14:case 15:if(!Xe&&(l=r.updateQueue,l!==null&&(l=l.lastEffect,l!==null))){s=l=l.next;do{var a=s,u=a.destroy;a=a.tag,u!==void 0&&((a&2)!==0||(a&4)!==0)&&ho(r,n,u),s=s.next}while(s!==l)}ut(e,n,r);break;case 1:if(!Xe&&(ur(r,n),l=r.stateNode,typeof l.componentWillUnmount=="function"))try{l.props=r.memoizedProps,l.state=r.memoizedState,l.componentWillUnmount()}catch(h){Ae(r,n,h)}ut(e,n,r);break;case 21:ut(e,n,r);break;case 22:r.mode&1?(Xe=(l=Xe)||r.memoizedState!==null,ut(e,n,r),Xe=l):ut(e,n,r);break;default:ut(e,n,r)}}function tu(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new x0),n.forEach(function(l){var s=E0.bind(null,e,l);r.has(l)||(r.add(l),l.then(s,s))})}}function Pn(e,n){var r=n.deletions;if(r!==null)for(var l=0;ls&&(s=u),l&=~a}if(l=s,l=Me()-l,l=(120>l?120:480>l?480:1080>l?1080:1920>l?1920:3e3>l?3e3:4320>l?4320:1960*k0(l/1960))-l,10e?16:e,pt===null)var l=!1;else{if(e=pt,pt=null,gs=0,(ke&6)!==0)throw Error(c(331));var s=ke;for(ke|=4,ne=e.current;ne!==null;){var a=ne,u=a.child;if((ne.flags&16)!==0){var h=a.deletions;if(h!==null){for(var y=0;yMe()-xo?Rt(e,0):_o|=r),on(e,n)}function mu(e,n){n===0&&((e.mode&1)===0?n=1:(n=Cl,Cl<<=1,(Cl&130023424)===0&&(Cl=4194304)));var r=nn();e=Gn(e,n),e!==null&&(Dr(e,n,r),on(e,r))}function P0(e){var n=e.memoizedState,r=0;n!==null&&(r=n.retryLane),mu(e,r)}function E0(e,n){var r=0;switch(e.tag){case 13:var l=e.stateNode,s=e.memoizedState;s!==null&&(r=s.retryLane);break;case 19:l=e.stateNode;break;default:throw Error(c(314))}l!==null&&l.delete(n),mu(e,r)}var gu;gu=function(e,n,r){if(e!==null)if(e.memoizedProps!==n.pendingProps||rn.current)sn=!0;else{if((e.lanes&r)===0&&(n.flags&128)===0)return sn=!1,v0(e,n,r);sn=(e.flags&131072)!==0}else sn=!1,De&&(n.flags&1048576)!==0&&Yc(n,Ql,n.index);switch(n.lanes=0,n.tag){case 2:var l=n.type;cs(e,n),e=n.pendingProps;var s=nr(n,Ye.current);or(n,r),s=qa(null,n,l,e,s,r);var a=Za();return n.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,ln(l)?(a=!0,Hl(n)):a=!1,n.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,Wa(n),s.updater=os,n.stateNode=s,s._reactInternals=n,ro(n,l,e,r),n=oo(null,n,l,!0,a,r)):(n.tag=0,De&&a&&Ra(n),en(null,n,s,r),n=n.child),n;case 16:l=n.elementType;e:{switch(cs(e,n),e=n.pendingProps,s=l._init,l=s(l._payload),n.type=l,s=n.tag=T0(l),e=bn(l,e),s){case 0:n=ao(null,n,l,e,r);break e;case 1:n=$1(null,n,l,e,r);break e;case 11:n=I1(null,n,l,e,r);break e;case 14:n=F1(null,n,l,bn(l.type,e),r);break e}throw Error(c(306,l,""))}return n;case 0:return l=n.type,s=n.pendingProps,s=n.elementType===l?s:bn(l,s),ao(e,n,l,s,r);case 1:return l=n.type,s=n.pendingProps,s=n.elementType===l?s:bn(l,s),$1(e,n,l,s,r);case 3:e:{if(W1(n),e===null)throw Error(c(387));l=n.pendingProps,a=n.memoizedState,s=a.element,l1(e,n),es(n,l,null,r);var u=n.memoizedState;if(l=u.element,a.isDehydrated)if(a={element:l,isDehydrated:!1,cache:u.cache,pendingSuspenseBoundaries:u.pendingSuspenseBoundaries,transitions:u.transitions},n.updateQueue.baseState=a,n.memoizedState=a,n.flags&256){s=cr(Error(c(423)),n),n=G1(e,n,l,r,s);break e}else if(l!==s){s=cr(Error(c(424)),n),n=G1(e,n,l,r,s);break e}else for(hn=lt(n.stateNode.containerInfo.firstChild),fn=n,De=!0,Cn=null,r=t1(n,null,l,r),n.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(lr(),l===s){n=Vn(e,n,r);break e}en(e,n,l,r)}n=n.child}return n;case 5:return o1(n),e===null&&Ma(n),l=n.type,s=n.pendingProps,a=e!==null?e.memoizedProps:null,u=s.children,ba(l,s)?u=null:a!==null&&ba(l,a)&&(n.flags|=32),U1(e,n),en(e,n,u,r),n.child;case 6:return e===null&&Ma(n),null;case 13:return H1(e,n,r);case 4:return Ga(n,n.stateNode.containerInfo),l=n.pendingProps,e===null?n.child=sr(n,null,l,r):en(e,n,l,r),n.child;case 11:return l=n.type,s=n.pendingProps,s=n.elementType===l?s:bn(l,s),I1(e,n,l,s,r);case 7:return en(e,n,n.pendingProps,r),n.child;case 8:return en(e,n,n.pendingProps.children,r),n.child;case 12:return en(e,n,n.pendingProps.children,r),n.child;case 10:e:{if(l=n.type._context,s=n.pendingProps,a=n.memoizedProps,u=s.value,Le(Zl,l._currentValue),l._currentValue=u,a!==null)if(Sn(a.value,u)){if(a.children===s.children&&!rn.current){n=Vn(e,n,r);break e}}else for(a=n.child,a!==null&&(a.return=n);a!==null;){var h=a.dependencies;if(h!==null){u=a.child;for(var y=h.firstContext;y!==null;){if(y.context===l){if(a.tag===1){y=Hn(-1,r&-r),y.tag=2;var R=a.updateQueue;if(R!==null){R=R.shared;var B=R.pending;B===null?y.next=y:(y.next=B.next,B.next=y),R.pending=y}}a.lanes|=r,y=a.alternate,y!==null&&(y.lanes|=r),Ua(a.return,r,n),h.lanes|=r;break}y=y.next}}else if(a.tag===10)u=a.type===n.type?null:a.child;else if(a.tag===18){if(u=a.return,u===null)throw Error(c(341));u.lanes|=r,h=u.alternate,h!==null&&(h.lanes|=r),Ua(u,r,n),u=a.sibling}else u=a.child;if(u!==null)u.return=a;else for(u=a;u!==null;){if(u===n){u=null;break}if(a=u.sibling,a!==null){a.return=u.return,u=a;break}u=u.return}a=u}en(e,n,s.children,r),n=n.child}return n;case 9:return s=n.type,l=n.pendingProps.children,or(n,r),s=yn(s),l=l(s),n.flags|=1,en(e,n,l,r),n.child;case 14:return l=n.type,s=bn(l,n.pendingProps),s=bn(l.type,s),F1(e,n,l,s,r);case 15:return B1(e,n,n.type,n.pendingProps,r);case 17:return l=n.type,s=n.pendingProps,s=n.elementType===l?s:bn(l,s),cs(e,n),n.tag=1,ln(l)?(e=!0,Hl(n)):e=!1,or(n,r),E1(n,l,s),ro(n,l,s,r),oo(null,n,l,!0,e,r);case 19:return K1(e,n,r);case 22:return O1(e,n,r)}throw Error(c(156,n.tag))};function vu(e,n){return qi(e,n)}function D0(e,n,r,l){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=l,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function jn(e,n,r,l){return new D0(e,n,r,l)}function Lo(e){return e=e.prototype,!(!e||!e.isReactComponent)}function T0(e){if(typeof e=="function")return Lo(e)?1:0;if(e!=null){if(e=e.$$typeof,e===me)return 11;if(e===ie)return 14}return 2}function mt(e,n){var r=e.alternate;return r===null?(r=jn(e.tag,n,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=n,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,n=e.dependencies,r.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function xs(e,n,r,l,s,a){var u=2;if(l=e,typeof e=="function")Lo(e)&&(u=1);else if(typeof e=="string")u=5;else e:switch(e){case K:return At(r.children,s,a,n);case Q:u=8,s|=8;break;case Z:return e=jn(12,r,n,s|2),e.elementType=Z,e.lanes=a,e;case te:return e=jn(13,r,n,s),e.elementType=te,e.lanes=a,e;case ee:return e=jn(19,r,n,s),e.elementType=ee,e.lanes=a,e;case _e:return js(r,s,a,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case T:u=10;break e;case J:u=9;break e;case me:u=11;break e;case ie:u=14;break e;case ge:u=16,l=null;break e}throw Error(c(130,e==null?e:typeof e,""))}return n=jn(u,r,n,s),n.elementType=e,n.type=l,n.lanes=a,n}function At(e,n,r,l){return e=jn(7,e,l,n),e.lanes=r,e}function js(e,n,r,l){return e=jn(22,e,l,n),e.elementType=_e,e.lanes=r,e.stateNode={isHidden:!1},e}function Po(e,n,r){return e=jn(6,e,null,n),e.lanes=r,e}function Eo(e,n,r){return n=jn(4,e.children!==null?e.children:[],e.key,n),n.lanes=r,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function R0(e,n,r,l,s){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ta(0),this.expirationTimes=ta(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ta(0),this.identifierPrefix=l,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function Do(e,n,r,l,s,a,u,h,y){return e=new R0(e,n,r,h,y),n===1?(n=1,a===!0&&(n|=8)):n=0,a=jn(3,null,null,n),e.current=a,a.stateNode=e,a.memoizedState={element:l,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},Wa(a),e}function z0(e,n,r){var l=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(o)}catch(i){console.error(i)}}return o(),Ds.exports=Lu(),Ds.exports}var Go;function Pu(){if(Go)return cl;Go=1;var o=Wo();return cl.createRoot=o.createRoot,cl.hydrateRoot=o.hydrateRoot,cl}var Eu=Pu(),j=Es();function Du({tabs:o,activeTab:i,onTabChange:c}){return t.jsx("div",{className:"cn-tab-nav",children:o.map(p=>t.jsx("button",{className:`cn-tab-nav__item${i===p.id?" cn-tab-nav__item--active":""}`,onClick:()=>c(p.id),type:"button",children:p.label},p.id))})}function Tu({type:o="info",dismissible:i=!1,onDismiss:c,children:p}){const d={success:"notice-success",error:"notice-error",warning:"notice-warning",info:"notice-info"}[o]||"notice-info";return t.jsxs("div",{className:`notice ${d}${i?" is-dismissible":""}`,children:[t.jsx("p",{children:p}),i&&c&&t.jsx("button",{type:"button",className:"notice-dismiss",onClick:c,children:t.jsx("span",{className:"screen-reader-text",children:"Dismiss this notice."})})]})}function Be(){const o=window.cnReactData||{},i=o.app_id||"",c=(o.subscription||"").toLowerCase(),p=!!i;let d="basic";return p&&c==="pro"?d="pro":p&&(d="free"),{tier:d,isBasic:d==="basic",isFree:d==="free",isPro:d==="pro",isConnected:p,version:o.version||""}}const Ru={basic:"Basic (Not Connected)",free:"Free Plan",pro:"Pro Plan"};function zu(){const{tier:o,version:i}=Be();return t.jsxs("div",{className:"cn-footer",children:[t.jsxs("span",{className:"cn-footer__version",children:["Compliance by Hu-manity.co v",i||"—"," — ",Ru[o]||""]}),t.jsxs("span",{className:"cn-footer__links",children:[t.jsx("a",{href:"https://cookie-compliance.co/documentation/",target:"_blank",rel:"noopener noreferrer",children:"Documentation"})," | ",t.jsx("a",{href:"https://cookie-compliance.co/support/",target:"_blank",rel:"noopener noreferrer",children:"Support"})," | ",t.jsx("a",{href:"https://cookie-compliance.co/privacy-policy/",target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"})]})]})}const Ho=j.createContext({dashboard:null,refetchDashboard:()=>{},isLoadingDashboard:!1});function vt(){return j.useContext(Ho)}const Vo=j.createContext({config:null,isLoadingConfig:!1,refetchConfig:()=>{}});function Mt(){return j.useContext(Vo)}const zs=o=>"cn_setup_wizard_complete_"+(o||"default"),As=o=>"cn_has_platform_config_"+(o||""),Au=o=>"cn_setup_just_finished_"+(o||"default"),Ko=j.createContext(null);function Mu({onLawSave:o,onConsentClose:i,children:c}){const[p,d]=j.useState(!1),[g,m]=j.useState(0),[f,v]=j.useState(!1),[w,x]=j.useState(!1),[S,L]=j.useState(0),[z,C]=j.useState(!1),[P,N]=j.useState(!1),[D,I]=j.useState(0),[A,W]=j.useState(!1),$=j.useMemo(()=>{var ee,ie;try{const ge=((ie=(ee=window.cnReactData)==null?void 0:ee.options)==null?void 0:ie.app_id)||"";return!!ge&&localStorage.getItem(As(ge))==="1"}catch{return!1}},[]),O=j.useCallback(()=>{d(!1),v(!1),x(!1),C(!1),N(!1),W(!1)},[]),K=j.useCallback(()=>{O(),d(!0),m(ee=>ee+1)},[O]),Q=j.useCallback(()=>{O(),x(!0),L(ee=>ee+1)},[O]),Z=j.useCallback(()=>{O(),N(!0),I(ee=>ee+1)},[O]),T=j.useCallback(()=>{v(!0),setTimeout(()=>{d(!1),v(!1)},160)},[]),J=j.useCallback(()=>{C(!0),setTimeout(()=>{x(!1),C(!1),o&&o()},160)},[o]),me=j.useCallback(()=>{W(!0),setTimeout(()=>{N(!1),W(!1),i&&i()},160)},[i]),te={showBannerWizard:p,bannerScrollTrigger:g,bannerClosing:f,showLawWizard:w,lawScrollTrigger:S,lawClosing:z,showConsentPanel:P,consentScrollTrigger:D,consentClosing:A,hasPlatformConfig:$,openBannerWizard:K,openLawWizard:Q,openConsentPanel:Z,closeBannerWizard:T,closeLawWizard:J,closeConsentPanel:me,closeAllPanels:O};return t.jsx(Ko.Provider,{value:te,children:c})}function mr(){const o=j.useContext(Ko);if(!o)throw new Error("usePanels() must be used inside .");return o}async function cn(o,i={}){var m;const c=window.cnReactData||{},p=new FormData;p.append("action",o),p.append("nonce",c.nonce||""),c.network&&p.append("cn_network","1"),Object.entries(i).forEach(([f,v])=>{p.append(f,v)});const d=await fetch(c.ajaxURL||"/wp-admin/admin-ajax.php",{method:"POST",credentials:"same-origin",body:p});if(!d.ok)throw new Error(`AJAX error: ${d.status}`);const g=await d.json();if(!g.success)throw new Error(((m=g.data)==null?void 0:m.error)||"Request failed");return g.data}async function In(o,i={},c="",p=""){const d=window.cnReactData||{},g=new FormData;g.append("action","cn_api_request"),g.append("nonce",p||d.welcomeNonce||""),g.append("request",o),g.append("cn_nonce",c),d.network&&g.append("cn_network","1"),Object.entries(i).forEach(([v,w])=>{g.append(v,w)});const m=await fetch(d.ajaxURL||"/wp-admin/admin-ajax.php",{method:"POST",credentials:"same-origin",body:g});if(!m.ok)throw new Error(`Request failed: ${m.status}`);const f=await m.json();if(f&&f.error)throw new Error(f.error);return f}const Iu=()=>{const o=window.cnReactData||{},i={};if(o.devMode){const p=new URLSearchParams(window.location.search).get("cn_usage");p!==null&&(i.cn_usage=p)}return cn("cn_react_dashboard",i)},Fu=()=>cn("cn_react_config"),Bu=(o={})=>cn("cn_react_consent_logs",o),Ou=(o={})=>cn("cn_react_export_consent_logs",o),Ms=(o={})=>cn("cn_react_save_options",o),Uu=()=>cn("cn_react_dismiss_welcome"),Is=()=>cn("cn_react_complete_setup_wizard"),$u=o=>cn("cn_react_apply_template",{template:o}),Wu=o=>cn("cn_react_rule_values",{param:o}),Gu=(o=[])=>{const i={};return o.forEach((c,p)=>{i[`languages[${p}]`]=c}),cn("cn_react_apply_languages",i)},ul=(o={},i={},c={})=>{const p={};return Object.entries(o).forEach(([d,g])=>{p[`design[${d}]`]=g}),Object.entries(i).forEach(([d,g])=>{p[`config[${d}]`]=g}),Object.entries(c).forEach(([d,g])=>{p[`consentConfig[${d}]`]=g}),cn("cn_react_update_design",p)},Hu=()=>cn("cn_react_rescan_scripts"),Vu=()=>cn("cn_react_dev_reset"),Ku=()=>{const o=window.cnReactData||{},i={};return o.network&&(i.cn_network="1"),In("sync_config",i,"",o.welcomeNonce||"")},Qu=async()=>{const o=window.cnReactData||{},i=new FormData;i.append("action","cn_purge_cache"),i.append("nonce",o.purgeNonce||""),o.network&&i.append("cn_network","1");const c=await fetch(o.ajaxURL||"/wp-admin/admin-ajax.php",{method:"POST",credentials:"same-origin",body:i});if(!c.ok)throw new Error(`Purge cache failed: ${c.status}`)},Qe=((Ii=window.cnReactData)==null?void 0:Ii.appUrl)||"https://app.hu-manity.co",Fs={gdpr:"GDPR",ccpa:"CCPA",otherus:"US State Laws",ukpecr:"UK PECR",lgpd:"LGPD",pipeda:"PIPEDA",popia:"POPIA"},Qo={GDPR:{flag:"🇪🇺",geo:"EU"},CCPA:{flag:"🇺🇸",geo:"US"},"US State Laws":{flag:"🇺🇸",geo:"US"},"UK PECR":{flag:"🇬🇧",geo:"UK"},LGPD:{flag:"🇧🇷",geo:"Brazil"},PIPEDA:{flag:"🇨🇦",geo:"Canada"},POPIA:{flag:"🇿🇦",geo:"South Africa"}};function Yo(o){return o?Object.entries(o).filter(([,i])=>!!i).map(([i])=>i):[]}function qo(o={}){const i=o.google_consent_default,c=o.facebook_consent_default,p=o.microsoft_consent_default;return{google:!!i&&Object.keys(i).length>0,facebook:!!c&&Object.keys(c).length>0,microsoft:!!p&&Object.keys(p).length>0,gpc:!!o.gpc_support,dnt:!!o.do_not_track}}function Zo(o={}){const i=o.providers||[],c=i.length,p=i.filter(g=>!g.CategoryID).length,d=c-p;return{total:c,uncategorized:p,categorized:d,allCategorized:c>0&&p===0}}function yt({children:o,sidebar:i}){return t.jsxs("div",{className:"cn-page-layout",children:[t.jsx("div",{className:"cn-main",children:o}),i&&t.jsx("div",{className:"cn-sidebar",children:i})]})}function Fn({title:o,children:i}){return t.jsxs("div",{className:"cn-side-card",children:[o&&t.jsx("h3",{children:o}),i]})}function $e({variant:o="primary",size:i="md",children:c,...p}){return t.jsx("button",{className:`cn-button cn-button--${o} cn-button--${i}`,type:"button",...p,children:c})}function Se({label:o,type:i="text",value:c,onChange:p,placeholder:d,options:g,error:m,helper:f,required:v,children:w,...x}){const S=x.id||`cn-field-${o==null?void 0:o.toLowerCase().replace(/\s+/g,"-")}`,L=()=>i==="textarea"?t.jsx("textarea",{id:S,className:`cn-form-field__input cn-form-field__textarea${m?" cn-form-field__input--error":""}`,value:c,onChange:z=>p==null?void 0:p(z.target.value),placeholder:d,...x}):i==="select"?t.jsx("select",{id:S,className:`cn-form-field__input cn-form-field__select${m?" cn-form-field__input--error":""}`,value:c,onChange:z=>p==null?void 0:p(z.target.value),...x,children:g==null?void 0:g.map(z=>t.jsx("option",{value:z.value,children:z.label},z.value))}):t.jsx("input",{id:S,type:i,className:`cn-form-field__input${m?" cn-form-field__input--error":""}`,value:c,onChange:z=>p==null?void 0:p(z.target.value),placeholder:d,...x});return t.jsxs("div",{className:"cn-form-field",children:[o&&t.jsxs("label",{className:"cn-form-field__label",htmlFor:S,children:[o,v&&t.jsx("span",{className:"cn-form-field__req",children:"*"})]}),w||L(),m&&t.jsx("div",{className:"cn-form-field__error",children:m}),f&&!m&&t.jsx("div",{className:"cn-form-field__helper",children:f})]})}function wn(){return t.jsx("span",{className:"cn-pro-badge",children:"PRO"})}const Xo={basic:0,free:1,pro:2};function Jo({requiredTier:o="pro",children:i,message:c,onCta:p}){const{tier:d}=Be();if(Xo[d]>=Xo[o])return i;const m=o==="free"?"Connect to Cookie Compliance to unlock this feature.":"Upgrade to Cookie Compliance Pro to unlock this feature.",f=o==="free"?"Connect Now":"Upgrade Now",v=p?t.jsx("button",{type:"button",onClick:p,className:`cn-button cn-button--${o==="free"?"primary":"upgrade"}`,children:f}):t.jsx("a",{href:o==="free"?"#":"https://cookie-compliance.co/pricing/",className:`cn-button cn-button--${o==="free"?"primary":"upgrade"}`,target:o==="pro"?"_blank":void 0,rel:o==="pro"?"noopener noreferrer":void 0,children:f});return t.jsxs("div",{className:"cn-tier-gate",children:[t.jsx("div",{className:"cn-tier-gate__content",children:i}),t.jsx("div",{className:"cn-tier-gate__overlay",children:t.jsxs("div",{className:"cn-tier-gate__cta",children:[o==="pro"&&t.jsx(wn,{}),t.jsx("p",{children:c||m}),v]})})]})}const be={thumb:"_thumb_1g9ys_1",chrome:"_chrome_1g9ys_12",dot:"_dot_1g9ys_23",urlBar:"_urlBar_1g9ys_31",page:"_page_1g9ys_39",lines:"_lines_1g9ys_45",banner:"_banner_1g9ys_57","bar-bottom":"_bar-bottom_1g9ys_69","bar-top":"_bar-top_1g9ys_75",floating:"_floating_1g9ys_81",fixed:"_fixed_1g9ys_87","panel-left":"_panel-left_1g9ys_92","panel-right":"_panel-right_1g9ys_99",panelFloating:"_panelFloating_1g9ys_106",panelFixed:"_panelFixed_1g9ys_110",popup:"_popup_1g9ys_115",bannerHeader:"_bannerHeader_1g9ys_124",toolbarDots:"_toolbarDots_1g9ys_131",pills:"_pills_1g9ys_143",pill:"_pill_1g9ys_143",pillDot:"_pillDot_1g9ys_160",saveBtn:"_saveBtn_1g9ys_167",footerLinks:"_footerLinks_1g9ys_174",link:"_link_1g9ys_181","anim-slide-bottom":"_anim-slide-bottom_1g9ys_188",huPreviewSlideUp:"_huPreviewSlideUp_1g9ys_1","anim-slide-top":"_anim-slide-top_1g9ys_192",huPreviewSlideDown:"_huPreviewSlideDown_1g9ys_1","anim-slide-left":"_anim-slide-left_1g9ys_196",huPreviewSlideLeft:"_huPreviewSlideLeft_1g9ys_1","anim-slide-right":"_anim-slide-right_1g9ys_200",huPreviewSlideRight:"_huPreviewSlideRight_1g9ys_1","anim-slide-center":"_anim-slide-center_1g9ys_204",huPreviewScaleIn:"_huPreviewScaleIn_1g9ys_1","anim-fade":"_anim-fade_1g9ys_208",huPreviewFade:"_huPreviewFade_1g9ys_1"},Yu=["#c4c4c4","#d5b565","#9891b1"];function qu(o){const i=o.replace("#",""),c=parseInt(i.slice(0,2),16),p=parseInt(i.slice(2,4),16),d=parseInt(i.slice(4,6),16);return(c*299+p*587+d*114)/1e3>155}function ei({preset:o,isActive:i}){const{position:c="bottom",displayType:p="floating",bannerColor:d="#4d4d4d",primaryColor:g="#20c19e",btnBorderRadius:m="25px",animation:f="fade"}=o,v=qu(d),w=v?"rgba(0,0,0,.25)":"rgba(255,255,255,.4)",x=v?"rgba(0,0,0,.18)":"rgba(255,255,255,.35)",S=c==="left"||c==="right",L=c==="center",z=p==="floating",C=Math.max(2,Math.round(parseInt(m)*.18))+"px",P=f==="slide"?be[`anim-slide-${c}`]:be["anim-fade"],N=[be.banner,S?be[`panel-${c}`]:null,S&&z?be.panelFloating:null,S&&!z?be.panelFixed:null,L?be.popup:null,!S&&!L?be[`bar-${c}`]:null,!S&&!L&&z?be.floating:null,!S&&!L&&!z?be.fixed:null,be[P]||P].filter(Boolean).join(" ");return t.jsxs("div",{className:be.thumb,children:[t.jsxs("div",{className:be.chrome,children:[t.jsx("span",{className:be.dot}),t.jsx("span",{className:be.dot}),t.jsx("span",{className:be.dot}),t.jsx("div",{className:be.urlBar})]}),t.jsxs("div",{className:be.page,children:[t.jsxs("div",{className:be.lines,children:[t.jsx("div",{style:{width:"75%"}}),t.jsx("div",{style:{width:"55%"}}),t.jsx("div",{style:{width:"65%"}}),t.jsx("div",{style:{width:"45%"}})]}),t.jsxs("div",{className:N,style:{backgroundColor:d},children:[t.jsx("div",{className:be.bannerHeader,children:t.jsxs("div",{className:be.toolbarDots,style:{"--dot-color":w},children:[t.jsx("span",{}),t.jsx("span",{}),t.jsx("span",{})]})}),t.jsx("div",{className:be.pills,children:Yu.map((D,I)=>t.jsx("div",{className:be.pill,style:{borderColor:D},children:t.jsx("span",{className:be.pillDot,style:{backgroundColor:D}})},I))}),t.jsx("div",{className:be.saveBtn,style:{backgroundColor:g,borderRadius:C}}),t.jsxs("div",{className:be.footerLinks,children:[t.jsx("div",{className:be.link,style:{background:x}}),t.jsx("div",{className:be.link,style:{background:x}})]})]})]})]})}const gr=[{key:"minimal",label:"Minimal",position:"left",displayType:"floating",bannerColor:"#f0f0f0",primaryColor:"#20c19e"},{key:"standard",label:"Standard",position:"bottom",displayType:"floating",bannerColor:"#2d3436",primaryColor:"#20c19e"},{key:"bold",label:"Bold",position:"top",displayType:"fixed",bannerColor:"#1a1a2e",primaryColor:"#20c19e"},{key:"popup",label:"Popup",position:"center",displayType:"floating",bannerColor:"#2c3e50",primaryColor:"#20c19e"},{key:"panel",label:"Side Panel",position:"right",displayType:"floating",bannerColor:"#34495e",primaryColor:"#3498db"},{key:"compact",label:"Compact",position:"top",displayType:"floating",bannerColor:"#1a1a2e",primaryColor:"#e67e22"}];function Zu(o){if(!o||!o.position)return null;const i=gr.find(c=>c.position===o.position&&(c.bannerColor||"").toLowerCase()===(o.bannerColor||"").toLowerCase()&&(c.primaryColor||"").toLowerCase()===(o.primaryColor||"").toLowerCase());return i?i.key:"custom"}const Xu={"left|floating":"Left Panel · Floating","bottom|floating":"Bottom Bar · Floating","top|fixed":"Top Bar · Fixed","center|floating":"Center Modal","right|floating":"Right Panel · Floating","top|floating":"Top Bar · Floating","bottom|fixed":"Bottom Bar · Fixed"};function ni(o,i){return Xu[`${o}|${i}`]||`${o} · ${i}`}const Ju={google:"Google",facebook:"Facebook",microsoft:"Microsoft",gpc:"GPC",dnt:"DNT"},ed=["google","facebook","microsoft","gpc","dnt"];function ti({appliedTemplateKey:o,onTemplateApplied:i,siteUrl:c,onOpenTrackers:p,autoblockingEnabled:d,onTabChange:g}){var k,M,de,he;const{isConnected:m}=Be(),{dashboard:f}=vt(),{config:v}=Mt(),{openBannerWizard:w,openLawWizard:x,openConsentPanel:S,hasPlatformConfig:L}=mr(),z=gr.find(oe=>oe.key===o)||null,C=o?"ok":"warn",P=o?"Active":"No template set",N=z?`${z.label} · ${ni(z.position,z.displayType)}`:o?"Custom template":"Choose a template to go live",D=((k=f==null?void 0:f.appConfig)==null?void 0:k.regulations)||{},A=Yo(D).map(oe=>Fs[oe]||oe),$=((M=f==null?void 0:f.appConfig)!=null&&M.language?Array.isArray(f.appConfig.language)?f.appConfig.language:[f.appConfig.language]:["en"]).length,O=`${$} language${$!==1?"s":""}`,K=A.length,Q=K>0||L?"ok":"crit",Z=[...new Set(A.map(oe=>{var fe;return(fe=Qo[oe])==null?void 0:fe.geo}).filter(Boolean))],T=K>0?`${K} law${K!==1?"s":""} · ${O}`:"No laws set",J=K>0&&Z.length>0?`Covering ${Z.join(", ")}`:L?"Configured in portal":"Add your applicable laws below",me=(v==null?void 0:v.blocking)||{},te=qo(me),{total:ee,uncategorized:ie,allCategorized:ge}=Zo(me),_e=d!==void 0?!!d:!!((he=(de=window.cnReactData)==null?void 0:de.options)!=null&&he.app_blocking),V=ie>0?"warn":_e?"ok":"warn",ae=ie>0?`${ie} uncategorized`:ee>0?`${ee} tracked`:"Protected",q=ie>0?`${ie} tracker${ie!==1?"s":""} firing without consent`:_e?ge&&ee>0?"All trackers categorized ✓":"Consent modes active":"Autoblocking off — trackers may fire unblocked";return t.jsxs("div",{className:"cn-card-grid cn-card-grid--3",children:[t.jsxs("div",{className:"cn-card",children:[t.jsxs("div",{className:"cn-card__top",children:[t.jsx("div",{className:"cn-card__icon",children:t.jsxs("svg",{viewBox:"0 0 22 22",fill:"none",width:"22",height:"22","aria-hidden":"true",children:[t.jsx("rect",{x:"3",y:"4",width:"16",height:"10",rx:"2",stroke:`var(--cn-${C}-icon)`,strokeWidth:"1.5"}),t.jsx("line",{x1:"7",y1:"19",x2:"15",y2:"19",stroke:`var(--cn-${C}-icon)`,strokeWidth:"1.5",strokeLinecap:"round"}),t.jsx("line",{x1:"11",y1:"14",x2:"11",y2:"19",stroke:`var(--cn-${C}-icon)`,strokeWidth:"1.2"})]})}),t.jsx("div",{className:`cn-card__dot cn-card__dot--${C}`})]}),z&&t.jsx("div",{className:"cn-card__preview",children:t.jsx(ei,{preset:z})}),t.jsx("div",{className:`cn-card__main cn-card__main--${C}`,children:P}),t.jsx("div",{className:"cn-card__sub",children:N}),t.jsxs("div",{className:"cn-card__foot",children:[c&&o&&t.jsx("a",{href:`${c}?cn_preview=1`,target:"_blank",rel:"noreferrer",children:"Preview →"}),m&&o&&!z?t.jsx("a",{href:`${Qe}/#/configuration`,target:"_blank",rel:"noopener noreferrer",children:"Edit in portal →"}):t.jsxs(t.Fragment,{children:[t.jsxs("button",{type:"button",onClick:()=>w(),children:[o?"Change template":"Choose template"," →"]}),t.jsx("a",{href:`${Qe}/#/configuration`,target:"_blank",rel:"noopener noreferrer",children:"Edit colors & text →"})]})]})]}),t.jsxs("div",{className:`cn-card${Q==="crit"?" cn-card--crit":""}`,children:[t.jsxs("div",{className:"cn-card__top",children:[t.jsx("div",{className:"cn-card__icon",children:t.jsxs("svg",{viewBox:"0 0 22 22",fill:"none",width:"22",height:"22","aria-hidden":"true",children:[t.jsx("path",{d:"M11 2v18M5 7h12M4 7l2.5 7h9L18 7",stroke:`var(--cn-${Q}-icon)`,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),t.jsx("circle",{cx:"7",cy:"14",r:"3",stroke:`var(--cn-${Q}-icon)`,strokeWidth:"1.2"}),t.jsx("circle",{cx:"15",cy:"14",r:"3",stroke:`var(--cn-${Q}-icon)`,strokeWidth:"1.2"})]})}),t.jsx("div",{className:`cn-card__dot cn-card__dot--${Q}`})]}),t.jsx("div",{className:`cn-card__main cn-card__main--${Q}`,children:T}),t.jsx("div",{className:"cn-card__sub",children:J}),t.jsx("div",{className:"cn-card__pills",children:A.map(oe=>{const fe=Qo[oe];return t.jsxs("span",{className:"cn-card__pill cn-card__pill--ok",children:[fe?`${fe.flag} `:"",oe]},oe)})}),t.jsxs("div",{className:"cn-card__foot",children:[t.jsxs("button",{type:"button",onClick:()=>x(),children:[K>0?"Edit laws":"Add laws"," →"]}),t.jsx("a",{href:`${Qe}/#/languages`,target:"_blank",rel:"noopener noreferrer",children:"Manage Languages ↗"})]})]}),t.jsxs("div",{className:`cn-card${V==="warn"?" cn-card--warn":""}`,children:[t.jsxs("div",{className:"cn-card__top",children:[t.jsx("div",{className:"cn-card__icon",children:t.jsxs("svg",{viewBox:"0 0 22 22",fill:"none",width:"22",height:"22","aria-hidden":"true",children:[t.jsx("path",{d:"M11 2L3 5.5v5C3 15.09 6.36 19.5 11 21c4.64-1.5 8-5.91 8-10.5v-5L11 2z",stroke:`var(--cn-${V}-icon)`,strokeWidth:"1.5",strokeLinejoin:"round"}),V==="ok"?t.jsx("polyline",{points:"7.5,11 10,13.5 14.5,9",stroke:`var(--cn-${V}-icon)`,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}):t.jsxs(t.Fragment,{children:[t.jsx("line",{x1:"11",y1:"8",x2:"11",y2:"12",stroke:`var(--cn-${V}-icon)`,strokeWidth:"1.8",strokeLinecap:"round"}),t.jsx("circle",{cx:"11",cy:"14.5",r:".8",fill:`var(--cn-${V}-icon)`})]})]})}),t.jsx("div",{className:`cn-card__dot cn-card__dot--${V}`})]}),t.jsx("div",{className:`cn-card__main cn-card__main--${V}`,children:ae}),t.jsx("div",{className:`cn-card__sub${V==="warn"?" cn-card__sub--warn":""}`,children:q}),t.jsx("div",{className:"cn-card__pills",children:ed.filter(oe=>!!te[oe]).map(oe=>t.jsx("span",{className:"cn-card__pill cn-card__pill--ok",children:Ju[oe]},oe))}),t.jsxs("div",{className:"cn-card__foot",children:[t.jsx("button",{type:"button",onClick:()=>S(),children:"Consent modes →"}),p&&t.jsx("button",{type:"button",onClick:()=>p(),children:"View Trackers →"}),!_e&&g&&t.jsx("button",{type:"button",onClick:()=>{g("settings"),setTimeout(()=>{const oe=document.getElementById("cn-compliance-behavior");oe&&oe.scrollIntoView({behavior:"smooth",block:"start"})},80)},children:"Configure autoblocking →"}),t.jsx("a",{href:`${Qe}/#/autoblocking`,target:"_blank",rel:"noopener noreferrer",children:"Manage in portal ↗"})]})]})]})}function dl({showPortalLink:o=!0,addNotice:i}){var $,O,K,Q,Z;const{isPro:c,isConnected:p}=Be(),{dashboard:d}=vt(),g=(($=window.cnReactData)==null?void 0:$.lastSynced)||"",[m,f]=j.useState(!1),[v,w]=j.useState(null),[x,S]=j.useState(((K=(O=window.cnReactData)==null?void 0:O.options)==null?void 0:K.app_id)||""),[L,z]=j.useState(((Z=(Q=window.cnReactData)==null?void 0:Q.options)==null?void 0:Z.app_key)||""),[C,P]=j.useState(!1),[N,D]=j.useState(""),I=d!=null&&d.domainUrl?(()=>{try{return new URL(d.domainUrl).hostname}catch{return window.location.hostname}})():window.location.hostname,A=async()=>{f(!0),w(null);try{await Ku(),w("success"),i&&i("Configuration synced. Reloading…","success"),setTimeout(()=>window.location.reload(),800)}catch(T){w("error"),i&&i(T.message||"Sync failed. Please try again.","error"),f(!1)}},W=async()=>{P(!0),D("");try{await Ms({app_id:x,app_key:L});try{const T=await In("sync_config");if(T!=null&&T.success){try{await Is()}catch{}try{localStorage.setItem(zs(x),"1"),localStorage.setItem(As(x),"1")}catch{}}}catch{}window.location.reload()}catch(T){D(T.message||"Save failed"),P(!1)}};return t.jsxs(Fn,{title:"Domain Info",children:[t.jsxs("div",{className:"cn-dom-rows",children:[t.jsxs("div",{className:"cn-dom-row",children:[t.jsx("span",{className:"cn-dom-row__k",children:"Domain"}),t.jsx("span",{className:"cn-dom-row__v",children:I})]}),t.jsxs("div",{className:"cn-dom-row",children:[t.jsx("span",{className:"cn-dom-row__k",children:"Protection"}),t.jsx("span",{className:"cn-dom-row__v",children:p?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"cn-dot cn-dot--green"})," Active"]}):t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"cn-dot cn-dot--gray"})," Not Connected"]})})]}),t.jsxs("div",{className:"cn-dom-row",children:[t.jsx("span",{className:"cn-dom-row__k",children:"Plan"}),t.jsx("span",{className:"cn-dom-row__v",children:c?t.jsxs(t.Fragment,{children:["Pro ",t.jsx(wn,{})]}):"Free Plan"})]})]}),t.jsxs("div",{className:"cn-dom-credentials",children:[t.jsx(Se,{label:"App ID",value:x,onChange:S,placeholder:"Your application ID",autoComplete:"off"}),t.jsx(Se,{label:"App Key",type:"password",value:L,onChange:z,placeholder:"Your application key",autoComplete:"new-password"}),N&&t.jsx("div",{className:"cn-conn-error",children:N}),t.jsx($e,{variant:"primary",onClick:W,disabled:C,children:C?"Saving…":"Save and Connect"})]}),t.jsxs("div",{className:"cn-pull-config",children:[t.jsxs("div",{className:"cn-pull-config__row",children:[t.jsx($e,{variant:"secondary",onClick:A,disabled:m,children:m?"Syncing…":"Pull Configuration"}),t.jsx("span",{className:"cn-pull-config__timestamp",children:g?`Last synced (UTC): ${g}`:"Not synced yet"})]}),v==="error"&&t.jsx("p",{className:"cn-pull-config__desc cn-pull-config__desc--error",children:"Sync failed. Please try again."}),!v&&t.jsx("p",{className:"cn-pull-config__desc",children:"Manually pull the latest configuration including autoblocking. Syncs automatically every 24 hours."})]}),o&&c&&t.jsx("a",{className:"cn-dom-link",href:`${Qe}/#/configuration`,target:"_blank",rel:"noopener noreferrer",children:"Advanced Configuration →"})]})}function ri(){var N,D;const{tier:o}=Be(),{dashboard:i}=vt(),[c,p]=j.useState(()=>new Set),d=j.useCallback(I=>{p(A=>new Set([...A,I]))},[]),g=((N=window.cnReactData)==null?void 0:N.notificationRules)||[],m=i===null,f=(D=i==null?void 0:i.analytics)==null?void 0:D.cycleUsage,v=(f==null?void 0:f.visits)||0,w=(f==null?void 0:f.threshold)||0,x=w>0?v/w*100:0,S=o==="free"&&w>0&&v>=w,L=o==="free"&&w>0&&v>=w*.7&&v{var A,W;if(m)return{};const I={};for(const $ of g){if((A=$.condition)!=null&&A.tier&&$.condition.tier!==o)continue;if((W=$.condition)!=null&&W.usagePercent){const[K,Q]=$.condition.usagePercent;if(K!==null&&x=Q)continue}if(c.has($.id))continue;const O=I[$.slot];(!O||$.priority>O.priority)&&(I[$.slot]=$)}return I},[m,g,o,x,c]);function C(I){return I&&I.replace(/\{sessionTotal\}/g,w.toLocaleString()).replace(/\{sessionUsed\}/g,v.toLocaleString()).replace(/\{usagePercent\}/g,String(Math.round(x)))}function P(I){return I?{...I,title:C(I.title),description:C(I.description),headline:C(I.headline)}:null}return{topBar:P(z.topBar||null),sidebar:P(z.sidebar||null),dismiss:d,thresholdLocked:S,isNearLimit:L}}function li({onOpenPricingModal:o}){const{sidebar:i}=ri();return i?t.jsx(Fn,{title:"Upgrade to Pro",children:t.jsxs("div",{className:"cn-upsell-card",children:[t.jsx("p",{className:"cn-upsell-card__headline",children:i.headline}),t.jsx("ul",{className:"cn-upsell-card__features",children:i.features.map(c=>t.jsx("li",{children:c},c))}),t.jsx("button",{type:"button",className:"cn-button cn-button--upgrade cn-button--sm cn-upsell-card__cta",onClick:()=>o&&o(),children:i.cta.label})]})}):null}function nd({onActivate:o}){return t.jsxs("div",{className:"cn-score-hero",children:[t.jsx("div",{className:"cn-score-hero__icon","aria-hidden":"true",children:t.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("circle",{cx:"12",cy:"12",r:"10"}),t.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),t.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]})}),t.jsxs("div",{className:"cn-score-hero__body",children:[t.jsx("div",{className:"cn-score-hero__title",children:"You have a banner. Not compliance."}),t.jsx("div",{className:"cn-score-hero__summary",children:"A banner tells visitors about cookies. Compliance actually enforces the law."}),t.jsx("div",{className:"cn-score-hero__sub",children:"Free · Takes 60 seconds · No credit card"})]}),t.jsx("div",{className:"cn-score-hero__actions",children:t.jsx("button",{type:"button",className:"cn-score-hero__cta",onClick:o,children:"Activate Compliance →"})})]})}function td({sessionUsed:o=0,sessionTotal:i=0,activeLawsCount:c=0,uncategorizedScripts:p=0,autoblockingEnabled:d=!0}){const{tier:g,isPro:m}=Be(),v={basic:"Connect your site to unlock compliance features.",pro:c===0?"No regulations selected — add laws to activate consent enforcement":d?p>0?`${p} uncategorized tracker${p!==1?"s":""} need review`:"All protections active — trackers blocked, consent recorded":"Autoblocking disabled — trackers may load before consent"},w=t.jsxs(t.Fragment,{children:["Your visitors","’"," choices are being recorded ","—"," trackers are blocked."]});return t.jsxs("div",{className:"cn-protection-header",children:[t.jsx("h1",{className:"cn-protection-header__title",children:"Your Compliance Dashboard"}),t.jsxs("p",{className:"cn-protection-header__subtitle",children:[g==="free"?w:v[g]||"",m&&t.jsxs(t.Fragment,{children:[" ",t.jsx(wn,{})]})]})]})}const Bs=3;function si({onApply:o}){const[i,c]=j.useState(null),[p,d]=j.useState(!1),[g,m]=j.useState(""),[f,v]=j.useState(""),[w,x]=j.useState(0),S=Math.ceil(gr.length/Bs),L=gr.slice(w*Bs,(w+1)*Bs),z=async C=>{c(C.key),d(!0),m(""),v("");try{const P=await $u(C.key);P.warning&&m(P.warning),o&&o(C)}catch(P){c(null),v(P.message||"Failed to apply template. Please try again.")}finally{d(!1)}};return t.jsxs("div",{className:"cn-template-presets",children:[t.jsx("span",{className:"cn-section-label",children:"Choose a Template"}),g&&t.jsx("div",{className:"cn-template-presets__warning",children:g}),f&&t.jsx("div",{className:"cn-template-presets__error",children:f}),t.jsx("div",{className:"cn-template-presets__grid",children:L.map(C=>t.jsxs("div",{className:"cn-template-presets__card"+(i===C.key?" cn-template-presets__card--active":"")+(p?" cn-template-presets__card--loading":""),onClick:()=>!p&&z(C),children:[t.jsx("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:"120px"},children:t.jsx(ei,{preset:C,isActive:i===C.key})}),t.jsx("div",{className:"cn-template-presets__label",children:C.label}),t.jsx("div",{className:"cn-template-card__descriptor",children:ni(C.position,C.displayType)})]},C.key))},w),S>1&&t.jsxs("div",{className:"cn-template-presets__pagination",children:[t.jsx("button",{className:"cn-template-presets__page-btn",disabled:w===0,onClick:()=>x(w-1),"aria-label":"Previous page",children:"‹"}),t.jsxs("span",{className:"cn-template-presets__page-count",children:["Page ",w+1," of ",S," (",gr.length," templates)"]}),t.jsx("button",{className:"cn-template-presets__page-btn",disabled:w===S-1,onClick:()=>x(w+1),"aria-label":"Next page",children:"›"})]})]})}const we={container:"_container_nva6m_2",grid:"_grid_nva6m_8",card:"_card_nva6m_16",cardSelected:"_cardSelected_nva6m_32",geoArt:"_geoArt_nva6m_38",lawName:"_lawName_nva6m_47",jurisdiction:"_jurisdiction_nva6m_54",hiddenCheckbox:"_hiddenCheckbox_nva6m_60",checkmark:"_checkmark_nva6m_72",autoBadge:"_autoBadge_nva6m_88",detail:"_detail_nva6m_102",detailHeader:"_detailHeader_nva6m_112",detailTitle:"_detailTitle_nva6m_119",detailJurisdiction:"_detailJurisdiction_nva6m_125",detailClose:"_detailClose_nva6m_131",detailSection:"_detailSection_nva6m_144",detailSectionLabel:"_detailSectionLabel_nva6m_148",detailOverview:"_detailOverview_nva6m_157",detailList:"_detailList_nva6m_163",detailListItem:"_detailListItem_nva6m_172",detailEnforcement:"_detailEnforcement_nva6m_188",detailEmpty:"_detailEmpty_nva6m_197",detailEmptyArrow:"_detailEmptyArrow_nva6m_208",detailEmptyText:"_detailEmptyText_nva6m_215",detailDnsHelp:"_detailDnsHelp_nva6m_222",dnsInput:"_dnsInput_nva6m_263"},Os=[{key:"gdpr",name:"GDPR",jurisdiction:"European Union",description:"General Data Protection Regulation",locales:["de","fr","it","es","nl","pl","pt","sv","el","de_DE","fr_FR","it_IT","es_ES","nl_NL","pl_PL","pt_PT","sv_SE","el_GR","da_DK","fi","ro_RO","bg_BG","cs_CZ","et","hr","hu_HU","lt_LT","lv","sk_SK","sl_SI"],overview:"The EU’s gold standard for data privacy. Applies to any site with visitors from the 27 EU member states — regardless of where your business is based.",requirements:["Prior, informed consent before any non-essential cookies","Clear opt-out that’s as easy as opting in","Right to erasure (‘be forgotten’) on request","Data processing records & DPO for large processors"],product:["Consent banner with granular category controls","Consent proof stored per visitor","GDPR-mode autoblocking holds scripts until consent"],enforcement:"Fines up to €20M or 4% of global annual revenue. Enforced by national DPAs."},{key:"ccpa",name:"CCPA / CPRA",jurisdiction:"California, USA",description:"California Consumer Privacy Act",locales:["en_US"],overview:"California’s comprehensive privacy law, upgraded by CPRA in 2023. If you serve California residents, it applies — even if you’re outside the US.",requirements:["Opt-out of sale or sharing of personal data","Honor Global Privacy Control (GPC) signals automatically","Annual privacy policy updates","Right to know, delete, and correct personal data"],product:["GPC signal detection and automatic opt-out","Do Not Sell link insertion","Consent-mode compatible analytics opt-out"],enforcement:"Fines up to $7,500 per intentional violation. Enforced by the California Privacy Protection Agency."},{key:"otherus",name:"US State Laws",jurisdiction:"United States",description:"Virginia, Colorado, Connecticut, and more",locales:["en_US"],overview:"Virginia, Colorado, Connecticut, Utah, Montana, Texas, Oregon, and more have passed comprehensive privacy laws. The landscape is evolving fast.",requirements:["Consent for sensitive data processing","Universal opt-out mechanism support (like GPC)","Right to access, correct, delete, and opt out of targeted advertising","Data protection assessments for high-risk processing"],product:["State-specific banner rules via geolocation","Opt-out of targeted advertising flow","Consent records per jurisdiction"],enforcement:"Fines from $7,500–$20,000 per violation depending on state. Enforced by state attorneys general."},{key:"ukpecr",name:"UK PECR",jurisdiction:"United Kingdom",description:"Privacy and Electronic Communications Regulations",locales:["en_GB"],overview:"The UK’s post-Brexit equivalent to GDPR’s cookie rules. Applies to any site with UK visitors. Enforced by the ICO, which has been increasingly active.",requirements:["Prior consent for analytics and marketing cookies","Clear information about what cookies do","Easy withdrawal of consent","Legitimate interest cannot be used for tracking cookies"],product:["UK-specific consent banner variant","ICO-compliant consent language","Consent proof storage"],enforcement:"Fines up to £17.5M or 4% of global turnover. Enforced by the ICO."},{key:"lgpd",name:"LGPD",jurisdiction:"Brazil",description:"Lei Geral de Proteção de Dados",locales:["pt_BR"],overview:"Brazil’s General Data Protection Law covers 214 million people. Modeled on GDPR, it requires a lawful basis for processing and strong user rights.",requirements:["Valid lawful basis for each data processing activity","Clear, granular consent for non-essential cookies","Right to access, correct, delete, and revoke consent","Report breaches within 2 business days"],product:["LGPD-mode consent banner with Portuguese language support","Consent revocation flow","Breach-ready consent audit trail"],enforcement:"Fines up to 2% of Brazil revenue, capped at R$50M per violation. Enforced by the ANPD."},{key:"pipeda",name:"PIPEDA",jurisdiction:"Canada",description:"Personal Information Protection and Electronic Documents Act",locales:["en_CA","fr_CA"],overview:"Canada’s federal privacy law. Bill C-27 (CPPA) reform is underway and will bring requirements closer to GDPR. Applies to commercial activity across Canada.",requirements:["Express consent for collection, use, and disclosure of personal data","Privacy policy clearly explaining data use","Individual access and correction rights","Breach reporting to the Privacy Commissioner"],product:["PIPEDA-compliant consent banner","English + French bilingual support","Consent records with timestamps"],enforcement:"Fines up to CAD $100,000. Enforced by the Office of the Privacy Commissioner of Canada."},{key:"popia",name:"POPIA",jurisdiction:"South Africa",description:"Protection of Personal Information Act",locales:["af_ZA"],overview:"South Africa’s Protection of Personal Information Act took full effect in 2021. Applies to any business processing data about South African residents.",requirements:["Lawful basis for all personal information processing","Consent for direct marketing and cookie use","Data subject rights: access, correction, deletion","Appoint an Information Officer"],product:["POPIA-compliant consent banner","Afrikaans language support","Consent audit trail"],enforcement:"Fines up to ZAR 10M or 10 years imprisonment. Enforced by the Information Regulator."}];function rd(o){if(!o)return[];const i=o.toLowerCase(),c=i.split("_")[0];return Os.filter(p=>p.locales.some(d=>d.toLowerCase()===i||d.toLowerCase()===c)).map(p=>p.key)}const ld=["M40.00,4.80L40.75,6.96L43.04,7.01L41.22,8.40L41.88,10.59L40.00,9.28L38.12,10.59L38.78,8.40L36.96,7.01L39.25,6.96Z","M50.60,7.64L50.17,9.89L52.13,11.08L49.86,11.36L49.33,13.59L48.36,11.52L46.08,11.71L47.75,10.15L46.86,8.03L48.87,9.14Z","M58.36,15.40L56.86,17.13L57.97,19.14L55.85,18.25L54.29,19.92L54.48,17.64L52.41,16.67L54.64,16.14L54.92,13.87L56.11,15.83Z","M61.20,26.00L59.04,26.75L58.99,29.04L57.60,27.22L55.41,27.88L56.72,26.00L55.41,24.12L57.60,24.78L58.99,22.96L59.04,25.25Z","M58.36,36.60L56.11,36.17L54.92,38.13L54.64,35.86L52.41,35.33L54.48,34.36L54.29,32.08L55.85,33.75L57.97,32.86L56.86,34.87Z","M50.60,44.36L48.87,42.86L46.86,43.97L47.75,41.85L46.08,40.29L48.36,40.48L49.33,38.41L49.86,40.64L52.13,40.92L50.17,42.11Z","M40.00,47.20L39.25,45.04L36.96,44.99L38.78,43.60L38.12,41.41L40.00,42.72L41.88,41.41L41.22,43.60L43.04,44.99L40.75,45.04Z","M29.40,44.36L29.83,42.11L27.87,40.92L30.14,40.64L30.67,38.41L31.64,40.48L33.92,40.29L32.25,41.85L33.14,43.97L31.13,42.86Z","M21.64,36.60L23.14,34.87L22.03,32.86L24.15,33.75L25.71,32.08L25.52,34.36L27.59,35.33L25.36,35.86L25.08,38.13L23.89,36.17Z","M18.80,26.00L20.96,25.25L21.01,22.96L22.40,24.78L24.59,24.12L23.28,26.00L24.59,27.88L22.40,27.22L21.01,29.04L20.96,26.75Z","M21.64,15.40L23.89,15.83L25.08,13.87L25.36,16.14L27.59,16.67L25.52,17.64L25.71,19.92L24.15,18.25L22.03,19.14L23.14,17.13Z","M29.40,7.64L31.13,9.14L33.14,8.03L32.25,10.15L33.92,11.71L31.64,11.52L30.67,13.59L30.14,11.36L27.87,11.08L29.83,9.89Z"];function sd(){return t.jsx("svg",{viewBox:"0 0 80 52",fill:"none",style:{width:"100%",height:"auto"},children:ld.map((o,i)=>t.jsx("path",{d:o,fill:"#20c19e",opacity:"0.9"},i))})}function ad(){return t.jsx("svg",{viewBox:"0 0 80 52",style:{width:"100%",height:"auto"},children:t.jsx("path",{d:"M37.513,42.904L38.238,43.379L37.825,43.645ZM37.052,44.75L37.717,45.823L37.272,45.618ZM35.977,42.471L35.977,42.471L35.977,42.471ZM35.268,39.936L35.268,39.936L35.268,39.936ZM33.989,42.904L33.989,42.904L33.989,42.904ZM33.676,39.32L34.798,39.964L33.73,39.76ZM32.497,39.347L33.222,39.384L32.807,39.892ZM31.86,39.021L31.86,39.021L31.86,39.021ZM29.205,3L32.401,3.908L38.713,5.758L41.841,6.576L41.84,6.58L38.653,18.933L41.444,23.13L44.007,26.988L48.051,33.092L52.339,39.534L52.222,40.059L52.645,40.847L52.88,42.027L53.42,42.959L52.253,43.484L51.779,44.08L51.723,45.075L51.378,45.722L50.695,46.134L50.495,47.457L51.101,47.842L50.851,48.976L50.148,49L41.666,47.998L41.371,47.343L41.515,45.403L41.115,44.386L39.247,42.072L38.422,41.969L38.28,40.638L37.359,40.575L36.115,39.635L36.034,39.084L35.246,38.245L34.184,37.993L33.352,37.495L32.221,37.309L31.791,36.609L32.419,34.386L31.689,33.643L31.931,33.211L30.973,31.644L30.057,29.011L29.65,28.484L29.661,27.639L30.53,26.451L30.232,25.596L29.675,25.538L28.998,24.284L29.024,22.847L29.328,21.783L29.707,21.754L29.599,22.695L30.309,23.509L30.302,22.525L29.816,21.111L30.434,20.929L30.14,20.407L29.328,21.612L28.616,20.617L28.022,20.414L28.453,19.444L28.184,18.476L27.692,17.819L26.886,15.851L27.158,15.473L27.119,14.107L27.54,13.351L27.621,12.162L26.58,9.935L26.661,9.167L27.876,7.733L28.302,6.532L28.962,5.414L29.033,4.098L28.808,3.838Z",fill:"rgba(32,193,158,0.15)",stroke:"#20c19e",strokeWidth:1.2,strokeLinejoin:"round"})})}function od(){return t.jsx("div",{style:{width:46,height:46,margin:"0 auto"},children:t.jsx("div",{"data-geo":"us",style:{width:"100%",height:"100%",lineHeight:0},dangerouslySetInnerHTML:{__html:` + +Created by potrace 1.10, written by Peter Selinger 2001-2011 + + + + + +`}})})}function id(){return t.jsx("div",{style:{width:46,height:46,margin:"0 auto"},children:t.jsx("div",{"data-geo":"gb",style:{width:"100%",height:"100%",lineHeight:0},dangerouslySetInnerHTML:{__html:` + +Created by potrace 1.10, written by Peter Selinger 2001-2011 + + + + + + + + + + + + + + + + + + + + + +`}})})}function cd(){return t.jsx("div",{style:{width:46,height:46,margin:"0 auto"},children:t.jsx("div",{"data-geo":"br",style:{width:"100%",height:"100%",lineHeight:0},dangerouslySetInnerHTML:{__html:` + +Created by potrace 1.10, written by Peter Selinger 2001-2011 + + + + +`}})})}function ud(){return t.jsx("div",{style:{width:46,height:46,margin:"0 auto"},children:t.jsx("div",{"data-geo":"ca",style:{width:"100%",height:"100%",lineHeight:0},dangerouslySetInnerHTML:{__html:` + +Created by potrace 1.10, written by Peter Selinger 2001-2011 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`}})})}function dd(){return t.jsx("div",{style:{width:46,height:46,margin:"0 auto"},children:t.jsx("div",{"data-geo":"za",style:{width:"100%",height:"100%",lineHeight:0},dangerouslySetInnerHTML:{__html:` + +Created by potrace 1.10, written by Peter Selinger 2001-2011 + + + + +`}})})}const pd={gdpr:sd,ccpa:ad,otherus:od,ukpecr:id,lgpd:cd,pipeda:ud,popia:dd};function ai({selected:o,onChange:i,dnsUrl:c,onDnsUrlChange:p}){const g=(window.cnReactData||{}).siteLocale||"",[m,f]=j.useState([]),[v,w]=j.useState(null),[x,S]=j.useState(null),L=o,z=x??L;j.useEffect(()=>{const A=rd(g);f(A),o.length===0&&A.length>0&&i(A),A.length>0&&w(A[0])},[]);const C=A=>{w(A);const W=x??L,$=W.includes(A)?W.filter(O=>O!==A):[...W,A];S($),i&&i($)},P=(A,W)=>{A.stopPropagation();const $=x??L,O=$.includes(W)?$.filter(K=>K!==W):[...$,W];S(O),i&&i(O)},N=()=>{w(null)},D=v?Os.find(A=>A.key===v):null,I=D&&(D.key==="ccpa"||D.key==="otherus");return t.jsxs("div",{className:we.container,children:[t.jsx("div",{children:t.jsx("div",{className:we.grid,children:Os.map(A=>{const W=z.includes(A.key),$=m.includes(A.key),O=pd[A.key];return t.jsxs("div",{className:we.card+(W?" "+we.cardSelected:""),onClick:()=>C(A.key),role:"button",tabIndex:0,onKeyDown:K=>{(K.key==="Enter"||K.key===" ")&&(K.preventDefault(),C(A.key))},children:[$&&t.jsx("span",{className:we.autoBadge,children:"Auto-detected"}),W&&t.jsx("span",{className:we.checkmark,children:"✓"}),t.jsx("input",{type:"checkbox",className:we.hiddenCheckbox,checked:W,onChange:K=>P(K,A.key),onClick:K=>K.stopPropagation(),tabIndex:-1,"aria-label":`Select ${A.name}`}),t.jsx("div",{className:we.geoArt,children:O&&t.jsx(O,{})}),t.jsx("div",{className:we.lawName,children:A.name}),t.jsx("div",{className:we.jurisdiction,children:A.jurisdiction})]},A.key)})})}),D?t.jsxs("div",{className:we.detail,children:[t.jsxs("div",{className:we.detailHeader,children:[t.jsxs("div",{children:[t.jsx("div",{className:we.detailTitle,children:D.name}),t.jsx("div",{className:we.detailJurisdiction,children:D.jurisdiction})]}),t.jsx("button",{className:we.detailClose,onClick:N,type:"button","aria-label":"Close detail panel",children:"×"})]}),t.jsxs("div",{className:we.detailSection,children:[t.jsx("div",{className:we.detailSectionLabel,children:"What it covers"}),t.jsx("div",{className:we.detailOverview,children:D.overview})]}),t.jsxs("div",{className:we.detailSection,children:[t.jsx("div",{className:we.detailSectionLabel,children:"Key requirements"}),t.jsx("ul",{className:we.detailList,children:D.requirements.map((A,W)=>t.jsx("li",{className:we.detailListItem,children:A},W))})]}),t.jsxs("div",{className:we.detailSection,children:[t.jsx("div",{className:we.detailSectionLabel,children:"What Cookie Compliance does"}),t.jsx("ul",{className:we.detailList,children:D.product.map((A,W)=>t.jsx("li",{className:we.detailListItem,children:A},W))})]}),t.jsx("div",{className:we.detailEnforcement,children:D.enforcement}),I&&t.jsxs("div",{className:we.detailSection,style:{marginTop:14},children:[t.jsx("div",{className:we.detailSectionLabel,children:"Do Not Sell URL"}),t.jsx("p",{className:we.detailDnsHelp,children:"Required if you advertise to California residents. This is a page on your site where visitors can request you stop selling or sharing their personal data."}),t.jsx("input",{id:"cn-dns-url",type:"url",className:we.dnsInput,value:c||"",onChange:A=>p&&p(A.target.value),placeholder:"https://example.com/do-not-sell"}),t.jsx("a",{href:"https://oag.ca.gov/privacy/ccpa",target:"_blank",rel:"noreferrer",style:{fontSize:12,color:"#0073aa",display:"inline-block",marginTop:4},children:"What is this? →"})]})]},D.key):t.jsxs("div",{className:we.detailEmpty,children:[t.jsx("div",{className:we.detailEmptyArrow,children:"←"}),t.jsx("div",{className:we.detailEmptyText,children:"Select a law to see what it covers and what compliance looks like for your site."})]})]})}const oi=[{code:"fr",name:"French"},{code:"es",name:"Spanish"},{code:"de",name:"German"},{code:"it",name:"Italian"},{code:"el",name:"Greek"},{code:"nl",name:"Dutch"},{code:"pt",name:"Portuguese"},{code:"pl",name:"Polish"},{code:"sv",name:"Swedish"}];function fd({onComplete:o,onOpenPricingModal:i}){const p=(window.cnReactData||{}).siteLocale||"",{isFree:d}=Be(),[g,m]=j.useState([]),[f,v]=j.useState(!1),[w,x]=j.useState(""),[S,L]=j.useState(!1);j.useEffect(()=>{var N;const P=(N=p.split("_")[0])==null?void 0:N.toLowerCase();P&&P!=="en"&&oi.some(D=>D.code===P)&&m([P])},[]);const z=P=>{m(N=>N.includes(P)?(L(!1),N.filter(D=>D!==P)):d?(N.length>=1&&L(!0),[P]):[...N,P])},C=async()=>{if(!f){v(!0),x("");try{await Gu(g),o&&o(g)}catch(P){x(P.message||"Failed to apply languages.")}finally{v(!1)}}};return t.jsxs("div",{className:"cn-language-picker",children:[d?t.jsxs("div",{style:{background:"#fff8f0",border:"1px solid #fed7aa",color:"#92400e",padding:"10px 14px",borderRadius:"6px",marginBottom:"12px",display:"flex",alignItems:"center",justifyContent:"space-between",fontSize:"14px"},children:[t.jsx("span",{children:"Free plan: 1 language included"}),t.jsx("button",{type:"button",onClick:()=>i&&i(),style:{background:"none",border:"none",color:"#20c19e",fontWeight:600,cursor:"pointer",textDecoration:"underline",padding:0},children:"Upgrade to Pro for all 9 →"})]}):t.jsx("div",{style:{background:"#f0fdf4",border:"1px solid #a7f3d0",color:"#065f46",padding:"10px 14px",borderRadius:"6px",marginBottom:"12px",fontSize:"14px"},children:"Pro plan — all languages available ✓"}),t.jsx("p",{className:"cn-language-picker__hint",children:"Without a configured language, non-English visitors see browser-automated translations — unreviewed and potentially inaccurate. Selecting a language gives you full control over what they read."}),t.jsx("div",{className:"cn-language-picker__grid",children:oi.map(P=>{const N=g.includes(P.code),D=d&&!N&&g.length>=1;return t.jsxs("button",{type:"button",className:"cn-language-picker__badge"+(N?" cn-language-picker__badge--active":"")+(D?" cn-language-picker__badge--locked":""),onClick:()=>{D?i&&i():z(P.code)},"aria-label":D?`${P.name} — upgrade to Pro to unlock`:P.name,children:[P.name,D?" 🔒":""]},P.code)})}),S&&d&&t.jsx("div",{style:{color:"#92400e",fontSize:"13px",marginTop:"8px"},children:t.jsx("button",{type:"button",onClick:()=>i&&i(),style:{background:"none",border:"none",color:"#20c19e",fontWeight:600,cursor:"pointer",textDecoration:"underline",padding:0},children:"Upgrade to Pro to unlock all 9 languages →"})}),w&&t.jsx("div",{className:"cn-language-picker__error",children:w}),t.jsx("div",{className:"cn-language-picker__actions",children:t.jsx("button",{className:"cn-button cn-button--primary",onClick:C,disabled:f,type:"button",children:f?"Applying…":"Apply Languages"})})]})}const pl=[{key:"template",label:"Template"},{key:"laws",label:"Laws"},{key:"languages",label:"Languages"}];function hd({onTemplateApplied:o,initialLaws:i=[],onOpenPricingModal:c,totalScripts:p=0,uncategorizedScripts:d=0,isLoadingConfig:g=!1}){var te;const m=window.cnReactData||{},[f,v]=j.useState(0),w=zs((te=m.options)==null?void 0:te.app_id),[x,S]=j.useState(!!m.setupWizardComplete||localStorage.getItem(w)==="1"),[L,z]=j.useState(!1),[C,P]=j.useState(i),[N,D]=j.useState(""),[I,A]=j.useState(!1),[W,$]=j.useState(!1),[O,K]=j.useState("");if(x)return null;const Q=()=>{v(ee=>Math.min(ee+1,pl.length-1))},Z=async()=>{if(f===1&&C.length>0){$(!0),K("");try{const ee={};C.forEach((ie,ge)=>{ee[`cn_laws[${ge}]`]=ie}),await In("configure",{...ee,cn_revoke_consent:"1"},m.configureNonce||"")}catch{K("Failed to save laws. Please try again."),$(!1);return}$(!1)}v(ee=>Math.min(ee+1,pl.length-1))},T=()=>{v(ee=>Math.max(ee-1,0))},J=async()=>{var ee;A(!0);try{await Is()}catch{}window.cnReactData&&(window.cnReactData.setupWizardComplete=!0);try{localStorage.setItem(w,"1"),localStorage.setItem("cn_setup_just_finished_"+(((ee=m.options)==null?void 0:ee.app_id)||"default"),"1")}catch{}window.location.reload()},me=f===pl.length-1;return t.jsxs(t.Fragment,{children:[f===0&&t.jsxs("div",{className:"cn-first-run__connected-notice",children:[t.jsx("span",{className:"cn-first-run__connected-check",children:"✓"}),t.jsxs("div",{children:[t.jsx("strong",{children:"Your account is connected."})," ","Select your template, laws, and languages to finalize your setup.",t.jsxs("span",{className:"cn-first-run__connected-hint",children:[" ",g?t.jsx("span",{style:{opacity:.7},children:"Checking site for trackers..."}):t.jsxs(t.Fragment,{children:[p>0?`We found ${p} tracker${p!==1?"s":""} on your site. `:"","When done, you will be guided to select your consent modes",p>0?` and review ${d>0?`${d} uncategorized tracker${d!==1?"s":""}`:"your trackers"}.`:" and set up your tracker protection."]})]})]})]}),t.jsxs("div",{className:"cn-first-run",children:[t.jsxs("div",{className:"cn-first-run__header",children:[t.jsx("h2",{className:"cn-first-run__title",children:"Complete Your Setup"}),t.jsx("button",{className:"cn-first-run__dismiss",onClick:J,type:"button",children:"×"})]}),t.jsx("div",{className:"cn-first-run__progress",children:pl.map((ee,ie)=>t.jsxs("div",{className:"cn-first-run__step-indicator"+(ie===f?" cn-first-run__step-indicator--active":"")+(ie{z(!0),o&&o(ee.key)}}),L&&t.jsxs("p",{className:"cn-first-run__applied",children:["✓"," Template applied"]})]}),f===1&&t.jsxs("div",{className:"cn-first-run__step",children:[t.jsx("h3",{children:"Select Your Laws"}),t.jsx("p",{children:"Choose which privacy regulations apply to your site."}),t.jsx(ai,{selected:C,onChange:ee=>{P(ee),K("")},dnsUrl:N,onDnsUrlChange:D}),O&&t.jsx("p",{style:{color:"var(--cn-red)",fontSize:13,marginTop:8},children:O})]}),f===2&&t.jsxs("div",{className:"cn-first-run__step",children:[t.jsx("h3",{children:"Add Languages"}),t.jsx("p",{children:"Select additional languages for your consent banner."}),t.jsx(fd,{onComplete:J,onOpenPricingModal:c})]})]}),t.jsxs("div",{className:"cn-first-run__nav",children:[f>0&&t.jsx("button",{className:"cn-button cn-button--outline",onClick:T,type:"button",children:"← Back"}),t.jsxs("div",{className:"cn-first-run__nav-right",children:[!me&&t.jsx("button",{className:"cn-button cn-button--ghost",onClick:Q,type:"button",children:"Skip"}),!me&&t.jsx("button",{className:"cn-button cn-button--primary",onClick:Z,disabled:W,type:"button",children:W?"Saving…":"Next →"}),me&&t.jsx("button",{className:"cn-button cn-button--primary",onClick:J,disabled:I,type:"button",children:I?"Finishing…":"Apply & Finish"})]})]})]})]})}function md(){return"Updated "+new Date().toLocaleDateString("en-US",{month:"short",year:"numeric"})}function gd({consentModes:o={},regulations:i={}}){const c=!!o.google,p=!!(i.ccpa||i.otherus),m=[{tag:"enforcement",tagLabel:"Enforcement",title:"France fined a bakery chain €150,000 for cookie violations",desc:"The bakery’s website used Google Analytics without asking visitors first. The fine was 3× their monthly revenue.",status:c?"You’re protected — Google Analytics is blocked until visitors consent":"Unprotected — enable Google Consent Mode to fix this",statusVariant:c?"ok":"warn"},{tag:"update",tagLabel:"Update",title:"Google ending third-party cookies delayed again",desc:"Google pushed back their timeline to late 2026. Sites that already have consent management won’t need to change anything.",status:"No action needed — your consent banner already handles this",statusVariant:"ok"},{tag:"regulation",tagLabel:"Regulation",title:"New US state privacy laws take effect July 2026",desc:"Four more states are adding GDPR-like requirements. Sites serving US visitors will need consent mechanisms.",status:p?"You’re covered — your banner applies to US visitors":"No US law configured — add CCPA or US States in your regulation settings",statusVariant:p?"ok":"warn"}];return t.jsxs("div",{className:"cn-threat-section",children:[t.jsxs("div",{className:"cn-threat-section__header",children:[t.jsx("span",{className:"cn-threat-section__title",children:"Threat Intelligence"}),t.jsx("span",{className:"cn-threat-section__updated",children:md()})]}),t.jsx("div",{className:"cn-threat-list",children:m.map((f,v)=>t.jsxs("div",{className:"cn-threat-item",children:[t.jsxs("div",{className:"cn-threat-item__title",children:[t.jsx("span",{className:`cn-threat-tag cn-threat-tag--${f.tag}`,children:f.tagLabel}),f.title]}),t.jsx("div",{className:"cn-threat-item__desc",children:f.desc}),t.jsx("div",{className:`cn-threat-item__status cn-threat-item__status--${f.statusVariant}`,children:f.status})]},v))})]})}function It({title:o,onClose:i,children:c,footer:p,scrollTrigger:d,isClosing:g,onExitComplete:m}){const f=j.useRef(null);return j.useEffect(()=>{var v;g||(v=f.current)==null||v.scrollIntoView({behavior:"smooth",block:"start"})},[d,g]),t.jsxs("div",{className:`cn-inline-panel${g?" cn-inline-panel--closing":""}`,ref:f,onTransitionEnd:g?m:void 0,children:[t.jsxs("div",{className:"cn-inline-panel__header",children:[t.jsx("h3",{className:"cn-inline-panel__title",children:o}),t.jsx("button",{className:"cn-inline-panel__dismiss",onClick:i,"aria-label":"Close",children:"×"})]}),t.jsx("div",{className:"cn-inline-panel__body",children:c}),p&&t.jsx("div",{className:"cn-inline-panel__footer",children:p})]})}const ye={loading:"_loading_1lg0v_1",stepContent:"_stepContent_1lg0v_8",stepDesc:"_stepDesc_1lg0v_12",scanSummary:"_scanSummary_1lg0v_19",scanStat:"_scanStat_1lg0v_30",scanStatWarn:"_scanStatWarn_1lg0v_36",scanDivider:"_scanDivider_1lg0v_40",catList:"_catList_1lg0v_45",catSection:"_catSection_1lg0v_51",catHeader:"_catHeader_1lg0v_58",catHeaderLeft:"_catHeaderLeft_1lg0v_73",catDot:"_catDot_1lg0v_79",catName:"_catName_1lg0v_87",catCount:"_catCount_1lg0v_93",catWarnBadge:"_catWarnBadge_1lg0v_98",catChevron:"_catChevron_1lg0v_107",catDesc:"_catDesc_1lg0v_112",catDescInner:"_catDescInner_1lg0v_119",catBody:"_catBody_1lg0v_126",providerRow:"_providerRow_1lg0v_130",providerInfo:"_providerInfo_1lg0v_141",providerName:"_providerName_1lg0v_148",providerUrl:"_providerUrl_1lg0v_154",providerMeta:"_providerMeta_1lg0v_163",patternCount:"_patternCount_1lg0v_170",statusPillOk:"_statusPillOk_1lg0v_175",statusPillWarn:"_statusPillWarn_1lg0v_184",issueBanner:"_issueBanner_1lg0v_193",lastSynced:"_lastSynced_1lg0v_211",portalLink:"_portalLink_1lg0v_219",basicPanel:"_basicPanel_1lg0v_229",basicIcon:"_basicIcon_1lg0v_234",basicTitle:"_basicTitle_1lg0v_239",basicDesc:"_basicDesc_1lg0v_246"},vd=[{id:1,name:"Basic Operations",color:"#20c19e",dot:"green",desc:"Essential for your site to function"},{id:2,name:"Content Personalization",color:"#3b82f6",dot:"blue",desc:"Personalize content for visitors"},{id:3,name:"Site Optimization",color:"#eab308",dot:"yellow",desc:"Measure traffic and performance"},{id:4,name:"Ad Personalization",color:"#ef4444",dot:"red",desc:"Show targeted advertising"}],yd={id:0,name:"Uncategorized",color:"#9ca3af",dot:"gray",desc:"These trackers run before visitors agree — highest compliance risk"};function _d({color:o}){return t.jsx("span",{className:ye.catDot,style:{background:o}})}function xd({provider:o,patternCount:i}){return t.jsxs("div",{className:ye.providerRow,children:[t.jsxs("div",{className:ye.providerInfo,children:[t.jsx("span",{className:ye.providerName,children:o.ProviderName||o.Name||o.ProviderID||"Unknown tracker"}),o.ProviderURL&&t.jsx("span",{className:ye.providerUrl,children:o.ProviderURL})]}),t.jsxs("div",{className:ye.providerMeta,children:[t.jsxs("span",{className:ye.patternCount,children:[i," pattern",i!==1?"s":""]}),o.CategoryID>0?t.jsx("span",{className:ye.statusPillOk,children:"Categorized"}):t.jsx("span",{className:ye.statusPillWarn,children:"Fires without consent"})]})]})}function ii({category:o,providers:i,patterns:c,defaultOpen:p}){const[d,g]=j.useState(p),m=j.useMemo(()=>{const f={};return i.forEach(v=>{f[v.ProviderID]=(c||[]).filter(w=>String(w.ProviderID)===String(v.ProviderID)).length}),f},[i,c]);return t.jsxs("div",{className:ye.catSection,children:[t.jsxs("button",{className:ye.catHeader,onClick:()=>g(f=>!f),type:"button",children:[t.jsxs("div",{className:ye.catHeaderLeft,children:[t.jsx(_d,{color:o.color}),t.jsx("span",{className:ye.catName,children:o.name}),t.jsxs("span",{className:ye.catCount,children:["(",i.length,")"]}),o.id===0&&t.jsx("span",{className:ye.catWarnBadge,children:"Firing without consent"})]}),t.jsx("span",{className:ye.catChevron,children:d?"▾":"▸"})]}),!d&&t.jsx("div",{className:ye.catDesc,children:o.desc}),d&&t.jsxs("div",{className:ye.catBody,children:[t.jsx("div",{className:ye.catDescInner,children:o.desc}),i.map(f=>t.jsx(xd,{provider:f,patternCount:m[f.ProviderID]||0},f.ProviderID))]})]})}function jd({onOpenWelcomeModal:o}){return t.jsxs("div",{className:ye.basicPanel,children:[t.jsx("div",{className:ye.basicIcon,children:"🛡️"}),t.jsx("h4",{className:ye.basicTitle,children:"Your banner shows — but trackers run before visitors agree"}),t.jsx("p",{className:ye.basicDesc,children:"Without tracker protection, trackers like Google Analytics, Meta Pixel, and ad tags run immediately when your page loads — before visitors have a chance to agree or decline. This can violate GDPR, CCPA, and other privacy regulations."}),t.jsx($e,{variant:"primary",onClick:o,children:"Connect to auto-detect and block trackers →"})]})}function wd({onClose:o,onOpenWelcomeModal:i,scrollTrigger:c}){var W,$;const{config:p,isLoadingConfig:d,refetchConfig:g}=Mt(),{isBasic:m}=Be(),f=(p==null?void 0:p.blocking)||{},v=f.providers||[],w=f.patterns||[],[x,S]=j.useState(!1),[L,z]=j.useState(null),C=j.useMemo(()=>{const O={};return v.forEach(K=>{const Q=K.CategoryID||0;O[Q]||(O[Q]=[]),O[Q].push(K)}),O},[v]),P=C[0]||[],N=v.length,D=N-P.length,I=async()=>{S(!0),z(null),v.length;try{await Hu(),await g(),z({text:"Sync complete.",type:"success"})}catch(O){z({text:(O==null?void 0:O.message)||"Sync failed. Please try again.",type:"error"})}finally{S(!1)}};if(m)return t.jsx(It,{title:"Your Trackers",onClose:o,scrollTrigger:c,children:t.jsx(jd,{onOpenWelcomeModal:i})});const A=t.jsxs(t.Fragment,{children:[t.jsx("a",{href:Qe+"/#/autoblocking",target:"_blank",rel:"noopener noreferrer",className:ye.portalLink,children:"Manage trackers in portal"}),t.jsx($e,{variant:"secondary",onClick:I,disabled:x,children:x?"Refreshing…":"Refresh"})]});return t.jsxs(It,{title:"Your Trackers",onClose:o,footer:A,scrollTrigger:c,children:[d&&t.jsx("div",{className:ye.loading,children:"Loading script data…"}),L&&t.jsx("div",{className:ye.stepContent,style:{padding:"6px 0"},children:t.jsx("p",{style:{color:L.type==="error"?"var(--cn-crit-icon, #dc3545)":"var(--cn-ok-icon, #20c19e)",margin:0,fontSize:"var(--cn-text-sm)"},children:L.text})}),!d&&v.length===0&&t.jsx("div",{className:ye.stepContent,children:t.jsx("p",{className:ye.stepDesc,children:f.lastUpdated?"No known trackers found in the provider database for your site. Your banner is active and blocking is configured.":"Your domain was recently added. Tracker data typically populates within 24–48 hours as your configuration syncs. Click Refresh to check now."})}),!d&&v.length>0&&t.jsxs("div",{className:ye.stepContent,children:[t.jsxs("div",{className:ye.scanSummary,children:[t.jsxs("span",{className:ye.scanStat,children:[N," tracker",N!==1?"s":""," detected"]}),t.jsx("span",{className:ye.scanDivider,children:"·"}),t.jsxs("span",{className:ye.scanStat,children:[D," categorized"]}),P.length>0&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:ye.scanDivider,children:"·"}),t.jsxs("span",{className:ye.scanStat+" "+ye.scanStatWarn,children:[P.length," uncategorized"]})]})]}),t.jsx("span",{className:ye.lastSynced,children:f.lastUpdated||(W=window.cnReactData)!=null&&W.lastSynced?`Last refreshed: ${f.lastUpdated||(($=window.cnReactData)==null?void 0:$.lastSynced)}`:"Not yet synced"}),P.length>0&&t.jsxs("div",{className:ye.issueBanner,children:["⚠"," ",P.length," tracker",P.length!==1?"s":""," firing without consent —"," ",t.jsx("a",{href:Qe+"/#/autoblocking",target:"_blank",rel:"noopener noreferrer",children:"manage in portal"})]}),t.jsxs("div",{className:ye.catList,children:[C[0]&&C[0].length>0&&t.jsx(ii,{category:yd,providers:C[0],patterns:w,defaultOpen:!0}),vd.map(O=>{const K=C[O.id]||[];return K.length===0?null:t.jsx(ii,{category:O,providers:K,patterns:w,defaultOpen:!1},O.id)})]})]})]})}function ci({onClose:o,onTemplateApplied:i,scrollTrigger:c,isClosing:p,appliedTemplateKey:d}){const[g,m]=j.useState(!1),[f,v]=j.useState(null),{hasPlatformConfig:w}=mr(),x=!d&&w,S=C=>{if(x&&!f){v(C);return}m(!0),i&&i(C.key||C)},L=()=>{f&&(m(!0),i&&i(f.key||f),v(null))},z=()=>{v(null)};return t.jsx(It,{title:"Banner Template",onClose:o,scrollTrigger:c,isClosing:p,children:f?t.jsxs("div",{className:"cn-wizard-confirm",children:[t.jsx("p",{className:"cn-wizard-confirm__text",children:"Your banner is currently configured in the Admin Portal. Applying this template will override your custom design."}),t.jsxs("div",{className:"cn-wizard-confirm__actions",children:[t.jsx("button",{className:"cn-button cn-button--outline",onClick:z,type:"button",children:"Cancel"}),t.jsx("button",{className:"cn-button cn-button--primary",onClick:L,type:"button",children:"Apply Template"})]})]}):g?t.jsxs("div",{className:"cn-wizard-success",children:[t.jsx("div",{className:"cn-wizard-success__icon",children:"✓"}),t.jsx("h3",{className:"cn-wizard-success__heading",children:"Template applied — your banner is live."}),t.jsx("p",{className:"cn-wizard-success__sub",children:"Customize text, colors, and advanced design in the web app."}),t.jsx("button",{className:"cn-button cn-button--primary",onClick:o,children:"Done"})]}):t.jsx(si,{onApply:S})})}function kd(){const[o,i]=j.useState(()=>{var d;const p=((d=window.cnReactData)==null?void 0:d.selectedLaws)||[];return Array.isArray(p)?p:Object.values(p)});return[o,p=>{i(p),window.cnReactData&&(window.cnReactData.selectedLaws=p)}]}function ui({onClose:o,onSave:i,scrollTrigger:c,isClosing:p}){const[d,g]=kd(),[m,f]=j.useState(""),[v,w]=j.useState(!1),[x,S]=j.useState(""),[L,z]=j.useState(!1);j.useEffect(()=>{var D,I;f(((I=(D=window.cnReactData)==null?void 0:D.options)==null?void 0:I.cn_do_not_sell_url)||""),S("")},[]);const C=async()=>{var D,I;w(!0),S("");try{const A={};d.forEach((W,$)=>{A["cn_laws["+$+"]"]=W}),await In("configure",{...A,cn_revoke_consent:"1"},((D=window.cnReactData)==null?void 0:D.configureNonce)||""),g(d),(I=window.cnReactData)!=null&&I.options&&(window.cnReactData.options.cn_do_not_sell_url=m),z(!0)}catch(A){S(A.message||"Failed to save laws.")}finally{w(!1)}},P=()=>{i&&i(d),o()};if(L)return t.jsx(It,{title:"Privacy Laws",onClose:P,scrollTrigger:c,isClosing:p,children:t.jsxs("div",{className:"cn-wizard-success",children:[t.jsx("div",{className:"cn-wizard-success__icon",children:"✓"}),t.jsx("h3",{className:"cn-wizard-success__heading",children:"Laws updated"}),t.jsx("button",{className:"cn-button cn-button--primary",onClick:P,children:"Done"})]})});const N=t.jsxs(t.Fragment,{children:[t.jsx("a",{href:`${Qe}/#/configuration`,target:"_blank",rel:"noreferrer",className:"cn-layer__link-btn",children:"Manage regulations in web app →"}),t.jsxs("div",{style:{display:"flex",gap:8},children:[t.jsx($e,{variant:"secondary",onClick:o,children:"Cancel"}),t.jsx($e,{variant:"primary",onClick:C,disabled:v,children:v?"Saving…":"Save laws"})]})]});return t.jsxs(It,{title:"Privacy Laws",onClose:o,scrollTrigger:c,isClosing:p,footer:N,children:[t.jsx(ai,{selected:d,onChange:g,dnsUrl:m,onDnsUrlChange:f}),x&&t.jsx("p",{style:{color:"var(--cn-red)",fontSize:13,marginTop:8},children:x})]})}const G={layout:"_layout_19w0d_48",modeList:"_modeList_19w0d_55",modeSection:"_modeSection_19w0d_63",modeSectionLabel:"_modeSectionLabel_19w0d_69",modeCard:"_modeCard_19w0d_79",modeCardActive:"_modeCardActive_19w0d_94",modeCardLocked:"_modeCardLocked_19w0d_100",modeCardProOverlay:"_modeCardProOverlay_19w0d_106",lockIconLarge:"_lockIconLarge_19w0d_121",modeCardProLabel:"_modeCardProLabel_19w0d_125",modeCardTop:"_modeCardTop_19w0d_131",modeCardName:"_modeCardName_19w0d_138",modeCardDesc:"_modeCardDesc_19w0d_144",statusDot:"_statusDot_19w0d_150",statusDotOn:"_statusDotOn_19w0d_158",statusDotOff:"_statusDotOff_19w0d_162",detailCol:"_detailCol_19w0d_166",detail:"_detail_19w0d_166",detailHeader:"_detailHeader_19w0d_179",detailTitle:"_detailTitle_19w0d_186",detailDesc:"_detailDesc_19w0d_192",detailFooter:"_detailFooter_19w0d_199",enableToggle:"_enableToggle_19w0d_207",enableToggleInput:"_enableToggleInput_19w0d_215",enableToggleTrack:"_enableToggleTrack_19w0d_222",enableToggleThumb:"_enableToggleThumb_19w0d_236",enableToggleLabel:"_enableToggleLabel_19w0d_251",signalConfig:"_signalConfig_19w0d_257",signalConfigTitle:"_signalConfigTitle_19w0d_265",groupRow:"_groupRow_19w0d_274",groupLabel:"_groupLabel_19w0d_281",groupSelect:"_groupSelect_19w0d_287",groupHint:"_groupHint_19w0d_305",advancedToggle:"_advancedToggle_19w0d_312",advancedGrid:"_advancedGrid_19w0d_327",advancedRow:"_advancedRow_19w0d_336",advancedLabel:"_advancedLabel_19w0d_343",subToggles:"_subToggles_19w0d_348",subToggleTitle:"_subToggleTitle_19w0d_354",subToggleRow:"_subToggleRow_19w0d_363",proGate:"_proGate_19w0d_373",proGateLink:"_proGateLink_19w0d_387"},_t=[{key:"google",name:"Google Consent Mode v2",shortName:"Google",group:"platform",pro:!1,description:"Required for GDPR compliance if you use Google Analytics, Google Ads, or Tag Manager"},{key:"facebook",name:"Facebook",shortName:"Facebook",group:"platform",pro:!0,description:"Required if you run Facebook Ads — stops Meta Pixel from firing before visitors agree"},{key:"microsoft",name:"Microsoft",shortName:"Microsoft",group:"platform",pro:!0,description:"Required if you use Microsoft Ads or Clarity — keeps Bing and analytics trackers compliant"},{key:"gpc",name:"Global Privacy Control",shortName:"GPC",group:"browser",pro:!0,description:"Honors visitors who’ve told their browser they don’t want to be tracked — required in California"},{key:"dnt",name:"Do Not Track",shortName:"DNT",group:"browser",pro:!1,description:"Honors the legacy ‘Do Not Track’ browser setting — good practice, not legally required"}],Nd=[{value:"passive",label:"Show passive notice",help:"Brief auto-dismiss confirmation that GPC was honored."},{value:"hidden",label:"Silent",help:"No on-screen indication. GPC is honored without notifying the visitor."},{value:"banner",label:"Show full banner",help:"The standard consent banner is still shown, even when GPC fires."}];function fl(o){return o===2?[{value:1,label:"Always (even on Reject)"},{value:4,label:"On Accept"}]:[{value:1,label:"Always (even on Reject)"},{value:3,label:"Balanced or above"},{value:4,label:"Accept All only"}]}function Sd(o,i={}){const c=o.google_consent_default||{},p=o.facebook_consent_default||{},d=o.microsoft_consent_default||{},g=Object.keys(c).length>0,m=Object.keys(p).length>0,f=Object.keys(d).length>0;return{googleEnabled:g,googleAdvertising:c.ad_storage??4,googleAnalytics:c.analytics_storage??3,googleFunctional:c.functionality_storage??3,googleAdStorage:c.ad_storage??4,googleAdPersonalization:c.ad_personalization??4,googleAdUserData:c.ad_user_data??4,googleAnalyticsStorage:c.analytics_storage??3,googleFunctionalityStorage:c.functionality_storage??3,googlePersonalizationStorage:c.personalization_storage??3,googleSecurityStorage:c.security_storage??3,facebookEnabled:m,facebookConsent:p.consent??4,microsoftEnabled:f,microsoftAdStorage:d.ad_storage??4,microsoftAnalyticsStorage:d.analytics_storage??3,microsoftPixie:!!d.pixie,microsoftClarity:!!d.clarity,gpcEnabled:!!(o.gpc_support??0),gpcBannerMode:i.gpcBannerMode||"passive",doNotTrack:!!(o.do_not_track??0)}}function Us(o){return{googleConsentMapAdStorage:o.googleEnabled?o.googleAdStorage:"",googleConsentMapAdPersonalization:o.googleEnabled?o.googleAdPersonalization:"",googleConsentMapAdUserData:o.googleEnabled?o.googleAdUserData:"",googleConsentMapAnalytics:o.googleEnabled?o.googleAnalyticsStorage:"",googleConsentMapFunctionality:o.googleEnabled?o.googleFunctionalityStorage:"",googleConsentMapPersonalization:o.googleEnabled?o.googlePersonalizationStorage:"",googleConsentMapSecurity:o.googleEnabled?o.googleSecurityStorage:"",facebookConsentMapConsent:o.facebookEnabled?o.facebookConsent:"",microsoftConsentMapAdStorage:o.microsoftEnabled?o.microsoftAdStorage:"",microsoftConsentMapAnalyticsStorage:o.microsoftEnabled?o.microsoftAnalyticsStorage:"",microsoftConsentModePixie:o.microsoftPixie?1:0,microsoftConsentModeClarity:o.microsoftClarity?1:0,gpcSupport:o.gpcEnabled?1:0,gpcBannerMode:o.gpcEnabled?o.gpcBannerMode||"passive":"",doNotTrack:o.doNotTrack?1:0}}function di({enabled:o}){return t.jsx("span",{className:`${G.statusDot} ${o?G.statusDotOn:G.statusDotOff}`})}function $s({label:o,value:i,onChange:c,consentChoices:p,disabled:d}){const g=fl(p);return t.jsxs("div",{className:G.groupRow,children:[t.jsx("span",{className:G.groupLabel,children:o}),t.jsx("select",{className:G.groupSelect,value:i,onChange:m=>c(Number(m.target.value)),disabled:d,children:g.map(m=>t.jsx("option",{value:m.value,children:m.label},m.value))})]})}function vr({label:o,checked:i,onChange:c}){return t.jsxs("label",{className:G.enableToggle,children:[t.jsx("input",{type:"checkbox",checked:i,onChange:p=>c(p.target.checked),className:G.enableToggleInput}),t.jsx("span",{className:G.enableToggleTrack,children:t.jsx("span",{className:G.enableToggleThumb})}),t.jsx("span",{className:G.enableToggleLabel,children:o})]})}function hl({locked:o,platformName:i,onUpgrade:c}){return t.jsxs("div",{className:G.proGate,children:[t.jsx("span",{children:o==="pro"?`Upgrade to Pro to enable ${i} Consent Mode.`:`Monthly visit limit reached — ${i} Consent Mode is paused until your visit count resets. Upgrade for unlimited visits.`}),t.jsx("button",{type:"button",className:G.proGateLink,onClick:c,children:"Upgrade →"})]})}function ml({onApply:o,hasChanges:i,saving:c,savedFlash:p,locked:d}){return t.jsx("div",{className:G.detailFooter,children:t.jsx($e,{variant:"primary",size:"sm",onClick:o,disabled:!i||c||d,children:c?"Applying…":p?"Saved ✓":"Apply"})})}function Cd({staged:o,set:i,consentChoices:c,proLocked:p,saving:d,hasChanges:g,savedFlash:m,onApply:f,onUpgrade:v}){const[w,x]=j.useState(!1),S=N=>{i("googleAdvertising",N),i("googleAdStorage",N),i("googleAdPersonalization",N),i("googleAdUserData",N)},L=N=>{i("googleAnalytics",N),i("googleAnalyticsStorage",N)},z=N=>{i("googleFunctional",N),i("googleFunctionalityStorage",N),i("googlePersonalizationStorage",N),i("googleSecurityStorage",N)},C=p,P=fl(c);return t.jsxs("div",{className:G.detail,children:[t.jsxs("div",{className:G.detailHeader,children:[t.jsx("div",{className:G.detailTitle,children:"Google Consent Mode v2"}),C==="pro"&&t.jsx(wn,{})]}),t.jsx("p",{className:G.detailDesc,children:"If you use Google Analytics, Google Ads, or Tag Manager, this tells Google how to handle your visitors’ data based on whether they consented. Required for GDPR compliance with Google tools."}),C?t.jsx(hl,{locked:C,platformName:"Google",onUpgrade:v}):t.jsxs(t.Fragment,{children:[t.jsx(vr,{label:o.googleEnabled?"Enabled":"Disabled",checked:o.googleEnabled,onChange:N=>i("googleEnabled",N)}),o.googleEnabled&&t.jsxs("div",{className:G.signalConfig,children:[t.jsx("div",{className:G.signalConfigTitle,children:"Signal mapping"}),t.jsx($s,{label:"Advertising",value:o.googleAdvertising,onChange:S,consentChoices:c}),t.jsx("p",{className:G.groupHint,children:"ad_storage, ad_personalization, ad_user_data — default: Accept All only. Most conservative."}),t.jsx($s,{label:"Analytics",value:o.googleAnalytics,onChange:L,consentChoices:c}),t.jsx("p",{className:G.groupHint,children:"analytics_storage — default: Balanced or above."}),t.jsx($s,{label:"Functional",value:o.googleFunctional,onChange:z,consentChoices:c}),t.jsx("p",{className:G.groupHint,children:"functionality_storage, personalization_storage, security_storage — default: Balanced or above."}),t.jsx("button",{className:G.advancedToggle,onClick:()=>x(N=>!N),type:"button",children:w?"▾ Hide per-signal controls":"▸ Advanced — per-signal control"}),w&&t.jsx("div",{className:G.advancedGrid,children:[["Ad Storage","googleAdStorage",P],["Ad Personalization","googleAdPersonalization",P],["Ad User Data","googleAdUserData",P],["Analytics Storage","googleAnalyticsStorage",P],["Functionality Storage","googleFunctionalityStorage",P],["Personalization Storage","googlePersonalizationStorage",P],["Security Storage","googleSecurityStorage",P]].map(([N,D,I])=>t.jsxs("div",{className:G.advancedRow,children:[t.jsx("span",{className:G.advancedLabel,children:N}),t.jsx("select",{className:G.groupSelect,value:o[D],onChange:A=>i(D,Number(A.target.value)),children:I.map(A=>t.jsx("option",{value:A.value,children:A.label},A.value))})]},D))})]})]}),t.jsx(ml,{onApply:f,hasChanges:g,saving:d,savedFlash:m,locked:C})]})}function bd({staged:o,set:i,consentChoices:c,proLocked:p,saving:d,hasChanges:g,savedFlash:m,onApply:f,onUpgrade:v}){const w=fl(c);return t.jsxs("div",{className:G.detail,children:[t.jsxs("div",{className:G.detailHeader,children:[t.jsx("div",{className:G.detailTitle,children:"Facebook"}),p==="pro"&&t.jsx(wn,{})]}),t.jsx("p",{className:G.detailDesc,children:"Stops the Meta Pixel from tracking your visitors until they agree. Without this, Facebook can receive data about visitors who never consented — a GDPR violation if you serve EU visitors."}),p?t.jsx(hl,{locked:p,platformName:"Facebook",onUpgrade:v}):t.jsxs(t.Fragment,{children:[t.jsx(vr,{label:o.facebookEnabled?"Enabled":"Disabled",checked:o.facebookEnabled,onChange:x=>i("facebookEnabled",x)}),o.facebookEnabled&&t.jsxs("div",{className:G.signalConfig,children:[t.jsx("div",{className:G.signalConfigTitle,children:"Signal mapping"}),t.jsxs("div",{className:G.groupRow,children:[t.jsx("span",{className:G.groupLabel,children:"Grant Pixel at"}),t.jsx("select",{className:G.groupSelect,value:o.facebookConsent,onChange:x=>i("facebookConsent",Number(x.target.value)),children:w.map(x=>t.jsx("option",{value:x.value,children:x.label},x.value))})]}),t.jsx("p",{className:G.groupHint,children:"Default: Accept All only."})]})]}),t.jsx(ml,{onApply:f,hasChanges:g,saving:d,savedFlash:m,locked:p})]})}function Ld({staged:o,set:i,consentChoices:c,proLocked:p,saving:d,hasChanges:g,savedFlash:m,onApply:f,onUpgrade:v}){const w=fl(c);return t.jsxs("div",{className:G.detail,children:[t.jsxs("div",{className:G.detailHeader,children:[t.jsx("div",{className:G.detailTitle,children:"Microsoft"}),p==="pro"&&t.jsx(wn,{})]}),t.jsx("p",{className:G.detailDesc,children:"Keeps Microsoft Advertising (Bing) and Clarity analytics compliant with consent rules. Trackers only fire after visitors agree."}),p?t.jsx(hl,{locked:p,platformName:"Microsoft",onUpgrade:v}):t.jsxs(t.Fragment,{children:[t.jsx(vr,{label:o.microsoftEnabled?"Enabled":"Disabled",checked:o.microsoftEnabled,onChange:x=>i("microsoftEnabled",x)}),o.microsoftEnabled&&t.jsxs("div",{className:G.signalConfig,children:[t.jsx("div",{className:G.signalConfigTitle,children:"Signal mapping"}),t.jsxs("div",{className:G.groupRow,children:[t.jsx("span",{className:G.groupLabel,children:"Advertising (UET)"}),t.jsx("select",{className:G.groupSelect,value:o.microsoftAdStorage,onChange:x=>i("microsoftAdStorage",Number(x.target.value)),children:w.map(x=>t.jsx("option",{value:x.value,children:x.label},x.value))})]}),t.jsxs("div",{className:G.groupRow,style:{marginTop:8},children:[t.jsx("span",{className:G.groupLabel,children:"Analytics"}),t.jsx("select",{className:G.groupSelect,value:o.microsoftAnalyticsStorage,onChange:x=>i("microsoftAnalyticsStorage",Number(x.target.value)),children:w.map(x=>t.jsx("option",{value:x.value,children:x.label},x.value))})]}),t.jsxs("div",{className:G.subToggles,children:[t.jsx("div",{className:G.subToggleTitle,children:"Sub-products"}),t.jsxs("label",{className:G.subToggleRow,children:[t.jsx("input",{type:"checkbox",checked:o.microsoftPixie,onChange:x=>i("microsoftPixie",x.target.checked)}),t.jsx("span",{children:"Pixie"})]}),t.jsxs("label",{className:G.subToggleRow,children:[t.jsx("input",{type:"checkbox",checked:o.microsoftClarity,onChange:x=>i("microsoftClarity",x.target.checked)}),t.jsx("span",{children:"Clarity"})]})]})]})]}),t.jsx(ml,{onApply:f,hasChanges:g,saving:d,savedFlash:m,locked:p})]})}function Pd({staged:o,set:i,saving:c,hasChanges:p,savedFlash:d,onApply:g,proLocked:m,onUpgrade:f,grandfathered:v}){const w=o.gpcBannerMode||"passive";return t.jsxs("div",{className:G.detail,children:[t.jsxs("div",{className:G.detailHeader,children:[t.jsx("div",{className:G.detailTitle,children:"Global Privacy Control (GPC)"}),m==="pro"&&t.jsx(wn,{})]}),m?t.jsxs(t.Fragment,{children:[t.jsx("p",{className:G.detailDesc,children:"Honors visitors who’ve told their browser they don’t want to be tracked. Required for CCPA / CPRA compliance."}),t.jsx(hl,{locked:m,platformName:"Global Privacy Control",onUpgrade:f}),t.jsx(ml,{onApply:g,hasChanges:p,saving:c,savedFlash:d,locked:m})]}):t.jsxs(t.Fragment,{children:[t.jsx(vr,{label:o.gpcEnabled?"Enabled":"Disabled",checked:o.gpcEnabled,onChange:x=>i("gpcEnabled",x)}),v&&t.jsx("p",{className:G.detailDesc,style:{marginTop:8,fontStyle:"italic"},children:"GPC is now a Pro feature. Your site keeps it because it was already enabled. If you turn it off, you’ll need Pro to re-enable it."}),o.gpcEnabled&&t.jsxs("fieldset",{style:{marginTop:16,padding:0,border:0},children:[t.jsx("legend",{className:G.detailDesc,style:{padding:0,marginBottom:8,fontWeight:600},children:"When GPC fires, what should visitors see?"}),Nd.map(x=>t.jsxs("label",{style:{display:"flex",alignItems:"flex-start",gap:8,padding:"6px 0",cursor:"pointer"},children:[t.jsx("input",{type:"radio",name:"gpcBannerMode",value:x.value,checked:w===x.value,onChange:()=>i("gpcBannerMode",x.value),style:{marginTop:3}}),t.jsxs("span",{children:[t.jsx("span",{style:{fontWeight:500},children:x.label}),t.jsx("span",{className:G.detailDesc,style:{display:"block",marginTop:2},children:x.help})]})]},x.value))]}),t.jsx("p",{className:G.detailDesc,style:{marginTop:16},children:"Some visitors set their browser to automatically opt out of tracking. This setting respects that choice — and it’s legally required in California (CPRA). When a visitor sends this signal, tracking is blocked automatically."}),t.jsx("div",{className:G.detailFooter,children:t.jsx($e,{variant:"primary",size:"sm",onClick:g,disabled:!p||c,children:c?"Applying…":d?"Saved ✓":"Apply"})})]})]})}function Ed({staged:o,set:i,saving:c,hasChanges:p,savedFlash:d,onApply:g}){return t.jsxs("div",{className:G.detail,children:[t.jsx("div",{className:G.detailHeader,children:t.jsx("div",{className:G.detailTitle,children:"Do Not Track (DNT)"})}),t.jsx("p",{className:G.detailDesc,style:{color:"#b56e00",marginBottom:12},children:"Do Not Track is an older browser setting that most sites ignore. Enabling this is a good-faith gesture but isn’t required by any law. When a visitor has DNT enabled, tracking is blocked automatically."}),t.jsx(vr,{label:o.doNotTrack?"Enabled":"Disabled",checked:o.doNotTrack,onChange:m=>i("doNotTrack",m)}),t.jsxs("p",{className:G.detailDesc,style:{marginTop:12},children:["When enabled, visitors with DNT set receive ",t.jsx("strong",{children:"Private (level 1)"})," consent automatically."]}),t.jsx("div",{className:G.detailFooter,children:t.jsx($e,{variant:"primary",size:"sm",onClick:g,disabled:!p||c,children:c?"Applying…":d?"Saved ✓":"Apply"})})]})}function pi({isOpen:o,onClose:i,isWizard:c=!1,addNotice:p,onOpenPricingModal:d,onApplied:g,scrollTrigger:m}){var oe,fe;const{config:f,refetchConfig:v}=Mt(),{dashboard:w}=vt(),{tier:x}=Be(),S=(f==null?void 0:f.blocking)||{},L=(f==null?void 0:f.config)||{},z=((oe=w==null?void 0:w.appConfig)==null?void 0:oe.consentChoices)??3,[C,P]=j.useState({}),[N,D]=j.useState("google"),[I,A]=j.useState(!1),[W,$]=j.useState(null),[O,K]=j.useState(!1),Q=j.useRef(null);if(j.useEffect(()=>{if(c?f:o){const Y=Sd(S,L);P(Y),$(JSON.stringify(Us(Y))),D("google")}},[c?f:o,f]),!c&&!o)return null;const Z=(Y,ve)=>P(je=>({...je,[Y]:ve})),T=JSON.stringify(Us(C)),J=T!==W,me=async()=>{A(!0),K(!1);try{await ul({googleConsentMode:C.googleEnabled?"1":"0",facebookConsentMode:C.facebookEnabled?"1":"0",microsoftConsentMode:C.microsoftEnabled?"1":"0"},{},Us(C)),$(T),g&&g({google:C.googleEnabled,facebook:C.facebookEnabled,microsoft:C.microsoftEnabled,gpc:C.gpcEnabled,dnt:C.doNotTrack}),K(!0),clearTimeout(Q.current),Q.current=setTimeout(()=>K(!1),2e3),v()}catch(Y){p&&p((Y==null?void 0:Y.message)||"Could not save — please try again.")}finally{A(!1)}},te=(fe=w==null?void 0:w.analytics)==null?void 0:fe.cycleUsage,ee=(te==null?void 0:te.visits)||0,ie=(te==null?void 0:te.threshold)||0,ge=ie>0&&ee>=ie,_e=x==="pro",V=!!L.gpcSupportMode,ae=Y=>Y.key==="gpc"&&Y.pro&&!_e&&!V||Y.pro&&!_e&&Y.key!=="gpc"?"pro":Y.key==="google"&&ge?"threshold":!1,q={google:C.googleEnabled,facebook:C.facebookEnabled,microsoft:C.microsoftEnabled,gpc:C.gpcEnabled,dnt:C.doNotTrack},k=t.jsxs("div",{className:G.layout,children:[t.jsxs("div",{className:G.modeList,children:[t.jsxs("div",{className:G.modeSection,children:[t.jsx("div",{className:G.modeSectionLabel,children:"Platform Integrations"}),_t.filter(Y=>Y.group==="platform").map(Y=>{const ve=ae(Y);return t.jsxs("button",{className:G.modeCard+(N===Y.key?" "+G.modeCardActive:"")+(ve?" "+G.modeCardLocked:""),onClick:()=>D(Y.key),type:"button",children:[t.jsxs("div",{className:G.modeCardTop,children:[t.jsx("span",{className:G.modeCardName,children:Y.name}),ve==="pro"?t.jsx(wn,{}):t.jsx(di,{enabled:q[Y.key]})]}),t.jsx("div",{className:G.modeCardDesc,children:Y.description}),ve&&t.jsxs("div",{className:G.modeCardProOverlay,role:"button",tabIndex:0,onClick:je=>{je.stopPropagation(),d&&d()},onKeyDown:je=>{(je.key==="Enter"||je.key===" ")&&(je.stopPropagation(),d&&d())},"aria-label":ve==="pro"?`${Y.name} requires Pro.`:`${Y.name} paused — visit limit reached. Upgrade for unlimited visits.`,children:[t.jsx("span",{className:G.lockIconLarge,children:"🔒"}),t.jsx("span",{className:G.modeCardProLabel,children:ve==="pro"?"Upgrade to Pro →":"Visit limit reached →"})]})]},Y.key)})]}),t.jsxs("div",{className:G.modeSection,children:[t.jsx("div",{className:G.modeSectionLabel,children:"Browser Signals"}),_t.filter(Y=>Y.group==="browser").map(Y=>t.jsxs("button",{className:G.modeCard+(N===Y.key?" "+G.modeCardActive:""),onClick:()=>D(Y.key),type:"button",children:[t.jsxs("div",{className:G.modeCardTop,children:[t.jsx("span",{className:G.modeCardName,children:Y.name}),t.jsx(di,{enabled:q[Y.key]})]}),t.jsx("div",{className:G.modeCardDesc,children:Y.description})]},Y.key))]})]}),t.jsxs("div",{className:G.detailCol,children:[N==="google"&&t.jsx(Cd,{staged:C,set:Z,consentChoices:z,proLocked:ae(_t.find(Y=>Y.key==="google")),saving:I,hasChanges:J,savedFlash:O,onApply:me,onUpgrade:()=>d&&d()}),N==="facebook"&&t.jsx(bd,{staged:C,set:Z,consentChoices:z,proLocked:ae(_t.find(Y=>Y.key==="facebook")),saving:I,hasChanges:J,savedFlash:O,onApply:me,onUpgrade:()=>d&&d()}),N==="microsoft"&&t.jsx(Ld,{staged:C,set:Z,consentChoices:z,proLocked:ae(_t.find(Y=>Y.key==="microsoft")),saving:I,hasChanges:J,savedFlash:O,onApply:me,onUpgrade:()=>d&&d()}),N==="gpc"&&t.jsx(Pd,{staged:C,set:Z,proLocked:ae(_t.find(Y=>Y.key==="gpc")),grandfathered:V,saving:I,hasChanges:J,savedFlash:O,onApply:me,onUpgrade:()=>d&&d()}),N==="dnt"&&t.jsx(Ed,{staged:C,set:Z,saving:I,hasChanges:J,savedFlash:O,onApply:me})]})]}),M=_t.filter(Y=>q[Y.key]).map(Y=>Y.shortName),de=M.length>0?`${M.length} active: ${M.join(", ")}`:"No consent modes enabled",he=t.jsxs(t.Fragment,{children:[t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[t.jsx("a",{href:`${Qe}/#/configuration`,target:"_blank",rel:"noreferrer",className:"cn-layer__link-btn",children:"Advanced settings in web app →"}),t.jsxs("span",{style:{fontSize:"var(--cn-text-sm)",color:M.length>0?"var(--cn-ok-icon)":"var(--cn-off-val)"},children:[M.length>0?"✓ ":"",de]})]}),t.jsx($e,{variant:"primary",onClick:i,children:"Done"})]});return c?k:t.jsx(It,{title:"Consent Protection Settings",onClose:i,scrollTrigger:m,footer:he,children:k})}function Dd({addNotice:o,onOpenWelcomeModal:i,onOpenPricingModal:c,onTabChange:p,appliedTemplateKey:d,onTemplateApplied:g}){var Ut,wt,Nr,qn,Zn,_l,Sr,Cr,xl,$t,Wt;const{tier:m}=Be(),{dashboard:f}=vt(),{config:v,isLoadingConfig:w,refetchConfig:x}=Mt(),{hasPlatformConfig:S,showBannerWizard:L,bannerScrollTrigger:z,bannerClosing:C,closeBannerWizard:P,showLawWizard:N,lawScrollTrigger:D,lawClosing:I,closeLawWizard:A,showConsentPanel:W,consentScrollTrigger:$,consentClosing:O,closeConsentPanel:K,openBannerWizard:Q,openConsentPanel:Z,openLawWizard:T}=mr(),[J,me]=j.useState(((wt=(Ut=window.cnReactData)==null?void 0:Ut.options)==null?void 0:wt.app_id)||""),[te,ee]=j.useState(((qn=(Nr=window.cnReactData)==null?void 0:Nr.options)==null?void 0:qn.app_key)||""),[ie,ge]=j.useState(!1),[_e,V]=j.useState(""),ae=async()=>{ge(!0),V("");try{await Ms({app_id:J,app_key:te});try{const Te=await In("sync_config");if(Te!=null&&Te.success){try{await Is()}catch{}try{localStorage.setItem(zs(J),"1"),localStorage.setItem(As(J),"1")}catch{}}}catch{}window.location.reload()}catch(Te){V(Te.message||"Save failed"),ge(!1)}},q=d||"",k=Te=>{g&&g(Te)},[M,de]=j.useState(!1),[he,oe]=j.useState(0),fe=f==null?void 0:f.analytics,Y=(f==null?void 0:f.appConfig)||{},ve=(v==null?void 0:v.blocking)||{},je=qo(ve),{total:Je,uncategorized:Dn}=Zo(ve),vl=!!((_l=(Zn=window.cnReactData)==null?void 0:Zn.options)!=null&&_l.app_blocking),kn=fe==null?void 0:fe.cycleUsage,_r=(kn==null?void 0:kn.visits)||0,yl=(kn==null?void 0:kn.threshold)||0;if(m==="basic")return t.jsxs(yt,{sidebar:t.jsxs(t.Fragment,{children:[t.jsxs(Fn,{title:"Domain Info",children:[t.jsxs("div",{className:"cn-dom-rows",children:[t.jsxs("div",{className:"cn-dom-row",children:[t.jsx("span",{className:"cn-dom-row__k",children:"Domain"}),t.jsx("span",{className:"cn-dom-row__v",children:window.location.hostname})]}),t.jsxs("div",{className:"cn-dom-row",children:[t.jsx("span",{className:"cn-dom-row__k",children:"Status"}),t.jsxs("span",{className:"cn-dom-row__v",children:[t.jsx("span",{className:"cn-dot cn-dot--gray"})," Not Connected"]})]})]}),t.jsx(Se,{label:"App ID",value:J,onChange:me,placeholder:"Your application ID",autoComplete:"off"}),t.jsx(Se,{label:"Secret Key",type:"password",value:te,onChange:ee,placeholder:"Your application key",autoComplete:"new-password"}),t.jsxs("p",{className:"cn-conn-hint cn-conn-hint--returning",children:["Already have an account?"," ",t.jsx("a",{href:Qe,target:"_blank",rel:"noopener noreferrer",children:"Find your App ID and Secret Key at app.hu-manity.co"})]}),_e&&t.jsx("div",{className:"cn-conn-error",children:_e}),t.jsx($e,{variant:"primary",onClick:ae,disabled:ie,children:ie?"Saving…":"Connect Your Site"})]}),t.jsxs(Fn,{title:"What you get with compliance",children:[t.jsxs("ul",{className:"cn-benefit-list",children:[t.jsxs("li",{className:"cn-benefit-item",children:[t.jsx("span",{className:"cn-benefit-icon",children:"✓"}),t.jsx("span",{children:"Stop tracking scripts from firing before visitors agree"})]}),t.jsxs("li",{className:"cn-benefit-item",children:[t.jsx("span",{className:"cn-benefit-icon",children:"✓"}),t.jsx("span",{children:"Build a legal evidence trail regulators can verify"})]}),t.jsxs("li",{className:"cn-benefit-item",children:[t.jsx("span",{className:"cn-benefit-icon",children:"✓"}),t.jsx("span",{children:"Cover GDPR, CCPA, and 40+ global regulations automatically"})]}),t.jsxs("li",{className:"cn-benefit-item",children:[t.jsx("span",{className:"cn-benefit-icon",children:"✓"}),t.jsx("span",{children:"Real compliance in under 60 seconds — free to start"})]})]}),t.jsxs("div",{className:"cn-connect-cta",children:[t.jsx("button",{type:"button",className:"cn-button cn-button--primary cn-button--block",onClick:()=>i&&i(),children:"Set up compliance →"}),t.jsx("div",{className:"cn-connect-cta__caption",children:"No credit card required"})]})]})]}),children:[t.jsx(nd,{onActivate:()=>i&&i()}),t.jsx(Jo,{requiredTier:"free",message:"Script blocking, consent records, regulatory alerts & more",onCta:i,children:t.jsx("div",{className:"cn-pro-gate-placeholder",children:t.jsx("div",{className:"cn-placeholder-charts"})})})]});const xr=((Sr=window.cnReactData)==null?void 0:Sr.siteUrl)||"",Ft=Yo(Y.regulations),jr=Ft.map(Te=>Fs[Te]||Te.toUpperCase()),Bt=Au((xl=(Cr=window.cnReactData)==null?void 0:Cr.options)==null?void 0:xl.app_id),[jt,Qn]=j.useState(()=>{try{const Te=localStorage.getItem(Bt)==="1";return Te&&localStorage.removeItem(Bt),Te}catch{return!1}}),Ot=xr&&q?`${xr}?cn_preview=1`:"",wr=((($t=window.cnReactData)==null?void 0:$t.detectedPlugins)||[]).includes("google"),Yn=[];!q&&!S&&Yn.push("banner template"),jr.length===0&&!S&&Yn.push("laws"),Dn>0&&Yn.push(`${Dn} uncategorized tracker${Dn!==1?"s":""}`),wr&&!je.google&&Yn.push("Google Consent Mode review");const kr=Yn.slice(0,3);return t.jsxs(yt,{sidebar:t.jsxs(t.Fragment,{children:[t.jsx(dl,{addNotice:o}),t.jsx(li,{onOpenPricingModal:()=>c&&c()})]}),children:[t.jsx(td,{sessionUsed:_r,sessionTotal:yl,activeLawsCount:jr.length,uncategorizedScripts:Dn,autoblockingEnabled:vl}),jt&&t.jsxs("div",{className:"cn-inline-notice cn-inline-notice--success",children:[t.jsxs("div",{className:"cn-inline-notice__message",children:[t.jsx("strong",{children:"✓ Your banner is live."})," ","Visitors will now see your selected template and your chosen laws/languages are active."]}),t.jsxs("div",{className:"cn-inline-notice__actions",children:[Ot&&t.jsx("a",{className:"cn-layer__link-btn",href:Ot,target:"_blank",rel:"noreferrer",children:"Preview your live banner →"}),t.jsx("button",{type:"button",className:"cn-layer__link-btn",onClick:()=>Qn(!1),children:"Dismiss"})]})]}),kr.length>0&&t.jsx("div",{className:"cn-inline-notice cn-inline-notice--info",children:t.jsxs("div",{className:"cn-inline-notice__message",children:[t.jsx("strong",{children:"Still missing:"})," ",kr.join(", "),"."]})}),wr&&!je.google&&t.jsxs("div",{className:"cn-inline-notice cn-inline-notice--warning",children:[t.jsxs("div",{className:"cn-inline-notice__message",children:[t.jsx("strong",{children:"Google tools detected."})," ","Review Google Consent Mode before you consider setup complete."]}),t.jsx("button",{type:"button",className:"cn-layer__link-btn",onClick:()=>Z(),children:"Review consent modes →"})]}),t.jsx(hd,{onTemplateApplied:Te=>k(Te),initialLaws:Ft,onOpenPricingModal:c,totalScripts:Je,uncategorizedScripts:Dn,isLoadingConfig:w}),M&&t.jsx(wd,{onClose:()=>{de(!1),x()},onOpenWelcomeModal:i,scrollTrigger:he}),!M&&t.jsx(ti,{appliedTemplateKey:q,onTemplateApplied:g,siteUrl:((Wt=window.cnReactData)==null?void 0:Wt.siteUrl)||"",onOpenTrackers:()=>{de(!0),oe(Te=>Te+1)},onTabChange:p}),L&&t.jsx(ci,{onClose:P,onTemplateApplied:Te=>{k(Te),P()},scrollTrigger:z,isClosing:C,appliedTemplateKey:q}),W&&t.jsx(pi,{isOpen:!0,onClose:K,addNotice:o,onOpenPricingModal:c,onApplied:()=>{},scrollTrigger:$,isClosing:O}),N&&t.jsx(ui,{onClose:A,scrollTrigger:D,isClosing:I}),t.jsx(gd,{consentModes:je,regulations:Y.regulations||{}})]})}function fi(o,i){const[c,p]=j.useState(null),[d,g]=j.useState(!0),[m,f]=j.useState(null),v=j.useRef(null),w=j.useCallback(async()=>{if(v.current){p(v.current),g(!1);return}g(!0),f(null);try{const S=await o(i);v.current=S,p(S)}catch(S){f(S.message||"An error occurred")}finally{g(!1)}},[o,i]);j.useEffect(()=>{w()},[w]);const x=j.useCallback(()=>{v.current=null,w()},[w]);return{data:c,loading:d,error:m,refetch:x}}function Td(){return fi(Iu)}function Rd(){return fi(Fu)}function zd(){const o=(window.cnReactData||{}).options||{},[i,c]=j.useState(o),[p,d]=j.useState(!1),[g,m]=j.useState(null),[f,v]=j.useState(!1),w=j.useCallback((L,z)=>{c(C=>({...C,[L]:z})),v(!1)},[]),x=j.useCallback((L,z,C)=>{c(P=>({...P,[L]:{...P[L]||{},[z]:C}})),v(!1)},[]),S=j.useCallback(async()=>{d(!0),m(null),v(!1);try{const L={};return Object.entries(i).forEach(([z,C])=>{z==="see_more_opt"&&typeof C=="object"?(L["see_more_opt[text]"]=C.text||"",L["see_more_opt[link_type]"]=C.link_type||"page",L["see_more_opt[id]"]=C.id||0,L["see_more_opt[link]"]=C.link||"",L["see_more_opt[sync]"]=C.sync?"1":""):z==="colors"&&typeof C=="object"?(L.bar_opacity=C.bar_opacity||100,L.color_bar=C.bar||"",L.color_text=C.text||"",L.color_button=C.button||""):z==="conditional_rules"?L[z]=JSON.stringify(C||[]):z==="excluded_handles"?L[z]=Array.isArray(C)?C.join(` +`):C||"":z==="refuse_code"||z==="refuse_code_head"?L[z]=C||"":typeof C=="boolean"?L[z]=C?"1":"":L[z]=C}),await Ms(L),window.cnReactData&&(window.cnReactData.options={...i}),v(!0),!0}catch(L){return m(L.message||"Save failed"),!1}finally{d(!1)}},[i]);return{options:i,update:w,updateNested:x,save:S,loading:p,error:g,saved:f}}function Ad(){const[o,i]=j.useState(!1),[c,p]=j.useState(null);return{exportCsv:j.useCallback(async g=>{i(!0),p(null);try{const m=await Ou(g);if(m.csv){const f=new Blob([m.csv],{type:"text/csv;charset=utf-8;"}),v=URL.createObjectURL(f),w=document.createElement("a");w.href=v,w.download=`consent-logs-${g.start_date||"export"}.csv`,w.click(),URL.revokeObjectURL(v)}return m}catch(m){throw p(m.message||"Export failed"),m}finally{i(!1)}},[]),loading:o,error:c}}const Md=[{key:"top",label:"Top",posClass:"pos-top"},{key:"bottom",label:"Bottom",posClass:"pos-bottom"}],Id=[{key:"top",label:"Top",posClass:"pos-top"},{key:"bottom",label:"Bottom",posClass:"pos-bottom"},{key:"left",label:"Left",posClass:"pos-left"},{key:"right",label:"Right",posClass:"pos-right"},{key:"center",label:"Popup",posClass:"pos-center",proOnly:!0}];function Fd({options:o,update:i,save:c,loading:p,saved:d,error:g}){const{isBasic:m,isPro:f}=Be(),v=m?Md:Id,[w,x]=j.useState(!1),[S,L]=j.useState(!1),[z,C]=j.useState(""),[P,N]=j.useState(!1),[D,I]=j.useState(o.displayType||"fixed"),A=Z=>{const T=o.position||"bottom";Z!==T&&(m?(i("position",Z),x(!0)):(L(!0),C(""),N(!1),ul({position:Z,displayType:D}).then(()=>{N(!0),i("position",Z)}).catch(J=>C(J.message||"Save failed.")).finally(()=>L(!1))))},W=Z=>{Z!==D&&(I(Z),m?(i("displayType",Z),x(!0)):(L(!0),C(""),N(!1),ul({position:o.position||"bottom",displayType:Z}).then(()=>{N(!0),i("displayType",Z)}).catch(T=>C(T.message||"Save failed.")).finally(()=>L(!1))))};j.useEffect(()=>{w&&m&&(x(!1),c())},[o.position,o.displayType,w,c,m]);const $=o.position||"bottom",O=m?p:S,K=m?d:P,Q=m?g:z;return t.jsxs("div",{className:"cn-banner-selector",children:[t.jsxs("div",{className:"cn-banner-selector__header",children:[t.jsx("span",{className:"cn-section-label",children:"Banner Position"}),K&&t.jsx("span",{className:"cn-saved-indicator",children:"✓ Saved"}),Q&&t.jsx("span",{className:"cn-error-indicator",children:Q})]}),!m&&t.jsx(t.Fragment,{children:t.jsxs("div",{className:"cn-banner-selector__toggle-row",children:[t.jsx("span",{className:"cn-banner-selector__size-label",children:"Banner Size"}),t.jsxs("div",{className:"cn-banner-selector__size-opts",children:[t.jsx("button",{className:`cn-banner-selector__size-opt${D==="floating"?" cn-banner-selector__size-opt--on":""}`,onClick:()=>W("floating"),children:"Floating"}),t.jsx("button",{className:`cn-banner-selector__size-opt${D==="fixed"?" cn-banner-selector__size-opt--on":""}`,onClick:()=>W("fixed"),children:"Fixed"})]}),t.jsx("span",{className:"cn-banner-selector__size-desc",children:D==="floating"?"Fills only as much space as necessary.":"Expands to fill all available space."})]})}),t.jsx("div",{className:`cn-banner-selector__grid${!m&&D==="floating"?" cn-banner-selector__grid--floating":""}`,children:v.map(Z=>{const T=Z.proOnly&&!f;return t.jsxs("div",{className:"cn-banner-selector__card"+($===Z.key?" cn-banner-selector__card--active":"")+(O&&!T?" cn-banner-selector__card--saving":"")+(T?" cn-banner-selector__card--locked":""),onClick:()=>!T&&A(Z.key),title:T?"Upgrade to Pro to use the Popup position":void 0,children:[T&&t.jsx("span",{className:"cn-banner-selector__pro-badge",children:t.jsx(wn,{})}),t.jsx("div",{className:"cn-banner-selector__thumb",children:t.jsx("div",{className:`cn-banner-selector__pos ${Z.posClass}${T?" cn-banner-selector__pos--locked":""}`})}),t.jsxs("div",{className:"cn-banner-selector__meta",children:[t.jsx("span",{className:"cn-banner-selector__name",children:Z.label}),$===Z.key&&!T&&t.jsx("span",{className:"cn-banner-selector__active-pill",children:"Active"}),T&&t.jsx("span",{className:"cn-banner-selector__locked-label",children:"Pro only"})]})]},Z.key)})}),!m&&t.jsx("div",{className:"cn-banner-selector__portal-link",children:t.jsx("a",{href:`${Qe}/#/configuration`,target:"_blank",rel:"noopener noreferrer",children:"Customize in Admin Portal →"})})]})}const Ws={size:24,color:"currentColor"};function un({size:o,color:i,className:c,style:p}={},d){return{xmlns:"http://www.w3.org/2000/svg",width:o||Ws.size,height:o||Ws.size,viewBox:"0 0 24 24",fill:"none",stroke:i||Ws.color,strokeWidth:1.75,strokeLinecap:"round",strokeLinejoin:"round",className:c||"",style:p,...d}}function Bd(o){return t.jsxs("svg",{...un(o),children:[t.jsx("path",{d:"M12 2L3 6v5.5c0 4.5 3.8 8.7 9 10 5.2-1.3 9-5.5 9-10V6l-9-4z"}),t.jsx("polyline",{points:"8.5 12 11 14.5 15.5 9.5"})]})}function Od(o){return t.jsxs("svg",{...un(o),children:[t.jsx("circle",{cx:"12",cy:"12",r:"10"}),t.jsx("ellipse",{cx:"12",cy:"12",rx:"4",ry:"10"}),t.jsx("line",{x1:"2",y1:"12",x2:"22",y2:"12"})]})}function Ud(o){return t.jsxs("svg",{...un(o),children:[t.jsx("rect",{x:"4",y:"14",width:"4",height:"7",rx:"1"}),t.jsx("rect",{x:"10",y:"9",width:"4",height:"12",rx:"1"}),t.jsx("rect",{x:"16",y:"4",width:"4",height:"17",rx:"1"})]})}function hi(o){return t.jsxs("svg",{...un(o),children:[t.jsx("rect",{x:"5",y:"2",width:"14",height:"20",rx:"2"}),t.jsx("line",{x1:"9",y1:"8",x2:"15",y2:"8"}),t.jsx("line",{x1:"9",y1:"12",x2:"15",y2:"12"}),t.jsx("line",{x1:"9",y1:"16",x2:"13",y2:"16"})]})}function Gs(o){return t.jsxs("svg",{...un(o),children:[t.jsx("rect",{x:"5",y:"11",width:"14",height:"10",rx:"2"}),t.jsx("path",{d:"M8 11V7a4 4 0 0 1 8 0v4"})]})}function mi(o){return t.jsxs("svg",{...un(o),children:[t.jsx("circle",{cx:"12",cy:"12",r:"10"}),t.jsx("path",{d:"M9 12l2 2 4-4"})]})}function gi(o){return t.jsxs("svg",{...un(o),children:[t.jsx("path",{d:"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"}),t.jsx("line",{x1:"12",y1:"9",x2:"12",y2:"13"}),t.jsx("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})]})}function $d(o){return t.jsxs("svg",{...un(o),children:[t.jsx("circle",{cx:"12",cy:"12",r:"3"}),t.jsx("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09a1.65 1.65 0 0 0-1.08-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09a1.65 1.65 0 0 0 1.51-1.08 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1.08z"})]})}function Wd(o){return t.jsxs("svg",{...un(o),children:[t.jsx("line",{x1:"12",y1:"3",x2:"12",y2:"21"}),t.jsx("line",{x1:"9",y1:"21",x2:"15",y2:"21"}),t.jsx("line",{x1:"3.5",y1:"8",x2:"20.5",y2:"8"}),t.jsx("line",{x1:"3.5",y1:"8",x2:"3.5",y2:"13"}),t.jsx("path",{d:"M1.5 13Q3.5 16.5 5.5 13"}),t.jsx("line",{x1:"20.5",y1:"8",x2:"20.5",y2:"13"}),t.jsx("path",{d:"M18.5 13Q20.5 16.5 22.5 13"})]})}function Gd(o){return t.jsx("svg",{...un(o),children:t.jsx("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"})})}function Hd(o){return t.jsxs("svg",{...un(o),children:[t.jsx("rect",{x:"2",y:"2",width:"20",height:"16",rx:"2.5"}),t.jsx("line",{x1:"2",y1:"13",x2:"22",y2:"13"}),t.jsx("line",{x1:"6",y1:"7",x2:"11",y2:"7"}),t.jsx("line",{x1:"6",y1:"10",x2:"9",y2:"10"}),t.jsx("rect",{x:"14",y:"14.5",width:"5",height:"2",rx:"1",fill:"currentColor",stroke:"none"}),t.jsx("line",{x1:"4",y1:"15.5",x2:"10",y2:"15.5"})]})}function Vd(o){return t.jsx("svg",{...un(o),children:t.jsx("polyline",{points:"6 9 12 15 18 9"})})}function Kd(o){return t.jsxs("svg",{...un(o),children:[t.jsx("path",{d:"M7 15l5 5 5-5"}),t.jsx("path",{d:"M7 9l5-5 5 5"})]})}function xt({title:o,subtitle:i,defaultOpen:c=!1,children:p}){return t.jsxs("details",{className:"cn-accordion",open:c||void 0,children:[t.jsxs("summary",{className:"cn-accordion__summary",children:[t.jsxs("div",{className:"cn-accordion__left",children:[t.jsx("span",{className:"cn-accordion__title",children:o}),i&&t.jsx("span",{className:"cn-accordion__subtitle",children:i})]}),t.jsx("span",{className:"cn-accordion__chevron",children:t.jsx(Vd,{size:16})})]}),t.jsx("div",{className:"cn-accordion__body",children:p})]})}function Hs({label:o,value:i,onChange:c}){const p=`cn-color-${o==null?void 0:o.toLowerCase().replace(/\s+/g,"-")}`;return t.jsxs("div",{className:"cn-form-field",children:[o&&t.jsx("label",{className:"cn-form-field__label",htmlFor:p,children:o}),t.jsxs("div",{className:"cn-color-picker__row",children:[t.jsx("input",{type:"color",className:"cn-color-picker__swatch",value:i||"#000000",onChange:d=>c==null?void 0:c(d.target.value)}),t.jsx("input",{id:p,type:"text",className:"cn-form-field__input",value:i||"",onChange:d=>c==null?void 0:c(d.target.value),placeholder:"#000000",style:{flex:1}})]})]})}const Qd=[{value:"bottom",label:"Bottom"},{value:"top",label:"Top"}],Yd=[{value:"fade",label:"Fade"},{value:"slide",label:"Slide"},{value:"none",label:"None"}];function gl({label:o,value:i}){return t.jsxs("div",{className:"cn-form-readonly",children:[t.jsx("label",{className:"cn-form-readonly__label",children:o}),t.jsx("span",{className:"cn-form-readonly__value",children:i||"(default)"}),t.jsx("a",{href:`${Qe}/#/configuration`,target:"_blank",rel:"noreferrer",className:"cn-form-readonly__link",children:"Edit text in web-app →"})]})}function qd({options:o,update:i,updateNested:c}){const p=o.colors||{};o.see_more_opt;const{isConnected:d,isBasic:g}=Be();return t.jsx(xt,{title:"Banner Design",subtitle:"Texts, colors, position, and animation",defaultOpen:!0,children:t.jsxs("div",{className:"cn-banner-design__grid",children:[t.jsxs("div",{className:"cn-banner-design__col",children:[d?t.jsx(gl,{label:"Banner Message",value:o.message_text}):t.jsx(Se,{label:"Banner Message",type:"textarea",value:o.message_text||"",onChange:m=>i("message_text",m)}),d?t.jsx(gl,{label:"Accept Button",value:o.accept_text}):t.jsx(Se,{label:"Accept Button",value:o.accept_text||"",onChange:m=>i("accept_text",m),placeholder:"Accept All"}),d?t.jsx(gl,{label:"Reject Button",value:o.refuse_text}):t.jsx(Se,{label:"Reject Button",value:o.refuse_text||"",onChange:m=>i("refuse_text",m),placeholder:"Reject All"}),!g&&(d?t.jsx(gl,{label:"Preferences Button",value:o.revoke_text}):t.jsx(Se,{label:"Preferences Button",value:o.revoke_text||"",onChange:m=>i("revoke_text",m),placeholder:"Manage Preferences"})),t.jsx(Se,{label:"Banner Position",type:"select",value:o.position||"bottom",onChange:m=>i("position",m),options:Qd}),t.jsx(Se,{label:"Dismiss Animation",type:"select",value:o.hide_effect||"fade",onChange:m=>i("hide_effect",m),options:Yd})]}),t.jsxs("div",{className:"cn-banner-design__col",children:[t.jsx(Hs,{label:"Background Color",value:p.bar||"#32323a",onChange:m=>c("colors","bar",m)}),t.jsx(Hs,{label:"Text Color",value:p.text||"#ffffff",onChange:m=>c("colors","text",m)}),t.jsx(Hs,{label:"Button Color",value:p.button||"#00a99d",onChange:m=>c("colors","button",m)})]})]})})}function Zd({onConnect:o}){return t.jsxs("div",{className:"cn-tier-gate-inline",children:[t.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{opacity:.5},children:[t.jsx("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),t.jsx("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]}),t.jsxs("div",{children:[t.jsx("strong",{children:"Advanced features require a connection"}),t.jsx("p",{style:{margin:"4px 0 0",color:"var(--cn-muted)",fontSize:"var(--cn-text-sm)"},children:"Connect your site to unlock Autoblocking, Cookie Categories, Consent Records, and Analytics."})]}),t.jsx("button",{type:"button",className:"cn-button cn-button--primary",onClick:o,children:"Connect Your Site — It’s Free"})]})}const Xd={gpcSupportMode:{title:"GPC support",summary:"GPC (Global Privacy Control) tells browsers to signal opt-out of data sale automatically. Required for CCPA compliance.",navPath:["Compliance","Privacy Settings","GPC Support"],action:"Toggle GPC Support on, then save.",deepLink:"/#/configuration"},onClose:{title:"Accept on close",summary:"Accepting consent when users dismiss the banner is not allowed under GDPR and UK PECR.",navPath:["Compliance","Consent Settings","Accept on Close"],action:"Ensure Accept on Close is set to Off.",deepLink:"/#/configuration"},uiBlocking:{title:"Cookie wall (UI blocking)",summary:'Blocking site access until consent is given (a "cookie wall") violates GDPR — consent must be freely given.',navPath:["Compliance","Blocking Settings","Cookie Wall"],action:"Ensure Cookie Wall is set to Off.",deepLink:"/#/configuration"}},Jd=()=>t.jsxs("svg",{viewBox:"0 0 28 28",fill:"none",width:"28",height:"28","aria-hidden":"true",children:[t.jsx("path",{d:"M14 3L4 7v7c0 6.627 4.477 12.5 10 14.5C19.523 26.5 24 20.627 24 14V7L14 3z",stroke:"rgba(255,255,255,.75)",strokeWidth:"1.5",strokeLinejoin:"round"}),t.jsx("path",{d:"M9 14l3.5 3.5L19 11",stroke:"#fff",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]});function e2({settingKey:o,accountEmail:i,onClose:c,onSynced:p}){const[d,g]=j.useState(!1),[m,f]=j.useState(""),v=Xd[o];if(!v)return null;const w=v.deepLink?Qe+v.deepLink:Qe,x=async()=>{g(!0),f("");try{await In("sync_config"),p==null||p(),c==null||c()}catch{f("Sync failed. Please try again or refresh the page.")}finally{g(!1)}};return t.jsx("div",{className:"cn-portal-bridge-overlay",role:"dialog","aria-modal":"true","aria-label":`Configure ${v.title} in web app`,children:t.jsxs("div",{className:"cn-portal-bridge",children:[t.jsxs("div",{className:"cn-portal-bridge__header",children:[t.jsx("div",{className:"cn-portal-bridge__header-icon",children:t.jsx(Jd,{})}),t.jsxs("div",{children:[t.jsxs("div",{className:"cn-portal-bridge__header-title",children:[v.title," is configured in your web account"]}),t.jsx("div",{className:"cn-portal-bridge__header-sub",children:"Takes about 60 seconds"})]})]}),t.jsxs("div",{className:"cn-portal-bridge__body",children:[t.jsx("p",{className:"cn-portal-bridge__summary",children:v.summary}),i&&t.jsxs("div",{className:"cn-portal-bridge__context",children:[t.jsx("div",{className:"cn-portal-bridge__context-dot"}),t.jsxs("div",{className:"cn-portal-bridge__context-text",children:["Sign in with ",t.jsx("strong",{children:i})," to access this setting."]})]}),t.jsxs("div",{className:"cn-portal-bridge__steps",children:[t.jsxs("div",{className:"cn-portal-bridge__step",children:[t.jsx("div",{className:"cn-portal-bridge__step-num",children:"1"}),t.jsxs("div",{className:"cn-portal-bridge__step-body",children:[t.jsx("div",{className:"cn-portal-bridge__step-title",children:"Open your web account"}),t.jsx("div",{className:"cn-portal-bridge__step-desc",children:"Opens in a new tab."})]})]}),t.jsxs("div",{className:"cn-portal-bridge__step",children:[t.jsx("div",{className:"cn-portal-bridge__step-num",children:"2"}),t.jsxs("div",{className:"cn-portal-bridge__step-body",children:[t.jsx("div",{className:"cn-portal-bridge__step-title",children:"Navigate to the setting"}),t.jsx("div",{className:"cn-portal-bridge__step-desc",children:v.navPath.join(" → ")})]})]}),t.jsxs("div",{className:"cn-portal-bridge__step",children:[t.jsx("div",{className:"cn-portal-bridge__step-num",children:"3"}),t.jsxs("div",{className:"cn-portal-bridge__step-body",children:[t.jsx("div",{className:"cn-portal-bridge__step-title",children:"Make the change"}),t.jsx("div",{className:"cn-portal-bridge__step-desc",children:v.action})]})]})]}),m&&t.jsx("div",{className:"cn-portal-bridge__error",children:m}),t.jsxs("div",{className:"cn-portal-bridge__actions",children:[t.jsx("a",{href:w,target:"_blank",rel:"noopener noreferrer",className:"cn-portal-bridge__btn cn-portal-bridge__btn--primary",children:"Open web app →"}),t.jsx("button",{type:"button",className:"cn-portal-bridge__btn cn-portal-bridge__btn--secondary",onClick:x,disabled:d,children:d?"Checking…":"I've made the change"})]})]}),t.jsx("div",{className:"cn-portal-bridge__dismiss",children:t.jsx("button",{type:"button",onClick:c,className:"cn-portal-bridge__dismiss-btn",children:"Not now"})})]})})}const vi={banner:"Banner shown",hidden:"Silent",passive:"Passive notice"},n2=[{key:"app_blocking",wpKey:"app_blocking",label:"Autoblocking",desc:"Scripts wait for visitor consent before firing",valueType:"toggle",requiredFor:[],activeLaws:[],activeValue:!0},{key:"onScroll",label:"Accept on scroll",desc:"Consent granted automatically if visitor scrolls",valueType:"bool-inverted",requiredFor:["gdpr","ukpecr","lgpd","popia"],activeLaws:["gdpr","ukpecr","lgpd","popia"],activeValue:!1},{key:"onClick",label:"Accept on click",desc:"Consent granted automatically on any page click",valueType:"bool-inverted",requiredFor:["gdpr","ukpecr","lgpd","popia"],activeLaws:["gdpr","ukpecr","lgpd","popia"],activeValue:!1},{key:"onClose",label:"Accept on close",desc:"Consent granted automatically if banner is closed",valueType:"bool-inverted",requiredFor:["gdpr","ukpecr","popia"],activeLaws:["gdpr","ukpecr","popia"],activeValue:!1,portalOnly:!0},{key:"refuse_opt",wpKey:"refuse_opt",label:"Refuse button",desc:"Display a button allowing visitors to decline tracking",valueType:"bool",requiredFor:["gdpr","ukpecr","lgpd","pipeda","popia"],activeLaws:["gdpr","ukpecr","lgpd","pipeda","popia"],activeValue:!0},{key:"revokeConsent",label:"Revoke consent",desc:"Floating widget allowing visitors to change preferences",valueType:"bool",requiredFor:[],activeLaws:["gdpr","ccpa","otherus","ukpecr","lgpd","pipeda","popia"],activeValue:!0},{key:"gpcSupportMode",label:"GPC support",desc:"Honor browser-level opt-out signals automatically",valueType:"bool",requiredFor:[],activeLaws:["ccpa","otherus"],activeValue:!0,portalOnly:!0,pro:!0,globalNote:"Required for all connected sites (CCPA/CPRA mandate)"},{key:"consentExpiry",label:"Consent expiry",desc:"How long before visitors are prompted again",valueType:"expiry-array",requiredFor:["gdpr","ukpecr"],activeLaws:["gdpr","ukpecr"]},{key:"uiBlocking",label:"Cookie wall",desc:"Block access to site content until consent is given",valueType:"bool-inverted",requiredFor:["gdpr"],activeLaws:["gdpr"],activeValue:!1,portalOnly:!0}],Bn={shield:({color:o})=>t.jsxs("svg",{viewBox:"0 0 22 22",fill:"none",width:"22",height:"22","aria-hidden":"true",children:[t.jsx("path",{d:"M11 3L4 6v5c0 4 3.5 7 7 8 3.5-1 7-4 7-8V6L11 3z",stroke:o,strokeWidth:"1.5",strokeLinejoin:"round"}),t.jsx("polyline",{points:"8,11 10,13 14,9",stroke:o,strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})]}),scroll:({color:o})=>t.jsxs("svg",{viewBox:"0 0 22 22",fill:"none",width:"22",height:"22","aria-hidden":"true",children:[t.jsx("rect",{x:"4",y:"3",width:"14",height:"16",rx:"3",stroke:o,strokeWidth:"1.5"}),t.jsx("polyline",{points:"9,13 11,16 13,13",stroke:o,strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"}),t.jsx("line",{x1:"11",y1:"9",x2:"11",y2:"16",stroke:o,strokeWidth:"1.2",strokeLinecap:"round"})]}),click:({color:o})=>t.jsxs("svg",{viewBox:"0 0 22 22",fill:"none",width:"22",height:"22","aria-hidden":"true",children:[t.jsx("path",{d:"M8.5 10.5V5.5a1.5 1.5 0 013 0v5",stroke:o,strokeWidth:"1.5",strokeLinecap:"round"}),t.jsx("path",{d:"M11.5 8.5V5a1.5 1.5 0 013 0V10",stroke:o,strokeWidth:"1.5",strokeLinecap:"round"}),t.jsx("path",{d:"M14.5 8a1.5 1.5 0 013 0v4c0 3.314-2.686 6-6 6h-1a5 5 0 01-5-5v-2.5a1.5 1.5 0 013 0",stroke:o,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),close:({color:o})=>t.jsxs("svg",{viewBox:"0 0 22 22",fill:"none",width:"22",height:"22","aria-hidden":"true",children:[t.jsx("rect",{x:"3",y:"3",width:"16",height:"16",rx:"3",stroke:o,strokeWidth:"1.5"}),t.jsx("line",{x1:"8",y1:"8",x2:"14",y2:"14",stroke:o,strokeWidth:"1.4",strokeLinecap:"round"}),t.jsx("line",{x1:"14",y1:"8",x2:"8",y2:"14",stroke:o,strokeWidth:"1.4",strokeLinecap:"round"})]}),refuse:({color:o})=>t.jsxs("svg",{viewBox:"0 0 22 22",fill:"none",width:"22",height:"22","aria-hidden":"true",children:[t.jsx("rect",{x:"3",y:"7",width:"16",height:"8",rx:"3",stroke:o,strokeWidth:"1.5"}),t.jsx("line",{x1:"7",y1:"11",x2:"15",y2:"11",stroke:o,strokeWidth:"1.3",strokeLinecap:"round"})]}),revoke:({color:o})=>t.jsxs("svg",{viewBox:"0 0 22 22",fill:"none",width:"22",height:"22","aria-hidden":"true",children:[t.jsx("path",{d:"M4 8h7a6 6 0 110 12H6",stroke:o,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),t.jsx("polyline",{points:"4,4 4,8 8,8",stroke:o,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),gpc:({color:o})=>t.jsxs("svg",{viewBox:"0 0 22 22",fill:"none",width:"22",height:"22","aria-hidden":"true",children:[t.jsx("path",{d:"M8 10V5a1.5 1.5 0 013 0v5",stroke:o,strokeWidth:"1.5",strokeLinecap:"round"}),t.jsx("path",{d:"M11 8V4.5a1.5 1.5 0 013 0V9",stroke:o,strokeWidth:"1.5",strokeLinecap:"round"}),t.jsx("path",{d:"M14 7.5a1.5 1.5 0 013 0V12c0 3.314-2.686 6-6 6h-1a5 5 0 01-5-5v-2a1.5 1.5 0 013 0",stroke:o,strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),clock:({color:o})=>t.jsxs("svg",{viewBox:"0 0 22 22",fill:"none",width:"22",height:"22","aria-hidden":"true",children:[t.jsx("circle",{cx:"11",cy:"11",r:"9",stroke:o,strokeWidth:"1.5"}),t.jsx("polyline",{points:"11,6 11,11 14,14",stroke:o,strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})]}),wall:({color:o})=>t.jsxs("svg",{viewBox:"0 0 22 22",fill:"none",width:"22",height:"22","aria-hidden":"true",children:[t.jsx("rect",{x:"2",y:"5",width:"18",height:"12",rx:"2",stroke:o,strokeWidth:"1.5"}),t.jsx("line",{x1:"2",y1:"9",x2:"20",y2:"9",stroke:o,strokeWidth:"1.2"}),t.jsx("line",{x1:"11",y1:"9",x2:"11",y2:"17",stroke:o,strokeWidth:"1.2"})]})},t2={app_blocking:Bn.shield,onScroll:Bn.scroll,onClick:Bn.click,onClose:Bn.close,refuse_opt:Bn.refuse,revokeConsent:Bn.revoke,gpcSupportMode:Bn.gpc,consentExpiry:Bn.clock,uiBlocking:Bn.wall};function r2(o,i,c,p){return o.key==="gpcSupportMode"&&!c&&p.some(g=>g==="ccpa"||g==="otherus")||o.key==="uiBlocking"&&!c&&p.includes("gdpr")?"crit":c?"ok":"warn"}function l2({setting:o,activeLawKeys:i,wpOptions:c,configData:p,onOpenPortal:d,update:g,thresholdLocked:m,onUpgrade:f,isPro:v}){const{key:w,label:x,desc:S,valueType:L,activeLaws:z,portalOnly:C,wpKey:P}=o,N=o.key==="gpcSupportMode"&&!!p.gpcSupportMode,D=!!o.pro&&!v&&!N,I=z.filter(J=>i.includes(J)),A=P||w,W=P?c:p;let $,O;const K=o.key==="app_blocking"&&m;if(L==="bool"){const J=W[A],me=A==="app_blocking"&&J===void 0?!0:!!J;if(O=me===o.activeValue,o.key==="gpcSupportMode"&&me){const te=W.gpcBannerMode||"passive",ee=vi[te]||vi.passive;$=t.jsxs(t.Fragment,{children:["On",t.jsx("div",{style:{fontSize:"var(--cn-text-sm)",fontWeight:"normal",color:"var(--cn-muted)",marginTop:2},children:ee})]})}else $=me?"On":"Off"}else if(L==="bool-inverted"){const J=!!W[A];$=J?"On":"Off",O=J===o.activeValue}else if(L==="toggle"){const J=W[A]??!0;$=K?t.jsx("span",{style:{color:"var(--cn-warn-icon)",fontWeight:500},children:"Paused"}):t.jsxs("label",{className:"cn-toggle-row__label",style:{cursor:"pointer",margin:0,justifyContent:"flex-start"},children:[t.jsx("input",{type:"checkbox",className:"cn-toggle-row__input",checked:J,onChange:me=>g&&g(A,me.target.checked),style:{marginRight:"6px"}}),J?"On":"Off"]}),O=K?!1:J===o.activeValue}else if(L==="expiry-array"){const J=Array.isArray(W[A])?W[A]:[30,182,365],me=Math.max(...J);$=J.map(te=>te>=365?`${Math.round(te/365)}y`:te>=30?`${Math.round(te/30)}mo`:`${te}d`).join(" / "),O=me<=365}const Q=r2(o,$,O,i),Z=`var(--cn-${Q}-icon)`,T=t2[w]||null;return t.jsxs("div",{className:`cn-card${Q==="crit"?" cn-card--crit":""}`,children:[t.jsxs("div",{className:"cn-card__top",children:[t.jsx("div",{className:"cn-card__icon",children:T&&t.jsx(T,{color:Z})}),t.jsx("div",{className:`cn-card__dot cn-card__dot--${Q}`})]}),t.jsx("div",{className:`cn-card__main cn-card__main--${Q}`,children:$}),t.jsx("div",{className:"cn-card__sub",children:x}),S&&t.jsx("div",{className:"cn-card__desc",style:{marginTop:4,fontSize:"var(--cn-text-sm)",color:"var(--cn-muted)"},children:S}),t.jsx("div",{className:"cn-card__pills",children:I.map(J=>t.jsx("span",{className:`cn-card__pill cn-card__pill--${Q}`,children:Fs[J]||J.toUpperCase()},J))}),t.jsx("div",{className:"cn-card__foot",children:D?t.jsxs(t.Fragment,{children:[t.jsx(wn,{}),t.jsx("button",{type:"button",onClick:f,children:"Upgrade to Pro →"})]}):C&&t.jsx("button",{type:"button",onClick:()=>d==null?void 0:d(o.key),children:"Manage in web app →"})}),K&&t.jsxs("div",{className:"cn-card__threshold-banner",style:{marginTop:8,padding:"8px 10px",background:"var(--cn-warn-bg, #fef3cd)",borderRadius:6,fontSize:"var(--cn-text-sm)"},children:["Monthly visit limit reached ","—"," autoblocking is paused until your cycle resets."," ",t.jsx("button",{type:"button",className:"cn-card__threshold-upgrade",style:{background:"none",border:"none",color:"var(--cn-link)",cursor:"pointer",padding:0,font:"inherit",textDecoration:"underline"},onClick:f,children:"Upgrade →"})]})]})}function s2({wpOptions:o,update:i,save:c,onOpenPricingModal:p}){var Q,Z;const{dashboard:d,refetchDashboard:g}=vt(),{config:m,refetchConfig:f}=Mt(),{isPro:v}=Be(),w=(Q=d==null?void 0:d.analytics)==null?void 0:Q.cycleUsage,x=(w==null?void 0:w.visits)||0,S=(w==null?void 0:w.threshold)||0,L=S>0&&x>=S,z=j.useRef(!1),C=j.useRef(null),P=j.useRef(o==null?void 0:o.app_blocking);j.useEffect(()=>{const T=o==null?void 0:o.app_blocking;if(T!==P.current)return P.current=T,z.current||(z.current=!0),z.current&&c&&(clearTimeout(C.current),C.current=setTimeout(()=>c(),300)),()=>clearTimeout(C.current)},[o==null?void 0:o.app_blocking,c]);const N=((Z=d==null?void 0:d.appConfig)==null?void 0:Z.regulations)||{},D=Object.entries(N).filter(([,T])=>T).map(([T])=>T),I=(d==null?void 0:d.accountEmail)||"",A=(m==null?void 0:m.config)||{},[W,$]=j.useState(null),O=D.length>0,K=n2.filter(T=>T.requiredFor.length===0?!0:T.requiredFor.some(J=>D.includes(J)));return t.jsxs(t.Fragment,{children:[t.jsxs("div",{id:"cn-compliance-behavior",className:"cn-compliance-behavior",children:[t.jsx("div",{className:"cn-card-grid cn-card-grid--auto",children:K.map(T=>t.jsx(l2,{setting:T,activeLawKeys:D,wpOptions:o,configData:A,onOpenPortal:$,update:i,thresholdLocked:L,onUpgrade:p,isPro:v},T.key))}),t.jsxs("div",{className:"cn-compliance-behavior__footer",children:[O?"These settings were automatically configured based on your selected laws. ":"Select laws to see recommendations tied to your jurisdictions. ",t.jsx("a",{href:`${Qe}/#/configuration`,target:"_blank",rel:"noreferrer",className:"cn-form-readonly__link",children:O?"Configure in Admin Portal →":"Select laws in Admin Portal →"})]})]}),W&&t.jsx(e2,{settingKey:W,accountEmail:I,onClose:()=>$(null),onSynced:()=>{g(),f(),$(null)}})]})}const a2=((Fi=window.cnReactData)==null?void 0:Fi.ruleParams)||[],o2=((Bi=window.cnReactData)==null?void 0:Bi.ruleOperators)||[];function i2({rule:o,onChange:i,onRemove:c}){const[p,d]=j.useState([]),[g,m]=j.useState(!1),[f,v]=j.useState(!1),w=j.useCallback(async S=>{if(!S){d([]);return}m(!0);try{const L=await Wu(S),z=(L==null?void 0:L.values)||[];z.length>0&&z[0].group?v(!0):v(!1),d(z)}catch{d([])}finally{m(!1)}},[]);j.useEffect(()=>{w(o.param)},[o.param,w]);const x=S=>{i({...o,param:S,value:""})};return t.jsxs("div",{className:"cn-rule-row",children:[t.jsxs("select",{className:"cn-rule-row__param",value:o.param,onChange:S=>x(S.target.value),children:[t.jsx("option",{value:"",children:"-- Select --"}),a2.map(S=>t.jsx("option",{value:S.value,children:S.label},S.value))]}),t.jsx("select",{className:"cn-rule-row__operator",value:o.operator,onChange:S=>i({...o,operator:S.target.value}),children:o2.map(S=>t.jsx("option",{value:S.value,children:S.label},S.value))}),t.jsxs("select",{className:"cn-rule-row__value",value:o.value,onChange:S=>i({...o,value:S.target.value}),disabled:g,children:[t.jsx("option",{value:"",children:g?"Loading…":"-- Select --"}),f?p.map(S=>t.jsx("optgroup",{label:S.group,children:S.items.map(L=>t.jsx("option",{value:L.value,children:L.label},L.value))},S.group)):p.map(S=>t.jsx("option",{value:S.value,children:S.label},S.value))]}),t.jsx("button",{type:"button",className:"cn-rule-row__remove",onClick:c,title:"Remove rule",children:"×"})]})}function c2({group:o,groupIndex:i,onChange:c,onRemove:p}){const d=(f,v)=>{const w=[...o];w[f]=v,c(w)},g=f=>{if(o.length===1){p();return}c(o.filter((v,w)=>w!==f))},m=()=>{c([...o,{param:"",operator:"equal",value:""}])};return t.jsxs("div",{className:"cn-rule-group",children:[i>0&&t.jsx("div",{className:"cn-rule-group__or",children:"OR"}),t.jsxs("div",{className:"cn-rule-group__card",children:[o.map((f,v)=>t.jsxs("div",{children:[v>0&&t.jsx("div",{className:"cn-rule-group__and",children:"AND"}),t.jsx(i2,{rule:f,onChange:w=>d(v,w),onRemove:()=>g(v)})]},v)),t.jsx("button",{type:"button",className:"cn-rule-group__add-rule",onClick:m,children:"+ Add rule"})]})]})}function u2({rules:o,onChange:i}){const c=!o||Array.isArray(o)&&o.length===0?[]:Array.isArray(o)?o.map(w=>Array.isArray(w)?w.map(x=>({param:x.param||"",operator:x.operator||"equal",value:x.value||""})):Object.values(w).map(x=>({param:x.param||"",operator:x.operator||"equal",value:x.value||""}))):Object.values(o).map(w=>Object.values(w).map(x=>({param:x.param||"",operator:x.operator||"equal",value:x.value||""}))),[p,d]=j.useState(c),g=w=>{d(w),i(w)},m=(w,x)=>{const S=[...p];S[w]=x,g(S)},f=w=>{g(p.filter((x,S)=>S!==w))},v=()=>{g([...p,[{param:"",operator:"equal",value:""}]])};return t.jsxs("div",{className:"cn-rule-builder",children:[p.length===0&&t.jsx("p",{className:"cn-rule-builder__empty",children:"No rules configured. Add a rule group to control where the banner appears."}),p.map((w,x)=>t.jsx(c2,{group:w,groupIndex:x,onChange:S=>m(x,S),onRemove:()=>f(x)},x)),t.jsx("button",{type:"button",className:"cn-rule-builder__add-group",onClick:v,children:"+ Add rule group"})]})}const yi=[{value:"hour",label:"An hour"},{value:"day",label:"1 day"},{value:"week",label:"1 week"},{value:"month",label:"1 month"},{value:"3months",label:"3 months"},{value:"6months",label:"6 months"},{value:"year",label:"1 year"},{value:"infinity",label:"Infinity"}];function dn({label:o,checked:i,onChange:c,description:p}){const d=`cn-toggle-${o.toLowerCase().replace(/\s+/g,"-")}`;return t.jsxs("div",{className:"cn-toggle-row",children:[t.jsxs("label",{className:"cn-toggle-row__label",htmlFor:d,children:[t.jsx("input",{id:d,type:"checkbox",className:"cn-toggle-row__input",checked:i,onChange:g=>c(g.target.checked)}),t.jsx("span",{className:"cn-toggle-row__text",children:o})]}),p&&t.jsx("div",{className:"cn-toggle-row__desc",children:p})]})}function yr({label:o,name:i,value:c,options:p,onChange:d}){return t.jsxs("div",{className:"cn-radio-group",children:[o&&t.jsx("div",{className:"cn-radio-group__label",children:o}),t.jsx("div",{className:"cn-radio-group__options",children:p.map(g=>t.jsxs("label",{className:"cn-radio-group__option",children:[t.jsx("input",{type:"radio",name:i,value:g.value,checked:c===g.value,onChange:()=>d(g.value)}),t.jsx("span",{children:g.label})]},g.value))})]})}function _i({addNotice:o,options:i,update:c,updateNested:p,save:d,loading:g,saved:m,error:f,onOpenConsentPanel:v}){var N,D,I,A,W,$,O,K,Q,Z;const w=((N=window.cnReactData)==null?void 0:N.wpPages)||[],{isConnected:x}=Be(),[S,L]=j.useState(!1),[z,C]=j.useState("head"),P=async()=>{var J,me,te,ee;if(await d()){if(x){const ie={};(J=i.colors)!=null&&J.bar&&(ie.bannerColor=i.colors.bar),(me=i.colors)!=null&&me.text&&(ie.textColor=i.colors.text),(te=i.colors)!=null&&te.button&&(ie.primaryColor=i.colors.button),i.position&&(ie.position=i.position),i.hide_effect&&(ie.animation=i.hide_effect),((ee=i.colors)==null?void 0:ee.bar_opacity)!==void 0&&(ie.bannerOpacity=(i.colors.bar_opacity??100)/100);const ge={};if(i.revoke_cookies!==void 0&&(ge.revokeConsent=i.revoke_cookies),i.revoke_cookies_opt&&(ge.revokeMethod=i.revoke_cookies_opt),i.on_scroll!==void 0&&(ge.onScroll=i.on_scroll),i.on_scroll_offset!==void 0&&(ge.onScrollOffset=i.on_scroll_offset),i.on_click!==void 0&&(ge.onClick=i.on_click),Object.keys(ie).length||Object.keys(ge).length){try{await ul(ie,ge),o&&o("Settings saved and published to your live site.","success")}catch{o&&o("Settings saved locally. Live banner sync failed—your live site was not updated. Please try again.","warning")}return}}o&&o("Settings saved successfully.","success")}};return t.jsxs("div",{className:"cn-plugin-settings",children:[!x&&t.jsxs(t.Fragment,{children:[t.jsxs(xt,{title:"Consent Behavior",defaultOpen:!0,children:[t.jsx(dn,{label:"Enable refuse button",checked:!!i.refuse_opt,onChange:T=>c("refuse_opt",T),description:"Allow visitors to refuse cookie consent"}),i.refuse_opt&&t.jsx(Se,{label:"Refuse button text",value:i.refuse_text||"",onChange:T=>c("refuse_text",T),placeholder:"No"}),t.jsx(dn,{label:"Enable revoke consent",checked:!!i.revoke_cookies,onChange:T=>c("revoke_cookies",T),description:"Allow visitors to revoke their consent after accepting"}),i.revoke_cookies&&t.jsxs(t.Fragment,{children:[t.jsx(yr,{label:"Revoke method",name:"revoke_cookies_opt",value:i.revoke_cookies_opt||"automatic",options:[{value:"automatic",label:"Automatic"},{value:"manual",label:"Manual"}],onChange:T=>c("revoke_cookies_opt",T)}),t.jsx(Se,{label:"Revoke button text",value:i.revoke_text||"",onChange:T=>c("revoke_text",T),placeholder:"Revoke consent"}),t.jsx(Se,{label:"Revoke message",type:"textarea",value:i.revoke_message_text||"",onChange:T=>c("revoke_message_text",T)})]}),t.jsx(dn,{label:"Accept on scroll",checked:!!i.on_scroll,onChange:T=>c("on_scroll",T),description:"Automatically accept consent when the user scrolls"}),i.on_scroll&&t.jsx(Se,{label:"Scroll distance (px)",type:"number",value:i.on_scroll_offset||100,onChange:T=>c("on_scroll_offset",parseInt(T,10)||0)}),t.jsx(dn,{label:"Accept on click",checked:!!i.on_click,onChange:T=>c("on_click",T),description:"Automatically accept consent on any page click"}),t.jsx(dn,{label:"Reload page on accept",checked:!!i.redirection,onChange:T=>c("redirection",T),description:"Reload the page after the visitor accepts consent"})]}),t.jsxs(xt,{title:"Cookie Expiry",defaultOpen:!0,children:[t.jsx(Se,{label:"Accepted expiry",type:"select",value:i.time||"month",onChange:T=>c("time",T),options:yi}),t.jsx(Se,{label:"Rejected expiry",type:"select",value:i.time_rejected||"month",onChange:T=>c("time_rejected",T),options:yi})]})]}),t.jsxs(xt,{title:"Privacy Policy",defaultOpen:!0,children:[t.jsx(dn,{label:"Enable privacy policy link",checked:!!i.see_more,onChange:T=>c("see_more",T)}),i.see_more&&t.jsxs(t.Fragment,{children:[t.jsx(Se,{label:"Link text",value:((D=i.see_more_opt)==null?void 0:D.text)||"",onChange:T=>p("see_more_opt","text",T),placeholder:"Privacy policy"}),t.jsx(yr,{label:"Link type",name:"see_more_link_type",value:((I=i.see_more_opt)==null?void 0:I.link_type)||"page",options:[{value:"page",label:"Page link"},{value:"custom",label:"Custom link"}],onChange:T=>p("see_more_opt","link_type",T)}),((A=i.see_more_opt)==null?void 0:A.link_type)==="page"&&w.length>0&&t.jsx(Se,{label:"Select page",type:"select",value:((W=i.see_more_opt)==null?void 0:W.id)||"",onChange:T=>p("see_more_opt","id",parseInt(T,10)||0),options:[{value:"",label:"— Select a page —"},...w.map(T=>({value:String(T.id),label:T.title}))]}),(($=i.see_more_opt)==null?void 0:$.link_type)==="custom"&&t.jsx(Se,{label:"Custom URL",value:((O=i.see_more_opt)==null?void 0:O.link)||"",onChange:T=>p("see_more_opt","link",T),placeholder:"https://"}),t.jsx(dn,{label:"Sync with WordPress Privacy Page",checked:!!((K=i.see_more_opt)!=null&&K.sync),onChange:T=>p("see_more_opt","sync",T)}),t.jsx(yr,{label:"Open link in",name:"link_target",value:i.link_target||"_blank",options:[{value:"_blank",label:"New tab"},{value:"_self",label:"Same tab"}],onChange:T=>c("link_target",T)}),t.jsx(yr,{label:"Link position",name:"link_position",value:i.link_position||"banner",options:[{value:"banner",label:"Banner"},{value:"message",label:"Message"}],onChange:T=>c("link_position",T)})]})]}),t.jsxs(xt,{title:"Custom Scripts",defaultOpen:!0,children:[t.jsxs("div",{className:"cn-pill-toggle",children:[t.jsx("button",{type:"button",className:`cn-pill-toggle__btn${z==="head"?" cn-pill-toggle__btn--active":""}`,onClick:()=>C("head"),children:"Head"}),t.jsx("button",{type:"button",className:`cn-pill-toggle__btn${z==="body"?" cn-pill-toggle__btn--active":""}`,onClick:()=>C("body"),children:"Body"})]}),z==="head"?t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"cn-pill-toggle-desc",children:"Code to be added in your site header, before the closing head tag."}),t.jsx(Se,{type:"textarea",value:i.refuse_code_head||"",onChange:T=>c("refuse_code_head",T),placeholder:"",rows:6})]}):t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"cn-pill-toggle-desc",children:"Code to be added in your site footer, before the closing body tag."}),t.jsx(Se,{type:"textarea",value:i.refuse_code||"",onChange:T=>c("refuse_code",T),placeholder:"",rows:6})]}),t.jsx("p",{className:"cn-pill-toggle-note",children:"Enter non-functional cookies JavaScript code (e.g. Google Analytics) to be used after the visitor consent is given."})]}),t.jsxs(xt,{title:"Display & Animation",defaultOpen:!0,children:[t.jsxs("div",{className:"cn-form-field",children:[t.jsxs("label",{className:"cn-form-field__label",htmlFor:"cn-bar-opacity",children:["Bar opacity: ",((Q=i.colors)==null?void 0:Q.bar_opacity)??100,"%"]}),t.jsx("input",{id:"cn-bar-opacity",type:"range",className:"cn-opacity-slider",min:50,max:100,value:((Z=i.colors)==null?void 0:Z.bar_opacity)??100,onChange:T=>p("colors","bar_opacity",parseInt(T.target.value,10))})]}),t.jsx(Se,{label:"Custom button CSS class",value:i.css_class||"",onChange:T=>c("css_class",T),placeholder:"e.g. my-custom-btn",helper:"Add custom CSS classes to the accept button"})]}),t.jsxs(xt,{title:"Technical Settings",defaultOpen:!0,children:[x&&t.jsxs(t.Fragment,{children:[t.jsx(dn,{label:"Bot detection",checked:!!(i.bot_detection??!0),onChange:T=>c("bot_detection",T),description:"Automatically detect and handle bots/crawlers"}),t.jsx(dn,{label:"AMP support",checked:!!i.amp_support,onChange:T=>c("amp_support",T),description:"Enable AMP-compatible consent notice"}),t.jsx(dn,{label:"Caching compatibility",checked:!!(i.caching_compatibility??!0),onChange:T=>c("caching_compatibility",T),description:"Improve compatibility with caching plugins"}),t.jsx(dn,{label:"Debug mode",checked:!!i.debug_mode,onChange:T=>c("debug_mode",T),description:"Enable debug logging for troubleshooting"}),t.jsx(Se,{label:"Excluded script handles",type:"textarea",value:Array.isArray(i.excluded_handles)?i.excluded_handles.join(` +`):i.excluded_handles||"",onChange:T=>c("excluded_handles",T),placeholder:`elementor-frontend +my-analytics-init`,rows:4,helper:"Enter WordPress script handles to exclude from autoblocking, one per line. These scripts will be marked as Essential (Category 1) and never blocked."})]}),!x&&t.jsx(yr,{label:"Script placement",name:"script_placement",value:i.script_placement||"header",options:[{value:"header",label:"Header"},{value:"footer",label:"Footer"}],onChange:T=>c("script_placement",T)}),t.jsx(dn,{label:"Conditional display",checked:!!i.conditional_active,onChange:T=>c("conditional_active",T),description:"Show or hide the banner on specific pages"}),i.conditional_active&&t.jsxs(t.Fragment,{children:[t.jsx(Se,{label:"Display rule",type:"select",value:i.conditional_display||"hide",onChange:T=>c("conditional_display",T),options:[{value:"hide",label:"Hide the banner"},{value:"show",label:"Show the banner"}]}),t.jsx(u2,{rules:i.conditional_rules||[],onChange:T=>c("conditional_rules",T)})]}),t.jsx(dn,{label:"Delete data on deactivation",checked:!!i.deactivation_delete,onChange:T=>c("deactivation_delete",T),description:"Remove all plugin data when the plugin is deactivated"}),x&&t.jsxs("div",{className:"cn-purge-cache",children:[t.jsx($e,{variant:"secondary",onClick:async()=>{L(!0);try{await Qu(),o&&o("Cache purged successfully.","success")}catch(T){o&&o(T.message||"Purge failed. Please try again.","error")}finally{L(!1)}},disabled:S,children:S?"Purging…":"Purge Cache"}),t.jsx("p",{className:"cn-purge-cache__desc",children:"Click to refresh the app configuration cache."})]})]}),t.jsxs("div",{className:"cn-plugin-settings__actions",children:[t.jsx($e,{variant:"primary",onClick:P,disabled:g,children:g?"Saving…":x?"Save WordPress Settings":"Save Settings"}),m&&t.jsxs("span",{className:"cn-plugin-settings__saved",children:["✓"," Saved"]}),f&&t.jsx("span",{className:"cn-plugin-settings__error",children:f})]})]})}function d2({onConnect:o}){return t.jsxs(t.Fragment,{children:[t.jsx(Fn,{title:"Domain Info",children:t.jsxs("div",{className:"cn-dom-rows",children:[t.jsxs("div",{className:"cn-dom-row",children:[t.jsx("span",{className:"cn-dom-row__k",children:"Domain"}),t.jsx("span",{className:"cn-dom-row__v",children:window.location.hostname})]}),t.jsxs("div",{className:"cn-dom-row",children:[t.jsx("span",{className:"cn-dom-row__k",children:"Status"}),t.jsxs("span",{className:"cn-dom-row__v",children:[t.jsx("span",{className:"cn-dot cn-dot--gray"})," Not Connected"]})]})]})}),t.jsxs(Fn,{title:"Why Connect?",children:[t.jsxs("ul",{className:"cn-benefit-list",children:[t.jsxs("li",{className:"cn-benefit-item",children:[t.jsx("span",{className:"cn-benefit-icon",children:"✓"}),t.jsx("span",{children:"Automated script blocking before visitor consent"})]}),t.jsxs("li",{className:"cn-benefit-item",children:[t.jsx("span",{className:"cn-benefit-icon",children:"✓"}),t.jsx("span",{children:"Cookie categorization across your entire site"})]}),t.jsxs("li",{className:"cn-benefit-item",children:[t.jsx("span",{className:"cn-benefit-icon",children:"✓"}),t.jsx("span",{children:"Consent proof collection for legal audit trails"})]}),t.jsxs("li",{className:"cn-benefit-item",children:[t.jsx("span",{className:"cn-benefit-icon",children:"✓"}),t.jsx("span",{children:"Visitor analytics and consent rate reporting"})]}),t.jsxs("li",{className:"cn-benefit-item",children:[t.jsx("span",{className:"cn-benefit-icon",children:"✓"}),t.jsx("span",{children:"Google Consent Mode v2, Facebook & Microsoft signals"})]})]}),t.jsx("div",{className:"cn-connect-cta",children:t.jsx("button",{className:"cn-button cn-button--primary cn-connect-cta__btn",onClick:o,type:"button",children:"Connect Your Site →"})})]})]})}function p2({addNotice:o,onOpenPricingModal:i}){return t.jsxs(t.Fragment,{children:[t.jsx(dl,{addNotice:o}),t.jsx(li,{onOpenPricingModal:i})]})}function f2({addNotice:o,onOpenWelcomeModal:i,onTabChange:c,appliedTemplateKey:p,onTemplateApplied:d,onOpenPricingModal:g}){var O,K;const{isBasic:m}=Be(),f=zd(),v=p||"",w=Q=>{d&&d(Q)},{showBannerWizard:x,bannerClosing:S,bannerScrollTrigger:L,closeBannerWizard:z,showLawWizard:C,lawClosing:P,lawScrollTrigger:N,closeLawWizard:D,showConsentPanel:I,consentClosing:A,consentScrollTrigger:W,closeConsentPanel:$}=mr();return m?t.jsxs(yt,{sidebar:t.jsx(d2,{onConnect:i}),children:[t.jsxs("div",{className:"cn-protection-header",children:[t.jsx("h1",{className:"cn-protection-header__title",children:"Plugin Settings"}),t.jsx("p",{className:"cn-protection-header__subtitle",children:"Connect your site to enable consent management features."})]}),t.jsx(Fd,{options:f.options,update:f.update,save:f.save,loading:f.loading,saved:f.saved,error:f.error}),t.jsx(qd,{options:f.options,update:f.update,updateNested:f.updateNested}),t.jsx(Zd,{onConnect:i}),t.jsx(_i,{addNotice:o,options:f.options,update:f.update,updateNested:f.updateNested,save:f.save,loading:f.loading,saved:f.saved,error:f.error})]}):t.jsxs(yt,{sidebar:t.jsx(p2,{addNotice:o,onOpenPricingModal:g}),children:[t.jsxs("div",{className:"cn-protection-header",children:[t.jsx("h1",{className:"cn-protection-header__title",children:"Settings"}),t.jsx("p",{className:"cn-protection-header__subtitle",children:"Manage your banner template, laws, consent modes, and languages."})]}),t.jsx(ti,{appliedTemplateKey:v,onTemplateApplied:w,siteUrl:((O=window.cnReactData)==null?void 0:O.siteUrl)||"",onOpenTrackers:null,autoblockingEnabled:!!((K=f.options)!=null&&K.app_blocking),onTabChange:c}),x&&t.jsx(ci,{onClose:z,onTemplateApplied:Q=>{w(Q),z()},scrollTrigger:L,isClosing:S,appliedTemplateKey:v}),C&&t.jsx(ui,{onClose:D,onSave:D,scrollTrigger:N,isClosing:P}),I&&t.jsx(pi,{isOpen:!0,onClose:$,addNotice:o,onOpenPricingModal:g,onApplied:()=>{},scrollTrigger:W,isClosing:A}),t.jsx(s2,{wpOptions:f.options,update:f.update,save:f.save,onOpenPricingModal:g}),t.jsx(_i,{addNotice:o,options:f.options,update:f.update,updateNested:f.updateNested,save:f.save,loading:f.loading,saved:f.saved,error:f.error})]})}function xi({title:o,action:i,onAction:c}){return t.jsxs("div",{className:"cn-section-header",children:[t.jsx("h2",{children:o}),i&&t.jsx("button",{type:"button",className:"cn-section-header__action",onClick:c,children:i})]})}function h2({onActivate:o}){return t.jsxs("div",{className:"cn-empty-hero",children:[t.jsxs("svg",{className:"cn-empty-hero__icon",viewBox:"0 0 80 80",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[t.jsx("circle",{cx:"40",cy:"40",r:"40",fill:"#f0faf7"}),t.jsx("rect",{x:"22",y:"16",width:"36",height:"46",rx:"4",fill:"#fff",stroke:"#e0e4e8",strokeWidth:"1.5"}),t.jsx("rect",{x:"29",y:"26",width:"22",height:"2.5",rx:"1.25",fill:"#e0e4e8"}),t.jsx("rect",{x:"29",y:"33",width:"18",height:"2.5",rx:"1.25",fill:"#e0e4e8"}),t.jsx("rect",{x:"29",y:"40",width:"20",height:"2.5",rx:"1.25",fill:"#e0e4e8"}),t.jsx("circle",{cx:"54",cy:"56",r:"14",fill:"#20c19e"}),t.jsx("path",{d:"M54 44.5l-7 3.5v5.25c0 4.594 2.975 8.881 7 9.931 4.025-1.05 7-5.337 7-9.931V48l-7-3.5z",fill:"white",fillOpacity:"0.9"}),t.jsx("path",{d:"M52.1 56.45l-2.1-2.1.96-.96 1.14 1.14 3.06-3.06.96.96-4.02 4.02z",fill:"#20c19e"})]}),t.jsx("div",{className:"cn-empty-hero__heading",children:"No Compliance Records"}),t.jsx("div",{className:"cn-empty-hero__sub",children:"Connect to Cookie Compliance to start collecting consent proofs, audit logs, and compliance evidence."}),t.jsx($e,{variant:"primary",onClick:o,children:"Activate Protection"}),t.jsx("div",{className:"cn-empty-hero__footnote",children:"Connect your site · Free · Takes 60 seconds"})]})}function ji({breakdown:o,loading:i}){const c=o&&o.total>0,p=(o==null?void 0:o.levelLabels)||{},d=p.level3||"Accept",g=p.level2||"Custom",m=p.level1||"Reject",f=c?[{value:o.total.toLocaleString(),label:"Total Consents"},{value:`${o.acceptRate}%`,label:d},{value:`${o.customRate}%`,label:g},{value:`${o.rejectRate}%`,label:m}]:[{value:i?"…":"—",label:"Total Consents"},{value:i?"…":"—",label:d},{value:i?"…":"—",label:g},{value:i?"…":"—",label:m}];return t.jsx("div",{className:"cn-consent-stats",children:f.map(v=>t.jsxs("div",{className:"cn-consent-stat",children:[t.jsx("div",{className:"cn-consent-stat__value",children:v.value}),t.jsx("div",{className:"cn-consent-stat__label",children:v.label})]},v.label))})}function m2({columns:o,rows:i,expandable:c=!1,renderExpanded:p,pageSize:d=20,currentPage:g=1,totalPages:m=1,onPageChange:f,onSort:v,sortColumn:w,sortDirection:x="asc",emptyMessage:S="No data available"}){const[L,z]=j.useState(new Set),C=D=>{c&&z(I=>{const A=new Set(I);return A.has(D)?A.delete(D):A.add(D),A})},P=D=>{if(!D.sortable||!v)return;const I=w===D.key&&x==="asc"?"desc":"asc";v(D.key,I)},N=D=>D.sortable?w!==D.key?t.jsx("span",{className:"cn-data-table__sort",children:t.jsx(Kd,{size:14})}):t.jsx("span",{className:"cn-data-table__sort cn-data-table__sort--active",children:x==="asc"?"↑":"↓"}):null;return t.jsxs("div",{className:"cn-data-table",children:[t.jsxs("table",{className:"cn-data-table__table",children:[t.jsx("thead",{children:t.jsx("tr",{className:"cn-data-table__header",children:o.map(D=>t.jsxs("th",{className:`cn-data-table__th${D.sortable?" cn-data-table__th--sortable":""}`,onClick:()=>P(D),children:[D.label,N(D)]},D.key))})}),t.jsxs("tbody",{children:[(!i||i.length===0)&&t.jsx("tr",{children:t.jsx("td",{className:"cn-data-table__td cn-data-table__empty",colSpan:o.length,children:S})}),i==null?void 0:i.map((D,I)=>t.jsxs(t.Fragment,{children:[t.jsx("tr",{className:`cn-data-table__row${c?" cn-data-table__row--expandable":""}${L.has(I)?" cn-data-table__row--expanded":""}`,onClick:()=>C(I),children:o.map(A=>t.jsx("td",{className:"cn-data-table__td",children:D[A.key]??"—"},A.key))},I),c&&L.has(I)&&p&&t.jsx("tr",{className:"cn-data-table__expanded-row",children:t.jsx("td",{colSpan:o.length,className:"cn-data-table__expanded",children:p(D,I)})},`${I}-expanded`)]}))]})]}),m>1&&t.jsxs("div",{className:"cn-data-table__pagination",children:[t.jsx("button",{type:"button",className:"cn-data-table__page-btn",disabled:g<=1,onClick:()=>f==null?void 0:f(g-1),"aria-label":"Previous page",children:"«"}),t.jsxs("span",{className:"cn-data-table__page-info",children:["Page ",g," of ",m]}),t.jsx("button",{type:"button",className:"cn-data-table__page-btn",disabled:g>=m,onClick:()=>f==null?void 0:f(g+1),"aria-label":"Next page",children:"»"})]})]})}function wi({startDate:o,endDate:i,onChange:c,maxRange:p,disabled:d}){const g=v=>{const w=v.target.value;let x=i;if(p&&x){const S=new Date(w),L=new Date(x);if(Math.ceil((L-S)/(1e3*60*60*24))>p){const C=new Date(S);C.setDate(C.getDate()+p),x=C.toISOString().split("T")[0]}}c==null||c({startDate:w,endDate:x})},m=v=>{const w=v.target.value;let x=o;if(p&&x){const S=new Date(x),L=new Date(w);if(Math.ceil((L-S)/(1e3*60*60*24))>p){const C=new Date(L);C.setDate(C.getDate()-p),x=C.toISOString().split("T")[0]}}c==null||c({startDate:x,endDate:w})},f=new Date().toISOString().split("T")[0];return t.jsxs("div",{className:"cn-date-range",children:[t.jsx("input",{type:"date",className:"cn-form-field__input cn-date-range__input",value:o||"",onChange:g,max:i||f,disabled:d}),t.jsx("span",{className:"cn-date-range__separator",children:"to"}),t.jsx("input",{type:"date",className:"cn-form-field__input cn-date-range__input",value:i||"",onChange:m,min:o||void 0,max:f,disabled:d}),p&&t.jsxs("span",{className:"cn-date-range__limit",children:[p,"-day max"]})]})}const g2={3:"accept",2:"custom",1:"reject"},v2={Essential:"essential",Analytics:"analytics",Marketing:"marketing",Functional:"functional"},y2=[{key:"id",label:"Consent ID",sortable:!0},{key:"level",label:"Consent Level",sortable:!0},{key:"categories",label:"Categories",sortable:!1},{key:"date",label:"Date / Time",sortable:!0},{key:"ip",label:"IP Address",sortable:!1}];function _2(o){return{id:t.jsx("span",{className:"cn-consent-id",children:o.id}),level:t.jsx("span",{className:`cn-level-pill cn-level-pill--${g2[o.levelNum]||"custom"}`,children:o.level}),categories:t.jsx("div",{className:"cn-cat-tags",children:(o.categories||[]).map(i=>t.jsx("span",{className:`cn-cat-tag cn-cat-tag--${v2[i]||"essential"}`,children:i},i))}),date:o.date,ip:t.jsxs("span",{className:"cn-ip-masked",children:[o.ip," ",t.jsx(Gs,{size:14,style:{verticalAlign:"middle"}})]})}}function ki({maxRange:o,onStatsUpdate:i}){const c=new Date().toISOString().split("T")[0],p=new Date(Date.now()-10080*60*1e3).toISOString().split("T")[0],[d,g]=j.useState({startDate:p,endDate:c}),[m,f]=j.useState(1),[v,w]=j.useState("date"),[x,S]=j.useState("desc"),[L,z]=j.useState([]),[C,P]=j.useState(0),[N,D]=j.useState(0),[I,A]=j.useState(!0),[W,$]=j.useState(null),O=j.useRef(""),K=j.useCallback(async()=>{A(!0),$(null);const T=`${d.startDate}|${d.endDate}`;try{const J=await Bu({page:m,start_date:d.startDate,end_date:d.endDate,sort:v,order:x});z((J.logs||[]).map(_2)),P(J.totalPages||0),D(J.total||0),i&&T!==O.current&&(O.current=T,i(J.consentBreakdown||null))}catch(J){$(J.message||"Failed to load consent logs."),i&&T!==O.current&&(O.current=T,i(null))}finally{A(!1)}},[m,d,v,x]);j.useEffect(()=>{K()},[K]);const Q=T=>{g(T),f(1)},Z=(T,J)=>{w(T),S(J),f(1)};return t.jsxs("div",{className:"cn-consent-log-table",children:[t.jsxs("div",{className:"cn-consent-log-table__controls",children:[t.jsx(wi,{startDate:d.startDate,endDate:d.endDate,onChange:Q,maxRange:o}),N>0&&t.jsxs("span",{className:"cn-consent-log-table__count",children:[N.toLocaleString()," record",N!==1?"s":""]})]}),W&&t.jsx("div",{className:"cn-notice cn-notice--error",children:W}),t.jsx(m2,{columns:y2,rows:L,pageSize:10,currentPage:m,totalPages:C,onPageChange:f,onSort:Z,sortColumn:v,sortDirection:x,loading:I,emptyMessage:"No consent records found for selected date range."})]})}const Ni={pass:{icon:t.jsx(mi,{size:16}),cls:"pass"},warn:{icon:t.jsx(gi,{size:16}),cls:"warn"},fail:{icon:"○",cls:"fail"},na:{icon:"–",cls:"na"}};function x2({items:o}){return t.jsx("div",{className:"cn-evidence-panel",children:o.map((i,c)=>{const p=Ni[i.status]||Ni.na;return t.jsxs("div",{className:"cn-evidence-item",children:[t.jsx("span",{className:`cn-evidence-item__icon cn-evidence-item__icon--${p.cls}`,children:p.icon}),t.jsx("span",{className:"cn-evidence-item__text",children:i.text})]},c)})})}function Si({proLocked:o=!1,onOpenPricingModal:i}){const[c,p]=j.useState("gdpr"),{dashboard:d}=vt(),{config:g}=Mt(),m=(g==null?void 0:g.blocking)||{},f=m.providers||[],v=f.length>0,w=f.filter(A=>!A.CategoryID).length,x=v&&w===0,S=v&&w>0,L=!!m.gpc_support,z=(d==null?void 0:d.consentCount)??0,C=[{status:"pass",text:"Consent banner active on all pages"},{status:x?"pass":S?"warn":"na",text:x?"Cookie categories clearly defined":S?"Cookie categories — some trackers still uncategorized":"Cookie categories — run a script scan to assess"},{status:"na",text:"Data retention policy — verify in web app"},{status:"na",text:"DPO contact details — verify in web app"}],P=[{status:L?"pass":"warn",text:L?"Do Not Sell / Share signal honored (GPC active)":"Do Not Sell / Share signal — enable GPC in Consent Modes"},{status:"pass",text:"Opt-out mechanism functional"},{status:"na",text:"Privacy policy link in banner — verify in web app"},{status:"na",text:"Consumer rights request handling — verify in web app"}],N=[{status:x?"pass":S?"fail":"na",text:x?"Prior consent obtained before non-essential cookies":S?"Prior consent — uncategorized trackers firing without consent":"Prior consent — run a script scan to assess"},{status:z>0?"pass":"warn",text:z>0?"Consent withdrawal mechanism available and in use":"Consent withdrawal — no consent records yet; verify banner is live"},{status:"na",text:"Cookie lifetime disclosure — verify in web app"},{status:"na",text:"Legitimate interest assessment — verify in web app"}],D=[{key:"gdpr",label:"GDPR",items:C,locked:!1},{key:"ccpa",label:"CCPA",items:P,locked:!1},{key:"eprivacy",label:"ePrivacy",items:N,locked:o}],I=D.find(A=>A.key===c);return t.jsxs("div",{className:"cn-compliance-evidence",children:[t.jsx("nav",{className:"cn-evidence-tabs",children:D.map(A=>t.jsxs("button",{type:"button",className:`cn-evidence-tab${c===A.key?" cn-evidence-tab--active":""}`,onClick:()=>p(A.key),children:[A.label,A.locked&&t.jsx(wn,{})]},A.key))}),I!=null&&I.locked?t.jsx("div",{className:"cn-evidence-panel cn-evidence-panel--locked",children:t.jsxs("div",{className:"cn-evidence-lock",children:[t.jsx("span",{className:"cn-evidence-lock__icon",children:t.jsx(Gs,{size:24})}),t.jsx("p",{className:"cn-evidence-lock__msg",children:"ePrivacy compliance evidence is available on Pro. Upgrade to unlock."}),t.jsx("button",{type:"button",className:"cn-button cn-button--upgrade",onClick:()=>i&&i(),children:"Upgrade to Pro"})]})}):t.jsx(x2,{items:(I==null?void 0:I.items)||[]})]})}function j2({isPro:o=!1,onOpenPricingModal:i}){const c=new Date().toISOString().split("T")[0],p=new Date(Date.now()-720*60*60*1e3).toISOString().split("T")[0],[d,g]=j.useState({startDate:p,endDate:c}),{exportCsv:m,loading:f,error:v}=Ad(),w=()=>{m==null||m({start_date:d.startDate,end_date:d.endDate})};return o?t.jsxs("div",{className:"cn-export-section",children:[t.jsx("div",{className:"cn-export-section__label",children:"Export Consent Log"}),t.jsx(wi,{startDate:d.startDate,endDate:d.endDate,onChange:g}),t.jsx($e,{variant:"primary",onClick:w,disabled:f,children:f?"Exporting…":"Export CSV"}),v&&t.jsx("div",{className:"cn-export-section__error",children:v})]}):t.jsx(Jo,{requiredTier:"pro",message:"Upgrade to Pro to export consent logs as CSV.",onCta:i,children:t.jsxs("div",{className:"cn-export-section cn-export-section--locked",children:[t.jsx("div",{className:"cn-export-section__label",children:"Export Consent Log"}),t.jsx($e,{variant:"outline",disabled:!0,children:"Export CSV"})]})})}function w2(){const o=[{id:"CID-7F2A9C",level:"Personalized",levelNum:3,date:"2026-02-26 14:37",ip:"192.168.x.x"},{id:"CID-4B1E3D",level:"Balanced",levelNum:2,date:"2026-02-26 13:58",ip:"10.0.x.x"},{id:"CID-9A0F12",level:"Private",levelNum:1,date:"2026-02-26 13:21",ip:"172.16.x.x"},{id:"CID-C3D8E5",level:"Personalized",levelNum:3,date:"2026-02-26 12:04",ip:"192.168.x.x"},{id:"CID-2E6B7A",level:"Balanced",levelNum:2,date:"2026-02-25 22:49",ip:"10.0.x.x"}],i=[{type:"banner",what:"Position changed to Bottom",when:"Feb 25, 14:03"},{type:"setting",what:"GDPR regulation enabled",when:"Feb 23, 09:41"},{type:"scan",what:"3 new scripts detected & categorized",when:"Feb 22, 16:18"},{type:"setting",what:"Google Consent Mode v2 activated",when:"Feb 20, 11:05"}],c={3:"accept",2:"custom",1:"reject"},p={banner:"Banner",setting:"Setting",scan:"Scan"};return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"cn-blurred-teaser__section",children:[t.jsxs("div",{className:"cn-blurred-teaser__section-header",children:[t.jsx("span",{className:"cn-blurred-teaser__section-title",children:"Cookie Consent Log"}),t.jsx("span",{className:"cn-blurred-teaser__section-meta",children:"3,241 total records — showing 1–5"})]}),t.jsxs("table",{className:"cn-blurred-teaser__table",children:[t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"Consent ID"}),t.jsx("th",{children:"Consent Level"}),t.jsx("th",{children:"Date / Time"}),t.jsx("th",{children:"IP Address"})]})}),t.jsx("tbody",{children:o.map(d=>t.jsxs("tr",{children:[t.jsx("td",{children:t.jsx("span",{className:"cn-consent-id",children:d.id})}),t.jsx("td",{children:t.jsx("span",{className:`cn-level-pill cn-level-pill--${c[d.levelNum]}`,children:d.level})}),t.jsx("td",{children:d.date}),t.jsx("td",{children:t.jsx("span",{className:"cn-ip-masked",children:d.ip})})]},d.id))})]})]}),t.jsxs("div",{className:"cn-blurred-teaser__section",children:[t.jsxs("div",{className:"cn-blurred-teaser__section-header",children:[t.jsx("span",{className:"cn-blurred-teaser__section-title",children:"Config Change History"}),t.jsx("span",{className:"cn-blurred-teaser__section-meta",children:"Last 30 days"})]}),t.jsx("div",{className:"cn-blurred-teaser__timeline",children:i.map((d,g)=>t.jsxs("div",{className:"cn-blurred-teaser__tl-row",children:[t.jsx("div",{className:`cn-blurred-teaser__tl-dot cn-blurred-teaser__tl-dot--${d.type}`}),t.jsxs("div",{className:"cn-blurred-teaser__tl-text",children:[t.jsxs("div",{className:"cn-blurred-teaser__tl-what",children:[t.jsx("span",{className:`cn-change-badge cn-change-badge--${d.type}`,children:p[d.type]}),d.what]}),t.jsx("div",{className:"cn-blurred-teaser__tl-when",children:d.when})]})]},g))})]})]})}function k2(){return t.jsxs(t.Fragment,{children:[t.jsx(dl,{showPortalLink:!1}),t.jsx(Fn,{title:"Why Connect?",children:t.jsx("ul",{className:"cn-benefit-list",children:["Timestamped consent proofs for every visitor interaction","Searchable audit log for GDPR and CCPA regulators","Config change history — who changed what and when","Exportable compliance evidence in one click","Prove compliance if you ever face a regulatory inquiry"].map((o,i)=>t.jsxs("li",{className:"cn-benefit-item",children:[t.jsx("span",{className:"cn-benefit-item__icon",children:t.jsx(mi,{size:16})}),t.jsx("span",{children:o})]},i))})})]})}function Ci({isPro:o,onOpenPricingModal:i,addNotice:c}){return t.jsxs(t.Fragment,{children:[t.jsx(dl,{addNotice:c}),t.jsxs(Fn,{title:"Data Retention",children:[t.jsxs("div",{className:`cn-retention-info${o?" cn-retention-info--pro":""}`,children:[t.jsxs("span",{className:"cn-retention-info__value",children:[o?"Unlimited":"7-day"," retention"]}),t.jsx("span",{className:"cn-retention-info__label",children:o?"Pro plan":"Free plan"})]}),!o&&t.jsx("p",{className:"cn-retention-info__note",children:"Upgrade to Pro for unlimited history."})]}),t.jsx(Fn,{title:"Export",children:t.jsx(j2,{isPro:o,onOpenPricingModal:i??void 0})})]})}function N2({addNotice:o,onOpenWelcomeModal:i,onOpenPricingModal:c}){const{isBasic:p,isFree:d}=Be();if(p)return t.jsxs(yt,{sidebar:t.jsx(k2,{}),children:[t.jsxs("div",{className:"cn-protection-header",children:[t.jsx("h1",{className:"cn-protection-header__title",children:"Audit Trail"}),t.jsx("p",{className:"cn-protection-header__subtitle",children:"Consent logs, compliance evidence, and configuration history."})]}),t.jsx(h2,{onActivate:()=>i&&i()}),t.jsxs("div",{className:"cn-blurred-teaser",children:[t.jsx("div",{className:"cn-blurred-teaser__blur",children:t.jsx(w2,{})}),t.jsxs("div",{className:"cn-blurred-teaser__overlay",children:[t.jsx("span",{className:"cn-blurred-teaser__overlay-icon",children:t.jsx(hi,{size:24})}),t.jsx("div",{className:"cn-blurred-teaser__overlay-label",children:"Full Compliance Audit Trail"}),t.jsx("div",{className:"cn-blurred-teaser__overlay-sub",children:"Consent logs, config timeline, compliance evidence & more"}),t.jsx($e,{variant:"primary",onClick:()=>i&&i(),children:"Activate Protection"})]})]})]});const[g,m]=j.useState(null),[f,v]=j.useState(!0),w=x=>{m(x),v(!1)};return d?t.jsxs(yt,{sidebar:t.jsx(Ci,{isPro:!1,onOpenPricingModal:c,addNotice:o}),children:[t.jsxs("div",{className:"cn-protection-header",children:[t.jsx("h1",{className:"cn-protection-header__title",children:"Audit Trail"}),t.jsx("p",{className:"cn-protection-header__subtitle",children:"Consent logs and compliance evidence for your site."})]}),t.jsx(ji,{breakdown:g,loading:f}),t.jsx(ki,{maxRange:7,onStatsUpdate:w}),t.jsx(xi,{title:"Compliance Evidence"}),t.jsx(Si,{proLocked:!0,onOpenPricingModal:c})]}):t.jsxs(yt,{sidebar:t.jsx(Ci,{isPro:!0,onOpenPricingModal:c,addNotice:o}),children:[t.jsxs("div",{className:"cn-protection-header",children:[t.jsx("h1",{className:"cn-protection-header__title",children:"Audit Trail"}),t.jsx("p",{className:"cn-protection-header__subtitle",children:"Full consent log history, compliance evidence, and configuration timeline."})]}),t.jsx(ji,{breakdown:g,loading:f}),t.jsx(ki,{onStatsUpdate:w}),t.jsx(xi,{title:"Compliance Evidence"}),t.jsx(Si,{proLocked:!1,onOpenPricingModal:c})]})}var S2=Wo();const bi={sm:480,md:720,lg:960},Li='a[href],button:not([disabled]),textarea:not([disabled]),input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex="-1"])';function Pi({isOpen:o,onClose:i,size:c="md",title:p,children:d}){const g=j.useRef(null),m=j.useRef(null),f=j.useCallback(S=>{if(S.key==="Escape"&&i){i();return}if(S.key==="Tab"&&g.current){const L=g.current.querySelectorAll(Li);if(L.length===0){S.preventDefault();return}const z=L[0],C=L[L.length-1];S.shiftKey&&document.activeElement===z?(S.preventDefault(),C.focus()):!S.shiftKey&&document.activeElement===C&&(S.preventDefault(),z.focus())}},[i]);if(j.useEffect(()=>{let S;return o&&(m.current=document.activeElement,document.addEventListener("keydown",f),document.body.style.overflow="hidden",S=setTimeout(()=>{if(g.current){const L=g.current.querySelector(Li);L?L.focus():g.current.focus()}},50)),()=>{clearTimeout(S),document.removeEventListener("keydown",f),document.body.style.overflow="",m.current&&typeof m.current.focus=="function"&&(m.current.focus(),m.current=null)}},[o,f]),!o)return null;const v=S=>{S.target===S.currentTarget&&i&&i()},w={position:"fixed",top:0,right:0,bottom:0,left:0,background:"rgba(0,0,0,0.6)",zIndex:1e5,display:"flex",alignItems:"center",justifyContent:"center",padding:"32px"},x=p?"cn-modal-title":void 0;return S2.createPortal(t.jsx("div",{className:"cn-modal-overlay",style:w,onClick:v,children:t.jsxs("div",{ref:g,className:`cn-modal cn-modal--${c}`,style:{maxWidth:bi[c]||bi.md},role:"dialog","aria-modal":"true","aria-labelledby":x,tabIndex:-1,children:[t.jsx("button",{className:"cn-modal__close",onClick:i,type:"button","aria-label":"Close",children:"×"}),p&&t.jsx("div",{className:"cn-modal__header",id:x,children:p}),t.jsx("div",{className:"cn-modal__content",children:d})]})}),document.body)}function C2({steps:o,currentStep:i=0,onStepClick:c}){return t.jsx("div",{className:"cn-step-dots",role:"group","aria-label":"Progress",children:o.map((p,d)=>{const g=dc(d):void 0,style:g&&c?{cursor:"pointer"}:void 0,tabIndex:g&&c?0:-1},d)})})}function b2({onBannerOnly:o,onProtect:i,onComply:c,onLearnMore:p}){var m;const g=(((m=window.cnReactData)==null?void 0:m.detectedPlugins)||[]).includes("google");return t.jsxs("div",{className:"cn-welcome-step cn-welcome-step--choose",children:[t.jsx("h1",{className:"cn-choose__heading",children:"Choose your protection level"}),g&&t.jsxs("div",{className:"cn-choose__google-notice",children:[t.jsx("strong",{children:"Google tools detected."})," ","Make sure Google Consent Mode is configured during setup."]}),t.jsxs("div",{className:"cn-protection-cards",children:[t.jsxs("div",{className:"cn-protection-card",children:[t.jsx("span",{className:"cn-protection-card__badge cn-protection-card__badge--risk",children:"Banner Only"}),t.jsx("div",{className:"cn-protection-card__icon cn-protection-card__icon--banner",children:t.jsx(Hd,{size:32})}),t.jsx("h4",{className:"cn-protection-card__title",children:"I just want a banner"}),t.jsx("p",{className:"cn-protection-card__subtitle",children:"Display-only notice, no compliance features"}),t.jsx("div",{className:"cn-protection-card__divider"}),t.jsx("div",{className:"cn-protection-card__price-label",children:"Banner Only"}),t.jsx("span",{className:"cn-protection-card__price-note cn-protection-card__price-note--danger",children:"Does not meet GDPR requirements"}),t.jsxs("ul",{className:"cn-protection-card__features",children:[t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Cookie notice banner"]}),t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Accept / Reject buttons"]}),t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Custom colors & text"]}),t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--excluded",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✗"}),"No consent records"]}),t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--excluded",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✗"}),"No script blocking"]})]}),t.jsx("div",{className:"cn-protection-card__footer",children:t.jsx("button",{type:"button",className:"cn-protection-card__btn cn-protection-card__btn--ghost",onClick:o,children:"Just the Banner"})})]}),t.jsxs("div",{className:"cn-protection-card cn-protection-card--recommended",children:[t.jsx("span",{className:"cn-protection-card__badge cn-protection-card__badge--rec",children:"Recommended"}),t.jsx("div",{className:"cn-protection-card__icon cn-protection-card__icon--protect",children:t.jsx(Bd,{size:32})}),t.jsx("h4",{className:"cn-protection-card__title",children:"For small sites"}),t.jsx("p",{className:"cn-protection-card__subtitle",children:"Essential compliance, no credit card required"}),t.jsx("div",{className:"cn-protection-card__divider"}),t.jsx("div",{className:"cn-protection-card__price-label",children:"Sign Up Free"}),t.jsx("span",{className:"cn-protection-card__price-note",children:"Up to 1,000 visits / month"}),t.jsxs("ul",{className:"cn-protection-card__features",children:[t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Best for sites without ads"]}),t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Google Consent Mode v2"]}),t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Global Privacy Control"]}),t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Tracker blocking"]}),t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Standard Support"]})]}),t.jsx("div",{className:"cn-protection-card__footer",children:t.jsx("button",{type:"button",className:"cn-protection-card__btn cn-protection-card__btn--primary",onClick:i,children:"Protect My Business"})})]}),t.jsxs("div",{className:"cn-protection-card",children:[t.jsx("span",{className:"cn-protection-card__badge cn-protection-card__badge--max",children:"Full Compliance"}),t.jsx("div",{className:"cn-protection-card__icon cn-protection-card__icon--comply",children:t.jsx(Wd,{size:32})}),t.jsx("h4",{className:"cn-protection-card__title",children:"Ensure full compliance"}),t.jsx("p",{className:"cn-protection-card__subtitle",children:"Full coverage for EU, US & growing businesses"}),t.jsx("div",{className:"cn-protection-card__divider"}),t.jsx("div",{className:"cn-protection-card__price-label",children:"$14.95/mo"}),t.jsx("span",{className:"cn-protection-card__price-note",children:"Unlimited visitors protected"}),t.jsxs("ul",{className:"cn-protection-card__features",children:[t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Best for sites with analytics"]}),t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Google, Facebook & Microsoft Consent Modes"]}),t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Geolocation rules — show right banner by country"]}),t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Lifetime audit trail & consent records"]}),t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Advanced autoblocking + script categorization"]}),t.jsxs("li",{className:"cn-protection-card__feature cn-protection-card__feature--included",children:[t.jsx("span",{className:"cn-protection-card__feature-icon",children:"✓"}),"Priority Support"]})]}),t.jsx("div",{className:"cn-protection-card__footer",children:t.jsx("button",{type:"button",className:"cn-protection-card__btn cn-protection-card__btn--secondary",onClick:c,children:"Ensure Full Compliance"})})]})]})]})}const L2=[{domains:1,monthly:14.95,yearly:149.5,perDomain:null,popular:!0},{domains:5,monthly:29.95,yearly:299.5,perDomain:5.99},{domains:10,monthly:49.95,yearly:499.5,perDomain:4.99}];function P2({onSelectPlan:o,onBack:i}){const[c,p]=j.useState("monthly");return t.jsxs("div",{className:"cn-welcome-step cn-welcome-step--pro-pricing",children:[t.jsx("button",{type:"button",className:"cn-pro-pricing__back cn-pro-pricing__back--top",onClick:i,children:"← Back to protection options"}),t.jsxs("div",{className:"cn-pro-pricing__hero",children:[t.jsx("h1",{className:"cn-pro-pricing__heading",children:"Compliance by Hu‑manity.co — Professional"}),t.jsx("p",{className:"cn-pro-pricing__sub",children:"Everything you need to protect your business from privacy regulations worldwide."})]}),t.jsxs("div",{className:"cn-pro-pricing__features-band",children:[t.jsx("span",{className:"cn-pro-pricing__features-label",children:"Everything in Free, plus:"}),t.jsxs("ul",{className:"cn-pro-pricing__features-list",children:[t.jsx("li",{children:"🌍 Geolocation rules — show the right banner by country"}),t.jsx("li",{children:"📊 Google Consent Mode v2 — required for Google Analytics & Ads"}),t.jsx("li",{children:"♾️ Unlimited visits & lifetime consent records"}),t.jsx("li",{children:"🔒 Advanced autoblocking & script categorization"})]})]}),t.jsxs("div",{className:"cn-pill-toggle",style:{margin:"0 auto 24px"},children:[t.jsx("button",{type:"button",className:`cn-pill-toggle__btn${c==="monthly"?" cn-pill-toggle__btn--active":""}`,onClick:()=>p("monthly"),children:"Monthly"}),t.jsxs("button",{type:"button",className:`cn-pill-toggle__btn${c==="yearly"?" cn-pill-toggle__btn--active":""}`,onClick:()=>p("yearly"),children:["Yearly ",t.jsx("span",{className:"cn-pill-toggle__badge",children:"Save 17%"})]})]}),t.jsx("div",{className:"cn-pro-pricing__cards",children:L2.map(d=>t.jsxs("div",{className:`cn-pro-pricing__card${d.popular?" cn-pro-pricing__card--popular":""}`,children:[d.popular&&t.jsx("span",{className:"cn-pro-pricing__card-badge",children:"Most Popular"}),t.jsx("div",{className:"cn-pro-pricing__card-domains",children:d.domains}),t.jsx("span",{className:"cn-pro-pricing__card-domains-label",children:d.domains===1?"Domain":"Domains"}),t.jsxs("div",{className:"cn-pro-pricing__card-price",children:[t.jsx("sup",{children:"$"}),c==="monthly"?d.monthly.toFixed(2):d.yearly.toFixed(2),t.jsxs("sub",{children:["/ ",c==="monthly"?"mo":"yr"]})]}),d.perDomain&&t.jsxs("span",{className:"cn-pro-pricing__card-per-domain",children:["$",d.perDomain.toFixed(2)," per domain"]}),t.jsx("button",{type:"button",className:`cn-pro-pricing__card-btn${d.popular?" cn-pro-pricing__card-btn--primary":""}`,onClick:()=>o(d.domains,c,d[c]),children:"Select Plan"})]},d.domains))}),t.jsx("p",{className:"cn-pro-pricing__guarantee",children:"✓ 30-day money-back guarantee on all plans"}),c==="yearly"&&t.jsx("p",{className:"cn-pro-pricing__billing-note",children:"Billed annually. Cancel anytime."}),t.jsxs("div",{className:"cn-pro-pricing__legal",children:[t.jsx("a",{href:"https://hu-manity.co/terms",target:"_blank",rel:"noreferrer",children:"Terms of Service"})," · ",t.jsx("a",{href:"https://hu-manity.co/privacy",target:"_blank",rel:"noreferrer",children:"Privacy Policy"})]}),t.jsx("div",{className:"cn-pro-pricing__maybe-later",children:t.jsx("button",{type:"button",className:"cn-pro-pricing__maybe-later-btn",onClick:i,children:"Maybe later — stay on free"})})]})}const E2=[{text:t.jsxs(t.Fragment,{children:[t.jsx("strong",{children:"Consent records"})," — no proof if a regulator asks"]})},{text:t.jsxs(t.Fragment,{children:[t.jsx("strong",{children:"Cookie autoblocking"})," — scripts fire before consent"]})},{text:t.jsxs(t.Fragment,{children:[t.jsx("strong",{children:"Audit trail"})," — no evidence if investigated"]})},{text:t.jsxs(t.Fragment,{children:[t.jsx("strong",{children:"Google Consent Mode"})," — EU ads may be flagged"]})}];function D2({onDismissToSettings:o,onBackToChoose:i}){const[c,p]=j.useState(!1);return t.jsx("div",{className:"cn-welcome-step cn-welcome-step--warning",children:t.jsxs("div",{className:"cn-warning-modal",children:[t.jsx("div",{className:"cn-warning-modal__icon",children:t.jsx(gi,{size:32})}),t.jsx("h3",{className:"cn-warning-modal__heading",children:"Are you sure?"}),t.jsxs("p",{className:"cn-warning-modal__text",children:["Without Cookie Compliance, ",t.jsx("strong",{children:"all liability falls on you."})]}),t.jsxs("div",{className:"cn-warning-modal__consequences",children:[t.jsx("h5",{children:"You won’t have:"}),t.jsx("ul",{children:E2.map((d,g)=>t.jsxs("li",{children:[t.jsx("span",{className:"cn-warning-modal__consequence-icon",children:"❌"}),t.jsx("span",{children:d.text})]},g))})]}),t.jsxs("label",{className:"cn-warning-modal__checkbox",children:[t.jsx("input",{type:"checkbox",checked:c,onChange:d=>p(d.target.checked)}),t.jsxs("span",{children:["I understand ",t.jsx("strong",{children:"all liability falls on me and my business."})]})]}),t.jsxs("div",{className:"cn-warning-modal__actions",children:[t.jsx("button",{type:"button",className:"cn-warning-modal__btn cn-warning-modal__btn--danger",disabled:!c,onClick:o,children:"Don’t protect my business"}),t.jsx("button",{type:"button",className:"cn-warning-modal__btn cn-warning-modal__btn--safe",onClick:i,children:"Protect my business →"})]})]})})}const Ei=/^(?=.*[A-Z])(?=.*\d)[\w !"#$%&'()*+,\-./:;<=>?@[\]^\x60{|}~\\]{8,}$/;function T2({onComplete:o,onCompleteWithSubscriptions:i}){const[c,p]=j.useState("register"),[d,g]=j.useState(""),[m,f]=j.useState(""),[v,w]=j.useState(""),[x,S]=j.useState(!1),[L,z]=j.useState(!1),[C,P]=j.useState(null),N=window.cnReactData||{},D=W=>{p(W),P(null)},I=()=>{if(!d)return"Email is required.";if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(d))return"Please enter a valid email address.";if(c==="register"){if(!m)return"Password is required.";if(!Ei.test(m))return"Password must be 8+ characters with at least 1 capital letter and 1 number.";if(m!==v)return"Passwords do not match.";if(!x)return"Please accept the Terms of Service to continue."}else if(!m)return"Password is required.";return null},A=async W=>{W.preventDefault(),P(null);const $=I();if($){P($);return}z(!0);try{const O=c==="register"?N.registerNonce||"":N.loginNonce||"",Q=await In(c,c==="register"?{email:d,pass:m,pass2:v,terms:"1",language:"en"}:{email:d,pass:m},O);if(Q===!0||Q===1)o();else if(Q&&Q.error)P(Q.error);else if(Q!=null&&Q.app_has_subscription)o();else{const Z=Array.isArray(Q==null?void 0:Q.subscriptions)?Q.subscriptions.filter(T=>parseInt(T.availablelicense,10)>0).sort((T,J)=>parseInt(J.availablelicense,10)-parseInt(T.availablelicense,10)):[];Z.length>0&&i?i(Z,Q.fresh_nonce||""):o()}}catch(O){P(O.message||"Something went wrong. Please try again.")}finally{z(!1)}};return t.jsxs("div",{className:"cn-welcome-step cn-welcome-step--account",children:[t.jsx("h2",{className:"cn-account-heading",children:c==="register"?"Create your account":"Welcome back"}),t.jsx("p",{className:"cn-account-subtitle",children:c==="register"?"Takes 30 seconds. No credit card required.":"Log in to connect your existing Cookie Compliance account."}),t.jsxs("div",{className:"cn-pill-toggle",style:{minWidth:280,alignSelf:"center",marginBottom:24},children:[t.jsx("button",{type:"button",className:"cn-pill-toggle__btn"+(c==="register"?" cn-pill-toggle__btn--active":""),onClick:()=>D("register"),children:"Create Account"}),t.jsx("button",{type:"button",className:"cn-pill-toggle__btn"+(c==="login"?" cn-pill-toggle__btn--active":""),onClick:()=>D("login"),children:"Sign In"})]}),C==="email_exists"&&c==="register"?t.jsxs("div",{className:"cn-auth-form__error",children:["An account with this email already exists."," ",t.jsx("button",{type:"button",className:"cn-auth-form__switch-link",onClick:()=>{const W=d;D("login"),g(W)},children:"Sign in instead →"})]}):C?t.jsx("div",{className:"cn-auth-form__error",children:C}):null,c==="register"?t.jsxs(t.Fragment,{children:[t.jsxs("form",{className:"cn-auth-form",onSubmit:A,children:[t.jsx(Se,{label:"Email address",type:"email",value:d,onChange:g,placeholder:"you@company.com",autoComplete:"email"}),t.jsx(Se,{label:"Password",type:"password",value:m,onChange:f,placeholder:"Min. 8 characters, 1 capital, 1 number",autoComplete:"new-password"}),m&&!Ei.test(m)&&t.jsx("p",{className:"cn-auth-form__field-hint",children:"Min. 8 characters, at least 1 capital letter and 1 number"}),t.jsx(Se,{label:"Confirm Password",type:"password",value:v,onChange:w,placeholder:"Confirm password",autoComplete:"new-password"}),t.jsxs("label",{className:"cn-auth-form__terms",children:[t.jsx("input",{type:"checkbox",checked:x,onChange:W=>S(W.target.checked),required:!0})," ","I have read and agree to the"," ",t.jsx("a",{href:"https://hu-manity.co/terms",target:"_blank",rel:"noreferrer",children:"Terms of Service"})]}),t.jsx("div",{className:"cn-auth-form__actions",children:t.jsx("button",{type:"submit",className:"cn-button cn-button--primary cn-button--block",disabled:L||!x,children:L?"Creating account…":"Create Account"})})]}),t.jsx("div",{className:"cn-auth-or",children:t.jsx("span",{children:"OR"})}),t.jsxs("div",{className:"cn-auth-signin-teaser",children:[t.jsx("p",{className:"cn-auth-signin-teaser__heading",children:"Already have an account?"}),t.jsx("button",{type:"button",className:"cn-button cn-button--outline-primary",onClick:()=>D("login"),children:"Sign In"})]})]}):t.jsxs("form",{className:"cn-auth-form",onSubmit:A,autoComplete:"off",children:[t.jsxs("div",{"aria-hidden":"true",style:{position:"absolute",left:"-9999px",width:"1px",height:"1px",overflow:"hidden"},children:[t.jsx("input",{type:"text",name:"username",autoComplete:"username",tabIndex:-1,defaultValue:""}),t.jsx("input",{type:"password",name:"password",autoComplete:"current-password",tabIndex:-1,defaultValue:""})]}),t.jsx(Se,{label:"Email address",type:"email",name:"cn-account-email",value:d,onChange:g,placeholder:"you@company.com",autoComplete:"username",autoCapitalize:"none",autoCorrect:"off",spellCheck:!1}),t.jsx(Se,{label:"Password",type:"password",name:"cn-account-password",value:m,onChange:f,placeholder:"Your password",autoComplete:"new-password"}),t.jsx("div",{className:"cn-auth-form__forgot",children:t.jsx("a",{href:`${Qe}/forgot`,target:"_blank",rel:"noreferrer",children:"Forgot password?"})}),t.jsx("div",{className:"cn-auth-form__actions",children:t.jsx("button",{type:"submit",className:"cn-button cn-button--primary cn-button--block",disabled:L,children:L?"Logging in…":"Sign In"})})]})]})}async function R2({plan:o,paymentNonce:i,method:c,identifier:p}){const d=window.cnReactData||{},g=new FormData;g.append("action","cn_api_request"),g.append("nonce",d.welcomeNonce||""),g.append("request","payment"),g.append("cn_payment_nonce",d.paymentNonce||""),g.append("plan",o),g.append("payment_nonce",i),g.append("method",c),g.append("cn_payment_identifier",p||""),d.network&&g.append("cn_network","1");const m=await fetch(d.ajaxURL||"/wp-admin/admin-ajax.php",{method:"POST",credentials:"same-origin",body:g});if(!m.ok)throw new Error(`Payment request failed: ${m.status}`);return m.json()}const Di="https://js.braintreegateway.com/web/3.71.0/js";function Ti(o){return new Promise((i,c)=>{if(document.querySelector(`script[src="${o}"]`)){i();return}const p=document.createElement("script");p.src=o,p.async=!0,p.onload=i,p.onerror=()=>c(new Error(`Failed to load: ${o}`)),document.head.appendChild(p)})}function Ri({plan:o,onComplete:i,onBack:c=null,backLabel:p="Back"}){const[d,g]=j.useState("loading"),[m,f]=j.useState(null),[v,w]=j.useState(""),[x,S]=j.useState(!1),L=j.useRef(null);j.useEffect(()=>{let N=!1;async function D(){var $,O,K,Q;const I=["localhost","127.0.0.1"].includes(window.location.hostname);if(window.location.protocol!=="https:"&&!I){f("Secure payment requires HTTPS. Please contact your host."),g("error");return}try{await Ti(`${Di}/client.min.js`),await Ti(`${Di}/hosted-fields.min.js`)}catch{N||(f("Payment currently unavailable. Please try again later."),g("error"));return}if(typeof((O=($=window.braintree)==null?void 0:$.client)==null?void 0:O.create)!="function"||typeof((Q=(K=window.braintree)==null?void 0:K.hostedFields)==null?void 0:Q.create)!="function"){N||(f("Payment currently unavailable. Please try again later."),g("error"));return}let A;try{const Z=await In("get_bt_init_token");A=Z==null?void 0:Z.token}catch{A=null}if(!A){N||(f("Unable to initialize payment. Please refresh and try again."),g("error"));return}let W;try{W=await window.braintree.client.create({authorization:A})}catch{N||(f("Unable to initialize payment. Please refresh and try again."),g("error"));return}try{const Z=await window.braintree.hostedFields.create({client:W,styles:{input:{"font-size":"14px","font-family":"Lato, sans-serif",color:"#434f58"},"input.invalid":{color:"#e74c3c"},"input.valid":{color:"#434f58"}},fields:{number:{container:"#cn_card_number",placeholder:"•••• •••• •••• ••••"},expirationDate:{container:"#cn_expiration_date",placeholder:"MM / YY"},cvv:{container:"#cn_cvv",placeholder:"CVV"}}});if(N){Z.teardown();return}L.current=Z,Z.on("validityChange",()=>{const T=Z.getState(),J=Object.values(T.fields).every(me=>me.isValid);S(J)}),g("ready")}catch{N||(f("Unable to initialize payment. Please refresh and try again."),g("error"))}}return D(),()=>{N=!0,L.current&&(L.current.teardown(),L.current=null)}},[]);const z=async N=>{var D;if(N.preventDefault(),!(!L.current||d==="submitting")){g("submitting"),f(null);try{const I=await L.current.tokenize(),A=I.nonce,W=((D=I.details)==null?void 0:D.lastFour)||"",$=await R2({plan:o.planKey,paymentNonce:A,method:"credit_card",identifier:W});if($&&typeof $=="string"&&$.length>0)i();else{const O=($==null?void 0:$.error)||($==null?void 0:$.message)||"Payment failed. Please try again.";f(O),g("ready")}}catch(I){f(I.message||"Card error. Please check your details and try again."),g("ready")}}},C=(o==null?void 0:o.billing)==="yearly"?"Yearly":"Monthly",P=o?`${o.domains} Domain${o.domains>1?"s":""} — $${o.price.toFixed(2)} / ${C}`:"";return t.jsxs("div",{className:"cn-welcome-step cn-payment-step",children:[t.jsx("h2",{className:"cn-payment-step__heading",children:"Complete Your Order"}),o&&t.jsx("div",{className:"cn-payment-step__plan-pill",children:P}),m&&t.jsx("div",{className:"cn-payment-step__error",role:"alert",children:m}),d==="loading"&&!m&&t.jsx("p",{className:"cn-payment-step__loading",children:"Initializing secure payment form…"}),t.jsxs("form",{className:"cn-payment-step__form",onSubmit:z,style:{display:d==="loading"||d==="error"?"none":"block"},children:[t.jsxs("div",{className:"cn-payment-step__field",children:[t.jsx("label",{className:"cn-payment-step__label",htmlFor:"cn_card_name",children:"Cardholder Name"}),t.jsx("input",{id:"cn_card_name",type:"text",className:"cn-payment-step__input",value:v,onChange:N=>w(N.target.value),placeholder:"Name on card",autoComplete:"cc-name"})]}),t.jsxs("div",{className:"cn-payment-step__field",children:[t.jsx("label",{className:"cn-payment-step__label",children:"Card Number"}),t.jsx("div",{id:"cn_card_number",className:"cn-payment-step__hosted-field"})]}),t.jsxs("div",{className:"cn-payment-step__row",children:[t.jsxs("div",{className:"cn-payment-step__field",children:[t.jsx("label",{className:"cn-payment-step__label",children:"Expiry"}),t.jsx("div",{id:"cn_expiration_date",className:"cn-payment-step__hosted-field"})]}),t.jsxs("div",{className:"cn-payment-step__field",children:[t.jsx("label",{className:"cn-payment-step__label",children:"CVV"}),t.jsx("div",{id:"cn_cvv",className:"cn-payment-step__hosted-field"})]})]}),t.jsx("div",{className:"cn-payment-step__braintree-badge",children:"🔒 Secured by Braintree"}),t.jsx("button",{type:"submit",className:"cn-button cn-button--primary cn-button--block cn-payment-step__submit",disabled:d==="submitting"||!x||!v.trim(),children:d==="submitting"?"Processing…":"Complete Purchase"}),c&&t.jsx("button",{type:"button",className:"cn-button cn-button--outline-primary cn-button--block cn-payment-step__back",onClick:c,children:p}),t.jsx("p",{className:"cn-payment-step__guarantee",children:"🛡️ 30-day money-back guarantee"}),t.jsxs("p",{className:"cn-payment-step__legal",children:["By completing your purchase you agree to our",t.jsx("a",{href:"https://hu-manity.co/terms",target:"_blank",rel:"noopener noreferrer",className:"cn-link",children:"Terms of Service"}),"and",t.jsx("a",{href:"https://cookie-compliance.co/privacy-policy/",target:"_blank",rel:"noopener noreferrer",className:"cn-link",children:"Privacy Policy"}),"."]})]}),c&&(d==="loading"||d==="error")&&t.jsx("button",{type:"button",className:"cn-button cn-button--outline-primary cn-button--block cn-payment-step__back cn-payment-step__back--standalone",onClick:c,children:p})]})}function z2({subscriptions:o,selectedPlan:i,nonce:c,onSuccess:p,onPayInstead:d,onFreeInstead:g}){var P;const[m,f]=j.useState(((P=o[0])==null?void 0:P.subscriptionid)??null),[v,w]=j.useState(!1),[x,S]=j.useState(!1),[L,z]=j.useState(null);o.reduce((N,D)=>N+parseInt(D.availablelicense,10),0);const C=async()=>{if(!(!m||v||x)){w(!0),z(null);try{const N=await In("use_license",{subscriptionID:m},"",c);if(N&&N.error)z(N.error),w(!1);else{S(!0);const D=o.find(A=>A.subscriptionid===m),I=D?Math.max(0,parseInt(D.availablelicense,10)-1):null;p(I)}}catch(N){z(N.message||"Something went wrong. Please try again."),w(!1)}}};return i?t.jsxs("div",{className:"cn-welcome-step cn-license-select",children:[t.jsx("h2",{className:"cn-license-select__heading",children:"You have unused Pro licenses — do you want to use one for this domain?"}),t.jsx("p",{className:"cn-license-select__sub",children:"Your existing plan covers this site. We’ll connect it now — no payment needed."}),o.length===1?t.jsxs("div",{className:"cn-license-select__single-card",children:[t.jsx("span",{className:"cn-license-select__card-name",children:"Compliance Pro"}),t.jsxs("span",{className:"cn-license-select__card-slots",children:[parseInt(o[0].availablelicense,10)," ","domain",parseInt(o[0].availablelicense,10)!==1?"s":""," remaining"]})]}):t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"cn-license-select__choose-label",children:"You have multiple plans with available sites. Choose one to connect this site to:"}),t.jsx("div",{className:"cn-license-select__cards",role:"radiogroup",children:o.map(N=>{const D=parseInt(N.availablelicense,10);return t.jsxs("label",{className:"cn-license-select__card"+(m===N.subscriptionid?" cn-license-select__card--selected":""),children:[t.jsx("input",{type:"radio",name:"cn_subscription",value:N.subscriptionid,checked:m===N.subscriptionid,onChange:()=>f(N.subscriptionid),className:"cn-license-select__radio"}),t.jsxs("div",{className:"cn-license-select__card-body",children:[t.jsx("span",{className:"cn-license-select__card-name",children:"Compliance Pro"}),t.jsxs("span",{className:"cn-license-select__card-slots",children:[D," domain",D!==1?"s":""," remaining"]})]})]},N.subscriptionid)})})]}),L&&t.jsx("div",{className:"cn-license-select__error",role:"alert",children:L}),t.jsx("div",{className:"cn-license-select__actions",children:t.jsx("button",{type:"button",className:"cn-button cn-button--primary cn-button--block",onClick:C,disabled:v||x||!m,children:v?"Connecting…":o.length>1?"Connect This Site to Selected Plan":"Connect This Site"})}),d&&t.jsx("button",{type:"button",className:"cn-license-select__free-link",onClick:d,children:"Need a different plan? Purchase a new subscription instead"})]}):t.jsxs("div",{className:"cn-welcome-step cn-license-select cn-license-select--upsell",children:[t.jsx("div",{className:"cn-license-select__upsell-icon",children:"✅"}),t.jsx("h2",{className:"cn-license-select__heading",children:"Good news — your account already has a Pro plan with available slots. Activate it here, free."}),t.jsx("p",{className:"cn-license-select__sub",children:"You have unused Pro license slots available. Connect this site to your existing plan at no extra cost — or continue with the free version."}),o.length>1&&t.jsx("div",{className:"cn-license-select__cards",role:"radiogroup",children:o.map(N=>{const D=parseInt(N.availablelicense,10);return t.jsxs("label",{className:"cn-license-select__card"+(m===N.subscriptionid?" cn-license-select__card--selected":""),children:[t.jsx("input",{type:"radio",name:"cn_subscription",value:N.subscriptionid,checked:m===N.subscriptionid,onChange:()=>f(N.subscriptionid),className:"cn-license-select__radio"}),t.jsxs("div",{className:"cn-license-select__card-body",children:[t.jsx("span",{className:"cn-license-select__card-name",children:"Compliance Pro"}),t.jsxs("span",{className:"cn-license-select__card-slots",children:[D," domain",D!==1?"s":""," remaining"]})]})]},N.subscriptionid)})}),L&&t.jsx("div",{className:"cn-license-select__error",role:"alert",children:L}),t.jsx("div",{className:"cn-license-select__actions",children:t.jsx("button",{type:"button",className:"cn-button cn-button--primary cn-button--block",onClick:C,disabled:v||x||!m,children:v?"Activating…":"Upgrade to Pro — No Extra Charge"})}),t.jsx("button",{type:"button",className:"cn-license-select__free-link",onClick:g,children:"Continue with free version instead"})]})}const A2=[{label:"Choose Protection"},{label:"Confirm"},{label:"Create Account"}];function zi(o){return o==="choose"||o==="pro-pricing"?0:o==="warning"?1:2}const M2=(o,i)=>"compliance_"+i+"_"+(o===1?"notrial":String(o));function I2({isOpen:o,onClose:i,onDismissToSettings:c}){const[p,d]=j.useState("choose"),[g,m]=j.useState(null),[f,v]=j.useState([]),[w,x]=j.useState(""),S=()=>{d("choose"),m(null),v([]),x(""),c?c():i&&i()},L=()=>{g?d("payment"):window.location.reload()},z=(N,D)=>{v(N),x(D),d("license-select")},C=N=>{const D=zi(p);N{switch(p){case"choose":return t.jsx(b2,{onBannerOnly:()=>d("warning"),onProtect:()=>d("account"),onComply:()=>d("pro-pricing"),onLearnMore:()=>d("pro-pricing")});case"pro-pricing":return t.jsx(P2,{onSelectPlan:(N,D,I)=>{m({planKey:M2(N,D),domains:N,billing:D,price:I}),d("account")},onBack:()=>{m(null),d("choose")}});case"warning":return t.jsx(D2,{onDismissToSettings:S,onBackToChoose:()=>d("choose")});case"account":return t.jsx(T2,{onComplete:L,onCompleteWithSubscriptions:z});case"license-select":return t.jsx(z2,{subscriptions:f,selectedPlan:g,nonce:w,onSuccess:N=>{const D=new URL(window.location.href);D.searchParams.set("license_assigned","1"),N!=null&&D.searchParams.set("slots_remaining",String(N)),window.location.href=D.toString()},onPayInstead:g?()=>d("payment"):null,onFreeInstead:()=>window.location.reload()});case"payment":return t.jsx(Ri,{plan:g,onComplete:()=>window.location.reload(),onBack:()=>d("account"),backLabel:"Back"});default:return null}};return t.jsxs(Pi,{isOpen:o,onClose:S,size:"lg",children:[P(),t.jsx(C2,{steps:A2,currentStep:zi(p),onStepClick:C})]})}const F2=[{icon:t.jsx(Gs,{size:24}),title:"Autoblocking",desc:"Scripts wait for visitor consent before firing."},{icon:t.jsx(Od,{size:24}),title:"Geographic Enforcement",desc:"Apply different rules by visitor location."},{icon:t.jsx(hi,{size:24}),title:"Consent Proofs",desc:"Exportable audit trail for every consent event."},{icon:t.jsx(Gd,{size:24}),title:"Priority Support",desc:"Fast, expert help when you need it."},{icon:t.jsx(Ud,{size:24}),title:"Advanced Analytics",desc:"Consent rates, geography, and trend data."},{icon:t.jsx($d,{size:24}),title:"Script Wizard",desc:"Register and manage third-party scripts easily."}],B2=[{domains:1,monthly:14.95,yearly:149.5,perDomain:null},{domains:5,monthly:29.95,yearly:299.5,perDomain:5.99,popular:!0,tagline:"Best for dev + staging + production"},{domains:10,monthly:49.95,yearly:499.5,perDomain:4.99,tagline:"For agencies & multi-site networks"}],O2=(o,i)=>"compliance_"+i+"_"+(o===1?"notrial":String(o));function U2({isOpen:o,onClose:i}){const[c,p]=j.useState("monthly"),[d,g]=j.useState(null),{isFree:m}=Be(),f=()=>{g(null),i()};return t.jsx(Pi,{isOpen:o,onClose:f,size:"lg",children:d?t.jsx("div",{className:"cn-welcome-step",children:t.jsx(Ri,{plan:d,onComplete:()=>window.location.reload(),onBack:()=>g(null),backLabel:"Back to plans"})}):t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"cn-pricing-hero",children:[t.jsx("h2",{className:"cn-pricing-hero__heading",children:"Compliance by Hu‑manity.co — Professional"}),t.jsx("p",{className:"cn-pricing-hero__sub",children:"Everything you need to stay compliant, protect your visitors, and prove it."})]}),t.jsx("div",{className:"cn-benefit-grid",children:F2.map((v,w)=>t.jsxs("div",{className:"cn-benefit-card",children:[t.jsx("div",{className:"cn-benefit-card__icon",children:v.icon}),t.jsx("div",{className:"cn-benefit-card__title",children:v.title}),t.jsx("div",{className:"cn-benefit-card__desc",children:v.desc})]},w))}),t.jsxs("div",{className:"cn-pill-toggle",style:{margin:"0 auto 20px"},children:[t.jsx("button",{className:`cn-pill-toggle__btn${c==="monthly"?" cn-pill-toggle__btn--active":""}`,type:"button",onClick:()=>p("monthly"),children:"Monthly"}),t.jsxs("button",{className:`cn-pill-toggle__btn${c==="yearly"?" cn-pill-toggle__btn--active":""}`,type:"button",onClick:()=>p("yearly"),children:["Yearly",t.jsx("span",{className:"cn-pill-toggle__badge",children:"Save 17%"})]})]}),t.jsx("div",{className:"cn-pricing-cards",children:B2.map(v=>t.jsxs("div",{className:`cn-pricing-card${v.popular?" cn-pricing-card--popular":""}`,children:[v.popular&&t.jsx("div",{className:"cn-pricing-card__popular-badge",children:"Most Popular"}),t.jsx("div",{className:"cn-pricing-card__domains",children:v.domains}),t.jsx("div",{className:"cn-pricing-card__domains-label",children:v.domains===1?"domain":"domains"}),v.tagline&&t.jsx("div",{className:"cn-pricing-card__tagline",children:v.tagline}),t.jsxs("div",{className:"cn-pricing-card__price",children:[t.jsx("sup",{children:"$"}),c==="monthly"?v.monthly.toFixed(2):(v.yearly/12).toFixed(2),t.jsx("sub",{children:" / mo"})]}),t.jsxs("div",{className:"cn-pricing-card__billed-note",style:c==="monthly"?{visibility:"hidden"}:void 0,children:["$",v.yearly.toFixed(2)," billed annually"]}),t.jsx($e,{variant:v.popular?"primary":"outline",size:"md",style:{width:"100%"},onClick:()=>{if(m)g({planKey:O2(v.domains,c),domains:v.domains,billing:c,price:c==="monthly"?v.monthly:v.yearly});else{const w=window.cnReactData&&window.cnReactData.uiMode==="react";window.location.href=w?"?page=cookie-notice&cn_react_welcome=1":"?page=cookie-notice&welcome=1"}},children:m?"Select Plan":"Get Started"})]},v.domains))}),t.jsx("p",{className:"cn-pricing-footer__learn-more",children:t.jsx("a",{href:"https://cookie-compliance.co/pricing/",target:"_blank",rel:"noopener noreferrer",className:"cn-link",children:"Learn more about Pro plans →"})}),t.jsx("p",{className:"cn-pricing-footer__dismiss",children:t.jsx("button",{type:"button",className:"cn-link-btn",onClick:f,children:"Maybe later — stay on Free"})})]})})}function $2(){const o=!!(window.cnReactData||{}).devMode,{tier:i}=Be(),c=new URLSearchParams(window.location.search),p=c.get("cn_tier")||i,d=parseInt(c.get("cn_usage")||"0",10),g=(window.cnReactData||{}).uiMode||"legacy",[m,f]=j.useState(d),[v,w]=j.useState(!1);if(!o)return null;function x(){window.confirm(`⚠️ Reset plugin to fresh-activation state? + +This clears: welcome flag, setup wizard flag, app_id, app_key, and subscription status.`)&&(w(!0),Vu().then(()=>{const P=new URL(window.location.href);P.searchParams.delete("cn_tier"),P.searchParams.delete("cn_usage"),window.location.href=P.toString()}).catch(P=>{alert("Reset failed: "+(P.message||"Unknown error")),w(!1)}))}function S(P,N=null){const D=new URLSearchParams(window.location.search);D.set("cn_tier",P),P==="free"&&N!==null?D.set("cn_usage",N):D.delete("cn_usage"),window.location.search=D.toString()}function L(P){const N=new URLSearchParams(window.location.search);N.set("ui_mode",P),P==="legacy"&&(N.delete("cn_tier"),N.delete("cn_usage")),window.location.search=N.toString()}const z=[{id:"basic",label:"Basic"},{id:"free",label:"Free"},{id:"pro",label:"Pro"}],C=[{id:"react",label:"React"},{id:"legacy",label:"Legacy"}];return t.jsxs("div",{className:"cn-dev-switcher",children:[t.jsxs("div",{className:"cn-dev-switcher__header",children:[t.jsx("span",{className:"cn-dev-switcher__icon",children:"🛠"}),t.jsx("span",{className:"cn-dev-switcher__title",children:"DEV MODE"})]}),t.jsx("div",{className:"cn-dev-switcher__label",children:"Account type"}),t.jsx("div",{className:"cn-dev-switcher__buttons",children:z.map(P=>t.jsx("button",{className:"cn-dev-switcher__btn"+(p===P.id?" cn-dev-switcher__btn--active":""),onClick:()=>S(P.id,P.id==="free"?m:null),children:P.label},P.id))}),t.jsx("div",{className:"cn-dev-switcher__label",children:"Admin UI"}),t.jsx("div",{className:"cn-dev-switcher__buttons",children:C.map(P=>t.jsx("button",{className:"cn-dev-switcher__btn"+(g===P.id?" cn-dev-switcher__btn--active":""),onClick:()=>L(P.id),children:P.label},P.id))}),p==="free"&&t.jsxs("div",{className:"cn-dev-switcher__usage",children:[t.jsxs("div",{className:"cn-dev-switcher__usage-row",children:[t.jsx("span",{className:"cn-dev-switcher__usage-label",children:"Usage"}),t.jsxs("span",{className:"cn-dev-switcher__usage-val",children:[m,"%"]})]}),t.jsx("input",{type:"range",min:"0",max:"100",value:m,className:"cn-dev-switcher__slider",onChange:P=>f(Number(P.target.value)),onMouseUp:P=>{P.stopPropagation(),S("free",m)},onTouchEnd:P=>{P.stopPropagation(),S("free",m)}})]}),t.jsx("div",{className:"cn-dev-switcher__divider"}),t.jsx("button",{className:"cn-dev-switcher__reset-btn",onClick:x,disabled:v,title:"Clears welcome flag, setup wizard, app connection & subscription status",children:v?"↺ Resetting…":"↺ Reset Plugin"})]})}class Ai extends j.Component{constructor(i){super(i),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(i,c){console.error("ErrorBoundary caught:",i,c)}render(){return this.state.hasError?t.jsxs("div",{className:"cn-error-boundary",children:[t.jsx("p",{className:"cn-error-boundary__message",children:"Something went wrong while loading this section."}),t.jsx("button",{type:"button",className:"button button-primary",onClick:()=>window.location.reload(),children:"Reload page"})]}):this.props.children}}function W2({onOpenPricingModal:o}){const{topBar:i,dismiss:c}=ri();if(i===null)return null;const d={critical:"crit",warning:"warning",info:"info"}[i.type]||"info";let g=null;return i.icon==="error"?g=t.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",width:"24",height:"24",children:[t.jsx("circle",{cx:"12",cy:"12",r:"10"}),t.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),t.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}):i.icon==="warning"?g=t.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",width:"24",height:"24",children:[t.jsx("path",{d:"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"}),t.jsx("line",{x1:"12",y1:"9",x2:"12",y2:"13"}),t.jsx("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})]}):i.icon==="info"&&(g=t.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",width:"24",height:"24",children:[t.jsx("circle",{cx:"12",cy:"12",r:"10"}),t.jsx("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),t.jsx("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"})]})),t.jsxs("div",{className:`cn-alert cn-alert--${d}`,style:{marginBottom:24},children:[t.jsx("div",{className:"cn-alert__icon",children:g}),t.jsxs("div",{className:"cn-alert__content",children:[t.jsx("h3",{className:"cn-alert__title",children:i.title}),t.jsx("p",{className:"cn-alert__desc",children:i.description})]}),t.jsx("div",{className:"cn-alert__actions",children:t.jsx("button",{type:"button",className:"cn-button cn-button--upgrade",onClick:o,children:i.cta.label})}),i.dismissible&&t.jsx("button",{type:"button",className:"cn-alert__dismiss",onClick:()=>c(i.id),"aria-label":"Dismiss",children:t.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",width:"18",height:"18",children:[t.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),t.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]})}const Vs=[{id:"protection",label:"Protection"},{id:"settings",label:"Settings"},{id:"audit-trail",label:"Audit Trail"}];function G2({dashboard:o,refetchDashboard:i,refetchConfig:c,notices:p,removeNotice:d,addNotice:g,activeTab:m,setActiveTab:f,appliedTemplateKey:v,handleTemplateApplied:w,showWelcomeModal:x,setShowWelcomeModal:S,showPricingModal:L,setShowPricingModal:z}){const{closeAllPanels:C}=mr(),P=j.useCallback(I=>{C(),f(I);const A=new URLSearchParams(window.location.search);A.delete("tab");const W=window.location.pathname+(A.toString()?"?"+A.toString():"")+"#"+I;window.history.replaceState({},"",W)},[C,f]),N=()=>{switch(m){case"protection":return t.jsx(Dd,{addNotice:g,onOpenWelcomeModal:()=>S(!0),onOpenPricingModal:()=>z(!0),onTabChange:P,appliedTemplateKey:v,onTemplateApplied:w});case"settings":return t.jsx(f2,{addNotice:g,onOpenWelcomeModal:()=>S(!0),onTabChange:P,appliedTemplateKey:v,onTemplateApplied:w,onOpenPricingModal:()=>z(!0)});case"audit-trail":return t.jsx(N2,{addNotice:g,onOpenWelcomeModal:()=>S(!0),onOpenPricingModal:()=>z(!0)});default:return null}},D=j.useCallback(()=>{S(!1),P("settings"),Uu().catch(()=>{})},[P,S]);return t.jsxs("div",{className:"cn-admin-app",children:[t.jsx($2,{}),p.map(I=>t.jsx(Tu,{type:I.type,dismissible:!0,onDismiss:()=>d(I.id),children:I.message},I.id)),t.jsx(Du,{tabs:Vs,activeTab:m,onTabChange:P}),t.jsxs("div",{className:"cn-tab-content",children:[t.jsx(W2,{onOpenPricingModal:()=>z(!0)}),t.jsx(Ai,{children:N()},m)]}),t.jsx(zu,{}),t.jsx(I2,{isOpen:x,onClose:()=>S(!1),onDismissToSettings:D}),t.jsx(U2,{isOpen:L,onClose:()=>z(!1)})]})}function H2(){var T,J,me;const{data:o,refetch:i}=Td(),{data:c,loading:p,refetch:d}=Rd(),[g,m]=j.useState([]),[f,v]=j.useState(null),w=Zu(((T=o==null?void 0:o.appConfig)==null?void 0:T.design)||((J=window.cnReactData)==null?void 0:J.bannerDesign)||null),x=f||w||"",S=j.useCallback(te=>{v(te)},[]),[L,z]=j.useState(()=>{var ge;const te=new URLSearchParams(window.location.search).get("tab");if(te==="consent-logs")return"audit-trail";if(Vs.find(_e=>_e.id===te))return te;const ee=window.location.hash.replace("#","");return Vs.find(_e=>_e.id===ee)?ee:!((ge=window.cnReactData)!=null&&ge.app_id)?"settings":"protection"}),{isBasic:C}=Be(),P=j.useRef(Date.now()),N=j.useRef(null);j.useEffect(()=>{const te=()=>{document.visibilityState==="visible"&&(Date.now()-P.current<1e4||(clearTimeout(N.current),N.current=setTimeout(()=>{i()},2e3)))};return document.addEventListener("visibilitychange",te),()=>{document.removeEventListener("visibilitychange",te),clearTimeout(N.current)}},[i]);const D=j.useRef(null);j.useEffect(()=>{var ie;const te=(ie=o==null?void 0:o.appConfig)==null?void 0:ie.design,ee=JSON.stringify(te||null);if(D.current===null){D.current=ee;return}ee!==D.current&&(D.current=ee,v(null))},[(me=o==null?void 0:o.appConfig)==null?void 0:me.design]);const[I,A]=j.useState(()=>{const te=new URLSearchParams(window.location.search),ee=te.get("cn_react_welcome")==="1";if(ee){te.delete("cn_react_welcome");const ie=window.location.pathname+(te.toString()?"?"+te.toString():"")+window.location.hash;window.history.replaceState({},"",ie)}return ee}),[W,$]=j.useState(!1);j.useEffect(()=>{var ie;if(!C)return;const te=(ie=window.cnReactData)==null?void 0:ie.welcomeDismissedAt;if(!te){A(!0);return}const ee=Date.now()-720*60*60*1e3;new Date(te).getTime(){const ie=Date.now();m(ge=>[...ge,{id:ie,message:te,type:ee}]),setTimeout(()=>m(ge=>ge.filter(_e=>_e.id!==ie)),5e3)},[]),K=j.useCallback(te=>{m(ee=>ee.filter(ie=>ie.id!==te))},[]),Q=j.useCallback(()=>{i()},[i]),Z=j.useCallback(()=>{i(),d()},[i,d]);return t.jsx(Ho.Provider,{value:{dashboard:o,refetchDashboard:i,isLoadingDashboard:!o},children:t.jsx(Vo.Provider,{value:{config:c,isLoadingConfig:p,refetchConfig:d},children:t.jsx(Mu,{onLawSave:Q,onConsentClose:Z,children:t.jsx(G2,{dashboard:o,refetchDashboard:i,refetchConfig:d,notices:g,removeNotice:K,addNotice:O,activeTab:L,setActiveTab:z,appliedTemplateKey:x,handleTemplateApplied:S,showWelcomeModal:I,setShowWelcomeModal:A,showPricingModal:W,setShowPricingModal:$})})})})}const Ks=document.getElementById("cn-react-root"),Mi=typeof window.cnReactData=="object"&&window.cnReactData!==null&&typeof window.cnReactData.ajaxURL=="string"&&typeof window.cnReactData.nonce=="string";Ks&&Mi?Eu.createRoot(Ks).render(t.jsx(Ai,{children:t.jsx(H2,{})})):Ks&&!Mi&&console.error("[Compliance] cnReactData missing or malformed — admin UI will not mount.",{cnReactData:window.cnReactData})})(); diff --git a/wp-content/plugins/cookie-notice/assets/react-admin/lato-300.woff2 b/wp-content/plugins/cookie-notice/assets/react-admin/lato-300.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..03039fec56486f282ccf9818fe9e931a29b722f2 GIT binary patch literal 13912 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

    W%OBt&L{I*XOPDBN6No4NiX4 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 YIrQ5MU?l%BsE=b^Wj0A_SO)?6KadLlH~;_u literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/assets/react-admin/lato-400.woff2 b/wp-content/plugins/cookie-notice/assets/react-admin/lato-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..56e968d1f38eb55623142ce133d7ecfa77d26b9d GIT binary patch literal 13980 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 Cv5SrX literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/assets/react-admin/lato-900.woff2 b/wp-content/plugins/cookie-notice/assets/react-admin/lato-900.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..366dc807483ac007121e5aaca39dbcfc4fff9ee1 GIT binary patch literal 13724 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 G9s>Xy8IG0! literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/assets/spectrum/spectrum.min.css b/wp-content/plugins/cookie-notice/assets/spectrum/spectrum.min.css new file mode 100644 index 0000000..e1e6a70 --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/spectrum/spectrum.min.css @@ -0,0 +1 @@ +.sp-container{position:absolute;top:0;left:0;display:inline-block;z-index:9999994;overflow:hidden}.sp-original-input-container{position:relative;display:inline-flex}.sp-original-input-container input{margin:0!important}.sp-original-input-container .sp-add-on{width:40px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}input.spectrum.with-add-on{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0}.sp-original-input-container .sp-add-on .sp-colorize{height:100%;width:100%;border-radius:inherit}.sp-colorize-container{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.sp-container.sp-flat{position:relative}.sp-container,.sp-container *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.sp-top{position:relative;width:100%;display:inline-block}.sp-top-inner{position:absolute;top:0;left:0;bottom:0;right:0}.sp-color{position:absolute;top:0;left:0;bottom:0;right:20px!important}.sp-hue{position:absolute;top:0;right:0;bottom:0;width:12px;height:100%;left:initial!important}.sp-clear-enabled .sp-hue{top:15%;height:85%}.sp-fill{padding-top:80%}.sp-sat,.sp-val{position:absolute;top:0;left:0;right:0;bottom:0}.sp-alpha-enabled .sp-top{margin-bottom:28px!important}.sp-alpha-enabled .sp-alpha{display:block}.sp-alpha-handle{position:absolute;top:-3px;cursor:pointer;height:16px;border-radius:50%;width:16px;margin-right:5px;left:-2px;right:0;background:#f9f9f9;box-shadow:0 0 2px 0 #3a3a3a}.sp-alpha{display:none;position:absolute;bottom:-18px;right:0;left:0;height:10px}.sp-alpha-inner{border-radius:4px}.sp-clear{display:none}.sp-clear.sp-clear-display{background-position:center}.sp-clear-enabled .sp-clear{display:block;position:absolute;top:3px;right:0;bottom:0;cursor:pointer;left:initial;height:12px;width:12px}.sp-alpha,.sp-alpha-handle,.sp-clear,.sp-container,.sp-container button,.sp-container.sp-dragging .sp-input,.sp-dragger,.sp-preview,.sp-replacer,.sp-slider{-webkit-user-select:none;-moz-user-select:-moz-none;-o-user-select:none;user-select:none}.sp-container.sp-input-disabled .sp-input-container{display:none}.sp-container.sp-buttons-disabled .sp-button-container{display:none}.sp-container.sp-palette-buttons-disabled .sp-palette-button-container{display:none}.sp-palette-only .sp-picker-container{display:none}.sp-palette-disabled .sp-palette-container{display:none}.sp-initial-disabled .sp-initial{display:none}.sp-sat{background-image:-webkit-gradient(linear,0 0,100% 0,from(#fff),to(rgba(204,154,129,0)));background-image:-webkit-linear-gradient(left,#fff,rgba(204,154,129,0));background-image:-moz-linear-gradient(left,#fff,rgba(204,154,129,0));background-image:-o-linear-gradient(left,#fff,rgba(204,154,129,0));background-image:-ms-linear-gradient(left,#fff,rgba(204,154,129,0));background-image:linear-gradient(to right,#fff,rgba(204,154,129,0))}.sp-val{border-radius:4px;background-image:-webkit-gradient(linear,0 100%,0 0,from(#000),to(rgba(204,154,129,0)));background-image:-webkit-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:-moz-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:-o-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:-ms-linear-gradient(bottom,#000,rgba(204,154,129,0));background-image:linear-gradient(to top,#000,rgba(204,154,129,0))}.sp-hue{background:-moz-linear-gradient(top,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);background:-ms-linear-gradient(top,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);background:-o-linear-gradient(top,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(.17,#ff0),color-stop(.33,#0f0),color-stop(.5,#0ff),color-stop(.67,#00f),color-stop(.83,#f0f),to(red));background:-webkit-linear-gradient(top,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.sp-1{height:17%}.sp-2{height:16%}.sp-3{height:17%}.sp-4{height:17%}.sp-5{height:16%}.sp-6{height:17%}.sp-hidden{display:none!important}.sp-cf:after,.sp-cf:before{content:"";display:table}.sp-cf:after{clear:both}@media (max-device-width:480px){.sp-color{right:40%}.sp-hue{left:63%}.sp-fill{padding-top:60%}}.sp-dragger{border-radius:5px;height:10px;width:10px;border:1px solid #fff;cursor:pointer;position:absolute;top:0;left:0;margin-left:3px;margin-top:3px;box-shadow:0 0 2px 1px rgba(0,0,0,.2)}.sp-slider{position:absolute;top:0;cursor:pointer;height:16px;border-radius:50%;width:16px;left:-2px;background:#f9f9f9;box-shadow:0 0 2px 0 #3a3a3a;margin-top:8px}.sp-container{display:inline-flex;border-radius:0;background-color:#fff;padding:0;border-radius:4px;color:#000;box-shadow:0 0 0 1px rgba(99,114,130,.16),0 8px 16px rgba(27,39,51,.08)}.sp-clear,.sp-color,.sp-container,.sp-container button,.sp-container input,.sp-hue{font-size:12px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.sp-top{margin-bottom:10px}.sp-clear,.sp-color,.sp-hue,.sp-sat,.sp-val{border-radius:3px}.sp-input-container{margin-top:-5px}.sp-button-container.sp-cf,.sp-initial.sp-thumb.sp-cf,.sp-input-container.sp-cf{height:25px}.sp-picker-container .sp-cf{margin-bottom:10px}.sp-palette-row-initial>span:first-child{cursor:pointer}.sp-initial-disabled .sp-input-container{width:100%}.sp-input{padding:0 5px!important;margin:0;width:100%;box-shadow:none!important;height:100%!important;background:0 0;color:#3a3a3a;border-radius:2px!important;border:1px solid #e0e0e0!important;text-align:center;font-family:monospace;font-size:inherit!important}.sp-input:focus{border:1px solid orange}.sp-input.sp-validation-error{border:1px solid red;background:#fdd}.sp-palette-container,.sp-picker-container{position:relative;padding:10px}.sp-picker-container{width:200px;padding-bottom:0}.sp-palette-container{border-right:solid 1px #ccc}.sp-palette-only .sp-palette-container{border:0}.sp-palette .sp-thumb-el{display:block;position:relative;float:left;width:24px;height:15px;margin:3px;cursor:pointer;border:solid 2px transparent}.sp-palette .sp-thumb-el.sp-thumb-active,.sp-palette .sp-thumb-el:hover{border-color:orange}.sp-thumb-el{position:relative}.sp-initial{float:left}.sp-initial span{width:30px;height:25px;border:none;display:block;float:left;margin:0}.sp-initial .spe-thumb-el.sp-thumb-active{border-radius:0 5px 5px 0}.sp-initial .spe-thumb-el{border-radius:5px 0 0 5px}.sp-initial .sp-clear-display{background-position:center}.sp-button-container{float:right}.sp-palette-button-container{margin-top:10px}.sp-replacer{position:relative;overflow:hidden;cursor:pointer;display:inline-block;border-radius:3px;border:1px solid #aaa;color:#666;transition:border-color .3s;vertical-align:middle;width:3rem;height:1.5rem}.sp-replacer.sp-active,.sp-replacer:hover{border:1px solid #666;color:#000}.sp-replacer.sp-disabled{cursor:default;border-color:silver;color:silver}.sp-dd{position:absolute;font-size:10px;right:0;top:0;bottom:0;padding:0 2px;line-height:1.6rem;background-color:#fff}.sp-preview{position:relative;width:100%;height:100%;float:left;z-index:0}.sp-preview-inner{transition:background-color .2s}.sp-preview-inner.sp-clear-display{display:none}.sp-palette .sp-thumb-el{width:16px;height:16px;margin:3px;border:none;border-radius:3px}.sp-container button{border-radius:3px;border:none;background:0 0;line-height:1;padding:0 8px;height:25px;text-transform:capitalize;text-align:center;vertical-align:middle;cursor:pointer;color:#606c72;font-weight:700}.sp-container button.sp-choose{background-color:#3cab3b;color:#fff;margin-left:5px}.sp-container button:hover{opacity:.8}.sp-container button.sp-palette-toggle{width:100%;background-color:#f3f3f3;margin:0}.sp-palette span.sp-thumb-active,.sp-palette span:hover{border-color:#000}.sp-alpha,.sp-preview,.sp-thumb-el{position:relative;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.sp-alpha-inner,.sp-preview-inner,.sp-thumb-inner{display:block;position:absolute;top:0;left:0;bottom:0;right:0}.sp-palette .sp-thumb-inner{border-radius:3px;background-position:50% 50%;background-repeat:no-repeat}.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=)}.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=)}.sp-clear-display{background-repeat:no-repeat;background-position:center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAABe0lEQVQokYXSsUtcQRTF4d8Jj+VhHSxkEQuLsEUKK0nhTBFTmLSSUhBCMCAWsmgIwWrBLk0akfwLCaSQKBJmtrIIISwpRFKIhViETScphGMzysMtvOVwvpm5d0bGNCuGWAOPgYdl6S8wSDn9b+bUhDHEKWAdeAFMANg+l/TV9ofcz6cjMIbYBvaBMds7QCqZ58CmpBNgPuV0DvAAIMyFGugWtJr7eTv38xEwkPRPErY7QDeG2LqFkjrAgu0dSd/KDVqSNmxvAZ8lfbS9AHRuYemnLWkv5XRVBrQMbAI/gTXgEzAJtJuwBVS2L2OIle03QA/4Lmkl5XQBXEqqbFcAVYFDYChpFngiqWf7l6TXKaezMt2Zkhk24THwG+jZriX9AFZvUAyxLbRke2D75O5zPAO+ADXwEtizjaRHwDvbTyUtppwOmicCHAJvbXcl9YA1SQDjtseA97YPRz7ATcUQp2y/kjRdevsjaTfldNrMjcDGBjXA3T96L7yvrgFzP69+0Ao/HAAAAABJRU5ErkJggg==)} \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/assets/spectrum/spectrum.min.js b/wp-content/plugins/cookie-notice/assets/spectrum/spectrum.min.js new file mode 100644 index 0000000..42b3138 --- /dev/null +++ b/wp-content/plugins/cookie-notice/assets/spectrum/spectrum.min.js @@ -0,0 +1 @@ +!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports&&"object"==typeof module?module.exports=e(require("jquery")):e(jQuery)}(function(De,qe){"use strict";var e,Ie={beforeShow:a,move:a,change:a,show:a,hide:a,color:!1,flat:!1,type:"",showInput:!1,allowEmpty:!0,showButtons:!0,clickoutFiresChange:!0,showInitial:!1,showPalette:!0,showPaletteOnly:!1,hideAfterPaletteSelect:!1,togglePaletteOnly:!1,showSelectionPalette:!0,localStorageKey:!1,appendTo:"body",maxSelectionSize:8,locale:"en",cancelText:"cancel",chooseText:"choose",togglePaletteMoreText:"more",togglePaletteLessText:"less",clearText:"Clear Color Selection",noColorSelectedText:"No Color Selected",preferredFormat:"name",className:"",containerClassName:"",replacerClassName:"",showAlpha:!0,theme:"sp-light",palette:[["#000000","#444444","#5b5b5b","#999999","#bcbcbc","#eeeeee","#f3f6f4","#ffffff"],["#f44336","#744700","#ce7e00","#8fce00","#2986cc","#16537e","#6a329f","#c90076"],["#f4cccc","#fce5cd","#fff2cc","#d9ead3","#d0e0e3","#cfe2f3","#d9d2e9","#ead1dc"],["#ea9999","#f9cb9c","#ffe599","#b6d7a8","#a2c4c9","#9fc5e8","#b4a7d6","#d5a6bd"],["#e06666","#f6b26b","#ffd966","#93c47d","#76a5af","#6fa8dc","#8e7cc3","#c27ba0"],["#cc0000","#e69138","#f1c232","#6aa84f","#45818e","#3d85c6","#674ea7","#a64d79"],["#990000","#b45f06","#bf9000","#38761d","#134f5c","#0b5394","#351c75","#741b47"],["#660000","#783f04","#7f6000","#274e13","#0c343d","#073763","#20124d","#4c1130"]],selectionPalette:[],disabled:!1,offset:null},Ve=[],We=!!/msie/i.exec(window.navigator.userAgent),Be=((e=document.createElement("div").style).cssText="background-color:rgba(0,0,0,.5)",t(e.backgroundColor,"rgba")||t(e.backgroundColor,"hsla")),Ke=["

    ","
    ","
    ","
    "].join(""),$e=function(){var e="";if(We)for(var t=1;t<=6;t++)e+="
    ";return["
    ","
    ","
    ","
    ","","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ",e,"
    ","
    ","
    ","
    ","
    ","","
    ","
    ","
    ","","","
    ","
    ","
    "].join("")}();function t(e,t){return!!~(""+e).indexOf(t)}function Xe(e,t,a,o){for(var r=[],n=0;n')}else r.push('')}return"
    "+r.join("")+"
    "}function n(e,t){var a,o,r,n,h=function(e,t){e.locale=e.locale||window.navigator.language,e.locale&&(e.locale=e.locale.split("-")[0].toLowerCase()),"en"!=e.locale&&De.spectrum.localization[e.locale]&&(e=De.extend({},De.spectrum.localization[e.locale],e));var a=De.extend({},Ie,e);return a.callbacks={move:Ge(a.move,t),change:Ge(a.change,t),show:Ge(a.show,t),hide:Ge(a.hide,t),beforeShow:Ge(a.beforeShow,t)},a}(t,e),s=h.type,d="flat"==s,i=h.showSelectionPalette,l=h.localStorageKey,c=h.theme,u=h.callbacks,f=(a=Qe,function(){var e=this,t=arguments;r&&clearTimeout(n),!r&&n||(n=setTimeout(function(){n=null,a.apply(e,t)},o))}),p=!(o=10),g=!1,b=0,m=0,v=0,x=0,y=0,T=0,w=0,_=0,k=0,P=0,C=1,S=[],M=[],z={},j=h.selectionPalette.slice(0),A=h.maxSelectionSize,R="sp-dragging",F=!1,H=null,L=e.ownerDocument,O=(L.body,De(e)),Q=!1,E=De($e,L).addClass(c),N=E.find(".sp-picker-container"),D=E.find(".sp-color"),q=E.find(".sp-dragger"),I=E.find(".sp-hue"),V=E.find(".sp-slider"),W=E.find(".sp-alpha-inner"),B=E.find(".sp-alpha"),K=E.find(".sp-alpha-handle"),$=E.find(".sp-input"),X=E.find(".sp-palette"),Y=E.find(".sp-initial"),G=E.find(".sp-cancel"),U=E.find(".sp-clear"),J=E.find(".sp-choose"),Z=E.find(".sp-palette-toggle"),ee=O.is("input"),te=(ee&&"color"===O.attr("type")&&Je(),ee&&"color"==s),ae=te?De(Ke).addClass(c).addClass(h.className).addClass(h.replacerClassName):De([]),oe=te?ae:O,re=ae.find(".sp-preview-inner"),ne=h.color||ee&&O.val(),se=!1,ie=h.preferredFormat,le=!h.showButtons||h.clickoutFiresChange,ce=!ne,ue=h.allowEmpty,fe=null,he=null,de=null,pe=null,ge=O.attr("id");if(ge!==qe&&0A;)j.shift();if(l)try{window.localStorage[l]=j.join(";")}catch(e){}}}function ye(){var a=Re(),e=De.map(M,function(e,t){return Xe(e,a,"sp-palette-row sp-palette-row-"+t,h)});ve(),j&&e.push(Xe(function(){var e=[];if(h.showPalette)for(var t=0;t'),["margin"].forEach(function(e){fe.css(e,O.css(e))}),"block"==O.css("display")&&fe.css("display","flex"),te)O.after(ae).hide();else if("text"==s)fe.addClass("sp-colorize-container"),O.addClass("spectrum sp-colorize").wrap(fe);else if("component"==s){O.addClass("spectrum").wrap(fe);var e=De(["
    ","
    ","
    "].join(""));e.width(O.outerHeight()+"px").css("border-radius",O.css("border-radius")).css("border",O.css("border")),O.addClass("with-add-on").before(e)}if(he=O.parent().find(".sp-colorize"),de=he.css("color"),pe=he.css("background-color"),ue||U.hide(),d)O.after(E).hide();else{var t="parent"===h.appendTo?O.parent():De(h.appendTo);1!==t.length&&(t=De("body")),t.append(E)}function a(e){return e.data&&e.data.ignore?(Ae(De(e.target).closest(".sp-thumb-el").data("color")),Fe()):(Ae(De(e.target).closest(".sp-thumb-el").data("color")),Fe(),h.hideAfterPaletteSelect?(Oe(!0),ze()):Oe()),!1}ve(),oe.on("click.spectrum touchstart.spectrum",function(e){Q||Pe(),e.stopPropagation(),De(e.target).is("input")||e.preventDefault()}),!O.is(":disabled")&&!0!==h.disabled||Ee(),E.click(Ye),[$,O].forEach(function(t){t.change(function(){ke(t.val())}),t.on("paste",function(){setTimeout(function(){ke(t.val())},1)}),t.keydown(function(e){13==e.keyCode&&(ke(De(t).val()),t==O&&ze())})}),G.text(h.cancelText),G.on("click.spectrum",function(e){e.stopPropagation(),e.preventDefault(),je(),ze()}),U.attr("title",h.clearText),U.on("click.spectrum",function(e){e.stopPropagation(),e.preventDefault(),ce=!0,Fe(),d&&Oe(!0)}),J.text(h.chooseText),J.on("click.spectrum",function(e){e.stopPropagation(),e.preventDefault(),We&&$.is(":focus")&&$.trigger("change"),$.hasClass("sp-validation-error")||(Oe(!0),ze())}),Z.text(h.showPaletteOnly?h.togglePaletteMoreText:h.togglePaletteLessText),Z.on("click.spectrum",function(e){e.stopPropagation(),e.preventDefault(),h.showPaletteOnly=!h.showPaletteOnly,h.showPaletteOnly||d||E.css("left","-="+(N.outerWidth(!0)+5)),me()}),Ue(B,function(e,t,a){C=e/y,ce=!1,a.shiftKey&&(C=Math.round(10*C)/10),Fe()},we,_e),Ue(I,function(e,t){_=parseFloat(t/x),ce=!1,h.showAlpha||(C=1),Fe()},we,_e),Ue(D,function(e,t,a){if(a.shiftKey){if(!H){var o=k*b,r=m-P*m,n=Math.abs(e-o)>Math.abs(t-r);H=n?"x":"y"}}else H=null;var s=!H||"y"===H;H&&"x"!==H||(k=parseFloat(e/b)),s&&(P=parseFloat((m-t)/m)),ce=!1,h.showAlpha||(C=1),Fe()},we,_e),ne?(Ae(ne),He(),ie=tinycolor(ne).format||h.preferredFormat,xe(ne)):(""===ne&&Ae(ne),He()),d&&Ce();var o=We?"mousedown.spectrum":"click.spectrum touchstart.spectrum";X.on(o,".sp-thumb-el",a),Y.on(o,".sp-thumb-el:nth-child(1)",{ignore:!0},a)}();var Ne={show:Ce,hide:ze,toggle:Pe,reflow:Qe,option:function(e,t){return e===qe?De.extend({},h):t===qe?h[e]:(h[e]=t,"preferredFormat"===e&&(ie=h.preferredFormat),void me())},enable:function(){Q=!1,O.attr("disabled",!1),oe.removeClass("sp-disabled")},disable:Ee,offset:function(e){h.offset=e,Qe()},set:function(e){Ae(e),Oe()},get:Re,destroy:function(){O.show().removeClass("spectrum with-add-on sp-colorize"),oe.off("click.spectrum touchstart.spectrum"),E.remove(),ae.remove(),he&&he.css("background-color",pe).css("color",de);var e=O.closest(".sp-original-input-container");0")[0];e._cachedResult="color"===t.type&&""!==t.value}return e._cachedResult},De.spectrum={},De.spectrum.localization={},De.spectrum.palettes={},De.fn.spectrum.processNativeColorInputs=function(){var e=De("input[type=color]");e.length&&!Je()&&e.spectrum({preferredFormat:"hex6"})},function(){var n=/^[\s,#]+/,s=/\s+$/,o=0,c=Math,i=c.round,u=c.min,f=c.max,e=c.random,h=function(e,t){if(t=t||{},(e=e||"")instanceof h)return e;if(!(this instanceof h))return new h(e,t);var a=function(e){var t={r:0,g:0,b:0},a=1,o=!1,r=!1;"string"==typeof e&&(e=function(e){e=e.replace(n,"").replace(s,"").toLowerCase();var t,a=!1;if(C[e])e=C[e],a=!0;else if("transparent"==e)return{r:0,g:0,b:0,a:0,format:"name"};if(t=Q.rgb.exec(e))return{r:t[1],g:t[2],b:t[3]};if(t=Q.rgba.exec(e))return{r:t[1],g:t[2],b:t[3],a:t[4]};if(t=Q.hsl.exec(e))return{h:t[1],s:t[2],l:t[3]};if(t=Q.hsla.exec(e))return{h:t[1],s:t[2],l:t[3],a:t[4]};if(t=Q.hsv.exec(e))return{h:t[1],s:t[2],v:t[3]};if(t=Q.hsva.exec(e))return{h:t[1],s:t[2],v:t[3],a:t[4]};if(t=Q.hex8.exec(e))return{a:function(e){return A(e)/255}(t[1]),r:A(t[2]),g:A(t[3]),b:A(t[4]),format:a?"name":"hex8"};if(t=Q.hex6.exec(e))return{r:A(t[1]),g:A(t[2]),b:A(t[3]),format:a?"name":"hex"};if(t=Q.hex3.exec(e))return{r:A(t[1]+""+t[1]),g:A(t[2]+""+t[2]),b:A(t[3]+""+t[3]),format:a?"name":"hex"};return!1}(e));"object"==typeof e&&(e.hasOwnProperty("r")&&e.hasOwnProperty("g")&&e.hasOwnProperty("b")?(t=function(e,t,a){return{r:255*z(e,255),g:255*z(t,255),b:255*z(a,255)}}(e.r,e.g,e.b),o=!0,r="%"===String(e.r).substr(-1)?"prgb":"rgb"):e.hasOwnProperty("h")&&e.hasOwnProperty("s")&&e.hasOwnProperty("v")?(e.s=F(e.s),e.v=F(e.v),t=function(e,t,a){e=6*z(e,360),t=z(t,100),a=z(a,100);var o=c.floor(e),r=e-o,n=a*(1-t),s=a*(1-r*t),i=a*(1-(1-r)*t),l=o%6;return{r:255*[a,s,n,n,i,a][l],g:255*[i,a,a,s,n,n][l],b:255*[n,n,i,a,a,s][l]}}(e.h,e.s,e.v),o=!0,r="hsv"):e.hasOwnProperty("h")&&e.hasOwnProperty("s")&&e.hasOwnProperty("l")&&(e.s=F(e.s),e.l=F(e.l),t=function(e,t,a){var o,r,n;function s(e,t,a){return a<0&&(a+=1),1>1)+720)%360;--t;)o.h=(o.h+r)%360,n.push(h(o));return n}function P(e,t){t=t||6;for(var a=h(e).toHsv(),o=a.h,r=a.s,n=a.v,s=[],i=1/t;t--;)s.push(h({h:o,s:r,v:n})),n=(n+i)%1;return s}h.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},setAlpha:function(e){return this._a=M(e),this._roundA=i(1e3*this._a)/1e3,this},toHsv:function(){var e=l(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=l(this._r,this._g,this._b),t=i(360*e.h),a=i(100*e.s),o=i(100*e.v);return 1==this._a?"hsv("+t+", "+a+"%, "+o+"%)":"hsva("+t+", "+a+"%, "+o+"%, "+this._roundA+")"},toHsl:function(){var e=r(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=r(this._r,this._g,this._b),t=i(360*e.h),a=i(100*e.s),o=i(100*e.l);return 1==this._a?"hsl("+t+", "+a+"%, "+o+"%)":"hsla("+t+", "+a+"%, "+o+"%, "+this._roundA+")"},toHex:function(e){return t(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(){return d(this._r,this._g,this._b,this._a)},toHex8String:function(){return"#"+this.toHex8()},toRgb:function(){return{r:i(this._r),g:i(this._g),b:i(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+i(this._r)+", "+i(this._g)+", "+i(this._b)+")":"rgba("+i(this._r)+", "+i(this._g)+", "+i(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:i(100*z(this._r,255))+"%",g:i(100*z(this._g,255))+"%",b:i(100*z(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+i(100*z(this._r,255))+"%, "+i(100*z(this._g,255))+"%, "+i(100*z(this._b,255))+"%)":"rgba("+i(100*z(this._r,255))+"%, "+i(100*z(this._g,255))+"%, "+i(100*z(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(S[t(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t="#"+d(this._r,this._g,this._b,this._a),a=t,o=this._gradientType?"GradientType = 1, ":"";e&&(a=h(e).toHex8String());return"progid:DXImageTransform.Microsoft.gradient("+o+"startColorstr="+t+",endColorstr="+a+")"},toString:function(e){var t=!!e;e=e||this._format;var a=!1,o=this._a<1&&0<=this._a;return t||!o||"hex"!==e&&"hex6"!==e&&"hex3"!==e&&"name"!==e?("rgb"===e&&(a=this.toRgbString()),"prgb"===e&&(a=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(a=this.toHexString()),"hex3"===e&&(a=this.toHexString(!0)),"hex8"===e&&(a=this.toHex8String()),"name"===e&&(a=this.toName()),"hsl"===e&&(a=this.toHslString()),"hsv"===e&&(a=this.toHsvString()),a||this.toHexString()):"name"===e&&0===this._a?this.toName():this.toRgbString()},_applyModification:function(e,t){var a=e.apply(null,[this].concat([].slice.call(t)));return this._r=a._r,this._g=a._g,this._b=a._b,this.setAlpha(a._a),this},lighten:function(){return this._applyModification(b,arguments)},brighten:function(){return this._applyModification(m,arguments)},darken:function(){return this._applyModification(v,arguments)},desaturate:function(){return this._applyModification(a,arguments)},saturate:function(){return this._applyModification(p,arguments)},greyscale:function(){return this._applyModification(g,arguments)},spin:function(){return this._applyModification(x,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(k,arguments)},complement:function(){return this._applyCombination(y,arguments)},monochromatic:function(){return this._applyCombination(P,arguments)},splitcomplement:function(){return this._applyCombination(_,arguments)},triad:function(){return this._applyCombination(T,arguments)},tetrad:function(){return this._applyCombination(w,arguments)}},h.fromRatio=function(e,t){if("object"==typeof e){var a={};for(var o in e)e.hasOwnProperty(o)&&(a[o]="a"===o?e[o]:F(e[o]));e=a}return h(e,t)},h.equals=function(e,t){return!(!e||!t)&&h(e).toRgbString()==h(t).toRgbString()},h.random=function(){return h.fromRatio({r:e(),g:e(),b:e()})},h.mix=function(e,t,a){a=0===a?0:a||50;var o,r=h(e).toRgb(),n=h(t).toRgb(),s=a/100,i=2*s-1,l=n.a-r.a,c=1-(o=((o=i*l==-1?i:(i+l)/(1+i*l))+1)/2),u={r:n.r*o+r.r*c,g:n.g*o+r.g*c,b:n.b*o+r.b*c,a:n.a*s+r.a*(1-s)};return h(u)},h.readability=function(e,t){var a=h(e),o=h(t),r=a.toRgb(),n=o.toRgb(),s=a.getBrightness(),i=o.getBrightness(),l=Math.max(r.r,n.r)-Math.min(r.r,n.r)+Math.max(r.g,n.g)-Math.min(r.g,n.g)+Math.max(r.b,n.b)-Math.min(r.b,n.b);return{brightness:Math.abs(s-i),color:l}},h.isReadable=function(e,t){var a=h.readability(e,t);return 125/.php — optimizer-exclusion filters + * + * Anything that grep-finds "REACT_ADMIN_" is a call site for these. + */ + const REACT_ADMIN_HANDLE = 'cookie-notice-react-admin'; + const REACT_ADMIN_BUNDLE_BASENAME = 'cn-admin-react.js'; + const REACT_ADMIN_INLINE_KEYWORD = 'cnReactData'; + + private $status_data = [ + 'status' => '', + 'subscription' => 'basic', + 'threshold_exceeded' => false, + 'activation_datetime' => 0 + ]; + private $x_api_key = 'hudft60djisdusdjwek'; + private $app_host_url = 'https://app.hu-manity.co'; + private $app_login_url = 'https://app.hu-manity.co/#/login'; + private $app_dashboard_url = 'https://app.hu-manity.co/#/'; + private $account_api_url = 'https://account-api.hu-manity.co'; + private $designer_api_url = 'https://designer-api.hu-manity.co'; + private $transactional_api_url = 'https://transactional-api.hu-manity.co'; + private $app_widget_url = '//cdn.hu-manity.co/hu-banner.min.js'; + private $deactivaion_url = ''; + private $network_admin = false; + private $plugin_network_active = false; + private static $_instance; + private $notices = []; + public $options = []; + public $network_options = []; + public $bot_detect; + public $dashboard; + public $frontend; + public $settings; + public $consent_logs; + public $privacy_consent; + public $privacy_consent_logs; + public $welcome; + public $welcome_api; + public $welcome_frontend; + public $db_version; + + /** + * @var $defaults + */ + public $defaults = [ + 'general' => [ + 'global_override' => false, + 'global_cookie' => false, + 'app_id' => '', + 'app_key' => '', + 'app_blocking' => true, + 'conditional_active' => false, + 'conditional_display' => 'hide', + 'conditional_rules' => [], + 'amp_support' => false, + 'bot_detection' => true, + 'caching_compatibility' => true, + 'debug_mode' => false, + 'excluded_handles' => [], + 'position' => 'bottom', + 'message_text' => '', + 'css_class' => '', + 'accept_text' => '', + 'refuse_text' => '', + 'refuse_opt' => false, + 'refuse_code' => '', + 'refuse_code_head' => '', + 'revoke_cookies' => false, + 'revoke_cookies_opt' => 'automatic', + 'revoke_message_text' => '', + 'revoke_text' => '', + 'redirection' => false, + 'see_more' => false, + 'link_target' => '_blank', + 'link_position' => 'banner', + 'time' => 'month', + 'time_rejected' => 'month', + 'hide_effect' => 'fade', + 'on_scroll' => false, + 'on_scroll_offset' => 100, + 'on_click' => false, + 'colors' => [ + 'text' => '#fff', + 'button' => '#00a99d', + 'bar' => '#32323a', + 'bar_opacity' => 100 + ], + 'see_more_opt' => [ + 'text' => '', + 'link_type' => 'page', + 'id' => 0, + 'link' => '', + 'sync' => false + ], + 'script_placement' => 'header', + 'translate' => true, + 'deactivation_delete' => false, + 'review_notice' => true, + 'review_notice_delay' => 0, + 'update_version' => 8, + 'update_notice' => true, + 'update_notice_diss' => false, + 'update_delay_date' => 0, + 'update_threshold_date' => 0, + 'csp_notice' => false, + 'ui_mode' => 'legacy', + // applied_template removed — now computed on the fly in React via matchTemplate(). + 'displayType' => 'floating', + ], + 'privacy_consent' => [ + 'wordpress_active' => true, + 'wordpress_active_type' => 'all', + 'contactform7_active' => false, + 'contactform7_active_type' => 'all', + 'mailchimp_active' => false, + 'mailchimp_active_type' => 'all', + 'wpforms_active' => false, + 'wpforms_active_type' => 'all', + 'woocommerce_active' => false, + 'woocommerce_active_type' => 'all', + 'formidableforms_active' => false, + 'formidableforms_active_type' => 'all', + 'easydigitaldownloads_active' => false, + 'easydigitaldownloads_active_type' => 'all' + ], + 'data' => [ + 'status' => '', + 'subscription' => 'basic', + 'threshold_exceeded' => false, + 'activation_datetime' => 0 + ], + 'version' => '3.0.5' + ]; + + /** + * Authoritative field-ownership partition (#2264). + * + * Only these keys may be written to cookie_notice_options by plugin code paths + * (save_options in react-admin-ajax.php, validate_options in settings.php). + * + * API-owned fields (position, displayType, bannerColor, primaryColor) are + * NEVER written here — cookie_notice_app_design is their exclusive store. + * The Designer API config-pull populates that option via get_app_config(). + * + * @var string[] + */ + public static $plugin_owned_fields = [ + 'message_text', + 'accept_text', + 'refuse_text', + 'revoke_text', + 'revoke_message_text', + 'css_class', + 'refuse_opt', + 'revoke_cookies', + 'revoke_cookies_opt', + 'on_scroll', + 'on_scroll_offset', + 'on_click', + 'redirection', + 'see_more', + 'see_more_opt', + 'link_target', + 'link_position', + 'time', + 'time_rejected', + 'hide_effect', + 'script_placement', + 'bot_detection', + 'amp_support', + 'caching_compatibility', + 'debug_mode', + 'conditional_active', + 'conditional_display', + 'conditional_rules', + 'deactivation_delete', + 'app_blocking', + 'excluded_handles', + 'refuse_code', + 'refuse_code_head', + 'app_id', + 'app_key', + 'ui_mode', + 'global_override', + 'global_cookie', + 'colors', + 'redirect_delay', + 'review_notice', + 'review_notice_delay', + 'update_version', + 'update_notice', + 'update_notice_diss', + 'update_delay_date', + 'update_threshold_date', + 'csp_notice', + 'translate', + ]; + + /** + * Disable object cloning. + * + * @return void + */ + public function __clone() {} + + /** + * Disable unserializing of the class. + * + * @return void + */ + public function __wakeup() {} + + /** + * Main plugin instance. + * + * @return object + */ + public static function instance() { + if ( self::$_instance === null ) { + self::$_instance = new self(); + + add_action( 'init', [ self::$_instance, 'load_textdomain' ] ); + + self::$_instance->includes(); + + self::$_instance->bot_detect = new Cookie_Notice_Bot_Detect(); + self::$_instance->dashboard = new Cookie_Notice_Dashboard(); + self::$_instance->frontend = new Cookie_Notice_Frontend(); + self::$_instance->settings = new Cookie_Notice_Settings(); + new Cookie_Notice_React_Admin_Ajax(); + self::$_instance->consent_logs = new Cookie_Notice_Consent_Logs(); + self::$_instance->privacy_consent = new Cookie_Notice_Privacy_Consent(); + self::$_instance->privacy_consent_logs = new Cookie_Notice_Privacy_Consent_Logs(); + self::$_instance->welcome = new Cookie_Notice_Welcome(); + self::$_instance->welcome_api = new Cookie_Notice_Welcome_API(); + self::$_instance->welcome_frontend = new Cookie_Notice_Welcome_Frontend(); + } + + return self::$_instance; + } + + /** + * Class constructor. + * + * @return void + */ + public function __construct() { + // Allow wp-config.php overrides for staging/prod switching. + // Usage: define( 'CN_ACCOUNT_API_URL', 'https://stage-api.hu-manity.co' ); + if ( defined( 'CN_ACCOUNT_API_URL' ) ) $this->account_api_url = CN_ACCOUNT_API_URL; + if ( defined( 'CN_DESIGNER_API_URL' ) ) $this->designer_api_url = CN_DESIGNER_API_URL; + if ( defined( 'CN_TRANSACTIONAL_API_URL' ) ) $this->transactional_api_url = CN_TRANSACTIONAL_API_URL; + if ( defined( 'CN_X_API_KEY' ) ) $this->x_api_key = CN_X_API_KEY; + if ( defined( 'CN_APP_WIDGET_URL' ) ) $this->app_widget_url = CN_APP_WIDGET_URL; + if ( defined( 'CN_APP_HOST_URL' ) ) $this->app_host_url = CN_APP_HOST_URL; + + // define plugin constants + $this->define_constants(); + + // activation hooks + register_activation_hook( __FILE__, [ $this, 'activation' ] ); + register_deactivation_hook( __FILE__, [ $this, 'deactivation' ] ); + + // set network data + $this->set_network_data(); + + $this->check_legacy_options(); + + // get options + if ( is_multisite() ) { + // get network options + $this->network_options['general'] = get_site_option( 'cookie_notice_options', $this->defaults['general'] ); + $this->network_options['privacy_consent'] = get_site_option( 'cookie_notice_privacy_consent', $this->defaults['privacy_consent'] ); + + if ( $this->is_network_admin() ) { + $general_options = $this->network_options['general']; + $privacy_consent_options = $this->network_options['privacy_consent']; + } else { + $page = isset( $_GET['page'] ) ? sanitize_key( $_GET['page'] ) : ''; + + // settings page? + if ( is_admin() && $page === 'cookie-notice' ) { + // get current url path + $url_path = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ); + + if ( is_string( $url_path ) && basename( $url_path ) === 'admin.php' ) { + // get site options + $general_options = get_option( 'cookie_notice_options', $this->defaults['general'] ); + $privacy_consent_options = get_option( 'cookie_notice_privacy_consent', $this->defaults['privacy_consent'] ); + } + } else { + if ( $this->is_plugin_network_active() && $this->network_options['general']['global_override'] ) { + $general_options = $this->network_options['general']; + $privacy_consent_options = $this->network_options['privacy_consent']; + } else { + $general_options = get_option( 'cookie_notice_options', $this->defaults['general'] ); + $privacy_consent_options = get_option( 'cookie_notice_privacy_consent', $this->defaults['privacy_consent'] ); + } + } + } + } else { + $general_options = get_option( 'cookie_notice_options', $this->defaults['general'] ); + $privacy_consent_options = get_option( 'cookie_notice_privacy_consent', $this->defaults['privacy_consent'] ); + } + + // merge old options with new ones + $this->options['general'] = $this->multi_array_merge( $this->defaults['general'], $general_options ); + $this->options['privacy_consent'] = $this->multi_array_merge( $this->defaults['privacy_consent'], $privacy_consent_options ); + + if ( ! isset( $this->options['general']['see_more_opt']['sync'] ) ) + $this->options['general']['see_more_opt']['sync'] = $this->defaults['general']['see_more_opt']['sync']; + + // actions + add_action( 'plugins_loaded', [ $this, 'set_database_version' ], 0 ); + add_action( 'plugins_loaded', [ $this, 'set_status_data' ], 0 ); + add_action( 'init', [ $this, 'register_shortcodes' ] ); + add_action( 'init', [ $this, 'wpsc_add_cookie' ] ); + add_action( 'init', [ $this, 'maybe_apply_dev_tier_override' ] ); + add_action( 'init', [ $this, 'set_plugin_links' ] ); + add_action( 'admin_init', [ $this, 'update_notice' ] ); + add_action( 'admin_init', [ $this, 'maybe_redirect_after_activation' ] ); + add_action( 'admin_init', [ $this, 'maybe_show_license_assigned_notice' ] ); + add_action( 'admin_init', [ $this, 'maybe_switch_ui_mode' ] ); + add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_scripts' ] ); + add_action( 'admin_footer', [ $this, 'deactivate_plugin_template' ] ); + add_action( 'wp_ajax_cn_dismiss_notice', [ $this, 'ajax_dismiss_admin_notice' ] ); + add_action( 'wp_ajax_cn_review_notice', [ $this, 'ajax_review_notice' ] ); + add_action( 'wp_ajax_cn-deactivate-plugin', [ $this, 'deactivate_plugin' ] ); + } + + /** + * Set current plugin version from database. + * + * @return void + */ + public function set_database_version() { + // get current version + if ( $this->is_network_admin() ) + $this->db_version = get_site_option( 'cookie_notice_version', '1.0.0' ); + else + $this->db_version = get_option( 'cookie_notice_version', '1.0.0' ); + } + + /** + * Check legacy options. + * + * @return void + */ + public function check_legacy_options() { + // multisite? + if ( is_multisite() ) { + // get network options + $site_options = get_site_option( 'cookie_notice_options', $this->defaults['general'] ); + + // update legacy options + $site_options = $this->update_legacy_options( $site_options ); + + // any changes? + if ( $site_options !== false ) + update_site_option( 'cookie_notice_options', $site_options ); + } + + // get options + $options = get_option( 'cookie_notice_options', $this->defaults['general'] ); + + // update legacy options + $options = $this->update_legacy_options( $options ); + + // any changes? + if ( $options !== false ) + update_option( 'cookie_notice_options', $options ); + } + + /** + * Maybe change legacy options. + * + * @param array $options + * @return false|array + */ + public function update_legacy_options( $options ) { + // bail out if options are missing or invalid to avoid PHP 8 fatal on non-array values + if ( ! is_array( $options ) ) + return $this->defaults['general']; + + $options_changed = false; + + // check legacy parameters that were yes/no strings + foreach ( [ 'refuse_opt', 'on_scroll', 'on_click', 'deactivation_delete', 'see_more' ] as $param ) { + if ( array_key_exists( $param, $options ) && ! is_bool( $options[$param] ) ) { + $options[$param] = $options[$param] === 'yes'; + + $options_changed = true; + } + } + + // migrate banner_size → displayType (#2269) + if ( array_key_exists( 'banner_size', $options ) ) { + $options['displayType'] = $options['banner_size']; + unset( $options['banner_size'] ); + + $options_changed = true; + } elseif ( ! array_key_exists( 'displayType', $options ) ) { + $options['displayType'] = 'floating'; + + $options_changed = true; + } + + // check hide banner + if ( isset( $options['hide_banner'] ) ) { + if ( $options['hide_banner'] && ! isset( $options['conditional_active'] ) ) { + $options['conditional_active'] = true; + $options['conditional_display'] = 'hide'; + $options['conditional_rules'] = [ + 1 => [ + 1 => [ + 'param' => 'user_type', + 'operator' => 'equal', + 'value' => 'logged_in' + ] + ] + ]; + } + + unset( $options['hide_banner'] ); + + $options_changed = true; + } + + if ( $options_changed ) + return $options; + else + return false; + } + + /** + * Setup plugin constants. + * + * @return void + */ + private function define_constants() { + define( 'COOKIE_NOTICE_URL', plugins_url( '', __FILE__ ) ); + define( 'COOKIE_NOTICE_PATH', plugin_dir_path( __FILE__ ) ); + define( 'COOKIE_NOTICE_BASENAME', plugin_basename( __FILE__ ) ); + define( 'COOKIE_NOTICE_REL_PATH', dirname( COOKIE_NOTICE_BASENAME ) ); + } + + /** + * Set cookie compliance status data. + * + * @return void + */ + public function set_status_data() { + $default_data = $this->defaults['data']; + + if ( is_multisite() ) { + if ( $this->is_plugin_network_active() ) { + // network + if ( $this->is_network_admin() ) { + if ( $this->network_options['general']['global_override'] ) + $status_data = get_site_option( 'cookie_notice_status', $default_data ); + else + $status_data = $default_data; + // site + } else { + if ( $this->network_options['general']['global_override'] ) + $status_data = get_site_option( 'cookie_notice_status', $default_data ); + else + $status_data = get_option( 'cookie_notice_status', $default_data ); + } + } else { + // network + if ( $this->is_network_admin() ) + $status_data = $default_data; + // site + else + $status_data = get_option( 'cookie_notice_status', $default_data ); + } + } else + $status_data = get_option( 'cookie_notice_status', $default_data ); + + // old status format? + if ( ! is_array( $status_data ) ) { + // update config data + $status_data = $this->welcome_api->get_app_config( '', true ); + } else { + // merge database data with default data + $status_data = array_merge( $default_data, $status_data ); + } + + if ( $status_data['threshold_exceeded'] ) + $this->options['general']['app_blocking'] = false; + + // check status + $status = $this->check_status( $status_data['status'] ); + + // no activation timestamp? + if ( empty( $status_data['activation_datetime'] ) ) { + if ( $status === 'active' ) + $activation = time(); + else + $activation = 0; + } else + $activation = (int) $status_data['activation_datetime']; + + // set status data + $this->status_data = [ + 'status' => $status, + 'subscription' => $this->check_subscription( $status_data['subscription'] ), + 'threshold_exceeded' => (bool) $status_data['threshold_exceeded'], + 'activation_datetime' => $activation + ]; + + } + + /** + * Get cookie compliance status data. + * + * @return string + */ + public function get_status_data() { + return $this->status_data; + } + + /** + * Get cookie compliance status. + * + * @return string + */ + public function get_status() { + return $this->status_data['status']; + } + + /** + * Check cookie compliance status. + * + * @param string $status + * @return string + */ + public function check_status( $status ) { + $status = sanitize_key( $status ); + + return ! empty( $status ) && in_array( $status, [ 'active', 'pending' ], true ) ? $status : $this->defaults['data']['status']; + } + + /** + * Get cookie compliance subscription. + * + * @return string + */ + /** + * CN_DEV_MODE: Apply ?cn_tier override. + * + * Hooked on 'init' so current_user_can() is available (it is NOT at plugins_loaded:0). + * Overrides status_data + app_id in-memory for the current request. + */ + public function maybe_apply_dev_tier_override() { + if ( ! defined( 'CN_DEV_MODE' ) || ! CN_DEV_MODE ) + return; + + if ( ! current_user_can( 'manage_options' ) ) + return; + + $cn_tier = isset( $_GET['cn_tier'] ) ? sanitize_key( $_GET['cn_tier'] ) : ''; + + if ( $cn_tier === 'basic' ) { + $this->status_data['subscription'] = 'basic'; + $this->options['general']['app_id'] = ''; + } elseif ( $cn_tier === 'free' ) { + $this->status_data['subscription'] = 'basic'; + if ( empty( $this->options['general']['app_id'] ) ) + $this->options['general']['app_id'] = 'cn-dev-free-plan'; + } elseif ( $cn_tier === 'pro' ) { + $this->status_data['subscription'] = 'pro'; + if ( empty( $this->options['general']['app_id'] ) ) + $this->options['general']['app_id'] = 'cn-dev-pro-plan'; + } + } + + public function get_subscription() { + return $this->status_data['subscription']; + } + + /** + * Check cookie compliance subscription. + * + * @param string $subscription + * @return string + */ + public function check_subscription( $subscription ) { + $subscription = sanitize_key( $subscription ); + + return ! empty( $subscription ) && in_array( $subscription, [ 'basic', 'pro' ], true ) ? $subscription : $this->defaults['data']['subscription']; + } + + /** + * Check whether the current threshold is exceeded. + * + * @return bool + */ + public function threshold_exceeded() { + return $this->status_data['threshold_exceeded']; + } + + /** + * Get cookie compliance activation timestamp. + * + * @return int + */ + public function get_cc_activation_datetime() { + return (int) $this->status_data['activation_datetime']; + } + + /** + * Get endpoint URL. + * + * @param string $type + * @param string $query + * @return string + */ + public function get_url( $type, $query = '' ) { + if ( $type === 'login' ) + $url = $this->app_login_url; + elseif ( $type === 'dashboard' ) + $url = $this->app_dashboard_url; + elseif ( $type === 'widget' ) + $url = $this->app_widget_url; + elseif ( $type === 'react-admin' ) + $url = COOKIE_NOTICE_URL . '/assets/react-admin/' . self::REACT_ADMIN_BUNDLE_BASENAME; + elseif ( $type === 'host' ) + $url = $this->app_host_url; + elseif ( $type === 'account_api' ) + $url = $this->account_api_url; + elseif ( $type === 'designer_api' ) + $url = $this->designer_api_url; + elseif ( $type === 'transactional_api' ) + $url = $this->transactional_api_url; + + return $url . ( $query !== '' ? $query : '' ); + } + + /** + * Get API key. + * + * @return string + */ + public function get_api_key() { + return $this->x_api_key; + } + + /** + * Check whether the current request is for the network administrative interface. + * + * @return bool + */ + public function is_network_admin() { + return $this->network_admin; + } + + /** + * Check whether the plugin is active for the entire network. + * + * @return bool + */ + public function is_plugin_network_active() { + return $this->plugin_network_active; + } + + /** + * Check whether network-wide options should be used. + * + * Returns true when the plugin is network-active with global_override enabled, + * meaning all sites share the network-level configuration. + * + * @return bool + */ + public function is_network_options() { + return is_multisite() && $this->is_plugin_network_active() && $this->network_options['general']['global_override']; + } + + /** + * Set network data. + * + * @return void + */ + private function set_network_data() { + // load plugin.php file + if ( ! function_exists( 'is_plugin_active_for_network' ) ) + require_once( ABSPATH . '/wp-admin/includes/plugin.php' ); + + $cn_network = isset( $_POST['cn_network'] ) ? (int) $_POST['cn_network'] : false; + + // bypass is_network_admin() to handle AJAX requests properly. + $this->network_admin = is_multisite() && ( is_network_admin() || ( wp_doing_ajax() && $cn_network === 1 ) ); + + // check whether the plugin is active for the entire network. + $this->plugin_network_active = is_plugin_active_for_network( COOKIE_NOTICE_BASENAME ); + } + + /** + * Include required files. + * + * @return void + */ + private function includes() { + include_once( COOKIE_NOTICE_PATH . 'includes/bot-detect.php' ); + include_once( COOKIE_NOTICE_PATH . 'includes/dashboard.php' ); + include_once( COOKIE_NOTICE_PATH . 'includes/frontend.php' ); + include_once( COOKIE_NOTICE_PATH . 'includes/functions.php' ); + include_once( COOKIE_NOTICE_PATH . 'includes/settings.php' ); + include_once( COOKIE_NOTICE_PATH . 'includes/react-admin-ajax.php' ); + include_once( COOKIE_NOTICE_PATH . 'includes/consent-logs.php' ); + include_once( COOKIE_NOTICE_PATH . 'includes/privacy-consent.php' ); + include_once( COOKIE_NOTICE_PATH . 'includes/privacy-consent-logs.php' ); + include_once( COOKIE_NOTICE_PATH . 'includes/welcome.php' ); + include_once( COOKIE_NOTICE_PATH . 'includes/welcome-api.php' ); + include_once( COOKIE_NOTICE_PATH . 'includes/welcome-frontend.php' ); + } + + /** + * Load textdomain. + * + * @return void + */ + public function load_textdomain() { + load_plugin_textdomain( 'cookie-notice', false, dirname( COOKIE_NOTICE_BASENAME ) . '/languages/' ); + } + + /** + * Plugin activation. + * + * @global object $wpdb + * + * @param bool $network + * @return void + */ + public function activation( $network ) { + // New installs start with React UI. We keep the compile-time default as + // 'legacy' so existing sites (which may lack ui_mode in the DB) continue + // to see the legacy interface through the multi_array_merge() fallback. + $activation_defaults = $this->defaults['general']; + $activation_defaults['ui_mode'] = 'react'; + + // network activation? + if ( is_multisite() && $network ) { + // add network options + add_site_option( 'cookie_notice_options', $activation_defaults ); + add_site_option( 'cookie_notice_privacy_consent', $this->defaults['privacy_consent'] ); + add_site_option( 'cookie_notice_status', $this->defaults['data'] ); + add_site_option( 'cookie_notice_version', $this->defaults['version'] ); + + // Reactivations: switch network-level option to React UI. + $net_options = get_site_option( 'cookie_notice_options', [] ); + + if ( is_array( $net_options ) && ( ! isset( $net_options['ui_mode'] ) || $net_options['ui_mode'] !== 'react' ) ) { + $net_options['ui_mode'] = 'react'; + update_site_option( 'cookie_notice_options', $net_options ); + } + + global $wpdb; + + // get all available sites + $blogs_ids = $wpdb->get_col( 'SELECT blog_id FROM ' . $wpdb->blogs ); + + foreach ( $blogs_ids as $blog_id ) { + // change to another site + switch_to_blog( (int) $blog_id ); + + // run current site activation process + $this->activate_site(); + + restore_current_blog(); + } + } else { + $this->activate_site(); + // Set transient so maybe_redirect_after_activation() fires on the next admin_init. + // Single-site only — network activation handled above (no per-site redirect). + set_transient( 'cn_activation_redirect', 1, 30 ); + } + } + + /** + * Single site activation. + * + * @return void + */ + public function activate_site() { + // New installs start with React UI via activation_defaults. + $activation_defaults = $this->defaults['general']; + $activation_defaults['ui_mode'] = 'react'; + + add_option( 'cookie_notice_options', $activation_defaults, null, false ); + add_option( 'cookie_notice_privacy_consent', $this->defaults['privacy_consent'], null, false ); + add_option( 'cookie_notice_status', $this->defaults['data'], null, false ); + add_option( 'cookie_notice_version', $this->defaults['version'], null, false ); + + // Reactivations: add_option above is a no-op when the key exists, + // so explicitly switch existing sites to React UI on activation. + $options = get_option( 'cookie_notice_options', [] ); + + if ( is_array( $options ) && ( ! isset( $options['ui_mode'] ) || $options['ui_mode'] !== 'react' ) ) { + $options['ui_mode'] = 'react'; + update_option( 'cookie_notice_options', $options ); + } + } + + /** + * Redirect to the React admin welcome screen after single-site activation. + * + * Fires on admin_init. Reads a short-lived transient set by activation(). + * Guards against: network admin, bulk activation, and insufficient caps. + * + * ⚠️ Uses cn_react_welcome=1 (NOT welcome=1) — admin-welcome.js intercepts + * the ?welcome=1 param and opens the old PHP modal simultaneously if used. + * + * @return void + */ + public function maybe_redirect_after_activation() { + if ( ! get_transient( 'cn_activation_redirect' ) ) { + return; + } + + // Never redirect inside the network admin screen. + if ( is_network_admin() ) { + return; + } + + // Bulk-activate (wp-admin/plugins.php?activate-multi=true) — skip redirect. + if ( isset( $_GET['activate-multi'] ) ) { + return; + } + + // Only admins should be redirected. + if ( ! current_user_can( 'manage_options' ) ) { + return; + } + + delete_transient( 'cn_activation_redirect' ); + + wp_safe_redirect( admin_url( 'admin.php?page=cookie-notice&cn_react_welcome=1' ) ); + exit; + } + + /** + * Show a one-time success notice after a React modal license assignment. + * + * Triggered by ?license_assigned=1 (set by LicenseSelectStep on success). + * Reads optional ?slots_remaining=N for copy personalisation. + * The param disappears on the next page load automatically — no transient needed. + * + * @return void + */ + public function maybe_show_license_assigned_notice() { + if ( ! is_admin() ) + return; + + if ( empty( $_GET['license_assigned'] ) || $_GET['license_assigned'] !== '1' ) + return; + + if ( ! current_user_can( 'manage_options' ) ) + return; + + $slots = isset( $_GET['slots_remaining'] ) ? (int) $_GET['slots_remaining'] : null; + + if ( $slots !== null && $slots > 0 ) { + /* translators: %d: number of remaining domains on the plan */ + $slots_text = ' ' . sprintf( + _n( '%d domain remaining on your plan.', '%d domains remaining on your plan.', $slots, 'cookie-notice' ), + $slots + ); + } elseif ( $slots === 0 ) { + $slots_text = ' ' . esc_html__( 'No domains remaining on this plan.', 'cookie-notice' ); + } else { + $slots_text = ''; + } + + $message = esc_html__( 'Compliance by Hu-manity.co — Pro is now active on this site.', 'cookie-notice' ) . $slots_text; + + $this->add_notice( + '

    ' . $message . '

    ', + 'notice-success is-dismissible' + ); + } + + /** + * Switch UI mode via ?ui_mode=react|legacy query param. + * + * Persists the choice to the DB so it sticks across page loads. + * Admin-only (manage_options). Works in production — no CN_DEV_MODE required. + * + * @return void + */ + public function maybe_switch_ui_mode() { + if ( ! isset( $_GET['ui_mode'] ) ) + return; + + // Only process ui_mode switches on the plugin's own admin page. + if ( ! isset( $_GET['page'] ) || $_GET['page'] !== 'cookie-notice' ) + return; + + if ( ! current_user_can( 'manage_options' ) ) + return; + + $requested = sanitize_key( $_GET['ui_mode'] ); + + if ( ! in_array( $requested, [ 'react', 'legacy' ], true ) ) + return; + + $current = $this->options['general']['ui_mode']; + + // Update DB only if the value actually changed. + if ( $current !== $requested ) { + $this->options['general']['ui_mode'] = $requested; + + if ( $this->is_network_admin() ) { + $db_options = get_site_option( 'cookie_notice_options', [] ); + } else { + $db_options = get_option( 'cookie_notice_options', [] ); + } + + $db_options['ui_mode'] = $requested; + + if ( $this->is_network_admin() ) { + update_site_option( 'cookie_notice_options', $db_options ); + } else { + update_option( 'cookie_notice_options', $db_options ); + } + } + + // Always set in-memory so the current request renders the correct view. + $this->options['general']['ui_mode'] = $requested; + } + + /** + * Plugin deactivation. + * + * @global object $wpdb + * + * @param bool $network + * @return void + */ + public function deactivation( $network ) { + // network deactivation? + if ( is_multisite() && $network ) { + $delete = $this->options['general']['global_override'] && $this->options['general']['deactivation_delete']; + + // delete network options? + if ( $delete ) { + delete_site_option( 'cookie_notice_options' ); + delete_site_option( 'cookie_notice_privacy_consent' ); + delete_site_option( 'cookie_notice_status' ); + delete_site_option( 'cookie_notice_app_analytics' ); + delete_site_option( 'cookie_notice_app_blocking' ); + delete_site_option( 'cookie_notice_version' ); + } + + global $wpdb; + + // get all available sites + $blogs_ids = $wpdb->get_col( 'SELECT blog_id FROM ' . $wpdb->blogs ); + + foreach ( $blogs_ids as $blog_id ) { + // change to another site + switch_to_blog( (int) $blog_id ); + + // run current site deactivation process + $this->deactivate_site( $delete ); + + restore_current_blog(); + } + } else + $this->deactivate_site(); + } + + /** + * Single site deactivation. + * + * @param bool $force_deletion + * @return void + */ + public function deactivate_site( $force_deletion = false ) { + // delete settings? + if ( $force_deletion || $this->options['general']['deactivation_delete'] ) { + // delete options + delete_option( 'cookie_notice_options' ); + delete_option( 'cookie_notice_privacy_consent' ); + delete_option( 'cookie_notice_status' ); + delete_option( 'cookie_notice_app_analytics' ); + delete_option( 'cookie_notice_app_blocking' ); + delete_option( 'cookie_notice_version' ); + + // delete transients if any + delete_transient( 'cookie_notice_app_token' ); + delete_transient( 'cookie_notice_app_quick_config' ); + delete_transient( 'cookie_notice_app_subscriptions' ); + } + + // remove wp super cache cookie + $this->wpsc_delete_cookie(); + } + + /** + * Update notice. + * + * @return void + */ + public function update_notice() { + if ( ! current_user_can( 'install_plugins' ) ) + return; + + // bail an ajax + if ( wp_doing_ajax() ) + return; + + $network = $this->is_network_admin(); + + // get cookie compliance status + $status = $this->get_status(); + + // get subscription + $subscription = $this->get_subscription(); + + // update number + $current_update = 14; + + // new version? + if ( version_compare( $this->db_version, $this->defaults['version'], '<' ) ) { + if ( $this->options['general']['update_version'] < $current_update ) { + // check version, if update version is lower than plugin version, set update notice to true + $this->options['general']['update_version'] = $current_update; + $this->options['general']['update_notice'] = true; + + // update options + if ( $network ) { + $this->options['general']['update_notice_diss'] = false; + + update_site_option( 'cookie_notice_options', $this->options['general'] ); + } else + update_option( 'cookie_notice_options', $this->options['general'] ); + } + + // update 2.4.17+ + if ( version_compare( $this->db_version, '2.4.17', '<' ) ) { + // get cookie compliance activation timestamp + $activation_date = $this->get_cc_activation_datetime(); + + // get status data + $data = $this->status_data; + + // no activation timestamp? + if ( empty( $activation_date ) ) { + if ( $status === 'active' ) + $activation = time(); + else + $activation = 0; + } else + $activation = (int) $data['activation_datetime']; + + // update activation timestamp + $data['activation_datetime'] = $activation; + + if ( $network ) + update_site_option( 'cookie_notice_status', $data ); + else + update_option( 'cookie_notice_status', $data, false ); + } + + // update plugin version + if ( $network ) + update_site_option( 'cookie_notice_version', $this->defaults['version'] ); + else + update_option( 'cookie_notice_version', $this->defaults['version'], false ); + } + + // check page + $page = isset( $_GET['page'] ) ? sanitize_key( $_GET['page'] ) : ''; + + // if visiting settings, mark notice as read + if ( $page === 'cookie-notice' && ! empty( $_GET['welcome'] ) ) { + $this->options['general']['update_notice'] = false; + + if ( $network ) { + $this->options['general']['update_notice_diss'] = true; + + update_site_option( 'cookie_notice_options', $this->options['general'] ); + } else + update_option( 'cookie_notice_options', $this->options['general'] ); + } + + if ( is_multisite() && ( ( $this->is_plugin_network_active() && ! $network && $this->network_options['general']['global_override'] ) || ( $network && ! $this->is_plugin_network_active() ) ) ) + $this->options['general']['update_notice'] = false; + + // compliance only + if ( $status === 'active' ) { + // get analytics data options + if ( $network ) + $analytics = get_site_option( 'cookie_notice_app_analytics', [] ); + else + $analytics = get_option( 'cookie_notice_app_analytics', [] ); + + if ( is_multisite() && ( ( $network && ! $this->is_plugin_network_active() && ! $this->network_options['general']['global_override'] ) || ( ! $network && $this->is_plugin_network_active() && $this->network_options['general']['global_override'] ) ) ) + $allow_notice = false; + else + $allow_notice = true; + + // show threshold limit warning + if ( ! empty( $analytics ) && $allow_notice ) { + // cycle usage data + $cycle_usage = [ + 'threshold' => ! empty( $analytics['cycleUsage']->threshold ) ? (int) $analytics['cycleUsage']->threshold : 0, + 'visits' => ! empty( $analytics['cycleUsage']->visits ) ? (int) $analytics['cycleUsage']->visits : 0, + 'end_date' => ! empty( $analytics['cycleUsage']->endDate ) ? date_create_from_format( '!Y-m-d', $analytics['cycleUsage']->endDate ) : date_create_from_format( 'Y-m-d H:i:s', current_time( 'mysql', true ) ), + 'last_updated' => ! empty( $analytics['lastUpdated'] ) ? date_create_from_format( 'Y-m-d H:i:s', $analytics['lastUpdated'] ) : date_create_from_format( 'Y-m-d H:i:s', current_time( 'mysql', true ) ) + ]; + + // if threshold in use + if ( $cycle_usage['threshold'] ) { + // if threshold exceeded and there was no notice before + if ( $cycle_usage['visits'] >= $cycle_usage['threshold'] && $cycle_usage['last_updated']->getTimestamp() < $cycle_usage['end_date']->getTimestamp() && $this->options['general']['update_threshold_date'] < $cycle_usage['end_date']->getTimestamp() ) { + $date_format = get_option( 'date_format' ); + + $upgrade_link = $this->get_url( 'dashboard', '?app-id=' . $this->options['general']['app_id'] . '&open-modal=payment' ); + $threshold = $cycle_usage['threshold']; + $cycle_date = date_i18n( $date_format, $cycle_usage['end_date']->getTimestamp() ); + + $this->add_notice( '

    ' . esc_html__( 'Compliance by Hu-manity.co Warning', 'cookie-notice') . '

    ' . sprintf( __( 'Your website has reached the %1$s visits usage limit for the Compliance by Hu-manity.co Free Plan. Compliance services such as Consent Record Storage, Autoblocking, and Consent Analytics have been deactivated until current usage cycle ends on %2$s.', 'cookie-notice' ), $threshold, $cycle_date ) . '
    ' . sprintf( __( 'To reactivate compliance services now, upgrade your domain to a Pro plan.', 'cookie-notice' ) . '

    ', $upgrade_link ), 'cn-threshold error is-dismissible', 'div' ); + } + } + } + + // display review notice, for multisite only for network admin area + if ( ! empty( $this->options['general']['review_notice'] ) && ( ! is_multisite() || ( $network && $this->is_plugin_network_active() ) ) ) { + // get current time + $current_time = time(); + + // get cookie compliance activation timestamp + $activation_date = $this->get_cc_activation_datetime(); + + // get delay timestamp + $delay_timestamp = (int) $this->options['general']['review_notice_delay']; + + // no delay? + if ( $delay_timestamp === 0 ) + $compare_timestamp = $activation_date + 2 * WEEK_IN_SECONDS; + else + $compare_timestamp = $delay_timestamp; + + // display notice? + if ( $compare_timestamp < $current_time ) + $this->add_notice( '

    ' . esc_html__( 'We Value Your Feedback', 'cookie-notice' ) . '

    ' . sprintf( __( "Hi, you've been using Compliance by Hu-manity.co for more than %s. We hope it has been a valuable addition to your WordPress site. We would be grateful if you could take a few minutes to share your thoughts by leaving a review.", 'cookie-notice' ), human_time_diff( $activation_date, $current_time ) ) . '
    ' . esc_html__( 'Thank you for helping us improve and grow!', 'cookie-notice' ) . '

    ' . esc_html__( 'Review', 'cookie-notice' ) . '' . esc_html__( 'Delay', 'cookie-notice' ) . '' . esc_html__( 'Dismiss', 'cookie-notice' ) . '

    ', 'error', 'div' ); + } + } + } + + /** + * Add admin notice. + * + * @param string $html + * @param string $status + * @param string $container + * @return void + */ + private function add_notice( $html = '', $status = 'error', $container = '' ) { + $this->notices[] = [ + 'html' => $html, + 'status' => $status, + 'container' => ( ! empty( $container ) && in_array( $container, [ 'p', 'div' ] ) ? $container : '' ) + ]; + + add_action( 'admin_notices', [ $this, 'display_notice' ], 0 ); + add_action( 'network_admin_notices', [ $this, 'display_notice' ], 0 ); + } + + /** + * Print admin notices. + * + * @return void + */ + public function display_notice() { + foreach( $this->notices as $notice ) { + echo ' +
    + ' . ( ! empty( $notice['container'] ) ? '<' . esc_attr( $notice['container'] ) . ' class="cn-notice-container">' : '' ) . ' + ' . wp_kses_post( $notice['html'] ) . ' + ' . ( ! empty( $notice['container'] ) ? '' : '' ) . ' +
    '; + } + } + + /** + * Dismiss admin notice. + * + * @return void + */ + public function ajax_dismiss_admin_notice() { + if ( ! current_user_can( 'install_plugins' ) ) + exit; + + if ( ! isset( $_POST['nonce'], $_POST['notice_action'] ) ) + exit; + + if ( wp_verify_nonce( $_POST['nonce'], 'cn_dismiss_notice' ) ) { + // get notice action + $notice_action = ! empty( $_POST['notice_action'] ) ? sanitize_key( $_POST['notice_action'] ) : 'dismiss'; + + $cn_network = isset( $_POST['cn_network'] ) ? (int) $_POST['cn_network'] : false; + + // network? + $network = is_multisite() && $cn_network === 1; + + switch ( $notice_action ) { + // threshold notice + case 'threshold': + // set delay period last cycle day + $delay = isset( $_POST['param'] ) ? (int) $_POST['param'] : 0; + + $this->options['general']['update_threshold_date'] = $delay + DAY_IN_SECONDS; + + // update options + if ( $network ) + update_site_option( 'cookie_notice_options', $this->options['general'] ); + else + update_option( 'cookie_notice_options', $this->options['general'] ); + break; + + // delay notice + case 'delay': + // set delay period to 2 weeks from now + $this->options['general']['update_delay_date'] = time() + 2 * WEEK_IN_SECONDS; + + // update options + if ( $network ) + update_site_option( 'cookie_notice_options', $this->options['general'] ); + else + update_option( 'cookie_notice_options', $this->options['general'] ); + break; + + // hide notice + case 'approve': + default: + $this->options['general']['update_notice'] = false; + $this->options['general']['update_delay_date'] = 0; + + // update options + if ( $network ) { + $this->options['general']['update_notice_diss'] = true; + + update_site_option( 'cookie_notice_options', $this->options['general'] ); + } else + update_option( 'cookie_notice_options', $this->options['general'] ); + } + } + + exit; + } + + /** + * Dismiss review admin notice. + * + * @return void + */ + public function ajax_review_notice() { + if ( ! current_user_can( 'install_plugins' ) ) + exit; + + if ( ! isset( $_POST['nonce'], $_POST['notice_action'] ) ) + exit; + + if ( wp_verify_nonce( $_POST['nonce'], 'cn_review_notice' ) ) { + // get notice action + $notice_action = ! empty( $_POST['notice_action'] ) ? sanitize_key( $_POST['notice_action'] ) : 'dismiss'; + + $cn_network = isset( $_POST['cn_network'] ) ? (int) $_POST['cn_network'] : false; + + // network? + $network = is_multisite() && $cn_network === 1; + + switch ( $notice_action ) { + // delay notice + case 'delay': + $this->options['general']['review_notice'] = true; + $this->options['general']['review_notice_delay'] = time() + 2 * WEEK_IN_SECONDS; + + // update options + if ( $network ) + update_site_option( 'cookie_notice_options', $this->options['general'] ); + else + update_option( 'cookie_notice_options', $this->options['general'] ); + break; + + // hide notice + case 'dismiss': + case 'review': + default: + $this->options['general']['review_notice'] = false; + $this->options['general']['review_notice_delay'] = 0; + + // update options + if ( $network ) { + $this->options['general']['update_notice_diss'] = true; + + update_site_option( 'cookie_notice_options', $this->options['general'] ); + } else + update_option( 'cookie_notice_options', $this->options['general'] ); + } + } + + exit; + } + + /** + * Register shortcode. + * + * @return void + */ + public function register_shortcodes() { + add_shortcode( 'cookies_accepted', [ $this, 'cookies_accepted_shortcode' ] ); + add_shortcode( 'cookies_revoke', [ $this, 'cookies_revoke_shortcode' ] ); + add_shortcode( 'cookies_policy_link', [ $this, 'cookies_policy_link_shortcode' ] ); + } + + /** + * Register cookies accepted shortcode. + * + * @param array $args + * @param string $content + * @return string + */ + public function cookies_accepted_shortcode( $args, $content ) { + if ( $this->cookies_accepted() ) { + // Only sanitize with wp_kses - do not decode entities from user-generated content + $scripts = trim( wp_kses( $content, $this->get_allowed_html( 'body' ) ) ); + + if ( ! empty( $scripts ) ) { + if ( preg_match_all( '/' . get_shortcode_regex() . '/', $content ) ) + $scripts = do_shortcode( $scripts ); + + return $scripts; + } + } + + return ''; + } + + /** + * Register cookies revoke shortcode. + * + * @param array $args + * @param string $content + * @return string + */ + public function cookies_revoke_shortcode( $args, $content ) { + // get options + $options = $this->options['general']; + + // WPML >= 3.2 + if ( defined( 'ICL_SITEPRESS_VERSION' ) && version_compare( ICL_SITEPRESS_VERSION, '3.2', '>=' ) ) + $options['revoke_text'] = apply_filters( 'wpml_translate_single_string', $options['revoke_text'], 'Cookie Notice', 'Revoke button text' ); + // WPML and Polylang compatibility + elseif ( function_exists( 'icl_t' ) ) + $options['revoke_text'] = icl_t( 'Cookie Notice', 'Revoke button text', $options['revoke_text'] ); + + // defaults + $defaults = [ + 'title' => $options['revoke_text'], + 'class' => $options['css_class'] + ]; + + // combine shortcode arguments + $args = shortcode_atts( $defaults, $args ); + + if ( Cookie_Notice()->get_status() === 'active' ) + $shortcode = '' . esc_html( $args['title'] ) . ''; + else + $shortcode = '' . esc_html( $args['title'] ) . ''; + + return $shortcode; + } + + /** + * Register cookies policy link shortcode. + * + * @param array $args + * @param string $content + * @return string + */ + public function cookies_policy_link_shortcode( $args, $content ) { + // get options + $options = $this->options['general']; + + // WPML >= 3.2 + if ( defined( 'ICL_SITEPRESS_VERSION' ) && version_compare( ICL_SITEPRESS_VERSION, '3.2', '>=' ) ) { + $options['see_more_opt']['text'] = apply_filters( 'wpml_translate_single_string', $options['see_more_opt']['text'], 'Cookie Notice', 'Privacy policy text' ); + $options['see_more_opt']['link'] = apply_filters( 'wpml_translate_single_string', $options['see_more_opt']['link'], 'Cookie Notice', 'Custom link' ); + // WPML and Polylang compatibility + } elseif ( function_exists( 'icl_t' ) ) { + $options['see_more_opt']['text'] = icl_t( 'Cookie Notice', 'Privacy policy text', $options['see_more_opt']['text'] ); + $options['see_more_opt']['link'] = icl_t( 'Cookie Notice', 'Custom link', $options['see_more_opt']['link'] ); + } + + if ( $options['see_more_opt']['link_type'] === 'page' ) { + // multisite with global override? + if ( is_multisite() && $this->is_plugin_network_active() && $this->network_options['general']['global_override'] ) { + // get main site id + $main_site_id = get_main_site_id(); + + // switch to main site + switch_to_blog( $main_site_id ); + + // update page id for current language if needed + if ( function_exists( 'icl_object_id' ) ) + $options['see_more_opt']['id'] = icl_object_id( $options['see_more_opt']['id'], 'page', true ); + + // get main site privacy policy link + $permalink = get_permalink( $options['see_more_opt']['id'] ); + + // restore current site + restore_current_blog(); + } else { + // update page id for current language if needed + if ( function_exists( 'icl_object_id' ) ) + $options['see_more_opt']['id'] = icl_object_id( $options['see_more_opt']['id'], 'page', true ); + + // get privacy policy link + $permalink = get_permalink( $options['see_more_opt']['id'] ); + } + } + + // defaults + $defaults = [ + 'title' => $options['see_more_opt']['text'] !== '' ? $options['see_more_opt']['text'] : '➜', + 'link' => $options['see_more_opt']['link_type'] === 'custom' ? $options['see_more_opt']['link'] : $permalink, + 'class' => $options['css_class'] + ]; + + // combine shortcode arguments + $args = shortcode_atts( $defaults, $args ); + + $shortcode = '' . esc_html( $args['title'] ) . ''; + + return $shortcode; + } + + /** + * Check if cookies are accepted. + * + * @return bool + */ + public static function cookies_accepted() { + if ( Cookie_Notice()->get_status() === 'active' ) { + // get cookie + $cookies = isset( $_COOKIE['hu-consent'] ) ? json_decode( stripslashes( $_COOKIE['hu-consent'] ), true ) : []; + + // valid cookie? + if ( json_last_error() === JSON_ERROR_NONE && ! empty( $cookies ) && is_array( $cookies ) && isset( $cookies['consent'] ) ) + $result = (bool) $cookies['consent']; + else + $result = false; + } else + $result = isset( $_COOKIE['cookie_notice_accepted'] ) && $_COOKIE['cookie_notice_accepted'] === 'true'; + + return (bool) apply_filters( 'cn_is_cookie_accepted', $result ); + } + + /** + * Check if cookies are set. + * + * @return bool + */ + public static function cookies_set() { + if ( Cookie_Notice()->get_status() === 'active' ) + $result = isset( $_COOKIE['hu-consent'] ); + else + $result = isset( $_COOKIE['cookie_notice_accepted'] ); + + return (bool) apply_filters( 'cn_is_cookie_set', $result ); + } + + /** + * Add WP Super Cache cookie. + * + * @return void + */ + public function wpsc_add_cookie() { + if ( $this->get_status() !== 'active' ) + do_action( 'wpsc_add_cookie', 'cookie_notice_accepted' ); + } + + /** + * Delete WP Super Cache cookie. + * + * @return void + */ + public function wpsc_delete_cookie() { + if ( $this->get_status() !== 'active' ) + do_action( 'wpsc_delete_cookie', 'cookie_notice_accepted' ); + } + + /** + * Enqueue admin scripts and styles. + * + * @param string $page + * @return void + */ + public function admin_enqueue_scripts( $page ) { + // plugins page? + if ( $page === 'plugins.php' ) { + add_thickbox(); + + wp_enqueue_script( 'cookie-notice-admin-plugins', COOKIE_NOTICE_URL . '/js/admin-plugins.js', [ 'jquery' ], $this->defaults['version'] ); + + wp_enqueue_style( 'cookie-notice-admin-plugins', COOKIE_NOTICE_URL . '/css/admin-plugins.css', [], $this->defaults['version'] ); + + // prepare script data + $script_data = [ + 'deactivate' => esc_html__( 'Compliance by Hu-manity.co - Deactivation survey', 'cookie-notice' ), + 'nonce' => wp_create_nonce( 'cn-deactivate-plugin' ) + ]; + + wp_add_inline_script( 'cookie-notice-admin-plugins', 'var cnArgsPlugins = ' . wp_json_encode( $script_data ) . ";\n", 'before' ); + } + + // notice js and css + wp_enqueue_script( 'cookie-notice-admin-notice', COOKIE_NOTICE_URL . '/js/admin-notice.js', [], $this->defaults['version'] ); + + // prepare script data + $script_data = [ + 'ajaxURL' => admin_url( 'admin-ajax.php' ), + 'nonce' => wp_create_nonce( 'cn_dismiss_notice' ), + 'reviewNonce' => wp_create_nonce( 'cn_review_notice' ), + 'network' => $this->is_network_admin() + ]; + + wp_add_inline_script( 'cookie-notice-admin-notice', 'var cnArgsNotice = ' . wp_json_encode( $script_data ) . ";\n", 'before' ); + + wp_enqueue_style( 'cookie-notice-admin-notice', COOKIE_NOTICE_URL . '/css/admin-notice.css', [], $this->defaults['version'] ); + } + + /** + * Set plugin links. + * + * @return void + */ + public function set_plugin_links() { + // filters + add_filter( 'plugin_action_links', [ $this, 'plugin_action_links' ], 10, 2 ); + add_filter( 'network_admin_plugin_action_links', [ $this, 'plugin_action_links' ], 10, 2 ); + } + + /** + * Add links to settings page. + * + * @param array $links + * @param string $file + * @return array + */ + public function plugin_action_links( $links, $file ) { + if ( ! current_user_can( apply_filters( 'cn_manage_cookie_notice_cap', 'manage_options' ) ) ) + return $links; + + if ( $file === COOKIE_NOTICE_BASENAME ) { + if ( ! empty( $links['deactivate'] ) ) { + // link already contains class attribute? + if ( preg_match( '//is', $links['deactivate'], $result ) === 1 ) + $links['deactivate'] = preg_replace( '/()/s', '$1 cn-deactivate-plugin-modal$2', $links['deactivate'] ); + else + $links['deactivate'] = preg_replace( '/(/s', '$1 class="cn-deactivate-plugin-modal">', $links['deactivate'] ); + + // link already contains href attribute? + if ( preg_match( '//is', $links['deactivate'], $result ) === 1 ) { + if ( ! empty( $result[2] ) ) + $this->deactivaion_url = $result[2]; + } + } + + // skip settings link if plugin is activated from main site + if ( ! ( $this->is_network_admin() && ! $this->is_plugin_network_active() ) ) { + $url = $this->is_network_admin() ? network_admin_url( 'admin.php?page=cookie-notice' ) : admin_url( 'admin.php?page=cookie-notice' ); + + // put settings link at start + array_unshift( $links, sprintf( '%s', esc_url( $url ), esc_html__( 'Settings', 'cookie-notice' ) ) ); + } + + // get cookie compliance status + $status = $this->get_status(); + + if ( is_multisite() ) { + $check_status = empty( $status ) && ( ( $this->is_network_admin() && $this->is_plugin_network_active() && $this->network_options['general']['global_override'] ) || ( ! $this->is_network_admin() && ( ( $this->is_plugin_network_active() && ! $this->network_options['general']['global_override'] ) || ! $this->is_plugin_network_active() ) ) ); + } else + $check_status = empty( $status ); + + // add upgrade link + if ( $check_status ) { + $url = $this->is_network_admin() ? network_admin_url( 'admin.php?page=cookie-notice&welcome=1' ) : admin_url( 'admin.php?page=cookie-notice&welcome=1' ); + + $links[] = sprintf( '%s', esc_url( $url ), esc_html__( 'Try Compliance by Hu-manity.co free', 'cookie-notice' ) ); + } + } + + return $links; + } + + /** + * Deactivation modal HTML template. + * + * @global string $pagenow + * + * @return void + */ + public function deactivate_plugin_template() { + global $pagenow; + + // display only for plugins page + if ( $pagenow !== 'plugins.php' ) + return; + + echo ' + '; + } + + /** + * Send data about deactivation of the plugin. + * + * @return void + */ + public function deactivate_plugin() { + // check permissions + if ( ! current_user_can( 'install_plugins' ) || wp_verify_nonce( $_POST['nonce'], 'cn-deactivate-plugin' ) === false ) + return; + + if ( isset( $_POST['option_id'] ) ) { + $option_id = (int) $_POST['option_id']; + + // avoid fake submissions + if ( $option_id === 8 ) { + $other = isset( $_POST['other'] ) ? sanitize_textarea_field( $_POST['other'] ) : ''; + + // no reason? + if ( $other === '' ) + wp_send_json_success(); + } + + wp_remote_post( + 'https://hu-manity.co/wp-json/api/v1/forms/', + [ + 'timeout' => 15, + 'blocking' => true, + 'headers' => [], + 'body' => [ + 'id' => 1, + 'option' => $option_id, + 'other' => $other, + 'referrer' => get_site_url() + ] + ] + ); + + wp_send_json_success(); + } + + wp_send_json_error(); + } + + /** + * Get allowed script blocking HTML. + * + * @param string $type + * @return array + */ + public function get_allowed_html( $type = 'head' ) { + // default allowed html for both types + $allowed_html = [ + 'script' => [ + 'type' => true, + 'src' => true, + 'charset' => true, + 'async' => true, + 'defer' => true, + 'crossorigin' => true, + 'fetchpriority' => true, + 'referrerpolicy' => true, + 'nomodule' => true, + 'nonce' => true, + 'integrity' => true, + 'class' => true, + 'id' => true + ], + 'noscript' => [ + 'class' => true, + 'id' => true + ], + 'style' => [ + 'type' => true, + 'media' => true, + 'nonce' => true, + 'class' => true, + 'id' => true + ] + ]; + + if ( $type === 'head' ) { + // allow links for head + $allowed_html['link'] = [ + 'as' => true, + 'crossorigin' => true, + 'fetchpriority' => true, + 'imagesizes' => true, + 'imagesrcset' => true, + 'referrerpolicy' => true, + 'sizes' => true, + 'integrity' => true, + 'href' => true, + 'hreflang' => true, + 'rel' => true, + 'type' => true, + 'title' => true, + 'media' => true, + 'class' => true, + 'id' => true + ]; + } elseif ( $type === 'body' ) { + // allow ifarmes for body + $allowed_html['iframe'] = [ + 'src' => true, + 'srcdoc' => true, + 'height' => true, + 'width' => true, + 'class' => true, + 'id' => true, + 'allow' => true, + 'loading' => true, + 'name' => true, + 'title' => true, + 'referrerpolicy' => true, + 'sandbox' => true, + 'allowfullscreen' => true + ]; + } + + // combine allowed tags with default post allowed tags + return apply_filters( 'cn_refuse_code_allowed_html', array_merge( wp_kses_allowed_html( 'post' ), $allowed_html ), $type ); + } + + /** + * Merge multidimensional associative arrays. + * Works only with strings, integers and arrays as keys. Values can be any type but they have to have same type to be kept in the final array. + * Every array should have the same type of elements. Only keys from $defaults array will be kept in the final array unless $siblings are not empty. + * $siblings examples: array( '=>', 'only_first_level', 'first_level=>second_level', 'first_key=>next_key=>sibling' ) and so on. + * Single '=>' means that all siblings of the highest level will be kept in the final array. + * + * @param array $defaults Array with defaults values + * @param array $array Array to merge + * @param bool|array $siblings Whether to allow "string" siblings to copy from $array if they do not exist in $defaults, false otherwise + * @return array + */ + public function multi_array_merge( $defaults, $array, $siblings = false ) { + // make a copy for better performance and to prevent $default override in foreach + $copy = $defaults; + + // prepare siblings for recursive deeper level + $new_siblings = []; + + // allow siblings? + if ( ! empty( $siblings ) && is_array( $siblings ) ) { + foreach ( $siblings as $sibling ) { + // highest level siblings + if ( $sibling === '=>' ) { + // copy all non-existent string siblings + foreach( $array as $key => $value ) { + if ( is_string( $key ) && ! array_key_exists( $key, $defaults ) ) { + $defaults[$key] = null; + } + } + // sublevel siblings + } else { + // explode siblings + $ex = explode( '=>', $sibling ); + + // copy all non-existent siblings + foreach ( array_keys( $array[$ex[0]] ) as $key ) { + if ( ! array_key_exists( $key, $defaults[$ex[0]] ) ) + $defaults[$ex[0]][$key] = null; + } + + // more than one sibling child? + if ( count( $ex ) > 1 ) + $new_siblings[$ex[0]] = [ substr_replace( $sibling, '', 0, strlen( $ex[0] . '=>' ) ) ]; + // no more sibling children + else + $new_siblings[$ex[0]] = false; + } + } + } + + // loop through first array + foreach ( $defaults as $key => $value ) { + // integer key? + if ( is_int( $key ) ) { + $copy = array_unique( array_merge( $defaults, $array ), SORT_REGULAR ); + + break; + // string key? + } elseif ( is_string( $key ) && isset( $array[$key] ) ) { + // string, boolean, integer or null values? + if ( ( is_string( $value ) && is_string( $array[$key] ) ) || ( is_bool( $value ) && is_bool( $array[$key] ) ) || ( is_int( $value ) && is_int( $array[$key] ) ) || is_null( $value ) ) + $copy[$key] = $array[$key]; + // arrays + elseif ( is_array( $value ) && isset( $array[$key] ) && is_array( $array[$key] ) ) { + if ( empty( $value ) ) + $copy[$key] = $array[$key]; + else + $copy[$key] = $this->multi_array_merge( $defaults[$key], $array[$key], ( isset( $new_siblings[$key] ) ? $new_siblings[$key] : false ) ); + } + } + } + + return $copy; + } + + /** + * Indicate if current page is the Cookie Policy page. + * + * @return bool + */ + public function is_cookie_policy_page() { + // get privacy policy options + $see_more = $this->options['general']['see_more_opt']; + + // custom link? + if ( $see_more['link_type'] !== 'page' ) + return false; + + // get current object + $current_page = sanitize_post( $GLOBALS['wp_the_query']->get_queried_object() ); + + // check if current page is privacy policy page + return $current_page->post_name === get_post_field( 'post_name', $see_more['id'] ); + } +} + +/** + * Initialize Cookie Notice. + * + * @return object + */ +function Cookie_Notice() { + static $instance; + + // first call to instance() initializes the plugin + if ( $instance === null || ! ( $instance instanceof Cookie_Notice ) ) + $instance = Cookie_Notice::instance(); + + return $instance; +} + +Cookie_Notice(); diff --git a/wp-content/plugins/cookie-notice/css/admin-dashboard.css b/wp-content/plugins/cookie-notice/css/admin-dashboard.css new file mode 100644 index 0000000..4b2e8cc --- /dev/null +++ b/wp-content/plugins/cookie-notice/css/admin-dashboard.css @@ -0,0 +1,348 @@ +.cn-dashboard-container { + min-height: 130px; + margin: 0 -4px; + text-align: center; + position: relative; + display: flex; + flex-direction: column; +} + +.cn-dashboard-container .spinner { + position: absolute; + left: 50%; + top: 40%; + margin-left: -10px; + z-index: 10; +} + +.cn-dashboard-container.loading { + pointer-events: none; +} + +.cn-dashboard-container.loading:after { + position: absolute; + content: ''; + display: block; + height: 100%; + width: 100%; + top: 0; + left: 0; + background-color: rgba(255,255,255,0.8); + z-index: 1; + transition: all 0.2s; +} + +.cn-dashboard_stats p.sub { + color: #8f8f8f; + font-size: 14px; + text-align: left; + padding-bottom: 3px; + border-bottom: 1px solid #ececec; +} + +.cn-table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +.cn-table { + caption-side: bottom; + border-collapse: collapse; + width: 100%; + margin-bottom: 1rem; + color: inherit; + vertical-align: top; + border-color: #dee2e6; + text-align: left; +} + +.cn-table > thead { + vertical-align: bottom; + color: #212529; +} + +.cn-table > tbody { + vertical-align: inherit; +} + +.cn-table tbody, +.cn-table td, +.cn-table tfoot, +.cn-table th, +.cn-table thead, +.cn-table tr { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +.cn-table th, +.cn-table td { + text-align: inherit; + text-align: -webkit-match-parent; +} + +.cn-table th:first-child, +.cn-table td:first-child { + width: 1px; + white-space: nowrap; +} + +.cn-table th:last-child, +.cn-table td:last-child { + text-align: right; +} + +.cn-table .no-posts :last-child { + text-align: left; +} + +.cn-table > :not(caption) > * > * { + padding: .5rem .5rem; + background-color: transparent; + border-bottom-width: 1px; + box-shadow: inset 0 0 0 9999px transparent; +} + +#cn_dashboard_stats .inside { + margin: 0; + padding: 0; +} + +.cn-accordion-toggle { + cursor: pointer; + line-height: 1; + position: relative; + font-size: 14px; + font-weight: 400; + line-height: 1; + margin: 0; + padding: 15px 15px 0; + color: #23282c; +} + +.cn-accordion-title { + display: inline-block; + padding-right: 10px; +} + +.cn-accordion-actions { + position: absolute; + top: 0; + right: 0; + z-index: 1; + padding: 11px 30px 11px 0; + height: 14px; + line-height: 1; +} + +.cn-accordion-actions .cn-accordion-action, +.cn-accordion-actions .cn-accordion-action::before { + font-size: 14px; + height: 14px; + width: 14px; + color: #72777c; +} + +.cn-tooltip { + position: relative; +} + +.cn-tooltip-icon { + display: inline-block; + width: 16px; + cursor: help; +} + +.cn-tooltip-icon::before { + color: #b4b9be; + content: "\f14c"; + display: inline-block; + font: normal 16px/1 dashicons; + position: absolute; + text-decoration: none !important; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + left: 0; + top: 2px; +} + +.cn-according-header { + display: flex; + align-items: center; + justify-content: space-between; +} + +.cn-accordion-content { + padding: 20px 20px 15px; + height: 100%; +} + +.cn-collapsed .cn-accordion-toggle::before { + transform: rotate(180deg); +} + +.cn-collapsed .cn-accordion-content { + display: none; +} + +.cn-infobox-container { + display: flex; + flex-wrap: wrap; + border: 1px solid #eee; +} + +.cn-infobox-container:not(:first-child) { + border-top-color: transparent; +} + +.cn-infobox { + width: 50%; + padding: 12px 10px 10px 15px; + position: relative; + text-align: left; + box-sizing: border-box; + border-left: 1px solid transparent; + min-height: 135px; +} + +#cn-visits-infobox-consents { + border-left-color: #eee; +} + +#cn-visits-infobox-limits, +#cn-visits-chart-limits { + border-top-color: #eee; +} + +.cn-infobox-notice { + width: 100%; + margin: 5px 10px 15px 15px; + padding: 15px 12px; + position: relative; + text-align: left; + box-sizing: border-box; + background: rgba(255, 193, 7, 0.05); + border: 1px solid rgb(255, 193, 7); +} + +.cn-infobox-notice p { + margin-top: 0; +} + +.cn-infobox-notice p:last-child { + margin-bottom: 0; +} + +.cn-infobox-notice p b { + font-size: 15px; + color: #222; +} + +.cn-infobox-title { + font-size: 16px; + color: #393f4c; + font-weight: 700; + margin-top: 0; + padding-right: 18px; + text-overflow: ellipsis; + overflow: hidden; + white-space: pre; + line-height: 1.2; +} + +.cn-infobox-number { + font-size: 36px; + float: none; + font-weight: 400; + display: inline-block; + line-height: 1; + margin-top: 11px; + color: rgb(32, 193, 158); +} + +.cn-infobox-subtitle { + margin-top: 22px; + color: #a4a9ae; +} + +.cn-infobox-subtitle p { + margin: 0 0 5px; +} + + +.cn-infobox-tooltip { + position: absolute; + top: 12px; + right: 15px; +} + +.cn-widget-block { + position: relative; + overflow: hidden; +} + +#cn-dashboard-upgrade { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 100%; + overflow: hidden; + box-sizing: border-box; + background: rgba(255,255,255,0.8); + min-height: 400px; +} + +#cn-dashboard-modal { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + padding: 1.5em 3em; + box-shadow: 0 0 25px 10px rgba(0,0,0,0.1); + border-radius: 3px; + background-color: #fff; + text-align: center; + width: 22em; +} + +#cn-dashboard-modal p { + margin: 0; +} + +#cn-dashboard-modal h2 { + margin-bottom: 10px; + font-size: 21px; +} + +.button.cn-button { + margin-top: 25px; + margin-bottom: 10px; + background-color: #20c19e; + border-color: #20c19e; +} + +.button.cn-button:hover, +.button.cn-button:active, +.button.cn-button:focus { + background-color: #1ca98a; + border-color: #1ca98a; +} + +.button.cn-button:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #20c19e; +} + +.cn-text-succcess { + color: #20c19e; +} + +.cn-text-warning { + color: rgb(255, 193, 7); +} + +.cn-text-danger { + color: rgb(200, 35, 51); +} \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/css/admin-notice.css b/wp-content/plugins/cookie-notice/css/admin-notice.css new file mode 100644 index 0000000..205e291 --- /dev/null +++ b/wp-content/plugins/cookie-notice/css/admin-notice.css @@ -0,0 +1,43 @@ +#cn-admin-notice.cn-notice { + border-left-color: #20c19e; +} +.cn-notice .cn-notice-container { + padding: 1em; + display: flex; + justify-content: space-between; + align-items: center; +} +.cn-notice .cn-notice-actions { + margin-bottom: 0; +} +.cn-notice .cn-notice-actions .button { + display: inline-block; + margin: 0.5em 0 0; +} +.cn-notice .cn-notice-text h2 { + margin-top: 0; + margin-bottom: 0.5em; +} +.cn-notice .cn-notice-dismiss, .cn-notice .cn-notice-delay { + margin-left: 1em; +} +.cn-notice .cn-notice-text strong { + color: #000; +} +.cn-notice .cn-notice-text p:last-child { + margin-bottom: 0; +} +.cn-notice .cn-notice-icon svg path { + fill: #666 !important; +} +@media only screen and (max-width: 960px) { + .cn-notice .cn-notice-container { + flex-direction: column; + align-items: initial; + } + + .cn-notice .cn-notice-container .cn-notice-text { + order: 1; + padding-top: 1em; + } +} \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/css/admin-plugins.css b/wp-content/plugins/cookie-notice/css/admin-plugins.css new file mode 100644 index 0000000..9e28f35 --- /dev/null +++ b/wp-content/plugins/cookie-notice/css/admin-plugins.css @@ -0,0 +1,47 @@ +.cn-deactivation-modal { + max-height: 500px; + overflow: hidden; + top: 50% !important; + transform: translateY(-50%); +} +.cn-deactivation-modal #TB_title { + padding: 13px 16px; + background: #f3f3f3; +} +.cn-deactivation-modal #TB_title > div { + padding: 0; + color: #000; +} +.cn-deactivation-modal #TB_ajaxContent { + width: auto !important; + height: calc(100% - 112px) !important; + padding: 0; +} +.cn-deactivation-modal #TB_closeAjaxWindow button { + right: 8px; +} +.cn-deactivation-options p:first-child { + margin-top: 0; +} +#cn-deactivation-container { + width: 100%; +} +#cn-deactivation-container textarea { + width: 100%; + min-height: 100px; +} +#cn-deactivation-body { + padding: 13px 16px; +} +#cn-deactivation-footer { + padding: 13px 16px; + position: absolute; + right: 0; + bottom: 0; + left: 0; + border-top: 1px solid #ddd; + background: #f3f3f3; +} +#cn-deactivation-footer .spinner { + float: none; +} \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/css/admin-welcome.css b/wp-content/plugins/cookie-notice/css/admin-welcome.css new file mode 100644 index 0000000..1609f84 --- /dev/null +++ b/wp-content/plugins/cookie-notice/css/admin-welcome.css @@ -0,0 +1,2098 @@ +.cn-welcome-wrap #wpcontent { + padding-left: 0; +} + +.cn-welcome-wrap .update-nag { + display: none; +} + +.cn-welcome-wrap * { + box-sizing: border-box; +} + +.cn-welcome-wrap #wpbody-content { + padding-bottom: 0; +} + +.cn-welcome-wrap #wpfooter { + display: none !important; +} + +#cn_upgrade_iframe iframe { + width: 100%; + height: 100%; + margin: 0; + border: 0; + padding: 0; +} + +.cn-welcome-wrap { + display: flex; + height: calc(100vh - 32px); + margin: 0; + background: #fff; + color: #191e23; + /* + position: fixed; + width: calc(100% - 160px); + */ + width: 100%; +} + +.folded .cn-welcome-wrap { + width: calc(100% - 36px); +} + +.cn-welcome-wrap h1, +.cn-welcome-wrap h2, +.cn-welcome-wrap h3, +.cn-welcome-wrap h4, +.cn-welcome-wrap h5 { + margin-top: 0; +} + +.cn-content h1, +.cn-content h2, +.cn-content h3, +.cn-content h4, +.cn-content h5 { + color: #191e23; + padding: 0; +} + +.cn-content h1, +.cn-content h2, +.cn-content h3, +.cn-content h4, +.cn-content h5 { + color: #191e23; + padding: 0; +} + +.cn-sidebar h1, +.cn-sidebar h2, +.cn-sidebar h3, +.cn-sidebar h4, +.cn-sidebar h5 { + color: #fff; +} + +.cn-content h1 + h2, +.cn-content h1 + h3 { + margin-top: 0.5em; +} + +.cn-welcome-wrap h1 { + font-size: 3.35em; + line-height: 1.1; + letter-spacing: -0.5px; +} +.cn-welcome-wrap h2 { + font-size: 2em; + line-height: 1.1; + letter-spacing: -0.5px; +} +.cn-welcome-wrap h3 { + font-size: 1.65em; + line-height: 1.1; +} +.cn-welcome-wrap h4 { + font-size: 1.5em; +} +.cn-welcome-wrap h5 { + font-size: 1.35em; +} + +.cn-welcome-wrap a, +.cn-welcome-wrap .cn-btn { + transition: all 0.2s; +} + +.cn-welcome-step-1 h3:first-child { + margin-bottom: 0; +} + +.cn-welcome-step-1 .cn-content .cn-lead { + margin-top: 1.5em; + max-width: 100%; +} + +.cn-welcome-step-1 .cn-content .cn-lead p:first-child { + margin-bottom: 1em; +} + +.cn-welcome-step-1 .cn-content h1 { + margin-bottom: 5px; +} + +.cn-welcome-step-1 .cn-content h2 { + margin-bottom: 1em; +} + +.cn-welcome-step-1 .cn-content h4 { + margin-top: 1.5em; +} + +.cn-welcome-step-1 .cn-sidebar .cn-lead { + margin-bottom: 1em; +} + +.cn-welcome-step-1 .cn-sidebar .cn-inner, +.cn-welcome-step-1 .cn-content .cn-inner { + padding: 6em; +} + +.cn-welcome-wrap.cn-welcome-step-1 .cn-sidebar { + width: 50%; +} + +.cn-welcome-wrap.cn-welcome-step-1 .cn-content.cn-sidebar-visible { + width: 50%; +} + +.cn-welcome-wrap .cn-content a.cn-link { + color: #20C19E; + text-decoration: none; + font-style: normal; + outline: none; + box-shadow: none; +} + +.cn-welcome-wrap .cn-sidebar { + width: 25%; + min-height: 100%; + background: #35383f; + /* + background: rgba(7,137,145,0.7); + background: linear-gradient(145deg, rgba(7,137,145,.7), rgba(32,193,158,.7)); + */ + /* + display: flex; + justify-content: center; + align-items: center; + */ + position: relative; + text-align: left; + overflow-y: scroll; + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} + +.cn-welcome-wrap .cn-content { + width: 100%; + min-height: 100%; + background-size: cover; + position: relative; + /* + display: flex; + justify-content: space-between; + align-items: center; + */ + text-align: center; + overflow-y: scroll; + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} + +.cn-welcome-wrap .cn-content::-webkit-scrollbar, +.cn-welcome-wrap .cn-sidebar::-webkit-scrollbar { + width: 0; + height: 0; +} + +.cn-welcome-wrap .cn-hero-image { + display: flex; + justify-content: center; + align-items: flex-start; + max-width: 70%; + margin: 2em auto; +} + +.cn-welcome-wrap .cn-hero-image img { + align-self: center; + max-width: 600px; +} + +.cn-welcome-wrap .cn-hero-image .cn-flex-item img { + max-width: 400px; +} + +.cn-welcome-wrap .cn-flex-item { + flex-grow: 1; + flex-basis: 0; +} + +.cn-welcome-wrap .cn-flex-item:first-child, +.cn-welcome-wrap .cn-flex-item:last-child { + flex-grow: 4; +} + +.cn-welcome-wrap .cn-flex-item:nth-child(2) img { + margin-top: 130px; +} + +.cn-welcome-wrap .cn-flex-item ul { + padding: 0; + margin: 0; + list-style: none; + font-size: 15px; +} + +.cn-welcome-wrap .cn-flex-item ul li { + padding: 0; + font-size: 15px; + line-height: 1.1; + margin: 1em 0; +} + +.cn-welcome-wrap .cn-flex-item ul li span { + display: inline-block; + position: relative; + padding-left: 20px; +} + +.cn-welcome-wrap .cn-flex-item ul li span::before { + font-family: 'dashicons'; + line-height: 1; + font-weight: 400; + font-style: normal; + text-transform: none; + text-rendering: auto; + font-size: 16px; + text-align: center; + display: block; + content: "\f15e"; + position: absolute; + top: 2px; + left: 0; + line-height: 1; + width: 16px; + height: 16px; + margin: 0; + color: #20C19E; + background: none; +} + +.cn-welcome-wrap .cn-flex-item ul li b { + font-weight: bold; + font-size: 16px; +} + +.cn-welcome-wrap .cn-logo-container { + margin-bottom: 1em; +} + +.cn-welcome-wrap .cn-logo-container > * { + vertical-align: middle; + margin-bottom: 0.5em; +} + +.cn-welcome-wrap .cn-logo-container img { + display: inline-block; +} + +.cn-welcome-wrap.cn-welcome-step-2 .cn-content { + background-size: cover; +} + +.cn-welcome-wrap.cn-welcome-step-3 .cn-content { + background-size: cover; +} + +.cn-welcome-wrap.cn-welcome-step-4 .cn-content { + background-size: cover; +} + +.cn-welcome-wrap .cn-content.cn-sidebar-visible { + width: 75%; +} + +.cn-welcome-wrap .cn-content-header { + text-align: center; + margin-bottom: 2em; + line-height: 1em; + display: flex; + flex-direction: row; +} + +.cn-welcome-wrap .cn-content-header:before, +.cn-welcome-wrap .cn-content-header:after { + content:''; + flex: 1 1; + margin: auto; + border-bottom: 1px solid rgba(255,255,255,.7); +} + +.cn-welcome-wrap .cn-content-header:before { + margin-right: 1em; +} + +.cn-welcome-wrap .cn-content-header:after { + margin-left: 1em; +} + +.cn-welcome-wrap .cn-inner { + position: relative; + z-index: 1; + padding: 4em; + min-height: 100%; + width: 100%; + display: flex; + justify-content: space-between; +} + +.cn-sidebar .cn-inner { + flex-direction: column; + justify-content: space-between; + padding-bottom: 2em; +} + +.cn-content .cn-inner { + flex-direction: row; + justify-content: space-around; + align-items: center; +} + +.cn-content .cn-lead { + margin: 0 auto; + max-width: 75%; +} + +.cn-content .cn-lead p { + font-size: 1.3em; + margin: 0.5em 0; +} + +.cn-content .cn-lead p:last-child { + margin-bottom: 0; +} + +.cn-content .cn-content-full { + width: 100%; +} + +.cn-sidebar { + color: #BBBBC0; +} + +.cn-sidebar a, +.cn-sidebar em { + color: #20C19E; + text-decoration: none; + font-style: normal; + outline: none; + box-shadow: none; +} + +.cn-sidebar a:hover { + text-decoration: underline; +} + +.cn-sidebar .cn-lead { + margin-bottom: 2em; +} + +.cn-sidebar .cn-lead b { + color: #fff; + font-weight: bold; + font-size: 15px; +} + +.cn-sidebar .cn-lead p:last-child { + margin-bottom: 0; +} + +.cn-sidebar .cn-buttons, +.cn-content .cn-buttons { + margin-top: 3em; +} + +.cn-welcome-step-3 .cn-content .cn-buttons { + margin-top: 0; +} + +.cn-header { + margin-bottom: 3em; +} + +.cn-footer { + margin-top: 3em; + text-align: left; +} + +.cn-footer .cn-btn.cn-skip-button { + color: #86868F; + font-weight: normal; + font-size: inherit; + text-decoration: none; +} + +.cn-footer .cn-btn.cn-skip-button:hover { + color: #fff; + text-decoration: none; +} + +.cn-footer a:hover { + color: #20C19E; +} + +.cn-welcome-wrap .cn-badge { + background: #ccc; + color: #191e23; + border-radius: 3px; + text-transform: uppercase; + line-height: 1; + display: inline-block; + padding: 5px; + margin-left: 5px; + margin-right: 5px; +} + +.cn-welcome-wrap .cn-pricing-type .cn-badge { + font-size: 14px; + font-weight: bold; + color: #20C19E; + background: rgba(32,193,158,0.1); + padding: 6px 8px; + text-transform: none; + border-radius: 10px; +} + +.cn-welcome-wrap .cn-pricing-type { + font-size: 1.3em; + display: flex; + justify-content: center; +} + +.cn-welcome-wrap .cn-pricing-type label { + padding: 5px 30px; + margin: 0; + position: relative; +} + +.cn-welcome-wrap .cn-pricing-type label:first-child { + border-right: 2px solid rgba(236, 236, 241, 0.5); +} + +.cn-welcome-wrap #cn-pricing-plans { + margin-top: 1em; +} + +.cn-welcome-wrap .cn-pricing-select { + margin-top: 1.5em; + margin-bottom: 1.5em; +} + +.cn-welcome-wrap .cn-pricing-table { + display: flex; + justify-content: center; + align-items: center; + margin-top: 3em; +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-item { + margin: 0 1.5em 3em; + min-width: 300px; +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-item h4 { + margin-bottom: 0.5em; + position: relative; + font-size: 1.3em; +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-item h4:after { + content: ''; + display: block; + width: 60px; + border-bottom: 1px solid #86868F; + margin: 1em auto 0; +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-item button { + pointer-events: none; +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-item:hover .cn-pricing-info { + border-color: rgba(0, 0, 0, 0.1); +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-item .cn-pricing-info { + box-shadow: 0px 0px 13px 0px rgba(236, 236, 241, 1); + border: 1px solid transparent; + border-radius: 5px; + position: relative; + overflow: hidden; +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-item input { + display: none; +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-item input:checked + .cn-pricing-info { + border-color: #20C19E; +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-item .cn-pricing-info > div { + padding: 2em 1.5em; +} + +.cn-welcome-wrap .cn-pricing-table input#cn-pricing-plan-free + .cn-pricing-info .cn-plan-price { + color: #35383f; + font-size: 1.25em; + line-height: 1.5em; +} + +.cn-welcome-wrap .cn-pricing-table input#cn-pricing-plan-pro + .cn-pricing-info { + background-color: rgba(32,193,158,0.1); +} + +.cn-welcome-wrap .cn-pricing-table input#cn-pricing-plan-pro + .cn-pricing-info .cn-plan-promo { + color: #fff; + background: #ffc107; + position: absolute; + left: 50%; + top: 0; + font-weight: bold; + font-size: 13px; + line-height: 1.1em; + text-transform: uppercase; + display: inline-block; + letter-spacing: 1px; + border-radius: 0 0 5px 5px; + padding: 0.5em 2em; + transform: translateX(-50%); +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-item .cn-pricing-info .cn-pricing-head { + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + padding: 3em 1.5em 2em; +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-item.cn-pricing-plan-free .cn-pricing-head { + padding-top: 2em; +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-info div.cn-pricing-body { + padding-bottom: 0; + font-size: 14px; + text-align: left; + margin: 0; +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-info div.cn-pricing-body p { + padding-left: 35px; + line-height: 1.25; + margin: 1em 0; +} + +.cn-welcome-wrap .cn-pricing-table .cn-plan-pricing { + display: block; + font-size: 1.5em; + color: #35383f; +} + +.cn-welcome-wrap .cn-pricing-table .cn-plan-price { + font-size: 1.5em; + font-weight: bold; + line-height: 1.1; + color: #20C19E; + text-transform: uppercase; +} + +.cn-welcome-wrap .cn-pricing-table .cn-plan-price sup { + font-weight: normal; + font-size: 0.5em; + color: #35383f; + vertical-align: top; +} + +.cn-welcome-wrap .cn-pricing-table .cn-plan-price sub { + font-weight: normal; + font-size: 0.5em; + color: #35383f; + text-transform: none; + vertical-align: bottom; +} + +.cn-welcome-wrap .cn-pricing-table .cn-pricing-footer { + margin: 0 0 1em; + cursor: pointer; +} + +.cn-welcome-wrap .cn-select-wrapper select { + background: #fff; + border: 1px solid #ccc; + color: #191e23; + border-radius: 25px; + padding: 7.5px 35px 7.5px 20px; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right 10px center; + background-size: 16px 12px; +} + +.cn-welcome-wrap .cn-select-wrapper select:hover, +.cn-welcome-wrap .cn-select-wrapper select:focus { + color: inherit; + box-shadow: none; +} + +.cn-welcome-wrap .cn-billing-wrapper { + font-weight: normal; +} + +.cn-welcome-wrap .cn-billing-wrapper input { + display: none; +} + +.cn-welcome-wrap .cn-billing-wrapper label { + position: relative; + display: inline-block; + padding: .5em 1em; + box-sizing: content-box; +} + +.cn-welcome-wrap .cn-billing-wrapper input:checked + span { + color: #fff; +} + +.cn-welcome-wrap .cn-billing-wrapper input:checked + span .cn-plan-overlay { + background-color: rgba(53,53,63,1); +} + +.cn-welcome-wrap .cn-billing-wrapper .cn-plan-overlay { + border: none; + width: 100%; + height: 100%; + border-radius: 3px; + position: absolute; + left: 0; + top: 0; + transition: border-color 0.2s; + z-index: -1; + background-color: rgba(53,53,63,0.1); +} + +.cn-welcome-wrap .cn-billing-wrapper :first-child > span .cn-plan-overlay { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.cn-welcome-wrap .cn-billing-wrapper :last-child > span .cn-plan-overlay { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.cn-btn { + border-radius: 3em; + padding: 1em 3em; + box-shadow: none; + border: 2px solid #20C19E; + outline: none; + background: #20C19E; + font-size: 15px; + font-weight: bold; + color: #fff; + cursor: pointer; + display: inline-block; + text-decoration: none; +} + +.cn-btn:hover, +.cn-btn:focus { + box-shadow: none; + outline: none; + border: 2px solid #20C19E; + background: #20C19E; + color: #fff; + text-decoration: none !important; +} + +.cn-btn.cn-btn-outline { + background: transparent; + color: #20C19E; + box-shadow: 0 0 15px 0 rgba(255,255,255,.4), inset 0 0 15px rgba(255,255,255,.4); +} + +.cn-btn.cn-btn-outline:hover { + text-shadow: 0 0 10px rgba(255,255,255,.4), 0 0 20px rgba(255,255,255,.4), 0 0 30px rgba(255,255,255,.4), 0 0 40px rgba(255,255,255,.4); +} + +.cn-btn.cn-btn-outline .cn-spinner::after { + border-color: #fff transparent #fff transparent; +} + +.cn-btn.cn-btn-transparent, +.cn-btn.cn-btn-transparent:hover, +.cn-btn.cn-btn-transparent:focus { + box-shadow: none; + background: transparent; + color: #BBBBC0; + border-color: transparent; +} + +.cn-btn.cn-btn-lg { + border-radius: 4em; + padding: 1.5em 4em; + font-size: 15px; +} + +.cn-btn.cn-btn-link { + background: none; + border-color: transparent; + color: inherit; + padding: 0; +} + +.cn-btn.cn-btn-secondary { + background-color:#ffc107; + border-color:#ffc107; + color:#3c434a +} + +.cn-btn.cn-btn-secondary:active, +.cn-btn.cn-btn-secondary:focus, +.cn-btn.cn-btn-secondary:hover { + background-color:#ffca2c; + border-color:#ffca2c +} + +.cn-top-bar { + display: flex; + justify-content: space-between; + align-items: center; +} + +.cn-stepper { + padding: 1.5em; + margin: 1.5em -1.5em; + overflow-x: hidden; + overflow-y: auto; + display: flex; + justify-content: space-between; +} + +.cn-stepper li { + position: relative; + display: flex; + flex: 1; + align-items: center; + transition: .2s; + margin: 0; +} + +.cn-stepper li:not(:last-child):after { + position: relative; + flex: 1; + height: 1px; + margin: .35em 0 0 0; + content: ''; + background-color: #86868F; +} + +.cn-stepper li .cn-step { + cursor: default; +} + +.cn-stepper li .cn-step .cn-circle { + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + font-weight: bold; + color: #fff; + text-align: center; + background: #86868F; + border-radius: 50%; +} + +.cn-stepper li.cn-completed .cn-step .cn-circle { + color: transparent; + background: #20C19E; +} +.cn-stepper li.cn-completed .cn-step .cn-circle:before{ + font-family: dashicons; + line-height: 1; + font-weight: 400; + font-style: normal; + text-transform: none; + text-rendering: auto; + font-size: 14px; + text-align: center; + display: block; + content: "\f15e"; + position: absolute; + top: 0; + left: -2px; + line-height: 2em; + width: 2em; + pointer-events: none; + transform: scale(1.25, 1.25); + color: #fff; +} + +.cn-stepper li.cn-active .cn-step .cn-circle { + background: #20C19E; +} + +.cn-features-list .cn-feature { + display: flex; + margin-bottom: 2em; + padding: 2em; + border: 1px solid rgba(255,255,255,0.1); + border-radius: 3px; + box-sizing: content-box; + background-color: rgba(255,255,255,0.1); +} + +.cn-features-list .cn-feature:last-child { + margin-bottom: 0; +} + +.cn-features-list .cn-feature img { + width: 48px; + height: 48px; + margin-right: 2em; +} +.cn-features-list .cn-feature h5 { + margin-bottom: 0.5em; +} + +.cn-features-list .cn-feature-description p:last-child { + margin-bottom: 0; +} + +.cn-form-container { + margin-left: -15px; + margin-right: -15px; + padding-left: 15px; + padding-right: 15px; + background: rgba(255,255,255,0.05); + padding-bottom: 1px; +} + +.cn-form-header { + font-size: 15px; + font-style: normal; + font-weight: bold; + color: #fff; + width: 100%; + text-align: left; + margin: 0; + padding: 15px 0; + color: #fff; +} + +.cn-small { + font-size: 12px; +} + +.cn-form.cn-form-disabled[data-action="payment"] { + pointer-events: none; + opacity: 0.5; +} + +.cn-form.cn-form-disabled .cn-accordion-collapse { + pointer-events: none; +} + +.cn-welcome-wrap form { + position: relative; + margin: 0; +} + +.cn-welcome-wrap form .cn-form-feedback { + position: relative; + margin-bottom: 1.5em; + color: #fff; + overflow-y: hidden; + max-height: 500px; /* approximate max height */ + transition: all .3s cubic-bezier(0, 1, 0.5, 1); + transition-delay: 0.3s; + opacity: 1; +} + +.cn-welcome-wrap form .cn-form-feedback p { + padding: 15px; + margin: 0; +} + +.cn-welcome-wrap form .cn-form-feedback p.cn-error { + border: 1px solid #da2439; + border-radius: 3px; + background: rgba( 218,36,57, 0.5); +} + +.cn-welcome-wrap form .cn-form-feedback p.cn-warning { + border: 1px solid #e78d26; + border-radius: 3px; + background: rgba( 231,141,38, 0.5); +} + +.cn-welcome-wrap form .cn-form-feedback p.cn-message { + border: 1px solid #008000; + border-radius: 3px; + background: rgba( 0,128,0, 0.5); +} + +.cn-welcome-wrap form .cn-form-feedback.cn-hidden { + max-height: 0; + margin-bottom: 0; + opacity: 0; +} + +.cn-welcome-wrap form .cn-field:not(:last-child) { + position: relative; + margin: 0 0 0.5em; +} + +.cn-welcome-wrap form .cn-field.cn-hidden { + display: none; +} + +.cn-welcome-wrap form .cn-field.cn-field-half { + width: calc(50% - 0.5em); + display: inline-block; + margin: auto 0.25em; +} + +.cn-welcome-wrap form .cn-field.cn-field-first { + margin-left: 0; +} + +.cn-welcome-wrap form .cn-field.cn-field-last { + margin-right: 0; +} + +.cn-welcome-wrap form label { + color: #fff; + margin: 0 0 0.5em; + display: block; +} + +.cn-welcome-wrap form .cn-field > label { + color: #fff; + margin: 0 0 0.5em; + display: block; + font-weight: 700; +} + +.cn-welcome-wrap form .cn-field.cn-field-submit { + margin: 1.5em 0 0 0; +} + +.cn-welcome-wrap form input[type="text"], +.cn-welcome-wrap form input[type="password"], +.cn-welcome-wrap form input[type="checkbox"], +.cn-welcome-wrap form input[type="radio"], +.cn-welcome-wrap form select { + background: transparent; + border: 1px solid #86868F; + margin: 0; + padding: 0 15px; + color: #fff; + transition: border-color 0.2s; +} + +.cn-welcome-wrap form select#cn-subscription-select option { + color: #35353f; +} + +.cn-welcome-wrap form select#cn-subscription-select option:disabled { + background: #666; +} + +.cn-welcome-wrap form input[type="checkbox"], +.cn-welcome-wrap form input[type="radio"] { + transition: none; +} + +.cn-welcome-wrap form input[type="checkbox"] b, +.cn-welcome-wrap form input[type="radio"] b { + font-weight: 700; +} + +.cn-welcome-wrap form input[type="text"], +.cn-welcome-wrap form input[type="password"], +.cn-welcome-wrap form select { + width: 100%; + line-height: 3; +} + +.cn-welcome-wrap form .cn-select-wrapper { + position: relative; + margin: 0; +} +.cn-welcome-wrap form .cn-select-wrapper:after { + font-family: dashicons; + line-height: 1; + font-weight: 400; + font-style: normal; + text-transform: none; + text-rendering: auto; + font-size: 18px; + text-align: center; + display: block; + content: "\f347"; + position: absolute; + top: 50%; + margin-top: -9px; + right: 15px; + line-height: 1; + pointer-events: none; + color: #fff; +} + +.cn-welcome-wrap form .cn-checkbox-wrapper, +.cn-welcome-wrap form .cn-radio-wrapper { + position: relative; +} + +.cn-welcome-wrap form .cn-checkbox-wrapper label, +.cn-welcome-wrap form .cn-radio-wrapper label { + color: #BBBBC0; +} + +.cn-welcome-wrap form .cn-checkbox-wrapper.cn-horizontal-wrapper label, +.cn-welcome-wrap form .cn-radio-wrapper.cn-horizontal-wrapper label { + display: inline-block; + margin-right: 0.5em; +} + +.cn-welcome-wrap form .cn-checkbox-wrapper.cn-horizontal-wrapper label:last-child, +.cn-welcome-wrap form .cn-radio-wrapper.cn-horizontal-wrapper label:last-child { + margin-right: 0; +} + +.cn-welcome-wrap .cn-checkbox-wrapper input, +.cn-welcome-wrap .cn-radio-wrapper input { + position: absolute; + margin: 2px 0; +} + +.cn-welcome-wrap .cn-checkbox-wrapper input:focus, +.cn-welcome-wrap .cn-radio-wrapper input:focus { + border-color: #86868F; +} + +.cn-welcome-wrap .cn-checkbox-wrapper input:checked, +.cn-welcome-wrap .cn-radio-wrapper input:checked { + background: none; + border-color: #20C19E; +} + +.cn-welcome-wrap .cn-checkbox-wrapper input:checked, +.cn-welcome-wrap .cn-radio-wrapper input:checked { + background: none; + border-color: #20C19E; +} + +.cn-welcome-wrap .cn-checkbox-wrapper input:checked::before { + font-family: dashicons; + line-height: 1; + font-weight: 400; + font-style: normal; + text-transform: none; + text-rendering: auto; + font-size: 14px; + text-align: center; + display: block; + content: "\f15e"; + position: absolute; + top: 0; + left: 0; + line-height: 1; + width: 16px; + height: 16px; + margin: 0 auto 0 -1px; + color: #fff; + background: none; +} + +.cn-welcome-wrap .cn-checkmark-wrapper input { + display: none; +} + +.cn-welcome-wrap .cn-checkmark-wrapper .cn-pricing-toggle { + display: flex; + align-items: center; + color: #35383f; + transition: color cubic-bezier(0.165, 0.84, 0.44, 1) 100ms; + cursor: pointer; +} + +.cn-welcome-wrap .cn-checkmark-wrapper input:checked + .cn-pricing-toggle { + color: #20C19e; +} + +.cn-welcome-wrap .cn-checkmark-wrapper input:checked + .cn-pricing-toggle .cn-checkmark::after { + width: 8px; + height: 15px; + border-right-color: currentColor; + border-bottom-color: currentColor; + transition: + width 100ms ease-in, + height 100ms ease-out 100ms, + border-color cubic-bezier(0.165, 0.84, 0.44, 1) 100ms; +} + + +.cn-welcome-wrap .cn-checkmark-container { + height: 26px; + width: 26px; + position: relative; + display: inline-block; + margin-right: calc(30px * 0.5); +} + +.cn-welcome-wrap .cn-checkmark-container .cn-checkmark { + position: absolute; + height: 26px; + width: 26px; + top: 50%; + left: 0; + transform: translateY(-50%) rotate(45deg); +} + +.cn-welcome-wrap .cn-checkmark-container .cn-checkmark::before, +.cn-welcome-wrap .cn-checkmark-container .cn-checkmark::after { + content: ""; + display: block; + position: absolute; +} + +.cn-welcome-wrap .cn-checkmark-container .cn-checkmark::before { + height: 100%; + width: 100%; + border-radius: 100%; + border: 2px solid currentColor; + background: transparent; + transition: background 100ms cubic-bezier(0.165, 0.84, 0.44, 1); +} + +.cn-welcome-wrap .cn-checkmark-container .cn-checkmark::after { + border: 2px solid transparent; + transition: + height 100ms ease-in, + width 100ms ease-out 100ms, + border-color cubic-bezier(0.165, 0.84, 0.44, 1) 100ms 100ms; + width: 0px; + height: 0px; + bottom: 4px; + left: 6px; + border-radius: 3px; + transform-origin: bottom left; + /* transform: rotate(45deg); */ +} + +.cn-welcome-wrap form .cn-color-picker-wrapper input { + border: none; +} + +.cn-welcome-wrap form .cn-color-picker-wrapper .sp-original-input-container { + margin-left: 0; + position: absolute; + border: 1px solid rgba(255,255,255,1); + border-radius: 0; +} + +.cn-welcome-wrap form .cn-color-picker-wrapper .sp-colorize-container { + height: 16px; +} + +.cn-welcome-wrap form .cn-color-picker-wrapper input:checked::before { + content: ''; +} + +.cn-welcome-wrap .cn-radio-wrapper label input:checked::before { + text-align: center; + display: block; + position: absolute; + top: 2px; + left: 2px; + line-height: 1; + width: 10px; + height: 10px; + margin: 0 auto; + color: #fff; + background: #20C19E; +} + +.cn-welcome-wrap .cn-checkbox-wrapper label > span, +.cn-welcome-wrap .cn-radio-wrapper label > span { + margin-left: 2em; + display: block; +} + +.cn-welcome-wrap .cn-field-checkbox > label.cn-asterix::after { + content: '*'; + right: 0; + top: 0; + line-height: 8px; + padding-left: 3px; + display: inline-block; +} + +.cn-welcome-wrap .cn-checkbox-wrapper label > span.cn-asterix::after, +.cn-welcome-wrap .cn-radio-wrapper label > span.cn-asterix::after { + content: '*'; + right: 0; + top: 0; + line-height: 8px; + padding-left: 3px; + display: inline-block; +} + +.cn-welcome-wrap form .cn-checkbox-image-wrapper label, +.cn-welcome-wrap form .cn-radio-image-wrapper label { + display: inline-block; + margin: 0 0.25em; + position: relative; +} + +.cn-welcome-wrap form .cn-checkbox-image-wrapper label.cn-asterix, +.cn-welcome-wrap form .cn-radio-image-wrapper label.cn-asterix { + padding-right: 8px; +} +.cn-welcome-wrap form .cn-checkbox-image-wrapper label.cn-asterix::after, +.cn-welcome-wrap form .cn-radio-image-wrapper label.cn-asterix::after { + content: '*'; + position: absolute; + right: 0; + top: 0; + line-height: 8px; +} + +.cn-sidebar form .cn-checkbox-image-wrapper span, +.cn-sidebar form .cn-radio-image-wrapper span { + display: block; + text-align: center; + font-weight: 600; +} + +.cn-welcome-wrap form .cn-checkbox-image-wrapper label:first-child, +.cn-welcome-wrap form .cn-radio-image-wrapper label:first-child { + margin-left: 0; +} + +.cn-welcome-wrap form .cn-checkbox-image-wrapper label:last-child, +.cn-welcome-wrap form .cn-radio-image-wrapper label:last-child { + margin-right: 0; +} + +.cn-welcome-wrap form .cn-checkbox-image-wrapper input, +.cn-welcome-wrap form .cn-radio-image-wrapper input { + display: none; +} + +.cn-welcome-wrap form .cn-checkbox-image-wrapper input:checked + img, +.cn-welcome-wrap form .cn-radio-image-wrapper input:checked + img { + border-color: #20C19E; +} + +.cn-welcome-wrap form .cn-checkbox-image-wrapper img, +.cn-welcome-wrap form .cn-radio-image-wrapper img { + display: inline-block; + padding: 0.5em; + border: 2px solid #86868F; + border-radius: 3px; + box-sizing: content-box; +} + +.cn-checkbox-image-wrapper .gdpr { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC/ElEQVRoge2ZzZGjMBCFmcMet4rjHjlsANQmsGRgZ7BkMGRgZ7DOYMhgnME4A08GdgZ2AujbA41HiD8JEOawXUWVXUjd73WLVqsVBB4F+OlTv3cBciB7Ng4nAV6ADHjnSz6A7bOxPQQIh94Dd43AaSFodgKkFmNOGoHEYvwySw1IgJtFFHJgC6RD4GTJnedF2jQSAUfNqzfgMFFnAnxqOi9CvNc5UwzG1CWaQede03f1Bl6MhZqxz5l0Jot97BKBRH5nc3hLCETyO52qr1LqL4wjxWm5Akd/UMaJfOzdjpUs8xvYyXp8k//RcjA7Mf01MMVdE3IjyxyfvZyMLIVEIuoarGcZJhqOgY14bJITqO8VSd/AqobZy6T2UPUbi5RSH0op9EeW5igiguVAWZ50YxKvhRoZJ4MC/maCr56iKN5GEgi139EYHVailDpqYHMgKYpir5S6a5FIvQGYIuL9B3jjXapFYnUpOgiCIAC2mpcT872+lJ4Ab1hkqfQRuHslIB9wNHa+BYHrHAToOprKJuacJSgPLH+M1HmRtLkDdkqp95aU+tqb09tthcC5No/moeLcybKpMO5KmZbPydLON3HwzagSflQD9BIid/BI4gD2OpaA2DIbBan+8qC9sD5cOxD4FADZWAJir72kkAjE8sxN4FEGF0WRT4xAVtl1/X6sCQCZlpH6wDtHYHbpIFDVUskA+HUSUEqd9eKrB/xqCVQkNmb+X4SAy8fhmEYnEbDGJanKavDCBPoPWJSnsIvk2BvlAbr3RAaEssZPYx6blN2BK2obGFGX/bBf/EsLrm7SlL3J5k73ZMGmVS9MT5Qt8T0rulGhLHViyso3sZ20uvbif1kiKl5tuFSqI/WH+Gq78HUR4dytc7CRS86fLwo078YQQ5HFXKtLEOq3NMP53lVaNpPIcs4Fy0YB9S70LNdXpgGqjW5g3AvNlvgd+DUwb6vZmHT72aY8rtY+WgN4YI5+fh3cFPUNynqz8inUt//V7OpWAnwHNuZvH/IPPeDD9c6V9FUAAAAASUVORK5CYII=); + background-repeat: no-repeat; + background-position: center center; +} + +.cn-checkbox-image-wrapper .ccpa { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAwCAYAAACScGMWAAACPElEQVRYheXYvXHbMBTAcY7AEbSA79Smskp30QiqkyLaQPQE8Qb2BtEG4QZil3Ry5ZZaAO/vAqANIwSJD1LmXXD3ToVE8sf3hEcQRVEUBXADfE+Mu2LOAVSkj/q/xj0sGVcvEgeUGTAvDlgBP4CD+Vyl4HaZuNa9WRH5JSK4oZT6CZQxuN+ZOBzYqQ9mxSkYmAuzcUqpyoE0InIUkWcng1UoLresWFlrOwCwczLa2EAispczWzvcxs5YzzXWDm4bistpwk1RfCypr2yppc3BVUvDXYAtsO7OsSRcbY5bAbfArYicrYu36Ob7Fj297wx8Ncf7JwewScGJSD3S00LjOJa9p0/E1SHlDQWm4rqmHI+LAKbgGsx/y23IMbiQVUos7g2G04yjcOYEObga2InIxQNrc3FjK2MvDtP7DOQYAIvGlcBzYub+WRKNwOJw5oRDvW8Ih4icImDxOHNiX3nHcF0GDwGwZJyvvCG4aZuwB9i31lsMbu/DAXsD9IZS6kEpVQ0FoQvPHlxfaU/jR15peGbuGf3mlhqHKYF95c0dj1MCY5ZV1wUy/uT4dOB2BtykwDmyNw0QOM6EyweS9547L/AKOID7VNwcLcUdf1Jxa3T27MjaDOoZL0m4AXRJ3uZ3Pg69p9fy/pxssVYW6GdxbrvJwjXoUnZh40oTFXrT53q4EXiNtYltkCkTaDoc71v734B9z/ex7WdSXHfxzcBvYsbfKXHlECwAd0H/JZ7MjX6ZDBcy0DPYBmyHbugVe8KbbhsHbZ0AAAAASUVORK5CYII=); + background-repeat: no-repeat; + background-position: center center; +} + +.cn-welcome-wrap form .cn-plan-wrapper { + margin-bottom: 1em; +} + +.cn-welcome-wrap form .cn-plan-wrapper label > span { + margin-left: 2em; +} + +.cn-welcome-wrap form .cn-plan-wrapper label { + position: relative; + display: block; + padding: 1.25em 1em; + box-sizing: content-box; +} + +.cn-welcome-wrap form .cn-plan-overlay { + border: 1px solid #86868F; + width: 100%; + height: 100%; + border-radius: 3px; + position: absolute; + left: 0; + top: 0; + transition: border-color 0.2s; + z-index: 0; + background-color: rgba(32,193,158,0); +} + +.cn-welcome-wrap form .cn-plan-wrapper .cn-disabled { + pointer-events: none; + opacity: 0.3; +} + +.cn-welcome-wrap form .cn-plan-wrapper input:checked + span .cn-plan-overlay { + border-color: #20C19E; + background-color: rgba(32,193,158,.1); +} + +.cn-welcome-wrap form .cn-plan-wrapper span .cn-plan-description { + font-weight: normal; +} + +.cn-welcome-wrap form .cn-plan-wrapper span .cn-plan-description b { + font-weight: bold; +} + +.cn-welcome-wrap form .cn-plan-wrapper input:checked + span { + color: #fff; +} + +.cn-welcome-wrap form .cn-plan-name { + display: block; + font-size: 1.1em; + font-weight: bold; + color: #fff; +} + +.cn-welcome-wrap form .cn-plan-pricing { + display: inline-block; + font-size: 1.1em; + float: right; + color: #ccc; +} + +.cn-welcome-wrap form .cn-price-off { + font-weight: bold; + color: #20C19E; +} + +.cn-welcome-wrap form .cn-plan-price { + font-weight: bold; +} + +.cn-welcome-wrap form input::placeholder, +.cn-welcome-wrap form select::placeholder { + color: #86868F; +} + +.cn-welcome-wrap form input:focus, +.cn-welcome-wrap form select:focus { + border-color: #20C19E; + box-shadow: none; +} + +.cn-welcome-wrap form select:focus { + color: #fff; +} + +.cn-welcome-wrap form select:hover { + color: #fff; +} + +.cn-welcome-wrap .cn-nav { + margin-top: 3em; +} + +.cn-welcome-wrap form .cn-nav { + margin-top: 2.5em; +} + +.cn-welcome-wrap .cn-nav .cn-btn { + margin: 0 0.25em; +} + +.cn-welcome-wrap .cn-nav .cn-btn:first-child { + margin-left: 0; +} + +.cn-welcome-wrap .cn-nav .cn-btn:last-child { + margin-right: 0; +} + +.cn-welcome-wrap #cn_preview_frame { + width: 100%; + height: 200px; + border: 1px solid #86868F; + margin-top: 2.5em; + box-shadow: 0 0 10px 0 rgba(0,0,0,.3); + position: relative; + overflow: hidden; +} + +.cn-welcome-wrap #cn_preview_frame img { + width: 100%; + height: auto; + display: block; + filter: blur(3px) grayscale(100%); +} + +.cn-welcome-wrap #cn_preview_frame_wrapper { + width: 400%; + height: 400%; + transform: scale(0.25) translate(-150%,-150%); + pointer-events: none; +} + +.cn-welcome-wrap #cn_preview_frame_wrapper::after { + content: ''; + display: block; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0); + position: absolute; + top: 0; + left: 0; +} + +.cn-welcome-wrap #cn_preview_frame_wrapper iframe { + width: 100%; + height: 100%; + filter: grayscale(100%); +} + +.cn-welcome-wrap #cn_preview_about { + margin-bottom: 1.5em; +} + +.cn-welcome-wrap #cn_preview_about p { + margin: 0; +} + +.cn-welcome-wrap #cn_preview_about p b { + color: #fff; +} + +.cn-comparison { + width: 100%; +} + +.cn-comparison tr:not(:last-child) { + box-shadow: 0px 1px 1px rgba(255,255,255,.5); +} + +.cn-comparison th, +.cn-comparison td { + padding: 1em; +} + +.cn-comparison th { + font-weight: bold; + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.cn-spinner { + display: inline-block; + width: 14px; + height: 14px; + max-width: 0; + opacity: 0; + transition: opacity 0.2s, max-width 0.3s; +} +.cn-spinner.spin { + max-width: 14px; + opacity: 1; + margin-right: 10px; +} +.cn-spinner:after { + content: ''; + display: block; + width: 12px; + height: 12px; + border-radius: 50%; + border: 2px solid #fff; + border-color: #fff transparent #fff transparent; + animation: cn-spin 0.8s linear infinite; +} + +@keyframes cn-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +@keyframes cn-fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +@keyframes cn-fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +@keyframes cn-slideIn { + from { + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideOut { + from { + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + transform: translate3d(0, -100%, 0); + } +} + +.cn-sidebar.cn-theme-light { + background: linear-gradient(-45deg, rgba(4,134,138,1), rgba(32,193,158,1)); + color: #fff; +} + +.cn-sidebar.cn-theme-light a, +.cn-sidebar.cn-theme-light em { + color: #fff; + text-decoration: underline; +} + +.cn-sidebar.cn-theme-light a:hover, +.cn-sidebar.cn-theme-light em:hover { + text-decoration: none; +} + +.cn-sidebar.cn-theme-light .cn-btn:not(.cn-skip-button) { + border-color: #fff; + background-color: #fff; + color: #191e23; +} + +.cn-sidebar.cn-theme-light .cn-btn:not(.cn-skip-button) .cn-spinner::after { + border-color: #191e23 transparent #191e23 transparent; +} + +.cn-sidebar.cn-theme-light .cn-btn.cn-skip-button { + color: rgba(255,255,255,0.5); +} + +.cn-sidebar.cn-theme-light .cn-btn.cn-skip-button:hover { + color: rgba(255,255,255,1); +} + +.cn-sidebar.cn-theme-light #cn_iframe_preview { + border-color: #fff; + box-shadow: 0 0 10px 0 rgba(255,255,255,.3); +} + +.cn-sidebar.cn-theme-light form input[type="text"], +.cn-sidebar.cn-theme-light form input[type="password"], +.cn-sidebar.cn-theme-light form input[type="checkbox"], +.cn-sidebar.cn-theme-light form input[type="radio"], +.cn-sidebar.cn-theme-light form select { + border-color: #fff; +} + +.cn-sidebar.cn-theme-light form .cn-checkbox-wrapper label, +.cn-sidebar.cn-theme-light form .cn-radio-wrapper label { + color: #fff; +} + +.cn-sidebar.cn-theme-light .cn-checkbox-image-wrapper input:checked + img, +.cn-sidebar.cn-theme-light .cn-radio-image-wrapper input:checked + img { + border-color: #fff; +} + +.cn-sidebar.cn-theme-light form .cn-checkbox-image-wrapper img, +.cn-sidebar.cn-theme-light form .cn-radio-image-wrapper img { + border-color: rgba(255,255,255,0.2); +} + +.cn-sidebar.cn-theme-light form .cn-radio-wrapper label input:checked::before { + background-color: #fff; +} + +.cn-sidebar.cn-theme-light form input::placeholder, +.cn-sidebar.cn-theme-light form select::placeholder { + color: rgba(255,255,255,0.7); +} + +.cn-sidebar.cn-theme-light form input:focus, +.cn-sidebar.cn-theme-light form select:focus { + border-color: #fff; +} + +.cn-sidebar.cn-theme-light form .cn-plan-overlay { + border-color: rgba(255,255,255,0.5); +} + +.cn-sidebar.cn-theme-light form .cn-plan-wrapper input:checked + span .cn-plan-overlay { + border-color: rgba(255,255,255,1); + background-color: rgba(255,255,255,.2); +} + +.cn-sidebar.cn-theme-light .cn-form-container { + background: rgba(0,0,0,0.1); + border: 1px solid rgba(255,255,255,.3); + transition: all 0.2s; +} + +.cn-sidebar.cn-theme-light .cn-form-container.cn-collapsed { + border-color: rgba(255,255,255,0); +} + +.cn-accordion .cn-accordion-item { + overflow: hidden; + border: 1px solid rgba(255,255,255,0.05); + transition: border-color 0.2s; +} + +.cn-accordion .cn-accordion-item:focus { + border-color: #20C19E; +} + +.cn-accordion .cn-accordion-item:not(:last-child) { + margin-bottom: 0.5em; +} + +.cn-accordion .cn-accordion-item.cn-disabled { + pointer-events: none; +} + +.cn-accordion .cn-accordion-item.cn-hidden { + visibility: hidden; +} + +.cn-accordion .cn-accordion-item.cn-collapsed .cn-accordion-button { + color: rgba(255,255,255,.7); +} + +.cn-accordion .cn-accordion-item.cn-collapsed .cn-accordion-button:hover { + color: #fff; +} + +.cn-accordion .cn-accordion-button { + text-align: left; + font-size: 15px; + font-style: normal; + font-weight: bold; + color: #fff; + width: 100%; + position: relative; + border: none; + outline: none; + background: none; + padding: 0; + margin: 0; + cursor: pointer; +} + +.cn-accordion .cn-accordion-button:hover { + color: #fff; +} + +/* +.cn-accordion .cn-accordion-button:after { + font-family: dashicons; + line-height: 1; + font-weight: 400; + font-style: normal; + text-transform: none; + text-rendering: auto; + font-size: 18px; + text-align: center; + display: block; + content: "\f347"; + position: absolute; + top: 50%; + margin-top: -9px; + right: 0; + line-height: 1; + pointer-events: none; + color: #fff; + transform: rotate(180deg); + transition: all 0.3s ease-in-out; +} + +.cn-accordion .cn-collapsed .cn-accordion-button:after { + transform: rotate(0); +}*/ + +.cn-accordion .cn-accordion-collapse { + overflow-y: hidden; + max-height: 1000px; /* approximate max height */ + + transition-property: all; + transition-duration: .3s; + transition-timing-function: ease-in-out; +} + +.cn-accordion .cn-accordion-collapse.cn-form { + margin-bottom: 1.5em; +} + +.cn-accordion .cn-collapsed .cn-accordion-collapse { + max-height: 0; + margin-bottom: 0; +} + +#cn_card_number, #cn_expiration_date, #cn_cvv { + background: transparent; + border: 1px solid #86868F; + border-radius: 3px; + margin: 0; + padding: 0 15px; + color: #fff; + transition: border-color 0.2s; + height: 3em; + box-shadow: none; +} + +#cn_card_number.braintree-hosted-fields-focused, #cn_expiration_date.braintree-hosted-fields-focused, #cn_cvv.braintree-hosted-fields-focused { + border-color: #20C19E; + background-color: transparent; + box-shadow: none; +} + +#cn_card_number.braintree-hosted-fields-invalid, #cn_expiration_date.braintree-hosted-fields-invalid, #cn_cvv.braintree-hosted-fields-invalid { + border-color: #DA2439; + background-color: transparent; + box-shadow: none; +} + +#cn_card_number.braintree-hosted-fields-valid { + color: #fff; +} + +/* Loader */ + +.cn-welcome-wrap .has-loader:before { + display: block; + content: ''; + background: rgba(255,255,255,0); + transition: all 0.2s; + position: absolute; + width: 100%; + height: 100%; + z-index: -1; +} +.cn-welcome-wrap .has-loader.cn-loading:before { + /* background: rgba(32,193,158,.2); */ + background: rgba(255,255,255,.2); + z-index: 99; +} + +.cn-welcome-wrap .has-loader > .cn-spinner { + position: absolute; + top: 50%; + left: 50%; + width: 21px; + height: 21px; + z-index: 100; +} + +.cn-welcome-wrap .has-loader > .cn-spinner:after { + border: 3px solid #20C19E; + border-color: #20C19E transparent #20C19E transparent; + width: 21px; + height: 21px; + border-radius: 50%; + opacity: 0; + transition: all 0.3s; +} + +.cn-welcome-wrap .has-loader.cn-loading > .cn-spinner { + max-width: 21px; + opacity: 1; +} + +.cn-welcome-wrap .has-loader.cn-loading > .cn-spinner:after { + opacity: 1; +} + +/* Progressbar */ + +.cn-welcome-wrap .cn-compliance-check { + width: 100%; + margin: 0 0 10px 0; +} + +.cn-welcome-wrap .cn-compliance-feedback { + position: relative; + margin-bottom: 1.5em; + color: #fff; + overflow-y: hidden; + max-height: 500px; /* approximate max height */ + transition: all .3s cubic-bezier(0, 1, 0.5, 1); + transition-delay: 0.3s; + opacity: 1; +} + +.cn-welcome-wrap .cn-compliance-feedback p { + padding: 15px; + margin: 0; +} + +.cn-welcome-wrap .cn-compliance-feedback p.cn-error { + border: 1px solid #da2439; + border-radius: 3px; + background: rgba( 218,36,57, 0.5); +} + +.cn-welcome-wrap .cn-compliance-feedback p.cn-error a { + color: inherit; + text-decoration: underline; +} + +.cn-welcome-wrap .cn-compliance-feedback p.cn-warning { + border: 1px solid #e78d26; + border-radius: 3px; + background: rgba( 231,141,38, 0.5); +} + +.cn-welcome-wrap .cn-compliance-feedback p.cn-message { + border: 1px solid #008000; + border-radius: 3px; + background: rgba( 0,128,0, 0.5); +} + +.cn-welcome-wrap .cn-compliance-feedback.cn-hidden { + max-height: 0; + margin-bottom: 0; + opacity: 0; +} + +.cn-welcome-wrap .cn-compliance-feedback em { + font-size: 15px; + font-weight: bold; + display: block; + margin-bottom: 10px; + color: inherit; +} + +.cn-welcome-wrap .cn-progressbar { + height: 26px; + margin: 0 0 20px; + width: 100%; + position: relative; +} + +.cn-welcome-wrap .cn-compliance-results .cn-compliance-item:not(:first-child) { + margin-top: 10px; +} + +.cn-welcome-wrap .cn-compliance-results .cn-compliance-item p { + display: flex; + justify-content: space-between; + margin: 0; +} + +.cn-welcome-wrap .cn-compliance-results .cn-compliance-item p:first-child { + font-size: 15px; + color: #fff; +} + +.cn-welcome-wrap .cn-compliance-results .cn-compliance-item p:last-child { +} + +.cn-welcome-wrap .cn-compliance-results .cn-compliance-label { +} + +.cn-welcome-wrap .cn-compliance-info { + font-size: 15px; + line-height: inherit; + opacity: 0.5; + cursor: pointer; +} + +.cn-welcome-wrap .cn-compliance-results .cn-compliance-status.cn-failed { + color: red; +} + +.cn-welcome-wrap .cn-compliance-results .cn-compliance-status.cn-passed { + color: #20C19E; +} + +.cn-welcome-wrap .cn-progress-label { + position: absolute; + left: 50%; + transform: translateX(-50%); + font-size: 14px; + font-weight: bold; + top: 3px; + color: #fff; +} + +.cn-welcome-wrap .ui-progressbar { + background: rgba(255,255,255,0.1); + border-radius: 3px; +} + +.cn-welcome-wrap .ui-progressbar .ui-progressbar-value { + background: #20C19E; + height: 100%; + border: 0 none; + border-radius: 3px; + margin: 3px 0; + color: #fff; + text-align: center; + float: left; + height: 20px; + line-height: 20px; + font-size: 20px; + width: 0; + min-width: 0; + -webkit-transition: width .5s ease; + -o-transition: width .5s ease; + transition: width .5s ease; +} + +/* Modaal */ + +.cn-modal .modaal-content-container { + padding: 0; +} + +.cn-modal .modaal-inner-wrapper { + padding: 30px 30px 0; +} + +.modaal-overlay { + z-index: 9998 !important; +} + +.cn-included, +.cn-excluded { + position: relative; +} + +.cn-included .cn-icon, +.cn-excluded .cn-icon { + box-sizing: border-box; + position: absolute; + left: 0; + display: block; + transform: scale(1); + width: 22px; + height: 22px; + border: 2px solid; +} + +.cn-included .cn-icon { + border-radius: 100px; + color: #20C19E; +} + +.cn-included b { + color: #20C19E; +} + +.cn-included .cn-icon::after { + content: ""; + display: block; + box-sizing: border-box; + position: absolute; + left: 3px; + top: -1px; + width: 6px; + height: 10px; + border-color: #20C19E; + border-width: 0 2px 2px 0; + border-style: solid; + transform-origin: bottom left; + transform: rotate(45deg); +} + +.cn-excluded .cn-icon { + border-radius: 40px; + color: #FF0000; +} + +.cn-excluded b { + color: #FF0000; +} + +.cn-excluded .cn-icon::after, +.cn-excluded .cn-icon::before { + content: ""; + display: block; + box-sizing: border-box; + position: absolute; + width: 12px; + height: 2px; + background: #FF0000; + transform: rotate(45deg); + border-radius: 5px; + top: 8px; + left: 3px; +} + +.cn-excluded .cn-icon::after { + transform: rotate(-45deg); +} + +.cn-tooltip { + position: relative; +} + +.cn-tooltip-icon { + position: relative; + display: inline-block; + width: 16px; + height: 16px; + cursor: help; + margin-left: 5px; +} + +.cn-tooltip-icon::before { + color: #fff; + content: "\f14c"; + display: inline-block; + font-family: 'dashicons'; + line-height: 1; + font-weight: 400; + font-style: normal; + text-transform: none; + text-rendering: auto; + font-size: 16px; + position: absolute; + text-decoration: none !important; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + left: 0; + top: 2px; +} +/* Trust badge — Screen 3 Basic plan footer (R2 US-6) */ +.cn-trust-badge { + display: block; + margin-top: 8px; + font-size: 11px; + color: #6b7280; + text-align: center; +} diff --git a/wp-content/plugins/cookie-notice/css/admin.css b/wp-content/plugins/cookie-notice/css/admin.css new file mode 100644 index 0000000..2057847 --- /dev/null +++ b/wp-content/plugins/cookie-notice/css/admin.css @@ -0,0 +1,833 @@ +.cookie-notice-sidebar { + float: right; + width: 280px; + margin: 20px -300px 20px 20px; + position: relative; +} + +.cookie-notice-sidebar .inner { + padding: 2em; +} + +.cookie-notice-sidebar>div:not(:last-child) { + margin-bottom: 3em; +} + +.cookie-notice-sidebar .inner img { + max-width: 80%; + height: auto; + display: block; + margin: 20px auto; +} + +.cookie-notice-credits { + background: #fff; + box-shadow: 0 0 0 1px rgba(0,0,0,0.05); +} + +.cookie-notice-credits .inner { + text-align: center; + margin: 0; +} + +.button.cn-button { + background-color: #20c19e; + border-color: #20c19e; +} + +.button.cn-button:active,.button.cn-button:focus,.button.cn-button:hover { + background-color: #1ca98a; + border-color: #1ca98a; +} + +.button.cn-button:focus { + box-shadow: 0 0 0 1px #fff,0 0 0 3px #20c19e; +} + +.button.button-secondary.cn-button { + background-color: #ffc107; + border-color: #ffc107; + color: #3c434a; +} + +.button.button-secondary.cn-button:active, +.button.button-secondary.cn-button:focus, +.button.button-secondary.cn-button:hover { + background-color: #ffca2c; + border-color: #ffca2c; +} + +.button.button-secondary.cn-button:focus { + box-shadow: 0 0 0 1px #fff,0 0 0 3px #ffc107; +} + +.cookie-notice-settings .cookie-notice-credits h2 { + border: none; + padding-bottom: 0; + margin-top: 0; +} + +.cookie-notice-credits h3 { + font-size: 14px; + line-height: 1.4; + margin: 0; + padding: 0.66em 1.33em; + border-bottom: 1px solid #eee; +} + +.cookie-notice-settings .df-credits form { + min-width: 260px; + margin-bottom: 1em; +} + +.cookie-notice-settings .df-credits form input { + margin: 0; + padding: 0; +} + +.cookie-notice-settings { + margin-right: 300px; +} + +.cookie-notice-settings hr,.df-credits hr { + border: solid #eee; + border-width: 1px 0 0; + clear: both; + height: 0; +} + +.cookie-notice-settings form { + float: left; + min-width: 463px; + width: 100%; +} + +.cookie-notice-settings form.cn-options-disabled .cn-section-container.compliance-section, +.cookie-notice-settings form.cn-options-disabled .cn-section-container.misc-section, +.cookie-notice-settings form.cn-options-disabled .cn-section-container.notice-section, +.cookie-notice-settings form.cn-options-disabled .cn-section-container.design-section, +.cookie-notice-settings form.cn-options-disabled .cn-section-container.privacy-section, +.cookie-notice-settings form.cn-options-privacy-disabled .cn-section-container.privacy-section, +.cookie-notice-settings form.cn-options-compliance-disabled .cn-section-container.compliance-section, +form.cn-options-submit-disabled .submit { + opacity: 0.5; + pointer-events: none; +} + +.cookie-notice-settings form .cn-options h2 { + margin: 1.5em 0; +} + +.cookie-notice-settings .ui-button { + margin-bottom: 5px; +} + +.cookie-notice-settings .description { + font-size: 13px; + margin-bottom: 8px; +} + +.cookie-notice-settings .description strong { + color: #444; +} + +.cookie-notice-settings .wp-list-table .column-more { + width: 80px; +} + +.cookie-notice-settings .wp-list-table.cn-cookie-consent-logs { + margin-top: 30px; +} + +.cookie-notice-settings .privacy-section table.wp-list-table { + position: relative; +} +.cookie-notice-settings .privacy-section table.wp-list-table { + margin-top: 12px; +} + +.cookie-notice-settings .privacy-section table.wp-list-table th { + padding: 8px; + font-weight: normal; +} + +.cookie-notice-settings .privacy-section table.wp-list-table th a { + padding: 0; +} + +.cookie-notice-settings .privacy-section table.wp-list-table td.column-title { + font-weight: 600; +} + +.cookie-notice-settings .privacy-section table.wp-list-table .title a { + pointer-events: none; + cursor: default; +} + +.cookie-notice-settings .privacy-section table.wp-list-table.loading { + cursor: wait; + opacity: 0.5; +} + +.cookie-notice-settings .privacy-section table.wp-list-table.loading a, +.cookie-notice-settings .privacy-section table.wp-list-table.loading input { + pointer-events: none; +} + +.cookie-notice-settings .privacy-section .cn-unavailable label { + opacity: 0.7; +} + +.cookie-notice-settings .privacy-section .cn-inactive .cn-privacy-consent-options-container { + opacity: 0.5; + filter: blur(3px); + pointer-events: none; +} + +.cookie-notice-settings .privacy-section .search-box { + margin-bottom: 12px; +} + +.cookie-notice-settings .privacy-section .spinner.inside, .cookie-notice-settings .logs-section .spinner.inside { + position: relative; + margin: 0; + padding: 0; + float: none; + left: calc( 50% - 10px ); +} + +#cn_colors label { + min-width: 10em; + display: inline-block; +} + +#cn_colors div { + vertical-align: middle; +} + +#cn_refuse_code .nav-tab-wrapper { + padding-top: 0; +} + +#cn_refuse_code .refuse-code-tab { + display: none; +} + +#cn_refuse_code .refuse-code-tab.active { + display: block; +} + +#cn_refuse_code .refuse-code-tab .description { + margin-top: 10px; +} + +.cn_compliance_status { + margin-right: 20px; + font-weight: 700; + display: inline-block; +} + +#cn_app_status { + margin-bottom: 30px; +} + +#cn_app_status .cn-status { + text-transform: uppercase; + font-weight: 700; + position: relative; + color: #999; +} + +#cn_app_status .cn-status.cn-active { + color: #1ca98a; +} + +#cn_app_status .cn-status.cn-inactive { + color: red; +} + +#cn_colors_bar_opacity_range { + vertical-align: middle; + margin-right: 10px; +} + +.cn-toggle-container .cn-toggle-item { + font-size: 14px; + display: block; + margin-bottom: 20px; + cursor: default; +} + +.cn-toggle-container .cn-toggle-item input { + display: none; +} + +.cn-toggle-container .cn-toggle-item span { + display: block; +} + +.cn-toggle-container .cn-toggle-item .cn-toggle-heading { + color: #2271b1; + transition-property: border,background,color; + transition-duration: 0.05s; + transition-timing-function: ease-in-out; + text-decoration: underline; + font-weight: 600; + cursor: pointer; + position: relative; + padding-left: 20px; +} + +.cn-toggle-container .cn-toggle-item .cn-toggle-heading:before { + border-style: solid; + border-width: 2px 2px 0 0; + content: ''; + display: inline-block; + height: 6px; + width: 6px; + position: relative; + top: 5px; + left: 0; + vertical-align: top; + transform: rotate(45deg); + transition: transform 0.2s; + position: absolute; +} + +.cn-toggle-container .cn-toggle-item .cn-toggle-body { + overflow: hidden; + transition: max-height 0.3s; + max-height: 0; + margin-top: 10px; + cursor: default; + padding-left: 20px; +} + +.cn-toggle-container .cn-toggle-item input:checked~.cn-toggle-heading:before { + transform: rotate(135deg); +} + +.cn-toggle-container .cn-toggle-item input:checked~.cn-toggle-body { + max-height: 100vh; +} + +.cn-consent-log.disabled { + opacity: 0.5; + pointer-events: none; +} + +.cn-consent-log .cn-consent-log-item { + font-size: 14px; + display: block; + cursor: pointer; +} + +.cn-consent-log .cn-consent-log-item.disabled { + cursor: default; + pointer-events: none; +} + +.cn-consent-log .cn-consent-log-item input { + display: none; +} + +.cn-consent-log .cn-consent-log-item span { + display: block; + margin: 9px; + padding: 0; + vertical-align: text-top; +} + +.cn-consent-log .cn-consent-log-item .cn-consent-log-head { + color: #2271b1; + transition-property: border,background,color; + transition-duration: 0.05s; + transition-timing-function: ease-in-out; + text-decoration: underline; + font-weight: 600; + position: relative; +} + +.cn-consent-log .cn-consent-log-item .cn-consent-log-head:before { + border-style: solid; + border-width: 1px 1px 0 0; + content: ''; + display: inline-block; + height: 6px; + width: 6px; + position: relative; + top: 4px; + left: 4px; + vertical-align: top; + transform: rotate(45deg); + transition: transform 0.2s; + position: absolute; +} + +.cn-consent-log.disabled .cn-consent-log-item .cn-consent-log-head, +.cn-consent-log .cn-consent-log-item.disabled .cn-consent-log-head { + color: #bbb; + transition-property: none; + transition-duration: unset; + transition-timing-function: unset; + text-decoration: underline; + font-weight: 600; + position: relative; + pointer-events: none; +} + +.cn-consent-log .cn-consent-log-item input:checked~.cn-consent-log-head:before { + transform: rotate(135deg); +} + +.cn-consent-logs-row { + display: none; +} + +.cn-consent-logs-data { + margin: 0 auto; +} + +.cn-consent-logs-data.loading { + min-height: 100px; +} + +.cn-consent-logs-data .spinner { + position: relative; + top: 38px; + margin: 0; + padding: 0; + float: none; + left: calc( 50% - 10px ); +} + +.cn-consent-logs-data p.description { + margin: 10px 0; +} + +.cn-consent-logs-data .paginationjs { + justify-content: center; + margin-top: 10px; +} + +.cn_fieldset_content { + margin-top: 10px; +} + +.cn-asterix { + color: #ffc107; +} + +@media only screen and (max-width:959px) { + .cookie-notice-sidebar { + width: 100%; + float:none; + margin: 20px 0; + } + .cookie-notice-settings { + margin-right: 0; + } +} + +.cn-pricing-info .cn-pricing-head h2 { + font-size: 23px; + font-weight: normal; + margin: 1em 0; +} + +.cn-pricing-info .cn-pricing-body { + padding-bottom: 0; + font-size: 14px; + text-align: left; + margin: 2em 0; +} + +.cn-pricing-info .cn-pricing-footer { + margin: 1em 0; +} + +.cn-pricing-info div.cn-pricing-body p { + padding-left: 30px; + margin: 0.75em 0; +} + +.cn-pricing-info div.cn-pricing-body .cn-icon { + position: absolute; + top: 0; + left: 0; +} + +.cn-active, +.cn-inactive, +.cn-pending { + position: relative; +} + +.cn-active .cn-icon, +.cn-inactive .cn-icon, +.cn-pending .cn-icon { + box-sizing: border-box; + position: relative; + left: 0; + top: 5px; + display: inline-block; + transform: scale(1); + width: 22px; + height: 22px; + border: 2px solid; + border-radius: 44px; +} + +.cn-active .cn-icon { + color: #20C19E; +} + +.cn-active .cn-icon::after { + border-color: #20C19E; +} + +.cn-pending .cn-icon::after { + border-color: #999; +} + +.cn-active .cn-icon::after, +.cn-pending .cn-icon::after { + content: ""; + display: block; + box-sizing: border-box; + position: absolute; + left: 3px; + top: -1px; + width: 6px; + height: 10px; + border-width: 0 2px 2px 0; + border-style: solid; + transform-origin: bottom left; + transform: rotate(45deg); +} + +.cn-inactive .cn-icon { + color: #FF0000; +} + +.cn-inactive .cn-icon::after, +.cn-inactive .cn-icon::before { + content: ""; + display: block; + box-sizing: border-box; + position: absolute; + width: 12px; + height: 2px; + background: #FF0000; + transform: rotate(45deg); + border-radius: 5px; + top: 8px; + left: 3px; +} + +.cn-inactive .cn-icon::after { + transform: rotate(-45deg); +} + +.cn-option-disabled label { + opacity: 0.5; + pointer-events: none; +} + +.cn-warning { + color: #ffc107; +} + +#cookie-notice-conditions .inside { + padding: 0; + margin: 6px 0; +} + +#cookie-notice-conditions .widefat { + border: none; + box-shadow: none; + background: none; +} + +#cookie-notice-conditions .widefat td.label { + width: 25%; +} + +#cookie-notice-conditions .widefat h4 { + margin: 8px 0; +} + +#cookie-notice-conditions .widefat h4.or-rules { + margin: 0 5px 0 0; +} + +#cookie-notice-conditions .widefat td, #cookie-notice-conditions .widefat th { + padding: 0; +} + +#cookie-notice-conditions .widefat .widefat { + margin-bottom: 0; +} + +#cookie-notice-conditions .widefat .widefat td { + padding: 5px; +} + +#cookie-notice-conditions .widefat .widefat td.param { + width: 30%; + padding-left: 0; +} + +#cookie-notice-conditions .widefat .widefat td.value { + width: 30%; + text-align: center; +} + +#cookie-notice-conditions .widefat .widefat td.value .spinner { + float: none; + margin: 0; +} + +#cookie-notice-conditions .widefat .widefat td.operator { + width: 20%; +} + +#cookie-notice-conditions .widefat .widefat td.remove { + min-width: 40px; + text-align: left; + padding: 0; +} + +#cookie-notice-conditions .widefat .widefat td.remove a { + vertical-align: middle; +} + +#cookie-notice-conditions .widefat .widefat select { + width: 98.95%; +} + +#cookie-notice-conditions #rules-groups { + margin-bottom: 10px; +} + +#cookie-notice-conditions .rules-group:last-child .or-rules, +#cookie-notice-conditions .rules-group:only-child .or-rules { + display: none; +} + +#cn-consent-logs-disabled { + position: relative; +} + +.cn-section-container.compliance-section { + padding-bottom: 1em; +} + +/* Sync Configuration Button */ +#cn_sync_config .cn-button-container { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 8px; +} + +#cn_sync_config .cn-sync-config-btn { + display: inline-flex; + align-items: center; + gap: 5px; +} + +#cn_sync_config .cn-sync-config-btn .dashicons { + font-size: 16px; + width: 16px; + height: 16px; + transition: transform 0.3s ease; +} + +#cn_sync_config .cn-sync-config-btn:hover .dashicons { + transform: rotate(180deg); +} + +#cn_sync_config .cn-sync-spinner { + float: none; + margin: 0; +} + +#cn_sync_config .cn-sync-spinner.is-active { + visibility: visible; +} + +#cn_sync_config .cn-sync-status { + font-weight: 500; + color: #646970; + margin: 0 0 8px 0; +} + +#cn_sync_config .cn-sync-message { + margin-top: 10px; +} + +#cn_sync_config .cn-sync-message p { + margin: 0.5em 0; +} + +#cn_sync_config .notice { + padding: 8px 12px; + margin: 0; +} + +#cn_sync_config .notice-success { + border-left-color: #00a32a; +} + +#cn_sync_config .notice-error { + border-left-color: #d63638; +} + +.cn-section-container.compliance-section .form-table { + display: block; + padding-left: 1em; + padding-right: 1em; + background-color: rgba(32,193,158,0.05); + box-shadow: 0 0 0 1px rgba(32, 193, 158, 0.5); +} + +form .cn-options .cn-section-container.logs-section > h2 { + margin-bottom: 0; +} + +.cn-section-container.logs-section > .subsubsub { + margin-bottom: 1em; +} + +#cn-consent-logs-upgrade { + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 100%; + overflow: hidden; + box-sizing: border-box; + min-height: 400px; +} + +#cn-consent-logs-bg { + width: 100%; + height: auto; + opacity: 0.8; +} + +#cn-consent-logs-modal { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + padding: 1.5em 3em; + box-shadow: 0 0 25px 10px rgba(0,0,0,0.1); + border-radius: 3px; + background-color: #fff; + text-align: center; + width: 24em; +} + +#cn-consent-logs-modal p { + margin: 0; +} + +#cn-consent-logs-modal h2 { + font-size: 21px; + font-weight: 400; + margin: 0 0 10px 0; + padding: 9px 0 4px; + line-height: 1.3; +} + +#cn-consent-logs-modal .button { + margin-top: 25px; + margin-bottom: 10px; +} + +input[type="checkbox"].cn-privacy-consent-form-status { + position: relative; + height: 1.2rem; + width: 2.4rem; + cursor: pointer; + appearance: none; + -webkit-appearance: none; + border-radius: 9999px; + background-color: rgba(100, 116, 139, 0.377); + transition: all .3s ease; + border: none; + box-shadow: none; + opacity: 1; +} + +.apply-all input[type="checkbox"].cn-privacy-consent-form-status { + pointer-events: none; + opacity: 0.3; +} + +.apply-all input[type="checkbox"].cn-privacy-consent-form-status, +input[type="checkbox"].cn-privacy-consent-form-status:checked { + background-color: rgba(32, 193, 158, 1); +} + +input[type="checkbox"].cn-privacy-consent-form-status:focus { + border-color: inherit; + box-shadow: none; +} + +input[type="checkbox"].cn-privacy-consent-form-status::before { + position: absolute; + content: ""; + left: calc(1.2rem - 1.3rem); + top: calc(1.2rem - 1.3rem); + display: block; + height: 1.3rem; + width: 1.3rem; + cursor: pointer; + border: 1px solid rgba(100, 116, 139, 0.5); + border-radius: 9999px; + background-color: rgba(255, 255, 255, 1); + box-shadow: 0 2px 6px rgba(100, 116, 139, 0.2); + transition: all .3s ease; + margin: 0; +} + +input[type="checkbox"].cn-privacy-consent-form-status:hover::before { + box-shadow: 0 0 0px 5px rgba(0, 0, 0, .1) +} + +.apply-all input[type="checkbox"].cn-privacy-consent-form-status:hover::before, +input[type="checkbox"].cn-privacy-consent-form-status:checked:hover::before { + box-shadow: 0 0 0px 5px rgba(32, 193, 158, .2) +} + +.apply-all input[type="checkbox"].cn-privacy-consent-form-status:before, +input[type="checkbox"].cn-privacy-consent-form-status:checked:before { + transform: translateX(100%); + border-color: rgba(32, 193, 158, 1); +} +/* R1 US-3: Pro features locked callout */ +.cn-pro-feature-item { + margin-bottom: 12px; + opacity: 0.6; +} + +.cn-pro-lock { + display: inline-block; + background: #3c434a; + color: #fff; + font-size: 10px; + font-weight: 700; + padding: 2px 6px; + border-radius: 3px; + vertical-align: middle; + margin-left: 6px; + letter-spacing: 0.4px; + text-transform: uppercase; +} + +#cn_pro_features_locked .cn-pro-upgrade-btn { + margin-top: 4px; +} diff --git a/wp-content/plugins/cookie-notice/css/admin.min.css b/wp-content/plugins/cookie-notice/css/admin.min.css new file mode 100644 index 0000000..6fe6298 --- /dev/null +++ b/wp-content/plugins/cookie-notice/css/admin.min.css @@ -0,0 +1 @@ +.cookie-notice-sidebar{float:right;width:280px;margin:20px -300px 20px 20px;position:relative}.cookie-notice-sidebar .inner{padding:2em}.cookie-notice-sidebar>div:not(:last-child){margin-bottom:3em}.cookie-notice-sidebar .inner img{max-width:80%;height:auto;display:block;margin:20px auto}.cookie-notice-credits{background:#fff;box-shadow:0 0 0 1px rgba(0,0,0,.05)}.cookie-notice-credits .inner{text-align:center;margin:0}.button.cn-button{background-color:#20c19e;border-color:#20c19e}.button.cn-button:active,.button.cn-button:focus,.button.cn-button:hover{background-color:#1ca98a;border-color:#1ca98a}.button.cn-button:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #20c19e}.button.button-secondary.cn-button{background-color:#ffc107;border-color:#ffc107;color:#3c434a}.button.button-secondary.cn-button:active,.button.button-secondary.cn-button:focus,.button.button-secondary.cn-button:hover{background-color:#ffca2c;border-color:#ffca2c}.button.button-secondary.cn-button:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #ffc107}.cookie-notice-settings .cookie-notice-credits h2{border:none;padding-bottom:0;margin-top:0}.cookie-notice-credits h3{font-size:14px;line-height:1.4;margin:0;padding:.66em 1.33em;border-bottom:1px solid #eee}.cookie-notice-settings .df-credits form{min-width:260px;margin-bottom:1em}.cookie-notice-settings .df-credits form input{margin:0;padding:0}.cookie-notice-settings{margin-right:300px}.cookie-notice-settings hr,.df-credits hr{border:solid #eee;border-width:1px 0 0;clear:both;height:0}.cookie-notice-settings form{float:left;min-width:463px;width:100%}.cookie-notice-settings form.cn-options-compliance-disabled .cn-section-container.compliance-section,.cookie-notice-settings form.cn-options-disabled .cn-section-container.compliance-section,.cookie-notice-settings form.cn-options-disabled .cn-section-container.design-section,.cookie-notice-settings form.cn-options-disabled .cn-section-container.misc-section,.cookie-notice-settings form.cn-options-disabled .cn-section-container.notice-section,.cookie-notice-settings form.cn-options-disabled .cn-section-container.privacy-section,.cookie-notice-settings form.cn-options-privacy-disabled .cn-section-container.privacy-section,form.cn-options-submit-disabled .submit{opacity:.5;pointer-events:none}.cookie-notice-settings form .cn-options h2{margin:1.5em 0}.cookie-notice-settings .ui-button{margin-bottom:5px}.cookie-notice-settings .description{font-size:13px;margin-bottom:8px}.cookie-notice-settings .description strong{color:#444}.cookie-notice-settings .wp-list-table .column-more{width:80px}.cookie-notice-settings .wp-list-table.cn-cookie-consent-logs{margin-top:30px}.cookie-notice-settings .privacy-section table.wp-list-table{position:relative}.cookie-notice-settings .privacy-section table.wp-list-table{margin-top:12px}.cookie-notice-settings .privacy-section table.wp-list-table th{padding:8px;font-weight:400}.cookie-notice-settings .privacy-section table.wp-list-table th a{padding:0}.cookie-notice-settings .privacy-section table.wp-list-table td.column-title{font-weight:600}.cookie-notice-settings .privacy-section table.wp-list-table .title a{pointer-events:none;cursor:default}.cookie-notice-settings .privacy-section table.wp-list-table.loading{cursor:wait;opacity:.5}.cookie-notice-settings .privacy-section table.wp-list-table.loading a,.cookie-notice-settings .privacy-section table.wp-list-table.loading input{pointer-events:none}.cookie-notice-settings .privacy-section .cn-unavailable label{opacity:.7}.cookie-notice-settings .privacy-section .cn-inactive .cn-privacy-consent-options-container{opacity:.5;filter:blur(3px);pointer-events:none}.cookie-notice-settings .privacy-section .search-box{margin-bottom:12px}.cookie-notice-settings .logs-section .spinner.inside,.cookie-notice-settings .privacy-section .spinner.inside{position:relative;margin:0;padding:0;float:none;left:calc(50% - 10px)}#cn_colors label{min-width:10em;display:inline-block}#cn_colors div{vertical-align:middle}#cn_refuse_code .nav-tab-wrapper{padding-top:0}#cn_refuse_code .refuse-code-tab{display:none}#cn_refuse_code .refuse-code-tab.active{display:block}#cn_refuse_code .refuse-code-tab .description{margin-top:10px}.cn_compliance_status{margin-right:20px;font-weight:700;display:inline-block}#cn_app_status{margin-bottom:30px}#cn_app_status .cn-status{text-transform:uppercase;font-weight:700;position:relative;color:#999}#cn_app_status .cn-status.cn-active{color:#1ca98a}#cn_app_status .cn-status.cn-inactive{color:red}#cn_colors_bar_opacity_range{vertical-align:middle;margin-right:10px}.cn-toggle-container .cn-toggle-item{font-size:14px;display:block;margin-bottom:20px;cursor:default}.cn-toggle-container .cn-toggle-item input{display:none}.cn-toggle-container .cn-toggle-item span{display:block}.cn-toggle-container .cn-toggle-item .cn-toggle-heading{color:#2271b1;transition-property:border,background,color;transition-duration:50ms;transition-timing-function:ease-in-out;text-decoration:underline;font-weight:600;cursor:pointer;position:relative;padding-left:20px}.cn-toggle-container .cn-toggle-item .cn-toggle-heading:before{border-style:solid;border-width:2px 2px 0 0;content:'';display:inline-block;height:6px;width:6px;position:relative;top:5px;left:0;vertical-align:top;transform:rotate(45deg);transition:transform .2s;position:absolute}.cn-toggle-container .cn-toggle-item .cn-toggle-body{overflow:hidden;transition:max-height .3s;max-height:0;margin-top:10px;cursor:default;padding-left:20px}.cn-toggle-container .cn-toggle-item input:checked~.cn-toggle-heading:before{transform:rotate(135deg)}.cn-toggle-container .cn-toggle-item input:checked~.cn-toggle-body{max-height:100vh}.cn-consent-log.disabled{opacity:.5;pointer-events:none}.cn-consent-log .cn-consent-log-item{font-size:14px;display:block;cursor:pointer}.cn-consent-log .cn-consent-log-item.disabled{cursor:default;pointer-events:none}.cn-consent-log .cn-consent-log-item input{display:none}.cn-consent-log .cn-consent-log-item span{display:block;margin:9px;padding:0;vertical-align:text-top}.cn-consent-log .cn-consent-log-item .cn-consent-log-head{color:#2271b1;transition-property:border,background,color;transition-duration:50ms;transition-timing-function:ease-in-out;text-decoration:underline;font-weight:600;position:relative}.cn-consent-log .cn-consent-log-item .cn-consent-log-head:before{border-style:solid;border-width:1px 1px 0 0;content:'';display:inline-block;height:6px;width:6px;position:relative;top:4px;left:4px;vertical-align:top;transform:rotate(45deg);transition:transform .2s;position:absolute}.cn-consent-log .cn-consent-log-item.disabled .cn-consent-log-head,.cn-consent-log.disabled .cn-consent-log-item .cn-consent-log-head{color:#bbb;transition-property:none;transition-duration:unset;transition-timing-function:unset;text-decoration:underline;font-weight:600;position:relative;pointer-events:none}.cn-consent-log .cn-consent-log-item input:checked~.cn-consent-log-head:before{transform:rotate(135deg)}.cn-consent-logs-row{display:none}.cn-consent-logs-data{margin:0 auto}.cn-consent-logs-data.loading{min-height:100px}.cn-consent-logs-data .spinner{position:relative;top:38px;margin:0;padding:0;float:none;left:calc(50% - 10px)}.cn-consent-logs-data p.description{margin:10px 0}.cn-consent-logs-data .paginationjs{justify-content:center;margin-top:10px}.cn_fieldset_content{margin-top:10px}.cn-asterix{color:#ffc107}@media only screen and (max-width:959px){.cookie-notice-sidebar{width:100%;float:none;margin:20px 0}.cookie-notice-settings{margin-right:0}}.cn-pricing-info .cn-pricing-head h2{font-size:23px;font-weight:400;margin:1em 0}.cn-pricing-info .cn-pricing-body{padding-bottom:0;font-size:14px;text-align:left;margin:2em 0}.cn-pricing-info .cn-pricing-footer{margin:1em 0}.cn-pricing-info div.cn-pricing-body p{padding-left:30px;margin:.75em 0}.cn-pricing-info div.cn-pricing-body .cn-icon{position:absolute;top:0;left:0}.cn-active,.cn-inactive,.cn-pending{position:relative}.cn-active .cn-icon,.cn-inactive .cn-icon,.cn-pending .cn-icon{box-sizing:border-box;position:relative;left:0;top:5px;display:inline-block;transform:scale(1);width:22px;height:22px;border:2px solid;border-radius:44px}.cn-active .cn-icon{color:#20c19e}.cn-active .cn-icon::after{border-color:#20c19e}.cn-pending .cn-icon::after{border-color:#999}.cn-active .cn-icon::after,.cn-pending .cn-icon::after{content:"";display:block;box-sizing:border-box;position:absolute;left:3px;top:-1px;width:6px;height:10px;border-width:0 2px 2px 0;border-style:solid;transform-origin:bottom left;transform:rotate(45deg)}.cn-inactive .cn-icon{color:red}.cn-inactive .cn-icon::after,.cn-inactive .cn-icon::before{content:"";display:block;box-sizing:border-box;position:absolute;width:12px;height:2px;background:red;transform:rotate(45deg);border-radius:5px;top:8px;left:3px}.cn-inactive .cn-icon::after{transform:rotate(-45deg)}.cn-option-disabled label{opacity:.5;pointer-events:none}.cn-warning{color:#ffc107}#cookie-notice-conditions .inside{padding:0;margin:6px 0}#cookie-notice-conditions .widefat{border:none;box-shadow:none;background:0 0}#cookie-notice-conditions .widefat td.label{width:25%}#cookie-notice-conditions .widefat h4{margin:8px 0}#cookie-notice-conditions .widefat h4.or-rules{margin:0 5px 0 0}#cookie-notice-conditions .widefat td,#cookie-notice-conditions .widefat th{padding:0}#cookie-notice-conditions .widefat .widefat{margin-bottom:0}#cookie-notice-conditions .widefat .widefat td{padding:5px}#cookie-notice-conditions .widefat .widefat td.param{width:30%;padding-left:0}#cookie-notice-conditions .widefat .widefat td.value{width:30%;text-align:center}#cookie-notice-conditions .widefat .widefat td.value .spinner{float:none;margin:0}#cookie-notice-conditions .widefat .widefat td.operator{width:20%}#cookie-notice-conditions .widefat .widefat td.remove{min-width:40px;text-align:left;padding:0}#cookie-notice-conditions .widefat .widefat td.remove a{vertical-align:middle}#cookie-notice-conditions .widefat .widefat select{width:98.95%}#cookie-notice-conditions #rules-groups{margin-bottom:10px}#cookie-notice-conditions .rules-group:last-child .or-rules,#cookie-notice-conditions .rules-group:only-child .or-rules{display:none}#cn-consent-logs-disabled{position:relative}.cn-section-container.compliance-section{padding-bottom:1em}#cn_sync_config .cn-button-container{display:flex;align-items:center;gap:10px;margin-bottom:8px}#cn_sync_config .cn-sync-config-btn{display:inline-flex;align-items:center;gap:5px}#cn_sync_config .cn-sync-config-btn .dashicons{font-size:16px;width:16px;height:16px;transition:transform .3s ease}#cn_sync_config .cn-sync-config-btn:hover .dashicons{transform:rotate(180deg)}#cn_sync_config .cn-sync-spinner{float:none;margin:0}#cn_sync_config .cn-sync-spinner.is-active{visibility:visible}#cn_sync_config .cn-sync-status{font-weight:500;color:#646970;margin:0 0 8px 0}#cn_sync_config .cn-sync-message{margin-top:10px}#cn_sync_config .cn-sync-message p{margin:.5em 0}#cn_sync_config .notice{padding:8px 12px;margin:0}#cn_sync_config .notice-success{border-left-color:#00a32a}#cn_sync_config .notice-error{border-left-color:#d63638}.cn-section-container.compliance-section .form-table{display:block;padding-left:1em;padding-right:1em;background-color:rgba(32,193,158,.05);box-shadow:0 0 0 1px rgba(32,193,158,.5)}form .cn-options .cn-section-container.logs-section>h2{margin-bottom:0}.cn-section-container.logs-section>.subsubsub{margin-bottom:1em}#cn-consent-logs-upgrade{position:absolute;left:0;top:0;height:100%;width:100%;overflow:hidden;box-sizing:border-box;min-height:400px}#cn-consent-logs-bg{width:100%;height:auto;opacity:.8}#cn-consent-logs-modal{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:1.5em 3em;box-shadow:0 0 25px 10px rgba(0,0,0,.1);border-radius:3px;background-color:#fff;text-align:center;width:24em}#cn-consent-logs-modal p{margin:0}#cn-consent-logs-modal h2{font-size:21px;font-weight:400;margin:0 0 10px 0;padding:9px 0 4px;line-height:1.3}#cn-consent-logs-modal .button{margin-top:25px;margin-bottom:10px}input[type=checkbox].cn-privacy-consent-form-status{position:relative;height:1.2rem;width:2.4rem;cursor:pointer;appearance:none;-webkit-appearance:none;border-radius:9999px;background-color:rgba(100,116,139,.377);transition:all .3s ease;border:none;box-shadow:none;opacity:1}.apply-all input[type=checkbox].cn-privacy-consent-form-status{pointer-events:none;opacity:.3}.apply-all input[type=checkbox].cn-privacy-consent-form-status,input[type=checkbox].cn-privacy-consent-form-status:checked{background-color:#20c19e}input[type=checkbox].cn-privacy-consent-form-status:focus{border-color:inherit;box-shadow:none}input[type=checkbox].cn-privacy-consent-form-status::before{position:absolute;content:"";left:calc(1.2rem - 1.3rem);top:calc(1.2rem - 1.3rem);display:block;height:1.3rem;width:1.3rem;cursor:pointer;border:1px solid rgba(100,116,139,.5);border-radius:9999px;background-color:#fff;box-shadow:0 2px 6px rgba(100,116,139,.2);transition:all .3s ease;margin:0}input[type=checkbox].cn-privacy-consent-form-status:hover::before{box-shadow:0 0 0 5px rgba(0,0,0,.1)}.apply-all input[type=checkbox].cn-privacy-consent-form-status:hover::before,input[type=checkbox].cn-privacy-consent-form-status:checked:hover::before{box-shadow:0 0 0 5px rgba(32,193,158,.2)}.apply-all input[type=checkbox].cn-privacy-consent-form-status:before,input[type=checkbox].cn-privacy-consent-form-status:checked:before{transform:translateX(100%);border-color:#20c19e}.cn-pro-feature-item{margin-bottom:12px;opacity:.6}.cn-pro-lock{display:inline-block;background:#3c434a;color:#fff;font-size:10px;font-weight:700;padding:2px 6px;border-radius:3px;vertical-align:middle;margin-left:6px;letter-spacing:.4px;text-transform:uppercase}#cn_pro_features_locked .cn-pro-upgrade-btn{margin-top:4px} \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/css/front.css b/wp-content/plugins/cookie-notice/css/front.css new file mode 100644 index 0000000..7dc2f09 --- /dev/null +++ b/wp-content/plugins/cookie-notice/css/front.css @@ -0,0 +1,343 @@ +#cookie-notice { + position: fixed; + min-width: 100%; + height: auto; + z-index: 100000; + font-size: 13px; + letter-spacing: 0; + line-height: 20px; + left: 0; + text-align: center; + /* border-top: 2px solid #fbb03b; */ + font-weight: normal; + font-family: -apple-system,BlinkMacSystemFont,Arial,Roboto,"Helvetica Neue",sans-serif; +} +#cookie-notice, +#cookie-notice * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +#cookie-notice.cn-animated { + -webkit-animation-duration: 0.5s !important; + animation-duration: 0.5s !important; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} +#cookie-notice.cn-animated.cn-effect-none { + -webkit-animation-duration: 0.001s !important; + animation-duration: 0.001s !important; +} +#cookie-notice .cookie-notice-container { + display: block; +} +#cookie-notice.cookie-notice-hidden .cookie-notice-container { + display: none; +} +#cookie-notice .cookie-revoke-container { + display: block; +} +#cookie-notice.cookie-revoke-hidden .cookie-revoke-container { + display: none; +} +.cn-position-top { + top: 0; +} +.cn-position-bottom { + bottom: 0; +} +.cookie-notice-container { + padding: 15px 30px; + text-align: center; + width: 100%; + z-index: 2; +} +.cookie-revoke-container { + padding: 15px 30px; + width: 100%; + z-index: 1; +} +.cn-close-icon { + position: absolute; + right: 15px; + top: 50%; + margin: -10px 0 0 0; + width: 15px; + height: 15px; + opacity: 0.5; + padding: 10px; + border: none; + outline: none; + background: none; + box-shadow: none; + cursor: pointer; +} +.cn-close-icon:focus, +.cn-close-icon:focus-visible { + outline: 2px solid currentColor; + outline-offset: 3px; +} +.cn-close-icon:hover { + opacity: 1; +} +.cn-close-icon:before, +.cn-close-icon:after { + position: absolute; + content: ' '; + height: 15px; + width: 2px; + top: 3px; + background-color: rgba(128,128,128,1); +} +.cn-close-icon:before { + transform: rotate(45deg); +} +.cn-close-icon:after { + transform: rotate(-45deg); +} +#cookie-notice .cn-revoke-cookie { + margin: 0; +} +#cookie-notice .cn-button { + margin: 0 0 0 10px; + display: inline-block; +} +#cookie-notice .cn-button:not(.cn-button-custom) { + font-family: -apple-system,BlinkMacSystemFont,Arial,Roboto,"Helvetica Neue",sans-serif; + font-weight: normal; + font-size: 13px; + letter-spacing: 0.25px; + line-height: 20px; + margin: 0 0 0 10px; + text-align: center; + text-transform: none; + display: inline-block; + cursor: pointer; + touch-action: manipulation; + white-space: nowrap; + outline: none; + box-shadow: none; + text-shadow: none; + border: none; + -webkit-border-radius: 2rem; + -moz-border-radius: 2rem; + border-radius: 2rem; + text-decoration: none; + padding: 8.5px 10px; + line-height: 1; + color: inherit; +} +.cn-text-container { + margin: 0 0 6px 0; +} +.cn-text-container, +.cn-buttons-container { + display: inline-block; +} +/* Non-compliance warning styles */ +.cn-compliance-warning { + display: block; + color: #f5a623 !important; + font-size: 12px; + line-height: 18px; + margin: 4px 0 8px 0; +} +.cn-compliance-warning .cn-warning-icon { + color: #f5a623 !important; + margin-right: 4px; +} +.cn-compliance-warning strong { + color: #f5a623 !important; +} +.cn-compliance-warning a { + color: #f5a623 !important; + text-decoration: underline; +} +.cn-compliance-warning a:hover { + color: #ffb84d !important; +} +#cookie-notice.cookie-notice-visible.cn-effect-none, +#cookie-notice.cookie-revoke-visible.cn-effect-none { + -webkit-animation-name: fadeIn; + animation-name: fadeIn; +} +#cookie-notice.cn-effect-none { + -webkit-animation-name: fadeOut; + animation-name: fadeOut; +} +#cookie-notice.cookie-notice-visible.cn-effect-fade, +#cookie-notice.cookie-revoke-visible.cn-effect-fade { + -webkit-animation-name: fadeIn; + animation-name: fadeIn; +} +#cookie-notice.cn-effect-fade { + -webkit-animation-name: fadeOut; + animation-name: fadeOut; +} +#cookie-notice.cookie-notice-visible.cn-effect-slide, +#cookie-notice.cookie-revoke-visible.cn-effect-slide{ + -webkit-animation-name: slideInUp; + animation-name: slideInUp; +} +#cookie-notice.cn-effect-slide { + -webkit-animation-name: slideOutDown; + animation-name: slideOutDown; +} +#cookie-notice.cookie-notice-visible.cn-position-top.cn-effect-slide, +#cookie-notice.cookie-revoke-visible.cn-position-top.cn-effect-slide { + -webkit-animation-name: slideInDown; + animation-name: slideInDown; +} +#cookie-notice.cn-position-top.cn-effect-slide { + -webkit-animation-name: slideOutUp; + animation-name: slideOutUp; +} +@-webkit-keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} +@keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} +@-webkit-keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} +@keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} +@-webkit-keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@-webkit-keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} +@keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} +@-webkit-keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@-webkit-keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} +@keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} +@media all and (max-width: 900px) { + .cookie-notice-container #cn-notice-text { + display: block; + } + .cookie-notice-container #cn-notice-buttons { + display: block; + } + #cookie-notice .cn-button { + margin: 0 5px 5px 5px; + } +} +@media all and (max-width: 480px) { + .cookie-notice-container, + .cookie-revoke-container { + padding: 15px 25px; + } +} diff --git a/wp-content/plugins/cookie-notice/css/front.min.css b/wp-content/plugins/cookie-notice/css/front.min.css new file mode 100644 index 0000000..f37694b --- /dev/null +++ b/wp-content/plugins/cookie-notice/css/front.min.css @@ -0,0 +1 @@ +#cookie-notice{position:fixed;min-width:100%;height:auto;z-index:100000;font-size:13px;letter-spacing:0;line-height:20px;left:0;text-align:center;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,Arial,Roboto,"Helvetica Neue",sans-serif}#cookie-notice,#cookie-notice *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#cookie-notice.cn-animated{-webkit-animation-duration:.5s!important;animation-duration:.5s!important;-webkit-animation-fill-mode:both;animation-fill-mode:both}#cookie-notice.cn-animated.cn-effect-none{-webkit-animation-duration:1ms!important;animation-duration:1ms!important}#cookie-notice .cookie-notice-container{display:block}#cookie-notice.cookie-notice-hidden .cookie-notice-container{display:none}#cookie-notice .cookie-revoke-container{display:block}#cookie-notice.cookie-revoke-hidden .cookie-revoke-container{display:none}.cn-position-top{top:0}.cn-position-bottom{bottom:0}.cookie-notice-container{padding:15px 30px;text-align:center;width:100%;z-index:2}.cookie-revoke-container{padding:15px 30px;width:100%;z-index:1}.cn-close-icon{position:absolute;right:15px;top:50%;margin:-10px 0 0 0;width:15px;height:15px;opacity:.5;padding:10px;border:none;outline:0;background:0 0;box-shadow:none;cursor:pointer}.cn-close-icon:focus,.cn-close-icon:focus-visible{outline:2px solid currentColor;outline-offset:3px}.cn-close-icon:hover{opacity:1}.cn-close-icon:after,.cn-close-icon:before{position:absolute;content:' ';height:15px;width:2px;top:3px;background-color:grey}.cn-close-icon:before{transform:rotate(45deg)}.cn-close-icon:after{transform:rotate(-45deg)}#cookie-notice .cn-revoke-cookie{margin:0}#cookie-notice .cn-button{margin:0 0 0 10px;display:inline-block}#cookie-notice .cn-button:not(.cn-button-custom){font-family:-apple-system,BlinkMacSystemFont,Arial,Roboto,"Helvetica Neue",sans-serif;font-weight:400;font-size:13px;letter-spacing:.25px;line-height:20px;margin:0 0 0 10px;text-align:center;text-transform:none;display:inline-block;cursor:pointer;touch-action:manipulation;white-space:nowrap;outline:0;box-shadow:none;text-shadow:none;border:none;-webkit-border-radius:2rem;-moz-border-radius:2rem;border-radius:2rem;text-decoration:none;padding:8.5px 10px;line-height:1;color:inherit}.cn-text-container{margin:0 0 6px 0}.cn-buttons-container,.cn-text-container{display:inline-block}.cn-compliance-warning{display:block;color:#f5a623!important;font-size:12px;line-height:18px;margin:4px 0 8px 0}.cn-compliance-warning .cn-warning-icon{color:#f5a623!important;margin-right:4px}.cn-compliance-warning strong{color:#f5a623!important}.cn-compliance-warning a{color:#f5a623!important;text-decoration:underline}.cn-compliance-warning a:hover{color:#ffb84d!important}#cookie-notice.cookie-notice-visible.cn-effect-none,#cookie-notice.cookie-revoke-visible.cn-effect-none{-webkit-animation-name:fadeIn;animation-name:fadeIn}#cookie-notice.cn-effect-none{-webkit-animation-name:fadeOut;animation-name:fadeOut}#cookie-notice.cookie-notice-visible.cn-effect-fade,#cookie-notice.cookie-revoke-visible.cn-effect-fade{-webkit-animation-name:fadeIn;animation-name:fadeIn}#cookie-notice.cn-effect-fade{-webkit-animation-name:fadeOut;animation-name:fadeOut}#cookie-notice.cookie-notice-visible.cn-effect-slide,#cookie-notice.cookie-revoke-visible.cn-effect-slide{-webkit-animation-name:slideInUp;animation-name:slideInUp}#cookie-notice.cn-effect-slide{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}#cookie-notice.cookie-notice-visible.cn-position-top.cn-effect-slide,#cookie-notice.cookie-revoke-visible.cn-position-top.cn-effect-slide{-webkit-animation-name:slideInDown;animation-name:slideInDown}#cookie-notice.cn-position-top.cn-effect-slide{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@-webkit-keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@-webkit-keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@-webkit-keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@media all and (max-width:900px){.cookie-notice-container #cn-notice-text{display:block}.cookie-notice-container #cn-notice-buttons{display:block}#cookie-notice .cn-button{margin:0 5px 5px 5px}}@media all and (max-width:480px){.cookie-notice-container,.cookie-revoke-container{padding:15px 25px}} \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/img/banner-1544x500.png b/wp-content/plugins/cookie-notice/img/banner-1544x500.png new file mode 100644 index 0000000000000000000000000000000000000000..4b55fb9b8ecc1792c2c890a73ac3a79030c0893d GIT binary patch literal 30482 zcmeFZcTg1Xw?2p;11bsvA}C1-B3VErGfK_~h-8qQB*TzrR75gJmaLL<&N*k0oIwVL z9EUhC%AIUVpuN&4>XN4N3t@b1dW zNT}lB-MEQ|cjfTrKVXkJj!PB~?;f74#Ot?iiCc5{UiVi&o$PDnr|BJqvWWdNC`bff0kxU zL#EE4=!mpeODjAXK}AMQe+B#)9^Na@M8>}xcornh_x^5ulp?>i@^6_J%GPgsbE(V*V*UG<5ipgy;(LLsnsN0p3s!!|DV5id4Ydj ziptuIyCkMhO^TD}a-R+De?OMXWB-raev>+8X%}v3wyg|5mcMoR6FUmm#4kVb@E%D% zzxH?IhYHyB=lifv9(urtefG}f&gsXWpZqCM1|M-EwQ}KVxDioa@ zT#gP8>o&~L?(R2I4JY?hj0B!M5#<%A&Sv-a^3G67QP+M~fjuANEiWHte{Qk&ji&x= zYrdMD>&fdHJapOk||XM%%6R9TF;%>3V79V*9l} z*x?A0^#?a^5p0g<`yub2%gM`Ky7Z6lZ+`5!Oa0Plbkad%ZtF+`i`?20_8PS)W+VA! z_W5T(WTwl;tR$OBS|+uq+pC%>VPTP{$_Y;%?8G(hwKrmAYmEE9^Hf^9I>|gq&hMJj zuA2D1Puj*w$H{lHL-1A5b)5xwrPga*RkfQv08<0q=18GiN3;(|FkG7XV~T%1Ca@01 zI4rL$%T>OTbeFWT$=5IBWG}BcT^r6n|9t)+$k!%;Z)c`dr$+qRjq3q}J%P6c$Q&IV z&yaR7rUx7bN@vSHCx3%e<#n)P6@!GJ3_SFDXhF9%|E{cO#YN_;p{(oKa_%aIKjE)l z$rC;sj$7`HW$Ec1QB_ORd6gzs*nm;(45c1S7NL*j-#kKn)`v4)DA&YRhMCw>8{1U= z8d+byzACiAaXDQ=)JJxB@$YosGQgq=lWLqJeSXTz2FRHW-KRB3nbua5bqLo(w-f9W zRubL3nU|f-%*OUjyQ6hvWNuDGh_$ysH*vphpFg`jF){J;=V?=O^K!3ew8SH21ccqa zz4-+>R#udJe0+Aa3tM@8D@2=HTO{`=z9&So@93$oZEb9@JWxszWS+xI9qJ$H!oCM&9JnJe)8_J;`$2w!DMNlCViHtK`v>+R_Pf~*`X z)SDZr%_Ac^!ZT)sh;?NC#3lg&>T(8~h=J#*GBfT_qxovT*o(8=RFNNmAL3k z?-@wmQF;6J6xpL(%FTnk3p>lj5oh;AAC?i#yKj=?4s_5(Eo%--?aF3S9kq51Ph$^h z?+ZPH`g>V9B+e!#`kbH8K%ixDI-3yt-#?ngqjT9gIfH~eoM%=-dT#vk8lQF7t92z0 z2-8*7R;@9di+3_t>NTK+uT(cR{Rj*UjHZS2+bz=B$@e~ftvgB13Snk>A4t~+Pn@~MKs50cVvcO72rLU%z7dr|Y<) zrvlp)F@}>R4&ol#IcNMMW_=sO`F?(xekN$OO3zj3<;t;Wll=!zH)u!1GvH8K$(O+? z_wG{Ftw;&zW4OA9ST`<*+`Th$P=t20Ac+}gMxSqiMhV`--uF6psXvi<}*H?1ujQMk>a^U(M`2c zjm?!6(GP81?eZ}!Gr~u+${xo%scB*nrovn9C-dY&CRscNzb&7+td(T zEV3b*_Y7#g5#1S~dAi5JQzy?Fb+b*w9L8tSblEBcjQ;d@Xav0$5sY%O^2zxhR<=AP z*s^ppV=GU*Pas(mmMs|IK0eC2S0H+3q@kLqy;K+$+w+pgte+VE6!})BL|8doj8qllt{rWY)H?ni-Ho>DqG-_{;fn~AePQqq@l;^Nyqxc;)} z&dv(lQ(6i-S=l*j@rcu;l+;oC?>MO{&9ZN8%U3IXpIY zkK_^bEX}>5#4m;&_{jSN<;=fw5`)R_nuiu6^a9H*XcRA%#^-EdU>HQUDoo!kQ^BWV`y#?@@X z?Ty>kFiki8rJGpnG*Qsd0838Rhbq5sttsy$q$MGc4KRwW5xuzKZ%VA3DCDF)TkG+g z_Mn_hd$-`%FNNwLGb$kulev>z#$JD={nY_>_{KvA1L|KwaxvqAbWX*>iHCy_bk`Zx zJFmyCnn7h>Ec!Li=PKp+imM48=pS*NouUKG>EcQo^-xuB>Ch;Gn`?Hmzl~~~g}f1N zV9`2WiF^1EVb%UwhGsBP5ZzV^A?bbc#1J*z5YzfjUA_K%h0?LIialYxmO}T&onSKf z&DNHdkzv*IL)yo7buJ@P0xTpN&ss9@X*?wUu40e{f3&8@F0yBemBcues56jD9G08Ey`+V|t_akN#cxT*DvJ(b(t!`;ub9~NOecQ)aksUV9tXgSV~#BuzSSJ zKcy!y@L+WSqyqF1&cglUTjU&?C27yY9qv#HXk+~0^GpVE)7I7@!(#dsS1f3>E9&;A zo21r1DrFv^j!6h4Lp&%<&2&}ZAv+X2Fx2voAJ7m#KGodp?03rIF_AN~eOePab#;9O z^<&Yj8WPVL;?55xS#E{;|5|?0qvV&hmht(C!_Q|RM_Da zC0ltnLaH5|N?TiJdX_52p+pZ7WY(SN5DAY7F1H1dZ?g0P-tPOv-Nl zfP5O69TyUGo4^1!*eDfDHIi#*Q0)+MGvMrSb0JrGL0QA=n-@CbqIq*;9)6zx+Q;us zF!k1|-41=m#HQr(6Ig}KR9c_+xUl;Vs?F;!wmz`BxtjZ(v#F`6 zi%U88^W(d-fv9@ekSwobMXNlE1yuWN1(ydb{8a(~yMM-6SlMUF43kbBPV9Hb>nDnc z>Ak!zBoNOnH%46-yi)g%=_m!O;3=oT8?8@fFa2IjT}F3Fg;6iGyqCe8H&$iIEc2S0 zrsLe#+aK(zZY^ytZ7*3@_RMs4woj$kiBaW!nCwzQIr?3%Kl4x;yCiwlnqjQ0S2mXIjGcp9R7&O^#V`Ne^qgFhj z`->UEc8iB!rJ%?_cZ`{_P&U;qZOasfj^@mQZ!@G$hgIQC(?62~U|t6q4P3>fJTsUVPq`-+K+Utq4* zKzCKtwOkInes1LCh+draQb(z(sXemWT}Lv$jA3(%!4<944o5`n?cIdHoxZ%)Qduk_ z&6>X29tBP!4HruM*$?9PceHJl@&|cL~di|)+hL~E{4akhwIX`iGmKg>lIIF z<*sQiz^dh#wJwe{5OmSf3`FcOXtx{NYymiPWW2rdwmk9f)qaY#tdi%4a!nf$? zsg~}a|NP@~=Z5$@v#%cWCuVML9yPVKvEYbHwBz`uk9ccOj~wa%l^!#+dGzGT&+ESE zjl|HI5{~Db`NCd)mEg+zXv@OXMorwX532xr$8yvLDa7qj-OlkfTADQGm0#^fLtrEKTA4Hw; ze{B7KNOFQP0Nncji(*04JaFd!;NA6HL6d*ILkkmN&MqsHsBwS5Rs+YRb-TE@tXo=c zm}c8haDQlvTIUfLYb8Mp%2&R!ms$HP8AM7-lEcFKmvpj;j=Y99y>b~qw~d{hB5ia2 z{CVS`X#j`UA}LS0P)u#g@85iLt`~IK;Wk9wHz!~13%;{HzK1#{B(k%6@o2lp^JLp~ z_t$y4kk*@8D3S1?e@bJ@CE+`ZUX#0l=lUI>w*7S^GBPrWT`v|;6NrO)K7+#S>~Pyc z|1Lthn1~${Is_@v@757k2q(BHz#ZEIqWH~VceiE7mZu;z(80--m4ijp8+Ce|pMX@y zUb(_!zA(bU&^9$yot0&OF}(|JNTNEWabXrs;4@wBgqz3wgO&juMW(&X5dYL>6@Js+1Rium5K&x?Jk#D;-S1E6D%i1uH!d7BkhM{2sBKE#h%_zp`#C zfN3yUpwx9jiCkl%c3er5erI^s-(U_~iDos(*Ji%-zpmT>O1`RRBodjfwKE`6c6zY1w8`T& zy2d72)8>t12q`RpK?-HH5Hy zF>ejRYGj5IDPM9@H1$aOrrO|zrioMk7As9lSzIXq_vYrNf&A->oyisr!ZpUhr#3fk zRFGCq0Xl6z=z(FP$+|sLkK_R3&NKcOChPQJ0T8@&#&+N9D__OX)zuSoMg*6>Nyvih z8s57rS3UvwXJmLZVUR59F1AcuEbeziOHu1EM|2sPWwI(Nj>lpRNQRnFnJIVg03OGA zvf~JnDC$sGQ2?EZ=^s;9A8gzsAl`T0o?k+xr*(94vNL-hA>lXh@gawkO9<+;{QYB>&64}U`(jc5Nea^q)V>ID)Uhd9Q-;j+@r<&Xs%!)D_>I_9| zb;vw|IFxjywK+Xw<{(+`bAq6!+L%Y?y${NZNuO>w*SOBRS-`R>yfj`xH z#5h;G_9-;UDDm*j>=+QC@Ltrts9M_$uZ~0kx=r`(1sq9uN?757+Mo!;xveWd;iW=? zKyF&v@)-O=4KuH&cegj$t;F*rIpJlV6VxFfI1o4^Pbq_}`OQzG>vXFfUT< z(EQ%n4Rdz3tZ^=e$;sHs&_#9$}25Z&q`IyT?yZGc9F?)f~Bb{|%5h3udm2ei#yD&gh*%#;LP*JR|h zZnSYAtwUE(Oj-Nb`>dQi)nh>7M;3I<&FR5{xzXq<-b9*#{{F-g^>^y}BMoC?<4jsM zo@t8Fy^a4IQ3qs3d99a3Mxy!j^K0nABK=b!0RU1_O=8qDtuqc^KWRXr9`B4Ob12Kp zDk(P1ik665SX61UA}EQ&owr8O60_kof|2@#g?U+S`-Sk~b!P~6igR{$)~@FvJso{} z_yi1RBjw=%ob$?n!Q+<%1Oys_+3s%oNQqcZJ(3hZ!W|)xwI8~O%~b!ZDd|IZ1G|czIwQ;*6qQoosBm3SyV288V~6#Uk&&rT3jw?>$wABgK>`ra z)jXNVLPr9&%lT50u77}+*C*007bqf9A0u3n_qg%#ohArQafoK^r0*5JN^#<6g+p0DJpkExF(C(qNpBA&3{`rWLQB)HIc zxF{mzdU|@QkR-s$$8<8sXCMR}6<&<(3WM%W5)U2Z->#Lh}knIaVF>O`G(t{}? zJPxQ)d|LMpOEu+m*AoQ2%}h;^>1j7wc>)spySr%w%s!Z!O4=$7RLMsA_=p46dNjgY zXYFu3^3uK)^D8cepN2k_h1ms0uMwmi-72R4|XEqa^ug9Qs`Z~FJ_!5g< z`cye*lq`luA6DAUQNgi^GUhc$Ys`cks$rb(VA^WNJG~Vyy&duKR^ea2eDR%{`%+yV zn&UHeZr2zcn;>M-7g0OX5YMHXV(yqZ@B5+A69KQqAm88)Ps z4oH+Kaj8-ha=}zpF&r#gk7UHgM0uf_JtIudN&#o{_MJLxZ$L*q#3RJ}bUmk76 zdSxb-uU`E*$!%n2>#{R5I1+z878liPk>hm{zdM*L%4@%OZ$CKQ>6)M1t0eSHjneE?%F-FdW&vxL~dAE;gCh$xWc7e$%5WlWr&Le z@0Da4gJ?qo;CX~@r25MR`(F3m5HmL?4^N1S*7ts!w8@{E(rDnW8+S9wdCEMTMuh{mCESe08q)ASWCX431i@#4?S65%?!BNc@#~oAA z{Qh3$Fh5C2EkSBRaar1EK^^0H#ka~ZWmyM@CE^C^`S4PGyOKLp99p)Sj7y)df)U!> z`wt|>)$zZ8!s_=6WzOA?A3t^=(P($Th>?JMz?&TdA=*NF>)X#(so)Q~u+u--kWJXP z%R_$(GJ*m_!|`6_CMN04&d#-oNt}0iK48;5*q)G;4M12+N=mw@NB>p2xboH)rZir| z(^l8e&`{T6hRx2+ogZ$(0S(s2s?nwahvV9bILNFs2IECcPW}7(f<4LEmE;wf+1aCA zb=?dbSU%Ir<;x5;L4 zWO3GFV_N?#(mk3v+ydHhHpNERI_msaK@ z3j6h|C2{M+C3g>CUKwDuVg!rqDu*n#hRbzk!|5FZ0HIe3aW~xg{BMus(`DAw$ABF~ z(ViPc=k@iWP~64#r+=f)S>Uj15f7P zk&lm!$zJ~6zs*GW6_8YgQJFrccv)bO%fUo;IZ*r6%fib8uBsX{-RctP(MIs0^S=gp z8?Z~4-v+v*|5t=UQ2>8is4FQc5pU1b)_P_UT=n@3P?p8>M`@Jfqd&!3T7a1tKcD@g zR<;-H8kg*S7W$Cy^DFnwO4; z0aaB!fpY5|FI=*Iwn`tbO|dSDd4UKxe3$Z`5I=;ElbP#vO*Z*LhW~;_=lAd8_{S5Y zqyB}YPZjqM4`)lQ{VEDa3>9yLiJ9C|iiCa5{HZw;+NzsT!IH^7Xmz*8Cge&>R zhm*Gk1_nTiaC)4}iHr!^UnK`L2GH}+IefFN2kbByl6;l^x@ETG!KH@fUxF|`mdB6Z zBg)o^7q@x13-SyO^lWWy<&QUJ%dOSb$AGdyMGi5TQXBQ1;@-Wq>5Lg4da0^f�KF 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 Wkj3~)T0$#5~PgItjqa0FT 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ჰ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 LuUfBcANl_PBjvFp literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/img/consent-logs.png b/wp-content/plugins/cookie-notice/img/consent-logs.png new file mode 100644 index 0000000000000000000000000000000000000000..dcba55af91e6b322085695617df29296dc93741b GIT binary patch literal 185134 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

    G_<1Ny${Pf-gKm5`Gs%1vUE`XyA% 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%0D@ZRVYaa#OZrwVQ<xEnBe>jb)>`3)(XSGmz}jzk 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 A0ssI2 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/img/cookie-compliance-logo-dark.png b/wp-content/plugins/cookie-notice/img/cookie-compliance-logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..5d08d84dfebdc3ef462ad5839da931ec8375fd00 GIT binary patch literal 4017 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 VJ?croeERtlZEkFhyK~fo`9CCrDAfP} literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/img/cookie-compliance-logo.png b/wp-content/plugins/cookie-notice/img/cookie-compliance-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2f93cfbbcbb2474596eb69487cb531f4c84a1af0 GIT binary patch literal 5110 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/img/cookie-notice-logo-dark.png b/wp-content/plugins/cookie-notice/img/cookie-notice-logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..ef7158e93b28793bd0548a6c2dd794bb0fa21579 GIT binary patch literal 2624 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 NInKcYd(AE=>EAS=G1&kB literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/img/hu-logo.png b/wp-content/plugins/cookie-notice/img/hu-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e42e61c1599f8516d2fbc979fbf2f2647ad74c9a GIT binary patch literal 158780 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캺 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 GJo+!IRfk*v literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/img/screen-compliance.png b/wp-content/plugins/cookie-notice/img/screen-compliance.png new file mode 100644 index 0000000000000000000000000000000000000000..b629d30946ebc799d6e29a4d5e1beaf27cff9202 GIT binary patch literal 418587 zcma&N2{@E*^fyk)mP917?_`^?j|R!UXNgF*A&uRPF!qprudIVmBqW4n-}jj$TlOqt z-^QBl|M+h8UhnVsUjOG(*E7$(Jm)^=b3W&sd+v$2r=xm>{3ba80l^h@H6?ul0upHg z0-}CWV&I8V^_^A%0%9V#;RE*v+FCL&7bjsW8y9O^VJ|0Fpq+pKD(~fL1#_@_os22t))VDk3T>1oRL>qMY5Wyo8*Qoaa;gJ%^Gl z5{7`gy2D+Z+0N&*vUYjuF3Z6Iw6py)xjX#v@7bM^|12L+gvfb|2v`^-@@IEoS^vrM zfAsdUa{Zq=Yis|%yE{4kAJZeg3qGDoyiSWD0 z7;f`di?q1(@0N3+9iN_CLW35HgAgTPt@L zgrSRzqb!HQId0kR{kt4CQLr$Wjn5eFY~$jI)jf!oM{ zq?HvU#qTOhiYY39!OC}~l@ukE#UWsjqPVmK7<~6%;eg@l&PaDFXPE83!{NV&EB!x* zpBq=^9^A{;@qrQ?5C92i8L-U1`v2W*@@MnEhWo2o(Z$gPVF0*0pc?RBGW}NBhZG_SG~)ouB<2thDb^Zi3)@N@@;fipvc?z?&`Ab*8bbq%ZT^_r8S|Mx|>;M=5xP1H=4xk;y z29Ocl&e;~h1{Q`0{|){B#&|xl1?KzT@%Xp6Y*3MN7W-E?sL0<6_(S}^JN!X=z$*TJ z2GA+M%Od{~Gw|U*YPWR;_#6QcH-ohe836%d5F9Y+|7A)70=|T&30MIoJ=zX=vEVJ3 zQt8K!DdHn+D%y^MDiqJ#dijF;debfJ{c9)F)n62s-G4c9P%$lHSy=RnL%+;msFhe2 zms*f&gIOELS5Nt1mnM--H?{cTb&sjOrJ@)1Q5l!BmGe&+ZeNjJd@EeExa?>ts&@bA zbBlF*x_`ORF7nLOKs-;tvfu`bfuRsDlp9)}W}rPu=WLuf^KP@iHH+s4ZN0>F}EV`SLHdfb=ADNr5Rd+U<8ky<>LYSuec0m}>e8?ro{%1x_hQ}xSRR-UC_ zS}s@UhHedA*%LaL6pzL#wj9V^7~?dv={_92NRPVVS6)=Tmu<_85$-XyA;Cz!o>jQw zFk{ih;~dj5vrCkw_|@Y|jAmQrt3614*mRoj;PusYg*dc}$tj`eb305j^I$a)g2`Of zOppWwmub%b5fY@K=?Mtf2-KAn4872+6R4MF#;A>xjY+%r1*#Q14->f`Rthpb%ya{R zC1K7KH<~rss7N}ALb%4M?tW&U;kNnAeutQtCX`CJx<{+t${i$4f0;2jW?nDY_DW~k zVDb8g^)&3~DS0Jhu2Bk9@L=;VzoGZ{3kwTt_VjAJtFRkTEQ~7QMIsVIus7+mQ8AAg zHN16w<)}V2GqaMQej^=ao)iA>)%oIXk}V~hwm~vi#KX_7Rta1Y=_x6EAL@TCH`5#R z?%!0NljmcjhNzEwj5(byEJmlV54YZU^B1terg@L`>}uUsrZZ058}DmIt;eP$^-UM>#W)C+Yvn9v*%?*Ejf*9tLW+ zEat`{x1m|Ydl#-U!dPxa{xo-38+u$0LAG5t7GHSU&ymk|3C+Qqg2apmoSncFsL)o? zsQ2Ind))Y|_LR2@RQG5vDeE0~f(#V$|C_&47jxAi#jd!GJ{X6R#&wnz&7;TcqpJr@ zk9NhitD<9Km}S;J4ao4ic5&njp3mRuR5h_6VqWX@3b~HJjUxjca`;RM<84jkze6X- zVMt?&zDE-7#~mF1UE8y_zxYg!ACBf?2Qb&Oq2`n5STb?D z7qxLrsLU66{OXDEwhSgoyR0{;|Gg4ev1VK0IMhMCE`4Z-)rdUr<$JVkW>G)<4^Y0- z@Mw0@plaNzaO6)-Wj$YRiWZ-t507q3uy*il+vEot%#oEj41drsAFXZ2*BTSZlb~mg z`~x_lnMg_pAwZe8Uhzc+Ial?}&2fcMGF$ulqJv4UA~vTLZpIK78%3FysFnk*BWD_KEvl3oC`7)2-aa~z4CFY6JWZN4mGv-Pu$z`bUoqj>q#5XNuAZF;4#1|xrV z9H#SqD-vqLPe^@8hT3c*2>^^*^{f8uGAi>bp*(0LIwzcsl%ACpm+7-Ull0Kp>S%9G z{AP^*(U0n{-}e22*cPW)nO!mW5g5O|@sq3GkNyQ2b%Md*c*@7>oNHKo;29qsxP7Mu zBd)EU7$Vs7t19>Q(kl(_BoPbDbz`%pfvi(^K&guKq3$xw+kiq|({yGaZwIbCi_7wy zL>1F`?r`V|1K>YrmB~EqbaSg>KLOWDaJx?}L;4;0*HG7Kf~rYxfvO1)#u|?`4s8S9 zDUw)6_aW0}(CWVbKJ+S#0+qQhH6X6tRaPWF=e_Rl{32s4{5M~Pz`o4%T~F?vz*fA> zsOh_&cJA}h09ctiPLe*|k>6orW}e^f5y3&QD9Rh=UhI0b)E!$e3>H)O0r_DbePo}B zb1|!Oo~S=OsG>TApF2u}C4QkV7gH@yXnysj|5yBiWUFErG(O)A{XyD8Ohf2pT?RuXarXvZTq~!tBFI<0MZGPBoT;{Q63dM4&Cw9oH z0^vX)@@FiU`so|&iiJP;|Va{YpP1%{+8R5&K}#IH;4zl<;KddntqEg3sKPTiCF z4TP*uxgDW>mofm1BdWEk&3Ga?nn7Gxq<0-lhE5ol`mg7Fb>?w1Ggg`VwYaUI8?}M= z3ylbw27Y?PZXDT|R1VYQ?HcU{%Z%na&eba41;M$Dmd)Rqo&a2kwS>7C9Lg67SnJ$p zbp4hM#-9#9nnUSSn-Rx4n!nO`ZeO86A8KQwl0T3=u=I7!KiX{Dl)}~;R!|mjTUYz_H zs=cG5z^L$`KCU7OQQh0vc;`$b>v6ey;b6{$^M0`Q^R)jwoP+l&OsgU1T-Akx^z`(v z^$RScv&YuHIZ8&%ra-Yv?lK4UScze?7GTXCKPnu$@M!5+$QS`q@NU9h4rL*jJgHlJPH%-HbFx9EdZ9bUO| zMNc>xn9ZX`JGbA`!z0PLYOJAI_22leq@-hBzX8DZ7dvixnhnr$4&Sd!LO{sDK_;A& z%P}%h#&yg0&5(T(Ay#StoY5AU=~u{oL8L)dg^31pVFmzC!#=N7jvbelmL~gT?%&A7 zWo&u9N}orhnwNCkXgE-o!>3|Dx=hJ+&x;QI@c(F1Usd!=)Ys z4rL>KXH*DiC6Via1Ak;t#%)i)rzq)!Ok06mt`mO@&bSZ*wz~)`@!u_MIO&h`|0E%= z%8fu6T*~i^`v}DTe8Mv(qNcQ2oV5%NnCkn=(+>@&-p=)hkI~2wDdjg?s&^qe1=*4r5b56vJCu zy1ID4i^Co|S6{;7NrMO+gn&qtV^o;HMYijm5fMR_m!Ho%@bJ-Z9Az@0kw91nl7b%5 zXz+8zO5~{ z$98suu}1$%F-HqzNdRuE6YLbIKp;?HMWuWk{%f|P23xS7ry$ zl~Kxhu2&3ebGSX#wh2c?(;vN;n3!o1k9-i=7FY{Q1|5T#1 zkc^B~$!!9ND;14?Gia|@IQZbBC1EBGxEW~(kl*kgt{Ew_)jadXqXm1ya~AnCadlSb zArJ3P&%w)l-!+m6SAVpAyT$ZK0oL0+D}N)DT|IFV0QAdr=PzVa`=vwIl&N7b7(ih= zJK`^1ywK9oNwgh}kSF-94oJZpxJK33nlWO?ULqO{AccyENzOOrQH_V&%<~&%mQ6u0 zjL;3`XW#`WZhXD4r2bbEqf4zGUV8rJd9>h5mvW($#U3GHy%p^#uv=(ZEGLEHIkmX9 zT#@RnAZgt9qZ2j*vO55~VqkF7_wO$koFe~=4r&&eIKX)be5dT5JRyC}idY{l4=X6( z|M2-IIiNk0B&%pbHUQ|-4l~WqJ^eR>S)t+<9c+lQdr_tdxwOh#X4A>V6{q7MI|3L5 zp!BCJMsg=hx-YoMtmv(aZJUBF0U3D7I65=aX#S6w1XW?`IA3O0m-?3pVIcjbprEiU zerr_dcC=Q7FVOWPcM!_Nfju*2v<;d;(5qe(L&XnC7WVm+7P5dazEN|uUUP#UX6_Qr zAS*LYL>d$b$b9}{V2KI^h8HZoyizpY-Yp-s0oV#?dY=9VSzT;%8)rq*b$~fJIbZhJ zMuPzZ;pFxq>z`*S?JI5$ovKCy^0%iX^Qv#V<|mYijPC0qN2@Tzfu9&1V9Bq7`*QMThpC!K*DThsa{}cZD|=O z*wcwe>*TkzT$S&w#%1N^7g^!6zg~C9$$Hqi>dP9|>8p1spY$Vu z`KOrb8wd3kw<2@S4#pdCR~RKXUC#Dg9ypW^=?f<_FfqLuUIB}Vwam@EY1aM?vcuA+ zGR%Jyr8EwR@I0g!nn5;arzgJKFS2Za;Kvsk3%|bt5S<=v-IL5@5z!LB;hDA&4r?gY zuyofq-be%@kkEgKNS@fpbS#U?RVj1`$My{2u#1DWNKQPH83fVSl_(4 zjGd}o`B3xua3P(nWi!R70t0b~KHL=oHVQI2=A(KAE};?KW1rn-&udCq?B%$t(uDQD z21^iAe*1a_hJl<&DZi=wL3?1sUA<;Pu3wYxzhx!xKFi@tNlnc*FBx#IDj2i}Vigpd zJFw(Bpe?o4$r%UKYO#kmr)!~D3u%|jH&X4$0jI&CYc4!U#~p&>!mK(0nmhP;qhZ8F zn=zCf2=YK={{Ed-OiT=F&Ufq2bperiX$cOnYFAk_kjXWJTKD}t*2lYy>$k6?kzSde zJIRNQg_X_|G9cX^x>V!yH&p_mtPS7{w#b~#gVA&hq<-hENU6`h^LfBGB_<|z#Q^nB z4?qp@G|cSs?<9Dx>-E6Wy^>+L_)P$rjg7$022klv9WO|Y0=#5J&w`g|Pr3X}{Ny>x zw5+ohC<*h$apTpE_f3+R@m}sj z$%3XAMM~RKG&|bch0!GvQN1_LpS81KJ{nW~yio%G$t(et8)%?& zpIG`fX;9QQRDOX5NSOex0r=wC#?b=@06suYT|W9|Y>kB`{I}PJA9K+vD*)3^IM1SU zjS8uW2!UjN%%vd%z=Q9ZnyM*|DHHc9u&~l)iluL(TUiI#EkS4isj9IdZ5uY!O4`f4 zaFj1HB{Os3L(TefSPD>Cg|Y*M0gw@=<>4zF|HCsiDsjc521sdu!T~6Gl&KY{KEelh zDxJoLSj&kmqf3W=;7yB%exS@NJIUUjucoCD%gSsdgA30Iui2^isKi1SDE=fXl=Xn!k!BD@mTZ;-9i*SuwVS^K zV)tcYU1NGYcWeL%(P??-CA)MixSfiKP>;5MWp~kCrqvDVvhs%+3>29<0NKBZuNk`% zD>MdQmFsM6RcZ(tfP__40y|4yEumMMpdt_FLi7NGA05n>6HBrn;x7O6O9M>zD}fUzcKEQ~Wq}2W0TlkQ($UJ=`htVdkSXAP>WS~X|4@z& zJ&p;mDv*08*(&LUoL6P-7q3EHwZO4RO3MVK4ia$ZY(V1>HztzCwA@0e;tHTklF-9N zj~W6X)ukc=(qownO7+Cvfyh6=ZwUD9nn%r4-Vh!N)Kfs=2_&;n?8VsL8S!?C8_K1R zGXasC`OZZKB1;PR@!@`n{gScE(8^Pf)e&$N168Qi*)5=Aki!0nc>{GlTHuWUQ0h1K zU5@rQ>^3Ir0LhWg>qezRA5u0XqR@Qj90WuqI>H`Sm(zuV18LVcIbx9<-^96NVHNqm zljQ`OZpisQzy&lLDNv<*)bs(gNbsv%y13#Q(z$JKZ7dh{@M9<08$baP?fWNs4r^b{ zF6D!X9facKe(?dQqK5(FKor2{hk1#omOSz|q!Vb^dqjZkr&QKE7nBTGy&){{ttv^^EtioL;dl2VZbsOsRrOMV*dpv%|+28=(9_`~?L3uqwc|0zuzYiJK39LRBZz3b$I z@kh$Cwp07p0Y5umH6j`utZM9f6ZS+hT|B+7ny%6-Q&o=^sOR-)@t;k9s}k~R9yKX% zymllvWcp3q7RYOIJ4y)^((-0}iw)+K&ZEFfAU(W^8wbmF7FYBF902HKhUZRN-W&M) z!#@%rQ5Rr4P1|4_x`CZ>$ABdyo*o;>x~vmbb-n=hNFej{u%KDFJfK$BJeI|_&?_d{ z+L%a+IQ)^sKZ9MwR7ds+_OJ}(3_Kq7Nq z^F>xu(csJ)1hP8|)Bwe8FZ}4IQ|=Gwg{WrY(i;9?3j7DY$PRS5&VW0MF_&n=@u7KO zXV>)6N!O8aL$4E^YFH-TsVS)KT}>d=gdP@q2ya)1-;S!Kn{L{3MSa4p030f;jME(UEDbRsKo*Eet z(l_CgshXDOl}Yk7;H*y;=ca;-42QydPh!)L9xWcp!PAzTdHz~r0!`7NJ^B+N@3Cq& zrk^zm{r)`lvJ-aYkG#tm(n&LSFfH0scDhP{#cx7O&dkw1AHq9dm?YW0f&V!3d*}K$ zjm@^Z=vm5GkKi_I)wS1ZVQs+PV^kQ=-d`f>2En6mX^~gG{01< z@&|qNlroEAorUJmxnpbgq5lLuXecHjf=TmyWURBE&oT54^J;W?xZLMBOsJ7XUIxacCZqO%lO#WB?naivUpq?lxJ#Yq%-Q3aR! zg=1Caf&Tlz=D4mA22v*2f`|G}@kVl>k#i`yDNUMxtPbG^R117(;^v!fIt>=X(K<$U z7Fav4=OKZ8J@Mdwse3N$Ybs3w>)n~iPMX<+R3rxnqIG;jsRH+JTsmw5#P~1Y0d6{V zul%_)52Se820&W#XP5Bf?|`HKPX2&9d5QCBI@N_pH0m$DfK8BokW_w5?l_mQE0}2< zkGqt~8jk|EynPvpv~i{#r?p~9_`&2rfTQLDV>CNKBj2fss62hVo&~dU>%biEvA0mC z#Y4$S%ZOH<@;inRK5VAHO7rRC5}TKt+snI238^d-je6a8(Ho6e^+y+5E);2R_6aJO za&B@Ynn!Eim8l@UKF}s*>&QZV7|)Q^%zco`*$I7zq4KeGqC`c5SyJ)*(IoBD+ZSdV zO{1PdVuKnD)yacz@O-Vbk>ri?_Ckeh91@8+MGy0AWjovop${!1fn*2C~r_GbPKwjrId4#@N4tc$1 zcwJywkJ@ET^SOh$JA{ISgLX7%eWN%w@XC+E8`J2|>^S6}g3@VTKwnbSkj(p_> z^IuesHl}anY?%@CYPTA2l$&BfBm&69HSQ}G?QTJV4d%?R!@Z75ZHGIKS}93tLBcH) zlj%6ijB?5OokFg>hszw?{q zvo5eC8hcPm`azOhrw7Xcc|q>ss4^UiUoKM^dC_S@&Q$`7}Cx z9c}f-EZg7_#^rd%1>rq=dwjF2q`W#4Y$MujqLDAEmHPyg_WTpGr5Il_eS*Z=f^xOtsaa@C>^UNui(!`sJ&piFA<{jEXhB9P@2)5 zwa#KA1+Cp`3*y%@v-K)d^?Rqd+AYX%Gw;<>z6WV z6Df_C`6F3ujo;G5y?AL94C#GBIGWRQFuQ+tiIdSkdFsG5qpes`OJ%Gy8bo7M@YLJV z;76~%4yWh<2ZajT{!)9`$4UA_%iz>JTa%~pM#I71zmXywhg*o`k{cE)YS+1S=acpu zGIS@#T4`mQeF^<<=RWKT{{czGQO`4b^SqgZ2twfN&vsp%1Do;BWG*TbJXd83rEMd4 z{!HTso2GB=I~B(;K6EaKB*G4QOEH)U<9m1PA~_$qE1lgH;mw6ZW)9w5Hd0{YfGdKZ zJPeoW|9VfU;7Hc~QTQ#}Xydk+Rwh?|MdnVwMek7YK6*B`ZNbCpLi*#;@(4Q>P*{WJ zmj+B%=h8_amFX6%yNACIQ)A#a^e!QVHL*-3%&! zl1jX~+%L#zpPZ?Fif7+ze@H6xDCk4BO=d7Va46vKvjB={9IUA6lY!{PYP)xzF27gS zSUuu$3uW9~YGs)3o%Vev>9cyX6g@$?`B1jKIs9d`vVUhTE>2XMF7ehXazf+XI%k+#{4%4;>|o z^c|`Ln^a+Y0Qlz@gyCHf5FB*uB{jQ_$!+)H2ODjC-E(WbTd|Z=cm4=~l1u=g;oSa9L@r-|svofBQKqSM}PB z2aMJyOgEA~!U<&+?FTpsZTC(hb9eMi=`~EE8U-7PL!F0m`9ygrSFKlC#S6$HYFTW> zv=V}Gb|K0^<&;=vGB|Vm!X?yIonTpOmeM+oKbhceG?fx?A7a6G8dUo1~Sx3RTGaW2%6H|%n5-K%rabYa{CUgumen+6 zn?C+D#r%FqzQ&*+PftyXPN+Ka+uL9*!4mKziJj&kLC^t@wf)EDon}$^T)1BtUXZvm z3LX3O(=C?CmMPdyxo7EgOO@Ep%nWda-6-7#-(w(hA;nsRF=0a?EF~{i_ z!c5tEJxfANjYBH$+Q6fhcU)ZKW3v*UU+THdUQp`#ih8ChifC-f-~s^5@eS zV|;Y}c=vi8%xqtv;ZE7o3*YVXvDA05u7d+Z9|ik9pJZ=bGsrQyIX#Md)cF1M%Ib)` zHa2$id)Do&UsXc}W(Wp5aZ3HGLJoA$=fPJUt?lF#!%_-9H9oZ)shc-n_j{*vJdsl3 ztaI>_#G<97;ioB!_eMi}FNJ}5X-L%22M+ov%*ET1UsFw5zcSqTc8=YTO)k*RqVlisdAF1oD|!Hu(M+y1shL<4^4xoRcjP#V}@))A0 zV}xcS#gaksgQFF80&9wod;=Jq2N6RVbYI8zsbVe)ReA`WF57(+Uz#S79TJpH-*7&X zDYzY#Z}uRszPPK&$+L7S*2?vPgPXF#awI2vQva?sLeRm_ck1WSy<5g^&$+cP%VZ4E z?4`9|KNu8!m86@7>J=_%a=jy+VL-`gHh8bsgWg`|_&!YQ1B=z_hodJ~jNv8bYB-16 zo82s<44O~Qwq|HT`{yMsdcJRzk|KPN%U-m^h}rNT z%s)A@%Rg$py$|wU5l$-y~+AT866|K>wtZI|INW=2g7=V$lzF2yg7nrE0t_=mGXa0`oIX1Rogp?z12%7z%uO=N zcTV{(dL&U~b*)VPx>KE`=TG zJPy8IWR`GkBW)q!qPCI6VHot+b5Fc+*5|CKk|WMZ*CxKW)gMg^STD%LLzg+BtRKxi zryc3l-pjM&VyWA|@yyD9WkDzxoGFt?o^$oNHws{uujf?UY#$QD;m8xE>V+~U%$rT5wJyk z`ZF|W_@qSMa?Eb3t%daqgNSMOM*VyrbUWGQ4J@nU=xqBM&ttK6&kY!EgjTWb@?nOB zT-e0E>>b#SAjZ_tYHAbILnngUpFFsYE_al_UD=EHv2upSEa+}ZZHzUgpDvV0A8m3v zdd(4BHaZb*$Y5^nl|+3$p_tssliJR%stpOiewfpC@t3e;Wx@47i(%#-Zn$9si9R~3O-(jS*_?=(g3VM1+<`Cn%WZyGF*$BF-tLfZ2zr#x zGJOyB(&F%B1w<1zD()6ISW+F@RZ{<=%B&&NIpM`GIWOWDJ`YIf?<2ZOiz)=oq}w-+ z*Il-H?c|~^lJIy<`N(&!Rh0xZn~UvUh*S>Ndh{hl|0zQVc!}HY#h&%gn3}D}rZ2-g zTSWWHlkP$_>)mcNJ$e44$H>if_as^?`fJ@bQx53Ov1b+49$WRgiMx+n8$4=J&gV-1 z+Ep-OCD$<1pIQw2D0YLQS^%URE5z2B&3B2yj-|^z-Q!-~rxJz2WSTfiz1mgit^095 zPo(smR6Zxm2d_)$T5W2^UAxZC8Mn&WFw3@8fz5YoC#cZ%PcM6@?mK~aJS1#0Q>5#L zuPgF(O*|+QTQo=UEQMxJ%n=qh5e$b%SifU>SH5%R+v}dt0P0-{EdR&FbA2{+!arJ5`Vvyml<43Ujm&X68unW(o92#Gx8swogZIRW!|$?mr;AV#%fmv z@)hwBaPc0E8kNCo^VD8b0LSzwYP5keUbm^GiCvGOs!I3$Ssc*UUN;4cTcY;5o|CEj z;0^7;g9HD!v9LE|)|xA96tQJ8zH-Lqo|k4V{G?caZ2I!5^LH;>&+84R ztA!?q)qY-YquE$q(`bR6?k1{AZm%~4uzG9>93H4z^gh?5+iYBiBVZ;~>vx4~7B4JH zJQ?QwytOb!R`Y26ptl3nG+>U6`oJ*L|FGN4ebjz$@&qE|kk#^IhWU8jr6JD8DYjn34Ho!r zYRb)2DRrqw&3&vW)~pfQj}2m-E*4Lz?SLbG(LO?t-)o|N;7@N0j4>V-%Aau757Y%F zG+i6Ke`71mIQd|CsyOUJvb*Ldcz|NYj?U7(>r-a z`Qa>|A#+b2GkvuLMGRw|XqTYWtYPNN+PBLYqUSjqf;vGP##3mzboL?!~BOs7{9& zqB~w@m4l)dd4R)4+QtL|CW?~0Qx*pO-RXUYtmHn-_KjxYv`rb|@KIX&#`lHL$?WND>pRif1q!+=COM9Y zsgGY^Dy<$riu<)nl+o)ZO{QK)PB5<@gBS6+9`Gw~cr)7W0~>|D$_bB&US1kEt#Z3s zCK%59r0U8cp`yyOEz#{a%8L(;isaG-K70wvKV9WE^WTC9f+46MHV9v_sZrOI9`l_- z!P|HSGbked3}0fwBRxy8iaDyjEqmvi(82n|enMO$EPQC_xU{|am-$Hv}v1JgQ zNlBa3`f`8TlXxN=2)bJCgX5v>3r%qhat3R?Vh*`H4DxclUFE2=_N%4^LXjcm6a|J1bTc{sUkR>WuvTC}nb7URBP zoDaH87DcvKqhOyQ>rQ!J&51_7J0gNFY(P-nk9~l|W9!xEz&rP=qHa$jLA7X&`g9)` zIC2CJcdm__D87WQw7*U(Hp20`A8qZm$HMc1KW{G-YDybjDfVrfz|Qv3P412-*Yvty zyOLoH8rkFS-+Ioa-rjmZ5pa~ba@a0audZhUI0@bNuB(+M+h5r!9mkXAt`zKk62)E_SoNb0gHY4&0nd~W>hk@Y(-?i?LvgB?<_xObc3ZYfaW zS-uJl8wDMS(rJY|8u64r$M|bGxVE6g2AVIQF1>m$ebKC%*4V{rPirQhC85AlD^MGW z5QQ3iE#tSvxe8yL(!ce3#!md?rRj2~Y+Mdh4KZlD8ZaxSe#47spqzqME`v&x=Gyfu zj`r%Cdt zAb(~)j4e`)C(rHed=ZP*$Ycz-P=&rvX4RoRdhdd1rmp2{>zfCs9Hs~N=HjtsY%GtL z#LU|*>i2H0pKV_O4kL$|;J;s|H7CP9-3lBj(c=ltQOZ>0T>p8<|Ll=kg149d4S9?9 z9m9-eSB2|OZYn-lk8iD6qD^+)i@fOx^^WJR&3N&!%}u_=lpqZ>=u3%a55p$s_NPAAfqs5QnHz$6 zW&5E1{D$Cyss}cAb6)klYxsHLCQjsyjDL#zJlx%wCFBQRpDlX@^Ci7+oLbN?I3eDt z`t->kghj#MnNua~p;^5)M3;Jp-Ww(h2HHPgRTZdcti^WuSA3I5Bx)eHU zOz*eE*dv|^>OUze2Qs{bzQ^i`M8y}1@VjG~IMhFX`x;x<(ZKyAE41Um+vty^R&L+f zU+CL~-@Bc2`tthz2gTl+_^Y)?T69cLWmvx~s)c$MKc2u=er(wj!ylAOJFN@K9UMBO zQj^=m8MWU>yE2p|@O&eL>vvdFKg;93x2Sb_U_o#JIHcd$akf3{yHdXKrhKGj&GVFe z*i(KVnqIc^{;HUZ%59w4FYlzju8+(09V5~=X}UxcqWIO`ak2k+Nv0G%fO1(WRpxw zbhzuF4gS<=Lw6AiZJa&w6mvqfcFzmEqvg82UYBt)po1&l@Zr52EA#xSd1dsE_87;J znxy+JxxKfyxE5H&;&jgjEs#p8F-p1$NmmMPS&Q=jcuqf53Xic~V#L7ubCi#}Q2EH8 za|MQqi(?guldkMIzf}&p-mIR%EH5c1&fA~u)>uL)y9z`fw0ykAr4k>v&sou^QfxRY zQ=TVm$x$=1-3puI)n?00?@vupBP}v$^`O1)K|icC_>@MaoLV?rzfcUew{kcfaKx~I z@_VKox53-6cuVd$A6GUPqIrNBmhXV~b2>6Q&F5gzO%8y*i#OzwO)BIv9}M=~`=Mi# zUa)jQT_Wrr*;DdQg&yc$*e;dIrI05@L57e|G?u>CllQ|EmIYH};P0qTWNA-f*WuN% zg{E&PA`m9G%E#zaZt62Jv#l~JcYsr^nd>}5TtDg<81o7VRP`I`@A%E#CC_J#5R=e= zCi|)I;Jq>+J;Wy{IIv1z}Nz|fDZy!nHrqs8#O$7xI2D3uqn)b6)$}F!r?>?6C z{}Qy2eG?gQOrfw3Y6PVQ(Bq7FP6DR-5`ppIV}ATzaTd#*&+0r+!(Nv zKQbAenhL0H{x*<>HXB`UOfArhd=k4p0Vpy?6M}EQW6T zlJ=*dctY-wDi|2hywzWN`{A%TE<}-lS!j(YuUR&(So!;fz10aV3;vnUFzigo@TdM7 z1gFL6aDd&}ovS{cl%ha7gppo)(49WCxfx4HELmh5M*(LT#h&PXXy&$jrA+?(UXWJ( zD@Xl2*bl)4R!FiTx1;Z}`iHZlhS{ZJTa5(Uv*nn@AxRzCvzXrWmoo`jQ|;U-cIko~Z`tX!p)74x@VyG||<``ZNjb?ri5*iHTD9no8!_SR5kuj(T*(8)CzFZuR95(J0DL z{#WUcnrWz6?9`1jH9f4?gFbgjS zbnI}LnAM5Om_Y|4@Pl=(DVg5fxZ>;vIs?+>RnxJS5Qq@kZ9C#~ww$EnMBk5H2d{%u zyOGZg-9^f(<*RcBR4p~1=WC|sBi6VddsKY%X%QG^s_ zy2I;WbOEBC$Q zgDG9ys!{hu%|TmmoL*rVlh2Mm9m_=b`jzzR{mCQLLbZ$mZ?9b!sv~#TfBnmn&U%2? zrI|Uhkd~IB2X#UEvNrm|v>x(!TI@Ol_md2zm+L>b!lXp!1f|vA3uQkud>?F)lesSs z{IG_=jVZ40^kmJ1w{fWSE=|f!1&FdhL_ak(rCw1yoxK+7i9oULMk~KI)#Pfq9^}knepRLOMU>OPWw`bgXFSM9IK65YQ zxaA>yQdVQa^qbR!jqw_n25p{c{%mH&#{eS9eKup4+{1pM5epZ#8gG$|BNhJD<-C=y zy4HCaj}Ctx`LbY8r@k(%wOi<8K|0s>kvj>rDz4(niQI*PfqmDYiuB8{HFpMF#wEfVuf>Y9ETl1AnzGMxOg0jDJ!2D^d}OOGp6c z*MT4Blnkdzxv)uP_c0#W(I#b^@ zvv-2w{N%E5dt)v*#;F71LHkz`G`!Z)+4=cl+1c5~2jN*&?n|OUY`$-=w%|{PN!dZ| zY;ToFn_lu80O#G$G|fGI6@#b{g0z>Y?eucA-oA}^{ooGneXBa7WY<8yWF(9FNP1t+ zPjZ@8u5TcPu!{4w)GfOF!@zjLH?^6x$tHUm9SPl~9{PcG;pm|TRYnBRH zdh=c-J}=@90;9m4Tb!fRd`H78~$@}VCc_TsBBre=n4X1lws#GAFK>OxyAPrZ90>Ad_i{HeX zo>S}9h0`QrU?Q^y0Y}0Ihg0~a0RNDTVpL8)xwh49+rpIdlQA;Stf^=|htwhrFFe6| z-lJa)=2E;yK?9;@*XKyhrP_}tJl)H&WPhu@;73?qG zm5R<|2;q<o!6b--pqhI4im2J1Erag%(k8V8A8z-8t6&E=AI9o}d z+P}`vdCz^TOvPYC!LSg-lt-GtYb=s0Zdk-qmS#^s@RGb+AyBejy?DQYGufdRC-h2# z?=5BR{)uGB<@hgJrZMq)Wb9+5ZVbE}pR@|%IhvuVcbNw`sPB`Bsw~BOPh=N!7gEgM z(IYE!e`%l62`b|1+ocdT;L;YIzV#-R#}NHG;|}>VSIQTrZ;a?+t~u1Sl8jB^;|lE1|Iq-^^{NOBZf+vjMCmT!8!pRIYiFQtw)Ra8Npljq)Bfs{h?a4f=txQ zAXEF%hN@&cqYpM6u^A7TG~hRdjT~mq3K6 zw{k%=Tji}pS_WI>b+}!qHQI`AqS^ATl5na*9r|?|#RFyA&iG+|nU~)mF{+#8^BXHf z@!S$tA`5;>%wP+gcYtREro1!Ce#frY*Nc{kaory{UY+D!BExIZlfeh>^>enu<^2XJ zwLT~b7jwF|s=X(@%%HMQ$!^P>@iclwvYD@q=bqMkD(%+=pdgS0qFEIB1Qd}s=)tD1 z%pPK2r&fM5TN-`Oe&bFWp_wdK*C%$T=Vjp5ZgyKWB;Qx{3^H}%%Z6giTnLf6-A6=j zygGAgMY;E%MDi!8Ff09g7J$?sf6&BiB$WNRAx(kI{G0H;$NWPYt!}B3V$bg0dwYwR z?`F%B>N}cl#PfU{jNi#r$zP%s-jb;&s^&ow5kWmfL<+n)qMh$(M?NxKH;%W84Wc70 z{(9|=+XEcvTh+VWQ;_uKA(OIOjpQBgqR89><0-=w;mUUXdQr6PF!3Dp;Nk~yX(8>dEgzb848jL;hW%K=+MXy9I>eO`b=W5w89<?$5=%RJ9F-z0g?`2Y)pDC{>n#H>^*PBu-@ZZt2C1XIzU?nS&ku(5rz zUxbB)`;246x-wknT7khPC8NrIMe<=U^S$Wtp!6U2?hG)^{J5BJnSABnKH*O6E(4Qd zQE%z;c7hxDh_?*-ts9Ns&M{RHSM9VxEjpfG0vr!ldbj7B@4i^7+|l)cp9wv1nZ59$ zvf826jPUx$w}3s!_i?j$u5dU-0Yo0|Br z2lors8^a?*WyB|s^(;8BIdJp_iKWgb^8cI6tv6z>V98r4B;>K*qn{2)ib_2$DivJ( zEcG==MuzM=+X?;4)S!IL!KbLNPZTA<8n)=(*#J8D3s?^w7Gq2B4}9i-RC2gcQoSp+ zh&-SL%km|x=*{ceRyT+b|GMnG*L3O&go3nqs$U{s=-LTJ#`U}~ekf?gH6F{N`vaeZ z61N@|CXE?dCBAt4-)ruRL{L%M;%&|>xR)dxJoH|t7}r6r-@Tyd7F^dG{5Bq%k-1K} zn_$V-1NM{lss8@QUX{x{gH`@blU{o|OveaK<%=EWinmiCHDQ-RBU_}%O{ysIn-+Uv zdgSA9B@0pHvxa@XeEkvm;3@CM_uNB^0;RLNx}#o|S5_vH@|beE57XzyX<4}+_C6uR zeE9`WIO^?$_SP%K=;sxf6xdc+QVnJGOI^~XfzP1&mU!pQb=Nqv5!CC8Cf5fP*JQPV@%<~`B7nlaX<#jWJV*e&4%<2xl{*> ztS~3qb9%UcyfLLlr1U+=zS$q72^Oce^O!SKv{IqyHZT4){`vQ6?eVaZ;AzUs?a9&% zurK1_Q7?3JJTg^oMlCJ9rLJfgNsHB9I`b;mA`&-%6H9RG2T$!;ljpB|d+NK4g`LhF z`Mdhu1dc*W(vlaHcYn^Ev2Q0y92c5=)33a0r*fMSsd?km#F_^$a=w{e*NVd)AOf42 zpo*Bm4|J>&pzjUQ@cC8`D8 zXoVDRRW-NQHI`+B8QqL7p5m*-q+jm}KFo@@%?8#uL{+@&WMq+gCi6x8xlmcWZV_U$ zMcI-zV#)ZOQ+%gL1QQZKV8 zXO!Oi*!?urXOxGHb^YwV&f4}-i*v`{B zk>xZD52gx}5&}F5dxTYN7M8g%7Q=H`sAW*pkk|1ZA zhi{~^8EEd@6q`O4saWPaw6P5vn?lp4!omoHaWWNl4~lu`%cC8j(gj3P3QJg07(WOX z1k^pj%SGhXvf&;|%R=t|jy-uXh#oS|F!qe>7B076)a&zmqOd{|!6gk8fzQ^+8 zuJN;@QGY7X8-0VAowYFHzrSK=eF{mCVfF9yudIm7MTOF$C~kPmswMlL(*+;Y3*SSZ5T|*CDzY?RuHqX znbrk%+!$_`C3e>@w@S?H>_BO^?&?L&`BLA&9oq{p`zLdESznG8IBmVym)+`h79Mu< zQlXI<59&0VJes-N6xZw9GtRzPc+;@_1hyQrwO~0a?fmnvt<^Ob)o#qlk*ICMR@=E} z=KSR1zuq&-&7e0B+E|v9$yYWQ3NdMl4sfHif@%#l4L2{kjNjFt36%unapl5!2~#{G zD~O8eV1a3rGZoP<mkI>>b~tp!*om_*Jl=3H?LjS zPLtg%Y@o+xfCua=J^ugq%<}Sh<9g_-1Z=;51WX$Cg%I+l-%X8If<~u!UOQI$X1CWD zywxjU%Y{KH2@ogBt*6R@&9Y`?^!2HwAU^Jh60JrLzEua(ya&_M(_vq+q@__h?7a;1 zR(zjGMIrhrn&;dEFXj!4#a=Bw7#tmyVT{k#WCa)keY-0itLd2;QcB7^y%GY{`xa?U z+cwk`EmZF)g?*-4eHUD*ovNy;KrW}n26AeUVrsG`qI5e7iU?j);d}#_6>L}ZYI^FD zKi4Jvt8V`~b928Iyat{! z2tM)i>kx$Dnm=hUaBS@V!0BRbgQ4_E=2_HdjLLgy{4OJ+ngwoMqTeFS7F5%e7$BT6 z*7ViBgwJT6M7Lag1dGw`p~6U8MXL(I5TzyyG4yjxdc@&DS3U0|va_>;+%iw)F@v%Z z+CNbB-m#i$vLRP_u7VXqm?G?q$&}@Ve|EDeE-XB4VP%`w+??fm-R+CYgwg&PSpI|9 z7(FHa^hM(4nm`dB`w4%`-gRO_N=e)}dKM|agu%JFHuv?6-?4IVTF3)HD8LavrvVG~ z(i8>Ec?uej;MoaXlO)A_U6WlO!X#P4u; zU??R~v?soO-wKv;yC|D$$k)lnVib!|m^z|jx&z)6;5`W9X47l%Z?eh; z9qdXnSsamTU~I)uPfW)sJFcI8tA;{?l~MyUCweH1fh z;rKU`uN32LE4>7@Yu;~1<|SIH?=JLf5Br{J)tHM*)NGjY+f4s)gFl9_+zW#us@IAq zwt%~~3lRJ$8iO5y8~L!AbjgE~_TD14SCjn@{9-g>1z&9#7Bi?20M3n~ zhDIiGaS<#CM+0ny11LoT* zb5SGTQ}VTSkSrQr6xSUYnpK$uAJ; z&WYQ-woqk^bwP^>VvKYaQKm9L>w9&>sK?0G8}jjhu49B+ktPV>Vz$>BH=Q zsH8K5VJ~VWEd>r?C6&#@Z1#BYza#TJr;Mj6186kX8q1ylq0q!eZ5Y0afDySv* z)b`{-UXUR~Yx9I`p~tj*v^zjGkL<~Jg*a&O8;k&4t643(U0{%J#3>p`R{k9Ug~laM z7n&u!(2)~$W$i7?G0zYW+uSVf!1*b;M@C~8&I{FI!Bbs;*#xCU>2_dzHYTqNCM205 zkxaVvOJy@lH1eZsV$4b#Wda_+NyW&7gw@xX2I!Pz59Dcd6Eb~VF(L+oO zw8$VD=P2WYf)%83!TKi$}_SW zyx7+Z=n@89k)&9UA0Lcrs5z{qnnAyh{oUDFRnou2H_LQqoY1>6ygiNkw8-C$4a2zxcd)12 z3+NrjT2?(KQY}N%NqJEFgmCO)28%TOATnAgqpD^56n}^uTCXX}<_T-1P9n`GK+xhG z^)qP;a)~VcW8a;zJy{#LGvhj3$eIXQ1oSyM*3O>&o=IbS8FiUB&6lan0h7r4xfDwcAJBxKR{@^;}~O<`dK(jK0kDf~8@ zT3VzuLD@OwQ8iRNqN3r@aBKdU$|y_3+M20DEk(O@PDK?zZQcu(mlWNE5igq#qDmas zGkCz@1xl*&r&1O}dJ7ASd@bf2O#=IOOz8tu=AAR6Fgk*lSlEn^A#+dj=O&H;RaF?H zTNqs(B*t7_*%c;B9jZZ}!7bPL{u`qVlCz*Y|HDNN**h52$luej(ydov`el>1vKlEh&jm$N9feRgP1* zci{DBc+z)Mx>9r+#cquJgCY>xEX+v}w14V4?=67*4vxe%CpbQA5yTv8g*nki18IEk zybe0OHZ`)0hI17}FIF(CtY-t>&;oN$4A%yxt540xfqWJEWS#6RIeO;{c}ZRWY8jH| zvK+13kMQ*&zB_FPY(Sb1Ek9>Hr^=i~?$y3anxOEdc&mS->QKw309|kLq+SH{2t3Iz zDT6~@a^i>ubBC)QqWy4v5m6Yme$>cu2P1M*A8 z^3pr?K2s$x5YIy#45`+-@;S5>ou zObUgLcO_IWtfFuO#>Y(o3-LXhwg*lUxLxLBUWZL`Si{PyhQS54NVSSyMC zI0mK9&{CHj;ijVuUqgV_;OuMoT4MR1^aMD*+x^BGf-neOf0!dzMBSjsRndHXTz=+| z?5ZhEVJ)G*)EyIE0W`qKKEbOAV;u{M8L99Y+WaLxwX%xq>pDY#YA7B4;Bkw`k~PuA zbPlPIqxgWB^a}qD(=zJo*}|2Iwxt3Y5Oh)Mc;QGPL^`ysaDpQ4b&;43WU3TtX8%J! zi!D>fvxr1q9Y||0FE0h}u8#n6fWr6s;D=UeKz=@BzG_Av0BiNEI)Il5bO4~NA!wns ztMk5X1>z^9{9@IlRel$7O{_Z2p4qOiR+CsCw7y+!{H zY@9C`;d@)2TeJwupr&p$JpiCJ@WIxbC)K(Ka83mJvzqZyX~Q zU`n9uxFf{QP8#lRd^<*-z1{zt6EiqA);T1{ky}|AoRmc5bG;`4SbM<$nTc>;@Yi?T z$g^E*6VRJ9cjg{f1hki&sRnm)u#b-ZLg6K@2{vktBu&k3dDhC3!26!d69k~Uxc+iG zFcLqz*y=Ii-67CPk+@?{dM*--PVM$NI@(42E*QaW29N#Yea2y7WwpAcf5!?Hnr7lH zH&}eY-ne2!<-2WP^>M22Au+6bszfB`;N5V_dTKt4<68eJxLn5c$M$fCgHGad&ojM` zw?ogJoRk+L^sgVN6Aq7#c7P~xwe1mN`JkJ+pr9bVy7|V2Ldc9rBVTnThx!J$+?2AH z2k~R=_KMmvXf|H>;;Q*hMDOm>(QUi5`+P&qx3BC2)6r?QzJhp`=R^Im|Jpa;C$l{z zQv~_n>am7p@FY$TYZn@2tc6x{+R#gqNWa(W>svb3szP! ztd^c0NCYu801*A@cr4(BL(8jCpt7(%kufm5OhjO=LMRLK9-o5ww$`%gH^KIN@2*xH z+&Aq5p!m3K+74_4OfGiw-iX1Gk*M*sM$a>c;a;Zw_^fMGtLL@WXnABib`hXrBPR%5 znp}d>M)F2PYxn%AmD@k=D*(aVEyt%WHn_x9d5nEqST}9rLyGFzQ=Z+rt&fK)+U&I} zPn#|VY)dUhh(N|w148Z;kuykzi#*1B<02ZBmw}K*zOw1!*PPnTZ`B8>2(OJ7-=7ro zRq8wrwYm;4c_1vqC`MEIyke(O? zSw6zQlO=jU#JGR6H`}Ko;EiJk?C6)a=QVQ2!sF0r-fg>okhs%`LLE=e6Xtn(=P}lYb1H{_E@&gu&YF&Lj zSJys>tn2}DZfJIP0JuXz0E?};Io0R%JjL6dnHb>erf3Iv47YWW`Ch=fdnkV1ic@Na z&|9j3Ynx>Zc+OwxZC0{I9lhis`WWD7Z1WN(4I%kU-9qvkuRMl6yet>Ah3>;8<8o26 zO~!wuI)N)1!9>+?#x(a~v zs^sY@5-jzYe~iz!Ls5L9cu%+c+kb`eT@I{aC))|l2(|kT!iT;PT8^^n_l0#;ZHX?h7Y$+Qgjln zXQ2ZjGAx3|oW_f}4%qSZpS}#a@GIcAaiSW)|Ii8UHB8Xu$ykMPu^h!@DzQ`BpUvJ$ z7HN@g^)o0K1!`imtUi)fd)^CqRbD(*?klSHZJJcDak86B;GFILq% zb5?XBiV!h5_ZvCFwvURhm9^6H<5eN0Vn^Z!b1L(jo2iTWY<-T>SqNp#KYla?kS>wE zhWHUxktmSEsS0nT$5{YdrGaVoU45P+IZ{<|(RC)!yL&2`V zF?xmG)iTljg~00r^q-3fADGIo7v;3iwuR$zRhw84cq67|W@qdk9v(=*?nOS^Nh=?cu}#^FLqY})!k{n?+0) z#|07tfYdtx4py*EaR@e{A_fxL$X8d#NGFpsX49DTnVw~&KTYtJP|B&VdBhk!UkccJOf?axjEZv95@{U-kj-(EL zSt7nVe+>FBZJ+7GVxjmUwDuG{wsWFzp>+!GRID+}$6{3h??J+~nFcQ^$m|QmVY9WS zz#)_@w1+Ri0HYOU8AkXZby_w;hxXMNYNMl{K~4CEHEjwPMx#5&!DNH#V!H~`422`j z&@Y-_<6jb_6nk$osQ@y|ZK8gz6S$QYn2_V&?QIi)6MpAB_8LjMLdH_cS>hSDw?5H= zOAr9`6*7gxdXbQxt*vEbR1eUC9rpe343Vi?M`ET-yQdrybrZ4qN$=R@8mY>CeR1?} zHYYC5yYFDlm*1NWKoS6`bez7oqIGq3=Y4N)!?JEy_>uR2{l`PNP?t1hlHFvom{80C~kK5HL-kCg>kUF5n1q6WR|s-wreN=ek)6U_H9* z^$98?>`&7 zemwt4r)n7);|p-&8PX61;}q#-&nGX_%HiUHfY7>8kktx`DNKl+T=ZJJyR85{r=+3Qf_#q z-C=LR{+`4wS33X4T>Ix)v5VkJb@@P~?3LPHVf4uhHKBWQIx+&_at)XdF%O z<}n7noZ8DItG{C+v6ZOLC=(-}>X+v#Ql(4?&5gf-ghDZCJ0=-@BtfUY);fA_P8S^45xQ#ug#6>l0*{hBl~v}c2YGUjlm3754uOYkQ=YMlAr!@DUt_n zurpoRpDqxiU2b|%Z0j9y)_iw^tUh?1w^Ofy8vDZa5u%{DII1AiBm7y37da(m2J&QL z;l$u~v+PP>G;*hYGAjK9y+6g-UgCR$8!Y7?<9m$&@9zX&$o&(KejJ~DTkAjj6!sL3 zfMI99nwac3ZBcN4f0=r|Yd~PWt*3`G>w2Z&qJ!x+4*8o!nwy|i7Kp5$-QM1>i2l1r z&8Wh5b?SW7xHsDYysY@ohC@XU&odrD&6cIVD3~u%4-Ce4mji<(5O9Z}f5XbdnFu`6};)8g*^=<`&o9*>d_rQpw{!dqR{O?|PqFut zeJ^~^my*TXKP10b1+$9)ocqVFJqnOYxz%saj#*FtRTxEn-FrnB)ox*@^E87#b4sDI zF|0qtd*$>o0j9t6XZcX4uR|A>))a{IAN>advt7LWyU+5pDlMP1(@7tn3GgpagSvn` zi}uB_V&+Uus#Nxi+IJtFdgJ2giwIugbpa}fjixPYaCo>MYvllv_vh=@mUBcq!+*t@DtL`Yu)+-PYvpT{ExVk`e+&(xs z_{^&Vp{v3=&voOF(qlGQm*BfrFkudkN55K_;1jKLCa?zV(MZL4S z38Y!#wi;(cBFfX}jv1-k7VZPT()RZ+vmy(lT4w*{$<|b(r@+n*L63|!XlK-}Ch6)q zQ265-D2GGu)8GLJJNMK(G#1qN@81ied*66>*heZn)Ug__=;{cg1pZPn53{}fA=%D* zN+~JAU?(RhnxHS$)yed#cv8dD)3W^O9}Em|jg4{x;L%}%Oe~3*6>8>Y=60YKDj%1^ zOu(7#{XhyLD~k!Bjxdxw-ma9=*}xEM{@lF0)bT1))`TsPv4-Sqq8I`I=Q&uhTz@YpuC{Fwz0J>C@D$)UgAT%=d<_P>##(k z9n?Kq6_CrmgfF$8{e?{iC_KM9!vR@uaH%t9&If>+9~f}2tIOvS746^e!Ofr~0O1T? zNE`;G4Hh;bb7WGF2?J#Y<>ct>UBtnET=3@u++nlu#EUYf736% zpXn78MhNfd+WsfJPtJiVQ3T*)f?iQ_R;0FI{51+9?q;mq+}Lg$su5t#svu9UFTl^_ z=+$IuY@+H%u4`9Th36)#-q9BP2$WIgdw@5)Smp5T9USDmr}J!kk_~a7E(5PE4ObO% z5kY%KAuC_;S$+$bl_pc%|8mR>nh=siEv|Z0rDvoo{U}QR(LqEN~jDFBC|m&Eq7&J$6=x0uGtSOHUJHNra{<_pl{h8##ohY7HQ)|bkexLoWjFwUh?+u&c;jJ2M<`DtQslf<9w!n9rW3pGJqgAEU&uScbgc)eei7Z zR$RaDf1)-@DQlWn6^hzVU#4hJSqNKh=6#_%tD{AmD?eSIZ#&~q)gPf6}Wb4SrLMb^8h*f%Ci3yddT3(g3#%Za*p zeIX>#wSBkS68qF-*~Mw_{8Bd2#+Ye&vfOj9K_vnjwchpr_Ca)S^%G(4n+`v7+W;@r zF%qtKGNelIU`;+6N?|Ts<|RSKaNY_5u>Y1!O=BpKGB&#U#`S$zDP}TGMuuM2z3JhvA0Mjtj?u z`5zQmxu3M6{a}bs1lPyyIwIOk+iH;}7hb)UK@xR_(s7E(3W=s@-dlUZmmmj$itCdc zT<`Eld>=xO6@bO)2Z3moB)|DyrSq(Ed`{e_ zcx;Zy>ihV#e&w4A9nVVm7a|H)h!kEBXDBK@jembHX&jGlcjKAP)@^C?`e)5wCsmmK zh@*prR??>RZD%y>`O5jNql=1(Y{q7Zi;3j5K{U`FPD1 znY@plmTn+MovzV@oM6!rKMcEjjnV|8BX|LF22Wj5zhKR|7LxcD|S;QP;+8h zlK}kD#r9Akr@wze{??@L;}&92ojpG5(c(v^+ha z*ND(J4|P{$0rRje08yLD{Q>g^CDfcZ-Q6IM7f`FsGUtNZUX}0(@p5*IcW12tEbFM% z^WhFIVd#gW9NoXWyImL8UtA2H*5zxaNcf6dO%$)fee22d4%JofGF92?#@np+Gakaw zY~1H|E8IU7_Hxf>(ru~>r(jJmVpp4K`%KP~jA3&eO$4?8#RuSMw9JlnO@y-)EF+&P z=*X!55%I=c51Rel}oYoBgtw4-tfF^qJ?j$u$BmkUmGPv#T3 zxHzgT>J2=b)2+asK|gJGX$`a`rc-u$pMEZ`9F*@;_PF$nAQ;C%LgiEPGYr9Cx3F&$ z_y7&w4H~S!KqUf@9{qJcUeFT1`$e@*p;4fk_x*bWQkx@!z3vkjp}GHvh|Qoqz~H)*;`8>mVSyVUw1asaS^~~>JHYea7n`b7Vo^zBRL+0D zrK!H^Y_Sj-16HI?L}exoWZF2zOT_%xoRU*q9FTwwPGO{M+GQyji0$lZ*Dvp9Q$s5W zc+{D8V=8r6;2#JvA8L9Ay^b^4u}X14=bMhPQD-Kc;aH!Y{>p4wGE#-2H~%yIiB!WM zc}3a|r8v-30ycF1yz8XlG+apt441jhZs{SMC%n@lIGR#GQ7Zle>G!uKAlv)64q|9i zz}@}hG@=6H+kGIuLAJNJ?0bbV+yO0_0Cg-90;(an=CxcITRIlUQB@TM*S0uLB-1w$ z$#2HN|9(>;_SSZoQaElgI9Tk1sN*^5q|7h##lDG63=73z^shj&II)0)#o}Og`-)*= z&RAKzjoh6P!7a{vjhq)Wiy|t#Ovx5V*Yf7D>UK(sR zjeJc|9-laTR#G3QlFrY?E!>|k$FI&#tS~~PXwk+=!!84JAK&<)>q>@v37|#$Ai@JJ zBV9MAksRg^`*Vgib0K_KkLS!tP~drB4|*EQiqf!9T``_sWl7NJtM_+D79D94%d-AB z`sd)$uR8cgus0x8p^iXlg=OzyRsZN z%u9!LWJmZ#lNHFS{RWn$!&513t=N@GR>6XW1b69!(gRgmy?{few^fw6?oD@%)cZZ{ zF%Gv6*N?`ln-YO2L#bgq8uGp(Yu=!TC+PGS7f_vz50)4}(KZ&;Yz{j)yxhy4cgj2) z1B7pqE{@}5H|1V4y29RgO9EO`aite(Z$7H_tN-Wm(+0VfYA{EluZpGK$06BLf05rB z+x$a4cW!A|bds%uYrxd;u;omqCJFJeA18>q+FTq|7g#~N>m$1R{V~fZ%9*T1phA)J zDiX{LIBuj)2cAWzf4u&9MfCgBvX?prYdvwd$@kebJ=*C?9rk{qRfKJIvH3XrDCk_`7 zlrg|MT0<1zc4IxpaWpr$ha(efxYjQO$^|YvbDcl59a)k^rpi4zmY4Y&(6`EZjULc; z{Ek3{Nj0ESP9?Q^n)5=jDan>VyAfaiYI*{BJ^-10^>=bP&;>vWO9+Fpt`5-7wE$xp zN3EOU_cX7)*yit>g(RIs&4^dJU!KZ%C3l!!V zC3iwia3C+0O~UO8euv z2o$evW9nt+5>GK(w|4Rxpvfk<4l7p}iIk!>1!6ov-Q^m^_mIiA?e^yCpThUWdKMy> zSg*%S{D>4Z3ak|35_F2YK*j*7lQ6qBXjj)a<*d2(=p7Mo^d2`~q&N3gSZF8=GZvfn zA%Ev*-6kvOjhe{Hb^%>1ps6&>n+Ih%0xD5i)OY9I*9X+i$uyeE>B1T5woQq;wvAEE zw}0g>x_z%jiS;V{2~@TE{{9t|#NA(sS37K#xa0KpZlrMi^I-1ubbcjqJ#zr;1HxIs zc#Z8ZAh5$;vmk0&i3WcBq{KG^B-8t86Yu&bwJP89ed{SB0w&#aw>InU&Q=_hRj-(y zc?IKgNZ{LH9>nEFdpsb1i8o+Mkb`24R(Q{)81y5Jf08=K#Ld7NM-ap-mpcPdRb zY^eL}msG35-TKSG>EmL&w|X$Q)Y#6_;^`z(r>VFYmH#Fh!Wrb;U8weVh)WR2Cz_E2 zyOlr!Qe=xIDbU=Kha?8O$mSafutf*fl#ux_oIX7+0K%! z_^B(KepP_J=kivnkRuTgqxqrJ7yx9&L_vo-{k$)^#H_VV8|E@?(XjNy%(4CP{2EXw zTx{I)=6I{;&H##;SlH3~K)5X|@fna0(l*-%x;aT>-`|!2bJIsjnV^_KuMqMFO0cx5 z&=>q)LxM~XuKz@iYwg($pl0aA$>%6?VZJOpj1_bLb@7MVwwNJ0$K|_@TMJ zM%~|>zTGpMbqq=0dHo=%pOFxg%OWY3{<%&uk+(OxkfmaYZjBxZiq0(kDO~Z3 zv68^*_vWkMR8#ZNWxf0+rcrQW_Z!DHyWSJi+Z*)$h6fhg1OJ)s>q}q(w|R{1-7h~- z6CSj#A|az#?JdYOKxDqBS7`g%83CF@^eVb;S$MLb$8scn;&!?x(b5{&s0EBfkj+e{ ziJKe1mcw=PRd;}XOsOYA6`OL`_|CtvKb0rlsPskgn@%02@+lgX=ao89^cMIpf%c$w z)wbK*&91Bcu)=pvw7A?b=tXm2%jbNIz`)R{dRv@n^L&*pNh@T7UpuMHYF!n~{(;$5 zdP9QiJ~O55HZm}?OMn!3erY!GL>Bq$csOSQ%pz^C{FpYq># z7yQeIeaeNhC?v>C!O?2KT6z@9mYs#cU_OH7uza+K9`kvyA=hsi;UJ?Fu4{ zU|6b=&zbwGGhil!CdnyuxNfGN*=r>ts_M@}X6hPm9z#Wv=hrHxcEae#1=#j19b8~t zxP^o@5$@Gg2xU&8kX(Uvr}%+wO5h>>?q;?flWGWk7+`VRLso^glfb~~Q=MW);`dH? zBl#-Em&c?qr{P}YOq%0F%-$NZzE=|*A!zp{X3uBcQ?q+3$WZz1+hF&jwQNGHV;sBl zeM4bkR^^S|udkSKU((Kbg0N!F{e^mo04JkKZybZBa6NFHG!PK_(n5e&9>@cS;Ajn= z<7)sk*SgGq3`|R;C-B+;zXr0D>&uenFc6=A0wy{Uq++;MM_YpHpO$JUBdY){?%<$7 z#YWD|Kk>V2u1+z2H&?kSBKHp-vS|s9qaq6!XaMFPIf^2i;}7+4fSck5fho+Kp`Q9t zQXWzmIUQaoF2~#9uV63X|6ijHMCW4b8l7v~L6CK!WL>V5aJf_&C}B~OC89^Vqn*N# zQ9rF!B^hw8e@$E4+`+^xFL;SSoCTr|X)tmyE(~t2zo=G!StN~H^p}zKWKHqr23ra7 z9cBZwGu$fZ(ycn1I5l(lQmql3cfib?pG>8VGk>g)gxdBMvqu8vuhfDm<)P_8Yx-Pm zpzqWAy!uZYSp8*O8o>07 zDVTvB-FhBJZ&Q6!skP;{mYM<1w&QBzTl=A4Vq>SCN%KU{-Kn1AjdC}@n^FW&zQ<7x z-8-%hK++7#OlYSX`yra`2vt%!PV3tknz8Zgw1EWYEw~Ao+SS_PWc)JL_lxMqiCclZ zh7v8i#&^C{ac?wR_usa^jJsWSn>^`|(t+BgMhw7b&e-1J#fX-LDRDF+mGsJh>RZ#* z>>ii*rITrYN-#7;r&#rS;#cQSm4lWH@!4f(+^S0dO6>nX0tW{1T?5o@U0nz7jV>=v z%wiH;W?-k4NXn`B<(DTq-y42!9ihU0zF*uB<4spV>OR4Q%2UNWiHP4f_!q}W^d4`B z!D@_zz~z9kpR}f?CYL<3Q=adFOy8b0A_A3cu=@YDsczAW@+vx+!$RPk>|S$kLW8AZ zLA0_vd*!yX`qr>GFQ+`Hor{0iVB%+^wa4*V;Au-YY8`B8QYL11Vh<87OUo z!iDe6?Q;|D@t*}Pb<{T&4w^xl_uZ(&)&aKl$TwSPO!wk#GK1Lm(S_$ z?g@YSm66`Rv;L{NW_yl3At%4|qP%y&8AGJ4QQ)V+XWTiQ@MZZ=&i?t8sCuzQSPfn7 zF>f$?1Y$6wjR;LvB&L6IPPB7x#Zy3vDCs10%t(Xv*>3=*N{c}HS7Z13 z6Z8Gwp0|84Qv(!V!ca?2oo=gOC_#nMf%&?4^}-_N%XYws9YlKvy=7KK}K09ji7@QxlU&53wvy%VL`nrmthl zpT3gpQG8KX1l`&(OUh!y3Ak8=4hE=X74t*d{gA67WbtS8hvV&^=}Dtx=hpbMhEm@S zlM%cs9-omods?aUzDrumWIWTGis?9rmkl?W`O4=KeN*(h zNA}pDrL{)Zt|wN7!vOj#_Nx^fqv14xA@Ye~_pEDarS0bzi9K;dZzO9S#h*>EFV}4F zgpnG$*}=G6F;O0OFpY4caUu$cGu+PKwAP?{05>ibc@AeE#>zP!NWS+kYx{X_Ul zbet^(Q~UAvzDNN%Qjh!?O7tuvFT0@r#8TF_bX0P(;w%s31#c=?VFETrhf;HEh{%028&D22)-EsA4>>Fv!L@LW= zV?pk(Qju2LoR$t<3Ukw))$2AZYIqfBuSjxO5{p!>H6=6H=Q=a>Jpg+=a{tDm`Bb3_tGrK08;XXi&R;D%w#f-AC5q+x4Mg#=~#hgI(C!LB$dCA;sqS31zLCKBd?EaE^lQNuq0f5E?WYlhw*2~_kE}ON zxkume$1Cx>s~g|$;J3F#Z;QkKHu5a}KJy9g*KvB)Qor%eV`}W3UE2D=o=@}))ofeZ zZ{NV`;*I=l4YE-5URJSwb-bJb@utHAtJ)nnN>GCN2?ZkEXX|avT3opWKUyIp6@jv` zVymOu1l@Iew?w;iI{Fl~W(z;_Id*=r@AJLO#z*oa*w}0mEo(SlF>^FIfe;PY0QvmI zUFolK06fSk%zP@&#ziOCVl#h9>wATm&z0C*X%M*Mf19b9E%YnPUzRDOQ&>Gaot?PM z{wT`pq+H>`q_pxx^;rW{aBEPSZ!}5Fgj}`l zr*_ax8BUhlQonJ-*D372ig9yeAZ==pkfK4SjS8w+BG|yAR_~2(@eHkT6q>!0#TdS?D>zGCYjDw zDZ{v9G{UpgJ1!mx98`*|1MM;791(LkW4naaj!6x35bjeZUp(Y7VHV7@D8fyzthoyn zIGozD?M@E=p;Z(8`mOas-*16^rX#b%b?Q55s;Spq=8zptxX?2Fuo1?XqL5WPDeSxw zeNs8GY{#fC4RqJbS9ZVI<^qPe>R+eOTm?6vz7HJi@s`{QT6ezyhlEg54PHEXW(?W@EH zW0T*2$9FYvwydFMT&K1YaHO{U?XlV6)x_=nyW_W6i@Grq;pJjq3QBJ$*s}>g;N}(* z==E;CjN!cO*MrVW|DgPtpiV8^^O*X|(}!EM?Xa?BQRQw+5#D_M)J3c*7GdqetEre4 z{p*5B;GkN6N>Pi{aJQ}Uo&9az58*S1xmm76#LX&GZL{mAApHEyg-2+4nZfeDhOpAV)XTWM;hEyfUsgKE<9wE%O%$ zX#UAG4u%PZg2&v+wG!O}bfk{Y@9Pw>nOdvkn0CGs=HJVCDZ6k)3)4=r-(QeSi$VkW z^a|hueDLz}Dm&!ZLtC*YN*G5_^_(=_cr;B^@Kfh~O?dhn8s3S$hRBNGq6Kx_0;g6@)c>xRBzwOu=Y;7!eRicl=-{nlwzDmZ0m@%896 z;Y)|lS`gZ38qnng%|`SO5Ec0!PX=1`uy?1Frqvf0s&s4D4}27}F7+EcPEs4L;&|M< z*Q;M74f0%3jAsZ&C>k^Ab`k$F8p3235isp;d{4;J+4iBjztq#F+x=Gm0qhAyJ+l$zPq@9 zt#^15pHqo0;>qtc6FTQh;X19s^0+Z3_)2%ZCx$h_CIf7|18vwF@ylwTM(s>M`|$Fa zHg7@Ow0p*}HFak_s_nBvr^p*mSB-U=8CP8@9~0s|-D4Jhm>0Kg-65aoWf5YS_aV?P z9UZ=0VHs*jRBp0Q6LJ(T5!_NvVt@bVBg3)<18IzSS(tr+R{1X0AaZj9F6jMy73vR) zg4MHnXpuu&Te+_z{~hf$1iA0oqeZ@D7VUfXb&gB8io)Qy?Md$XkCt8XY+YVSnY6@MLLu|I?D8lzaGLufE}qArPi{?e9x#@qPl+?X|{z%*_dN zwh2BuSzzGbYi+-IVZQh^36ZzLDPNeu#>ExlF3DCql0q3l2B}N-nP3v9I%>vBOwbag znWQBu&HY;mEe6@eK9Oe4S6S(Kiq&Vh_;X#bXRWRTY2(fLYJZwl0n))$Ckm8NnKHcQn5B@b#vg;_q>-oXI8srpTRnbUcMQ zkpX@aeUaf@3_gnn4%5k#>nqT#AepmlF<~!}M=PNc5A2 z!%57(p?{lGHaQB#MTM}%74i`O0%B%BUCLnKL-3*5E0u)B5=4tho`ZbdPP$ptRi+p7 z&)9lj-&cX#`MVMAyvI_x%71S0e~yXWl2Lj`1jy5C-dJNeP>RPKQIJ{VmxH^6JXgp* zkSR^}_G@F|2Ec`U0fGwT(utJnmHEh)ZKvXHJ{NP+P+5p%-C3qY4l6+WsbD0oV8MPS z_+3Hm{vUP~Oeg&VO8vwNlqKWxbop%}433|nCPL+o&700-e9okErs+gd@RvXQ!(MD{&P zPK}9dTR=&)k(?>gAt+z&>(&$_x9y&g?p|~4yR$jt&zS4Uw(M*ozTPupzrb^l2Y;>b zEyd>J8*;t>yM5mJ75Z7*zCqqHXT+VWs$gs$rOm^Duz{i|ZNqqxI(0O*W?f6*2!=K< zm?!*u)K$YLk8|S5AJc-_8pF(G&4;YrSD8w6AP3TPcQ@096ey)XW=-3Uu}(3ctv=?_ zSh3cXV9!D?aR!$NnVkT(-)0v+nX!iBH~#kLdI*D_9SW>!y#dT<{>MLRt|=`v`K<@q zelvVbcXPbgzvs01i@|rXTRYy!e~XRBGQRBCxCSln=t5A*UeFaLq~iKmbBAY_)jOUb z#^s-{+_jNK2(IE^pl6qN?lu5m*C(v;;nk3Fx~Nb#F1d@Ak%m2`ZwY9jG$iuUjyM>3 zVx+%A_R{NKNB$;L+oXQ~)h+km!or|GMe5NlS|fLAQX=?_xagsGF2?XX!h#yM>WXiK z?J1L(4Lsww!ZHr~l~!MFez$W<$0jJD3?7=Q6d}5C@0Qq8)O2C87dc4DLVFdbFKD3> zGEyT}c!mA)f2sKYdd%Mt^-JHO*sg_t$AZP-KnM>q^lIbX`E{~D-cuU6M7_zpQ;H%+ zpwKh@>7U)H9H5GWj%EeGFaZH#<#krF2^29i{S^r`8G+YPjZ9z1;PvA+yOiqoGpS;& zQ*-&PF<#^+c}(Fe=(bN_AHdI>QyS-<$gLZ$#Dm&$ZM#c;;mB_*oD4Y|5LWU=9Hm)K zmfI|^ug|zdxW<+q5#~uEI4G#o9G^=BR8W!@ZDQhM+1PjhQ7g}NTK?#J+rhy2>0*;! zaKVSL0CSLHmZ&+Wkd?{BkD-L404W%d7_yvZ&ctpgS^F0Aio}+K1Fg|45~OqDaq) zF%%*;E!0MI8k+vYkT66#L@Pq*B;vMvTRhMisab=5p8t^XVjLBOq)hlxFH5CD7fu`o zAQ#!|)D zqbu5LCBb}3HDcqnUK%r~F7MW>#2&vS&re(zXFb0BwR(<_TKQb*f|S9Ns&{8TQOrJX zUOrjI{g9*M2lwfKmMi`Rze&9w)pa~^Im-E`(0FW+taQj z;*t)5x`ug<2ifpP_i5=sus2;~sRrFlS7mrnByG&?)i{eHoJ)Lo$THTTKOT@!g^yycG&53+weDYs@h&Px7 zG)T^t%giW+a}<~n$W476Rky2Ha;taNikX>iP-bCWr2eZZf<=N%+g!Rbz7?nXjmzxr zkG6{z9Y;0g2*a%u6s8tj@P}+|AQX;D_xSgwW0QFQg>ood${m9ynOwM z<`VrG&Sz6c3yu_AuV62T07wj+E{KXTWigfcz)4e{F|zChrxKeUkFxzwAAX*_e7+5} z_&)2zj^iNMx77VWS@Yb#^jLN(G;HyH;QU9HfN&V}?RAzZN`C{qAHZw6*OV0&=)1=A z3!@>8l&$!OOqf#|Ps27rAX9;Bh%2kHUN2od!c~+i2uU_raj4hkBsRr*?0dPfOcuHP zv8B_gpzbk?zP#Y2i-FUV03WXO$FQs#qmIMtDhGi`BCW&T(r{0cMKmS@?p!061pk-m z@W=Tj`|ao@-*AW5y|R@in~VY%zEh@*U}Vh9%ph50)TKM;SFP@mSMQ+=_ZQ60zaR^i zMm;j?k8LcJEwmrmqGab}!&pPv)XYJ@*X5MR%yYc`zhl2He2_zGg35oL&xxmynYN7i z>^RvPEF0^LWg%#lW*me<2p!N*weow|OgqfkbH9{;3G+Wic|3{Ppt{-3T`L#p z#OCxxSh%I1v57Cs!R>@Eca{A1uHZeq>@~Z*jR3Lex&DXfCXACq$xzJ4GUtj=x5Ab` zLIy48@w^>4C?l}b)E)nMKr@b$YPA*;`v}pBU&Y3_GK8NoHlJ#?j1}T{GpSpzR;GON zAI~58`GV-gf8INfP2g9YkQqpR8|k^681@U^5@bKvt=j5^^rag+{C#ft}~{m#UoS83Gn#9`YbBgMLel z+M(-?0y8j~y7_VgFtwrec=&TC_saThO~(o3-XLAMF=sUc@>$*FvM%haPf@R*?p#@+cky=MYB|7cJ36t{}g>Kjrg zBnU~g;PUINd60sD)qn~d|A=jvf}r{2h|dGLKZG%Mu8PELYwEerIjqlf%|w$=WUc>; zY0PWYSNAtO6&ad!{gJG`-a-?_~FIr(T&R}-PB;ewJ-N;?Go)dm+2 zZ+E-TAnyFDJPI_A&CDh%j|W`3HlWZChYdf@)CU)isLFvfOo!tLfj)%_Y7YD9Ugm#5 z%BQ}n1QG>WZOhQORT1ITHNqyep-KJGZSCj?a~IY1ChRUd;z}K0##5t4+)QIxQnj{( z^R169E!8H!tjjRgas&QfhTAX2T~u|SYky1B0L9DckH8!c?aNJAz+L!Ll-6}Y0)G&& z$tiGefT@KaW$b=;r3wV@skBS^0#10cPh4t?VBa)DRtfa+U-W zmv~6&il0A>1TRKR%0~8jpEQSvNu%yF-d?KcV5KZQl=r5@;e?i~SQZqasT8OPIUt|< zzP0~S&5Gp%aX=C8x-QmK&(pkoi(Vz4$PkLXp5zbT!y=S!oB|`AQV2u=8`v0DEg&y365sIX7U43Q%AF{bM+%q|pOwswIvpgyj?N6@#zrys zceX2^ejVB|?P(eAHvf_2BL^;_eT$)RgFH)*pAm!Uz`$Ru3ZgCB+3JPm%bU16e}43E zXpGnyW9unTsa_RgVJ}7yu+mev)5VK09^ne;LsG!c&`PU2b*7z36NH$~L=1~+%;#3W zC({vb-A$?(BF9Z6cBXZgqnq^s+ApNM_VIcPo^G}os2_q_SG!A~zO0b2G= z>8jK^#~nx@(~4FBMcM@e;fIxMW2Q1lbEVM&8Cl>04nzSsKpGgx;UJ4>_;$}z{%?gD zf9JH8RRMuRO;lIF>qOB1TM5 zQa5}K0ULK{3^mjQeomuE=x6^CeB(v5IZAl~Ro)pPR0w{)n6PI+oOxKWF9HrccPP-c zN&)?09O)!)(_(TT5cI$>W^iN%&-&o zD{{8+bEU^$*a}88p|uTZ!13ySJM``G(|<}Xpgj6w7j_j_Au8d#^kJ_n7^C$sxdAKk zPutHc)wC4sd^4G371SI$3i9;i)n!NH#!ji)S`lJ(g79s-$zF6VfRbe ztVb?Zp)=-!nv-` zSLcGFD3E!YRiXEJG;|3R@SEO%idH*Krj7Q$*PKZbD@?cviyfK-L@MHq=`(9QQNZ`W zr-sa!TxUoSy7?ZY0xQj)7i3aUAAaojJd$f@Bsp>2>Z=rQXc@Dog{V)p_Ez}EJ^-HKB^!?@} z!cqmhq))~e_Kgsgi34~@XmX7+1#EdJ$T7t*!_zWhVyOH|T`1FE)MP8D5KOJVEU^P+ z7j1HYT7)TB!c{NL%n}5sKt6adYpCvqE)o3%!u)A&y3KQE3SpdrGEU2VRq`o!}bv`ROPdpf|JrY`6tf6@FF!FSWQnh0nD;GyiS-} zf=Q2yI8;*_4+Rtnb*GR`wJV5~Xdejx2aI@k|K}+nW|k*4EJAeeE5GK{GZ=;Gf4k`@<-Ipe?W{E6PgmoNr-~x ze(x>66(CNNirI0vuC{E4Lf z7uJkbf*~s?E!uib1L{4fRfH~H^>#6;+uRd8azl9ZU-@}W^7HIZ-TBtm_j6ylp3MOJ zKcDIoN#GMm!k-bt*~v$uz+bYy+Ei1vP&^|`(@}n3p|!}QpiI|D{Xv(xoP;S|(`LdS zX)C9e#*u|P(XTDxL|j8skMbcBgnjeY;(hKgLfndP8?+rk5-tJ7lV4eL;`jR0{hTIr zzq$38dmW9S4sFIk8b&AT@%Tce2z$cIgA}UqtuF!Fx2Yv#d%B`1BH+^xE>a2i!P>r( zltq+{t8N`-RCL135zFkHZ9z>+6et7lCT^{pjNQ>{A|D-GWt~^o_Gfrf@U69((I&4u zE0w|Vhh$ds$BY^ZdjwK@xT-01aX63j%gvtJzaOxt#3_NbwC5lVi9Rf*cT%_Ub=vI& zO90Dilh{;_xy$!0hIEWAs;HM&2{8(XLq``F)QuxvyEObP!f0c3vwz4JvOoSqGfSBd z%~U2vGCOGce%>XzVcLcE*Bk+HA%!YT{48FH0IMGGYSD@(dN3q**cYTw$uKTrBrK4Y z{$Mpq#whC9O+H?L>csA8k}8B3G7^(1BKtfM#2gt~<%ca&*c;ySBnpOYcoNi*?XnXA z>SB8idZ&xmpaPI>8eoe?Cp6U4Wn>T4ln0zfs{)))N)15u?CW%2-Y-)s>DOyH~pjp8c9TmVnl>kHmrEEWjrhTzQK<$ zc+=DH9n&;OqcmcG_do?2!$Aq7rb*yZQkI}*jwNr|9a?}@0uA%m?S~4xgbHk}GN%7& z0o*usS)N*vW@~KszPI`^&!kFltWx0+2=VCg1z1tWP~pNSw&g4?sPykiE0~XeBDMck zMeWs_+FGfv55df;4(C+dwjR=s%mz4}B|}lTE5}^blSaM+=gcCXl?pxBRkpS%M`N0x zT*L0vr5UDVCe7`qT;3tg_|KNU>&@h4I(ZMHrM#|nr>S9_>BRo~U)G5$*VrCF)U$S$ zwo%O=H2DTSSKP=kjRg8N1HrE>33hv0?>kcszUDz&Pg`$D>~hK9nz3qh9iPjDN46g8 z!+BrEdv@;MFFvZK&N}Z8zIM3u?tFjtYhObnGYcr^q=G4$z*+7L-+HR`kL2!o;C!1B zej~?<7RfUIAtSX@1H^N*vC-#;qx7%Q#WN{rj(tc**_Co^=ZxH%Do8?-vn45}%;CEC?9+Ev%B0klXdM-ZzSHO9%wFJ@|qp6zaLbkbJlB4}M%|B}PB z<>z3g0JrTu$uS;7HbqVo+k#cge)9`!Xb8W22f~^P1t#k^@6FT4Az92rX*1XFfH>V= zBK=hH!tc!hrXU1`yGU-y&A(^ut4taY^AY={W*DG1^lT{lXu-F@1`A9~6n$G{ekU_q zFYNTWfvc0j<9tqR=oRELeS&)TS z`QTZ-%E?3si}2L$H;U^pF5y%)XO7+=?w^0EcQ!Pq#9RnR&~Aj%ZMf464_-cRx-FXdNR*oi)nYQBqI=2YegWmw)y_f-0cneQeJMuyCIXKO*lxHUjS(hwXn`bhWuV;s9gV_p^2F zGae6W;a4@`k>fdwjGUaIRXlLSA_6f1&PNCr#5NQ-x)Lc7&+t25Imz%P1Ftw?pSQV} zU}?9jk!&|7ulx9`t(Pm9n@j5 z1AEU8=l<8{&Z6;bmQ)WG??a-TkT+zk5D*FDas&sL zy4|vRZu14B&e9kbp|WBM#;qyO zznAIDmxgcTes8@S>-DBt&*y8Bo;PwY16yzCC*H%fir;Ks2j3&!W}$noz2Aeb2Vwm7 zxcw3hpN@%t`@d@jaz(L+8}1UnpK-6etM!c63bkb`ZMZV?`yC9|ALj4)Kjdy1d%X_4 z4As8!2tPZ=Umd*Pawz%T%Dv36GZ#3#Li-X5uM)fzhU3^UB`(N*zEQe*8cWXjdw)6i{&&i0YmxB>t1@5cdCvX{ zdHAs#*3l4EbC}dxgc@!%b^hV_aih;`Gwu_Y=~S0{W68|nANpaQ=L3PmxX#g;IhMBf z&n=JS0*@PIb+DhEp7qxpc^Wih3!4JtKGqWZB^7V^=9tdm8at0uVGqLqj~y2OI+f;vVNS zqd@;P*xlEc#` zH*}wvS&lo~cC9}CS@@bo`2Lgd)W8~y$Nq}N^T9Y@GHanTeQ*)GOwgMhxJdM zo8nd$7UvZI_j5&-nM;ZqB_t*5r}1!+4J^x&BaF|*Hs1=3E=qqc1EvY#+sNGINA0|~ zp=5$gu0NgL%&-nC*xPfCK4>viGAYlk-Pzy0@rt#HA_p24W%(J;*3%RRZ5*8l5!!d@ z$D3N)%tLMStagNz9@nctHkH;C)*_u0X&zp_Aqn}??$+3#TX2rwr!0_ce^0g6F zNsBAaxAWontCfvbM^$arDizQ0H@(S~J1*OI-qNWp#fD?ix9gtg4_0`OL;1eB4t~%0 zoot*FwJ)<%7s)+u_i$#}gKE?dw_ERIx@Q@CJ6*yfP(63|EPTdn=WH9TE~{nQI_o30 z?TO05gD=^`k5BnNnV0!5tbY3rn-UgIag*x|)N8n-u<9GC4_`FD20apK8`Q%{#MFnN zz>yloh}y^zb)bmS2aBTnkURvm93Zq1ihPW~V+jzWC4n)CC?H?d$#KR3UG5BchKa5J zQdd7RqCG7e8C4lI3E7#%P$S>_R_NaBjvP=fD}dTWN*4={`WMq#Jgsnrh;y!gMH?ZD zLQi3= zt`A)dyo^T*(|K;}8l(a*^gBf*nANht9D~$rl+37_EIzLsQwA5VRBCrMr3Jo4s!>>U z>NDfiWXfJ6%I-;IUvUbMpR8*AsK>FZP9dWzhD!<)k*JfVqAq$Z$hw;FoMee8Qyxbz z8Ys))nP;l*3My+J;tgM9v(W$dELd;bEP*INSt`RR7W8?zAf_o1!WT%n@E?HOdB7+v_7(T5&rckvq5g{tlv^)C z(@KbiR0-u6217*Y9A^e5H|-3=A2XK97$1jlOky5p3uF7tX%oNf5XjP}Ab%~sl#GL^ z)&LhAwLyo$EKirSRufQDPZiq*xuM7pZ6C3Ky!ye%OSCUE%^d@e+CdHpKM^<7kKFLH zIgfai8nrE4>Lz#BF{s=zN=M|ERBXP*AeV6@{|X(^mR%@_N!!_>+B-eT@q6WYWgtHm z8CMNr{^BE3gETr%6HF$Dcp8@Fa#)%<%5OUo_RE`BvPzMg*-|okjxE58GDVevfnnO7 z8B(tr;jQY;yu_MECTYwsZ%ZL25ohnaNh99x%S}@o+CFcSi1M$^wu`cRd#T?@weIx0 zPA4=F;m4j6^!i#tQO*^>YNmDN?3s$w^SD&>$5?5<1;Od@L9qy!uBpEzidAqBW9`F3 z7e5p_X3V3?D#gZ#847&{fkguv7%n#rRRls#+VUtI28&Wf@6VfaQ6Lw;rf6!c>n#k5 zs!($0ItP%+Fm7TmYUK zf+nh`FG&;++q7dr;O=|ReLAse1mxupd~}^E&{_;iVj3EVp(k04zZm#Q!S`A*m%Gik zC#SAJ?F*#wPE>V$I-j=WSZ;G72WdvT{ha9Uhm03`qRD?=KRj~b!!fS0gm zOlk_5TyT&xFg0wzQz`4Kp0=Z(Nurebv1M>vUSU>0&D5?>_{z32A9>2hOpPWB3+=4v zj3yaS#P13*Z{<93o6|I?%+4n@F-oFmb;L)nENlvX@R_IKP@yH;79$CRl*HFdUcbXNA!JfiIpNbN zb+9X^i|1hVx=2_J@iPcu)p(dgiNvXjBpUV8X0$KF{brC3H$#3Bt8^E!@L=+MMCcPJFt5zZr$9RG72 zbMwdm4>VWSHcT~2U`l5082OFu*v_yC8m6z2i0^ziseIWS*!DK`cIlqE!Y=})6s#=iD@7YL&B}% z+PFO(=~)Kx<4U|O9VoChqXP$x!aRb~LW==CG94wfmIk||WDG(v`WHx7vQeBOP_aCT z+hN3HQS*>Frx>#6=LTm{vTHlU9nljsELc@7L&P4cBsmJcqL8qD9NZ`)3q^NzAq)5(RX! z{}~0>+y3cZU1^5Cs2o^=ST)sBJew6`JgeAPYsM)w3)0pctwERnz;ZH4(TpNp_cXoM z;)|AOMdZ**H$-qW1vIibY(Kc5_MJSM+$khnV!mky8=SEWC1nM0(V87A(=^3`kLp=T z%PULD-Qx;1qy2i~6;8JaNhLbEf+%c^nu}}tRuE^^qQ$!Z~0msyF$)I14|o!Wn}Ymr&WeJI-OIr|s`-#um|+g@^2O0&!sI zor*p@DPk8P`0Q4&cF60!i)dGSJRAbb=5BQL3Gwrf3@j9l>v_Su{`SS*$&b>VnBw&HGm+58U~YKE*U+CNAQ+ZNbNsR_#)Ro zFF9~(Ga`4?jK6`HDz$1A8awR%%9=RuyIW=Lrs+-%;?zHZI0bxTJTPa}88c%Pr)l(V zcs^#%J{g=$J%&7pC!%#OS64hv`kXv=l}rS z?5c~wA05dsZVL+G5#V8xlm4a~Y`i`a~)c1EiYzeI^nRQMtM3oB0CikjFb*RZC>yW)Bf0d0L5f+@)&W z-o;3yjH5xxgY5g~LpFEZ)x3M&x7~G$)vr-Ub!^K_;Cp@bEH2I)l;uSM{x}MXT2Qg! zsmbnY#1v_{bx|BE4d!KEA~q#|K2IN5aBby2%dC5W`tQ7zvTAkeT_q|844ljJ$3{83 zS+7`K`>s$hzYFH|mN`0;bafqTCUpGD% z??Ayd4TtmR{U6g@yfSXy!QCP;ZmIUyn&)L!TaSZd;La+86;m?&O`;7EF-=K*-@;@u}l4$=ibnk{y!2@lj zT6)dT$FA-kj>~qwm5LOyYKkzIg$SkE%7+*U0n`#qtc%|o^d&~3;zV-lMFEf>p^Ue?Tt}^Q!_^*29>HK+Sv=fGFv|@(YSbNC`#x!ifSkR5Sle{h46*q)$t! zsOm5FWME~UjD6Kj3dk>1Him+`7J^kOM&RVVRyZp&u{pqMV=o#f)B0?wJP|p_ zPfi=^6m-p#bK+SrWU_u+-Nq`T!QW$WeXe%kNfQ$z>%s_q_yAcE_stpp(0!4`tan9- zORu|sa|LaWv9xJfK6zM(js`(coIH+I&Ai&7`IuR{#>7QLsH&0jpU57 z@BZT98`;1*8n|bu}9;cMP$e?y4 z#uhGE6^{dpxW@U7FY}BI)5Q^C+vc8^&BZNf1f_;+kWs4cdC8z88w!FqOf#29PlU~=G~CHx zDRz&{%+(e@)5q{tBgdQz*Zy} ztV7-`-4;Y^Yx97-;~8P!sN;TA%K|--CK#)vSQaq|+`M@g?R5>+=&#b$^eW(6ui~9cOo{ltxoUQ)64z znUa%BR3iF1+^-(D>A~+#wERn}=X)Lsp^!%k7Z@coH_yVaWnd`xCo8p~(bk=l{LH~1 zyMD_bzF$!8>r<_7H$T^Jf023(8)4owweRc{_oJw&u(_x2b$Z+ zZ@1~o4R*}PL{B(=4U+yY#Kupq>+-PrEfIi~ac{&rtS=GuAnkk3+2v~FCm-7-MWUxb z7-=d)VI>n#^2Y-JdeKX+TpWu+ zsl+oa;n1T_yfJ=Lah&3>XUCLYLNOD*2xfxt%S8C+&WgpW;$sKd<{v z335~)#*SFs{n_lB1nJ`7E{pv14or{B{q{}>%j+@b)?&NXSMwM62kw5_ntic`R_EIj z{vScdfNY1&KzP9d>;0T%&ecKym{6)Cv=Xuk#TlJq>2#018SV@l$qp!lwVK3- zB#C>gcmt9NtmBQ`-cksziE)_&oZT%2p>76!O z=-9Ljjz`5r`h<<;aSg@|YdJF?Ta5j)F>ms818>}`I8LC(C*|2)-x#RliApx|Ot1Pq;|PRB%dmf8 zV|yGA9(w$VEVKGa6@KQMq2&8SYQO5sf6FuBZYVT1Q8!#KN;md1;3~TzZxw>zvFHatWDc2&C-E$9KqO zJfx6%+Cs1|Ql5UkUKNkKEN)x|g?;K6>zsfq9s0GyrQEZsbop%VIUa{IhP`9gqj<1|z9Fc$4OW!^Io3#&AdDud z4I5f)bx-*G+4RO4MR?nt$A{(*x|&x17@f>~*<3sBN|hEZJJ=UL9@P~yF^yHpI$IHn>_oU{M~NVJ&?!I2eXv0Uq| z;+ph!!JV055#$_9G*$Y(G|4D%aY z42$Lvnn_so#eTQajO_CS`;N?5)6?a8&j_7>!FKJAN-!5UJIAciMqYTEC;0o*FZRy* zjNsXMbsalq=%o38@84v8{A8KHM~|*1UIXv`#?LW4G7-l zo&?3pesC~`4RO~SyCh`6b66)v9F}OsvG8(F9WBGH(yZz$bqR^t7$uDJosgTZU-ycy zyADGP!JOLa2#>G-!LU&3QT)={-~hyK03^);C~w7?@Z_{*ZnZNxdy$)^V<7twlZ#I_ zRSYz;p1G%Id2d<0CJ%teI@aYD@SfVr4*@bZG>nJ;J?-s&zDd~t$Nf4=6Dx|~W@=jl zMHMFwKJji#?mc^pe@LX(TaJSe=YR#5-M8yNUt1fcI@ePwrtusLb3O~(h`qG1|7ii9 zIpD?TT`3Oi*a#w99>~fx@g-`V$9vrJzz#*cC_K7eV(ON~EJM=(Z_P&Cj2lVV+aAH0 z2G%jT0rFa8SLYEf`@qp#8Y69OCuyzM9%3{z6d4&o#|ie$^0O8L5{l<%IpoOFG}1W! zRN@QRUsspFIXWai%SOa%dl~e$`+XHwpP)|{={qvbHz(^vwMjguy!AD{RBHU}xuY}M zG)Pg?aJ+jKq~g~f4TbN1-W@{}XiJ~+c|twtI>0x4qO(w(V5>7@FE$kyxR~w|c>NPC zf7Y4Gf7Tt%m6*B0C6_DWU8vByAxaxM_VWi<-^ZzJ3#t{a1jnbNDh3QxFJ~V8?}fTa z-`03t4kwzDnDh-VPNHkK-Q(+)4auH1iJ-M&2At9APre4jT~@&11gmPi(Kc zp#vCTU6Tt2CZ+_YW~Y+krPJ@m=4tjHya*@rJ%WL>UeDjKZ+OX%kk0I7D!&Oj_ppW< zvF7Tx_tW!C-Hh`>+bKWWuZZ(C1XI85;^&+(vUPm8Kkv#G#3%G+pZXLpJXrrIy6YI6 zede9PILM)PsC2Q~+B5oV_CldZ<_@@N=D>Hz{}lGtv^It)pXP zY;63v*lV~z0}Qi_sjuwr?C1KbLyh6tcfg3hQg6ynnnHuL=v``Y$m8voMkcev6YPURoIJYKK+oK75}@Vfn`VU-%)uGf~O8F=lZx>hd&h4`4{cU3UbmZU)bqsljqHALT$q?csuSpERcms;4 zB{?{!*EWt#Oi3q6C(FSSr<-Rp$~X|XA+_zWiyBZ29S}OX?EBGQqEsGQ$-BPj`U1`| zAK^h9r%8Q*9v$Djr>-}cHjf?@NS(^wLA<&rFO&W2M+2cb`aHjNGY^&cWZmp;1I6tJySWQf7ZdnmM_pJ!az4Kpjyw zR4dLP``ou{>m8XSk>>dxFzA>;=U;-855J&6*@q<$%cgwyz?P8@YY8i2U>RcJ<%L&2 zrSE#!mE)MjoAjKe7%XsP`au6Kqge z31956vy_D@Ub5*;cg=D>BHPI+kFdNlC4PJpFLx86f!m)9qQY!wxA#pR^VK=;=4e*e zT@i>^p*J@4s1%5Bvao%kT9_hL9EL=u=+a3?#~)@8T;w6htTcWRnlKrOW%tevBkbS{c!gEa~qJ4q@pcYaFXM_Hbw7bxBtA*T1$b|z4RCD8BnrC zEHfs5rD0qOt8)5irhPaOFzNR|rq+d}0PBYmX_X=* zkJ>t!DCC8#@ASc^q|iXxCWBm7Gfa)k*X-?1*pfO~)Zg!F5%-Lh5wTc%&nYu%%+EL* zKhDseexG;xpVb#u?lQSjbnuZ=WBgr&?s8=mn@VWWZ4+Zpm&9ukamC2?ku|WES1s_N zn7p-I46n13D}-`ml1vQh7?-SzDuofM6$OK1>c6yQmffspAjVEFeW?}s8oBFEV*l&TPEmz~;^Y5I@{q99EG z7@SM_!II%ZBrbalIof@lKZZi1CJ7g&m-<^qw##tfHxWn`#yhYm5!F@(3)^vWcHVV# zC1+J6c=>$q1fH&TCiaLG-$LEo{SrxQ|3Di--dM-xM>!cT#t*#6==D~T$+SHHN$k5<;{$#sdH=M~%x z&EvcJ;Ku+itl}!LonY0Do{W0JA@3ybKY6^Xl|>zJG$kX^XdfwtOqxq$_QRja;G786 zRM1B*WpZ6M>pcp36?xX>169s*Pz}!0n}VsL!%FWZl1=AQylN$f(>Q{tX%u8BG>B?p z>+n{gXh*%QLrL8!K`ioR?r}!Ch*n?mT0(q2ySx&{<6de6vFijO{4SMf#ZU|X9u^;~ zT+Yk3QRISJi!k4uwc~@lIhDnAZswid;i5o|`vXO++BJQs@gBXEViBHnu_4tA=1PEi zs!EZbja3|24bYBOd__=`GS;pa*}uE3YRLeCX6!pJuQTVpY=mr#-ypmhoG3rj>bh-kN$qwl_|vZ6JUc`2|}{SudQh#x$snReN7dUsQ2 zz>!1~WW+u?Ml1QAG;Lm^IqQ;Deo8_48>T7$Fo=1&8Ic&ldOpG|zQ(>-A)bs5nDw~9 zGVe_^&QGkS5ePjk@lnxRzLZuW7euY<&SGQf!>2kZjLy*R_RWlh0)D}y zsJ=36sq_RL6^cvqG}fAsR75XR0u2gPG6JTAY&&8#!Ar6bij3R0HH{fNEJ4Mrygf0!k+8d<>kET~gU;QJ=F(mz3xka5hYgNRROMyB z!$eYqbt!MDD3V^GN)asLq|riaCItvM6mf9*htX{@33O4bqFIUay3!L7z?FDDEUWQ! z5^`{F0}n+iR8AqopQ#T|kacXu!D4#nNISSeQA zOK`UUE$%J_iWPVF;$DioJAB*sz4w0qnVn=alTB96@A!EhJE>?bY5nMPa}*_uKVO*V zLL0}?bQ+)ToUk)z34hFnXkLqUU5NSAlYP(deNz_jw$3;E;1QI%42BYc*yNY{Y0sJ_ z8(*K+w+=7&U9W2|{Wcb2XaIpt>iwvj8F~?LG;`P^3lLFR=@SRwhj=}Z+_Ws|*(`8M zUM$|at(9FE2Ao40KPD%?(aIP!g(5e4F>3Ig_;4>mAc?XX6>zSM8AeqimZ$O2GG-wv zdh8d46gSHQ1p*q6ru<~RcwnR{)z2i;0j&Nd8f#=()L3q%ntpXy4EpG)D?yS(Zxpge zpbhpcO&Qb1DwG-`#cf<1tRGsF&~KPs$gJw&HtmfzYeEex8?Lle_WpoGpMRL|i#(cz zRaR+MKYm;T+Hh;!2)7$^2%2VJEpn1>SrrsvI7CF&mVHoPKq5RYR4o$pj>8)~Oo2X4 zthuKwpAAd)_Kvuc%Gj1WVI`T`R$Gbq9FAVnJXhz2K~Z7m<4-TL}`Q|RS>g4lPavS z4LX??lBxa{1oZI|y6%7QrI<^ctxTjT1?rx_=nTk#NO#6G7uo|336dbbj9HFJ}2(F0p<+I`~s6E9 z!mH!Gxgk&cwv&`HL*y_|40b!@t(h8E7fQ1D6jSnUN&nzm-^TvfXpY#nd*@AmUp@Bekr+Jb&mbo(2Lw1d4T zsF5u1>kIO>M34gk0inK%y3PV~VJ;!HjGA2oy#@9lQd{&_=BZ<^0~j|fG9(4AUxehi zaBU74vISQOQdS>OC`2gLq<^SO;c@UlWpcLLGO3MWN?@d;=L!|n6PC(PiWIJ&T2$t8 zEKnz^9uQ&(`C+xn23bjxFM7q z6!4ndOqsQT$^A{|k`60=G?cI^`;=~#;rJP+IToGG8FQ2Lw<{iGJuq&0hb~WxRMZF# z7LN7_H|A0N0-u(ChIAza9qA;w8uKaZ0{C%sF9A0vLj6@tDo2mE9^=g;KGipjRegS# z^72ZRED`FBzl3MfWQ4e6gxqOkVP1E|t)P2kqVYL6Yl6tdGT=h#I6$wM)KJ9MLf<@x zOs%}VW!g&WqY~*ODH%>aBuLjremJgP^SNEC`x9rNrBo{KR*qM>3j?8F^*CI6%!+Ir z7w))xe0JC@gPY?e}Sd#Q8;xsmVNU#d`^(TtZi2lN#+g_om{#ecsxn{j3Sx_lo99Z#9 zkLAWU=m>PKi)xPDxe7UKGEPl>`OPMm(sH!+Go)FSoku`f->u2l9@(VA`t*k6(;9@+ zt9_`bt>q3#1b;n7<=~t%w~}z4$a?;?Dj1p{f;pq4vYEwmD92nJ?x*#d znESd^plv>x$y&wbr45_8Q4le7`e%!~d<<}5UMTJD0Urxhu|P25K3E(!@`!8f9lv&t z^JOuU&VD7C0QhS}V>10i9&w-VFSM@CtU|+FtdukUboUa=$t-3`TJjr^c|w%Z8#(Je z6Qmr2*H|(}_B2PD*u|D~so&4n*slvSk7fMcZbZ&H2*4r1!A`B_X!cF0sd*N1HT`m5 zh%VR=$JMC&-F}3Yc09xEajwmf-wiUP;mBn`7(HZKnCkoQZO8FT>HXg$*r!tc_66Gs z5es%3224|;BHLh$)vZvW+KEExwlNviE*yw`50U1FEA{D&$lFD!C3kg`c}srf%?+Ub zb^1Mi%WMneMXKT&iRfYb-pD_m+R+~CLbnc^$&mxya5O3ZP-j?49@uxnAt5=yIw6|y?Moz=o{;s>f9504B{JVY}6 zo<|9?z=Sieq@SNA4|~8iGf8!m$0-bI3_5!}JgZS#p!%fINdiwlzA^8pQ$SF`yTQ9V zT=)kf=5ZA@T=XF(#^vp8ZM7mm z6~4p5s#TmBeUN)VARr_*U)^IDY;>^9>Bx?FkH;{=`aG6FG{cp_=a*H>h)-}d;H9!; zGcAYx>3g&T>2A#c>27Bg%a04l$rC3q#Y0yh2@v@OvK_A?<@UrF#Fpt>`CDZrC@n8E zIp9c$+j)|tH#$(Jb{>tD2X|}Wju>VboByc(a4}7TOhliO+U#`BnQQ|O|1g|&?f zs8C~KoV?7zr7o$HBYsDEqJxt^opF!Rb{q`1D)ZCE(s^oYXfi}zSQ}~CxSq95=Qn8o zjyz29npnH{o6Vx0X7WiFotRzDxhWbqN%(BywiQN?X$2*;Q?MGgcU?VkirCI%W^eZP zA!)kAPbG+iKFT(`*`)yJLh{qN(za^Zv1NULhKI5#JRdg8q{*QNYEV8`i0SZ~ozJ%# zDOvX+M2e5J7F&YNUR%hkaD6*0f>V`{DC|_e0RP0XkngM{rq4x?Z+0_=nO}3vP?rZh zaxOBkWn-Q0AGnQ@+1nj>jd%wP9E~^UDv=#`_yaD4Vk-G9hz7p43-wh-*isW%ZRz$o ziF7u<*J%>s9eA*R>v9Pv+_#xFnr-@Ch4M+wjO-+dHm zv01-At#ug!ZW-8GaaLI%Q0wirh`6dkF3opOOYrDNi5m= z*NoO|%9Fi;YFE|_^VP~6T+T_x$fd{RSDV*ZQ7)IQHwP_pU;7@vs7Ywq&{nx4c99o_ zxQ`IG?uye+n3z{F@5v4A->wzXFX2PSvIYB(v~c zuC-*;!o^7CxAq})9YQ!gqZ!q-P}H*GUAw>@1lB59zkL^J<*|B+47Hpdu6z{vz84kf zy`kM*=^IhZ>WJl7thY;lzIOkd=AIjdrRG)1ECyBzlvlXPv)M%*@hnX!OZ}M>#)UJ zz9@4F&`{?M#aK7j$z@4u>4W9vI3;r;!n*~fC!MbLFh`% zIpihO+|_Cj0K-g%w=4fch9RV$Mgd5j%c&Ei$I%X9wYr33&{t1IsOq86gxe%aoy}>4 zz&9M^$jf1&Elsn$Q}FVg&Z|IHblAgvitZUkfJii zio;w*1>5%()WI7_u)X+F{E0F!$Ivn;T57eL`Vb^)&tZpD<9#P%xfqE>bo4hN1q`K} zd?pFOVvT1dGGMvbMkD>^ZXb%V&#IxrsSutGNwH6X7!479Sq^G zQreUT#cD~Hq{vUh(<|XAspjm*Z-WdY)xlbCMW{Etnc3WG+6%t%sLCYS&zO(T__wppi(ylHeTbdnwT|`pEWh=-)8< zvlF^daFq1WNKi2N_TP;We{)d4A&^Fe%SwQIa`j|FAj7FST{B`5M8|I)=a){S~otQdC*6)!9VZKQ9P;dsz*^GNbg`J%!pP1*I$&Zw~vDV$Pey8yiuH+HZB z39lH{3Y?P{&Vr5R;M;W?ue5JTnw>w`q8G!I5T0`#Z*zRHyY{{IW3R9`S>4f5@L2a( zJQZGhyghDt@J75AN>@MdtM+pu+a;Dyta!d%-P!v4u(B0Von)qVAsv-*k?P2&Fch8{ z>8B8FiM&q4k_}ZE`eRPU^AhgdnQQ$0SGoD(vkejjoMHS#<{lpk zd2R)ixQZ7l(22h#a9}o8+PS}HhwtmlOT)Z&V_331(_`rEy3)3vHOlES&C2FG?bEHs%*`N=U%&;bB+e0T zG`uMqSo+K|sfzh{KT_kh2m-tKh!#v&3?-%cvnxVjP7$w*lHuTh?ffEuTN$iPCPj_6-Pwqw%u znsgtBCbhVF)J|MYn4?#-2`t;&un(kEzV3NGFuk-+rUtvD3_t#S%CrGvlyLX>NT$JZ6YeUsMl}uq*Ym&4q+l6u z!{?M;CW#up1SUp4F$Wm*xwYUTJrpZ2cQcl^i@D8W9+`uVZ$uyptlwJ8a=!2SvUlK> z>7r{lfAeaJTcrN+`0(bqe0NU2+OO{)_aZy@xYT3fs^M*HiOyx*c8LHCbw1?P7cF6sEK9 zkVncS(|FDp#hFyf6LO*PkM(qIunXF0?G7(UPEMk(PM(lf%;I%%X%y(fry$bgnl#N* zuHfQojxUMmBkxnFwKPQ}!!1Al#~S~0;r>%Uv?~mF`|nbmJGs2J1vE5fn5t*nwr04E zMq;0GW{;FgcDvnA7rV~R5KoDP+i|}dqCu)y3rx_es^F=0>I57oDh!2B4q6vK?ra~6 zkJmEKL)VmxYwoTrIZFitTpx9dAH2OEV#OzczuU`?`sewUA-umHu9KlcfS&L@wgo(- zL643{VTZM^W;XPe&d#=$Z|?Gg%Dl;UN*HBR-tBqi@(U5f{rn$Cz;Mv*iJ8SK;#e+j z-L}x|lag|Wb8z`_wy$Xsb_^QwE?S(B>zB5c{?a8l**G#YXIms|CMjFQ3RpW){m{Kk z=m!1bCIM$i+wBUBR#DqRQE(7)dk&Hb&87Vcbl$shf zbP{i{u#d-9+tx+zJ7dpH>7t?{cEI@RqmZu2BbKwIF(1xXZvnjK=ANFxdDi@&{~%I= zIYP_I)^vDoZa8Zj5lBz9tK6@B%F4RGdVgHSzibCGzQOhL74-nwFF;uLm&DU&{c%nI zdwp3MMs)=)UXHl^tq{97*nx(;N%BnP zn&~JPH}X6G=hE*RIfZZMm~Kd$vi%G~=3n=`VzV1PSHo5^HYTc-r}uXt&kTYx?i@mi ziCXUg_bauCt_1hC?l_nDUBKHGTcViz#GBui4vPH!?haHla7C+THqU%8iCY5LhS~24 zR=(DGnSzq|4T}pjtRR;tsGqn-GcwGO_lWcdf&?G=Urz`=JQ?fn2t<%c+}_Tld#1Wu z@NQM|G;j=euehZYRpo|}N!hD@YMnB_96w%ZZ4#q1`QW;yzK!I!2b za5l_T9lxvO|2!X%%)90pq+Q-e6(`gURQcZw)rUN-Z=yXM=aum0eK1Y+%HUJ?>DV9YHlD)X@1xL{l|}9fUvyT`ijVR;bc`dpiVp)zRKul_ta@ecRJlTc}y@`snhnbWherCv+pK1 zow8A0<~wi$0T1Ja5o@t-HIQl6LE48G8V;3dWl;9^=k82hbMjY24UKDZST}z>@gi zMi!z@cnWiQiPCyMXW+XlxW3)I+ddM3O-Db1g{gO_SNdzUxKq>73h_xv z&Aq(7xgE}Nh=`2$#}FY=I2|v!{ZIy$(!LuLJVIELfLA7o!6n}7nkR|f$2)iUu~fq!5hpFn&&ZiV*-hkTtWN9 z)~@<;jSu};V6*nN&hI>iZG2sAnFtH@9&FO(15QhucYR<=6jbVz(2r_m{OU=Qs$dLK z`_HH&uBkh!x#G6^M;+F|xpT^+XCSW*3Jw^M(D0QF8y~pwN1e!nAJiE9G%xZh5wkn< zNJyV%<5w5{AQ+emCYF&OljD>O%(u{9Weg)?6CP9NvHwl}{e41L*eFcGN$8|cSQx@r zZ_;@jdY2+g_la7s=P+4~TjhXyn&o}&z_|#Z8c#Z2{ef;b0(^Ya)t}eFAe(yqziiSW zA#m=eYfAZ3Vjr?VLi$WU<_h#8=h6VQVtoy*w*Vz3;930sO$kg6gSz!6XZgc8;4$@3 zG^=iAf6SRj>!J8-Yt`R~B&!#cQjA>GKmThZGh*ZZdK}^meU}rW6G0e$5rCQw9U%1~ zu2i?$b#Q)tzU2@QP$-_+d|dYl?CZNBNl&w`%F9ouU(cOjb2^@ub~p)0^8wg26MBk4 zshf4tZaplK?(&WF@m-JmDkjB1j+-4<_lVh|JUFF5F%?c*i<)mK*@ArR>koE5zR2p7 zbAN~xF1@cp&=;0vX852}W~YM~q@t>E@*#5JMR^-bRAz$D`8E(?-;dvExLfmf83`Bh zsRVB>w!>uax;)s_4LgQU(1;M1Hnl=;321Am1#)$g<@Pq;M`>iKr$wXkd}DlHn=6tw zMjF+~yy{Dk6pbkn$!i~tsE$m@0*-*0{$E@G?8He>f49AqA@zB}?3a-NZL1LiLT}4s zz_$xvdjR3ziu1|GWcBX3N`s-=Xpc3oFqB<3ioC&E985ES_mWuDKclQ{p~ZuD^@P)) z(V=kp&}n}f?k|n$_2E1LDIx6$=Xj>z0H6*58;LM8GZP&b$Hm3f6M}*Vu=rsAB~Jd` z7j?8$9|gcTs(-9hJpMRW>JnSaET0HV1`V)M9j!Dcm6j5XvN4+~W~9Xd)d#&^ta`v4 z;z$@hbo;2JSb3fjkdp2kc3hzX{Kf$>!ag@Z#)yNTa_59bWEk3288I#8^z;3b*BYNs z)FV3a??vlutKA#tEdPsifHu=VsBQWExJeUyI@#_w1fE*wL-F>jGkhIdT3y|}c!=A^ zEKQ)4mus4uKF07QivlQYiqKN9DSjrK06v|cYHQi^;5^K8Z(~d7VnbV#V?eWUC>G)N zqVRg_Xt@q%9~TEc+NPI5GesTetvD+D`>Esae!f(C*#mWf4thB=fU0#r-=jj%OZ~!y z^h|4ZFl;-%{=@fqC~UFLiwl9&D|l3i)5|%fN;$qP$}N(eI1*}HrC;`W zMHJ;VyS-`55P0|a|KVPCHaEae>_v4r7o!f4X5?d)m3;to55QqRH9voA5oe*;y|92! zr;_z&XDr<&9|~|s0Vjm0kQ;EkTkn2HMMtAvj;!Aa5b;z2bAKtPqOZb{c^l~+7fLtB z%VFw~*mTNHe+DuC@}6h;-RMam{yk`PV&Zbm=Tt3)WE5r9v34Uis-s4y{$?1GnbZ7K8JivY4n;X{AeXa4z<{0qmb40W%^*R@m z5pXC?I|F~2Oec6P#HNDAZikl4%;9s*S52}y6!_@DF6tLU#kTTiX^bGzH5Tvn%FEr6 zY`_O$jACcaFF|xdBh7Gkb=Sny;n7%z*D>&3<7vah#OkwuXct$pr@t4B%bbQA{MR;b z2%g~N$qF^^GoQK3U7SYYTTQrc+7M;-r5teIy5(_fl31i<#)fO;C3+^^h{~6RN zHaSGql()O%MxFeP>dA^{$`pBfuHJufQgZ5z53TRTE%h#fc1?cvFm;cmb3LU8TslJO z>g(?u%pQg#u07Uo`5mfcOWG+RLj6r1IX~UW16V=VfqrjOS&eoswukDo(#s32q=UBx zRH}p<$pqbfj~TT)5DwHE)*dm&3 z3u~a2g9GHHjYWN9HE-)y+WP)n!9}at5d3cQh~xToT)Y2%>w})c^pPwZzj}W2JHZKc zJx=EnAs4(V)f!Yp{o*f9`xn%G&8%K)~Nk0Q3#%-t?*j2K#S5r zMdR>1jM^y+t~gUncsHDrmNdvHwd!pU(|d>leI?Zt61d+d>{j>(y#za~$@DN$@T6pP zgr&3y6bts5{+@QMjJaHLE@hbMX{#vuA(}Wt1rxg-c9e|oHHXQ4CL918-e*T|h-WRH zp#GZtlf}hl+j=SVAyDB>R8H{3Cns#NX0dIOF8Uwz+!A_P_}FAO|I@-E)sSh|7C0aS z(#&uQqky#PfOmHUMX!(}1eiDMlsW=KeR@OQuFr zV5q3S@@}i|-yRt;n&vKMX6dI6rx!Ue=U^e+JuuA$a5GU!qp-wF-iLcaC%fRoNEe4` zGjt(Hb*9kdp@P1*_ok9oz7r@75<(aEjjJnGc0QNFAi|RJ`i@Sh^z<1o-G-2{(3%N4 zt2M#2l5T=z2MiJh2G25tX*s zK535D~;KwL5nFK$lhzV z9fFxK|E2`}WjHzsq_ZU{V9UxVgT=CT?O-_VSk`=i*+vWY{)*$M>@pK3adLeNlDtDpT5J6((x=uork89m|7X*fre^-9R7sXRGa`1%w1?=#-Z!29bK- zL4B%u(=NfFhhijPa(ggH!`|_IuzQ+wPEr-f;a?CKJuP0Np$qx40lfC3V-}7VI|g)L zJz^C_NN9rpe;93oS~(jxYT!jS$H}V`6gKx_zEry+!gkZeUyG3fX#~zsm zs#(uZf4eUH&?6A_QrfENIzOr?S6=JKeQ8PlbLU*)VpB*z0!>pp7u;5M5NMS*t8nS| zzS>T0I461|D1YWKaSzp+#480l%eXNNmqK2>*RE{C<^zGg<&}a8BB`3&z5$%(I2h|f zsF3k}M)_bO>M5~hwQL$StdON1C3HWv&99|lKFpFbWHNFNq&0(R9&!miO=@V{ENtpu zev;CvOYtQSevFtYf>D3;lDJ2{{B%{gI%i}uTkX$$qI+Fj-%ZDGG<$hMdf9(HTR(sL z##34kp%s6Gj_JC`de;>7x_A159&o9Ho@dQ^uJW>f%JCTFv9GW?q7F+93wFV`r_Z2~ z=j!#Yz;r_2dMmEOmz_rqav~>`?nFSO5HCd!{y>wyXc4qQ9S>ImiT4VV#8mx7@b!Aa zQ%p_+MxSeLrF;E8>^1z6r%{fcK~lz?*i+h)1l-L!;e65S(|X^3*m}M6J|p`C3k>B9 z;*KSS@A8&5=VnEu_+@QHGtZSX=?R8y< zIja)MD{B-y1#yJK>K^9n-QrxY1$of-DSRxW1YDQ($LbfTM_$kFQQmvH*X{L91M4Nt zwFHD1S^Bf9h}>NkO2RH|-#7K2Gk;}U0M>x!9JYFju`7f}rjV~(br=Sj47U0J8NHN~ z9*@4)oVrgQLrzt5gF8=Ml?1E=qG=*02atetB>*ZfS&7)BpQyfNoZuNx%R`Y~{Vi}G zRY?v&39a<}NUXOncOp(|VO)rgc%K8J2^R1VMsqu(z7qi1LFmHE=mg-Vhc|yvUW0ou5$Q93w|&6}i|Got zaE4c04WOdak*Iux*T*EZF;M2fjGH-x?71~Q9u5Gqa!Ny(2a@%hPfzFt+ zEm|}EpA>d*t?wEGE=U|$diHMoo)9`7-1Kqyg!G9jD(UQ02_8v3!PcbfvXQ&1IvryP z9<0;uNHU!^AygZ0Vb$=bAfByQ5ENHGX;pC77f86mBx4}xyU2!7{Y71TzFSCmKg@Wt zjoJcrmrkq#H0_-?)E5*_H5)27VNz~NQY0GnE9dfrcsVf^!|m(FwXMoV^vm(()6Y+L z&a8$_y=dk9XJ^zBrIrppB&1RtBvn zLW5KYta==64mDIMOr`<@*rgA2bLqwRX#bOhod!>Nm;^cLzn5*$(JW%53?>{*$E5CPw8v-gG8BCtfIS{e}3>M zAa37v&Xt0uKG$&pIu^>ko3#*YZ%!#ARb}ZYDws!gkw{ssBV(t+sqe_SEAnhZenC;{ zqB+>->XL9<9($eil)FEDzsfCVn$oN?UU6ThoUdo5)E!DGdoM|7w63ETIU7p0hEP!n z3N+T6n~)R#&NMI^(be*W6MhQ$^k}$FBj>XjjT{A^K_k>uo=*P=)YPwIXJS0YUH8AU~Puu>BMc8vke+{NPWpqVFjT%WEsJVa;_*e zuscDbwx)Dg88?1mNjGQd@Z?&erdxn+SRr}Od+99Ovf6IAF7HWb4+YrvtF^v?%W97sj=SsgEe9b?rb-Vl3)?2X3PEVFx$S0CeML-S=}P3Q)dBnFr&*`jx> zo=*xq1v*H`xk)KMhKb39%nwDH))*33Kp(O=b*BrEw3M}2;;H#phjXQ-KJB=sqz-cG zeq`H{2RMw%J`&`Uba~ho@Q(*h6LxKmu!dW-AIsGdhkRi=<6Yl*z1w}It20^cy5}|d zJ)u0h=__NxqcE#SS%PeVwkQ@Qkz)ISVX}Z8x#BRvia&Xm6)qBJ{E2`K;)pbE4z4Er zx+CK*%s#pyCW>*iC~pp+iyR=L948WKkn9KuyQXL)+Y?r07ks9#k5NKM~w_$v5pyYtJW0AI;T8b}H0)hwX_;9g2=fr83tadBq#p8rRetG28JlLE? z8`Z0&4HkfUjj_jD_JoO;u$o)GsMMQ;IQ}5ISF357Qa+S}zwnS8Hd=m4Vd}VHDAC_H z`tyI9ay&pl=>>4gtrP2oztenEdm4JZX7fC159q|++ImV}e;{goFnQ%-Rl?gVBfp9{ zU#Nbj$?~#cs%q+*5`7wIbz9=9MjB#JQVfpwZk zrxF_1lpQ%u<<6Ywe!&St>$HITi5Fhw%#N;r7Xx5MxgX(9CE$_G<(}*rr3(GSk0@4o zmHZ6z=F*`;jQmcyPAy@HSs6Gb+2p%PO4U3giDXM|zrcKdHruq^zNDhS0=yD%ycLTo zdYHA1XRztA+fH)%``J19F>qsG+2?R-P_PVD@i&xlJ@79Y%Qh5xSQ2PDjDV>g*unKXE^iG0YK4x z7tGdDUE8q z+70M!d^vi|=+N41>%o`Q)4z}*OTM&8I-AT_IpclZ>geZsqU6zG43<$giL@fVL;4J9tROnm*5?ExrB$ThydQsTp(#C2C-X{%p>b?7 zRfCZg``6xp{)-C`>8X-MbLDL>mhgcfIb_>7byOm;=*l;zHnxbvM(g({I4pW^X(Kc_ zI*4UlD6ZyG0W#q>OQ^v64(9ien?GJKI(jEBGXL@5*=qmoyc0>167q|otrM1A57D{r z2zXuo^t#+J9{L=2M&^Hv1W?@hXU7xH#hh+AKF3r~SEn}LbbH*JyxbY>^x*qBL=*W1 z3LBhmmdcWu`vS4NZk1BjZsr!<*Ni3^53dMHK&i1j%sXzbAvAE}2WyHRQ4u}Z5x!&?i-KuVtC{8j>XSrE<1TD)F5qmw;q+GfQIiHEUpR9;=3puuV2lKA~ zRK4X<_t5*s+Q9l;sNtOqXF@4bIAy1yHShJT@){n{Y>ChTxZ&T=Yt}b(I=nO1ALr8V zWMVG}v_NyGE2Dw-2zS$gejm*DN0prq7R<&o_T)ojPvC7E5 z`hH=4_i4E{B8*IEFw~98(~&>mhT4%#Wc27rNE<6-7?i(w+nIEPA8PKMNJeawv?pDk?3mW^>{z?VN1~SZt8KN!vdA*Rn+H}gl5-m&FjUdhp4Qqoa-~W94Js6whJ+l zvI|j_nnnR92$(wjlh9+syln9pC+ySeBP7^WCukRQl<-NKDKU>8UTqZQB1QfNnw&E{ z17K$p(DYuv4Smjk^Nmw{8KTo5w?4r?y9cv@1N=POT6@Q%kjn7GEYm`bJO3kmXoP|v z2>lMBi)~CW4ilHa!)1S#>^E0-TUJ)VI8k-$Xq%{4xVVn_=5=G8O_z|!(~!a5$=+7F z$qS`p8oK7uU`FBPk3|S&94q>FyZl~FVr_1DU%LL-+JI#NV}q8!nmK&iLTsXIr#>`~ zvtTiOVP;*c@K0ppv(YJueBv8YJ2bB>4gpSuO1*dp(+}h@NFqbhz|^Xd)zaP2FS~qV ze%~*WVdxy%c3@3DOza3mDjZg=E1h!1!{fr~Tz*$mvYs%E8P0fqc{6dOIP5eIBDLdv zD}}y<1MsR(Y|ihm-Ch@YUhhbXX z?|mKk0toR~+e1-|{bO|cX`S!U=Gp7G`bbv$sYLxkGZ*^kNEBSoa)cau;;l z268#ByK?q#P5v3r!-_Z$4OR|LVa1i=^; zBr$_amO3ZmW&0iVdPwoJczh=`j;)9)a1c3i31O!~^tV+2 zi(`4HY$r0YR2qTsJ!;M9Y(B z#^F-VRxYmnqz^d24?d!1?4=q~{LWKQlvLeYmIP{L;5x;L4W_xa9>o@^_&5JA@7z` zc?esh0eg{rBuD<>WRn0QIDlepIU6B;AV|4&03|SoWtJm#KI+Fq#^9Pl*p89!~-&8tAgMUsCC8N95xn;Zn_${xi z%>kea$Ye2R;rCW&-|So|>TYzP%F?hfI4S3&tmjiMK-J z^7W<8(9eo(B-=Zq<7H{}NOY-l0J-p&V8bTbKdT54403`8R?(@vJ~E+VbCZvi&}rVkLk6{kynVsCRsvY$Jjg2}8_69>F}x87)_Z@m75nCB|HdAFbi5U&6H&d63Y+iyW><~ z3bq5kgD5b3JI80hRIfQZV8TqW8nY|s)3=+{bN;l_7Dr2(j-eG6|9LB495mC zHp?`l=TWq!;kJa~Z3sI?=;yotr7S?FV(QyyK48}LK$ZR5!?8Ks**T_i;yId3xFuSq z>Z{jFv!ToEJ7(RcujA+=gRl2*d3KR8>*?j3)t$TUxfWX;$O0a>s}leiN8A8N`FMJ# z8{<>;~iEU^G1H8m43iz zo$SPU{|TX=hSldjmU#}x{%mIlQY5xc=N!iv$ipH|z9zQ1ALPgq^TM zFWBH{<+w9Q6dFrUcM${(K5&Y-&lExgAHNAW3!E=O$smttu1;j^Gpzl>U*isrv-6~M z)tFMGxWLTQBR6ONgNVmr_fnX_pD!_mzcGYxV!a(0#HZKCjS~Iw>lEC~ymx55 z*?lkcJj~Ot`L=X~`R6^?ivQNVqGDQw*UQ_R10>%+({=QQ*bMK+1qu+MtU<6H3dd(- zkM7s`uRdlOAm~6Txj>u&f4DsFuF-jS)dEay+qC5H3caYt1N5jopnunFJe*v*j@`VN;Gwr()8cAR)C3)l*Y z-gR^g*7*ptRP%4aq<&r=(_yDr?(%4VV)ls&J{0+kpc8N;voZ?I+-x+n>&Z@CMrTUSIU_VPEyvc<>$< zPD5^OK&=76_ML#8+7KS{l%=Mbohgu6SWVi? zE35nZJAcLcw&tMFdZE=!cn~tmX00Ls7_gg5zUPX|Z$$Db?@-5ogvV*=6F90;cB90_ zT130a!9LEhZFcxQ8oReGf}7HHcu&YP1)`SOM84hcX7@|gK#p@|?Lkk|88du`4ALnQ zvNq|QRdZLiXXg-@ z7j}`j+(dwTA>l3LftK^SV(|)s8rDc=H4@s!EiDx-p%6#2JGiD)vBKTkoT|JFS+t%! z>=<$4Mi-aTsgKhXH1^s9`u7?=TsDtQzF=gsB@O9J?yMST;jer$2Ke~%QDssY1vJUW zVG%Xd&BX+neD_>{X!b5bXIL-RshmGVsceqngKM^i zhRR3xe0t=_QC_Mj*D#*<=4{$!WYO3z!CiUd$*Y+BH+(__sI>)UbHxibG&sXAea&>p z;=L_l;BBH1uUrC1mZl<*K5~85@Bb0?mO*hn&)YXa7kAfP+%>qnI|O$P1Y2A}aCdjt zAVCt`-7Q#fcPF?!o8R|;*Hd-gEYwnmneLwH>7LJ3_6P`xWEan`Ct{w<9il1@O0@3f z`vm^O74lJ{>S3$Tp3Fg%Ui>*bR&eJr&3M0LB8<)gzl>Ed&si>(l|+4zj?yV6nmMa! zv(WvRztxW1N1v$O)M@Io(F%vC22J=W-ShftPrwX3Y64qP144pif6d6c8{^|SPuE1H zo1>W~?WA4feS4i5Pf$cy`DnYgVimP=&cn|yk7~gRm^9YUcSFlv8>&=@>ifUL;2)NM zQ7-i+D(6mA4Yz+^gzSxtEh45{`)B%K?3X&Dq<;^LXEbC86hukdv>#KQW%ZuU9jM2W zE*GG-cY2Zk^i6Nf*cwvW-CgGp?|04dWmxn*#dB!B;%8|y6UNWsONy9JZYPlF$5igO zC^Q+p{R(olC0XiQhfy-vmo4r_mN*skO1K*QbJiG~Kg$!+pj-pWqI~#+A@bPc@!q3>z28_5t(kr0_H*@i)gd-o9)FSV!w z7EDeNTuzuwM)MgIIPGF{_h;J?FIVslbEHm!n}_q|?GXuYOPn~M>g&O-ihN8Wks}hw zQ7%}l8Tz8gU8(|M>jNzt$ZFM+2Rvh2W-|Ees+W_MQ#C1Bk`?=4ys%;WNJ=8B?M&X8L;^9G}4tpD;D-+WU&jVzw}IBY5HLVu>^I|&|93;;bk|1kX*i{7GYZAw8YZb_MbD*XjxUl5@tFtan z@;;xKk_)q0r|1L~&4ILMicm)86YHEe0}2V*;4;CH5F$l(zG^%`7D-0K_L8qCh&aNh zlyjAiAWasDnvfpFNR~k^V%Q7mC|*u7_h-3#3cVJ8ozZNDd*RNSq>)JxQN&69R;K1| z1kX{S4n?~RqEfCSt)tRlGBPMBNp|8q6AEZEXn2dOqv%LFb$=FWx6|z~nGx~l!W($*irL|~n9nz7CS1zc_UU89khmn<#(cIhu?8EF zj75*DPUbjI7k_<5TsiCW!=$(mQ5ESDx&pVCZ@a*>6orRAhHD9|M_!~+2FeVr%Vl^( zDBXz+JeTMz9*E$v%|W<8vCUS+A(Z+a5o?~EV#EAnFnN{69tR#GNvZYdcmq1*T166nfoe_meh ztV3CMMOSEfBxsA*iTd(M+G$6q5 zlgKK3Pi^P|(E-Weiy^UB$?v-NrXUJWk^k-O#4gu&nT%|MXU`^ocy`a`=(=C%s|a<4 z)7wQSm!3^#-Zi6xpWZ$=uHmf2&lM z`yT%xHk+4wDOEICL6%UBVMulh)3X?7*DGLKvZE`A0`S#KJUq{Fzw0OS7lBp#Pb{Pt z9M{TPAoXx}xDte@GK^et@kD`0SrdNh5^d#+x4z-_5iw$RPj#MNspeRQu&GS3_Xhof z@|?@Jltf+x-PD4{V$Gv&uZ_;HkvO_rBUSkn`@P7*!&(j0F$FnHUY>AaF_f{m8GPfp zf1gKcvlRa5n=XXVUJcFyrIlceYgEq(3&!Zb6qzoZMD{4%jtI`|EqENb0G z)GHjlbxxZ$W=C-_?1A*n4m7O|PBaYFxy|?a-q%o{GQsAkoAi|!Kmsd?@d2cp*;YQY zR8p<^4e6^Nj+9u#GSw7BcumKyZ(R(dJudhgC*(}XQ$<~UyJ`SA00VPfKR8~JSs|5% zH-pkJqxeU8FZNiV0ZxBQ**OtTCA#fr$+`k2f#FpG{*k%~teACE1l741 z4?oPR5Cm#luaLS>=^~2bapxAv3U|-L4%*n2ye?wh-zs{)>C(osUDiQX?u^-A>YV%J z2Z<8vwnz?;lJg|70zQ(Z(bbPn?@&ur#-7(wL>E!J5KYjaYDf>0C`7}7sCxNPLg}y` zv}5H!!FR>#K-+{z0IB|{azQ(75@zYHtUWsZnm2Y{hchrq0ZyOi%Wfxr?q;_rs+w@# z#%l+hjYdJSi+o7W7?$Cdk#abHUi6T|Q>M#>fP^}qe%&x@17Z{je)t{@?CoCTlZwk|?J^SrZoXbnnUyEs`upYMc9NCLyyc?P)h!2%W6f5A580mT zda=Z={nw+9+Qu9y4R~MEH#ES6)LV@WlcfYpgUI)1CC`7P41DHoqtCr_hAw=PQDNW= zM@?Vq@TmcT_sKga**{bNclWX1ha9?ibFnu9jYy7OBI^%@CpqH3lv(UDclQb~QrD7> z2Md7Zh?O&pWsj_4>ZTo*-KwJf8*92KS7%4NETu8yS2oS5WZq;aIV%>%*Zrf8YOd5} zG?*haP@)ZeCK-`N&Uqop@~``RIU}1h0;o1=TB3omJ(6nfcZw7> zp_H~b;^U2IgCQK0v`uSpzBZRFH5{nvTj?btDT%43k~D$BDHk)Q8i&%c8Y{MnaMqOX zt%1CpviSxPnV$pa$GM)vr@tf}=ju;BCaYCg4%HOj`;!%sHCPM0OTovt!9_;BTSU+3 zT!(m^qIQCq%8gEw6q*Q=Xh7KE--QOzT)29ba&iiZ($PQgXyqwLI4UWXloyK`TV7M` z_*&GhNA9~u7BBn*3aX+xK1P!bbv^e|+n{J^l*LnH(T6LBmIP0o>~fU!{Vd6H!dMQ0GZ9CIo5OyYQJ1h?F9lJAX2Xt{SfiTGbl zge~#gs7@v(j~RH~SU;Z9)>vFQdhDQ+Z|jTbOYActQs2!tVWY~};9{4p=^)75om-6* ziEP3k?@tTaag^lpe>3&k}y-rPvvj07SVX~fjHGGelV;2S?tYG1LE@aHrbFI zNwzRI+Yni9P<Pul+Wx$^f_XXI^vtwLOJOoMOFz*&UMbIKMGlQ|(@5 zq=@<$i9OTgca#FIVzVACY3Yz8jFj05g{+tM;VSGshMm?;>v-wo{{(?$S)sh_C$1m< zs7)Hs==z)X>p0@851wYNE7&>-V&9>}+bR4}FXt`Ys=wPmtGm=9Y1_ip(>-pXsv)q@ z-fQ$i&hUStvN_#KvGyOV2_1ZZu>YoSKQbURU02t>6Rn?j|5qDWs2L+-6G z+PnTQnj7rJLrX_io|k2}AlY+aO_|l46e<$e+to2F zDFIg+ZOPKX0=DRNp@I_C+NMr6cG^qmTr{&muJXD=XQ&P3LFz4veT<_eu#1%mHW6tZ z2F;s6t4|{<>GK!EVepSzJY8ew0qn&L4cqhN;D>4Gr?$4{?ftm=+s#*!a)J7GNux@R zi)_wx9&4KH6+mwt zI=47{rZdV#hTLx+kYLTE-lwwEqb+#htf9fmEICRm4I5g#P;DyjmA%AoKXyaPd%P_u%7`T~t`0%k5|15sa zYtcxe9Rc`tJ@Za7``hc>_u*WIlpZ{98Jn0Y!hQq%;j(Ia|R00 za}OVm_Iky1#ju~^myk~22a|)9!`E0cIxrv zCgC5xGemV^!~mHuM@`jz-eaIqRypF%HGKAnzsngZd%J&+x$)sh6}rLN(5;VdNi&+v zXei|{DkULVA81|t)ZjH{6i=VA$ZO|J>&XH+_W1We0XI<~C-dvpdJ$r{M7D5x7Q871 z(*$by0mCtM);Ih{zLu2ay1sa6Ur*=CM{&q}&Of3(v#_+Dx(L@lh%?CL{H$f!8JJ(O zvBa*pAhuXJ|DY`FBS>!GN-D!Sabx$3^WgT;pyN{BDqAQ8pfZO~fbz%la|;bV8os5b zQX~+@EcPSKGn}|LlB09Kst)J_nb^>7#>>8=e{SiqG)yFPVfyC_PvtDms4F3QNNC*L z^6?+%ocfY)rNH|!bP7!7w`*Ct+7h2Z-kv*^l{`eI+moBQd#iwVnSgFQlKi{Q{HQ_j z0YXw4Nv{Xn9EAr0Qa; zEl#GRS6RZ;2bC*lb_WcU%~TS~BMc7TlNYvHrytsoZj4S30y}8&&qgPPk)qQm{tR(P za{@l}5)Pj6j!!4EWX^L4%Ms+RN^DF@xROq?$+R#lj7xv5?;#e7X zhAZsfVaM2S4WSENMmQ^tti3(XcyD zlAJfcde=N0PTVSOOnZDLUyJnW)^CV@#61`l;APRmuwXf^(UdBP2u zCtr8aTaN#DX&O#0C4|?!MN=*sjdvKoqp5WLAj9;)wv|Y=w!z$gg!|7!9Pyzi|DCJ* z4KRqw$+mm&ejjcub)v99nxU&dEar2Kcl5tu1Y98)I3Lk7bzbr4xSr%#j8e`FC#Wq5 zJ#+d0-Fsf*QI9W$3q!lu8j2GfO_s|uo1`zh%J3J-nd--_A5TEFH+`&B$_5Y8Q!z;F z)9XU#$jMhSNsE5RHEopA^XdgjFjK4H%ynZvlc;fFXwthW?}o;$iw6wqs$d1xrB<27 zyC?sJ6g^+>MTTcn9B1o=AZg%lj0w{z?6}utUJl>mJG*A5D^i2{LuHpd4arD#E6<&QHu;eqA(kX#b-J&&zm#{0aNF87=3T$kol?4YOxs*Rct(Zc&$G1z_i->K@?c`Qepp-k14kr?9jjaH8xiyX2vS&;gT-r`~B?CBMg^DDFwa4Uf>B_M6#r_ z@RXVm1IV^|sl6OchJuP@1 z^!-MFYa3FK+m3v%SPOVr9RDJw1zv`(%7FI zpP3Zlw?i-w$3+!fw$I?r=~pY5k{T>sMwmPkCcvV~y%%!xYb5d^neK$)y6ueMgg{GTEj6U>;G5A^(PkZ zCWI^>?X{9LRwnl}=bZ;EPn1)+9|df;F&E4*ZRq7BduD=G9#?ALP`_)BZ)I!HOs{Fd z;j;VMkUzVhZT(C$+7(?Z(n0_c56IAe&-F^|szT>{A5Y?~=z_V9?&+bl_j;9DK-X@* z9tErZ^+TD*i2;QL33y)T`gk^=qqW!N2x=dyq0{mPpGWuU$5BdfjGN#4=Y4cWP^O3d zCG;$3*M9Gr21M%n#hkTNZwnI^8x2wr;%cY7gO4tyGAEMpaJewtu(;psbGoi519eCpP_}nEP>&fK zj6J~R?M`T**G-_AUV09CK3_Lo&3?V=kvw8DZ2%axGgrA-8U_Du2JAFU1>S!_)<5N$<|XsP&B4+ zlncP06w>C^64dOa^UwuO%G(_ft|E>U02q-{NQa^fz$jd6T|n*yK%(dyJM`BAhB;Dw zp5S=TJ%2L$Yjn+EWc0lN_EvdL0fsJqKw<=tng7$WRI%#xpFBecUYfa@bSjBH7%xZ=q$p3zr(;#!Z`p=TOQ=3?yVpG1enVWp%L5#DMn zLwpkcYSwdLl{#lHc^T?Kt`kqjijS}*qaVncPf#-*IH>0-IEape1aFcMbSw3i+T~~H zBi6TITP1-Z-BBp3bm$^Z_@ufif^wKOv0Qi-!4mmwyL64eWyyh?mymQviDxr8N~j-)-K zz;L~!rXw&Lz{!uG>wIDz4H_(V;gu<5k&ZmK3`<8`?|R|c=APkSZi0<&aHZBny?a#4 zQ09|GN)ZXv_YKD-By($pT*tEU?RPIpRd<=<;$888i(%=e%S|BxQN-+zRE01*(w7O+ z3!KLS>ze_ntnBhBl?@cV*`*W@mU0b2&#-9$#-?$mv#N?yI54$WstO#EPI88pNGKUym~tu6wub5<_>wYVr06VNmdn#`!a-o9zh$;_kwR@2U9!0!NSA-Pp`qWpT6vNJB^;grGZD< zD~dly&$9{-A}cJ;xgu3if$;mCQ}_;Y29ni-u@UFWR79cVNH`tWb#EsWoy_~}*IQFy zV8Wax3w{pzTncMK8e}fxushdM7rLnXaO6R}!h7oN)uT7n?cc1{ss0EAXLH3G$RQ!3 z=FORMi7WW(6{hEQCp&xEm7~m$7#qZS`5_pBdd;Ve;&J&{5^hOsU4AU|dUyn4|9)by zh@fGIO9CM_nDHX##?W&Cqta5%J(?ta_D$9AI~(=eP7z~J;*@i ziqch7!39;ad;S&`&aJx!bihbN?<2~o7iucmo{<+6Q#5gq$RqyO6QoS{UuWHO*H1=^AR4I7iDHbENq2ca@FS>_)YXj6`3${~+f z5@+ZIK)xg>b~{_z?s5{FlI<7lD8{0>qRTe+A+!t)@Cs3yi!OsfJAi{(G{FAe_=^b6 z8Vj@=Ufh89Gy^=c{5MQE-k8rD?07+JfxQ+ujpR*{>TD*OsNwW{HiLK>c1UVvMdghb zGE%bWM!bz0yk{#~AEapI_jzF-u&{931 zaXb&g;|x>jkUyFgJ2e{1q7N3yva2ByQ|+y`IN4zJHBdb z?X-t_(|pYzhXH?pB#nNtZ>^BKjd0Iu-RxwOvZIK5#-yM33~#J*=QO9Z$Z2^l?jUf+ z5e!`qU-~QVQ=Vsp@Uo=>eq7cdTz(?i=(wOpBReYAq_>$r@ieA6w=Wp$1MtK)dkF4eNzIHq zTct0_9+yV5@&M6KAjfI{V*920f06y4Nkd)Qd{`jnt~DM?>uStf=2S8JlRV<;rWH|= zKTlw3vO&h}XfU;qgFxq@Y5R+#us8_8-xu9ZyVmM%1UrMvlw>Uj_qx5OyT|Wzqallw zxQT6+D_;SMZr%ZRg^1X6gc7~Ma>si=*PA2hsV%-&t&zxnqdo%y_0af!Ku2gEJkShH zjr)@l=H<}G1iBNZ{oUP+WrMpMe7~Lo`4od{zY}&EqK3}ti6E>4<*&A(3v+KmKpJ>%n-c>@p!tAU#Ps>@wOpN**&{g30|M9?fL0c{L9&W7R%pm@S(q)c*$ z^JWc#;bRG#Or){X>n$Yx-z;Hd%K{)<`u|#bp)S~@0^*5EOb$1Njfhu=K9|%DnpR86 z2Xyar6cyQ##7M)Cmh5^-6G@%^`IVcKwV2qCsaAYh)16KdAd`RP9B6kjPgw$MCmURB zGr#=H6oTk$kGMrs5@Q_uVT4U<>FZj>>`CS1Sq!^e*{~gQARCEU#nAP71h}lrPxj%U z7{X=@!Gb;&pu&V0kmKG8x!`7U|4?M_PXu^b+Hj;WCPDVZRDS0ZyD$lKp2I&JvR}Me z-*niPU2|(%fog%$(0(TfhfmAi$1-86>IoKsR-h~O#x`9j&$vr8OOjb$Py7#M$_nFc zuE4bMvjG(J`qQJbC3Y0RNW?KErNB6+0$EvYZCX}sNAM%QaUbNoNUkAVRWG3*vxd9> z*P`)3?fb!}Wj9T1zJPmn+8nnJc~7@r6qRLkU8Z0J-)FgrD&@yw6QnKg+B-9?a}D~G zK4tfjzyHN27_ycg5* zKqxy@B-LKZltJ;fFTi|A4S2_|Ux$$rdYf0;HsmspX-t)0fNfB|G8FN%amF>5vn=qb7CUh^09lf(ALrUp|RClud|}!y<*#% zgMOl=T(M*nBUB>P2Q!&3<$hjv`)m7QRSeKn6bbdG;i2cWg@I6&Ml2>4+v`5(d|`($ z>Y{*v)`P6xFz*5bfG9)o^aDU#G8upY5f3d+29*4m#HyB(4VZDOu?Ap~!+~@ZT`8#0 zLdqFb;en`n(&9KMg`#7%tY4#K4YfachL*r0YX26BOQMqdO8WtFDGL^QNwtfzI-CLo zgG-MJpiWRL>@C`0#+qK|)Y+ghJ~1f^1Hux0fM+l>&j&=_HO#p-fTQ2V3u>9M8%6aL zioYJ58({@>Y@ReBKc%d(bUmHCM;XKD9#W~fLG?VXQ0jMf+FrOMQoYN&`?Q5S{+fHZ z68Zalx~^n-`0w|-9%`c)CB^k_P_xgn9Y(AXbu0?sEvR^qFxMPttRS^$H5>r_6)<0O z&6qP-boJF^!zT>O%~q;V!VVG8`uahvoL?X8fhi)b5+8^G(&H!M2VFg^*`bgH{}x?S z;T(=8c%|&ZP~8rPX1J)3giXO4O`>{SJ8nu7MGAnm2nUcKGh<1cyNZ!f55h+t&xrLt ziMri+b}dR&d&G;Dh_ww*cQEVe!$^^d$L?_8!9ol&~ge&ew6ZPbS$qA-U9O_oj8XD_h zO2v%0E;XB%WR68Y!MbW}kGTzohF+PbGjU@&WQDREeQ_`$B04}ww?|-Q66lEhd&h5> zWxB>Djz7$1qG)R-l3)1x>;2@vF-{c0qVLY2QlSIlsDC!Y`6elk3JAvNC-C58K8}ud zWCTRuU}Z~SCWvE@fzv6t05S2T*~EeEF@QL9jZuPdX!&n+i0s>S;TS;J_VFvp@DHqH z9SZ!?i1pBzi0c%tX&5BhvfJw{_VmZ<5D~Hz=#8a{k<%)BQG;$a#G4&-LpU{=@ z7Jn@IZR3LDZbt#a*r;OHDLNu2?0Y*T$vQxv9@2OKaLBYGMGVQw(PhdqC!pbE=6XR;;9wOA&QpLu zHg~^({(oWk)V(1fh7d^@BiLZBU;@mV7)?So*ywVYeB(A@V7MAqpp0EaBC~5v-B%tq zBFdS7R3duVKv@78u=~-Q?Mt$^jY-b`LP8?d2zeYGkODK1UzUK<%lca)(J}%Mtc@1O z!QK_ggY+6+Apy%kIn9!I&twK^L8|YQ-AL>LhfEH_W3LJK!Y#b*e23h;CHey`^(b<%D(^u;y^-eqI^{qgxXYVm z_${#O9`B#dYBx}8?Hv+Ys7#V+gxTU&Z%n$kiC@TKj#o3BTEK^6=&UW^?N6ijPX7h?UQYiqF&oS@qxZOs&_GC%@f@ zt1W9y`oGiO3!nTR?H79nSU0|q*_}yDop$Yl8H1Pn)6UmU)<2d|SpORn?a@ueL|W}~ zg$7IvP@-j~;8b~KWKVt^IJUC#81cD@#DpFQV2|G;T+r%QRdFYm`q3s4OY1onmhXVf>#v|9f88!#ydF(TFhv!yCEzg9*aP+DCNwgd^}(Us8)a z@sBf9O4$|kak|>YPps2M7Mn5>Lkq1V@;1y5FIYK#Efj6R)foeuybmcb=%T~Qae5I~ zRg)%l)MQL7^Xuj*krN0=`onRZn-Z(b72>cz#A$CA*cWyTymwdv>EYDRQgJ?IVt~YL z&63@8F9{;n&;8GPpmv+q*`7tGw|YdP+-7pu-Urt{OBzoScgd-4_v9@jYs=Fw+s&VL z)J}cJp^E_*bS|zT$x_@stB8!Q`}zN6luL9x@9~gXJ6Jn|XWMh2#_X9^jk0Qhv>=+J zNU3$%o}fa6?eHOYlIAZO*ABX7Y)(bKuRp(nUlf)Vcs<$Z?4so^A|WH=|A9V;Q!ZE4 zM_};IJ%Z3&RbCxu`KwdIc?E9yf&YeYKJE?Xq~OP>XlfqERVZCm-8fC-4Nf2|ujny5 zM?=7gq)kXG*ED5p&PQ6Woe6xMw@aa#TSjTuAcoY#!Vz$7`=sQBhVY9;5DOY9+*^W> z5G7DHIa(6BPokmyYJqP-_&u8#89Xc5TqfTP3qC{{9+$A>5?x{;@GwoV(0B1ts(Mr{E)kQPdM z`SB(VG|%fb2&2_uwYlfz<;6iI(D9yuK*T+@>1~&~ z-X-JiTIk#{C0`G4RUVK@!7wqx$?D|k8ZourF=WMr7$--8Zx((tl{aMc23R@4GK66j z%wQ)G_=_TgaN_Ih3{y+#N%n}Bqz)BHz?j`o-rh4ZM{8Tf0)9R>WH?YIAgabw5xPN{ zn@9RoyHRYc1<=UCooWQw*cbKe&md;z zAU*0oaWjxRBe@hzvjisgk8Tsg&3M;i4O8763vQodRq6v3;v8@w6;s$i^`!!uDB3~5 zU_LZgD|Pi>7WHpQm`7r8s^Z&4-66w=!))@N?(V-Z3UdX|;E+N?Lodl9LA1e%XE{p6 z@fbb2VIv&TBLrlmJ!t%z9o$#?lceO29&K5=Eon-);wCmWfQsHljy7?Crscz+SQtVO zz7Mm0ForDjq+T$GWVf!ujQ#BR$pXC_UPf7^d^VUaL*$M`?_m?8NfP>K3|#S&p3}5E8Nn z=Pwvqh%6Yb$RpzG*F2`NX}t@Fr}w_qzE5Wz4>{$RCPh#_^wjGm z4JoJza4Fl{h}MB^0wY35Lx25&k^~-C$%ziis@Ai7JfSp#ho4=HT36qyD%ql9koN8| zHM6jv*g|pD$1=W~QP((@#Yw#T4amt*E3WkkM5}d7`0MRv_=(;bx?U$O1D8X_G7<(M zZ@a$$vBvl{yd{MUBwd)Os6>A75d(SOE|rbP5t*{*f*TW zc1W?TY>JJY4_ck`_i(}SY&G;Gn&*2*6fdpQEQnMx1ydpfBar~Qm%u{H%q=!HmjVQo z=AaL6&HpGol77tD)u@i3MJZd7p3c|*{Xn@0!ezjBeNN4({)p$eUaSG{`+N8>9Le{$ z1^cGb;O=iRR|9iXOQ;@@WIsZLBuGjwoG6(F{+{`mih6`RtOFI#=l$a#L=%ZnJlyxP zC#?N?R3SP}M8^hkNKjBvvUX7d5W)Ubpo9srdkj#Fbe;Z!Hf2eEC6ksG$inX| zVoudl^66`%Huyd zhA=eJef+KmIDLKnex0<}e?MB#`{$Oasi`{p`Uh&%pZ(Yf3^`O$lcUNvBZ_2rJGJc=zLig;8Sd%ovuTM% zGLx5oj&w5%NA&vC?N2Xz5H4oi2sd7n$P*Fc#LZX0FWc5*yp-&Ez0dz*g>T8k?F&4kHIhBcQ4AWVze}P< z-d%z)MUYHCg#JYf#~~^B4GI$|(c|!_gAJ!FMUpSxk1R%uU4A$WkI9NF1}KhlwGPu2 z1Y-b+EJ`3;Pz?_}HcN6-;23HN8W-dwy7jaQH+4d6b0TOc;#HriN=p_ZbiBEFgwM+< zV6t@%?Xj3fxS~hBgk(o#kusq0p-}uGP(Nx#F$502U~{^_+UtvZP|05wRiL35HDh$L zCWm@*YPz)!sTwr_@Nf*Oq|9D6bY#gH28kM@XREOA6W{sdnz`*f8<%tVr^(#HF7L20 zj|G6kH@w_R*u{D-g&0oM;)|_eRrwi&!H$we0*TvS7#ZS~B&6`SZao2WQ!cCP`|Gnv znE+XiBGqc=STf<>>M@a>27SLl>q&@w0W14&{e$fst?bV;>Ve7xs{9kO;f-!V)>9qw z-(S8xrdTEuVT6b&1fgK5AcSQvEYMA@ad8oWE~HH+@&MWVeeY(`XoOvJPa^5H@A0mZ20*T0tBXF zZNCKZIILPg=E@bt`Hps!KugFIh7W_XYP&nw|j_miJNqE zE(AIJe9<*^xWqOkbWbudh%w2>pM!?aVjwC%g8uaqZ&DvN(xC|**2)?kV}~y^Os3iQ zkwZX0;Q5vBo?{Yn{*&m)3dftYi`du%a~i|5ZsOn&8xwOu1?H+##ameeeT9<|>HpVE)jLW)} zpu|zg%gR=f%&b{pXeG}NdTxqcZ~dU7sdlGiYvcXky_@}>(EsnGRxs&8on%L(MAQ+uz ziCjZHlb!Cat$xqAuJ@xhdsHR_Yoz)u=j@-F?%m5Gj~`g0k-px)HN`-04LdW6Ghx7Mmsjy zFo&1Zh09|UQ-q2-T4W1Mk(Y9EDr$RKG%8M17d0K{f1XBSJ+5z^mC2qFji}G9o_}7| zHQL$SN>Vg5vigqfwL?)B*Q8_E+`GNa|3?&)TA7QFO=uuOI+o{0eW#=cr>a)0a_yAt z4HQD`IEUUXpWw%d(I>y`84^K`9@lk?d@A>jzL!zbXo7>K3d-THdG@m=Z33%0hI_Z; zgbb)!Efd!evS#G2UPI?EX+R*MP~aqWkV{lc$+O~kw#EJ>+vpzK2lr+5jOcchRl}no z243f5`tf6EyVv0v^C3b;6k%dZ%PX3JLxLelO8raMX}e#JTl} zwY*$e*Z4ALpCUO4_4t=Ln;14uD_#>SH5^w*e`R*J@R=j%4*rqf7IIBVVSkkkH&nEYEErruw> zD1${CX3ShIq9Ixa=GAK#W6xT;sdWtveFITxo{xL@d|zL9c^ua_uT#c64>B?`tlZpE zT3YxT7ZjD0&hDXeb8_~I;)J(*Lm-+9`&sQT*JJiyzOaA%IIysQ_x=#~K74zNBl0v8 zclg&wQ8D_T%EHFWeV3(~Ss?k#CIVzj=&;^CqM;%*P`$$Q_%eD>RqLpZLnsqRy8rLb z?#HZ%8Xo`giTnA>At{+#0%AumM(W=nDW0hM0?feC5sdHk2sH%hK5Vf){T z$H>TN(BcvTp{-n;<2*l^$je^>%`P7>Fss>(ydHIXC*kBx0a@Seoudzov#qYaVCVrW zzfB@%H}RUGfpLXN1$!SDX9E`t61^%VNdLCWo(8?5g?dZR+Vx!+S}v+*F{p2~B0 zoNd>%FtUS_L9{*m-M?pK<|E6?tzivI-}EJaP&y1uWEC7HHxGn6+Zt?_SHzK@lD`6z z<+us&SE@`}GPhg+fjMz&3dd)m#J#2};Q#;YS?Oqx{TZ9PPl!>$r7rT;$NMR=AdF!I zA=gF%R=UdYj~g#b)kq9QhX;v;kgRYy+urG-r0htgv0IwKa%AO8tdV{JorEE@8Z;0@ z=~kgfuGX8R&}TBe_0+*Yj?A!j9`k#^L<~CVa#i*1fp5OG#3SKf9SZt zz;~!`H+0!movdExVC}jFRsY%>oxoZfA1StQcR^x>Gf(0aeBDN|GiFjJ?CU8rw!9@; z)wjPKMDLQQYZ!>xbCVYu%%Yug_O?i#x>&XHwa8>6n9eZnX{|KcM8`S+b=0d|`nj$b z^ExGp`0Y@fJqxU!u}qVCqUG@S%6=SORbdIB_k0^jJ2H-0H9ol+yf-pGSl3E@4xk*0 ztv~0g_6?R^FP?EC_%dDDs~ZJbYr<4pr5u>=RF^SS^88Yddgthw!_der z8~8Srt<&2Py}*gfFw~5cI(T)j$o2b6VA z0HL_3oznOD!eyqV^>tHc=Kw*+X$Ozx_4TcavRGg|fw}wGkZ|b$*6IB~2gC($Ztfwv zGux-j*8k#@&qap}z%9>^{zSN2o<103*GpMTi;0EBtQsN|mH=VwPk;XDG+EcuBG=Xd z10ff0??xoa!Y$Sq7OgpGq*8;yUoa(HNP`5E!cjH7qGZt0zm)L5Wrubx9L`Z8c3r0jH#4OH?n8hbmyY*2 zT~MmU-3>L-8q$htxnn{P&vZfnk_qLgZ7Zkws*h=Ebr9un`3!I59(Py`Q{kU4C|I>1 z7HNxUS)enPE3AwtZ$zP)pJhPx`V9#mcVEnaTP!J`=uh{QHZUo?G=(O%IW*-2UW{~7 zOAhyq2hWjq7K%K9CaKHf{@W{GWl-7jG_mj7fS{>oFn%m)X_I@_y~qpfr``6eC(Ky# zEGt{FSvLWujrM+@yw$Rdsq5=J(lV44rdp=yjiZ?rTXR=wLTJn|j}Ose6(~nco-!ix zIJx?tYA<^_#&EU?8dOB2eo)K9SN(>CrQsh83uE&Nnm^O3SvL}c8{*!{7QBIWw~RV5 zUJb^W<}bT;Ll?vi<9)s5LlfaqJXa8YKgGJ=_qh!^m>bKB|FpstMw5}9Yw7KtjeNn> z(7_p@W4yl*lND~CE+KH9u#e< zTi;UG^XG|SLOKefxO55ORd5OjC=}5(L-e!Ei*_`%ey+6DqhSe;2H6>mjg2ueF`0ZB z_+H!5J3Wn|KELN2@(ttV>)!^9-nWll7gy^$*%I_2>{cSptz|YiknP~Pb)mfO{U1$v zOz|a=P)Mbb3+U@L#V#!lcTB2oOtcv%! zA?fsyBReNw-@_?EAvPbc(8wxt6c@Gomib%FGqi~BqvaFiz{x?@_ws=bDvTQolSq;^ zK`ISeN`(=PoL{t!wwbS~$LhlTDJQYY#*8$%gnASS_d^1F$^YAs6*ut5-#?Lb)r*h2 zXve9j9e*QosB?qdqqO4??i#<;KG28z|44i5sHplbY?zRg7(y68dPwPRkPcB=8l4W?7HD&;Xg5tn;cvG>h zfxY*;qurNHr0aWc>`}P*4uSB9)mAC`FB)Os`61Sk$%M&tQ4R?Yk2t^M9Fw?R z#JHEFqLNk{Y}CKw8uCfF67pDtggTl-N6d-HI89Irh*E?ULs;qwc;|KmOq`yzNuk@t z3a#yR7>UVW1qAHx?=LnvCt1yw8bY zN8`uSAOv7V;AUS8^8kic`loPnRd+CmWjA({EVt>5+64;t^_rMB6hyu190Sn~D zb7j64haDc;3{(T8VPL5*C+DQ=aijOcbLn1bKIc7r-trYHAjbmsm`zMfNWhP_b|DmT za-HX7Pg}BsF|O`xTuSV5!rF6S~Z?)Q4cW#oJw+edOPxuatEd^f>O zjc0Hq(RAxtOFv8K$HowtP~#g<`Lw{Z<6dN;cUT1F7Pnq%@zg92+!5GJF!(GBODe+pGA;u|VEc zt4Ow}^nv<6e@<>|^F8&_h$5v$m*Q6&6ZJ@boC5uZY4BAx1cB9xCUQK*!YV!T;KXrr z;UFrE)@D0zBdfjl;PxkT)f!*Be&LGwHceV!%fivpA`N;GM98-;LFDg|A>$d*XBaww zha^i5q%#V4Q!sun4XS%|!sCh@MMTBmOL!avQu1Gq>pWI2ZL4D`@7*r%8D{Fse=|l$ zMS-8OxVBhuP&H$$!wcja8(n~;X7b}x`wI#W&^)W6_Q`Up2?7dLo#(W)w;ndRrRiv| zCy!ghD(0D5@6ZM?0(O3zKGzKjrC}MQbWaa2GCWO@Qd({4#eNxq;fET5#XGJpm#}@E z;l|?Q9@FfCZGU#bFp?=U1dT*Whw;%^6#K#u7+xfBHGsw}(?(`^vRJLz7Sq=cp4(06 zKj{ptncplA7B+aCJGM2rMXyzT=pjLBTcnsp64dfjCfM-3lJ0I@sJ}Uw*K_*zwW(tv z47`~u&8aONlWh0^l)V8&NfeF^2hQ=H~ap zOmT+pe1)VPn1@9fpQ}aUtbtF4MoIsVA5?@a`bGer?PxxFwsh=m$BPGDpNF!3RjGou z28gYt(@Fb5qc%6WN3sM*`%dWJm+O8oHm1H@0wR$cMA^UoCkVtY4Q%yv+s<&geuTA; zJ_jm92M0{RcBF`ih|0#s{!yPt$IqWX_f@aQG>f zH%VmwwY<75`k)g(@oS)l?Fq@v7P#4KrI?Zk{n1a`19wczETP_F^n%vTG_RgJ(z8=E z;No=X>;#iNZB}eCa0JC>8onBM9qmW9Rrqv%tTaxQvpNqg8DeGrmMe7~W=J~oN__V8 zch<6L!^g^2krbX%o6>XGlMUWdRp8F`D(_R*bP>_T?c&q)s6`jnlFiTPr{0yxT~_Km zqsrDFJ`WX78P(vmQE%7Sg{%i=avvd--_-XzWoQ73)Dc3yB#thnhHmHOp8Ibh4Da0m zOdZ2Dm1H5g_?@8Lcm~-|Hz^H264JHhR}!T{lOGPeLr#Ni&h)=T`+-TNHe>YJ`Y?6y z6hC8OPG%8zZz1Ww+QTmdws3oX$oTHD|Ax6VcMx9VxzpD^l=6XacacIWNd_FUK>I*c zdCSi;iJEhZ>)mm2x~=w+%~mCSMg-$W#t{%ZjLDZI+t=f{rL1~C_x(FZcxD8Qm`+8g zB0G|7v{9l@GLka4e>Y;)A1`itjEW967E)KScYcw`^}KqNYVz)|KP6Cb^P>Wm4Ta$q zzEioXkI@Pr@ThaC`>IW)9`&4NJiLj^=Hf!quRc>q%r;ex5jTkTHY_6&6DuoYtMPm^ z<{hcIkx3}ODc>iH;5lkK&H01enwQ5^IEoj3{d2}G7e*U1Wl~#7ybfC7;;#@8j%gN1 zU^g3k>dUS-T&%6Pxa3QTCO8KjDqLw1wdgxMp&VoT7YsdS{2re>GV(=UDOja@?5cm3 z@9paY1FpmK`n1>D7OEOF54j0LF?M$rbd&v_38t5qtj{JElgdmWV%ax5LkdI zQ!)EH09(Wmz~?{+Gul0L(qEndD%yQ_>=gk6{NBm(6xi zeFlO9sjqtDOl~TURNlMD_)9=U9;EwU512e`$ z#ZV1vY5Ag`!xJH?SVqM1t)a0`9A0#|=Y*I!qU!L+Ct7@@_dq-`4D517b_$Rx_P4E< zfaF9%h~JqCi@TNUwsoaYzsntZEuULiHylD(@gab=!F?9WgODZvr+oeAPd^?r0z3#e zA_;IdMe>=C!RbO{W`828ROk?3Au)9&x5Ew<0)%%XhxE{BzjOi~G;D_lK4qsgnOsY~pi*eYUpkrFpgGhIFTvE7l z;Mgx=Wf`Z9ojq}#}Q9sZEKLf;M~yayxI~-(jfe$rJrL?9pK$R zWD<86+03-qHnJrhy^yuNlcJ3LI`<4&YMjoZyXOIzdt5a*uYnTq`>~Zo7vHNO_(jH% zKvKmsX&LOCD&5-+FG=%`D823Z=~pi^g?&|!mdnr9?trz?ThD4_-l<^TF1GRZ&dl(f zegiqhLZb1+S07+2+eb^ycO>U`4c`X|Rg{Pc5R9n#35xCk<6RAgosM#O~@XHc2d`hhlo?Akh2 z*0h>j;u1V?iMVA0Fr#)zT}0Zu>MSOcFh%C(B%5%v{Fbk}3f6C@-!T+p5WYGXcu81S z4|Z|^&tkpeN@{PAFcXygK8~9c%{RMwR+#lw?(2l1P5+W$eS^osjN=bWFIE?-~x$m<6@_VaLxb&itr~))b6Vh^K7OW zoj31dcp>5ScGdiLMV{nDG}0uss7^Dp*REEGn+owKYU)X8^|tJG&nVS&wT`o)KL$zD zo#|H~JMi^D4dZnA<&P`0XVz*hPp351L)l2KIz|z+O(&P`>2k52k?~<*>cPR1(u&!9 z9b=Pr(R`4RPu#RW3w!tQme8gh-$yjtdeK+jT#~#G#}>mor18y4ty* zNz33qLHn3HFs(MdG7j6IqASt<0_c>LybS z*Rg&{X6jMuM`EdjwW;P@i;d$;Q6)fu8VZgXVQ>04zCao_tyn-ifn&X03O)slK!tji)1O^xKa&$LW`=&qCKMcZyB{qdplrad20tVItdg4_C{A~g~8UDG3FbJ3P5 zgP!GoFO?|i>%bh-_@@50;2EOMIJsmkk23|=D69lMMRTo83SDjp6B#r?9WNG+0kZ|=BqhOy163Xt7&711uSeIA8C;KAyJm{lE z%ekic_<*4vscsBIa15kfRb9Q=O5;+&hLxhB7hID?gBFdAb%gW+Hj{Vd{^`hOXa#5q zhQYk+CU?hd>)CtY!iqnsP5b81|5{v>WVnQ`?k#I;Cz|rTx2ts-!2v+f)^^&h^o1u+ zQq4&0vd(;rKX%S1^KYNVm_AXIcYC{N5eWt|eSY7$XFGQ1@~H3?pEkV5TqZ?+foKt% z`~fyTY`|u!H|(zYpp6Nt3@eP!@m@nMLxcB+Gv!*I#{0GUQd)`;d%&a%goE=bH?;E` zq-*v2OZt2YFv13{DYZN^@`Bh+n*Oif%p#N3sZ|Ul|=CJ6DY2#M^fw6^zd= znN#@;LEHbFw3KyBOAPr-eVDv27b3?bMDlege2P4X=3kF&L$SABDWzsXzQ3G=fNowC zNCysW%W158YwVad{$@3VBwhk3Kw7$w(|^X9AlJoYW@1l+Yaa1UJrxNbhYl{%1+jDD zxW1w;!=59uP`rkr;3-KgHtl~;aNmYLk>tKTj^rc0$A_KBlIM11sA} z9-_Sd_8M6RjtPh6HDT1w3#!yxurxdZ2?B?jBt&^z*5)fCg;4+)SVOGD5TUHOAVKj( z927*sN-RqWV$Z=*OXzJvr{1%aV6jkoAM3rnrO?o?U^w7~E*L(vVeIB8yFP8$}{{_oz~ zVvsnVknck4s(>z0C~ENd1eND&2vvd%2gU7-?Ny;f!R&6k00|RyH^?i6^Bc2XYDAaf z%&SOxW}Me6nvXtLN45M>`)@AppO{j#NC*&~p&ki#OF^Iup9XE4@1i^kJlv^h%|sSF z14-EJ1dc8;KEj+Ajx=-9EfjmY3Y!p z)Oz}P`ZhnZ%owIMeZOwDk|KHnC$Kk-zbdPYb2bGN5mGF%tP1G|jkA7@WBaNWKuY=X z!y;oOUx$-%B(vVAJkJ{|ei>|m`SKB8ZNs?;wgbZy{#5VKvBd!%k4V8AmWd-q9_M&= znoFDsf)Cjy;jc6`Edu0Fhiy!TW8IsFTQ{-F+%c01ip(NyN=leQ2!fiC%H?E(!NvSr zO_}f|yLInB7@|(ID3#IDaz}*FkX>kp;H(d`NT3xB7E@&Q7UCrjE8}Izp6bnd82Um6dQbu7vBw(g#;Jd5s9m3poqBz zaj3INT;5qdxH>t%VHb;V%~$G)1u2W+aL4R%kIS$mJTvX}wiE$99gNEh6^)-nH-ERJ^5~dzt5%91>Y?GeY%3 z9QD+-FSG?TS|vIIzROX>Y?tv#3ORO|j1m!z3ORn*k2E__4RiGcv1Qd6=C|A%g zxl>z~NDe(wy#p)q?CkXCly+FZns*!-msh@Gy%W05Bgre!9UeH zXLhZ&8*1V|-EZI!7lhQK-Pta$-%nB5wE&CnOQkReGrr4}FD6T1A8cHYKOD?i-b^=> z*9Zu{OC_FhFTudF+3xz%8iAb`Ukh$@3rd^B{^fka76Pp5?)TUj5Fv?Z;dDwoM zRNJndB&za_qrbP$BX}lvq2>5eB1S9^B<}gtpT_~*(>oeG;XF*I86&>P^oJ9@qjD+l z>xtJrGWD_MsSnh6Tqq&n8hELmUv+48k&zrz#dwzX+qcXG1q5JHa$_UU!0|E(uIfO- zw=DxzOF9-jX+>P7))dD3SELx&^a7OC&h`<^xru&N0*Dg17&hY(k;leG8nI?!Ydsou zZz4E2IK*Q$Ypw`R7A^;tx|d1yVjBo{ zKI&0NU~)B{_VbrBm7exkHGf|aK#6Ycy8@_WM8(GacbvW4auKz(pB=2XLE9ppNrRI% z`tF;iSCLb5ZC?Hg=01bdDNV3a;Y* z8lSE|nS8itNnkW6sI0}^Bs7J4F#5B}qA-l%FoRV&t>wqJRuphmc&U?6_@rLl(Q@aJ zQA)m1V0t_`DVb?;5$DeK^>m}){m(SJ^?~L^{VU0&N|*ON^SX!`i@#@|uF!lgf6gjH zpCueZdZLL|>JpwV%g9eyfo)P%6H!79?s4mTnDY*V)TVO!@fg;mbVHAsg4ph^o2Pad z6Pg+8K&B$6tf|j8{)6xp#B^l%{MgZF3(n_hfR8(^%AZbdKY52}xh>7;NJ#b2x6vc* zstPe;;l<;jfsY@IA@^rVCD))>*~o)_@Mq!R`h)BkezU@(N!0)*XM{T!+szf$rL{-h z&Xp(D!YU3o_5aEY5SK6|Q92;M%(t{OTQ({$`ki~mRV(a`U~ErU;Vap7Q4aPC;2OvJ zcSXm9jH2U|S@6Vl%A zOiS}EE{M;%2{FGxsHs14bYn0-dmBb7JY4RFglmwkCXPYF4uD`xB8d=Mr008MCF#FJ zd!X1p!*2xh8>fCxbzo`Ng%fM%F6bCfYe~BtZeCb zT|U51*=5rp`Dsnk73_bzN`O4gNZ1s!cA9&CJw5qG@!^$uMID1Prm!<%!pMheWqp1& z@c|H2LwusBhKpAswcy!wjw-$;jUw{Dng|H13l?Bvk4_or%4kaL&O>u6W`t{2p0$lV z+x*gJ|9Ea|Hd%)O%=anm3p1MtM;IA#{?<$LLbE=FpXJ&awoE6Mp#jvt-&8Dh!-$z~ zSr8A?Z@%HZ!I;%*agON(Ho}ROb&f?bcP$eS%xcMUTYgM!hG~HLTB4bC_N>XXI)>A! zX+4tpoRV7wg{Rq9#Q8$Ee;WH&Ha?fw>m1j7u&n;cMNKdyRepj zHAgmvhY!)>-Cqw=n@Ej_YyDnrqaD^BxZdG;8;Q?Hd@%1EI^?p;!pg>Jz~;P<>}bYX zkug8I?;+jjaf}t7p{(!on?kPU=iaBDwhRf3*(N6DQBJ|!9VUa#qw4iO?5OjJZ%eg_ zc8<1`bR{;XD~|$NSi_`0BQSiw@Hd1iqtPQ(^8n}SuW}028%1=1dD~#iqHEN+Ik@8L zU*s8rW^SKHqfusJ#zq06UjMF!k0e*q{oqmWR_GNCrjFw+Kgl{2WGXK`T|O2ybahSc zf-sfW5@lLASnVNe6Ggog>8rg=f7(E_TzXOM#|)0MU%T&pGd#*>EMmCeDjyN1kW^mj zXpU0GeE7EWlScx!=xtzkkZBJ2#$rnJFJAqh^AXe2+*{k*ZpTY7qL-z{f3>z5&4JA1JQrRDp1_}#uznEJp` zWkvr&OJ93^C*T5iuYHcIiKhzj+YO07cGv#uo$x0SVRG@)ZY_eC<8+ZwLVf zl6jC-oZ}9}xUBidzyNU@(}`*HPve?{d6ALF@rdplqNC+BqYvu87fQNPq%0ZeXFHAQ z51F!tUHYm8*ndoy@b-D|&s(6AH}Evd!$Sz+G7Fi44?^N6Cg8OgG2c& z=iq>rR>@b2sRc~K%f=2{SaLb^XD@?j`iU3Y_`gi!l zRic}k(hWvr`3hl9)Y#I}1!hmNDdUJIt-ek}ozHCHWWJaG9_f?DDG=lu zD~?L?df54F4u5@)3jQr{^xn~scMuBiK_g`4r-<((a!q0j345{FcS{WeWxj}0$afl7sn%}{1GuKC8#j#0kZX|a zBr);m+1@9g8DMx!J`>Y&{Wwo2EE*GEz{UZBdgVYjA z3@2acbWZls43#}Qq4OqmoFErde!qBsTT0)!Ny+q3SU7n_FRX(%(}FAs)? z^DTowqXcOGv1;8#7AD-NejLQ59GVDu-16HeQdlBiXE<8UrxK{2AuiW!$+I~-VXSsS zu%dgD(0H8bjoFD?VBp+J4IFmHA7j<43ab zi$F@HE?9X1{{~W{xtARU&_wMr=~#%Sm1%~=X=`?T4wC}VTqdOqGM2Pr&U#0gNs0SU zpoR11nSp@yd>*|5$03@03^)=-qh&@P{xS_9ZYcnh1@Y(eT=T1%D4IfFHRpYd9IN@o zRXM{@REQ?8p25AXt8Po@Ui&GJHs1+8|HXWPWD=fu2Uto&;e^Gotf0@al&r%H`M9{l zyu(=CUnMw)z9^pvCmLq@!g{K}T@+Iq(N#Qx4`_xgWqfYMG{T>b%}3r>jd5IDk^erv zTp|ZAG!slcBQE(ZB7b&RuD09qHu8>970RTLo%)f)iDDQ-q|3Xqj-tqyhXI5(ZX8N) z$|K+QZ)D`!R*DiHmXpmi7l9f`QF4Sp)bO&1c!b^G z#kyrAkDJO$az&hhLV!zs?tKwL4$JjkV0>8}W%k{)r}z}TO6XUM4iu`@-3kYUJPkar zFB)oo${neJeZ)$L8F&)v?mWR_mUuhIh)7-D-w7t|uJJlw;UkB3?TpX+qNul`t8UtP z=VQeDYX-M_-Lvdl4I0|ozFpvT!~8tSf?TiqbF}`?5a+J~6bAn_i~ow`Ki9v*{Hp=~ zyx70Sg81)=_;c0&ep`qe(g8Fy0{_#+NzrqihyD7$KU)|4kaYnMeCsOGFV+I&JmUtR z3>NRT8{5$-yLb!ZWABPU>y35Z*lO~^Yt%TvOFZ)Z4etNH-r@gvV^>RAU)BG<(?9of zI`tLqU)TEIpRIqV1gu%67P=LlxGylLfTY-YeOlsCIQ>ZU1w1(gW59XUEqtUh+JH>N z)w6{63q1{|$AaHFu4!X<{E&-6qi~|B;J&!TKdbB~=bsF@8yQ*S&z~anp6eP z$i=zW<65Kw8Fv`Ic0&!$MnJ|S7Wb7T%2AFVi3z-Ro4TUp;SJ<{Vrui+&-i{h8l~$& z*>!Gq4#8d}!DO@{qu0i^9WWuK?5eSD9R`bEhojW+*2`=zGX%Qod)|mNEoa`>l^z>d zwT_#W9ku&`5P;hfydIARI{9Fa&*Sdf%ES({1fn2vC(D51YlpK-Kh^<eTex{9@ z3ftd8dhlnSg6Z?wdO(2PqCRv4UWPz+iIFl>dD^=E7q)G1Mf~0MdV9!o<=liHcm7?( zxM}Oc7TmICI&a<_P*~AiSIV2Audd}w@g|i$6kra898pV$2D1pKSA5t3wMf87x}}li z7ff6$-%7u|Penfai5%OmJ0po;vl7Yr!~%&^MLlh~KHG?rd1$8gDFJlgC9k@w8gFV3ybf>xG&(b`Mx@Hek#;ZcI<0cKd_{K;HaM*fTqi^p+sV+y zS*lUO&Qq5F&}q+FDCA;8cr<4fVuT`iQddh1&B>@gdVQrvfjQV4p_IkIZ-q-G9)ESW%+P-QF(5pKDbZTcK9Dz>m+z_BXS?Ue z>?pjho#xMNt3=__`2IM0yE7s8U(ST$q2^0l9xJ>Iur@c3Mmu!MOuDq1)%K4%Ugz2$ zfzKs$Tlb2=hDEMf4Lr|WU$j7lPnJcEWtqL!X>^gUS*I5;GPVK5e86Zd+d z`y^hznZ7*lua3x}Z&MO@4;-%Fe^p*i-E8Zf&n+H6LTbO?WF;aeH#RZZ_@-mfE+SVr zc{A`ki#4#^0p1c($MvDYyXWx>i_7Rchx5;0?DAV0w&7Z<+!BvQz1N^V*7jG*BtzK4 z)si^r($g3oFtQKFGXyn`St|HsZ_p{nUJ`BZR2?n~J_*_~-GPH;&vbnor$NgqB9n{tSw^1T;vB6rrSUdP0=L1Q!? zUCT`us0(`MbEEKhGDr0m(@>&wX|!BX3j6jIoSN z$dXI4)3-c9m$b$a#$Tjduo#`EUX-YlLbZOCU@loxx0J|(%98?o+0{LhPq*4!eO}h{Mx*zhgwE9U{mCew)F>Z zQ~CBSSe>-AS~`uYg1(V@@Wp@LNk;y#3GY@H1WiDi>hq>OK+k{vW~o(*j>{tOWj?i@ zp3I$0mL7eZEb<0mF@duXN870g7_`;qBcE5$wsc(IAK*wHKfg|mr<=X1KYUE%-}=@O zl%ooz&=hqpftWI#5M_7a8iU_nm-CmamSq~b^ou?7$);MuSr9Z4d=R(kZhtkg z=^VABj1gzNO1x>K!%}P)u0Nf$R7BI0qa3QA%|g#yjX5u`-P?)%OP-$Jf7DMOaG&cb zYTWbQu;vwZHnxtlGmd4C#H1wA6{E>iIQ6xeiqGqVV0Hk??wux%uvvLMk+HQkZHmeu zJe!~JY-V0~z+%qr8uD~qlcbrPNqbBmeD#D`2J`Ohe#hy3Ci;ZW>FhhY!6vzPOY~+!^M;iNSkN^d`{@RT(dHD|%A98;{U&{&Uc9X#A)rihXE zQlnW#DWnzaXKAK5w5Bxw=c`ARkc3LAq4EqsD5|9Ri#5z&n|Tvh8k#QZ^TD_bs5G7! za5lCOZ|4v%hdCHGL*(cOW4-RK*m-z@*@N|2&E4Ho0UA?eZvw*h^QH{4^K%7&EuI^1 zfKnVo8_r6VAI_#XhX3=Z;lk|DOjy|}$`U3w{d%#%gtclE4+PqxJ z>BA6=F_!O+clLmQ<^1&@m5M8#GwF>cHwRwuPtPnw4!~TonI9UP=DjVbOEA!Lg$E>? z22`xLK5X)2EapI|*!{AL;Xbx<4?XXFr(&12&D-84Nydb7E$X)4P1xXg3D1J|#-P2w zmt5EQASmgkx1H4Vy;U;MGubq`&F6Te81++B*l%}v?LkzR^3=uE=4r*@q8o3B zXa~C8c+z>?D3q03cVND4kpWw|34MhURoyKDaAxm)g`o7gCzPvR>PEcM9ehSHMl$uE z&Mt5kH|(y5J?fR*ecK;<+c&TMyoOfD&8@{wSG@1YG7g)Qf87#Ntpk@II(O?fi^8v=G^z3S-$D4ReN^OPlb3+%#O80+QY=)PUcKwlq$ z2)|=+%C1%mtJ|+<52N214U0=E_SJ{3j+O>V>{>blP_UEJ(te+;{XAG|4guJmXL}{A zllzwq4!?n3wNI(5YqRZ-*l@&=0<5hUxOfY7jzDie(4<_^a)!<>O+Y{ZFtWjMytWg& z7M~A(jbye8Ho80=^?-GhJ@t)d`RQID000Vm91s+aQsi@i_}$JR!)9^M30W##j`cqu z&O@uR?*xv8?b;u7fER14CXWkjkcc zGvE#mX(wekeBt{Pf7acGxwIP~9M0K~8s3Bj$!EM|Tl_P&WtqJa@MV9%P#GS65m z&4^y3ocV{Zs&*M0c0P~TL!u2Mo3O`(AShW_e3wN|d?8S2`X|D6g&bZH1LPug>5Xp^ zwF@@2GkoujY<`Rz%V=rp8hYD)Bd@%lyi-f_&(^lOI+&A)g`@)y^mB70G?913Gp@TE zDS~}yXvqHQ(Mz8xdh&3iw7fjFfB|SRv?d|no`+hIXr=x9`SV~N8veF00II$_r(G5d z4Q5iVxq4W?LOaM|W^Vq6#Q}6~trXp~ z>mxt{$FM`ap;hYPQQXAzS)8khZuWOPgCTDnH@e_OgdMReREoHXh;5Yzn>R+j>7ab1 zO=6fPkVZz=_!JEzf+ib6bMTtEjO8#AchGJ1+6N9=JtD~5{jxGdge)xXA!z*ttUQs5JJ( zcKG1eARwXDBFio$U9g2Z{Go0NSK|{(D-D4M8<&9i+#vtcT65`UOuk3`b;Xm=&o<#^ z*TYNIi1tg`C)m?x6Ic5Co|9}Z}JjW`ln(B)_Y(35mw4}yGrx6H}?%|G;G z-PTW$gIRh%?@-n7ZpjPKsd|djZ7@pB9Sc5+rxpM@XcR%8uc@WiqbaqEKA)j}MgB`c zLt*FA9iUFW@U^X1h>b8V&7a&|Z8f*Ci3A}4qg;TC(j5bL&^nb9`2iH*?zgR6?3e|Y zrl#f({t)PupaJY}?()Zn5#`6{EZOG9|Ik**+|K)mUOAqPi2A@$j%{U}k`t~V&DLhZ z_PNpRlF{dv&)3z&AASr*YMC3z{29WwL{hsgz?7q<^_i(O!yHB;UoZ=veap3Z;}rJrb~GdaA% z{Rz!_v{&sNRVbtc`zUk5$mT1p3X@ZP(kM!YvL%U}$(G{El{SXF%;;OQiCTw=WBL-8 zi2XCZ;aIY5mn$XzvwSr`GkI6nGoU?{B<`#N7=ChTm35Y8&_0|YSpTuU`GK2{aPP2M`q`6eT-SumS%k7P7B@$3 z1YDY8zLIEaZOoWYE)L7r-Ev>Gok+Z)Z}d6B6KPuP83wgMMo$dVswL(qF-fUyc zjyg07cZm0e_Dr@tP!bN1jVC#=_;dx`0%HjF><{I`XAU?rzzpUUjz zT?69P`@1LdB?%d@=q<6#J-Ycw`q}`Li1zIRnA;<6ltna~b8O?{If~nU$8*o?JJ?*E z7w?@FCc&}Z)_OjQt629-^VF_YWdqJ|rTd%W(WCbjx$%yF0EfSb0$Fs$zKc)uYrY`I zO!wBe%J_kB+WC?dvZ{!b)}?84Mbj4b3rtM9N8}`8_w%b}`2(>REC4BaBn==-8e>>l zSpg=nvaYUYkhOgX__+M`s}!>piX6Pn9pQAv*_*qntg7++gM$ixY-hqIcVd!4xj}O$ zFcgR1>y`^(_-L2)K&@th_R~_Pdj6aBk3fX7K=*l-w5tf{#HN+Q#Ud5x>ga$2ri?%W zL)9K}f$(18Pb?B39%@mRlHMX!G7TAh-hypmgW75LEZivK0b@jTM(n;Az-WKu*JOu+ zUr-{8PhIEqcAszG9Q-KU0n0{ydyhQdnqL2OF52&*X9-0HC`I>o2YT|`$p%NCj_zrQ zztiID#ebam2=Fu}q{{VLBfiiGxT~euS8zu6#BF6;_uO!9TXg$_xHz$G&r5vL#6!}R z+{Y4`6dIk+X?ZIQXw>1z@-Zxc%n)1j8ZHeowFo2u%AAN?X+&7>>X|gPcD}mMC9?|X zHhxZs9@Wdyuv>L6xkjBS$Y#!mb%EJ%1MkAU^vvbWfKjA>9~0mpGVPjI^h^yI0UlIO z13RsH6K=kdk99G+KY`RubsN?WP?9_bCLH!>Y`iZ^4B||QfD)#WE;fbevK1qM0}1|hU@G!!UaJ`{%iqQ= zloDy&GC4&>quFnt&)KUZYMjc}^y$il#z5p4(vK@>3@ZolJUhC5Cx{6V=oM?m;fj0Z zw`Jo5I@PUwu9}c|DkxWCwC(Z9f zO`(%gh1@eu!g~c#$Stg=8%gkHP;NGFV z5GYV3bOS_z2Kz?@sJ6UTA_-Bts;Vj<%p&d-J}d_yitUqZ8fQ4-OI4jdq;Q&tvI9YZ zJi~vIc2dF5Um<7`0TPStPrjS^FJd9P6?a4pK2IVpM~ic^Ahw>>^xuHT14a`=AoSZec-C#W3amVOz{lPG4-+;1PLE~ z{#>=?VFbOdK2ZLkM*xjym_EICKJbTItp>euf+nwk(94citK8aQmd$EiFfibR81mp{RHvLODEe#n4 zsmvsZ901wlOZlm!-oXlQc5>e(Cnp0Xz`*WqQ<2AO3m)sT0t$zd{Q7TqqM|N zEka;qjE6OVLj`gW!DZi7ATN3>{GY26%|1rdfyANSG=AXXIXkGk{I2kFf+i+M*#j4VmPHBTin<#?Ykebr<1U+9!I$)ZB93Rvdjxd?U4o;`5N{m9U zb&{8p8^kZ=R~&X7(ELdotX~mw_H_=QTs}v+VRbzE*DnH}RCeV2sh)_pDQooqJ&xXK zcMJQS4JXWRm-UbL-}}9Ro@%02i4wpq-+2Qp{$3qm6e@_P=f%uQ1yjkV`j4r&#(DJU zfAHBcZO8o?W`M4;;vic{{lv|%liLN(I@YL_^7Vig(1OcU`SV^~gB zm8AoVQvUP44I2Q;P6y!bF3uv$uJ7K7IXxcH?8s%@^1{Ipe8zWH?v|lInP&#Afhf08c}@$`TjcL;S<#KwGr2{;MtFW8E{;-Q&F{qvDiLwk9Iu5dx2O8 zWwIE(f;oXx1*5y$`(6Jvq3fqQ#~u|ZWPWzs zeT`&+wKFRC-O_cx-76hhhxU1egNN^Qk|644=IV?*wk=P$fRRj0LnwCuI*|sey=Tl3 z0wZyo0G9;>D5!oAIUt~%)>KD*@U?s$5vI+YOD_+AD6p@mn1G-b|05`L^zO*+L1_6* zcxh${*_}f5x|&n=?Oicd>U3)IL%xt#>CCd4uhuBonXIIwLjGf@x|wN2wsX_&s_=M# z#%|9jF@-;enEei%A!?7>`3kif>Fkzid zcDZ(KWN(&Q%r=vH5!!Z>r*HRpE6yAFHJe1L+`WXyF1vh3y+r($_(Rx%HpSt)QVyXK zv0_*oIo!kj&1n6r;{MxmF?3Zl0Nj>%+Ex7bsQ#O5f!6Q-KnVZ+_CH^R{{N`I_^F`# zf`4bV9^THf`mlDz)jjejj^=|#X#vFso&Z(6%0vgyEA=1u*;e?d_Eiu!bgfP%zI#XF;`WzkM*+;vB7tJ?CjW*#36ps0cM_tpO! z1_!!A_U9ZZpViLL=kv4?uHUT=YW4WM-8H4`nv{5)|Gz#i@T-19U~2ZBNQy$x3W~wV ze0)bUXq4>#RrNWQok5h9XQ*bP9^_y^Vr=7`so^~rDx?pK1-{s535@>@6M1zMrPm7xr}tIIb@$4NACB%5k)1LGcTEBxx(p z9ahN-40cz1P=Jh103EJGmt}zXnwNSMopk8@H!tbbM0`_7vVgub+p<`MX6~s7NW4q) z`L_@%B;(L!ym)E|cdSr_B?|wS3Xa=S9bmMj0M=4Y#MycYPdsm=-irV?}wvi9p zqB0mv#n=P?|{~%g3L$NPqR+l!%cSom{pwA84Q;)p$LMbf&}>3)xWX>;sojtE?5&t8+^dmU)L@stJ*+A38%^Asxps!gNE`nXs@#dEE@q_=8eGlvh5f6hV!5R?DUl)UiaA}-haeX>M+L(8O(Nv>girKl&T6U& z`+8MW6cH|bKjqC6Q&GeSx!)4-%%v<*6)aUmADCgwCpYmlRpK=;L zU$|G_JL7QZEF4x|Z8!QhY))ZO(;jFuAQrd3E)x4_eF2VBO2jG?E0H}Rv%&+4=o*8+ z+I`4bTkMlrl7Cdw{t~qLu!q?D0Qw2%+8nsb~Trk)jEY z1f6r;@!W8<_ceziX~XAJ#^d{KyW|$Pw7kZknLeI)0Bcp5C>>ag7{A1$L)59mh&4@Y z=__&ODx;C()&kl*=!#^g!b)ReOo{WUOi$>oWGxw}b&#v(V`K)8yzbmiHynslx0}fch-C0mwxIDLB~09+;{1*_O2HRqw?GLQM@! zbC^^EDMCkLHr3UpXxHDP=K0V{Yg8Gw{d#^9e}lQ;$5f+QDg~x-59`!#@tuL`V0mjJ zCF$JKZ}jLhvrCIW^J~5LJvD&C$mAwgw^Vij)q&kwkAuak4D!|+L@aWVH>m|(k4+gA zn;-wR3xCA4BK%Lg>p(LZG1`L5v55uS=E~E9*U?)jgKGDULK1z8k-fEGMf<0((g!%D zz&N2VB)sL0_t$9JWwaT#Nx=AsfHYWxC~xn0Trd0h?=u!&S~@u$0F!HtUj0N&Kx?Si$zy^d;LBeIzy-wUZc3FKs z4l8z`OXxXJ!|Q$b(%3Lts$!NVQoVoSPZ}|874P;sXEouy{u+=l42_Q3nf&-~qywC? zE*C|P|FnEfa23k-0=;a83$rOYJ251fW}xFwx%`Y5vu2`u`C3mQhi*-TSbh5=u%cC5Utl-6$y{AR>*_&_g5L z-5@Pe0wMw;4I(ijFf@pCHzVZ$Ll5ykxu560@8|dF{rH}1xt5CsGuL&--upcE-p9e~ zL&T6T%gJN#!_`Pb-F?DLUjA=I@%LB6hZg$#M})>GwR(7fexjWcpKo*j9*|fu^AE_RCOy z<{9`AsSeLzHKof2%lo*z$!C+5uGoc-*ss6bbpK}(FJ*i@PMOEu=DaR^1{zd&w8A*Z z1Ah=<->7sVWB=mNTgO$eZ!|KS*7VHhhk;TJ)JU!G?E2w!j@J;G)M7lndTb;2bd{Y) zZ_dsW)5#=#CiXwfU$O6Fk*H|p9X7i(9_6^MDQG`@oSdXk|LoQRicCWzRWCziusKy> zXAC7h_<)IN@9~T8>`Y7|h5Xb>wqz*6W^>%)U1s55>s)WXnTA(q$HuMN+4WUcy#!2- zal9@pEbmfUOzaB*=^w%E7|tzfx}cKIsf}BmYBT+dP+ZZkXb1Or16eGxWn5jDDntf= zt|IK-+?G^Ux~~ihZm}202}S1Q|Nb>K!5n()S?Gs>?Rr$|AAYB;=mmFz1_sr}OsC)NuV|-@i>jOYw#*Xx`zda5 z$WlbL{^T6fGsr=1WFnmkFkd(4d?w-51F5|_y0F?^Y1ys%)Y?FyG*B<1_bv_x*puwG zhxiy47QUecLs>j}V=ZbJH4RN6TTiQ`CTuicTmJ7Mt$RyUL4M_9$_KfX*@tV$^c^{+ zhUH_dDrWwd>ejKbe8Pqgq8_G}k*dn(+_;lG6oZ3&YW5Dw_9Q7KKeTpKFUNn&*{DUZ zjm~4Px458SgzIySfnnn*j$@Wo=ZT6=vG>h~K{?!A)wjCxgyrLct!Y-2gYh4RN9Sc@ zM61fXXK1M28aPyndBk(N=7cB_Cm!<@b{7*`k<(cdAXh4{*M%#?+I1Iuh#<;rYvr!? z-XVS-ep!vg<6kevm^V8}YQ5jvKgbJhANhSxz5hm9dCsyeD>9y}sMsxC%wwHnmW1z% zait9w&G+`mT1q~7rffCb>wpl$N-k7)zis%pv(2r*BmdIiY6iP-66w$Nfsua?UwIpx zqR7aZl&S6L#E;8mx2Yxsqz6FuJa}5HzsI+A7dO7r-9Bm4vETKyE1Ong)M9XP_+|6M zxu%(=FUyJXo1~>#?dcy5@DYcgRiY+jlAxT*0WPAtD@nL zqqds80(>~>`j#v@zum^!#ieFG6};N-f(cn#T0R+0DdEs+1_$iFgW=ZAEG8xw&7SJm zI@I$rUUX0Lyy?NCI7_HVzjs`^kza<{9=49Ql3p|VzFaZXa*yA!1=7(ss&%Hq+jdIv zqA{fVww2y|(=(V`SaU67_&dUZT))JQ(sA9`9D#O?{9dimTgm;83Y!fK-D~pk5C$55i3D0YF-{~#y-66O+`0I?r zez}|OD}P}oYtzou&3Bb@xaxNr_unN}!+Jv%hPLwUA9jp^o%MQ z&HiCO4J_Dc%-FCP!Yi7+2Ab>IohbA^)voVFYVR>|XP$1Rr7ZHAxsvf&f z$_Za(B=hDf|FQ$L)GI109}|R2 z4i=YSLzxg?iFdPsj>+HKO9+@MhsOwNS-f+~6a#@nSv-U4LncN~vn`n~GKzzCeodNu z3w*jT_GnNT)=m-_`^(K~=nWz^`pJ{;T8?o4GpzL29n`o2mvxTwUjZC@H1BEPK%crR zsJzQ4+n@N7e&@A)+`DpJSHc(f<0#dMpR_*yo~V-(O>P*3`;J1MKFO{@5?itYns&O(_3 z)jZa6iN}SSBDH)Hf~3II#wO13qMr3D=1-%Tr!_;IB4M;@v{@MJHX0C)a~kFvU86-j z!W$h6(EQuJ%gg^|;T;}3mojmxYF=wP(uLt3Ra59+_&qkarJKV%*1bhpXL&4^36;Gc zUS>TKadEVWOYeYT(K%C-iyVF4T;e>y$7}MV3urY^%gXx&Qck>*fmUcLEcVL%$hh?n)=3!$P z$!Th?a*zmEyQ!CbaB@&0x=qdosDqh+-{+UqqaT?V zSWr?n@8+CLv4O^eD{5BJ9di!KY7o?*f=NMx4{(deCQ1%gj3s>(Dk(Yrekk|PJghWo zd}nuwaT#zLl=1*Hv|+Vrl7lw2Q=rJnyVyZ z^cc>7cfGjHMD(m%dkcT)I_k^9nFH1`ruIB*+i4Fmefblk;2<<0R#M`vRJyVK9o=jv z^Mx&%MmC^AxRshMI=W>Mz;OoT?{e(TA~ue>I_u#Gkml_5C=+V zK~cfdO45R&tU%QVyZVIxK19oUVru6${h@P{;T{q*5Cj3oWF1N;Q@PJoMUi#Elz@_vqz=26 zd3}(2_LjRDfk_>`Bli&QQ;sVkBxi#%Q8_Kbu?O{E>S_4ln6c@jdjz|U{+E_jbmk5^ z=Hkc}D^V{f&HA?O0QGg7cO=mFB_(BdTTHfn>KiEjemByS`|Jzk4L9v^y%=x&>LcAH zwbeMV4-UY!)W!{x%_7dO*!;f_h3- z{D{NKsG;v?r~kXgdoi!eSkXdF#k&5dHb&Kif0~b^55;uL-0nu<{;uH>n7y4PUXh7T z2#D!cRY7;j`I@2ljl~4IyV@U1yYJr@vyZiRSub;h__)12FCua>pC=OTWr5ZyO~RbL z);Ro+@8cc`=WS1<3W@pb+VF56iTWLNPJsAZP|p0eqtoFpW}0S{AMHv+vIu_MME)v` zU?~qx8@>&0iR1&6+e9CiPnYigtMFnCed0=mSm?w=0Uw33or!&duQ2k$r}vcw{Q|(d4>!=07?~Jdt}m zQ^FVD3iXsQKYOfAHm_TJcGR%zhM|(yJsrQj&ujEsW(~Ja@SjOfyySWJ@u7o&a@)Sr5{y07+sU*;a?KERA)AGoB zYelvFT6f=V4J=K3n-bU-W&~%N_^@S?t^cQsH69|~5<#ceZvW+%vhB02dj)kqG7r3% z1?ZO_Xw`VWXL>OW={dGmd~r|#S&DpVp&*DK1=;te-{cIof76i^_~0~pq4)9VZk&CZ z!oP;iM-v#f+qW5;mJ3SeayshIotL?KQ962Fv4kmF2_&?z(oM;O_GNk4?%a!ey-qp9 z>?*!KiR-=To-psQO-}oF%i&LCr#=tsHL1aBLyEP`hcw>ZD+W;Cqoki`inmX=#0@1c z`Nzw@yb*d}?HE8XX8{Ouwv`XPPSc%Ktau}Jg z^SBF2J)4Z6{+6~ReBJ$>cZ!{8#oU9H=v$JRMfnmHlgtdCQgYAT<6r(nOlTTK{_v$j z$Cu^^u{uZA7Hd=4_p`URWSk-~f28}18~-dRN$(bHm57M>o{|&K`9v2Kq1IY)|3E({ zK2Md(?{`*yn#4j2-!zgwCnNs#j2j|vXjVa#^ns{_xz~jYCv#;&*VLYQkal2ynjKbG z__r~R?7|dK)-u&sn8Sou4eRB80(k*BhRO)t~7fm*t;LLlk5ui&uWO{bf1I!r%yNiVs@6zkt zkHc@>-$}Kyw!>Z4iyowfx%Qg(<1|*?vxin@hClGgS_@Q}v{tWbsZ;i_W+1~559xpH z3CnPkKIvwFUbZIFiu#3)q6b|a{_uDDpFNJ}>8qT|D6*g}cpx|83fSS;y!;5sOw9)U zpHZ?!CmES`!|29@r`o639@yL$MBMG>C^50AZLE=?V9#5mBW3BylH%qQLNNG+)8Tm zgq82pRr#jaJYf#+1`IQMOA}l$ppf9TY4mP$<8hRdG-9m>yZ@EXCtcI=oa?lbZZbTa z6GGBG`y(6@N(%!=Xa$B1jl;Uv**}&8X^Yea0)uo0--!sVe@#O~ z4z^mN!SjH+k8PMoMYF5@B0PLTVhYuh=C3=66ag>IRoy$t)8$QXw;Ad0q$@%Rql7o^CC~wR64$j*%&S#Q$qS=2UE^y$<|`q)~`6OS5SIj!#*aAkH~B*^s5Rc2KQw{P@dJHBdq zf;r__+rjUNQ#SH)!(q6yQTct;wJK2~T+u^w|J#Q+aYAH;*5fp0J4*U=?a=4T3l|}x z!;2Z6xyXqGg5B?=gELQK`qAZYM!EWNQEfGp5R4;oWLM%7YFYt#hJH)O`ujC@a`Jda zcEeK*&-<*(FMRdBV{#%n{|$qO3Ia7(D9NGi`brupfy;dvI+2hU<>OsdDL?=XpvDRs zfK2g8lU(pY?s5-kFZ{^VrE@1DnIb9)^| z!B>BD;T6Y;x+cbrY6*Me59Y29eZFg#wYc@`R(Ah2?YPH|ipAA6oGNCwyp^xVwCT#_ z5W3DcduVd={45Rc?nO)Pt_b2D#_fJTKdPE&dbUn5L2i(e5(pM^D5O!h$v+io9Kye+AbDC|>`ahHX$}-=j zb=;QhIzN(<*L${`-7S_@eknrfq2>fibRfbnc6(sypUlYeTjhxrFS%m=HAjB?=`Rxv z-ax{s9{}wyEn4nPPY_#!okno(5%Ts&Z$y$km~=pnYY2#zT>8nr(q(5?JM zwLKy6Ntkb=E08)A)HKSlC*$w^@r%iWUh2oLCSCYm>|5cx4rw2h5eP+^;35~dH6FtP zpMCOKs@&BLm!7C)A*XP)a;0~KP{XHx?&xm|dzEac{u}9`BCagZOS~Wfs{zmhr5{t9 zR<(ueHQj27=Qz0T%R8nY3jviT0+MA9RW-qdo+3}Rq~x+0w3mX+5FMj@bpH2-CrKjf zX*UOon3b88l^VPk-7eq0#tC#JI&IdwlaW6kT*_FP`N1#{JGfBSRW z-CA%Xw5kXnAZ&k+dEBduZo1U8>2L+@pjw$Dr*z2 zT%DrpRZ{Xp|2o1fP_Q>rOL>(uU&w?2r-FqaB!s5Sh@q{Sw8mPZ%cp}Xnr5-ou;Qoc z^&5|4&28dq+39z*eonMyrl@Mt=B$Qoa`nAdPP!SpYYwTn<0JUwH|2QOyLkQ4f>=7) zE+^&m5`kWrK+f9~QAg{MaNSo%A8PADW26iTLf%1d3E5uIkS+YISt9AkZY z!2rU0fwv$>eA`pAi0MuHlTq|neYGVQchSMBgtv$H1Zi_Z0~rr)3eyy6ahvUlr`X?F z{(V5eA`fJdHrA;z(rTNXb)KBh&nBp>~y?#=B68(e9(}1<(ClNlCkxvk( zMS9{C9)$8`+@raH-$QMOOg1@*BedCZsvBN_tEiFf?+wPpPt82lF?M~`$GAe@>MA9o~%MN*UDw_ty72wh-AR0!o(U%OvPDK|&VW*=Pp5Fu*! zX@}(@Ru3L|v%k+Ybp_(Nz0|xo#$DpoZAQ<}m7>T+t%g#s~A8t(w|ca<>9w@P)A$US!=qE@23q zdM<19fbx~u(tYywH%m!Reu4PzR?m~1aeR%@_J3z#p7^hWMq>qY(6MWo->C4Xu=E{2 zB%lNx)R;2!AnG}~EOF$0Z>D%_>>DAqH*dt`$*2sUTqF8Urh0iny?p<7)IMBTH2tGVvEnW}w23+UVSdZ*|?))8*8Rkx}+NlU{H9!cmAB-WXBroV@n`R+`Eb>$kQb`H~){q_Q%|HGx(wAW?qWRiCM*8YMiKujJwg2;z2AeBb`hP}Z zX88YqzrxILhz;Ue|2MG*B-|#u(hFIwm|IAfYfZcm1PO?%LLlxtZg_w`x(l5}ayot6 zz?d4^f`R!bp#FOeIeQ-p%0o?J?`DWLXUGT+M^LsR}D9@%{VK?J)Z z$^v*W?%%zZZ#IG*$MEp4d|Vn(bsQ+9hE|S&I)$hxDZ@r_x!52-m z9M(iaPlhjKVp^4^w&xnv?!gU&ihij7_c8C=)fa}<4=PYNL`QZhC0;FDLxNx zMhb<(P@7nc>v`a>h$K*rS33GbCowM%M=uTJL3@8bPhNYTY*e0KQu4Usq*;H|QtuFJ zJM%xg$2VoxbJt!=D`Z3Ul_v;r8LlvS`4vj^VbrTMixjO(7;0X6R{+5$Dfz5m$i&Mg z)o2Jh5_bm*FR3*i+-lf=4%l9zRas#P2k17?(!%l`jBx?bhJ(U? zX2C4(`hCPBt&_4+gV_ahUPKq*#8*xNH2qkhA!61cothv#w0)JDi!s!rPvFFeHKw$* zl%cETze_&TC3a-W`&eFnMJ_K8AmR?}5XG$OcI$e}<_8B1KGV=e}lBT%?c z0#v)RB|OYPW$=1Sfxf2BkAE=R$g`cFH*CQa*1mlbOA4#!6gGu6D`8e%9UH<1IoSxsj$|$~w4I<%)g&5?0uyAuDM76$s zqVWWr|b8TQNwaUAXx-gsi>1*bCb+vIGIxvp^Ild>0?{8ggfkIFmZ|U>LQYNKFc(P<` z=F1dla=U-L6_N9tykm?&{V4vC=HkEK*F}6~`IuZ{Aa+zHEp#uv>jZkXH=e<`14Qa) z98@qK*H!!H|1}aPi+KP{`QPC({QT;S{m&2~y!yod8UJ6uve!ZlgPZPL0P%ki#JR9Z0|((oGBEG#!Q5>up93HEp_KeXjLH&ASD}l3e#>h=c&( zyuo}^?7a5T4eYU&b4h?SBWR>0WPhU=bj@xclUku!uGb7O7J(Pi5hPKhv6a;50hzW4 zlKMXax|?{6KV@#5BOTysmxD)^o5v4BmTUZc>&F}YXdTYH>;jDCSF{VScGuryEIjgJC?~x^-u+3u8J$lX z>d|bJ;7~6yp{S(=x*=mBA;_cp#V5Z)1yw<&6%@KNBA%4%Eco45ejyuZRDM4+(A9yY z2|=wqOdcrM|2rc6{CgD_XA*O(kGhtY$c^mt`y={FNgs4KKXItzonIRRq4)W64c(u^ z1k-?N3%w-f^YNN7dpbEK8OcM?zjY1#rI=EzbH$*R7O5jzjQI5ic3N8R%65eA zhNezGHces{2@Ovq*?M19W85$qu)PgvrEnLm;rjdA9HagucX1LXznE>~zQsTAMzpun zgVc!=Paa!O+4Jgv&+i%NeL(m78C~9*JH`5ZnK%V7`2S}!qGDX*LBY6dcm%z7WbS!G z?&8+u_z7ADb33U$$wEjPosqkAfk7cTjZZk#r49&ydF1EsbG+D`XI7>SIO{Yv_qN4> zF1wQgW?M`e=I0AtK%cciW);dJiuBnJE0MHy3JS zlghlVq*W$!B(rW|yV53hG`@9;Tjg;0jP9|D9_ z{?92+2kL6izgOl;C<3OjzzxO3gXdUn}^mX<%h{`{bD%#M1YZ4yu&eKCzN(|^NfkD@kvfdfLqgQ7=3Y~bo%yIabY>&3G~0eH>?jVTS(84pz7|NCVBJYpI@aihxL`3 z=N4E4_E=AhFUBu3$XMf{pG{p|L)JGnpQ)=SudbV5nvDWzrptU_wX{esy|ko{_=rHr zxmW)5wgZKAbeB>T2XI_}j}<@Vq)=uMY`)EDLG14f7O7>gj1+4&o%H}pG_fC`KScY0r|8-*DEI@?@ z{1oW%YuZK7d@d_<-kN~0u&_izswyhlM@GoA)vSIRQNHJT$^&-`gP)d`^9hca_(3xU z{r;e7;mg!z+L`_Rsz7@K3YEyn`8EJJ)Igj0RZkKSxj5Jy2VePNeA9W_zJADB5R^!6 zO;$$~7Cr>sH51iV#LLUepsdaH{L~F#6m4wS{OB2P5P{@*Ck%Q&fhsTueEG`ncP1ue16o-+~s)ZnCR zxy#w{b|}foCj5fNf2}AW?Khybov1Pv~ z;77oz`envR*uz8Ae6QoVI$Vta3q{x37I3~7z<8V#aKS61Qf`2q=G}~7IA3Hy|G3Rd zZ0Yi@%PRu1oipQaiwbx;{C z?smf4;3sACAJ|0J-A}h2JWzApx#uSVihKJ&*PLw0TynLw$(`*oT#_0e|6p)g-JtM4Es~Mb z(lWPE!%G|*q8r(CYq_X5Mji!R9)Z;KqHFFY?U??>zB;@;;FuWRi$I9W98Kmv9CR%y z0kUGgzv~<6XlRy4ij&WlcrTc8kJ}TRS9`QR7Fk&fD^kxl#5nq+4SW}gFCu}wGg<|{ z9|KgIE|vq%;K%R))KNy}s|7TC2c0GAoRycy;>EpO*_pEta5;ZLOi8&0Di9KON6Y=g zc>QunLp1x8#VSzm5U(S;|;jTMIV$0WCLC3G41h_ z7~V_xS^xM2D4XlIybisuqG?-83tfmYK4XF(`M^672pnRW{ri~1ZIA?{U+c@DI;p=r zoZp*(&VQV=bJ_g`>gABiN#-PWhgRVm>X%F|FwLtF@9)vX%jlU^t(!?Ax6+deGi>Gu zVr=!!-gB$Wqkcxyw|9l5E|yGB!mHK)_ES;o`?=<+uCcJQZdv9507eAf>9uh;vyYsu?^2To+i$61BYDvr? zUT-0aRb0z?5%fUgsx9^pwS~8LczM7%4Obs8sqD(H!rrs-%RMRw??8pWYXLlofu~LZ zO{nNX-gEr)`EO5?R?fEP{WEdteFLxK9xY};y}VM7%0*IX-`GrcsW29%fK^?GNELpa+s;QTGaKCt1vN4Q9=4ZQse&Z)2UN zrk~%<-$Bq&iD6E??)9^{x>f_NtEJ|m;dQ{Z0pzj;GgX1TajmW~2{!0K1grv;O-;|>^KYige1VIgT}9jL76$_`luCD8=xG6!6xr7&P`HOU_;CCn+t z{@kR{-MprfwhH80i>5m;k77s1wgzMMxmj


    (VL%glV$lmCGWqxG3lKGr#q@hVs< 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%0D*iPdT(rEtg5B42z6>c9p`651Oqj^s4nPb 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

    Heu|L?m|9{lCF%!`i`c-H&8Kl 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

    e`=pw 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%0D_Oqh$So8>ddLEcV_~JvQTkLGHU- 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

    5~S^sn`GUbZW% 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/includes/bot-detect.php b/wp-content/plugins/cookie-notice/includes/bot-detect.php new file mode 100644 index 0000000..44c189f --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/bot-detect.php @@ -0,0 +1,1706 @@ +crawlers = $this->get_crawlers_list(); + $this->exclusions = $this->get_exclusions_list(); + + add_action( 'after_setup_theme', [ $this, 'init' ] ); + } + + /** + * Initialize class. + * + * @return void + */ + public function init() { + // break on admin side + if ( is_admin() && ! wp_doing_ajax() ) + return; + + $this->ua_http_headers = $this->get_headers_list(); + $this->set_http_headers(); + $this->set_user_agent(); + } + + /** + * Set HTTP headers. + * + * @param array $http_headers + * @return void + */ + public function set_http_headers( $http_headers = null ) { + // use global _SERVER if $http_headers aren't defined + if ( ! is_array( $http_headers ) || ! count( $http_headers ) ) + $http_headers = $_SERVER; + + // clear existing headers + $this->http_headers = []; + + // only save HTTP headers - in PHP land, that means only _SERVER vars that start with HTTP_. + foreach ( $http_headers as $key => $value ) { + if ( substr( $key, 0, 5 ) === 'HTTP_' ) + $this->http_headers[$key] = $value; + } + } + + /** + * Return user agent headers. + * + * @return array + */ + public function get_ua_http_headers() { + return $this->ua_http_headers; + } + + /** + * Return the user agent. + * + * @return string + */ + public function get_user_agent() { + return $this->user_agent; + } + + /** + * Set the user agent. + * + * @param string $user_agent + * @return string + */ + public function set_user_agent( $user_agent = null ) { + if ( false === empty( $user_agent ) ) + return $this->user_agent = $user_agent; + else { + $this->user_agent = null; + + foreach ( $this->get_ua_http_headers() as $alt_header ) { + if ( false === empty( $this->http_headers[$alt_header] ) ) // @todo: should use get_http_header(), but it would be slow. + $this->user_agent .= $this->http_headers[$alt_header] . ' '; + } + + return $this->user_agent = ( ! empty( $this->user_agent ) ? trim( $this->user_agent ) : null ); + } + } + + /** + * Build the user agent regex. + * + * @return string + */ + public function get_regex() { + if ( $this->compiled_regex === null ) { + $this->compiled_regex = '(' . implode( '|', $this->crawlers ) . ')'; + } + return $this->compiled_regex; + } + + /** + * Build the replacement regex (cached after first call). + * + * @return string + */ + public function get_exclusions() { + if ( $this->compiled_exclusions === null ) { + $this->compiled_exclusions = '(' . implode( '|', $this->exclusions ) . ')'; + } + return $this->compiled_exclusions; + } + + /** + * Check user agent string against the regex. + * + * @param string $user_agent + * @return bool + */ + public function is_crawler( $user_agent = null ) { + $agent = (string)( is_null( $user_agent ) ? $this->user_agent : $user_agent ); + $agent = preg_replace( '/' . $this->get_exclusions() . '/i', '', $agent ); + + if ( strlen( trim( $agent ) ) === 0 ) + return false; + else + $result = preg_match( '/' . $this->get_regex() . '/i', trim( $agent ), $matches ); + + if ( $matches ) + $this->matches = $matches; + + return (bool) $result; + } + + /** + * Return the matches. + * + * @return string + */ + public function get_matches() { + return isset( $this->matches[0] ) ? $this->matches[0] : null; + } + + /** + * Return the regular expressions to match against the user agent. + * + * @return array + */ + protected function get_crawlers_list() { + return [ + ' YLT', + '^Aether', + '^Amazon Simple Notification Service Agent$', + '^Amazon-Route53-Health-Check-Service', + '^b0t$', + '^bluefish ', + '^Calypso v\/', + '^COMODO DCV', + '^Corax', + '^DangDang', + '^DavClnt', + '^DHSH', + '^docker\/[0-9]', + '^Expanse', + '^FDM ', + '^git\/', + '^Goose\/', + '^Grabber', + '^Gradle\/', + '^HTTPClient\/', + '^HTTPing', + '^Java\/', + '^Jeode\/', + '^Jetty\/', + '^Mail\/', + '^Mget', + '^Microsoft URL Control', + '^Mikrotik\/', + '^Netlab360', + '^NG\/[0-9\.]', + '^NING\/', + '^npm\/', + '^Nuclei', + '^PHP-AYMAPI\/', + '^PHP\/', + '^pip\/', + '^pnpm\/', + '^RMA\/', + '^Ruby|Ruby\/[0-9]', + '^Swurl ', + '^TLS tester ', + '^twine\/', + '^ureq', + '^VSE\/[0-9]', + '^WordPress\.com', + '^XRL\/[0-9]', + '^ZmEu', + '008\/', + '13TABS', + '192\.comAgent', + '2GDPR\/', + '2ip\.ru', + '404enemy', + '7Siters', + '80legs', + 'a3logics\.in', + 'A6-Indexer', + 'Abonti', + 'Aboundex', + 'aboutthedomain', + 'Accoona-AI-Agent', + 'acebookexternalhit\/', + 'acoon', + 'acrylicapps\.com\/pulp', + 'Acunetix', + 'AdAuth\/', + 'adbeat', + 'AddThis', + 'ADmantX', + 'AdminLabs', + 'adressendeutschland', + 'adreview\/', + 'adscanner', + 'adstxt-worker', + 'Adstxtaggregator', + 'adstxt\.com', + 'Adyen HttpClient', + 'AffiliateLabz\/', + 'affilimate-puppeteer', + 'agentslug', + 'AHC', + 'aihit', + 'aiohttp\/', + 'Airmail', + 'akka-http\/', + 'akula\/', + 'alertra', + 'alexa site audit', + 'Alibaba\.Security\.Heimdall', + 'Alligator', + 'allloadin', + 'AllSubmitter', + 'alyze\.info', + 'amagit', + 'Anarchie', + 'AndroidDownloadManager', + 'Anemone', + 'AngleSharp', + 'annotate_google', + 'Anthill', + 'Anturis Agent', + 'Ant\.com', + 'AnyEvent-HTTP\/', + 'Apache Ant\/', + 'Apache Droid', + 'Apache OpenOffice', + 'Apache-HttpAsyncClient', + 'Apache-HttpClient', + 'ApacheBench', + 'Apexoo', + 'apimon\.de', + 'APIs-Google', + 'AportWorm\/', + 'AppBeat\/', + 'AppEngine-Google', + 'AppleSyndication', + 'Aprc\/[0-9]', + 'Arachmo', + 'arachnode', + 'Arachnophilia', + 'aria2', + 'Arukereso', + 'asafaweb', + 'Asana\/', + 'Ask Jeeves', + 'AskQuickly', + 'ASPSeek', + 'Asterias', + 'Astute', + 'asynchttp', + 'Attach', + 'attohttpc', + 'autocite', + // 'AutomaticWPTester', + 'Autonomy', + 'awin\.com', + 'AWS Security Scanner', + 'axios\/', + 'a\.pr-cy\.ru', + 'B-l-i-t-z-B-O-T', + 'Backlink-Ceck', + 'backlink-check', + 'BacklinkHttpStatus', + 'BackStreet', + 'BackupLand', + 'BackWeb', + 'Bad-Neighborhood', + 'Badass', + 'baidu\.com', + 'Bandit', + 'basicstate', + 'BatchFTP', + 'Battleztar Bazinga', + 'baypup\/', + 'BazQux', + 'BBBike', + 'BCKLINKS', + 'BDFetch', + 'BegunAdvertising', + 'Bewica-security-scan', + 'Bidtellect', + 'BigBozz', + 'Bigfoot', + 'biglotron', + 'BingLocalSearch', + 'BingPreview', + 'binlar', + 'biNu image cacher', + 'Bitacle', + 'Bitrix link preview', + 'biz_Directory', + 'BKCTwitterUnshortener\/', + 'Black Hole', + 'Blackboard Safeassign', + 'BlackWidow', + 'BlockNote\.Net', + 'BlogBridge', + 'Bloglines', + 'Bloglovin', + 'BlogPulseLive', + 'BlogSearch', + 'Blogtrottr', + 'BlowFish', + 'boitho\.com-dc', + 'Boost\.Beast', + 'BPImageWalker', + 'Braintree-Webhooks', + 'Branch Metrics API', + 'Branch-Passthrough', + 'Brandprotect', + 'BrandVerity', + 'Brandwatch', + 'Brodie\/', + 'Browsershots', + 'BUbiNG', + 'Buck\/', + 'Buddy', + 'BuiltWith', + 'Bullseye', + 'BunnySlippers', + 'Burf Search', + 'Butterfly\/', + 'BuzzSumo', + 'CAAM\/[0-9]', + 'CakePHP', + 'Calculon', + 'Canary%20Mail', + 'CaretNail', + 'catexplorador', + 'CC Metadata Scaper', + 'Cegbfeieh', + 'censys', + 'centuryb.o.t9[at]gmail.com', + 'Cerberian Drtrs', + 'CERT\.at-Statistics-Survey', + 'cf-facebook', + 'cg-eye', + 'changedetection', + 'ChangesMeter', + 'Charlotte', + 'chatterino-api-cache', + 'CheckHost', + 'checkprivacy', + 'CherryPicker', + 'ChinaClaw', + 'Chirp\/', + 'chkme\.com', + 'Chlooe', + 'Chromaxa', + 'CirrusExplorer', + 'CISPA Vulnerability Notification', + 'CISPA Web Analyser', + 'Citoid', + 'CJNetworkQuality', + 'Clarsentia', + 'clips\.ua\.ac\.be', + 'Cloud mapping', + 'CloudEndure', + 'CloudFlare-AlwaysOnline', + 'Cloudflare-Healthchecks', + 'Cloudinary', + 'cmcm\.com', + 'coccoc', + 'cognitiveseo', + 'ColdFusion', + 'colly -', + 'CommaFeed', + 'Commons-HttpClient', + 'commonscan', + 'contactbigdatafr', + 'contentkingapp', + 'Contextual Code Sites Explorer', + 'convera', + 'CookieReports', + 'copyright sheriff', + 'CopyRightCheck', + 'Copyscape', + 'cortex\/', + 'Cosmos4j\.feedback', + 'Covario-IDS', + 'Craw\/', + 'Crescent', + 'Criteo', + 'Crowsnest', + 'CSHttp', + 'CSSCheck', + 'Cula\/', + 'curb', + 'Curious George', + 'curl', + 'cuwhois\/', + 'cybo\.com', + 'DAP\/NetHTTP', + 'DareBoost', + 'DatabaseDriverMysqli', + 'DataCha0s', + 'DatadogSynthetics', + 'Datafeedwatch', + 'Datanyze', + 'DataparkSearch', + 'dataprovider', + 'DataXu', + 'Daum(oa)?[ \/][0-9]', + 'dBpoweramp', + 'ddline', + 'deeris', + 'delve\.ai', + 'Demon', + 'DeuSu', + 'developers\.google\.com\/\+\/web\/snippet\/', + 'Devil', + 'Digg', + 'Digincore', + 'DigitalPebble', + 'Dirbuster', + 'Discourse Forum Onebox', + 'Dispatch\/', + 'Disqus\/', + 'DittoSpyder', + 'dlvr', + 'DMBrowser', + 'DNSPod-reporting', + 'docoloc', + 'Dolphin http client', + 'DomainAppender', + 'DomainLabz', + 'Domains Project\/', + 'Donuts Content Explorer', + 'dotMailer content retrieval', + 'dotSemantic', + 'downforeveryoneorjustme', + 'Download Wonder', + 'downnotifier', + 'DowntimeDetector', + 'Drip', + 'drupact', + 'Drupal \(\+http:\/\/drupal\.org\/\)', + 'DTS Agent', + 'dubaiindex', + 'DuplexWeb-Google', + 'DynatraceSynthetic', + 'EARTHCOM', + 'Easy-Thumb', + 'EasyDL', + 'Ebingbong', + 'ec2linkfinder', + 'eCairn-Grabber', + 'eCatch', + 'ECCP', + 'eContext\/', + 'Ecxi', + 'EirGrabber', + 'ElectricMonk', + 'elefent', + 'EMail Exractor', + 'EMail Wolf', + 'EmailWolf', + 'Embarcadero', + 'Embed PHP Library', + 'Embedly', + 'endo\/', + 'europarchive\.org', + 'evc-batch', + 'EventMachine HttpClient', + 'Everwall Link Expander', + 'Evidon', + 'Evrinid', + 'ExactSearch', + 'ExaleadCloudview', + 'Excel\/', + 'exif', + 'ExoRank', + 'Exploratodo', + 'Express WebPictures', + 'Extreme Picture Finder', + 'EyeNetIE', + 'ezooms', + 'facebookexternalhit', + 'facebookexternalua', + 'facebookplatform', + 'fairshare', + 'Faraday v', + 'fasthttp', + 'Faveeo', + 'Favicon downloader', + 'faviconarchive', + 'faviconkit', + 'FavOrg', + 'Feed Wrangler', + 'Feedable\/', + 'Feedbin', + 'FeedBooster', + 'FeedBucket', + 'FeedBunch\/', + 'FeedBurner', + 'feeder', + 'Feedly', + 'FeedshowOnline', + 'Feedshow\/', + 'Feedspot', + 'FeedViewer\/', + 'Feedwind\/', + 'FeedZcollector', + 'feeltiptop', + 'Fetch API', + 'Fetch\/[0-9]', + 'Fever\/[0-9]', + 'FHscan', + 'Fiery%20Feeds', + 'Filestack', + 'Fimap', + 'findlink', + 'findthatfile', + 'FlashGet', + 'FlipboardBrowserProxy', + 'FlipboardProxy', + 'FlipboardRSS', + 'Flock\/', + 'Florienzh\/', + 'fluffy', + 'Flunky', + 'flynxapp', + 'forensiq', + 'ForusP', + 'FoundSeoTool', + 'fragFINN\.de', + 'free thumbnails', + 'Freeuploader', + 'FreshRSS', + 'frontman', + 'Funnelback', + 'Fuzz Faster U Fool', + 'G-i-g-a-b-o-t', + 'g00g1e\.net', + 'ganarvisitas', + 'gdnplus\.com', + 'geek-tools', + 'Genieo', + 'GentleSource', + 'GetCode', + 'Getintent', + 'GetLinkInfo', + 'getprismatic', + 'GetRight', + 'getroot', + 'GetURLInfo\/', + 'GetWeb', + 'Geziyor', + 'Ghost Inspector', + 'GigablastOpenSource', + 'GIS-LABS', + 'github-camo', + 'GitHub-Hookshot', + 'github\.com', + 'Go http package', + 'Go [\d\.]* package http', + 'Go!Zilla', + 'Go-Ahead-Got-It', + 'Go-http-client', + 'go-mtasts\/', + 'gobuster', + 'gobyus', + 'Gofeed', + 'gofetch', + 'Goldfire Server', + 'GomezAgent', + 'gooblog', + 'Goodzer\/', + 'Google AppsViewer', + 'Google Desktop', + 'Google favicon', + 'Google Keyword Suggestion', + 'Google Keyword Tool', + 'Google Page Speed Insights', + 'Google PP Default', + 'Google Search Console', + 'Google Web Preview', + 'Google-Ads-Creatives-Assistant', + 'Google-Ads-Overview', + 'Google-Adwords', + 'Google-Apps-Script', + 'Google-Calendar-Importer', + 'Google-HotelAdsVerifier', + 'Google-HTTP-Java-Client', + 'Google-InspectionTool', + 'Google-Podcast', + 'Google-Publisher-Plugin', + 'Google-Read-Aloud', + 'Google-SearchByImage', + 'Google-Site-Verification', + 'Google-SMTP-STS', + 'Google-speakr', + 'Google-Structured-Data-Testing-Tool', + 'Google-Transparency-Report', + 'google-xrawler', + 'Google-Youtube-Links', + 'GoogleDocs', + 'GoogleHC\/', + 'GoogleProber', + 'GoogleProducer', + 'GoogleSites', + 'Gookey', + 'GoSpotCheck', + 'gosquared-thumbnailer', + 'Gotit', + 'GoZilla', + 'grabify', + 'GrabNet', + 'Grafula', + 'Grammarly', + 'GrapeFX', + 'GreatNews', + 'Gregarius', + 'GRequests', + 'grokkit', + 'grouphigh', + 'grub-client', + 'gSOAP\/', + 'GT::WWW', + 'GTmetrix', + 'GuzzleHttp', + 'gvfs\/', + 'HAA(A)?RTLAND http client', + 'Haansoft', + 'hackney\/', + 'Hadi Agent', + 'HappyApps-WebCheck', + 'Hardenize', + 'Hatena', + 'Havij', + 'HaxerMen', + 'HeadlessChrome', + 'HEADMasterSEO', + 'HeartRails_Capture', + 'help@dataminr\.com', + 'heritrix', + 'Hexometer', + 'historious', + 'hkedcity', + 'hledejLevne\.cz', + 'Hloader', + 'HMView', + 'Holmes', + 'HonesoSearchEngine', + 'HootSuite Image proxy', + 'Hootsuite-WebFeed', + 'hosterstats', + 'HostTracker', + 'ht:\/\/check', + 'htdig', + 'HTMLparser', + 'htmlyse', + 'HTTP Banner Detection', + 'http-get', + 'HTTP-Header-Abfrage', + 'http-kit', + 'http-request\/', + 'HTTP-Tiny', + 'HTTP::Lite', + 'http:\/\/www.neomo.de\/', + 'HttpComponents', + 'httphr', + 'HTTPie', + 'HTTPMon', + 'httpRequest', + 'httpscheck', + 'httpssites_power', + 'httpunit', + 'HttpUrlConnection', + 'http\.rb\/', + 'HTTP_Compression_Test', + 'http_get', + 'http_request2', + 'http_requester', + 'httrack', + 'huaweisymantec', + 'HubSpot ', + 'HubSpot-Link-Resolver', + 'Humanlinks', + 'i2kconnect\/', + 'Iblog', + 'ichiro', + 'Id-search', + 'IdeelaborPlagiaat', + 'IDG Twitter Links Resolver', + 'IDwhois\/', + 'Iframely', + 'igdeSpyder', + 'iGooglePortal', + 'IlTrovatore', + 'Image Fetch', + 'Image Sucker', + 'ImageEngine\/', + 'ImageVisu\/', + 'Imagga', + 'imagineeasy', + 'imgsizer', + 'InAGist', + 'inbound\.li parser', + 'InDesign%20CC', + 'Indy Library', + 'InetURL', + 'infegy', + 'infohelfer', + 'InfoTekies', + 'InfoWizards Reciprocal Link', + 'inpwrd\.com', + 'instabid', + 'Instapaper', + 'Integrity', + 'integromedb', + 'Intelliseek', + 'InterGET', + 'Internet Ninja', + 'InternetSeer', + 'internetVista monitor', + 'internetwache', + 'internet_archive', + 'intraVnews', + 'IODC', + 'IOI', + 'Inboxb0t', + 'iplabel', + 'ips-agent', + 'IPS\/[0-9]', + 'IPWorks HTTP\/S Component', + 'iqdb\/', + 'Iria', + 'Irokez', + 'isitup\.org', + 'iskanie', + 'isUp\.li', + 'iThemes Sync\/', + 'IZaBEE', + 'iZSearch', + 'JAHHO', + 'janforman', + 'Jaunt\/', + 'Java.*outbrain', + 'javelin\.io', + 'Jbrofuzz', + 'Jersey\/', + 'JetCar', + 'Jigsaw', + 'Jobboerse', + 'JobFeed discovery', + 'Jobg8 URL Monitor', + 'jobo', + 'Jobrapido', + 'Jobsearch1\.5', + 'JoinVision Generic', + 'JolokiaPwn', + 'Joomla', + 'Jorgee', + 'JS-Kit', + 'JungleKeyThumbnail', + 'JustView', + 'Kaspersky Lab CFR link resolver', + 'Kelny\/', + 'Kerrigan\/', + 'KeyCDN', + 'Keyword Density', + 'Keywords Research', + 'khttp\/', + 'KickFire', + 'KimonoLabs\/', + 'Kml-Google', + 'knows\.is', + 'KOCMOHABT', + 'kouio', + 'kube-probe', + 'kubectl', + 'kulturarw3', + 'KumKie', + 'Larbin', + 'Lavf\/', + 'leakix\.net', + 'LeechFTP', + 'LeechGet', + 'letsencrypt', + 'Lftp', + 'LibVLC', + 'LibWeb', + 'Libwhisker', + 'libwww', + 'Licorne', + 'Liferea\/', + 'Lighthouse', + 'Lightspeedsystems', + 'Likse', + 'limber\.io', + 'Link Valet', + 'LinkAlarm\/', + 'LinkAnalyser', + 'linkCheck', + 'linkdex', + 'LinkExaminer', + 'linkfluence', + 'linkpeek', + 'LinkPreview', + 'LinkScan', + 'LinksManager', + 'LinkTiger', + 'LinkWalker', + 'link_thumbnailer', + 'Lipperhey', + 'Litemage_walker', + 'livedoor ScreenShot', + 'LoadImpactRload', + 'localsearch-web', + 'LongURL API', + 'longurl-r-package', + 'looid\.com', + 'looksystems\.net', + 'ltx71', + 'lua-resty-http', + 'Lucee \(CFML Engine\)', + 'Lush Http Client', + 'lwp-request', + 'lwp-trivial', + 'LWP::Simple', + 'lycos', + 'LYT\.SR', + 'L\.webis', + 'mabontland', + 'MacOutlook\/', + 'Mag-Net', + 'MagpieRSS', + 'Mail::STS', + 'MailChimp', + 'Mail\.Ru', + 'Majestic12', + 'makecontact\/', + 'Mandrill', + 'MapperCmd', + 'marketinggrader', + 'MarkMonitor', + 'MarkWatch', + 'Mass Downloader', + 'masscan\/', + 'Mata Hari', + 'mattermost', + 'Mediametric', + 'Mediapartners-Google', + 'mediawords', + 'MegaIndex\.ru', + 'MeltwaterNews', + 'Melvil Rawi', + 'MemGator', + 'Metaspinner', + 'MetaURI', + 'MFC_Tear_Sample', + 'Microsearch', + 'Microsoft Data Access', + 'Microsoft Office', + 'Microsoft Outlook', + 'Microsoft Windows Network Diagnostics', + 'Microsoft-WebDAV-MiniRedir', + 'Microsoft\.Data\.Mashup', + 'MIDown tool', + 'MIIxpc', + 'Mindjet', + 'Miniature\.io', + 'Miniflux', + 'mio_httpc', + 'Miro-HttpClient', + 'Mister PiX', + 'mixdata dot com', + 'mixed-content-scan', + 'mixnode', + 'Mnogosearch', + 'mogimogi', + 'Mojeek', + 'Mojolicious \(Perl\)', + 'Mollie', + 'monitis', + 'Monitority\/', + 'Monit\/', + 'montastic', + 'MonTools', + 'Moreover', + 'Morfeus Fucking Scanner', + 'Morning Paper', + 'MovableType', + 'mowser', + 'Mrcgiguy', + 'Mr\.4x3 Powered', + 'MS Web Services Client Protocol', + 'MSFrontPage', + 'mShots', + 'MuckRack\/', + 'muhstik-scan', + 'MVAClient', + 'MxToolbox\/', + 'myseosnapshot', + 'nagios', + 'Najdi\.si', + 'Name Intelligence', + 'NameFo\.com', + 'Nameprotect', + 'nationalarchives', + 'Navroad', + 'NearSite', + 'Needle', + 'Nessus', + 'Net Vampire', + 'NetAnts', + 'NETCRAFT', + 'NetLyzer', + 'NetMechanic', + 'NetNewsWire', + 'Netpursual', + 'netresearch', + 'NetShelter ContentScan', + 'Netsparker', + 'NetSystemsResearch', + 'nettle', + 'NetTrack', + 'Netvibes', + 'NetZIP', + 'Neustar WPM', + 'NeutrinoAPI', + 'NewRelicPinger', + 'NewsBlur .*Finder', + 'NewsGator', + 'newsme', + 'newspaper\/', + 'Nexgate Ruby Client', + 'NG-Search', + 'nghttp2', + 'Nibbler', + 'NICErsPRO', + 'NihilScio', + 'Nikto', + 'nineconnections', + 'NLNZ_IAHarvester', + 'Nmap Scripting Engine', + 'node-fetch', + 'node-superagent', + 'node-urllib', + 'Nodemeter', + 'NodePing', + 'node\.io', + 'nominet\.org\.uk', + 'nominet\.uk', + 'Norton-Safeweb', + 'Notifixious', + 'notifyninja', + 'NotionEmbedder', + 'nuhk', + 'nutch', + 'Nuzzel', + 'nWormFeedFinder', + 'nyawc\/', + 'Nymesis', + 'NYU', + 'Observatory\/', + 'Ocelli\/', + 'Octopus', + 'oegp', + 'Offline Explorer', + 'Offline Navigator', + 'OgScrper', + 'okhttp', + 'omgili', + 'OMSC', + 'Online Domain Tools', + 'Open Source RSS', + 'OpenCalaisSemanticProxy', + 'Openfind', + 'OpenLinkProfiler', + 'Openstat\/', + 'OpenVAS', + 'OPPO A33', + 'Optimizer', + 'Orbiter', + 'OrgProbe\/', + 'orion-semantics', + 'Outlook-Express', + 'Outlook-iOS', + 'Owler', + 'Owlin', + 'ownCloud News', + 'ow\.ly', + 'OxfordCloudService', + 'page scorer', + 'Page Valet', + 'page2rss', + 'PageFreezer', + 'PageGrabber', + 'PagePeeker', + 'PageScorer', + 'Pagespeed\/', + 'PageThing', + 'page_verifier', + 'Panopta', + 'panscient', + 'Papa Foto', + 'parsijoo', + 'Pavuk', + 'PayPal IPN', + 'pcBrowser', + 'Pcore-HTTP', + 'PDF24 URL To PDF', + 'Pearltrees', + 'PECL::HTTP', + 'peerindex', + 'Peew', + 'PeoplePal', + 'Perlu -', + 'PhantomJS Screenshoter', + 'PhantomJS\/', + 'Photon\/', + 'php-requests', + 'phpservermon', + 'Pi-Monster', + 'Picscout', + 'Picsearch', + 'PictureFinder', + 'Pimonster', + 'Pingability', + 'PingAdmin\.Ru', + 'Pingdom', + 'Pingoscope', + 'PingSpot', + 'ping\.blo\.gs', + 'pinterest\.com', + 'Pixray', + 'Pizilla', + 'Plagger\/', + 'Pleroma ', + 'Ploetz \+ Zeller', + 'Plukkie', + 'plumanalytics', + 'PocketImageCache', + 'PocketParser', + 'Pockey', + 'PodcastAddict\/', + 'POE-Component-Client-HTTP', + 'Polymail\/', + 'Pompos', + 'Porkbun', + 'Port Monitor', + 'postano', + 'postfix-mta-sts-resolver', + 'PostmanRuntime', + 'postplanner\.com', + 'PostPost', + 'postrank', + 'PowerPoint\/', + 'Prebid', + 'Prerender', + 'Priceonomics Analysis Engine', + 'PrintFriendly', + 'PritTorrent', + 'Prlog', + 'probethenet', + 'Project ?25499', + 'Project-Resonance', + 'prospectb2b', + 'Protopage', + 'ProWebWalker', + 'proximic', + 'PRTG Network Monitor', + 'pshtt, https scanning', + 'PTST ', + 'PTST\/[0-9]+', + 'Pump', + 'Python-httplib2', + 'python-httpx', + 'python-requests', + 'Python-urllib', + 'Qirina Hurdler', + 'QQDownload', + 'QrafterPro', + 'Qseero', + 'Qualidator', + 'QueryN Metasearch', + 'queuedriver', + 'quic-go-HTTP\/', + 'QuiteRSS', + 'Quora Link Preview', + 'Qwantify', + 'Radian6', + 'RadioPublicImageResizer', + 'Railgun\/', + 'RankActive', + 'RankFlex', + 'RankSonicSiteAuditor', + 'RapidLoad\/', + 'Re-re Studio', + 'ReactorNetty', + 'Readability', + 'RealDownload', + 'RealPlayer%20Downloader', + 'RebelMouse', + 'Recorder', + 'RecurPost\/', + 'redback\/', + 'ReederForMac', + 'Reeder\/', + 'ReGet', + 'RepoMonkey', + 'request\.js', + 'reqwest\/', + 'ResponseCodeTest', + 'RestSharp', + 'Riddler', + 'Rival IQ', + 'Robosourcer', + 'Robozilla', + 'ROI Hunter', + 'RPT-HTTPClient', + 'RSSMix\/', + 'RSSOwl', + 'RyowlEngine', + 'safe-agent-scanner', + 'SalesIntelligent', + 'Saleslift', + 'SAP NetWeaver Application Server', + 'SauceNAO', + 'SBIder', + 'sc-downloader', + 'scalaj-http', + 'Scamadviser-Frontend', + 'ScanAlert', + 'scan\.lol', + 'Scoop', + 'scooter', + 'ScopeContentAG-HTTP-Client', + 'ScoutJet', + 'ScoutURLMonitor', + 'ScrapeBox Page Scanner', + 'Scrapy', + 'Screaming', + 'ScreenShotService', + 'Scrubby', + 'Scrutiny\/', + 'Search37', + 'searchenginepromotionhelp', + 'Searchestate', + 'SearchExpress', + 'SearchSight', + // 'SearchWP', + 'search\.thunderstone', + 'Seeker', + 'semanticdiscovery', + 'semanticjuice', + 'Semiocast HTTP client', + 'Semrush', + 'Sendsay\.Ru', + 'sentry\/', + 'SEO Browser', + 'Seo Servis', + 'seo-nastroj\.cz', + 'seo4ajax', + 'Seobility', + 'SEOCentro', + 'SeoCheck', + 'seocompany', + 'SEOkicks', + 'SEOlizer', + 'Seomoz', + 'SEOprofiler', + 'seoscanners', + 'SEOsearch', + 'seositecheckup', + 'SEOstats', + 'servernfo', + 'sexsearcher', + 'Seznam', + 'Shelob', + 'Shodan', + 'Shoppimon', + 'ShopWiki', + 'ShortLinkTranslate', + 'shortURL lengthener', + 'shrinktheweb', + 'Sideqik', + 'Siege', + 'SimplePie', + 'SimplyFast', + 'Siphon', + 'SISTRIX', + 'Site Sucker', + 'Site-Shot\/', + 'Site24x7', + 'SiteBar', + 'Sitebeam', + 'Sitebulb\/', + 'SiteCondor', + 'SiteExplorer', + 'SiteGuardian', + 'Siteimprove', + 'SiteIndexed', + 'Sitemap(s)? Generator', + 'SitemapGenerator', + 'SiteMonitor', + 'Siteshooter B0t', + 'SiteSnagger', + 'SiteSucker', + 'SiteTruth', + 'Sitevigil', + 'sitexy\.com', + 'SkypeUriPreview', + 'Slack\/', + 'sli-systems\.com', + 'slider\.com', + 'slurp', + 'SlySearch', + 'SmartDownload', + 'SMRF URL Expander', + 'SMUrlExpander', + 'Snake', + 'Snappy', + 'SnapSearch', + 'Snarfer\/', + 'SniffRSS', + 'sniptracker', + 'Snoopy', + 'SnowHaze Search', + 'sogou web', + 'SortSite', + 'Sottopop', + 'sovereign\.ai', + 'SpaceBison', + 'SpamExperts', + 'Spammen', + 'Spanner', + 'Spawning-AI', + 'spaziodati', + 'SPDYCheck', + 'Specificfeeds', + 'SpeedKit', + 'speedy', + 'SPEng', + 'Spinn3r', + 'spray-can', + 'Sprinklr ', + 'spyonweb', + 'sqlmap', + 'Sqlworm', + 'Sqworm', + 'SSL Labs', + 'ssl-tools', + 'StackRambler', + 'Statastico\/', + 'Statically-', + 'StatusCake', + 'Steeler', + 'Stratagems Kumo', + 'Stripe\/', + 'Stroke\.cz', + 'StudioFACA', + 'StumbleUpon', + 'suchen', + 'Sucuri', + 'summify', + 'SuperHTTP', + 'Surphace Scout', + 'Suzuran', + 'swcd ', + 'Symfony BrowserKit', + 'Symfony2 BrowserKit', + 'Synapse\/', + 'Syndirella\/', + 'SynHttpClient-Built', + 'Sysomos', + 'sysscan', + 'Szukacz', + 'T0PHackTeam', + 'tAkeOut', + 'Tarantula\/', + 'Taringa UGC', + 'TarmotGezgin', + 'tchelebi\.io', + 'techiaith\.cymru', + 'Teleport', + 'Telesoft', + 'Telesphoreo', + 'Telesphorep', + 'Tenon\.io', + 'teoma', + 'terrainformatica', + 'Test Certificate Info', + 'testuri', + 'Tetrahedron', + 'TextRazor Downloader', + 'The Drop Reaper', + 'The Expert HTML Source Viewer', + 'The Intraformant', + 'The Knowledge AI', + 'theinternetrules', + 'TheNomad', + 'Thinklab', + 'Thumbor', + 'Thumbshots', + 'ThumbSniper', + 'timewe\.net', + 'TinEye', + 'Tiny Tiny RSS', + 'TLSProbe\/', + 'Toata', + 'topster', + 'touche\.com', + 'Traackr\.com', + 'tracemyfile', + 'Trackuity', + 'TrapitAgent', + 'Trendiction', + 'Trendsmap', + 'trendspottr', + 'truwoGPS', + 'TryJsoup', + 'TulipChain', + 'Turingos', + 'Turnitin', + 'tweetedtimes', + 'Tweetminster', + 'Tweezler\/', + 'twibble', + 'Twice', + 'Twikle', + 'Twingly', + 'Twisted PageGetter', + 'Typhoeus', + 'ubermetrics-technologies', + 'uclassify', + 'UdmSearch', + 'ultimate_sitemap_parser', + 'unchaos', + 'unirest-java', + 'UniversalFeedParser', + 'unshortenit', + 'Unshorten\.It', + 'Untiny', + 'UnwindFetchor', + 'updated', + 'updown\.io daemon', + 'Upflow', + 'Uptimia', + 'URL Verifier', + 'Urlcheckr', + 'URLitor', + 'urlresolver', + 'Urlstat', + 'URLTester', + 'UrlTrends Ranking Updater', + 'URLy Warning', + 'URLy\.Warning', + 'URL\/Emacs', + 'Vacuum', + 'Vagabondo', + 'VB Project', + 'vBSEO', + 'VCI', + 'via ggpht\.com GoogleImageProxy', + 'Virusdie', + 'visionutils', + 'Visual Rights Group', + 'vkShare', + 'VoidEYE', + 'Voil', + 'voltron', + 'voyager\/', + 'VSAgent\/', + 'VSB-TUO\/', + 'Vulnbusters Meter', + 'VYU2', + 'w3af\.org', + 'W3C-checklink', + 'W3C-mobileOK', + 'W3C_Unicorn', + 'WAC-OFU', + 'WakeletLinkExpander', + 'WallpapersHD', + 'Wallpapers\/[0-9]+', + 'wangling', + 'Wappalyzer', + 'WatchMouse', + 'WbSrch\/', + 'WDT\.io', + 'Web Auto', + 'Web Collage', + 'Web Enhancer', + 'Web Fetch', + 'Web Fuck', + 'Web Pix', + 'Web Sauger', + 'Web spyder', + 'Web Sucker', + 'web-capture\.net', + 'Web-sniffer', + 'Webalta', + 'Webauskunft', + 'WebAuto', + 'WebCapture', + 'WebClient\/', + 'webcollage', + 'WebCookies', + 'WebCopier', + 'WebCorp', + 'WebDataStats', + 'WebDoc', + 'WebEnhancer', + 'WebFetch', + 'WebFuck', + 'WebGazer', + 'WebGo IS', + 'WebImageCollector', + 'WebImages', + 'WebIndex', + 'webkit2png', + 'WebLeacher', + 'webmastercoffee', + 'webmon ', + 'WebPix', + 'WebReaper', + 'WebSauger', + 'webscreenie', + 'Webshag', + 'Webshot', + 'Website Quester', + 'websitepulse agent', + 'WebsiteQuester', + 'Websnapr', + 'WebSniffer', + 'Webster', + 'WebStripper', + 'WebSucker', + 'webtech\/', + 'WebThumbnail', + 'Webthumb\/', + 'WebWhacker', + 'WebZIP', + 'WeLikeLinks', + 'WEPA', + 'WeSEE', + 'wf84', + 'Wfuzz\/', + 'wget', + 'WhatCMS', + 'WhatsApp', + 'WhatsMyIP', + 'WhatWeb', + 'WhereGoes\?', + 'Whibse', + 'WhoAPI\/', + 'WhoRunsCoinHive', + 'Whynder Magnet', + 'Windows-RSS-Platform', + 'WinHttp-Autoproxy-Service', + 'WinHTTP\/', + 'WinPodder', + 'wkhtmlto', + 'wmtips', + 'Woko', + 'Wolfram HTTPClient', + 'woorankreview', + 'WordupinfoSearch', + 'Word\/', + 'worldping-api', + 'wotbox', + // 'WP Engine Install Performance API', + 'wpif', + 'wprecon\.com survey', + // 'WPScan', + 'wscheck', + 'Wtrace', + 'WWW-Collector-E', + 'WWW-Mechanize', + 'WWW::Document', + 'WWW::Mechanize', + 'WWWOFFLE', + 'www\.monitor\.us', + 'x09Mozilla', + 'x22Mozilla', + 'XaxisSemanticsClassifier', + 'XenForo\/', + 'Xenu Link Sleuth', + 'XING-contenttabreceiver', + 'xpymep([0-9]?)\.exe', + 'Y!J-[A-Z][A-Z][A-Z]', + 'Yaanb', + 'yacy', + 'Yahoo Link Preview', + 'YahooCacheSystem', + 'YahooMailProxy', + 'YahooYSMcm', + 'YandeG', + 'Yandex(?!Search)', + 'yanga', + 'yeti', + 'Yo-yo', + 'Yoleo Consumer', + 'yomins\.com', + 'yoogliFetchAgent', + 'YottaaMonitor', + 'Your-Website-Sucks', + 'yourls\.org', + 'YoYs\.net', + 'YP\.PL', + 'Zabbix', + 'Zade', + 'Zao', + 'Zauba', + 'Zemanta Aggregator', + 'Zend\\Http\\Client', + 'Zend_Http_Client', + 'Zermelo', + 'Zeus ', + 'zgrab', + 'ZnajdzFoto', + 'ZnHTTP', + 'Zombie\.js', + 'Zoom\.Mac', + 'ZoteroTranslationServer', + 'ZyBorg', + // '[a-z0-9\-_]*(bot|crawl|archiver|transcoder|spider|uptime|validator|fetcher|cron|checker|reader|extractor|monitoring|analyzer|scraper)' + ]; + } + + /** + * Return the list of strings to remove from the user agent before running the crawler regex. + * + * @return array + */ + public function get_exclusions_list() { + return [ + 'Safari.[\d\.]*', + 'Firefox.[\d\.]*', + ' Chrome.[\d\.]*', + 'Chromium.[\d\.]*', + 'MSIE.[\d\.]', + 'Opera\/[\d\.]*', + 'Mozilla.[\d\.]*', + 'AppleWebKit.[\d\.]*', + 'Trident.[\d\.]*', + 'Windows NT.[\d\.]*', + 'Android [\d\.]*', + 'Macintosh.', + 'Ubuntu', + 'Linux', + '[ ]Intel', + 'Mac OS X [\d_]*', + '(like )?Gecko(.[\d\.]*)?', + 'KHTML,', + 'CriOS.[\d\.]*', + 'CPU iPhone OS ([0-9_])* like Mac OS X', + 'CPU OS ([0-9_])* like Mac OS X', + 'iPod', + 'compatible', + 'x86_..', + 'i686', + 'x64', + 'X11', + 'rv:[\d\.]*', + 'Version.[\d\.]*', + 'WOW64', + 'Win64', + 'Dalvik.[\d\.]*', + ' \.NET CLR [\d\.]*', + 'Presto.[\d\.]*', + 'Media Center PC', + 'BlackBerry', + 'Build', + 'Opera Mini\/\d{1,2}\.\d{1,2}\.[\d\.]*\/\d{1,2}\.', + 'Opera', + ' \.NET[\d\.]*', + 'cubot', + '; M bot', + '; CRONO', + '; B bot', + '; IDbot', + '; ID bot', + '; POWER BOT', + 'OCTOPUS-CORE', + 'htc_botdugls', + 'super\/\d+\/Android\/\d+', + ]; + } + + /** + * Return all possible HTTP headers that represent the User-Agent string. + * + * @return array + */ + public function get_headers_list() { + return [ + // The default User-Agent string. + 'HTTP_USER_AGENT', + // Header can occur on devices using Opera Mini. + 'HTTP_X_OPERAMINI_PHONE_UA', + // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/ + 'HTTP_X_DEVICE_USER_AGENT', + 'HTTP_X_ORIGINAL_USER_AGENT', + 'HTTP_X_SKYFIRE_PHONE', + 'HTTP_X_BOLT_PHONE_UA', + 'HTTP_DEVICE_STOCK_UA', + 'HTTP_X_UCBROWSER_DEVICE_UA', + // Sometimes, bots (especially Google) use a genuine user agent, but fill this header in with their email address + 'HTTP_FROM', + 'HTTP_X_SCANNER' // Seen in use by Netsparker + ]; + } +} diff --git a/wp-content/plugins/cookie-notice/includes/consent-logs-date-list-table.php b/wp-content/plugins/cookie-notice/includes/consent-logs-date-list-table.php new file mode 100644 index 0000000..0035423 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/consent-logs-date-list-table.php @@ -0,0 +1,282 @@ +get_url( 'login', '?utm_campaign=consentlogs&utm_source=wordpress&utm_medium=link' ) ); + + $message = __( 'The table below shows the consent records from your website accumulated from the last thirty days.', 'cookie-notice' ); + + $message .= ' ' . sprintf( __( 'View individual records by expanding a single row of data or log in to the Compliance by Hu-manity.co dashboard to export proof of consent.', 'cookie-notice' ), $login_url ); + + // disable if basic plan and data older than 7 days + if ( $cn->get_subscription() === 'basic' ) + $message .= '
    * ' . __( 'Note: sites on the Compliance by Hu-manity.co Free Plan can view consent records from the last 7 days and store data only for 30 days.', 'cookie-notice' ); + + echo '

    ' . wp_kses_post( $message ) . '

    '; + } + + /** + * Prepare the items for the table to process. + * + * @return void + */ + public function prepare_items() { + // get main instance + $cn = Cookie_Notice(); + + // get consent logs + if ( is_multisite() && $cn->is_network_admin() && $cn->is_plugin_network_active() && $cn->network_options['general']['global_override'] ) + $analytics = get_site_option( 'cookie_notice_app_analytics', [] ); + else + $analytics = get_option( 'cookie_notice_app_analytics', [] ); + + // get date format + $format = get_option( 'date_format' ); + + // get 30 days of default data + $logs = $this->fill_missing_dates( $format ); + + // get last day + $today = array_key_last( $logs ); + + // any data? + if ( ! empty( $analytics['consentActivities'] ) && is_array( $analytics['consentActivities'] ) ) { + foreach ( $analytics['consentActivities'] as $index => $entry ) { + // get date in digits only + $digits = (int) str_replace( '-', '', substr( $entry->eventdt, 0, 10 ) ); + + // current data? + if ( array_key_exists( $digits, $logs ) ) { + $logs[$digits]['level_' . (int) $entry->consentlevel] = (int) $entry->totalrecd; + $logs[$digits]['total'] += (int) $entry->totalrecd; + } + } + + krsort( $logs, SORT_NUMERIC ); + } + + // remove last day + unset( $logs[$today] ); + + $this->_column_headers = [ $this->get_columns(), [], $this->get_sortable_columns(), '' ]; + + usort( $logs, [ $this, 'usort_reorder' ] ); + + $this->items = $logs; + } + + /** + * Fill missing dates. + * + * @param string $format + * + * @return array + */ + private function fill_missing_dates( $format ) { + $empty_logs = []; + + // get current date + $d = new DateTime(); + + // go back 30 days + $d->modify( '-30 days' ); + + // update dates for last 30 days + for ( $i = 1; $i <= 31; $i++ ) { + $date = $d->format( 'Y-m-d' ); + $digits = (int) str_replace( '-', '', $date ); + + $empty_logs[$digits] = [ + 'slug' => $digits, + 'date' => date_i18n( $format, strtotime( $date ) ), + 'date_iso' => $date, + 'level_1' => 0, + 'level_2' => 0, + 'level_3' => 0, + 'total' => 0 + ]; + + $d->modify( '+1 days' ); + } + + return $empty_logs; + } + + /** + * Sort consent logs. + * + * @param int $first + * @param int $second + * + * @return array + */ + public function usort_reorder( $first, $second ) { + // get orderby + $orderby = ( ! empty( $_GET['orderby'] ) ) ? sanitize_key( $_GET['orderby'] ) : 'date'; + + // skip invalid orderby + if ( ! array_key_exists( $orderby, $this->get_sortable_columns() ) ) + return 0; + + // get order + $order = ( ! empty( $_GET['order'] ) ) ? sanitize_key( $_GET['order'] ) : 'desc'; + + // use numeric value for dates + if ( $orderby === 'date' ) + $orderby = 'slug'; + + // determine sort order + if ( $first[$orderby] === $second[$orderby] ) + $result = 0; + else + $result = ( $first[$orderby] < $second[$orderby] ) ? -1 : 1; + + return ( $order === 'asc' ) ? $result : -$result; + } + + /** + * Define columns in listing table. + * + * @return array + */ + public function get_columns() { + $columns = [ + 'cb' => '', + 'date' => __( 'Date', 'cookie-notice' ), + 'level_1' => __( 'Level 1', 'cookie-notice' ), + 'level_2' => __( 'Level 2', 'cookie-notice' ), + 'level_3' => __( 'Level 3', 'cookie-notice' ), + 'total' => __( 'Total', 'cookie-notice' ) + ]; + + return $columns; + } + + /** + * Define sortable columns. + * + * @return array + */ + public function get_sortable_columns() { + return [ + 'date' => [ 'date', false ], + 'level_1' => [ 'level_1', true ], + 'level_2' => [ 'level_2', true ], + 'level_3' => [ 'level_3', true ], + 'total' => [ 'total', true ] + ]; + } + + /** + * Display single row. + * + * @param array $item + * + * @return void + */ + public function single_row( $item ) { + $disabled = false; + + // disable if basic plan and data older than 7 days + if ( Cookie_Notice()->get_subscription() === 'basic' ) { + // get current date + $last_date = new DateTime(); + + // go back 7 days + $last_date->modify( '-7 days' ); + + // get event date + $event_date = new DateTime( $item[ 'date_iso' ] ); + + if ( $event_date->getTimestamp() < $last_date->getTimestamp() ) + $disabled = true; + } + + echo ' + '; + + $this->single_row_columns( $item ); + + echo ' + '; + } + + /** + * Define what data to show on each column of the table. + * + * @param array $item + * @param string $column_name + * + * @return string + */ + public function column_default( $item, $column_name ) { + return esc_html( $item[$column_name] ); + } + + /** + * Define what data to show on cb column of the table. + * + * @param array $item + * + * @return string + */ + function column_cb( $item ) { + $disabled = false; + + // disable if no data + if ( $item['total'] === 0 ) + $disabled = true; + + return ' + '; + } + + /** + * Generate table navigation. + * + * @param string $which + * + * @return void + */ + protected function display_tablenav( $which ) { + // do nothing + } + + /** + * Display bulk actions. + * + * @return array + */ + public function get_bulk_actions() { + return []; + } + + /** + * Display empty result. + * + * @return void + */ + public function no_items() { + echo __( 'No cookie consent logs found.', 'cookie-notice' ); + } +} diff --git a/wp-content/plugins/cookie-notice/includes/consent-logs-list-table.php b/wp-content/plugins/cookie-notice/includes/consent-logs-list-table.php new file mode 100644 index 0000000..2386ef2 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/consent-logs-list-table.php @@ -0,0 +1,299 @@ +cn_data = $data; + } + + /** + * Prepare the items for the table to process. + * + * @return void + */ + public function prepare_items() { + // prepare items + $items = []; + + // no data? + if ( ! empty( $this->cn_data ) ) { + foreach ( $this->cn_data as $no => $consent_log ) { + $categories = []; + + if ( $consent_log->ev_essential ) + $categories[] = esc_html__( 'Basic Operations', 'cookie-notice' ); + + if ( $consent_log->ev_functional ) + $categories[] = esc_html__( 'Content Personalization', 'cookie-notice' ); + + if ( $consent_log->ev_analytics ) + $categories[] = esc_html__( 'Site Optimization', 'cookie-notice' ); + + if ( $consent_log->ev_marketing ) + $categories[] = esc_html__( 'Ad Personalization', 'cookie-notice' ); + + // get current date + $timestamp = new DateTime( $consent_log->timestamp ); + + // get deuration in days + $duration = (int) $consent_log->ev_eventdetails_expiry; + + if ( $duration === 30 ) + $duration = __( '1 month', 'cookie-notice' ); + elseif ( $duration === 90 ) + $duration = __( '3 months', 'cookie-notice' ); + elseif ( $duration === 182 ) + $duration = __( '6 months', 'cookie-notice' ); + elseif ( $duration === 365 ) + $duration = __( '1 year', 'cookie-notice' ); + elseif ( $duration === 730 ) + $duration = __( '2 years', 'cookie-notice' ); + + $items[] = [ + 'consent_id' => $consent_log->ev_eventdetails_consentid, + 'consent_level' => sprintf( __( 'Level %d', 'cookie-notice' ), $consent_log->ev_consentlevel ), + 'consent_categories' => implode( ', ', $categories ), + 'consent_duration' => $duration, + 'consent_time' => $timestamp->format( get_option( 'time_format' ) ) . ' ' . __( 'GMT', 'cookie-notice' ), + 'consent_ip_address' => $consent_log->rj_ip + ]; + } + } + + // count items + $noi = count( $items ); + + $per_page = 10; + + $this->set_pagination_args( + [ + 'total_items' => $noi, + 'total_pages' => (int) ceil( $noi / $per_page ), + 'per_page' => $per_page + ] + ); + + $this->_column_headers = [ $this->get_columns(), [], $this->get_sortable_columns(), '' ]; + + $this->items = $items; + } + + /** + * Define columns in listing table. + * + * @return array + */ + public function get_columns() { + $columns = [ + 'consent_id' => __( 'Consent ID', 'cookie-notice' ), + 'consent_level' => __( 'Consent Level', 'cookie-notice' ), + 'consent_categories' => __( 'Categories', 'cookie-notice' ), + 'consent_duration' => __( 'Duration', 'cookie-notice' ), + 'consent_time' => __( 'Time', 'cookie-notice' ), + 'consent_ip_address' => __( 'IP address', 'cookie-notice' ) + ]; + + return $columns; + } + + /** + * Define sortable columns. + * + * @return array + */ + public function get_sortable_columns() { + return []; + } + + /** + * Define what data to show on each column of the table. + * + * @param array $item + * @param string $column_name + * + * @return string + */ + public function column_default( $item, $column_name ) { + return esc_html( $item[$column_name] ); + } + + /** + * Generate table navigation. + * + * @param string $which + * + * @return void + */ + protected function display_tablenav( $which ) { + parent::display_tablenav( $which ); + } + + /** + * Generate content for a single row of the table. + * + * @param array $item + * + * @return void + */ + public function single_row( $item ) { + $this->cn_item_number++; + + echo 'cn_item_number > $this->_pagination_args['per_page'] ? ' style="display: none"' : '' ) . '>'; + + $this->single_row_columns( $item ); + + echo ''; + } + + /** + * Display the pagination. + * + * @param string $which + * + * @return void + */ + protected function pagination( $which ) { + if ( empty( $this->_pagination_args ) ) + return; + + $total_items = $this->_pagination_args['total_items']; + $total_pages = $this->_pagination_args['total_pages']; + + $output = '' . sprintf( + /* translators: %s: Number of items. */ + _n( '%s item', '%s items', $total_items ), + number_format_i18n( $total_items ) + ) . ''; + + $page_links = array(); + + $total_pages_before = ''; + $total_pages_after = ''; + + // first page + $page_links[] = sprintf( + "" . + "%s" . + "" . + '', + /* translators: Hidden accessibility text. */ + __( 'First page' ), + '«' + ); + + // previous page + $page_links[] = sprintf( + "" . + "%s" . + "" . + '', + /* translators: Hidden accessibility text. */ + __( 'Previous page' ), + '‹' + ); + + $html_current_page = '' . (int) $this->get_pagenum() . ''; + $total_pages_before = sprintf( + '%s' . + '' . + '', + /* translators: Hidden accessibility text. */ + __( 'Current Page' ) + ); + + $html_total_pages = sprintf( "%s", number_format_i18n( $total_pages ) ); + + $page_links[] = $total_pages_before . sprintf( + /* translators: 1: Current page, 2: Total pages. */ + _x( '%1$s of %2$s', 'paging' ), + $html_current_page, + $html_total_pages + ) . $total_pages_after; + + // next page + $page_links[] = sprintf( + "" . + "%s" . + "" . + '', + /* translators: Hidden accessibility text. */ + __( 'Next page' ), + '›' + ); + + // last page + $page_links[] = sprintf( + "" . + "%s" . + "" . + '', + /* translators: Hidden accessibility text. */ + __( 'Last page' ), + '»' + ); + + $pagination_links_class = 'pagination-links'; + + if ( ! empty( $infinite_scroll ) ) + $pagination_links_class .= ' hide-if-js'; + + $output .= "\n" . implode( "\n", $page_links ) . ''; + + if ( $total_pages ) + $page_class = $total_pages < 2 ? ' one-page' : ''; + else + $page_class = ' no-pages'; + + $this->_pagination = "
    $output
    "; + + echo $this->_pagination; + } + + /** + * Print column headers. + * + * @param bool $with_id + * + * @return void + */ + public function print_column_headers( $with_id = true ) { + // do not print column ids + parent::print_column_headers( false ); + } + + /** + * Display bulk actions. + * + * @return array + */ + public function get_bulk_actions() { + return []; + } + + /** + * Display empty result. + * + * @return void + */ + public function no_items() { + echo __( 'No cookie consent logs found.', 'cookie-notice' ); + } +} diff --git a/wp-content/plugins/cookie-notice/includes/consent-logs.php b/wp-content/plugins/cookie-notice/includes/consent-logs.php new file mode 100644 index 0000000..27a3af1 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/consent-logs.php @@ -0,0 +1,120 @@ +format( 'Y-m-d' ) === $date ) { + $data = Cookie_Notice()->welcome_api->get_cookie_consent_logs( $date ); + + if ( is_array( $data ) ) + wp_send_json_success( $this->get_cookie_consent_logs_table( $data ) ); + else + wp_send_json_error( $data ); + } + + wp_send_json_error(); + } + + /** + * Get consent logs from specific date. + * + * @param array $data + * + * @return string + */ + public function get_cookie_consent_logs_table( $data ) { + // include wp list table class if needed + if ( ! class_exists( 'WP_List_Table' ) ) + include_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' ); + + // include consent logs list table + include_once( COOKIE_NOTICE_PATH . '/includes/consent-logs-list-table.php' ); + + // initialize list table + $list_table = new Cookie_Notice_Consent_Logs_List_Table( [ + 'plural' => 'cn-cookie-consent-day-logs', + 'singular' => 'cn-cookie-consent-day-log', + 'ajax' => false + ] ); + + // prepare data + $list_table->cn_set_data( $data ); + + // prepare items + $list_table->prepare_items(); + + ob_start(); + $list_table->display(); + $html = ob_get_clean(); + + return $html; + } + + /** + * Get single row template. + * + * @return string + */ + public function get_single_row_template() { + return ' + + + + + + '; + } + + /** + * Get error template. + * + * @return string + */ + public function get_error_template() { + return '

    ' . esc_html__( 'We were unable to download consent logs due to an error. Please try again later.', 'cookie-notice' ) . '

    '; + } +} diff --git a/wp-content/plugins/cookie-notice/includes/dashboard.php b/wp-content/plugins/cookie-notice/includes/dashboard.php new file mode 100644 index 0000000..c8ede64 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/dashboard.php @@ -0,0 +1,782 @@ += $max ) { + continue; + } + } + + if ( ! $best || $rule['priority'] > $best['priority'] ) { + $best = $rule; + } + } + + return $best; +} + +/** + * Cookie_Notice_Dashboard class. + * + * @class Cookie_Notice_Dashboard + */ +class Cookie_Notice_Dashboard { + + /** + * Class constructor. + * + * @return void + */ + public function __construct() { + // actions + add_action( 'wp_dashboard_setup', [ $this, 'wp_dashboard_setup' ], 11 ); + add_action( 'wp_network_dashboard_setup', [ $this, 'wp_dashboard_setup' ], 11 ); + add_action( 'admin_enqueue_scripts', [ $this, 'admin_scripts_styles' ] ); + + // site status + add_filter( 'site_status_tests', [ $this, 'add_tests' ] ); + } + + /** + * Initialize widget. + * + * @global array $wp_meta_boxes + * + * @return void + */ + public function wp_dashboard_setup() { + // filter user_can_see_stats + if ( ! current_user_can( apply_filters( 'cn_manage_cookie_notice_cap', 'manage_options' ) ) ) + return; + + // get main instance + $cn = Cookie_Notice(); + + // check when to hide widget + if ( is_multisite() ) { + // site dashboard + if ( current_action() === 'wp_dashboard_setup' && $cn->is_plugin_network_active() && $cn->network_options['general']['global_override'] ) + return; + + // network dashboard + if ( current_action() === 'wp_network_dashboard_setup' ) { + if ( $cn->is_plugin_network_active() ) { + if ( ! $cn->network_options['general']['global_override'] ) + return; + } else + return; + } + } + + // check is it network admin + if ( $cn->is_network_admin() ) + $dashboard_key = 'dashboard-network'; + else + $dashboard_key = 'dashboard'; + + global $wp_meta_boxes; + + // set widget key + $widget_key = 'cn_dashboard_stats'; + + // add dashboard chart widget + wp_add_dashboard_widget( $widget_key, __( 'Compliance by Hu-manity.co', 'cookie-notice' ), [ $this, 'dashboard_widget' ] ); + + // get widgets + $normal_dashboard = $wp_meta_boxes[$dashboard_key]['normal']['core']; + + // attempt to place the widget at the top + $widget_instance = [ + $widget_key => $normal_dashboard[ $widget_key ] + ]; + + // remove new widget + unset( $normal_dashboard[ $widget_key ] ); + + // merge widgets + $sorted_dashboard = array_merge( $widget_instance, $normal_dashboard ); + + // update widgets + $wp_meta_boxes[$dashboard_key]['normal']['core'] = $sorted_dashboard; + } + + /** + * Enqueue admin scripts and styles. + * + * @param string $pagenow + * @return void + */ + public function admin_scripts_styles( $pagenow ) { + if ( $pagenow !== 'index.php' ) + return; + + // filter user_can_see_stats + if ( ! current_user_can( apply_filters( 'cn_manage_cookie_notice_cap', 'manage_options' ) ) ) + return; + + // get main instance + $cn = Cookie_Notice(); + + $date_format = get_option( 'date_format' ); + + if ( is_multisite() && $cn->is_network_admin() && $cn->is_plugin_network_active() && $cn->network_options['general']['global_override'] ) + $analytics = get_site_option( 'cookie_notice_app_analytics', [] ); + else + $analytics = get_option( 'cookie_notice_app_analytics', [] ); + + // styles + wp_enqueue_style( 'cookie-notice-admin-dashboard', COOKIE_NOTICE_URL . '/css/admin-dashboard.css', [], $cn->defaults['version'] ); + wp_enqueue_style( 'cookie-notice-microtip', COOKIE_NOTICE_URL . '/assets/microtip/microtip.min.css', [], $cn->defaults['version'] ); + + // bail if compliance is not active + if ( $cn->get_status() !== 'active' ) + return; + + // scripts + wp_register_script( 'cookie-notice-admin-chartjs', COOKIE_NOTICE_URL . '/assets/chartjs/chart.min.js', [ 'jquery' ], '4.5.1', true ); + wp_enqueue_script( 'cookie-notice-admin-dashboard', COOKIE_NOTICE_URL . '/js/admin-dashboard.js', [ 'jquery', 'cookie-notice-admin-chartjs' ], $cn->defaults['version'], true ); + + // cycle usage data + $cycle_usage = [ + 'threshold' => ! empty( $analytics['cycleUsage']->threshold ) ? (int) $analytics['cycleUsage']->threshold : 0, + 'visits' => ! empty( $analytics['cycleUsage']->visits ) ? (int) $analytics['cycleUsage']->visits : 0 + ]; + + // no more than threshold available + $cycle_usage['visits'] = $cycle_usage['visits'] > $cycle_usage['threshold'] ? $cycle_usage['threshold'] : $cycle_usage['visits']; + + // available visits, -1 for no pro plans + $cycle_usage['visits_available'] = $cycle_usage['threshold'] ? $cycle_usage['threshold'] - $cycle_usage['visits'] : -1; + + // get used threshold info + if ( $cycle_usage['threshold'] > 0 ) { + $threshold_used = ( $cycle_usage['visits'] / $cycle_usage['threshold'] ) * 100; + + if ( $threshold_used > 100 ) + $threshold_used = 100; + } else + $threshold_used = 0; + + // CN_DEV_MODE: override usage % for testing. Param: ?cn_usage=0-100 + if ( defined( 'CN_DEV_MODE' ) && CN_DEV_MODE && current_user_can( 'manage_options' ) && isset( $_GET['cn_usage'] ) ) { + $cn_usage_override = (int) $_GET['cn_usage']; + + if ( $cn_usage_override >= 0 && $cn_usage_override <= 100 ) { + $threshold_used = $cn_usage_override; + + if ( $cycle_usage['threshold'] <= 0 ) + $cycle_usage['threshold'] = 10000; + + $cycle_usage['visits'] = (int) round( $cycle_usage['threshold'] * ( $threshold_used / 100 ) ); + $cycle_usage['visits_available'] = $cycle_usage['threshold'] - $cycle_usage['visits']; + } + } + + $chartdata = [ + 'usage' => [ + 'type' => 'doughnut', + 'options' => [ + 'responsive' => true, + 'plugins' => [ + 'legend' => [ + 'position' => 'top' + ] + ], + 'hover' => [ + 'mode' => 'label' + ], + 'layout' => [ + 'padding' => 0 + ] + ], + 'data' => [ + 'labels' => [ + _x( 'Used', 'threshold limit', 'cookie-notice' ), + _x( 'Free', 'threshold limit', 'cookie-notice' ) + ], + 'datasets' => [ + [ + 'data' => [ $cycle_usage['visits'], $cycle_usage['visits_available'] ], + 'backgroundColor' => [ + 'rgb(32, 193, 158)', + 'rgb(235, 233, 235)' + ] + ] + ] + ] + ], + 'consent-activity' => [ + 'type' => 'line', + 'options' => [ + 'maintainAspectRatio' => false, + 'responsive' => true, + 'scales' => [ + 'x' => [ + 'display' => true, + 'title' => [ + 'display' => false + ] + ], + 'y' => [ + 'display' => true, + 'grace' => 0, + 'beginAtZero' => true, + 'title' => [ + 'display' => false + ], + 'ticks' => [ + 'precision' => 0, + 'maxTicksLimit' => 12 + ] + ] + ] + ] + ], + 'privacy-consent-logs-activity' => [ + 'type' => 'line', + 'options' => [ + 'maintainAspectRatio' => false, + 'responsive' => true, + 'scales' => [ + 'x' => [ + 'display' => true, + 'title' => [ + 'display' => false + ] + ], + 'y' => [ + 'display' => true, + 'grace' => 0, + 'beginAtZero' => true, + 'title' => [ + 'display' => false + ], + 'ticks' => [ + 'precision' => 0, + 'maxTicksLimit' => 12 + ] + ] + ], + 'plugins' => [ + 'legend' => [ + 'display' => false + ] + ] + ] + ] + ]; + + // warning usage color + if ( $threshold_used > 80 && $threshold_used < 100 ) + $chartdata['usage']['data']['datasets'][0]['backgroundColor'][0] = 'rgb(255, 193, 7)'; + // danger usage color + elseif ( $threshold_used == 100 ) + $chartdata['usage']['data']['datasets'][0]['backgroundColor'][0] = 'rgb(220, 53, 69)'; + + $consent_activity_data = [ + 'labels' => [], + 'datasets' => [ + 0 => [ + 'label' => sprintf( __( 'Level %s', 'cookie-notice' ), 1 ), + 'data' => [], + 'fill' => true, + 'backgroundColor' => 'rgba(196, 196, 196, 0.3)', + 'borderColor' => 'rgba(196, 196, 196, 1)', + 'borderWidth' => 1.2, + 'borderDash' => [], + 'pointBorderColor' => 'rgba(196, 196, 196, 1)', + 'pointBackgroundColor' => 'rgba(255, 255, 255, 1)', + 'pointBorderWidth' => 1.2 + ], + 1 => [ + 'label' => sprintf( __( 'Level %s', 'cookie-notice' ), 2 ), + 'data' => [], + 'fill' => true, + 'backgroundColor' => 'rgba(213, 181, 101, 0.3)', + 'borderColor' => 'rgba(213, 181, 101, 1)', + 'borderWidth' => 1.2, + 'borderDash' => [], + 'pointBorderColor' => 'rgba(213, 181, 101, 1)', + 'pointBackgroundColor' => 'rgba(255, 255, 255, 1)', + 'pointBorderWidth' => 1.2 + ], + 2 => [ + 'label' => sprintf( __( 'Level %s', 'cookie-notice' ), 3 ), + 'data' => [], + 'fill' => true, + 'backgroundColor' => 'rgba(152, 145, 177, 0.3)', + 'borderColor' => 'rgba(152, 145, 177, 1)', + 'borderWidth' => 1.2, + 'borderDash' => [], + 'pointBorderColor' => 'rgba(152, 145, 177, 1)', + 'pointBackgroundColor' => 'rgba(255, 255, 255, 1)', + 'pointBorderWidth' => 1.2 + ] + ] + ]; + + // generate chart days + $chart_date_format = 'j/m'; + + for ( $i = 29; $i >= 0; $i-- ) { + // set label + $consent_activity_data['labels'][] = date( $chart_date_format, strtotime( '-'. ( $i + 1 ) .' days' ) ); + + // reset datasets + $consent_activity_data['datasets'][0]['data'][] = 0; + $consent_activity_data['datasets'][1]['data'][] = 0; + $consent_activity_data['datasets'][2]['data'][] = 0; + } + + if ( ! empty( $analytics['consentActivities'] ) && is_array( $analytics['consentActivities'] ) ) { + // set consent records in charts days + foreach ( $analytics['consentActivities'] as $index => $entry ) { + $time = date_i18n( $chart_date_format, strtotime( $entry->eventdt ) ); + $i = array_search( $time, $consent_activity_data['labels'] ); + + if ( $i !== false ) + $consent_activity_data['datasets'][(int) $entry->consentlevel - 1]['data'][$i] = (int) $entry->totalrecd; + } + } + + $chartdata['consent-activity']['data'] = $consent_activity_data; + + $privacy_consent_logs_activity_data = [ + 'labels' => [], + 'datasets' => [ + 0 => [ + 'label' => __( 'Privacy Content Logs', 'cookie-notice' ), + 'data' => [], + 'fill' => true, + 'backgroundColor' => 'rgba(32, 193, 158, 0.3)', + 'borderColor' => 'rgba(32, 193, 158, 1)', + 'borderWidth' => 1.2, + 'borderDash' => [], + 'pointBorderColor' => 'rgba(32, 193, 158, 1)', + 'pointBackgroundColor' => 'rgba(255, 255, 255, 1)', + 'pointBorderWidth' => 1.2 + ] + ] + ]; + + for ( $i = 29; $i >= 0; $i-- ) { + // set label + $privacy_consent_logs_activity_data['labels'][] = date( $chart_date_format, strtotime( '-'. ( $i + 1 ) .' days' ) ); + + // reset dataset + $privacy_consent_logs_activity_data['datasets'][0]['data'][] = 0; + } + + if ( ! empty( $analytics['privacyActivities'] ) && is_array( $analytics['privacyActivities'] ) ) { + // set consent records in charts days + foreach ( $analytics['privacyActivities'] as $index => $entry ) { + $time = date_i18n( $chart_date_format, strtotime( $entry->date ) ); + $i = array_search( $time, $privacy_consent_logs_activity_data['labels'] ); + + if ( $i !== false ) + $privacy_consent_logs_activity_data['datasets'][0]['data'][$i] = (int) $entry->count; + } + } + + $chartdata['privacy-consent-logs-activity']['data'] = $privacy_consent_logs_activity_data; + + // prepare script data + $script_data = [ + 'ajaxURL' => admin_url( 'admin-ajax.php' ), + 'nonce' => wp_create_nonce( 'cn-dashboard-widget' ), + 'nonceUser' => wp_create_nonce( 'cn-dashboard-user-options' ), + 'charts' => $chartdata + ]; + + wp_add_inline_script( 'cookie-notice-admin-dashboard', 'var cnDashboardArgs = ' . wp_json_encode( $script_data ) . ";\n", 'before' ); + } + + /** + * Render dashboard widget. + * + * @return void + */ + public function dashboard_widget() { + // get main instance + $cn = Cookie_Notice(); + + if ( $cn->is_network_admin() ) + $upgrade_url = network_admin_url( 'admin.php?page=cookie-notice&welcome=1' ); + else + $upgrade_url = admin_url( 'admin.php?page=cookie-notice&welcome=1' ); + + $html = ''; + + // compliance active, display chart + if ( $cn->get_status() === 'active' ) { + // get user options + $user_options = get_user_meta( get_current_user_id(), 'pvc_dashboard', true ); + + // empty options? + if ( empty( $user_options ) || ! is_array( $user_options ) ) + $user_options = []; + + // sanitize options + $user_options = map_deep( $user_options, 'sanitize_text_field' ); + + // get menu items + $menu_items = ! empty( $user_options['menu_items'] ) ? $user_options['menu_items'] : []; + + $items = [ + [ + 'id' => 'visits', + 'title' => esc_html__( 'Traffic Overview', 'cookie-notice' ), + 'description' => esc_html__( 'Displays the general visits information for your domain.', 'cookie-notice' ) + ], + [ + 'id' => 'consent-activity', + 'title' => esc_html__( 'Cookie Consent Activity', 'cookie-notice' ), + 'description' => esc_html__( 'Displays the chart of the domain cookie consent activity in the last 30 days.', 'cookie-notice' ) + ], + [ + 'id' => 'privacy-consent-logs-activity', + 'title' => esc_html__( 'Privacy Consent Activity', 'cookie-notice' ), + 'description' => esc_html__( 'Displays the chart of the domain privacy consent activity in the last 30 days.', 'cookie-notice' ) + ] + ]; + + $html .= ' +
    '; + + foreach ( $items as $item ) { + $html .= $this->widget_item( $item, $menu_items ); + } + + $html .= ' +
    '; + // compliance inactive, display image + } else { + $html .= ' +
    + Compliance by Hu-manity.co widget +
    +
    +

    ' . esc_html__( 'View consent activity inside WordPress Dashboard', 'cookie-notice' ) . '

    +

    ' . esc_html__( 'Display information about the visits.', 'cookie-notice' ) . '

    +

    ' . esc_html__( 'Get Consent logs data for the last 30 days.', 'cookie-notice' ) . '

    +

    ' . esc_html__( 'Enable consent purpose categories, automatic cookie blocking and more.', 'cookie-notice' ) . '

    +

    ' . esc_html__( 'Try Compliance by Hu-manity.co free', 'cookie-notice' ) . '

    +
    +
    +
    '; + } + + // allows a list of html entities such as + $allowed_html = wp_kses_allowed_html( 'post' ); + $allowed_html['canvas'] = [ + 'id' => true, + 'height' => true + ]; + + echo wp_kses( $html, $allowed_html ); + } + + /** + * Generate dashboard widget item HTML. + * + * @param array $item + * @param array $menu_items + * @return string + */ + public function widget_item( $item, $menu_items ) { + return ' +
    +
    +
    ' . esc_html( $item['title'] ) . '
    +
    +
    +
    +
    + ' . $this->widget_item_content( $item['id'] ) . ' + +
    +
    +
    +
    '; + } + + /** + * Generate dashboard widget item content HTML. + * + * @param array $item + * @return void + */ + public function widget_item_content( $item ) { + $html = ''; + + switch ( $item ) { + case 'visits': + // get main instance + $cn = Cookie_Notice(); + + $date_format = get_option( 'date_format' ); + + // get analytics data options + if ( is_multisite() && $cn->is_network_admin() && $cn->is_plugin_network_active() && $cn->network_options['general']['global_override'] ) + $analytics = get_site_option( 'cookie_notice_app_analytics', [] ); + else + $analytics = get_option( 'cookie_notice_app_analytics', [] ); + + // thirty days data + $thirty_days_usage = [ + 'visits' => ! empty( $analytics['thirtyDaysUsage']->visits ) ? (int) $analytics['thirtyDaysUsage']->visits : 0, + 'consents' => 0, + 'consents_updated' => ! empty( $analytics['lastUpdated'] ) ? date_create_from_format( 'Y-m-d H:i:s', $analytics['lastUpdated'] ) : date_create_from_format( 'Y-m-d H:i:s', current_time( 'mysql', true ) ) + ]; + + // set current timezone + $current_timezone = new DateTimeZone( $this->timezone_string() ); + + // update date + $thirty_days_usage['consents_updated']->setTimezone( $current_timezone ); + + if ( ! empty( $analytics['consentActivities'] ) ) { + foreach ( $analytics['consentActivities'] as $index => $entry ) { + $thirty_days_usage['consents'] += (int) $entry->totalrecd; + } + } + + // cycle usage data + $cycle_usage = [ + 'threshold' => ! empty( $analytics['cycleUsage']->threshold ) ? (int) $analytics['cycleUsage']->threshold : 0, + 'visits' => ! empty( $analytics['cycleUsage']->visits ) ? (int) $analytics['cycleUsage']->visits : 0, + 'days_to_go' => ! empty( $analytics['cycleUsage']->daysToGo ) ? (int) $analytics['cycleUsage']->daysToGo : 0, + 'start_date' => ! empty( $analytics['cycleUsage']->startDate ) ? date_create_from_format( '!Y-m-d', $analytics['cycleUsage']->startDate ) : '' + ]; + + // get used threshold info + if ( $cycle_usage['threshold'] > 0 ) { + $threshold_used = ( $cycle_usage['visits'] / $cycle_usage['threshold'] ) * 100; + + if ( $threshold_used > 100 ) + $threshold_used = 100; + } else + $threshold_used = 0; + + // CN_DEV_MODE: override usage % for testing. Param: ?cn_usage=0-100 + if ( defined( 'CN_DEV_MODE' ) && CN_DEV_MODE && current_user_can( 'manage_options' ) && isset( $_GET['cn_usage'] ) ) { + $cn_usage_override = (int) $_GET['cn_usage']; + + if ( $cn_usage_override >= 0 && $cn_usage_override <= 100 ) { + $threshold_used = $cn_usage_override; + + if ( $cycle_usage['threshold'] <= 0 ) + $cycle_usage['threshold'] = 10000; + + $cycle_usage['visits'] = (int) round( $cycle_usage['threshold'] * ( $threshold_used / 100 ) ); + $cycle_usage['visits_available'] = $cycle_usage['threshold'] - $cycle_usage['visits']; + } + } + + $html .= ' +
    +
    +
    +
    ' . esc_html__( 'Total Visits', 'cookie-notice' ) . '
    +
    ' . esc_html( number_format_i18n( $thirty_days_usage['visits'], 0 ) ) . '
    +
    ' . esc_html__( 'Last 30 days', 'cookie-notice' ) . '
    +
    +
    +
    ' . esc_html__( 'Consent Logs', 'cookie-notice' ) . '
    +
    ' . esc_html( number_format_i18n( $thirty_days_usage['consents'], 0 ) ) . '
    +
    ' . esc_html( sprintf( __( 'Updated %s', 'cookie-notice' ), date_i18n( $date_format, $thirty_days_usage['consents_updated']->getTimestamp() ) ) ) . '
    +
    +
    '; + + if ( $cycle_usage['threshold'] ) { + $usage_class = 'success'; + + // warning usage color + if ( $threshold_used > 80 && $threshold_used < 100 ) + $usage_class = 'warning'; + // danger usage color + elseif ( $threshold_used === 100 ) + $usage_class = 'danger'; + + $html .= ' +
    +
    +
    ' . esc_html__( 'Traffic Usage', 'cookie-notice' ) . '
    +
    ' . esc_html( number_format_i18n( $threshold_used, 1 ) ) . ' %
    +
    +

    ' . esc_html( sprintf( __( 'Visits usage: %1$s / %2$s', 'cookie-notice' ), $cycle_usage['visits'], $cycle_usage['threshold'] ) ) . '

    +

    ' . esc_html( sprintf( __( 'Cycle started: %s', 'cookie-notice' ), date_i18n( $date_format, $cycle_usage['start_date']->getTimestamp() ) ) ) . '

    +

    ' . esc_html( sprintf( __( 'Days to go: %s', 'cookie-notice' ), $cycle_usage['days_to_go'] ) ) . '

    +
    +
    +
    + +
    '; + + // Near-limit nudge — reads copy from shared notifications.json. + $cn_dash_tier = 'basic'; + if ( ! empty( $cn->options['general']['app_id'] ) ) { + $cn_dash_tier = ( $cn->get_subscription() === 'pro' ) ? 'pro' : 'free'; + } + $cn_dash_notification = cn_get_dashboard_notification( $threshold_used, $cn_dash_tier ); + + if ( $cn_dash_notification ) { + $react_welcome_url = $cn->is_network_admin() + ? network_admin_url( 'admin.php?page=cookie-notice&cn_react_welcome=1' ) + : admin_url( 'admin.php?page=cookie-notice&cn_react_welcome=1' ); + + $cn_dash_desc = str_replace( + [ '{usagePercent}', '{sessionTotal}', '{sessionUsed}' ], + [ number_format_i18n( $threshold_used, 0 ), number_format_i18n( $cycle_usage['threshold'] ), number_format_i18n( $cycle_usage['visits'] ) ], + $cn_dash_notification['description'] ?? '' + ); + $cn_dash_cta_label = $cn_dash_notification['cta']['label'] ?? 'Upgrade →'; + + $html .= ' +
    +

    ' . esc_html( $cn_dash_desc ) . '

    +

    ' . esc_html( $cn_dash_cta_label ) . '

    +
    '; + } + + $html .= ' +
    '; + } + + $html .= ' +
    '; + break; + + case 'consent-activity': + $html .= ' +
    +
    + +
    +
    '; + break; + + case 'privacy-consent-logs-activity': + $html .= ' +
    +
    + +
    +
    '; + break; + } + + return $html; + } + + /** + * Add site test. + * + * @param array $tests + * @return array + */ + public function add_tests( $tests ) { + $tests['direct']['cookie_compliance_status'] = [ + 'label' => esc_html__( 'Compliance by Hu-manity.co Status', 'cookie-notice' ), + 'test' => [ $this, 'test_cookie_compliance' ] + ]; + + return $tests; + } + + /** + * Test for Cookie Compliance. + * + * @return array|void + */ + public function test_cookie_compliance() { + if ( Cookie_Notice()->get_status() !== 'active' ) { + return [ + 'label' => esc_html__( 'Your site does not have Compliance by Hu-manity.co', 'cookie-notice' ), + 'status' => 'recommended', + 'description' => esc_html__( "Run Compliance Check to determine your site's compliance with updated data processing and consent rules under GDPR, CCPA and other international data privacy laws.", 'cookie-notice' ), + 'actions' => sprintf( '

    %s

    ', admin_url( 'admin.php?page=cookie-notice&welcome=1' ), esc_html__( 'Run Compliance Check', 'cookie-notice' ) ), + 'test' => 'cookie_compliance_status', + 'badge' => [ + 'label' => esc_html__( 'Compliance', 'cookie-notice' ), + 'color' => 'blue' + ] + ]; + } else { + return [ + 'label' => esc_html__( 'Compliance by Hu-manity.co is active', 'cookie-notice' ), + 'status' => 'good', + 'description' => esc_html__( 'Compliance by Hu-manity.co is configured with active Compliance by Hu-manity.co protection. Your site is collecting consent in accordance with GDPR, CCPA, and other applicable privacy laws.', 'cookie-notice' ), + 'actions' => sprintf( '

    %s

    ', admin_url( 'admin.php?page=cookie-notice' ), esc_html__( 'View compliance dashboard', 'cookie-notice' ) ), + 'test' => 'cookie_compliance_status', + 'badge' => [ + 'label' => esc_html__( 'Compliance', 'cookie-notice' ), + 'color' => 'green' + ] + ]; + } + } + + /** + * Retrieve the timezone of the site as a string. + * + * @return string + */ + public function timezone_string() { + if ( function_exists( 'wp_timezone_string' ) ) + return wp_timezone_string(); + + $timezone_string = get_option( 'timezone_string' ); + + if ( $timezone_string ) + return $timezone_string; + + $offset = (float) get_option( 'gmt_offset' ); + $hours = (int) $offset; + $minutes = ( $offset - $hours ); + $sign = ( $offset < 0 ) ? '-' : '+'; + $abs_hour = abs( $hours ); + $abs_mins = abs( $minutes * 60 ); + $tz_offset = sprintf( '%s%02d:%02d', $sign, $abs_hour, $abs_mins ); + + return $tz_offset; + } +} diff --git a/wp-content/plugins/cookie-notice/includes/frontend.php b/wp-content/plugins/cookie-notice/includes/frontend.php new file mode 100644 index 0000000..2568170 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/frontend.php @@ -0,0 +1,902 @@ +compliance = ( $cn->get_status() === 'active' ); + + // cookie compliance initialization + if ( $this->compliance ) { + // amp compatibility + if ( $cn->options['general']['amp_support'] && cn_is_plugin_active( 'amp' ) ) + include_once( COOKIE_NOTICE_PATH . 'includes/modules/amp/amp.php' ); + + // excluded script handles — stamp data-hu-category="1" so the widget never blocks them + if ( $cn->options['general']['app_blocking'] && ! empty( $cn->options['general']['excluded_handles'] ) ) { + add_filter( 'script_loader_tag', [ $this, 'exclude_handles_from_blocking' ], 10, 2 ); + + if ( $cn->options['general']['debug_mode'] ) + add_action( 'wp_footer', [ $this, 'debug_excluded_handles' ], 999 ); + } + } + } + + /** + * Stamp excluded script handles with data-hu-category="1" (Essential). + * + * @param string $tag Full ' . "\n"; + } + + /** + * Initialize plugin. + * + * @return void + */ + public function init() { + if ( is_admin() ) + return; + + // purge cache + if ( + isset( $_GET['hu_purge_cache'], $_GET['_wpnonce'] ) + && current_user_can( apply_filters( 'cn_manage_cookie_notice_cap', 'manage_options' ) ) + && wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) ), 'cn-purge-cache' ) + ) { + $this->purge_cache(); + } + + // get main instance + $cn = Cookie_Notice(); + + // compatibility fixes + if ( $this->compliance ) { + // is blocking active? + if ( $cn->options['general']['app_blocking'] ) { + // contact form 7 compatibility + if ( cn_is_plugin_active( 'contactform7', 'captcha' ) ) + include_once( COOKIE_NOTICE_PATH . 'includes/modules/contact-form-7/contact-form-7.php' ); + } + } + } + + /** + * Whether banner is allowed to display. + * + * @param array $args + * @return bool + */ + public function maybe_display_banner( $args = [] ) { + $defaults = [ + 'skip_amp' => false + ]; + + if ( is_array( $args ) ) + $args = wp_parse_args( $args, $defaults ); + else + $args = $defaults; + + // get main instance + $cn = Cookie_Notice(); + + // is cookie compliance active? + if ( $this->compliance ) { + // elementor compatibility, needed early for is_preview_mode + if ( cn_is_plugin_active( 'elementor' ) ) + include_once( COOKIE_NOTICE_PATH . 'includes/modules/elementor/elementor.php' ); + + // divi builder compatibility + if ( cn_is_plugin_active( 'divi', 'theme' ) ) + include_once( COOKIE_NOTICE_PATH . 'includes/modules/divi/divi.php' ); + } + + // is it preview mode? + if ( $this->is_preview_mode() ) + return false; + + // is bot detection enabled and it's a bot? + if ( $cn->options['general']['bot_detection'] && apply_filters( 'cn_is_bot', $cn->bot_detect->is_crawler() ) ) + return false; + + // check amp + if ( ! $args['skip_amp'] ) { + if ( $cn->options['general']['amp_support'] && cn_is_plugin_active( 'amp' ) && function_exists( 'amp_is_request' ) && amp_is_request() ) + return false; + } + + // final check for conditional display + return $this->check_conditions(); + } + + /** + * Check if WP_CACHE is active. + * + * @return bool + */ + public function wp_cache_check( $result ) { + if ( defined( 'WP_CACHE' ) && WP_CACHE === true ) + $result = false; + + return $result; + } + + /** + * Whether preview mode is active. + * + * @return bool + */ + public function is_preview_mode() { + return isset( $_GET['cn_preview_mode'] ) || is_preview() || is_customize_preview() || defined( 'IFRAME_REQUEST' ) || ( function_exists( 'wp_is_json_request' ) && wp_is_json_request() ) || isset( $_GET[ 'fl_builder' ] ) || apply_filters( 'cn_is_preview_mode', false ); + } + + /** + * Check whether banner should be displayed based on specified conditions. + * + * @return bool + */ + public function check_conditions() { + // get main instance + $cn = Cookie_Notice(); + + if ( ! $cn->options['general']['conditional_active'] ) + return true; + + // get conditions + $rules = $cn->options['general']['conditional_rules']; + + // set access type + $access_type = $cn->options['general']['conditional_display'] === 'show'; + + // get object + $object = get_queried_object(); + + // no rules? + if ( empty( $rules ) ) + $final_access = true; + else { + // check the rules + foreach( $rules as $index => $group ) { + $give_group_access = true; + + foreach ( $group as $rule ) { + $give_rule_access = false; + + switch ( $rule['param'] ) { + case 'page_type': + if ( ( $rule['operator'] === 'equal' && $rule['value'] === 'front' && is_front_page() ) || ( $rule['operator'] === 'not_equal' && $rule['value'] === 'front' && ! is_front_page() ) || ( $rule['operator'] === 'equal' && $rule['value'] === 'home' && is_home() ) || ( $rule['operator'] === 'not_equal' && $rule['value'] === 'home' && ! is_home() ) || ( $rule['operator'] === 'equal' && $rule['value'] === 'login' && $this->is_login() ) || ( $rule['operator'] === 'not_equal' && $rule['value'] === 'login' && ! $this->is_login() ) ) + $give_rule_access = true; + break; + + case 'page': + if ( ( $rule['operator'] === 'equal' && ! empty( $object ) && is_a( $object, 'WP_Post' ) && property_exists( $object, 'ID' ) && is_page( $object->ID ) && (int) $object->ID === (int) $rule['value'] ) || ( $rule['operator'] === 'not_equal' && ( empty( $object ) || ! is_page() || ( is_page() && ! empty( $object ) && is_a( $object, 'WP_Post' ) && property_exists( $object, 'ID' ) && $object->ID !== (int) $rule['value'] ) ) ) ) + $give_rule_access = true; + break; + + case 'post_type': + if ( ( $rule['operator'] === 'equal' && is_singular( $rule['value'] ) ) || ( $rule['operator'] === 'not_equal' && ! is_singular( $rule['value'] ) ) ) + $give_rule_access = true; + break; + + case 'post_type_archive': + if ( ( $rule['operator'] === 'equal' && is_post_type_archive( $rule['value'] ) ) || ( $rule['operator'] === 'not_equal' && ! is_post_type_archive( $rule['value'] ) ) ) + $give_rule_access = true; + break; + + case 'user_type': + if ( ( $rule['operator'] === 'equal' && $rule['value'] === 'logged_in' && is_user_logged_in() ) || ( $rule['operator'] === 'equal' && $rule['value'] === 'guest' && ! is_user_logged_in() ) || ( $rule['operator'] === 'not_equal' && $rule['value'] === 'logged_in' && ! is_user_logged_in() ) || ( $rule['operator'] === 'not_equal' && $rule['value'] === 'guest' && is_user_logged_in() ) ) + $give_rule_access = true; + break; + + case 'taxonomy_archive': + // check value + if ( strpos( $rule['value'], '|' ) !== false ) { + // explode it + $values = explode( '|', $rule['value'] ); + + // 2 chunks? + if ( count( $values ) === 2 ) { + $term_id = (int) $values[0]; + + if ( $values[1] === 'category' && ( ( $rule['operator'] === 'equal' && is_category( $term_id ) ) || ( $rule['operator'] === 'not_equal' && ! is_category( $term_id ) ) ) ) + $give_rule_access = true; + elseif ( $values[1] === 'post_tag' && ( ( $rule['operator'] === 'equal' && is_tag( $term_id ) ) || ( $rule['operator'] === 'not_equal' && ! is_tag( $term_id ) ) ) ) + $give_rule_access = true; + elseif ( ( $rule['operator'] === 'equal' && is_tax( $values[1], $term_id ) ) || ( $rule['operator'] === 'not_equal' && ! is_tax( $values[1], $term_id ) ) ) + $give_rule_access = true; + } + } + break; + } + + // condition failed? + if ( ! $give_rule_access ) { + // group failed + $give_group_access = false; + + // finish group checking + break; + } + } + + // whole group successful? + if ( $give_group_access ) { + // set final access + $final_access = $access_type; + + // finish rules checking + break; + } else + $final_access = ! $access_type; + } + } + + return (bool) apply_filters( 'cn_conditional_display', $final_access, $object ); + } + + /** + * Determine whether the current request is for the login screen. + * + * @return bool + */ + public function is_login() { + return ( function_exists( 'is_login' ) ? is_login() : ( stripos( wp_login_url(), $_SERVER['SCRIPT_NAME'] ) !== false ) ); + } + + /** + * Get Cookie Compliance options. + * + * @return array + */ + public function get_cc_options() { + // get main instance + $cn = Cookie_Notice(); + + // get site language + $locale = get_locale(); + $locale_code = explode( '_', $locale ); + + // exceptions, norwegian + if ( is_array( $locale_code ) && in_array( $locale_code[0], [ 'nb', 'nn' ] ) ) + $locale_code[0] = 'no'; + + // get active sources + $sources = $cn->privacy_consent->get_active_sources(); + + // prepare huOptions + $options = [ + 'appID' => $cn->options['general']['app_id'], + 'currentLanguage' => $locale_code[0], + 'blocking' => ! is_user_logged_in() ? $cn->options['general']['app_blocking'] : false, + 'globalCookie' => is_multisite() && $cn->options['general']['global_cookie'] && is_subdomain_install(), + 'isAdmin' => current_user_can( apply_filters( 'cn_manage_cookie_notice_cap', 'manage_options' ) ), + 'privacyConsent' => ! empty( $sources ) + ]; + + // any active source? + if ( ! empty( $sources ) ) + $options['forms'] = []; + + // filter options + $options = apply_filters( 'cn_cookie_compliance_args', $options ); + + // get config timestamp + if ( is_multisite() && $cn->is_plugin_network_active() && $cn->network_options['general']['global_override'] ) + $timestamp = (int) get_site_transient( 'cookie_notice_config_update' ); + else + $timestamp = (int) get_transient( 'cookie_notice_config_update' ); + + // update config? + if ( $timestamp > 0 ) { + $options['cachePurge'] = true; + $options['cacheTimestamp'] = $timestamp; + } + + // debug mode + if ( $cn->options['general']['debug_mode'] ) + $options['debugMode'] = true; + + // blocking data (custom patterns, providers, consent mode defaults) + // always include in huOptions so the widget has the full configuration; + // the huOptions.blocking flag controls whether scripts are actually blocked + if ( $cn->is_network_options() ) + $blocking = get_site_option( 'cookie_notice_app_blocking' ); + else + $blocking = get_option( 'cookie_notice_app_blocking' ); + + if ( ! empty( $blocking ) && is_array( $blocking ) ) { + $options['customProviders'] = ! empty( $blocking['providers'] ) && is_array( $blocking['providers'] ) ? $blocking['providers'] : []; + $options['customPatterns'] = ! empty( $blocking['patterns'] ) && is_array( $blocking['patterns'] ) ? $blocking['patterns'] : []; + + // google consent mode default categories + if ( ! empty( $blocking['google_consent_default'] ) && is_array( $blocking['google_consent_default'] ) ) { + $gcd = []; + + foreach ( $blocking['google_consent_default'] as $storage => $category ) { + if ( in_array( $storage, ['ad_storage', 'analytics_storage', 'functionality_storage', 'personalization_storage', 'security_storage', 'ad_personalization', 'ad_user_data'], true ) ) + $gcd[$storage] = (int) $category; + } + + if ( ! empty( $gcd ) ) + $options['googleConsentDefault'] = $gcd; + } + + // facebook consent mode default categories + if ( ! empty( $blocking['facebook_consent_default'] ) && is_array( $blocking['facebook_consent_default'] ) ) { + $fcd = []; + + foreach ( $blocking['facebook_consent_default'] as $storage => $category ) { + if ( in_array( $storage, ['consent'], true ) ) + $fcd[$storage] = (int) $category; + } + + if ( ! empty( $fcd ) ) + $options['facebookConsentDefault'] = $fcd; + } + + // microsoft consent mode default categories + if ( ! empty( $blocking['microsoft_consent_default'] ) && is_array( $blocking['microsoft_consent_default'] ) ) { + $mcd = []; + + foreach ( $blocking['microsoft_consent_default'] as $storage => $category ) { + if ( in_array( $storage, ['ad_storage', 'analytics_storage'], true ) ) + $mcd[$storage] = (int) $category; + } + + if ( ! empty( $mcd ) ) + $options['microsoftConsentDefault'] = $mcd; + } + } + + if ( isset( $_GET['cn_preview'] ) && $_GET['cn_preview'] === '1' && current_user_can( 'manage_options' ) ) { + $options['forceShow'] = true; + } + + return $options; + } + + /** + * Get Cookie Compliance output. + * + * @param array $options + * @return string + */ + public function get_cc_output( $options ) { + $output = ' + + + '; + + return apply_filters( 'cn_cookie_compliance_output', $output, $options ); + } + + /** + * Add DNS Prefetch. + * + * @return void + */ + public function add_dns_prefetch() { + if ( ! $this->compliance ) + return; + + // is banner allowed to display? + if ( ! $this->maybe_display_banner() ) + return; + + // Derive prefetch host from widget URL so CN_APP_WIDGET_URL overrides are honoured. + $widget_url = Cookie_Notice()->get_url( 'widget' ); + $prefetch_host = '//' . wp_parse_url( 'https:' . $widget_url, PHP_URL_HOST ); + echo ''; + } + + /** + * Run Cookie Compliance. + * + * @return void + */ + public function add_cookie_compliance() { + // skip modal login iframe + if ( current_filter() === 'login_head' && ! empty( $_REQUEST['interim-login'] ) ) + return; + + // allow only for compliance + if ( ! $this->compliance ) + return; + + // is banner allowed to display? + if ( ! $this->maybe_display_banner() ) + return; + + // get options + $options = $this->get_cc_options(); + + // display output + echo $this->get_cc_output( $options ); + } + + /** + * Cookie notice output. + * + * @return void + */ + public function add_cookie_notice() { + // skip modal login iframe + if ( current_filter() === 'login_footer' && ! empty( $_REQUEST['interim-login'] ) ) + return; + + if ( $this->compliance ) + return; + + // is banner allowed to display? + if ( ! $this->maybe_display_banner() ) + return; + + // get main instance + $cn = Cookie_Notice(); + + // WPML >= 3.2 + if ( defined( 'ICL_SITEPRESS_VERSION' ) && version_compare( ICL_SITEPRESS_VERSION, '3.2', '>=' ) ) { + $cn->options['general']['message_text'] = apply_filters( 'wpml_translate_single_string', $cn->options['general']['message_text'], 'Cookie Notice', 'Message in the notice' ); + $cn->options['general']['accept_text'] = apply_filters( 'wpml_translate_single_string', $cn->options['general']['accept_text'], 'Cookie Notice', 'Button text' ); + $cn->options['general']['refuse_text'] = apply_filters( 'wpml_translate_single_string', $cn->options['general']['refuse_text'], 'Cookie Notice', 'Refuse button text' ); + $cn->options['general']['revoke_message_text'] = apply_filters( 'wpml_translate_single_string', $cn->options['general']['revoke_message_text'], 'Cookie Notice', 'Revoke message text' ); + $cn->options['general']['revoke_text'] = apply_filters( 'wpml_translate_single_string', $cn->options['general']['revoke_text'], 'Cookie Notice', 'Revoke button text' ); + $cn->options['general']['see_more_opt']['text'] = apply_filters( 'wpml_translate_single_string', $cn->options['general']['see_more_opt']['text'], 'Cookie Notice', 'Privacy policy text' ); + $cn->options['general']['see_more_opt']['link'] = apply_filters( 'wpml_translate_single_string', $cn->options['general']['see_more_opt']['link'], 'Cookie Notice', 'Custom link' ); + // WPML and Polylang compatibility + } elseif ( function_exists( 'icl_t' ) ) { + $cn->options['general']['message_text'] = icl_t( 'Cookie Notice', 'Message in the notice', $cn->options['general']['message_text'] ); + $cn->options['general']['accept_text'] = icl_t( 'Cookie Notice', 'Button text', $cn->options['general']['accept_text'] ); + $cn->options['general']['refuse_text'] = icl_t( 'Cookie Notice', 'Refuse button text', $cn->options['general']['refuse_text'] ); + $cn->options['general']['revoke_message_text'] = icl_t( 'Cookie Notice', 'Revoke message text', $cn->options['general']['revoke_message_text'] ); + $cn->options['general']['revoke_text'] = icl_t( 'Cookie Notice', 'Revoke button text', $cn->options['general']['revoke_text'] ); + $cn->options['general']['see_more_opt']['text'] = icl_t( 'Cookie Notice', 'Privacy policy text', $cn->options['general']['see_more_opt']['text'] ); + $cn->options['general']['see_more_opt']['link'] = icl_t( 'Cookie Notice', 'Custom link', $cn->options['general']['see_more_opt']['link'] ); + } + + if ( $cn->options['general']['see_more_opt']['link_type'] === 'page' ) { + // multisite with global override? + if ( is_multisite() && $cn->is_plugin_network_active() && $cn->network_options['general']['global_override'] ) { + // get main site id + $main_site_id = get_main_site_id(); + + // switch to main site + switch_to_blog( $main_site_id ); + + // update page id for current language if needed + if ( function_exists( 'icl_object_id' ) ) + $cn->options['general']['see_more_opt']['id'] = icl_object_id( $cn->options['general']['see_more_opt']['id'], 'page', true ); + + // get main site privacy policy link + $permalink = get_permalink( $cn->options['general']['see_more_opt']['id'] ); + + // restore current site + restore_current_blog(); + } else { + // update page id for current language if needed + if ( function_exists( 'icl_object_id' ) ) + $cn->options['general']['see_more_opt']['id'] = icl_object_id( $cn->options['general']['see_more_opt']['id'], 'page', true ); + + // get privacy policy link + $permalink = get_permalink( $cn->options['general']['see_more_opt']['id'] ); + } + } + + // #2266: position is API-owned — read from cookie_notice_app_design for connected sites. + // Falls back to cookie_notice_options["general"]["position"] for disconnected/legacy-only installs. + $app_design = $cn->is_network_options() + ? get_site_option( 'cookie_notice_app_design', [] ) + : get_option( 'cookie_notice_app_design', [] ); + $banner_position = ! empty( $app_design['position'] ) + ? sanitize_key( $app_design['position'] ) + : ( $cn->options['general']['position'] ?? 'bottom' ); + + // get cookie container args + $options = apply_filters( 'cn_cookie_notice_args', [ + 'position' => $banner_position, + 'css_class' => $cn->options['general']['css_class'], + 'button_class' => 'cn-button', + 'colors' => $cn->options['general']['colors'], + 'message_text' => $cn->options['general']['message_text'], + 'accept_text' => $cn->options['general']['accept_text'], + 'refuse_text' => $cn->options['general']['refuse_text'], + 'revoke_message_text' => $cn->options['general']['revoke_message_text'], + 'revoke_text' => $cn->options['general']['revoke_text'], + 'refuse_opt' => $cn->options['general']['refuse_opt'], + 'revoke_cookies' => $cn->options['general']['revoke_cookies'], + 'see_more' => $cn->options['general']['see_more'], + 'see_more_opt' => $cn->options['general']['see_more_opt'], + 'link_target' => $cn->options['general']['link_target'], + 'link_position' => $cn->options['general']['link_position'], + 'aria_label' => 'Compliance by Hu-manity.co' + ] ); + + // message output + $output = ' + + + '; + + add_filter( 'safe_style_css', [ $this, 'allow_style_attributes' ] ); + + $output = apply_filters( 'cn_cookie_notice_output', wp_kses_post( $output ), $options ); + + remove_filter( 'safe_style_css', [ $this, 'allow_style_attributes' ] ); + + // convert rgb color to hex + $bg_rgb_color = $this->hex2rgb( $options['colors']['bar'] ); + + // invalid color? use default + if ( $bg_rgb_color === false ) + $bg_rgb_color = $this->hex2rgb( $cn->defaults['general']['colors']['bar'] ); + + // allow rgba background + echo str_replace( '__CN_BG_COLOR__', esc_attr( 'rgba(' . implode( ',', $bg_rgb_color ) . ',' . ( (int) $options['colors']['bar_opacity'] ) * 0.01 . ');' ), $output ); + + } + + /** + * Add new properties to style safe list. + * + * @param array $styles + * @return array + */ + public function allow_style_attributes( $styles ) { + $styles[] = 'display'; + + return $styles; + } + + /** + * Convert HEX to RGB color. + * + * @param string $color + * @return bool|array + */ + public function hex2rgb( $color ) { + if ( ! is_string( $color ) ) + return false; + + // with hash? + if ( $color[0] === '#' ) + $color = substr( $color, 1 ); + + if ( sanitize_hex_color_no_hash( $color ) !== $color ) + return false; + + // 6 hex digits? + if ( strlen( $color ) === 6 ) + list( $r, $g, $b ) = [ $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] ]; + // 3 hex digits? + elseif ( strlen( $color ) === 3 ) + list( $r, $g, $b ) = [ $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] ]; + else + return false; + + return [ 'r' => hexdec( $r ), 'g' => hexdec( $g ), 'b' => hexdec( $b ) ]; + } + + /** + * Add blocking class to scripts, iframes and links. + * + * @param string $type + * @param string $code + * @return string + */ + public function add_block_class( $type, $code ) { + // clear and disable libxml errors and allow user to fetch error information as needed + libxml_use_internal_errors( true ); + + // create new dom object + $document = new DOMDocument( '1.0', 'UTF-8' ); + + // set attributes + $document->formatOutput = true; + $document->preserveWhiteSpace = false; + + // load code + $document->loadHTML( '
    ' . wp_kses( trim( $code ), Cookie_Notice()->get_allowed_html( $type ) ) . '
    ', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD ); + + $container = $document->getElementsByTagName( 'div' )->item( 0 ); + $container = $container->parentNode->removeChild( $container ); + + while ( $document->firstChild ) { + $document->removeChild( $document->firstChild ); + } + + while ( $container->firstChild ) { + $document->appendChild( $container->firstChild ); + } + + // set blocked tags + if ( $type === 'body' ) + $blocked_tags = [ 'script', 'iframe' ]; + elseif ( $type === 'head' ) + $blocked_tags = [ 'script', 'link' ]; + + foreach ( $blocked_tags as $blocked_tag ) { + $tags = $document->getElementsByTagName( $blocked_tag ); + + // any tags? + if ( ! empty( $tags ) && is_object( $tags ) ) { + foreach ( $tags as $tag ) { + $tag->setAttribute( 'class', 'hu-block' ); + } + } + } + + // save new HTML + $output = $document->saveHTML(); + + // reenable libxml errors + libxml_use_internal_errors( false ); + + return $output; + } + + /** + * Load notice scripts and styles - frontend. + * + * @return void + */ + public function wp_enqueue_notice_scripts() { + // skip modal login iframe + if ( current_filter() === 'login_enqueue_scripts' && ! empty( $_REQUEST['interim-login'] ) ) + return; + + // force script if a reopen shortcode is present on the page + $force_enqueue = $this->has_reopen_shortcode(); + + if ( $this->compliance && ! $force_enqueue ) + return; + + // is banner allowed to display? + if ( ! $force_enqueue && ! $this->maybe_display_banner() ) + return; + + // get main instance + $cn = Cookie_Notice(); + + wp_enqueue_script( 'cookie-notice-front', COOKIE_NOTICE_URL . '/js/front' . ( ! ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.min' : '' ) . '.js', [], $cn->defaults['version'], isset( $cn->options['general']['script_placement'] ) && $cn->options['general']['script_placement'] === 'footer' ); + + // not array? changeable by cn_cookie_expiry filter + if ( is_array( $cn->settings->times ) ) { + // check cookie expiration time + if ( array_key_exists( $cn->options['general']['time'], $cn->settings->times ) && array_key_exists( 1, $cn->settings->times[$cn->options['general']['time']] ) ) + $cookie_time = (int) $cn->settings->times[$cn->options['general']['time']][1]; + else { + // fallback to default length of month + $cookie_time = MONTH_IN_SECONDS; + } + + // check cookie rejection expiration time + if ( array_key_exists( $cn->options['general']['time_rejected'], $cn->settings->times ) && array_key_exists( 1, $cn->settings->times[$cn->options['general']['time_rejected']] ) ) + $cookie_time_rejected = (int) $cn->settings->times[$cn->options['general']['time_rejected']][1]; + else { + // fallback to default length of month + $cookie_time_rejected = MONTH_IN_SECONDS; + } + } else { + // fallback to default length of month + $cookie_time = $cookie_time_rejected = MONTH_IN_SECONDS; + } + + // #2266: position is API-owned — read from cookie_notice_app_design for connected sites. + // Falls back to cookie_notice_options["general"]["position"] for disconnected/legacy-only installs. + // (Same resolution as add_cookie_notice() — duplicated here because this is a separate WP hook.) + $app_design = $cn->is_network_options() + ? get_site_option( 'cookie_notice_app_design', [] ) + : get_option( 'cookie_notice_app_design', [] ); + $banner_position = ! empty( $app_design['position'] ) + ? sanitize_key( $app_design['position'] ) + : ( $cn->options['general']['position'] ?? 'bottom' ); + + // prepare script data + $script_data = [ + 'ajaxUrl' => admin_url( 'admin-ajax.php' ), + 'nonce' => wp_create_nonce( 'cn_save_cases' ), + 'hideEffect' => $cn->options['general']['hide_effect'], + 'position' => $banner_position, + 'onScroll' => $cn->options['general']['on_scroll'], + 'onScrollOffset' => (int) $cn->options['general']['on_scroll_offset'], + 'onClick' => $cn->options['general']['on_click'], + 'cookieName' => 'cookie_notice_accepted', + 'cookieTime' => $cookie_time, + 'cookieTimeRejected' => $cookie_time_rejected, + 'globalCookie' => is_multisite() && $cn->options['general']['global_cookie'] && is_subdomain_install(), + 'redirection' => $cn->options['general']['redirection'], + 'cache' => defined( 'WP_CACHE' ) && WP_CACHE, + 'revokeCookies' => $cn->options['general']['revoke_cookies'], + 'revokeCookiesOpt' => $cn->options['general']['revoke_cookies_opt'] + ]; + + wp_add_inline_script( 'cookie-notice-front', 'var cnArgs = ' . wp_json_encode( $script_data ) . ";\n", 'before' ); + + wp_enqueue_style( 'cookie-notice-front', COOKIE_NOTICE_URL . '/css/front' . ( ! ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.min' : '' ) . '.css', [], $cn->defaults['version'] ); + } + + /** + * Print non functional JavaScript in body. + * + * @return void + */ + public function wp_print_footer_scripts() { + // get main instance + $cn = Cookie_Notice(); + + if ( $cn->cookies_accepted() || $this->compliance ) { + $scripts = apply_filters( 'cn_refuse_code_scripts_html', $cn->options['general']['refuse_code'], 'body' ); + + if ( ! empty( $scripts ) ) + echo html_entity_decode( wp_kses( $scripts, $cn->get_allowed_html( 'body' ) ) ); + } + } + + /** + * Print non functional JavaScript in header. + * + * @return void + */ + public function wp_print_header_scripts() { + // get main instance + $cn = Cookie_Notice(); + + if ( $cn->cookies_accepted() || $this->compliance ) { + $scripts = apply_filters( 'cn_refuse_code_scripts_html', $cn->options['general']['refuse_code_head'], 'head' ); + + if ( ! empty( $scripts ) ) + echo html_entity_decode( wp_kses( $scripts, $cn->get_allowed_html( 'head' ) ) ); + } + } + + /** + * Add new body classes. + * + * @param array $classes Body classes + * @return array + */ + public function change_body_class( $classes ) { + if ( is_admin() ) + return $classes; + + if ( Cookie_Notice()->cookies_set() ) { + $classes[] = 'cookies-set'; + + if ( Cookie_Notice()->cookies_accepted() ) + $classes[] = 'cookies-accepted'; + else + $classes[] = 'cookies-refused'; + } else + $classes[] = 'cookies-not-set'; + + return $classes; + } + + /** + * Detect if reopen shortcode is present on the current singular content. + * + * @return bool + */ + private function has_reopen_shortcode() { + if ( ! is_singular() ) + return false; + + global $post; + + if ( empty( $post ) || ! property_exists( $post, 'post_content' ) ) + return false; + + return has_shortcode( $post->post_content, 'cookies_revoke' ); + } + + /** + * Purge config cache. + * + * @return void + */ + public function purge_cache() { + // get main instance + $cn = Cookie_Notice(); + + if ( is_multisite() && $cn->is_plugin_network_active() && $cn->network_options['general']['global_override'] ) { + $app_id = $cn->network_options['general']['app_id']; + $app_key = $cn->network_options['general']['app_key']; + } else { + $app_id = $cn->options['general']['app_id']; + $app_key = $cn->options['general']['app_key']; + } + + // compliance active only + if ( $app_id !== '' && $app_key !== '' ) { + // request for new config data too + $cn->welcome_api->get_app_config( $app_id, true ); + } + } +} diff --git a/wp-content/plugins/cookie-notice/includes/functions.php b/wp-content/plugins/cookie-notice/includes/functions.php new file mode 100644 index 0000000..ee6e97a --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/functions.php @@ -0,0 +1,329 @@ +=' ) ) + $is_plugin_active = true; + break; + + // autoptimize + case 'autoptimize': + if ( $module === 'caching' && function_exists( 'autoptimize' ) && defined( 'AUTOPTIMIZE_PLUGIN_VERSION' ) && version_compare( AUTOPTIMIZE_PLUGIN_VERSION, '2.4', '>=' ) ) + $is_plugin_active = true; + break; + + // breeze + case 'breeze': + if ( $module === 'caching' && class_exists( 'Breeze_PurgeCache' ) && class_exists( 'Breeze_Options_Reader' ) && function_exists( 'breeze_get_option' ) && function_exists( 'breeze_update_option' ) && defined( 'BREEZE_VERSION' ) && version_compare( BREEZE_VERSION, '1.1.0', '>=' ) ) + $is_plugin_active = true; + break; + + // contact form 7 + case 'contactform7': + if ( $module === 'captcha' && class_exists( 'WPCF7' ) && class_exists( 'WPCF7_RECAPTCHA' ) && defined( 'WPCF7_VERSION' ) && version_compare( WPCF7_VERSION, '5.1', '>=' ) ) + $is_plugin_active = true; + elseif ( $module === 'privacy-consent' && class_exists( 'WPCF7' ) && defined( 'WPCF7_VERSION' ) && version_compare( WPCF7_VERSION, '5.3', '>=' ) ) + $is_plugin_active = true; + break; + + // divi + case 'divi': + if ( $module === 'theme' && function_exists( 'is_et_pb_preview' ) && defined( 'ET_CORE_VERSION' ) ) + $is_plugin_active = true; + break; + + // easy digital downloads + case 'easydigitaldownloads': + if ( $module === 'privacy-consent' && class_exists( 'Easy_Digital_Downloads' ) && function_exists( 'EDD' ) && defined( 'EDD_VERSION' ) && version_compare( EDD_VERSION, '3.0.0', '>=' ) ) + $is_plugin_active = true; + break; + + // elementor + case 'elementor': + if ( $module === 'caching' && did_action( 'elementor/loaded' ) && defined( 'ELEMENTOR_VERSION' ) && version_compare( ELEMENTOR_VERSION, '1.3', '>=' ) ) + $is_plugin_active = true; + break; + + // formidable forms + case 'formidableforms': + if ( $module === 'privacy-consent' && class_exists( 'FrmAppHelper' ) && method_exists( 'FrmAppHelper', 'plugin_version' ) && version_compare( FrmAppHelper::plugin_version(), '2.0', '>=' ) ) + $is_plugin_active = true; + break; + + // hummingbird + case 'hummingbird': + if ( $module === 'caching' && class_exists( 'Hummingbird\\WP_Hummingbird' ) && defined( 'WPHB_VERSION' ) && version_compare( WPHB_VERSION, '2.1.0', '>=' ) ) + $is_plugin_active = true; + break; + + // litespeed + case 'litespeed': + if ( $module === 'caching' && class_exists( 'LiteSpeed\Core' ) && defined( 'LSCWP_CUR_V' ) && version_compare( LSCWP_CUR_V, '3.0', '>=' ) ) + $is_plugin_active = true; + break; + + // mailchimp + case 'mailchimp': + if ( $module === 'privacy-consent' && class_exists( 'MC4WP_Form_Manager' ) && defined( 'MC4WP_VERSION' ) && version_compare( MC4WP_VERSION, '4.0', '>=' ) ) + $is_plugin_active = true; + break; + + // speed optimizer + case 'speedoptimizer': + global $siteground_optimizer_loader; + + if ( $module === 'caching' && ! empty( $siteground_optimizer_loader ) && is_object( $siteground_optimizer_loader ) && is_a( $siteground_optimizer_loader, 'SiteGround_Optimizer\Loader\Loader' ) && defined( '\SiteGround_Optimizer\VERSION' ) && version_compare( \SiteGround_Optimizer\VERSION, '5.5', '>=' ) ) + $is_plugin_active = true; + break; + + // speedycache + case 'speedycache': + if ( $module === 'caching' && class_exists( 'SpeedyCache' ) && defined( 'SPEEDYCACHE_VERSION' ) && function_exists( 'speedycache_delete_cache' ) && version_compare( SPEEDYCACHE_VERSION, '1.0.0', '>=' ) ) + $is_plugin_active = true; + break; + + // woocommerce + case 'woocommerce': + if ( $module === 'privacy-consent' && class_exists( 'WooCommerce' ) && defined( 'WOOCOMMERCE_VERSION' ) && version_compare( WOOCOMMERCE_VERSION, '4.0.4', '>=' ) ) + $is_plugin_active = true; + break; + + // wp fastest cache + case 'wpfastestcache': + if ( $module === 'caching' && function_exists( 'wpfc_clear_all_cache' ) ) + $is_plugin_active = true; + break; + + // wpforms + case 'wpforms': + if ( $module === 'privacy-consent' && function_exists( 'wpforms' ) && defined( 'WPFORMS_VERSION' ) && version_compare( WPFORMS_VERSION, '1.6.0', '>=' ) ) + $is_plugin_active = true; + break; + + // wp-optimize + case 'wpoptimize': + if ( $module === 'caching' && function_exists( 'WP_Optimize' ) && defined( 'WPO_VERSION' ) && version_compare( WPO_VERSION, '3.0.12', '>=' ) ) + $is_plugin_active = true; + break; + + // wp rocket + case 'wprocket': + if ( $module === 'caching' && function_exists( 'rocket_init' ) && defined( 'WP_ROCKET_VERSION' ) && version_compare( WP_ROCKET_VERSION, '3.8', '>=' ) ) + $is_plugin_active = true; + break; + + // wp super cache + case 'wpsupercache': + if ( $module === 'caching' ) { + $plugin_name = 'wp-super-cache/wp-cache.php'; + $plugin_path = WP_PLUGIN_DIR . '/' . $plugin_name; + + if ( file_exists( $plugin_path ) && is_plugin_active( $plugin_name ) ) { + $plugin = get_plugin_data( $plugin_path, false, false ); + + if ( version_compare( $plugin['Version'], '1.6.3', '>=' ) && function_exists( 'wp_cache_is_enabled' ) && function_exists( 'wp_cache_clean_cache' ) && function_exists( 'wpsc_add_cookie' ) && function_exists( 'wpsc_delete_cookie' ) ) + $is_plugin_active = true; + } + } + break; + } + + return $is_plugin_active; +} + +/** + * Detect active analytics/tracking plugins for consent mode suggestions. + * + * @return array List of detected plugin categories: 'google', 'facebook', 'microsoft'. + */ +function cn_detect_active_plugins() { + $checks = [ + 'google' => [ + 'google-analytics-for-wordpress/googleanalytics.php', + 'google-site-kit/google-site-kit.php', + 'wp-google-analytics/wp-google-analytics.php', + 'gtm4wp/gtm4wp.php', + ], + 'facebook' => [ + 'official-facebook-pixel/facebook-for-wordpress.php', + 'pixel-caffeine/pixel-caffeine.php', + ], + 'microsoft' => [ + 'clarity-analytics/clarity-analytics.php', + ], + ]; + + $detected = []; + + foreach ( $checks as $mode => $plugins ) { + foreach ( $plugins as $plugin ) { + if ( is_plugin_active( $plugin ) ) { + $detected[] = $mode; + break; + } + } + } + + return array_values( array_unique( $detected ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/amp/amp.php b/wp-content/plugins/cookie-notice/includes/modules/amp/amp.php new file mode 100644 index 0000000..26da159 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/amp/amp.php @@ -0,0 +1,172 @@ +nonce = wp_create_nonce( 'cookie-compliance-amp-consent' ); + + add_action( 'init', [ $this, 'handle_iframe' ] ); + add_action( 'wp_head', [ $this, 'load_amp_consent' ] ); + } + + /** + * Load AMP consent module. + * + * @return void + */ + public function load_amp_consent() { + // is banner allowed to display? + if ( ! Cookie_Notice()->frontend->maybe_display_banner( [ 'skip_amp' => true ] ) ) + return; + + if ( function_exists( 'amp_is_request' ) && amp_is_request() ) { + // load styles + echo ' + '; + + // load scripts + echo ' + + + '; + + // get iframe url + $url = apply_filters( 'cn_cookie_compliance_amp_iframe_url', $this->add_subdomain_to_url( get_site_url(), 'www' ) ); + + // load consent iframe + echo ' + + +
    + +
    +
    +
    +
    '; + } + } + + /** + * Add subdomain to url. + * + * @param string $url + * @param string $subdomain + * @return string + */ + public function add_subdomain_to_url( $url, $subdomain ) { + // parse url + $parts = parse_url( $url ); + + // subdomain does not exist? + if ( substr( $parts['host'], 0, strlen( $subdomain ) + 1 ) !== $subdomain . '.' ) { + // find host + $pos = strpos( $url, $parts['host'] ); + + // update url and add subdomain + $url = substr_replace( $url, $subdomain . '.' . $parts['host'], $pos, strlen( $parts['host'] ) ); + } + + return $url; + } + + /** + * Generate consent iframe. + * + * @return void + */ + public function handle_iframe() { + if ( isset( $_GET['cn-amp-consent-iframe'] ) && $_GET['cn-amp-consent-iframe'] === $this->nonce ) { + wp_ob_end_flush_all(); + + // display iframe + echo $this->generate_iframe_html(); + exit; + } + } + + /** + * Generate consent iframe. + * + * @return string + */ + public function generate_iframe_html() { + // get main instance + $cn = Cookie_Notice(); + + // get options + $options = $cn->frontend->get_cc_options(); + + // get output + $cc_output = $cn->frontend->get_cc_output( $options ); + + // get allowed html for cookie compliance html output + $allowed_html = array_merge( + wp_kses_allowed_html( 'post' ), + [ + 'script' => [ + 'type' => true, + 'src' => true + ] + ] + ); + + $html = ' + + + + + + + ' . esc_html__( 'Cookie Compliance AMP Consent', 'cookie-notice' ) . ' + ' . wp_kses( $cc_output, $allowed_html ) . ' + + + + '; + + return $html; + } +} + +new Cookie_Notice_Modules_AMP(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/amp/iframe.js b/wp-content/plugins/cookie-notice/includes/modules/amp/iframe.js new file mode 100644 index 0000000..dd837ed --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/amp/iframe.js @@ -0,0 +1,58 @@ +function cnDisableRevoke() { + var huObject = null; + + // get valid hu object + for ( const object of [ '__hu', 'hu' ] ) { + // check global variable + if ( typeof window[object] !== 'undefined' && window[object].hasOwnProperty( 'earlyInit' ) && typeof window[object].earlyInit === 'function' ) { + huObject = window[object]; + + // no need to check again + break; + } + } + + // force revoke button to be disabled + huObject.options.config.revokeConsent = false; +} + +function cnConsentResponse( event ) { + // allow this event to run only once + if ( event.type === 'set-consent.hu' ) + document.removeEventListener( 'hide.hu', cnConsentResponse ); + + document.addEventListener( 'save-consent-response.hu', cnConsentSet( event.detail.categories ) ); +} + +function cnConsentSet( categories ) { + // it has to use return function to wait for save-consent-response event + return function cnRequestFinished( event ) { + var action = 'accept'; + + // only basic operations? + if ( categories[1] && ! categories[2] && ! categories[3] && ! categories[4] ) + action = 'reject'; + + // inform amp to save consent + window.parent.postMessage( + { + type: 'consent-response', + action: action, + purposeConsents: { + 'basic_operations': categories[1], + 'content_personalization': categories[2], + 'site_optimization': categories[3], + 'ad_personalization': categories[4] + } + }, + '*' + ); + } +} + +// set consent +document.addEventListener( 'hide.hu', cnConsentResponse ); +document.addEventListener( 'set-consent.hu', cnConsentResponse ); + +// disable revoke button +document.addEventListener( 'load.hu', cnDisableRevoke ); diff --git a/wp-content/plugins/cookie-notice/includes/modules/autoptimize/autoptimize.php b/wp-content/plugins/cookie-notice/includes/modules/autoptimize/autoptimize.php new file mode 100644 index 0000000..f85fdac --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/autoptimize/autoptimize.php @@ -0,0 +1,72 @@ +get_url( 'widget' ) ); + + // not found widget url? + if ( strpos( $excludes, $widget_url ) === false ) + $new_excludes[] = $widget_url; + + // React admin asset exclusions — see Cookie_Notice::REACT_ADMIN_*. + // Keeps Autoptimize off our IIFE bundle if its "optimize admin" toggle is on. + if ( strpos( $excludes, Cookie_Notice::REACT_ADMIN_BUNDLE_BASENAME ) === false ) + $new_excludes[] = Cookie_Notice::REACT_ADMIN_BUNDLE_BASENAME; + + if ( strpos( $excludes, Cookie_Notice::REACT_ADMIN_INLINE_KEYWORD ) === false ) + $new_excludes[] = Cookie_Notice::REACT_ADMIN_INLINE_KEYWORD; + + return implode( ', ', $new_excludes ); + } +} + +new Cookie_Notice_Modules_Autoptimize(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/breeze/breeze.php b/wp-content/plugins/cookie-notice/includes/modules/breeze/breeze.php new file mode 100644 index 0000000..294e6b6 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/breeze/breeze.php @@ -0,0 +1,100 @@ +db_version, '2.5.7', '<=' ) ) + $this->remove_excluded_external_script(); + + // is caching active? + if ( (int) Breeze_Options_Reader::get_option_value( 'breeze-active' ) === 1 ) { + // update 2.4.16+ + if ( version_compare( $cn->db_version, '2.4.16', '<=' ) ) { + // clear cache + $this->delete_cache(); + } + + add_action( 'cn_configuration_updated', [ $this, 'delete_cache' ] ); + + // is js minification active? + if ( (int) Breeze_Options_Reader::get_option_value( 'breeze-minify-js' ) === 1 ) { + // filters + add_filter( 'cn_cookie_compliance_output', [ $this, 'update_cc_output' ] ); + } + } + } + + /** + * Update Cookie Compliance output. + * + * @param string $output + * + * @return string + */ + public function update_cc_output( $output ) { + // add special /breeze-extra/ comment + return preg_replace( '//', "", $output, 1 ); + } + + /** + * Remove previously excluded external script from being minified/combined. + * + * @return void + */ + public function remove_excluded_external_script() { + $pattern = '(.*)/js/hu-options.js(.*)'; + + // get breeze file options + $file_options = breeze_get_option( 'file_settings' ); + + // find pattern + $key = array_search( $pattern, $file_options['breeze-exclude-js'], true ); + + // found pattern? remove it + if ( $key !== false ) + unset( $file_options['breeze-exclude-js'][$key] ); + + // update breeze file options + breeze_update_option( 'file_settings', $file_options, true ); + } + + /** + * Delete all cache files. + * + * @return void + */ + public function delete_cache() { + do_action( 'breeze_clear_all_cache' ); + } +} + +new Cookie_Notice_Modules_Breeze(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/contact-form-7/contact-form-7.php b/wp-content/plugins/cookie-notice/includes/modules/contact-form-7/contact-form-7.php new file mode 100644 index 0000000..591152d --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/contact-form-7/contact-form-7.php @@ -0,0 +1,69 @@ +service = WPCF7_RECAPTCHA::get_instance(); + + if ( $this->service->is_active() ) + add_action( 'wp_enqueue_scripts', [ $this, 'contact_form_7_recaptcha' ], 21 ); + } + + /** + * Replace original recaptcha script from Contact Form 7. + * + * @return void + */ + public function contact_form_7_recaptcha() { + // deregister original script + wp_deregister_script( 'wpcf7-recaptcha' ); + + // register new script + wp_register_script( + 'wpcf7-recaptcha', + COOKIE_NOTICE_URL . '/includes/modules/contact-form-7/recaptcha.js', + [ + 'google-recaptcha', + 'wp-polyfill' + ], + WPCF7_VERSION, + true + ); + + wp_enqueue_script( 'wpcf7-recaptcha' ); + + wp_localize_script( + 'wpcf7-recaptcha', + 'wpcf7_recaptcha', + [ + 'sitekey' => $this->service->get_sitekey(), + 'actions' => apply_filters( + 'wpcf7_recaptcha_actions', + [ + 'homepage' => 'homepage', + 'contactform' => 'contactform' + ] + ) + ] + ); + } +} + +new Cookie_Notice_Modules_ContactForm7(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/contact-form-7/privacy-consent.php b/wp-content/plugins/cookie-notice/includes/modules/contact-form-7/privacy-consent.php new file mode 100644 index 0000000..5797da8 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/contact-form-7/privacy-consent.php @@ -0,0 +1,246 @@ +source = [ + 'name' => __( 'Contact Form 7', 'cookie-notice' ), + 'id' => 'contactform7', + 'id_type' => 'integer', + 'type' => 'dynamic', + 'availability' => cn_is_plugin_active( 'contactform7', 'privacy-consent' ), + 'status' => $cn->options['privacy_consent']['contactform7_active'], + 'status_type' => $cn->options['privacy_consent']['contactform7_active_type'], + 'forms' => [] + ]; + + // register source + $cn->privacy_consent->add_instance( $this, $this->source['id'] ); + $cn->privacy_consent->add_source( $this->source ); + + add_action( 'admin_init', [ $this, 'register_source' ] ); + + // check compliance status + if ( $cn->get_status() !== 'active' ) + return; + + // forms + add_filter( 'do_shortcode_tag', [ $this, 'shortcode' ], 10, 3 ); + } + + /** + * Register source. + * + * @return void + */ + public function register_source() { + register_setting( + 'cookie_notice_privacy_consent_contactform7', + 'cookie_notice_privacy_consent_contactform7', + [ + 'type' => 'array' + ] + ); + } + + /** + * Validate source. + * + * @param array $input + * + * @return array + */ + public function validate( $input ) { + // get main instance + $cn = Cookie_Notice(); + + $input['contactform7_active'] = isset( $input['contactform7_active'] ); + $input['contactform7_active_type'] = isset( $input['contactform7_active_type'] ) && array_key_exists( $input['contactform7_active_type'], $cn->privacy_consent->form_active_types ) ? $input['contactform7_active_type'] : $cn->defaults['privacy_consent']['contactform7_active_type']; + + return $input; + } + + /** + * Check whether form exists. + * + * @param int $form_id + * + * @return bool + */ + public function form_exists( $form_id ) { + $query = new WP_Query( [ + 'p' => $form_id, + 'post_status' => 'publish', + 'post_type' => 'wpcf7_contact_form', + 'fields' => 'ids', + 'no_found_rows' => true + ] ); + + return $query->have_posts(); + } + + /** + * Get forms. + * + * @param array $args + * + * @return array + */ + public function get_forms( $args ) { + // get only published forms + $query = new WP_Query( [ + 'post_status' => 'publish', + 'post_type' => 'wpcf7_contact_form', + 'order' => $args['order'], + 'orderby' => $args['orderby'], + 'fields' => 'all', + 'posts_per_page' => 10, + 'no_found_rows' => false, + 'paged' => $args['page'], + 's' => $args['search'] + ] ); + + $forms = []; + + // any forms? + if ( ! empty( $query->posts ) ) { + foreach ( $query->posts as $post ) { + $forms[] = [ + 'id' => $post->ID, + 'title' => $post->post_title, + 'date' => $post->post_date, + 'fields' => [] + ]; + } + } + + return [ + 'forms' => $forms, + 'total' => $query->found_posts, + 'max_pages' => $query->max_num_pages + ]; + } + + /** + * Get form. + * + * @param array $args + * + * @return array + */ + public function get_form( $args ) { + // get only one form + $query = new WP_Query( [ + 'p' => (int) $args['form_id'], + 'post_status' => 'publish', + 'post_type' => 'wpcf7_contact_form', + 'fields' => 'all', + 'no_found_rows' => true + ] ); + + // any forms? + if ( ! empty( $query->posts[0] ) ) { + $form = [ + 'source' => $this->source['id'], + 'id' => $query->posts[0]->ID, + 'title' => Cookie_Notice()->privacy_consent->strcut( sanitize_text_field( $query->posts[0]->post_title ), 100 ), + 'fields' => [ + 'subject' => [ + 'first_name' => 'your-name', + 'email' => 'your-email' + ], + 'preferences' => [ + 'terms' => 'your-consent' + ] + ] + ]; + } else + $form = []; + + return $form; + } + + /** + * Contact Form 7 shortcode output. + * + * @param string $output + * @param string $tag + * @param array $attr + * + * @return string + */ + public function shortcode( $output, $tag, $attr ) { + if ( $tag !== 'contact-form-7' ) + return $output; + + // check form id + $form_id = isset( $attr['id'] ) ? trim( $attr['id'] ) : ''; + + if ( empty( $form_id ) ) + return $output; + + $form = null; + + // sanitize form id + $form_id = preg_replace( '/[^a-z0-9]/i', '', $form_id ); + + // get form by hash, since cf7 5.8 + if ( function_exists( 'wpcf7_get_contact_form_by_hash' ) ) + $form = wpcf7_get_contact_form_by_hash( $form_id ); + + // get form by integer id + if ( ! $form && function_exists( 'wpcf7_contact_form' ) ) + $form = wpcf7_contact_form( $form_id ); + + // valid form? + if ( $form && is_a( $form, 'WPCF7_ContactForm' ) ) { + // get id + $form_id = (int) $form->id(); + + // active form? + if ( $form_id && Cookie_Notice()->privacy_consent->is_form_active( $form_id, $this->source['id'] ) ) { + // get form data + $form_data = $this->get_form( [ + 'form_id' => $form_id + ] ); + + $output = (string) $output; + $output .= ' + '; + } + } + + return $output; + } +} + +new Cookie_Notice_Modules_ContactForm7_Privacy_Consent(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/contact-form-7/recaptcha.js b/wp-content/plugins/cookie-notice/includes/modules/contact-form-7/recaptcha.js new file mode 100644 index 0000000..ca0a811 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/contact-form-7/recaptcha.js @@ -0,0 +1,89 @@ +( function( window, document, undefined ) { + + 'use strict'; + + /** + * Initialize recaptcha. + * + * @return {void} + */ + function initRecaptcha() { + wpcf7_recaptcha = { + ...( wpcf7_recaptcha ?? {} ) + }; + + const siteKey = wpcf7_recaptcha.sitekey; + const { homepage, contactform } = wpcf7_recaptcha.actions; + + const execute = options => { + const { action, func, params } = options; + + grecaptcha.execute( siteKey, { + action, + } ).then( token => { + const event = new CustomEvent( 'wpcf7grecaptchaexecuted', { + detail: { + action, + token + } + } ); + + document.dispatchEvent( event ); + } ).then( () => { + if ( typeof func === 'function' ) { + func( ...params ); + } + } ).catch( error => console.error( error ) ); + }; + + grecaptcha.ready( () => { + execute( { + action: homepage + } ); + } ); + + document.addEventListener( 'change', event => { + execute( { + action: contactform + } ); + } ); + + if ( typeof wpcf7 !== 'undefined' && typeof wpcf7.submit === 'function' ) { + const submit = wpcf7.submit; + + wpcf7.submit = ( form, options = {} ) => { + execute( { + action: contactform, + func: submit, + params: [ form, options ] + } ); + }; + } + + document.addEventListener( 'wpcf7grecaptchaexecuted', event => { + const fields = document.querySelectorAll( 'form.wpcf7-form input[name="_wpcf7_recaptcha_response"]' ); + + for ( let i = 0; i < fields.length; i++ ) { + let field = fields[ i ]; + + field.setAttribute( 'value', event.detail.token ); + } + } ); + } + + /** + * Handle cookies-unblocked event. + * + * @return {void} + */ + document.addEventListener( 'cookies-unblocked.hu', function( e ) { + e.detail.data.scripts.forEach( function( script ) { + // find google recaptcha in valid category + if ( script.id === 'google-recaptcha-js' && e.detail.categories[script.dataset.huCategory] === true ) { + script.onload = initRecaptcha; + script.onreadystatechange = initRecaptcha; + } + } ); + }, false ); + +} )( window, document ); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/divi/divi.php b/wp-content/plugins/cookie-notice/includes/modules/divi/divi.php new file mode 100644 index 0000000..0743326 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/divi/divi.php @@ -0,0 +1,34 @@ + [ + 'status' => false + ], + 'edd_checkout_form' => [ + 'status' => false + ] + ]; + private $source = []; + + /** + * Class constructor. + * + * @return void + */ + public function __construct() { + // get main instance + $cn = Cookie_Notice(); + + $this->source = [ + 'name' => __( 'Easy Digital Downloads', 'cookie-notice' ), + 'id' => 'easydigitaldownloads', + 'id_type' => 'string', + 'type' => 'static', + 'availability' => cn_is_plugin_active( 'easydigitaldownloads', 'privacy-consent' ), + 'status' => $cn->options['privacy_consent']['easydigitaldownloads_active'], + 'status_type' => $cn->options['privacy_consent']['easydigitaldownloads_active_type'], + 'forms' => [ + 'edd_registration_form' => [ + 'name' => __( 'Registration Form', 'cookie-notice' ), + 'id' => 'edd_registration_form', + 'type' => 'static', + 'mode' => 'automatic', + 'status' => false, + 'logged_out_only' => true, + 'fields' => [ + 'username' => '', + 'email' => '' + ], + 'subject' => [ + 'email' => '#edd-user-email' + ], + 'preferences' => [], + 'excluded' => [] + ], + 'edd_checkout_form' => [ + 'name' => __( 'Checkout Form', 'cookie-notice' ), + 'id' => 'edd_checkout_form', + 'type' => 'static', + 'mode' => 'automatic', + 'status' => true, + 'logged_out_only' => true, + 'fields' => [ + 'email' => '', + 'first_name' => '', + 'last_name' => '', + 'country' => '', + 'address' => '', + 'city' => '', + 'postal_code' => '', + 'phone' => '' + ], + 'subject' => [ + 'email' => '#edd-email', + 'first_name' => '#edd-first', + 'last_name' => '#edd-last' + ], + 'preferences' => [ + 'terms' => '#edd_agree_to_terms', + 'privacy' => '#edd-agree-to-privacy-policy' + ], + 'excluded' => [] + ] + ] + ]; + + // register source + $cn->privacy_consent->add_instance( $this, $this->source['id'] ); + $cn->privacy_consent->add_source( $this->source ); + + add_action( 'admin_init', [ $this, 'register_source' ] ); + + // check compliance status + if ( $cn->get_status() !== 'active' ) + return; + + // registration + add_action( 'edd_register_form_fields_after', [ $this, 'registration_form_classic' ] ); + add_filter( 'render_block', [ $this, 'registration_form_blocks' ], 10, 2 ); + add_filter( 'edd_errors', [ $this, 'errors' ] ); + + // checkout + add_action( 'edd_checkout_form_bottom', [ $this, 'checkout_form_classic' ] ); + add_filter( 'render_block', [ $this, 'checkout_form_blocks' ], 10, 2 ); + add_action( 'edd_built_order', [ $this, 'checkout_new_order' ], 10, 2 ); + } + + /** + * Register source. + * + * @return void + */ + public function register_source() { + register_setting( + 'cookie_notice_privacy_consent_easydigitaldownloads', + 'cookie_notice_privacy_consent_easydigitaldownloads', + [ + 'type' => 'array' + ] + ); + } + + /** + * Validate source. + * + * @param array $input + * + * @return array + */ + public function validate( $input ) { + // get main instance + $cn = Cookie_Notice(); + + $input['easydigitaldownloads_active'] = isset( $input['easydigitaldownloads_active'] ); + $input['easydigitaldownloads_active_type'] = isset( $input['easydigitaldownloads_active_type'] ) && array_key_exists( $input['easydigitaldownloads_active_type'], $cn->privacy_consent->form_active_types ) ? $input['easydigitaldownloads_active_type'] : $cn->defaults['privacy_consent']['easydigitaldownloads_active_type']; + + return $input; + } + + /** + * Check whether form exists. + * + * @param string $form_id + * + * @return bool + */ + public function form_exists( $form_id ) { + return array_key_exists( $form_id, $this->source['forms'] ); + } + + /** + * Get form. + * + * @param array $args + * + * @return array + */ + public function get_form( $args ) { + // invalid form? + if ( ! $this->form_exists( $args['form_id'] ) ) + return []; + + $form_data = $this->source['forms'][$args['form_id']]; + $form = [ + 'source' => $this->source['id'], + 'id' => $form_data['id'], + 'title' => $form_data['name'], + 'fields' => [ + 'subject' => $form_data['subject'], + 'preferences' => $form_data['preferences'] + ] + ]; + + return $form; + } + + /** + * Registration classic form. + * + * @return void + */ + public function registration_form_classic() { + $form_id = 'edd_registration_form'; + + // active form? + if ( Cookie_Notice()->privacy_consent->is_form_active( $form_id, $this->source['id'] ) ) { + if ( $this->source['forms'][ $form_id ]['logged_out_only'] && is_user_logged_in() ) + return; + + // get form data + $form_data = $this->get_form( [ + 'form_id' => $form_id, + 'form_type' => 'classic' + ] ); + + echo ' + '; + } + } + + /** + * Registration blocks form. + * + * @param string|mixed $block_content + * @param array $block + * + * @return string + */ + public function registration_form_blocks( $block_content, $block ) { + // edd version 3.2.3+ has native support of edd_checkout_form_bottom in blocks + if ( defined( 'EDD_VERSION' ) && version_compare( EDD_VERSION, '3.2.3', '>=' ) ) + return $block_content; + + // not edd checkout block? + if ( $block['blockName'] !== 'edd/register' ) + return $block_content; + + $form_id = 'edd_registration_form'; + + // active form? + if ( Cookie_Notice()->privacy_consent->is_form_active( $form_id, $this->source['id'] ) ) { + if ( $this->source['forms'][ $form_id ]['logged_out_only'] && is_user_logged_in() ) + return; + + // get form data + $form_data = $this->get_form( [ + 'form_id' => $form_id, + 'form_type' => 'blocks' + ] ); + + $block_content = ' +
    + ' . $block_content . ' + +
    '; + } + + return $block_content; + } + + /** + * Registration errors. + * + * @param array $errors + * + * @return array + */ + public function errors( $errors ) { + if ( isset( $_POST['edd_action'] ) && $_POST['edd_action'] === 'user_register' ) { + // prevent headers already sent + if ( headers_sent() ) + return $errors; + + // get main instance + $cn = Cookie_Notice(); + + // active registration form? + if ( $cn->privacy_consent->is_form_active( 'edd_registration_form', $this->source['id'] ) ) + $cn->privacy_consent->set_cookie( empty( $errors ) ? 'true' : 'false' ); + } + + return $errors; + } + + /** + * Checkout blocks form. + * + * @param string|mixed $block_content + * @param array $block + * + * @return string + */ + public function checkout_form_blocks( $block_content, $block ) { + // edd version 3.6.0+ has native support of edd_checkout_form_bottom in blocks + if ( defined( 'EDD_VERSION' ) && version_compare( EDD_VERSION, '3.6.0', '>=' ) ) + return $block_content; + + // not edd checkout block? + if ( $block['blockName'] !== 'edd/checkout' ) + return $block_content; + + $form_id = 'edd_checkout_form'; + + // active form? + if ( Cookie_Notice()->privacy_consent->is_form_active( $form_id, $this->source['id'] ) ) { + if ( $this->source['forms'][ $form_id ]['logged_out_only'] && is_user_logged_in() ) + return; + + // get form data + $form_data = $this->get_form( [ + 'form_id' => $form_id, + 'form_type' => 'blocks' + ] ); + + $block_content = ' +
    + ' . $block_content . ' + ' . $this->checkout_form_script( $form_data ) . ' +
    '; + } + + return $block_content; + } + + /** + * Checkout classic form. + * + * @return void + */ + public function checkout_form_classic() { + $form_id = 'edd_checkout_form'; + + // active form? + if ( Cookie_Notice()->privacy_consent->is_form_active( $form_id, $this->source['id'] ) ) { + if ( $this->source['forms'][ $form_id ]['logged_out_only'] && is_user_logged_in() ) + return; + + // get form data + $form_data = $this->get_form( [ + 'form_id' => $form_id, + 'form_type' => 'classic' + ] ); + + echo $this->checkout_form_script( $form_data ); + } + } + + /** + * Add form script. + * + * @param array $form_data + * + * @return string + */ + public function checkout_form_script( $form_data ) { + return ''; + } + + /** + * Checkout new order. + * + * @param int $order_id + * @param array $order_data + * + * @return void + */ + public function checkout_new_order( $order_id, $order_data ) { + // get main instance + $cn = Cookie_Notice(); + + // active checkout form? + if ( $cn->privacy_consent->is_form_active( 'edd_checkout_form', $this->source['id'] ) ) { + if ( ! empty( $order_data['user_email'] ) || ! empty( $order_data['user_info']['email'] ) ) + $cn->privacy_consent->set_cookie( 'true' ); + else + $cn->privacy_consent->set_cookie( 'false' ); + } + } +} + +new Cookie_Notice_Modules_EasyDigitalDownloads_Privacy_Consent(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/elementor/elementor.php b/wp-content/plugins/cookie-notice/includes/modules/elementor/elementor.php new file mode 100644 index 0000000..55cad2f --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/elementor/elementor.php @@ -0,0 +1,34 @@ +preview->is_preview_mode(); + } +} + +new Cookie_Notice_Modules_Elementor(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/formidable-forms/privacy-consent.php b/wp-content/plugins/cookie-notice/includes/modules/formidable-forms/privacy-consent.php new file mode 100644 index 0000000..b8c6a94 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/formidable-forms/privacy-consent.php @@ -0,0 +1,254 @@ +source = [ + 'name' => __( 'Formidable Forms', 'cookie-notice' ), + 'id' => 'formidableforms', + 'id_type' => 'integer', + 'type' => 'dynamic', + 'availability' => cn_is_plugin_active( 'formidableforms', 'privacy-consent' ), + 'status' => $cn->options['privacy_consent']['formidableforms_active'], + 'status_type' => $cn->options['privacy_consent']['formidableforms_active_type'], + 'forms' => [] + ]; + + // register source + $cn->privacy_consent->add_instance( $this, $this->source['id'] ); + $cn->privacy_consent->add_source( $this->source ); + + add_action( 'admin_init', [ $this, 'register_source' ] ); + + // check compliance status + if ( $cn->get_status() !== 'active' ) + return; + + // forms + add_filter( 'do_shortcode_tag', [ $this, 'shortcode' ], 10, 3 ); + add_filter( 'frm_validate_entry', [ $this, 'handle_form' ], PHP_INT_MAX, 2 ); + } + + /** + * Register source. + * + * @return void + */ + public function register_source() { + register_setting( + 'cookie_notice_privacy_consent_formidableforms', + 'cookie_notice_privacy_consent_formidableforms', + [ + 'type' => 'array' + ] + ); + } + + /** + * Validate source. + * + * @param array $input + * + * @return array + */ + public function validate( $input ) { + // get main instance + $cn = Cookie_Notice(); + + $input['formidableforms_active'] = isset( $input['formidableforms_active'] ); + $input['formidableforms_active_type'] = isset( $input['formidableforms_active_type'] ) && array_key_exists( $input['formidableforms_active_type'], $cn->privacy_consent->form_active_types ) ? $input['formidableforms_active_type'] : $cn->defaults['privacy_consent']['formidableforms_active_type']; + + return $input; + } + + /** + * Check whether form exists. + * + * @param int $form_id + * + * @return bool + */ + public function form_exists( $form_id ) { + $form = FrmForm::get_published_forms( [ 'id' => $form_id ], 1, 'exclude' ); + + return ! empty( $form ); + } + + /** + * Get forms. + * + * @param array $args + * + * @return array + */ + public function get_forms( $args ) { + // default query args + $query = [ + 'is_template' => 0, + 'parent_form_id' => array( null, 0 ), + 'status' => array( null, '', 'published' ) + ]; + + // searching? + if ( $args['search'] !== '' ) { + $query[] = [ + 'or' => true, + 'name LIKE' => $args['search'], + 'description LIKE' => $args['search'], + 'form_key LIKE' => $args['search'] + ]; + } + + // check orderby + if ( $args['orderby'] === 'title' ) + $orderby = 'name'; + elseif ( $args['orderby'] === 'date' ) + $orderby = 'created_at'; + + // get only published forms + $frm_forms = FrmForm::getAll( $query, $orderby . ' ' . $args['order'], '10 OFFSET ' . ( ( $args['page'] - 1 ) * 10 ) ); + + $forms = []; + + // any forms? + if ( ! empty( $frm_forms ) ) { + $total_items = FrmDb::get_count( 'frm_forms', $query ); + + foreach ( $frm_forms as $form ) { + $forms[] = [ + 'id' => $form->id, + 'title' => $form->name, + 'date' => $form->created_at, + 'fields' => [] + ]; + } + } else + $total_items = 0; + + return [ + 'forms' => $forms, + 'total' => $total_items, + 'max_pages' => (int) ceil( $total_items / 10 ) + ]; + } + + /** + * Get form. + * + * @param array $args + * + * @return array + */ + public function get_form( $args ) { + // get only one form + $frm_form = FrmForm::get_published_forms( [ 'id' => (int) $args['form_id'] ], 1, 'exclude' ); + + // any forms? + if ( ! empty( $frm_form ) ) { + $form = [ + 'source' => $this->source['id'], + 'id' => $frm_form->id, + 'title' => Cookie_Notice()->privacy_consent->strcut( sanitize_text_field( $frm_form->name ), 100 ), + 'fields' => [ + 'subject' => [], + 'preferences' => [] + ] + ]; + } else + $form = []; + + return $form; + + } + + /** + * Formidable Forms shortcode output. + * + * @param string $output + * @param string $tag + * @param array $attr + * + * @return string + */ + public function shortcode( $output, $tag, $attr ) { + if ( $tag !== 'formidable' ) + return $output; + + // check form id + $form_id = isset( $attr['id'] ) ? trim( $attr['id'] ) : ''; + + if ( empty( $form_id ) ) + return $output; + + // cast form id + $form_id = (int) $form_id; + + // get form + // $form = FrmForm::getOne( $form_id ); + $form = FrmForm::get_published_forms( [ 'id' => $form_id ], 1, 'exclude' ); + + // valid abd active form? + if ( $form && Cookie_Notice()->privacy_consent->is_form_active( $form_id, $this->source['id'] ) ) { + // get form data + $form_data = $this->get_form( [ + 'form_id' => $form_id + ] ); + + $output = (string) $output; + $output .= ' + '; + } + + return $output; + } + + /** + * Handle form submission. + * + * @param array $errors + * @param array $values + * + * @return array + */ + public function handle_form( $errors, $values ) { + // get main instance + $cn = Cookie_Notice(); + + // active registration form? + if ( $cn->privacy_consent->is_form_active( $values['form_id'], $this->source['id'] ) ) + $cn->privacy_consent->set_cookie( empty( $errors ) ? 'true' : 'false' ); + + return $errors; + } +} + +new Cookie_Notice_Modules_FormidableForms_Privacy_Consent(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/hummingbird/hummingbird.php b/wp-content/plugins/cookie-notice/includes/modules/hummingbird/hummingbird.php new file mode 100644 index 0000000..2c6ecf3 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/hummingbird/hummingbird.php @@ -0,0 +1,60 @@ +is_active() ) { + // delete cache files after updating settings or status + add_action( 'cn_configuration_updated', [ $this, 'delete_cache' ] ); + } + } + } + + /** + * Delete all cache files. + * + * @return void + */ + public function delete_cache() { + do_action( 'wphb_clear_page_cache' ); + } +} + +new Cookie_Notice_Modules_Hummingbird(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/litespeed-cache/litespeed-cache.php b/wp-content/plugins/cookie-notice/includes/modules/litespeed-cache/litespeed-cache.php new file mode 100644 index 0000000..7742d43 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/litespeed-cache/litespeed-cache.php @@ -0,0 +1,57 @@ +get_url( 'widget' ) ); + + // add widget inline code + $excludes[] = 'huOptions'; + + // React admin asset exclusions — see Cookie_Notice::REACT_ADMIN_*. + // Defense-in-depth if LiteSpeed's JS combine / defer touches admin pages. + $excludes[] = Cookie_Notice::REACT_ADMIN_BUNDLE_BASENAME; + $excludes[] = Cookie_Notice::REACT_ADMIN_INLINE_KEYWORD; + + return $excludes; + } +} + +new Cookie_Notice_Modules_LiteSpeedCache(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/mailchimp/privacy-consent.php b/wp-content/plugins/cookie-notice/includes/modules/mailchimp/privacy-consent.php new file mode 100644 index 0000000..70105fc --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/mailchimp/privacy-consent.php @@ -0,0 +1,233 @@ +source = [ + 'name' => __( 'Mailchimp for WP', 'cookie-notice' ), + 'id' => 'mailchimp', + 'id_type' => 'integer', + 'type' => 'dynamic', + 'availability' => cn_is_plugin_active( 'mailchimp', 'privacy-consent' ), + 'status' => $cn->options['privacy_consent']['mailchimp_active'], + 'status_type' => $cn->options['privacy_consent']['mailchimp_active_type'], + 'forms' => [] + ]; + + // register source + $cn->privacy_consent->add_instance( $this, $this->source['id'] ); + $cn->privacy_consent->add_source( $this->source ); + + add_action( 'admin_init', [ $this, 'register_source' ] ); + + // check compliance status + if ( $cn->get_status() !== 'active' ) + return; + + // forms + add_filter( 'mc4wp_form_after_fields', [ $this, 'form_html' ], 10, 2 ); + add_action( 'mc4wp_form_success', [ $this, 'handle_form' ] ); + } + + /** + * Register source. + * + * @return void + */ + public function register_source() { + register_setting( + 'cookie_notice_privacy_consent_mailchimp', + 'cookie_notice_privacy_consent_mailchimp', + [ + 'type' => 'array' + ] + ); + } + + /** + * Validate source. + * + * @param array $input + * + * @return array + */ + public function validate( $input ) { + // get main instance + $cn = Cookie_Notice(); + + $input['mailchimp_active'] = isset( $input['mailchimp_active'] ); + $input['mailchimp_active_type'] = isset( $input['mailchimp_active_type'] ) && array_key_exists( $input['mailchimp_active_type'], $cn->privacy_consent->form_active_types ) ? $input['mailchimp_active_type'] : $cn->defaults['privacy_consent']['mailchimp_active_type']; + + return $input; + } + + /** + * Check whether form exists. + * + * @param int $form_id + * + * @return bool + */ + public function form_exists( $form_id ) { + $query = new WP_Query( [ + 'p' => $form_id, + 'post_status' => 'publish', + 'post_type' => 'mc4wp-form', + 'fields' => 'ids', + 'no_found_rows' => true + ] ); + + return $query->have_posts(); + } + + /** + * Get forms. + * + * @param array $args + * + * @return array + */ + public function get_forms( $args ) { + // get only published forms + $query = new WP_Query( [ + 'post_status' => 'publish', + 'post_type' => 'mc4wp-form', + 'order' => $args['order'], + 'orderby' => $args['orderby'], + 'fields' => 'all', + 'posts_per_page' => 10, + 'no_found_rows' => false, + 'paged' => $args['page'], + 's' => $args['search'] + ] ); + + $forms = []; + + // any forms? + if ( ! empty( $query->posts ) ) { + foreach ( $query->posts as $post ) { + $forms[] = [ + 'id' => $post->ID, + 'title' => $post->post_title, + 'date' => $post->post_date, + 'fields' => [] + ]; + } + } + + return [ + 'forms' => $forms, + 'total' => $query->found_posts, + 'max_pages' => $query->max_num_pages + ]; + } + + /** + * Get form. + * + * @param array $args + * + * @return array + */ + public function get_form( $args ) { + // get only one form + $query = new WP_Query( [ + 'p' => (int) $args['form_id'], + 'post_status' => 'publish', + 'post_type' => 'mc4wp-form', + 'fields' => 'all', + 'no_found_rows' => true + ] ); + + // any forms? + if ( ! empty( $query->posts[0] ) ) { + $form = [ + 'source' => $this->source['id'], + 'id' => $query->posts[0]->ID, + 'title' => Cookie_Notice()->privacy_consent->strcut( sanitize_text_field( $query->posts[0]->post_title ), 100 ), + 'fields' => [ + 'subject' => [ + 'first_name' => 'FNAME', + 'last_name' => 'LNAME', + 'email' => 'EMAIL' + ], + 'preferences' => [ + 'terms' => 'AGREE_TO_TERMS' + ] + ] + ]; + } else + $form = []; + + return $form; + } + + /** + * Get form. + * + * @param array $args + * + * @return array + */ + public function form_html( $html, $form ) { + // active form? + if ( Cookie_Notice()->privacy_consent->is_form_active( $form->ID, $this->source['id'] ) ) { + // get form data + $form_data = $this->get_form( [ + 'form_id' => $form->ID + ] ); + + $html .= ' + '; + } + + return $html; + } + + /** + * Handle form submission. + * + * @param object $form + * + * @return void + */ + public function handle_form( $form ) { + // get main instance + $cn = Cookie_Notice(); + + // active registration form? + if ( $cn->privacy_consent->is_form_active( $form->ID, $this->source['id'] ) ) + $cn->privacy_consent->set_cookie( 'true' ); + } +} + +new Cookie_Notice_Modules_Mailchimp_Privacy_Consent(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/speed-optimizer/speed-optimizer.php b/wp-content/plugins/cookie-notice/includes/modules/speed-optimizer/speed-optimizer.php new file mode 100644 index 0000000..293f421 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/speed-optimizer/speed-optimizer.php @@ -0,0 +1,104 @@ +db_version, '2.4.16', '<=' ) ) { + if ( $cache_active ) { + // clear cache + $this->delete_cache(); + } + } + + if ( $cache_active ) { + // actions + add_action( 'cn_configuration_updated', [ $this, 'delete_cache' ] ); + + // filters + add_filter( 'sgo_js_minify_exclude', [ $this, 'exclude_script' ] ); + add_filter( 'sgo_javascript_combine_exclude', [ $this, 'exclude_script' ] ); + add_filter( 'sgo_javascript_combine_excluded_external_paths', [ $this, 'exclude_script' ] ); + add_filter( 'sgo_javascript_combine_excluded_inline_content', [ $this, 'exclude_code' ] ); + } + } + + /** + * Exclude JavaScript file. + * + * @param array $excludes + * @return array + */ + function exclude_script( $excludes ) { + // add widget url + $excludes[] = basename( Cookie_Notice()->get_url( 'widget' ) ); + + // React admin asset exclusions — see Cookie_Notice::REACT_ADMIN_*. + // Defense-in-depth if SG Optimizer's JS minify / combine touches admin pages. + $excludes[] = Cookie_Notice::REACT_ADMIN_BUNDLE_BASENAME; + + return $excludes; + } + + /** + * Exclude JavaScript inline code. + * + * @param array $excludes + * @return array + */ + function exclude_code( $excludes ) { + // add widget inline code + $excludes[] = 'huOptions'; + + // React admin asset exclusions — see Cookie_Notice::REACT_ADMIN_*. + $excludes[] = Cookie_Notice::REACT_ADMIN_INLINE_KEYWORD; + + return $excludes; + } + + /** + * Delete all cache files. + * + * @return void + */ + public function delete_cache() { + if ( function_exists( 'sg_cachepress_purge_cache' ) ) + sg_cachepress_purge_cache(); + } +} + +new Cookie_Notice_Modules_SpeedOptimizer(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/speedycache/speedycache.php b/wp-content/plugins/cookie-notice/includes/modules/speedycache/speedycache.php new file mode 100644 index 0000000..353d47e --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/speedycache/speedycache.php @@ -0,0 +1,64 @@ +options['status'] ); + + // update 2.4.17 + if ( version_compare( Cookie_Notice()->db_version, '2.4.16', '<=' ) ) { + if ( $cache_active ) { + // clear cache + $this->delete_cache(); + } + } + + if ( $cache_active ) { + // delete cache files after updating settings or status + add_action( 'cn_configuration_updated', [ $this, 'delete_cache' ] ); + } + } + + /** + * Delete all cache files. + * + * @return void + */ + public function delete_cache() { + // clear cache + if ( function_exists( 'speedycache_delete_cache' ) ) + speedycache_delete_cache( true ); + } +} + +new Cookie_Notice_Modules_SpeedyCache(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/woocommerce/privacy-consent.php b/wp-content/plugins/cookie-notice/includes/modules/woocommerce/privacy-consent.php new file mode 100644 index 0000000..dcc565d --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/woocommerce/privacy-consent.php @@ -0,0 +1,382 @@ + [ + 'status' => false + ], + 'wc_checkout_form' => [ + 'status' => false + ] + ]; + private $source = []; + private $registration_started = false; + private $registration_ended = false; + + /** + * Class constructor. + * + * @return void + */ + public function __construct() { + // get main instance + $cn = Cookie_Notice(); + + $this->source = [ + 'name' => __( 'WooCommerce', 'cookie-notice' ), + 'id' => 'woocommerce', + 'id_type' => 'string', + 'type' => 'static', + 'availability' => cn_is_plugin_active( 'woocommerce', 'privacy-consent' ), + 'status' => $cn->options['privacy_consent']['woocommerce_active'], + 'status_type' => $cn->options['privacy_consent']['woocommerce_active_type'], + 'forms' => [ + 'wc_registration_form' => [ + 'name' => __( 'Registration Form', 'cookie-notice' ), + 'id' => 'wc_registration_form', + 'type' => 'static', + 'mode' => 'automatic', + 'status' => false, + 'logged_out_only' => true, + 'fields' => [ + 'email' => '' + ], + 'subject' => [ + 'email' => 'email' + ], + 'preferences' => [], + 'excluded' => [] + ], + 'wc_checkout_form' => [ + 'name' => __( 'Checkout Form', 'cookie-notice' ), + 'id' => 'wc_checkout_form', + 'type' => 'static', + 'mode' => 'automatic', + 'status' => true, + 'logged_out_only' => true, + 'fields' => [ + 'email' => '', + 'country' => '', + 'first_name' => '', + 'last_name' => '', + 'address_1' => '', + 'address_2' => '', + 'postal_code' => '', + 'city' => '', + 'phone' => '', + 'note' => '' + ], + 'subject' => [ + 'email' => '#email', + 'first_name' => '#shipping-first_name', + 'last_name' => '#shipping-last_name' + ], + 'preferences' => [ + 'terms' => '#terms-and-conditions' + ], + 'excluded' => [] + ] + ] + ]; + + // register source + $cn->privacy_consent->add_instance( $this, $this->source['id'] ); + $cn->privacy_consent->add_source( $this->source ); + + add_action( 'admin_init', [ $this, 'register_source' ] ); + + // check compliance status + if ( $cn->get_status() !== 'active' ) + return; + + // registration + add_action( 'woocommerce_register_form', [ $this, 'register_form' ] ); + add_action( 'wp_loaded', [ $this, 'registration_end' ], 21 ); + add_filter( 'woocommerce_process_registration_errors', [ $this, 'registration_start' ], PHP_INT_MAX ); + add_filter( 'woocommerce_registration_auth_new_customer', [ $this, 'registration_auth_new_customer' ], PHP_INT_MAX ); + + // checkout + add_action( 'woocommerce_new_order', [ $this, 'checkout_new_order' ], 10, 2 ); + add_action( 'woocommerce_checkout_after_order_review', [ $this, 'checkout_form_classic' ] ); + add_filter( 'render_block', [ $this, 'checkout_form_blocks' ], 10, 2 ); + } + + /** + * Register source. + * + * @return void + */ + public function register_source() { + register_setting( + 'cookie_notice_privacy_consent_woocommerce', + 'cookie_notice_privacy_consent_woocommerce', + [ + 'type' => 'array' + ] + ); + } + + /** + * Validate source. + * + * @param array $input + * + * @return array + */ + public function validate( $input ) { + // get main instance + $cn = Cookie_Notice(); + + $input['woocommerce_active'] = isset( $input['woocommerce_active'] ); + $input['woocommerce_active_type'] = isset( $input['woocommerce_active_type'] ) && array_key_exists( $input['woocommerce_active_type'], $cn->privacy_consent->form_active_types ) ? $input['woocommerce_active_type'] : $cn->defaults['privacy_consent']['woocommerce_active_type']; + + + return $input; + } + + /** + * Check whether form exists. + * + * @param string $form_id + * + * @return bool + */ + public function form_exists( $form_id ) { + return array_key_exists( $form_id, $this->source['forms'] ); + } + + /** + * Get form. + * + * @param array $args + * + * @return array + */ + public function get_form( $args ) { + // invalid form? + if ( ! $this->form_exists( $args['form_id'] ) ) + return []; + + $form_data = $this->source['forms'][$args['form_id']]; + $form = [ + 'source' => $this->source['id'], + 'id' => $form_data['id'], + 'title' => $form_data['name'], + 'fields' => [ + 'subject' => $form_data['subject'], + 'preferences' => $form_data['preferences'] + ] + ]; + + if ( $args['form_id'] === 'wc_checkout_form' ) { + if ( $args['form_type'] === 'blocks' ) { + // force preferences + $form['preferences']['privacy'] = true; + } elseif ( $args['form_type'] === 'classic' ) { + // set default input names + $form['fields']['subject']['email'] = 'billing_email'; + $form['fields']['subject']['first_name'] = 'billing_first_name'; + $form['fields']['subject']['last_name'] = 'billing_last_name'; + + // add terms and conditions input name if needed + if ( wc_terms_and_conditions_checkbox_enabled() ) + $form['fields']['preferences']['terms'] = 'terms'; + else + unset( $form['fields']['preferences']['terms'] ); + + // force privacy policy + if ( wc_privacy_policy_page_id() && wc_get_privacy_policy_text( 'checkout' ) !== '' ) + $form['preferences']['privacy'] = true; + } + } elseif ( $args['form_id'] === 'wc_registration_form' ) { + // force privacy policy + if ( wc_privacy_policy_page_id() && wc_get_privacy_policy_text( 'registration' ) !== '' ) + $form['preferences']['privacy'] = true; + } + + return $form; + } + + /** + * Registration form. + * + * @return void + */ + public function register_form() { + $form_id = 'wc_registration_form'; + + // active form? + if ( Cookie_Notice()->privacy_consent->is_form_active( $form_id, $this->source['id'] ) ) { + // get form data + $form_data = $this->get_form( [ + 'form_id' => $form_id + ] ); + + echo ' + '; + } + } + + /** + * Registration start point. + * + * @param object $error + * + * @return object + */ + public function registration_start( $error ) { + if ( Cookie_Notice()->privacy_consent->is_form_active( 'wc_registration_form', $this->source['id'] ) ) { + // begin registration process + $this->registration_started = true; + } + + return $error; + } + + /** + * Registration end point #1. + * + * @param bool $force_login + * + * @return bool + */ + public function registration_auth_new_customer( $force_login ) { + if ( $this->registration_started ) { + $this->registration_ended = true; + + Cookie_Notice()->privacy_consent->set_cookie( 'true' ); + } + + // if $force_login is true registration_end() will not be executed + return $force_login; + } + + /** + * Registration end point #2. + * + * @return void + */ + public function registration_end() { + if ( $this->registration_started && ! $this->registration_ended ) + Cookie_Notice()->privacy_consent->set_cookie( 'false' ); + } + + /** + * Checkout form. + * + * @return void + */ + public function checkout_form_classic() { + $form_id = 'wc_checkout_form'; + + // active form? + if ( Cookie_Notice()->privacy_consent->is_form_active( $form_id, $this->source['id'] ) ) { + // get form data + $form_data = $this->get_form( [ + 'form_id' => $form_id, + 'form_type' => 'classic' + ] ); + + echo ' + '; + } + } + + /** + * Add captcha to the checkout block. + * + * @param string|mixed $block_content + * @param array $block + * + * @return string + */ + public function checkout_form_blocks( $block_content, $block ) { + $block_content = (string) $block_content; + + if ( $block['blockName'] !== 'woocommerce/checkout' ) + return $block_content; + + $form_id = 'wc_checkout_form'; + + // active form? + if ( Cookie_Notice()->privacy_consent->is_form_active( $form_id, $this->source['id'] ) ) { + // get form data + $form_data = $this->get_form( [ + 'form_id' => $form_id, + 'form_type' => 'blocks' + ] ); + + $block_content = ' +
    + ' . $block_content . ' + +
    '; + } + + return $block_content; + } + + /** + * Checkout new order. + * + * @param int $order_id + * @param object $order + * + * @return void + */ + public function checkout_new_order( $order_id, $order ) { + // skip new admin area orders + if ( isset( $_REQUEST[ '_wpnonce' ] ) && wp_verify_nonce( $_REQUEST[ '_wpnonce' ], 'update-order_' . $order_id ) ) + return; + + // get main instance + $cn = Cookie_Notice(); + + // is checkout enabled? + if ( $cn->privacy_consent->is_form_active( 'wc_checkout_form', $this->source['id'] ) ) { + if ( $order->get_billing_email() !== '' ) + $cn->privacy_consent->set_cookie( 'true' ); + } + } +} + +new Cookie_Notice_Modules_WooCommerce_Privacy_Consent(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/wordpress/privacy-consent.php b/wp-content/plugins/cookie-notice/includes/modules/wordpress/privacy-consent.php new file mode 100644 index 0000000..440bf3e --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/wordpress/privacy-consent.php @@ -0,0 +1,313 @@ + [ + 'status' => true + ], + 'wp_comment_form' => [ + 'status' => true + ] + ]; + private $source = []; + private $comment_form_active = false; + private $comment_passed_validation = false; + private $comment_validation = false; + + /** + * Class constructor. + * + * @return void + */ + public function __construct() { + // get main instance + $cn = Cookie_Notice(); + + $this->source = [ + 'name' => __( 'WordPress', 'cookie-notice' ), + 'id' => 'wordpress', + 'id_type' => 'string', + 'type' => 'static', + 'availability' => true, + 'status' => $cn->options['privacy_consent']['wordpress_active'], + 'status_type' => $cn->options['privacy_consent']['wordpress_active_type'], + 'forms' => [ + 'wp_registration_form' => [ + 'name' => __( 'Registration Form', 'cookie-notice' ), + 'id' => 'wp_registration_form', + 'type' => 'static', + 'mode' => 'automatic', + 'status' => false, + 'logged_out_only' => true, + 'fields' => [ + 'username' => '', + 'email' => '' + ], + 'subject' => [ + 'email' => 'user_email', + 'first_name' => 'user_login' + ], + 'preferences' => [], + 'excluded' => [] + ], + 'wp_comment_form' => [ + 'name' => __( 'Comment Form', 'cookie-notice' ), + 'id' => 'wp_comment_form', + 'type' => 'static', + 'mode' => 'automatic', + 'status' => false, + 'logged_out_only' => true, + 'fields' => [ + 'comment' => '', + 'name' => '', + 'email' => '', + 'website' => '' + ], + 'subject' => [ + 'email' => 'email', + 'first_name' => 'author' + ], + 'preferences' => [ + 'privacy' => 'wp-comment-cookies-consent' + ], + 'excluded' => [] + ] + ] + ]; + + // register source + $cn->privacy_consent->add_instance( $this, $this->source['id'] ); + $cn->privacy_consent->add_source( $this->source ); + + add_action( 'admin_init', [ $this, 'register_source' ] ); + + // check compliance status + if ( $cn->get_status() !== 'active' ) + return; + + // comments + add_action( 'comment_form', [ $this, 'comment_form' ] ); + add_action( 'comment_post', [ $this, 'comment_post' ], 10, 3 ); + add_action( 'init', [ $this, 'comment_submission_start' ] ); + add_action( 'shutdown', [ $this, 'comment_submission_end' ] ); + + // registration + add_action( 'register_form', [ $this, 'register_form' ] ); + add_filter( 'registration_errors', [ $this, 'registration_errors' ], PHP_INT_MAX, 3 ); + } + + /** + * Register source. + * + * @return void + */ + public function register_source() { + register_setting( + 'cookie_notice_privacy_consent_wordpress', + 'cookie_notice_privacy_consent_wordpress', + [ + 'type' => 'array' + ] + ); + } + + /** + * Validate source. + * + * @param array $input + * + * @return array + */ + public function validate( $input ) { + // get main instance + $cn = Cookie_Notice(); + + $input['wordpress_active'] = isset( $input['wordpress_active'] ); + $input['wordpress_active_type'] = isset( $input['wordpress_active_type'] ) && array_key_exists( $input['wordpress_active_type'], $cn->privacy_consent->form_active_types ) ? $input['wordpress_active_type'] : $cn->defaults['privacy_consent']['wordpress_active_type']; + + return $input; + } + + /** + * Check whether form exists. + * + * @param string $form_id + * + * @return bool + */ + public function form_exists( $form_id ) { + return array_key_exists( $form_id, $this->source['forms'] ); + } + + /** + * Get form. + * + * @param array $args + * + * @return array + */ + public function get_form( $args ) { + // invalid form? + if ( ! $this->form_exists( $args['form_id'] ) ) + return []; + + $form_data = $this->source['forms'][$args['form_id']]; + + return [ + 'source' => $this->source['id'], + 'id' => $form_data['id'], + 'title' => $form_data['name'], + 'fields' => [ + 'subject' => $form_data['subject'], + 'preferences' => $form_data['preferences'] + ] + ]; + } + + /** + * Comment form. + * + * @return void + */ + public function comment_form() { + $form_id = 'wp_comment_form'; + + // active form? + if ( Cookie_Notice()->privacy_consent->is_form_active( $form_id, $this->source['id'] ) ) { + // get form data + $form_data = $this->get_form( [ + 'form_id' => $form_id + ] ); + + echo ' + '; + } + } + + /** + * Mark comment as valid. + * + * @param array $comment_data + * + * @return array + */ + public function comment_post( $comment_id, $comment_approved, $comment_data ) { + if ( is_admin() ) + return; + + if ( ! $this->comment_form_active ) + return; + + if ( $this->comment_validation ) + $this->comment_passed_validation = true; + } + + /** + * Comment validation start process. + * + * @return void + */ + public function comment_submission_start() { + if ( is_admin() ) + return; + + $this->comment_form_active = Cookie_Notice()->privacy_consent->is_form_active( 'wp_comment_form', $this->source['id'] ); + + if ( ! $this->comment_form_active ) + return; + + // adding comment? + if ( basename( $_SERVER['PHP_SELF'] ) === 'wp-comments-post.php' ) { + $this->comment_validation = true; + $this->comment_passed_validation = false; + + Cookie_Notice()->privacy_consent->set_cookie( 'false' ); + } + } + + /** + * Comment validation end process. + * + * @return void + */ + public function comment_submission_end() { + if ( is_admin() ) + return; + + if ( ! $this->comment_form_active ) + return; + + // adding comment? + if ( $this->comment_validation && $this->comment_passed_validation ) + Cookie_Notice()->privacy_consent->set_cookie( 'true' ); + } + + /** + * Registration form. + * + * @return void + */ + public function register_form() { + $form_id = 'wp_registration_form'; + + // active form? + if ( Cookie_Notice()->privacy_consent->is_form_active( $form_id, $this->source['id'] ) ) { + // get form data + $form_data = $this->get_form( [ + 'form_id' => $form_id + ] ); + + echo ' + '; + } + } + + /** + * Verify registration. + * + * @param object $errors + * @param string $user_login + * @param string $user_email + * + * @return object + */ + public function registration_errors( $errors, $user_login, $user_email ) { + // get main instance + $cn = Cookie_Notice(); + + // active registration form? + if ( $cn->privacy_consent->is_form_active( 'wp_registration_form', $this->source['id'] ) ) + $cn->privacy_consent->set_cookie( $errors->has_errors() ? 'false' : 'true' ); + + return $errors; + } +} + +new Cookie_Notice_Modules_WordPress_Privacy_Consent(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/wp-fastest-cache/wp-fastest-cache.php b/wp-content/plugins/cookie-notice/includes/modules/wp-fastest-cache/wp-fastest-cache.php new file mode 100644 index 0000000..b3674df --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/wp-fastest-cache/wp-fastest-cache.php @@ -0,0 +1,53 @@ +wpFastestCacheStatus ) ) { + // update 2.4.10 + if ( version_compare( Cookie_Notice()->db_version, '2.4.9', '<=' ) ) + $this->delete_cache(); + + // delete cache files after updating settings or status + add_action( 'cn_configuration_updated', [ $this, 'delete_cache' ] ); + } + } + + /** + * Delete all cache files. + * + * @return void + */ + public function delete_cache() { + if ( isset( $GLOBALS['wp_fastest_cache'] ) && method_exists( $GLOBALS['wp_fastest_cache'], 'deleteCache' ) ) + $GLOBALS['wp_fastest_cache']->deleteCache( false ); + } +} + +new Cookie_Notice_Modules_WPFastestCache(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/wp-optimize/wp-optimize.php b/wp-content/plugins/cookie-notice/includes/modules/wp-optimize/wp-optimize.php new file mode 100644 index 0000000..5fa722c --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/wp-optimize/wp-optimize.php @@ -0,0 +1,54 @@ +load_module(); + } + + /** + * Add compatibility to WP-Optimize plugin. + * + * @return void + */ + public function load_module() { + // get wp-optimize configuration + if ( class_exists( 'WPO_Cache_Config' ) ) { + $options = WPO_Cache_Config::instance()->get(); + + // is caching enabled? + if ( ! empty( $options['enable_page_caching'] ) ) + add_filter( 'wpo_purge_cache_hooks', [ $this, 'add_purge_cache' ] ); + } + } + + /** + * Add action when cache is purged. + * + * @param array $actions + * @return array + */ + public function add_purge_cache( $actions ) { + $actions[] = 'cn_configuration_updated'; + + return $actions; + } +} + +new Cookie_Notice_Modules_WPOptimize(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/wp-rocket/wp-rocket.php b/wp-content/plugins/cookie-notice/includes/modules/wp-rocket/wp-rocket.php new file mode 100644 index 0000000..47f6691 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/wp-rocket/wp-rocket.php @@ -0,0 +1,97 @@ +db_version, '2.4.16', '<=' ) ) + $this->delete_cache(); + + // delete cache files after updating settings or status + add_action( 'cn_configuration_updated', [ $this, 'delete_cache' ] ); + + // filters + add_filter( 'rocket_exclude_defer_js', [ $this, 'exclude_script' ] ); + add_filter( 'rocket_exclude_js', [ $this, 'exclude_script' ] ); + add_filter( 'rocket_delay_js_exclusions', [ $this, 'exclude_script' ] ); + add_filter( 'rocket_delay_js_exclusions', [ $this, 'exclude_code' ] ); + add_filter( 'rocket_defer_inline_exclusions', [ $this, 'exclude_code' ] ); + add_filter( 'rocket_excluded_inline_js_content', [ $this, 'exclude_code' ] ); + } + + /** + * Delete all cache files. + * + * @return void + */ + public function delete_cache() { + // clear cache + if ( function_exists( 'rocket_clean_domain' ) ) + rocket_clean_domain(); + + // clear minified css and js files + if ( function_exists( 'rocket_clean_minify' ) ) + rocket_clean_minify( [ 'js', 'css' ] ); + } + + /** + * Exclude JavaScript file. + * + * @param array $excludes + * @return array + */ + function exclude_script( $excludes ) { + // add widget url + $excludes[] = basename( Cookie_Notice()->get_url( 'widget' ) ); + + // React admin asset exclusions — see Cookie_Notice::REACT_ADMIN_*. + // Defense-in-depth if Rocket's delay-JS / minify touches admin pages + // (e.g. via Cloudflare APO integrations). + $excludes[] = Cookie_Notice::REACT_ADMIN_BUNDLE_BASENAME; + + return $excludes; + } + + /** + * Exclude JavaScript inline code. + * + * @param array $excludes + * @return array + */ + function exclude_code( $excludes ) { + // add widget inline code + $excludes[] = 'huOptions'; + + // React admin asset exclusions — see Cookie_Notice::REACT_ADMIN_*. + $excludes[] = Cookie_Notice::REACT_ADMIN_INLINE_KEYWORD; + + return $excludes; + } +} + +new Cookie_Notice_Modules_WPRocket(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/modules/wp-super-cache/wp-super-cache.php b/wp-content/plugins/cookie-notice/includes/modules/wp-super-cache/wp-super-cache.php new file mode 100644 index 0000000..e338e14 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/modules/wp-super-cache/wp-super-cache.php @@ -0,0 +1,76 @@ +source = [ + 'name' => __( 'WPForms', 'cookie-notice' ), + 'id' => 'wpforms', + 'id_type' => 'integer', + 'type' => 'dynamic', + 'availability' => cn_is_plugin_active( 'wpforms', 'privacy-consent' ), + 'status' => $cn->options['privacy_consent']['wpforms_active'], + 'status_type' => $cn->options['privacy_consent']['wpforms_active_type'], + 'forms' => [] + ]; + + // register source + $cn->privacy_consent->add_instance( $this, $this->source['id'] ); + $cn->privacy_consent->add_source( $this->source ); + + add_action( 'admin_init', [ $this, 'register_source' ] ); + + // check compliance status + if ( $cn->get_status() !== 'active' ) + return; + + // forms + add_action( 'wpforms_frontend_output', [ $this, 'wpforms_shortcode' ], 19, 5 ); + } + + /** + * Register source. + * + * @return void + */ + public function register_source() { + register_setting( + 'cookie_notice_privacy_consent_wpforms', + 'cookie_notice_privacy_consent_wpforms', + [ + 'type' => 'array' + ] + ); + } + + /** + * Validate source. + * + * @param array $input + * + * @return array + */ + public function validate( $input ) { + // get main instance + $cn = Cookie_Notice(); + + $input['wpforms_active'] = isset( $input['wpforms_active'] ); + $input['wpforms_active_type'] = isset( $input['wpforms_active_type'] ) && array_key_exists( $input['wpforms_active_type'], $cn->privacy_consent->form_active_types ) ? $input['wpforms_active_type'] : $cn->defaults['privacy_consent']['wpforms_active_type']; + + return $input; + } + + /** + * Check whether form exists. + * + * @param int $form_id + * + * @return bool + */ + public function form_exists( $form_id ) { + $query = new WP_Query( [ + 'p' => $form_id, + 'post_status' => 'publish', + 'post_type' => 'wpforms', + 'fields' => 'ids', + 'no_found_rows' => true + ] ); + + return $query->have_posts(); + } + + /** + * Get forms. + * + * @param array $args + * + * @return array + */ + public function get_forms( $args ) { + // get only published forms + $query = new WP_Query( [ + 'post_status' => 'publish', + 'post_type' => 'wpforms', + 'order' => $args['order'], + 'orderby' => $args['orderby'], + 'fields' => 'all', + 'posts_per_page' => 10, + 'no_found_rows' => false, + 'paged' => $args['page'], + 's' => $args['search'] + ] ); + + $forms = []; + + // any forms? + if ( ! empty( $query->posts ) ) { + foreach ( $query->posts as $post ) { + $forms[] = [ + 'id' => $post->ID, + 'title' => $post->post_title, + 'date' => $post->post_date, + 'fields' => [] + ]; + } + } + + return [ + 'forms' => $forms, + 'total' => $query->found_posts, + 'max_pages' => $query->max_num_pages + ]; + } + + /** + * Get form. + * + * @param array $args + * + * @return array + */ + public function get_form( $args ) { + // get only one form + $query = new WP_Query( [ + 'p' => (int) $args['form_id'], + 'post_status' => 'publish', + 'post_type' => 'wpforms', + 'fields' => 'all', + 'no_found_rows' => true + ] ); + + // any forms? + if ( ! empty( $query->posts[0] ) ) { + $form = [ + 'source' => $this->source['id'], + 'id' => $query->posts[0]->ID, + 'title' => Cookie_Notice()->privacy_consent->strcut( sanitize_text_field( $query->posts[0]->post_title ), 100 ), + 'fields' => [ + 'subject' => [ + 'first_name' => '', + 'last_name' => '' + ] + ] + ]; + } else + $form = []; + + return $form; + } + + /** + * WPForms shortcode output. + * + * @param array|mixed $data + * @param null $deprecated + * @param bool $title + * @param bool $description + * @param array $errors + * + * @return void + */ + public function wpforms_shortcode( $data, $deprecated, $title, $description, $errors ) { + $data = (array) $data; + + // active form? + if ( Cookie_Notice()->privacy_consent->is_form_active( $data['id'], $this->source['id'] ) ) { + // get form data + $form_data = $this->get_form( [ + 'form_id' => $data['id'] + ] ); + + echo ' + '; + } + } +} + +new Cookie_Notice_Modules_WPForms_Privacy_Consent(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/includes/notifications.json b/wp-content/plugins/cookie-notice/includes/notifications.json new file mode 100644 index 0000000..e4ea914 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/notifications.json @@ -0,0 +1,83 @@ +{ + "_meta": { + "version": 1, + "rangeConvention": "usagePercent ranges are [inclusive, exclusive). null = unbounded. Example: [70, 100] means >= 70% AND < 100%.", + "templateVariables": "{sessionTotal}, {sessionUsed}, {usagePercent} — interpolated at render time with locale-formatted numbers." + }, + "rules": [ + { + "id": "threshold-locked", + "type": "critical", + "priority": 100, + "slot": "topBar", + "condition": { "tier": "free", "usagePercent": [ 100, null ] }, + "title": "Action Required: Visit limit reached", + "description": "Your site has exceeded its free monthly limit of {sessionTotal} visits. Cookie autoblocking is now disabled, which means tracking scripts may fire before visitors consent. Upgrade to Pro immediately to restore full compliance protection.", + "cta": { "label": "Upgrade to Pro \u2192", "action": "openPricingModal" }, + "dismissible": false, + "icon": "error" + }, + { + "id": "threshold-warning", + "type": "warning", + "priority": 80, + "slot": "topBar", + "condition": { "tier": "free", "usagePercent": [ 70, 100 ] }, + "title": "Approaching your visit limit", + "description": "Your site is nearing its free monthly limit ({sessionUsed} / {sessionTotal} visits). If you exceed the limit, cookie autoblocking will be disabled. Upgrade to Pro now for unlimited coverage.", + "cta": { "label": "Upgrade to Pro \u2192", "action": "openPricingModal" }, + "dismissible": true, + "icon": "warning" + }, + { + "id": "generic-upsell", + "type": "info", + "priority": 20, + "slot": "topBar", + "condition": { "tier": "free" }, + "title": "Upgrade for unlimited coverage", + "description": "Free protects up to {sessionTotal} visits/month. Upgrade to Pro for unlimited visits, geo-targeting, and extended consent logs.", + "cta": { "label": "Upgrade to Pro \u2192", "action": "openPricingModal" }, + "dismissible": true, + "icon": "info" + }, + { + "id": "sidebar-threshold", + "type": "warning", + "priority": 90, + "slot": "sidebar", + "condition": { "tier": "free", "usagePercent": [ 70, null ] }, + "headline": "Restore protection", + "features": [ + "Remove the visit limit", + "Geo-targeted consent", + "Extended consent logs" + ], + "cta": { "label": "Upgrade to Pro \u2192", "action": "openPricingModal" } + }, + { + "id": "sidebar-generic", + "type": "info", + "priority": 10, + "slot": "sidebar", + "condition": { "tier": "free" }, + "headline": "Unlock unlimited compliance", + "features": [ + "Unlimited visits", + "Geo-targeted consent", + "Extended consent logs" + ], + "cta": { "label": "Upgrade to Pro \u2192", "action": "openPricingModal" } + }, + { + "id": "dashboard-near-limit", + "type": "warning", + "priority": 80, + "slot": "wpDashboard", + "condition": { "tier": "free", "usagePercent": [ 70, null ] }, + "title": "Approaching your visit limit", + "description": "You\u2019ve used {usagePercent}% of your monthly limit. Autoblocking will be disabled and consent records will not be stored once you reach your limit.", + "cta": { "label": "Upgrade to Professional \u2192", "action": "openPricingModal" } + } + ] +} diff --git a/wp-content/plugins/cookie-notice/includes/privacy-consent-list-table.php b/wp-content/plugins/cookie-notice/includes/privacy-consent-list-table.php new file mode 100644 index 0000000..9d628b0 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/privacy-consent-list-table.php @@ -0,0 +1,332 @@ +cn_source = $source; + } + + /** + * Set source forms. + * + * @param array $forms + * + * @return void + */ + public function cn_set_forms( $forms ) { + $this->cn_forms = $forms; + } + + /** + * Set empty init. + * + * @return void + */ + public function cn_empty_init() { + $this->cn_empty_init = true; + } + + /** + * Display extra controls between bulk actions and pagination. + * + * @param string $which + * + * @return void + */ + protected function extra_tablenav( $which ) { + // skip top navigation + if ( $which === 'top' ) + return; + + echo ''; + } + + /** + * Generate table navigation. + * + * @param string $which + * + * @return void + */ + protected function display_tablenav( $which ) { + // avoid different nonce and skip top navigation + if ( $which === 'top' ) + return; + + // skip static source and sources with less than 11 forms + if ( $this->cn_source['type'] === 'static' || $this->get_pagination_arg( 'total_items' ) < 11 ) + return; + + echo ' +
    '; + + if ( $this->has_items() ) { + echo ' +
    '; + + $this->bulk_actions( $which ); + + echo ' +
    '; + } + + $this->pagination( $which ); + $this->extra_tablenav( $which ); + + echo ' +
    +
    '; + } + + /** + * Get a list of CSS classes. + * + * @return array + */ + protected function get_table_classes() { + if ( $this->cn_source['type'] === 'static' ) + return parent::get_table_classes(); + + return [ 'widefat', 'fixed', 'striped', esc_attr( 'table-view-' . get_user_setting( 'posts_list_mode', 'list' ) ), $this->_args['plural'], 'loading' ]; + } + + /** + * Display search box. + * + * @param string $text + * @param string $input_id + * + * @return void + */ + public function search_box( $text, $input_id ) { + if ( empty( $_REQUEST['s'] ) && ! $this->has_items() ) + return; + + /* update input id + $input_id .= '-search-input'; + + echo ' + '; + */ + } + + /** + * Print column headers. + * + * @param bool $with_id + * + * @return void + */ + public function print_column_headers( $with_id = true ) { + // do not print column ids + parent::print_column_headers( false ); + } + + /** + * Handle AJAX request. + * + * @return void + */ + function ajax_response() { + check_ajax_referer( 'cn-privacy-consent-list-table-nonce', 'nonce' ); + + $this->prepare_items(); + + ob_start(); + + if ( ! empty( $_REQUEST['no_placeholder'] ) ) + $this->display_rows(); + else + $this->display_rows_or_placeholder(); + + $rows = ob_get_clean(); + + ob_start(); + + $this->print_column_headers(); + $headers = ob_get_clean(); + + ob_start(); + + $this->pagination( 'bottom' ); + $pagination = ob_get_clean(); + + $response = [ + 'rows' => $rows, + 'column_headers' => $headers, + 'pagination' => $pagination + ]; + + // get pagination data + $total_items = $this->get_pagination_arg( 'total_items' ); + $total_pages = $this->get_pagination_arg( 'total_pages' ); + + if ( isset( $total_items ) ) + $response['total_items_i18n'] = sprintf( _n( '1 form', '%s forms', $total_items ), number_format_i18n( $total_items ) ); + + if ( isset( $total_pages ) ) { + $response['total_pages'] = $total_pages; + $response['total_pages_i18n'] = number_format_i18n( $total_pages ); + } + + wp_send_json_success( $response ); + } + + /** + * Prepare items for table. + * + * @return void + */ + public function prepare_items() { + // get main instance + $cn = Cookie_Notice(); + + // get consent logs + if ( is_multisite() && $cn->is_network_admin() && $cn->is_plugin_network_active() && $cn->network_options['general']['global_override'] ) + $privacy_consent = get_site_option( 'cookie_notice_privacy_consent_' . $this->cn_source['id'], [] ); + else + $privacy_consent = get_option( 'cookie_notice_privacy_consent_' . $this->cn_source['id'], [] ); + + $items = []; + $data = $this->cn_forms; + + foreach ( $data['forms'] as $form ) { + $items[] = [ + 'title' => $this->cn_source['type'] === 'dynamic' ? $form['title'] : $form['name'], + 'id' => $form['id'], + 'fields' => count( $form['fields'] ), + 'date' => $this->cn_source['type'] === 'dynamic' ? $form['date'] : '-', + 'status' => array_key_exists( $form['id'], $privacy_consent ) && array_key_exists( 'status', $privacy_consent[$form['id']] ) ? $privacy_consent[$form['id']]['status'] : false + ]; + } + + if ( $this->cn_source['type'] === 'dynamic' ) { + $this->set_pagination_args( + [ + 'total_items' => empty( $data['total'] ) ? 0 : (int) $data['total'], + 'total_pages' => empty( $data['max_pages'] ) ? 0 : (int) $data['max_pages'], + // 'per_page' => $per_page, + 'orderby' => ! empty( $_POST['orderby'] ) ? sanitize_key( $_POST['orderby'] ) : 'title', + 'order' => ! empty( $_POST['order'] ) ? sanitize_key( $_POST['order'] ) : 'asc' + ] + ); + } + + $this->_column_headers = [ $this->get_columns(), [ 'date' ], $this->get_sortable_columns(), '' ]; + + $this->items = $items; + } + + /** + * Define columns in listing table. + * + * @return array + */ + public function get_columns() { + $columns = [ + 'title' => __( 'Form Title', 'cookie-notice' ), + 'id' => __( 'Form ID', 'cookie-notice' ), + 'fields' => __( 'Fields', 'cookie-notice' ), + 'date' => __( 'Date', 'cookie-notice' ), + 'status' => __( 'Status', 'cookie-notice' ) + ]; + + return $columns; + } + + /** + * Define sortable columns. + * + * @return array + */ + public function get_sortable_columns() { + if ( $this->cn_source['type'] === 'static' ) + return []; + else + return [ + 'title' => [ 'title', false ] + // 'date' => [ 'date', true ] + ]; + } + + /** + * Define what data to show on each column of the table. + * + * @param array $item + * @param string $column_name + * + * @return string + */ + public function column_default( $item, $column_name ) { + return esc_html( $item[$column_name] ); + } + + /** + * Display form title. + * + * @param array $item + * + * @return string + */ + public function column_title( $item ) { + return '' . esc_html( $item['title'] ) . ''; + } + + /** + * Display status. + * + * @param array $item + * + * @return string + */ + public function column_status( $item ) { + return ''; + } + + /** + * Display bulk actions. + * + * @return array + */ + public function get_bulk_actions() { + return []; + } + + /** + * Display empty result. + * + * @return void + */ + public function no_items() { + // display spinner for the first visit for dynamic source + if ( $this->cn_source['type'] === 'dynamic' && $this->cn_empty_init ) { + $this->cn_empty_init = false; + + echo ''; + } else + echo __( 'No forms found.', 'cookie-notice' ); + } +} diff --git a/wp-content/plugins/cookie-notice/includes/privacy-consent-logs-list-table.php b/wp-content/plugins/cookie-notice/includes/privacy-consent-logs-list-table.php new file mode 100644 index 0000000..de1058d --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/privacy-consent-logs-list-table.php @@ -0,0 +1,382 @@ +cn_empty_init = true; + } + + /** + * Set data. + * + * @param array $data + * + * @return void + */ + public function cn_set_data( $data ) { + $this->cn_data = $data; + } + + /** + * Display content. + * + * @return void + */ + public function views() { + // get main instance + $cn = Cookie_Notice(); + + $login_url = esc_url( $cn->get_url( 'login', '?utm_campaign=consentlogs&utm_source=wordpress&utm_medium=link' ) ); + + $message = __( 'The table below shows the latest privacy consent records collected from the forms on your website.', 'cookie-notice' ); + $message .= ' ' . sprintf( __( 'Log in to the Compliance by Hu-manity.co dashboard to view details or export proof of consent.', 'cookie-notice' ), $login_url ); + + // disable if basic plan and data older than 7 days + if ( $cn->get_subscription() === 'basic' ) + $message .= '
    * ' . __( 'Note: sites on the Compliance by Hu-manity.co Free Plan can collect up to 100 records.', 'cookie-notice' ); + + echo '

    ' . wp_kses_post( $message ) . '

    '; + } + + /** + * Prepare items for table. + * + * @return void + */ + public function prepare_items() { + // prepare items + $items = []; + + // no data? + if ( ! empty( $this->cn_data ) ) { + foreach ( $this->cn_data as $consent ) { + $items[] = [ + 'subject' => $consent->subject_id, + 'preferences' => $consent->preferences, + 'form_id' => $consent->form_id, + 'form_title' => ! empty( $consent->form_title ) ? $consent->form_title : __( '—', 'cookie-notice' ), + 'source' => ! empty( $consent->source ) ? $consent->source : 'unknown', + 'date' => $consent->created_at, + 'ip_address' => $consent->ip_address + ]; + } + } + + // count items + $noi = count( $items ); + + $per_page = 20; + + $this->set_pagination_args( + [ + 'total_items' => $noi, + 'total_pages' => (int) ceil( $noi / $per_page ), + 'per_page' => $per_page + ] + ); + + $this->_column_headers = [ $this->get_columns(), [], $this->get_sortable_columns(), '' ]; + + $this->items = $items; + } + + /** + * Generate table navigation. + * + * @param string $which + * + * @return void + */ + protected function display_tablenav( $which ) { + // avoid different nonce and skip top navigation + if ( $which === 'top' ) { + echo ' +
    '; + + $this->pagination( $which ); + + echo ' +
    +
    '; + } else { + echo ' +
    '; + + if ( $this->has_items() ) { + echo ' +
    '; + + $this->bulk_actions( $which ); + + echo ' +
    '; + } + + $this->pagination( $which ); + $this->extra_tablenav( $which ); + + echo ' +
    +
    '; + } + } + + /** + * Generate content for a single row of the table. + * + * @param array $item + * + * @return void + */ + public function single_row( $item ) { + $this->cn_item_number++; + + echo 'cn_item_number > $this->_pagination_args['per_page'] ? ' style="display: none"' : '' ) . '>'; + + $this->single_row_columns( $item ); + + echo ''; + } + + /** + * Display the pagination. + * + * @param string $which + * + * @return void + */ + protected function pagination( $which ) { + if ( empty( $this->_pagination_args ) ) + return; + + $total_items = $this->_pagination_args['total_items']; + $total_pages = $this->_pagination_args['total_pages']; + + $output = '' . sprintf( + /* translators: %s: Number of items. */ + _n( '%s item', '%s items', $total_items ), + number_format_i18n( $total_items ) + ) . ''; + + $page_links = array(); + + $total_pages_before = ''; + $total_pages_after = '
    '; + + // first page + $page_links[] = sprintf( + "" . + "%s" . + "" . + '', + /* translators: Hidden accessibility text. */ + __( 'First page' ), + '«' + ); + + // previous page + $page_links[] = sprintf( + "" . + "%s" . + "" . + '', + /* translators: Hidden accessibility text. */ + __( 'Previous page' ), + '‹' + ); + + $html_current_page = '' . (int) $this->get_pagenum() . ''; + $total_pages_before = sprintf( + '%s' . + '' . + '', + /* translators: Hidden accessibility text. */ + __( 'Current Page' ) + ); + + $html_total_pages = sprintf( "%s", number_format_i18n( $total_pages ) ); + + $page_links[] = $total_pages_before . sprintf( + /* translators: 1: Current page, 2: Total pages. */ + _x( '%1$s of %2$s', 'paging' ), + $html_current_page, + $html_total_pages + ) . $total_pages_after; + + // next page + $page_links[] = sprintf( + "" . + "%s" . + "" . + '', + /* translators: Hidden accessibility text. */ + __( 'Next page' ), + '›' + ); + + // last page + $page_links[] = sprintf( + "" . + "%s" . + "" . + '', + /* translators: Hidden accessibility text. */ + __( 'Last page' ), + '»' + ); + + $pagination_links_class = 'pagination-links'; + + if ( ! empty( $infinite_scroll ) ) + $pagination_links_class .= ' hide-if-js'; + + $output .= "\n" . implode( "\n", $page_links ) . ''; + + if ( $total_pages ) + $page_class = $total_pages < 2 ? ' one-page' : ''; + else + $page_class = ' no-pages'; + + $this->_pagination = "
    $output
    "; + + echo $this->_pagination; + } + + /** + * Get a list of CSS classes. + * + * @return array + */ + protected function get_table_classes() { + return [ 'widefat', 'fixed', 'striped', esc_attr( 'table-view-' . get_user_setting( 'posts_list_mode', 'list' ) ), $this->_args['plural'], 'loading' ]; + } + + /** + * Define columns in listing table. + * + * @return array + */ + public function get_columns() { + $columns = [ + 'subject' => __( 'Subject', 'cookie-notice' ), + 'preferences' => __( 'Preferences', 'cookie-notice' ), + 'source' => __( 'Source', 'cookie-notice' ), + 'form_title' => __( 'Form', 'cookie-notice' ), + 'date' => __( 'Date', 'cookie-notice' ), + 'ip_address' => __( 'IP address', 'cookie-notice' ) + ]; + + return $columns; + } + + /** + * Define sortable columns. + * + * @return array + */ + public function get_sortable_columns() { + return []; + } + + /** + * Define what data to show on each column of the table. + * + * @param array $item + * @param string $column_name + * + * @return string + */ + public function column_default( $item, $column_name ) { + return esc_html( $item[$column_name] ); + } + + /** + * Display source. + * + * @param array $item + * + * @return string + */ + public function column_source( $item ) { + if ( $item['source'] === 'unknown' ) + $label = __( '—', 'cookie-notice' ); + else { + $source = Cookie_Notice()->privacy_consent->get_source( $item['source'] ); + + if ( ! empty( $source ) ) + $label = $source['name']; + else + $label = __( '—', 'cookie-notice' ); + } + + return esc_html( $label ); + } + + /** + * Display date. + * + * @param array $item + * + * @return string + */ + public function column_date( $item ) { + // get current date + $datetime = new DateTime( $item['date'] ); + + return esc_html( $datetime->format( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ) ) . ' ' . __( 'GMT', 'cookie-notice' ) ); + } + + /** + * Display preferences. + * + * @param array $item + * + * @return string + */ + public function column_preferences( $item ) { + $preferences = (array) $item['preferences']; + + return esc_html( empty( $preferences ) ? '—' : implode( ', ', array_keys( $preferences ) ) ); + } + + /** + * Display bulk actions. + * + * @return array + */ + public function get_bulk_actions() { + return []; + } + + /** + * Display empty result. + * + * @return void + */ + public function no_items() { + // display spinner for the first visit + if ( $this->cn_empty_init ) { + $this->cn_empty_init = false; + + echo ''; + } else + echo __( 'No privacy consent logs found.', 'cookie-notice' ); + } +} diff --git a/wp-content/plugins/cookie-notice/includes/privacy-consent-logs.php b/wp-content/plugins/cookie-notice/includes/privacy-consent-logs.php new file mode 100644 index 0000000..064b9b9 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/privacy-consent-logs.php @@ -0,0 +1,83 @@ +welcome_api->get_privacy_consent_logs(); + + if ( is_array( $data ) ) + wp_send_json_success( $this->get_privacy_consent_logs_table( $data ) ); + else + wp_send_json_error( $data ); + } + + /** + * Get consent logs from specific date. + * + * @param array $data + * + * @return string + */ + public function get_privacy_consent_logs_table( $data ) { + // include wp list table class if needed + if ( ! class_exists( 'WP_List_Table' ) ) + include_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' ); + + // include consent logs list table + include_once( COOKIE_NOTICE_PATH . '/includes/privacy-consent-logs-list-table.php' ); + + // initialize list table + $list_table = new Cookie_Notice_Privacy_Consent_Logs_List_Table( [ + 'plural' => 'cn-privacy-consent-logs', + 'singular' => 'cn-privacy-consent-log', + 'ajax' => false + ] ); + + // prepare data + $list_table->cn_set_data( $data ); + + // prepare items + $list_table->prepare_items(); + + ob_start(); + $list_table->display(); + $html = ob_get_clean(); + + return $html; + } +} diff --git a/wp-content/plugins/cookie-notice/includes/privacy-consent.php b/wp-content/plugins/cookie-notice/includes/privacy-consent.php new file mode 100644 index 0000000..71b0ccd --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/privacy-consent.php @@ -0,0 +1,673 @@ +sources; + } + + /** + * Get single source data. + * + * @param array $source_id + * + * @return array + */ + public function get_source( $source_id ) { + return array_key_exists( $source_id, $this->sources ) ? $this->sources[$source_id] : []; + } + + /** + * Get active sources. + * + * @return array + */ + public function get_active_sources() { + $sources = []; + + foreach ( $this->sources as $source_id => $source ) { + if ( $source['availability'] && $source['status'] ) + $sources[] = $source_id; + } + + return $sources; + } + + /** + * Get available sources. + * + * @return array + */ + public function get_available_sources() { + $sources = []; + + foreach ( $this->sources as $source_id => $source ) { + if ( $source['availability'] ) + $sources[] = $source_id; + } + + return $sources; + } + + /** + * Check whether source is available. + * + * @param string $source_id + * + * @return bool + */ + public function is_source_available( $source_id ) { + + } + + /** + * Add source. + * + * @param array $source + * + * @return array + */ + public function add_source( $source ) { + $this->sources[$source['id']] = $source; + } + + /** + * Strip string to specified length removing multibyte character from the end if needed. + * + * @param string $str + * @param int $length + * + * @return string + */ + public function strcut( $str = '', $length = 100 ) { + if ( function_exists( 'mb_strcut' ) ) + return mb_strcut( $str, 0, $length ); + + // get length + $str_length = strlen( $str ); + + // smaller string? + if ( $str_length <= $length ) + return $str; + + // check any multibyte characters + preg_match_all( '/./u', $str, $chars ); + + if ( ! empty( $chars[0] ) ) { + // no multibyte characters + if ( count( $chars[0] ) === $str_length ) + return $str; + + $mb_str_length = 0; + + // check every character + foreach ( $chars[0] as $char ) { + // get character length + $mb_char_length = strlen( $char ); + + // length with new character + $new_str_length = $mb_str_length + $mb_char_length; + + // longer then expected? cut just before new character + if ( $new_str_length > $length ) + return substr( $str, 0, $mb_str_length ); + // perfect length? cut without stripping + elseif ( $new_str_length === $length ) + return substr( $str, 0, $new_str_length ); + + $mb_str_length += $mb_char_length; + } + } else + return substr( $str, 0, 100 ); + } + + /** + * Add instance. + * + * @param object $instance + * @param array $source + * + * @return array + */ + public function add_instance( $instance, $source ) { + $this->instances[$source] = $instance; + } + + /** + * Initialize privacy consent. + * + * @return void + */ + public function init_privacy_consent() { + // get main instance + $cn = Cookie_Notice(); + + if ( is_admin() ) { + // handle ajax requests + add_action( 'wp_ajax_cn_privacy_consent_form_status', [ $this, 'set_form_status' ] ); + add_action( 'wp_ajax_cn_privacy_consent_get_forms', [ $this, 'query_forms' ] ); + add_action( 'wp_ajax_cn_privacy_consent_display_table', [ $this, 'display_table' ] ); + + // include wp list table class if needed + if ( ! class_exists( 'WP_List_Table' ) ) + include_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' ); + + // include privacy consent list table + include_once( COOKIE_NOTICE_PATH . '/includes/privacy-consent-list-table.php' ); + } + + // include modules + include_once( COOKIE_NOTICE_PATH . '/includes/modules/wordpress/privacy-consent.php' ); + include_once( COOKIE_NOTICE_PATH . '/includes/modules/contact-form-7/privacy-consent.php' ); + include_once( COOKIE_NOTICE_PATH . '/includes/modules/mailchimp/privacy-consent.php' ); + include_once( COOKIE_NOTICE_PATH . '/includes/modules/woocommerce/privacy-consent.php' ); + include_once( COOKIE_NOTICE_PATH . '/includes/modules/wpforms/privacy-consent.php' ); + include_once( COOKIE_NOTICE_PATH . '/includes/modules/formidable-forms/privacy-consent.php' ); + include_once( COOKIE_NOTICE_PATH . '/includes/modules/easy-digital-downloads/privacy-consent.php' ); + + // update 2.5.0 + if ( version_compare( $cn->db_version, '2.4.18', '<=' ) ) { + // $sources = get_available_sources() + $sources = $cn->defaults['privacy_consent']; + + // check all available sources + foreach ( $this->sources as $source_id => $source ) { + if ( $source['availability'] ) + $sources[$source_id . '_active'] = true; + } + + if ( is_multisite() ) + update_site_option( 'cookie_notice_privacy_consent', $sources ); + else + update_option( 'cookie_notice_privacy_consent', $sources, null, false ); + } + } + + /** + * Load default data. + * + * @return void + */ + public function load_defaults() { + $this->form_active_types = [ + 'all' => __( 'Apply to all forms', 'cookie-notice' ), + 'selected' => __( 'Apply to selected forms', 'cookie-notice' ) + ]; + } + + /** + * Add settings. + * + * @return void + */ + public function add_settings() { + if ( ! is_admin() ) + return; + + // get main instance + $cn = Cookie_Notice(); + + // update 2.5.0 + if ( version_compare( $cn->db_version, '2.4.18', '<=' ) ) { + if ( is_multisite() ) + add_site_option( 'cookie_notice_privacy_consent', $cn->defaults['privacy_consent'] ); + else + add_option( 'cookie_notice_privacy_consent', $cn->defaults['privacy_consent'], null, false ); + } + } + + /** + * Register settings. + * + * @return void + */ + public function register_settings() { + // register privacy consent settings + register_setting( 'cookie_notice_privacy_consent', 'cookie_notice_privacy_consent', [ $this, 'validate_options' ] ); + + add_settings_section( 'cookie_notice_privacy_consent_status', esc_html__( 'Compliance Integration', 'cookie-notice' ), '', 'cookie_notice_privacy_consent', [ 'before_section' => '
    ', 'after_section' => '
    ', 'section_class' => 'cn-section-container compliance-section' ] ); + + add_settings_field( 'cn_privacy_consent_status', esc_html__( 'Compliance Status', 'cookie-notice' ), [ $this, 'cn_privacy_consent_status' ], 'cookie_notice_privacy_consent', 'cookie_notice_privacy_consent_status' ); + + // add section + add_settings_section( 'cookie_notice_privacy_consent_settings', esc_html__( 'Privacy Consent Settings', 'cookie-notice' ), [ $this, 'display_section' ], 'cookie_notice_privacy_consent', [ 'before_section' => '
    ', 'after_section' => '
    ', 'section_class' => 'cn-section-container privacy-section' ] ); + + foreach ( $this->sources as $source ) { + add_settings_field( 'cn_privacy_consent_' . esc_attr( $source['id'] ), esc_html( $source['name'] ), [ $this, 'option' ], 'cookie_notice_privacy_consent', 'cookie_notice_privacy_consent_settings', $source ); + } + } + + /** + * Display section. + * + * @return void + */ + public function display_section() { + wp_nonce_field( 'cn-privacy-consent-list-table-nonce', 'cn_privacy_consent_nonce' ); + } + + /** + * Compliance status. + * + * @return void + */ + public function cn_privacy_consent_status() { + // get main instance + $cn = Cookie_Notice(); + + // get cookie compliance status + $app_status = $cn->get_status(); + + if ( $cn->is_network_admin() ) + $url = network_admin_url( 'admin.php?page=cookie-notice' ); + else + $url = admin_url( 'admin.php?page=cookie-notice' ); + + switch ( $app_status ) { + case 'active': + echo ' +
    +
    ' . esc_html__( 'Privacy Consent', 'cookie-notice' ) . ': ' . esc_html__( 'Active', 'cookie-notice' ) . '
    +
    ' . esc_html__( 'Privacy Consent Storage', 'cookie-notice' ) . ': ' . esc_html__( 'Active', 'cookie-notice' ) . '
    +
    ' . esc_html__( 'Proof-of-Consent', 'cookie-notice' ) . ': ' . esc_html__( 'Active', 'cookie-notice' ) . '
    +
    +
    + ' . esc_html__( 'Log in & Configure', 'cookie-notice' ) . ' +

    ' . esc_html__( 'Log in to the Compliance by Hu-manity.co dashboard to explore, configure and manage its functionalities.', 'cookie-notice' ) . '

    +
    '; + break; + + case 'pending': + echo ' +
    +
    ' . esc_html__( 'Privacy Consent', 'cookie-notice' ) . ': ' . esc_html__( 'Pending', 'cookie-notice' ) . '
    +
    ' . esc_html__( 'Privacy Consent Storage', 'cookie-notice' ) . ': ' . esc_html__( 'Pending', 'cookie-notice' ) . '
    +
    ' . esc_html__( 'Proof-of-Consent', 'cookie-notice' ) . ': ' . esc_html__( 'Pending', 'cookie-notice' ) . '
    +
    +
    + ' . esc_html__( 'Log in & Configure', 'cookie-notice' ) . ' +

    ' . esc_html__( 'Log in to the Compliance by Hu-manity.co web application and complete the setup process.', 'cookie-notice' ) . '

    +
    '; + break; + + default: + echo ' +
    +
    ' . '' . esc_html__( 'Privacy Consent', 'cookie-notice' ) . ': ' . esc_html__( 'Inactive', 'cookie-notice' ) . '
    +
    ' . '' . esc_html__( 'Privacy Consent Storage', 'cookie-notice' ) . ': ' . esc_html__( 'Inactive', 'cookie-notice' ) . '
    +
    ' . esc_html__( 'Proof-of-Consent', 'cookie-notice' ) . ': ' . esc_html__( 'Inactive', 'cookie-notice' ) . '
    +
    +
    + ' . esc_html__( 'Try Compliance by Hu-manity.co free', 'cookie-notice' ) . ' +

    ' . sprintf( esc_html__( 'Sign up to %s and enable Privacy Consent support.', 'cookie-notice' ), 'Compliance by Hu-manity.co' ) . '

    +
    '; + } + } + + /** + * Display source options. + * + * @return void + */ + public function option( $source ) { + // get main instance + $cn = Cookie_Notice(); + + // get cookie compliance status + $status = $cn->get_status(); + + // disable source for network area + if ( is_multisite() && $cn->is_network_admin() && $cn->is_plugin_network_active() ) + $source['status'] = false; + + echo ' + '; + } + + /** + * Source forms query to get data. + * + * @return void + */ + function query_forms() { + // valid nonce? + if ( check_ajax_referer( 'cn-privacy-consent-list-table-nonce', 'nonce' ) === false ) + wp_send_json_error(); + + // check data + if ( ! isset( $_REQUEST['action'], $_REQUEST['nonce'], $_REQUEST['source'], $_REQUEST['paged'], $_REQUEST['order'], $_REQUEST['orderby'], $_REQUEST['search'] ) ) + wp_send_json_error(); + + // check capability + if ( ! current_user_can( apply_filters( 'cn_manage_cookie_notice_cap', 'manage_options' ) ) ) + wp_send_json_error(); + + // sanitize data + $source = sanitize_key( $_REQUEST['source'] ); + $order = sanitize_key( $_REQUEST['order'] ); + $orderby = sanitize_key( $_REQUEST['orderby'] ); + $search = trim( sanitize_text_field( wp_unslash( $_REQUEST['search'] ) ) ); + $page = (int) $_REQUEST['paged']; + + // validate order + if ( ! in_array( $order, [ 'asc', 'desc' ], true ) ) + $order = 'asc'; + + // validate orderby + if ( ! in_array( $orderby, [ 'title', 'date' ], true ) ) + $orderby = 'title'; + + if ( ! array_key_exists( $source, $this->sources ) || ! $this->sources[$source]['availability'] ) + wp_send_json_error(); + + // initialize list table + $list_table = new Cookie_Notice_Privacy_Consent_List_Table( [ + 'plural' => 'cn-source-' . esc_attr( $this->sources[$source]['name'] ) . '-forms', + 'singular' => 'cn-source-' . esc_attr( $this->sources[$source]['name'] ) . '-form', + 'ajax' => true + ] ); + + // set source + $list_table->cn_set_source( $this->sources[$source] ); + + $args = [ + 'source' => $source, + 'order' => $order, + 'orderby' => $orderby, + 'page' => max( $page, $list_table->get_pagenum() ), + 'search' => $search + ]; + + // set source forms + $list_table->cn_set_forms( $this->instances[$source]->get_forms( $args ) ); + + // handle ajax request + $list_table->ajax_response(); + } + + /** + * Display initial (first page) source table. + * + * @return void + */ + function display_table() { + // valid nonce? + if ( check_ajax_referer( 'cn-privacy-consent-list-table-nonce', 'nonce' ) === false ) + wp_send_json_error(); + + // check data + if ( ! isset( $_REQUEST['action'], $_REQUEST['nonce'], $_REQUEST['source'] ) ) + wp_send_json_error(); + + // check capability + if ( ! current_user_can( apply_filters( 'cn_manage_cookie_notice_cap', 'manage_options' ) ) ) + wp_send_json_error(); + + // sanitize source + $source = sanitize_key( $_REQUEST['source'] ); + + if ( ! array_key_exists( $source, $this->sources ) || ! $this->sources[$source]['availability'] ) + wp_send_json_error(); + + // make title column sorted + if ( empty( $_GET['orderby'] ) ) + $_GET['orderby'] = 'title'; + + if ( empty( $_GET['order'] ) ) + $_GET['order'] = 'asc'; + + // initialize list table + $list_table = new Cookie_Notice_Privacy_Consent_List_Table( [ + 'plural' => 'cn-source-' . esc_attr( $this->sources[$source]['name'] ) . '-forms', + 'singular' => 'cn-source-' . esc_attr( $this->sources[$source]['name'] ) . '-form', + 'ajax' => true + ] ); + + // set source + $list_table->cn_set_source( $this->sources[$source] ); + + $args = [ + 'source' => $source, + 'order' => 'asc', + 'orderby' => 'title', + 'page' => 1, + 'search' => '' + ]; + + // set source forms + $list_table->cn_set_forms( $this->instances[$source]->get_forms( $args ) ); + + // prepare items + $list_table->prepare_items(); + + ob_start(); + // $list_table->search_box( __( 'Search', 'cookie-notice' ), $source ); + $list_table->display(); + $display = ob_get_clean(); + + wp_send_json_success( $display ); + } + + /** + * Set form status. + * + * @return void + */ + public function set_form_status() { + if ( ! isset( $_POST['source'], $_POST['form_id'], $_POST['status'] ) || wp_verify_nonce( $_POST['nonce'], 'cn-privacy-consent-set-form-status' ) === false ) + wp_send_json_error(); + + if ( ! current_user_can( apply_filters( 'cn_manage_cookie_notice_cap', 'manage_options' ) ) ) + wp_send_json_error(); + + // sanitize source + $source = sanitize_key( $_POST['source'] ); + + // active source? + if ( array_key_exists( $source, $this->sources ) && $this->sources[$source]['availability'] ) { + // sanitize form id + if ( $this->sources[$source]['id_type'] === 'integer' ) + $form_id = (int) $_POST['form_id']; + elseif ( $this->sources[$source]['id_type'] === 'string' ) + $form_id = (string) sanitize_key( $_POST['form_id'] ); + + // valid form? + if ( $this->instances[$source]->form_exists( $form_id ) ) { + // inactive source? + if ( ! $this->sources[$source]['status'] ) { + // get privacy consent data + $data = get_option( 'cookie_notice_privacy_consent' ); + + // activate source + $data[$source . '_active'] = true; + + // update privacy consent + update_option( 'cookie_notice_privacy_consent', $data ); + } + + // get source data + $data = get_option( 'cookie_notice_privacy_consent_' . $source ); + + // update status of specified form + $data[$form_id]['status'] = (bool) (int) $_POST['status']; + + // update source + update_option( 'cookie_notice_privacy_consent_' . $source, $data ); + + wp_send_json_success(); + } + } + + wp_send_json_error(); + } + + /** + * Check whether form is active. + * + * @param int|string $form_id + * @param string $source + * + * @return bool + */ + public function is_form_active( $form_id, $source ) { + // sanitize source + $source = sanitize_key( $source ); + + // unavailable source? + if ( ! array_key_exists( $source, $this->sources ) ) + return false; + + // inactive source? + if ( ! $this->sources[$source]['availability'] ) + return false; + + // disabled source? + if ( ! $this->sources[$source]['status'] ) + return false; + + // allow all forms? + if ( $this->sources[$source]['status_type'] === 'all' ) + return true; + + // sanitize form id + if ( $this->sources[$source]['id_type'] === 'integer' ) + $form_id = (int) $form_id; + elseif ( $this->sources[$source]['id_type'] === 'string' ) + $form_id = (string) sanitize_key( $form_id ); + + // get source data + $data = get_option( 'cookie_notice_privacy_consent_' . $source, [] ); + + // valid form? + if ( array_key_exists( $form_id, $data ) && array_key_exists( 'status', $data[$form_id] ) ) + return $data[$form_id]['status']; + else + return false; + } + + /** + * Set cookie. + * + * @param string $value + * + * @return void + */ + public function set_cookie( $value ) { + // set cookie + setcookie( + 'hu-form', + $value, + [ + 'expires' => current_time( 'timestamp', true ) + 5 * MINUTE_IN_SECONDS, + 'path' => COOKIEPATH, + 'domain' => COOKIE_DOMAIN, + 'secure' => is_ssl(), + 'httponly' => false, + 'samesite' => 'LAX' + ] + ); + } + + /** + * Validate options. + * + * @param array $input + * + * @return array + */ + public function validate_options( $input ) { + if ( ! current_user_can( apply_filters( 'cn_manage_cookie_notice_cap', 'manage_options' ) ) ) + return $input; + + if ( isset( $_POST['save_cookie_notice_privacy_consent'] ) ) { + // validate every source + foreach ( $this->sources as $source ) { + $input = $this->instances[$source['id']]->validate( $input ); + } + + add_settings_error( 'cn_cookie_notice_options', 'save_cookie_notice_privacy_consent', esc_html__( 'Settings saved.', 'cookie-notice' ), 'updated' ); + } elseif ( isset( $_POST['reset_cookie_notice_privacy_consent'] ) ) { + $input = Cookie_Notice()->defaults['privacy_consent']; + + add_settings_error( 'cn_cookie_notice_options', 'reset_cookie_notice_privacy_consent', esc_html__( 'Settings restored to defaults.', 'cookie-notice' ), 'updated' ); + } + + do_action( 'cn_configuration_updated', 'privacy-consent', $input ); + + return $input; + } +} diff --git a/wp-content/plugins/cookie-notice/includes/react-admin-ajax.php b/wp-content/plugins/cookie-notice/includes/react-admin-ajax.php new file mode 100644 index 0000000..77a7e6c --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/react-admin-ajax.php @@ -0,0 +1,1378 @@ +options['general']['ui_mode'] ?? 'legacy'; + + if ( $ui_mode === 'react' ) { + add_action( 'wp_ajax_cn_react_script_update', [ $this, 'update_script' ] ); + add_action( 'wp_ajax_cn_react_save_options', [ $this, 'save_options' ] ); + add_action( 'wp_ajax_cn_react_rescan_scripts', [ $this, 'rescan_scripts' ] ); + add_action( 'wp_ajax_cn_react_rule_values', [ $this, 'get_rule_values' ] ); + } + + // Mode-agnostic state hooks — welcome dismissal and setup wizard + // completion must work regardless of ui_mode. + add_action( 'wp_ajax_cn_react_dismiss_welcome', [ $this, 'dismiss_welcome' ] ); + add_action( 'wp_ajax_cn_react_complete_setup_wizard', [ $this, 'complete_setup_wizard' ] ); + + // Dev harness only — CN_DEV_MODE is NOT an environment switch (it does not control + // which API environment the plugin targets). Use CN_APP_HOST_URL, CN_APP_WIDGET_URL, + // CN_ACCOUNT_API_URL etc. for that. CN_DEV_MODE enables developer-only UI tooling + // (usage override, dev_reset) and should never be set on production or staging servers. + if ( defined( 'CN_DEV_MODE' ) && CN_DEV_MODE ) { + add_action( 'wp_ajax_cn_react_dev_reset', [ $this, 'dev_reset' ] ); + add_action( 'wp_ajax_cn_react_test_set_option', [ $this, 'test_set_option' ] ); + add_action( 'wp_ajax_cn_react_test_get_option', [ $this, 'test_get_option' ] ); + } + + } + + /** + * Verify request nonce and capability. + * + * Sends a JSON error and exits when the check fails, so handlers can call + * this at the top without needing to check the return value. + * + * @return void + */ + private function verify_request() { + check_ajax_referer( 'cn_react_nonce', 'nonce' ); + + if ( ! current_user_can( apply_filters( 'cn_manage_cookie_notice_cap', 'manage_options' ) ) ) { + wp_send_json_error( [ 'error' => 'Insufficient permissions.' ] ); + } + } + + /** + * Return dashboard data for the Protection tab. + * + * @return void + */ + public function get_dashboard() { + $this->verify_request(); + + $cn = Cookie_Notice(); + + // --- Read cached analytics option --- + // Single source: cookie_notice_app_analytics (refreshed hourly via welcome-api.php cron). + // ⚠️ Multisite pattern: use site_option ONLY when network-active with global_override. + // Do NOT simplify to is_multisite() alone — pattern matches welcome-api.php get_app_config(). + $network = $cn->is_network_options(); + $analytics_raw = $network + ? get_site_option( 'cookie_notice_app_analytics', [] ) + : get_option( 'cookie_notice_app_analytics', [] ); + + // --- Cycle usage (visits vs threshold) --- + // Read from cached analytics option; CN_DEV_MODE overrides for UI testing. + $visits = ! empty( $analytics_raw['cycleUsage']->visits ) ? (int) $analytics_raw['cycleUsage']->visits : 0; + $threshold = ! empty( $analytics_raw['cycleUsage']->threshold ) ? (int) $analytics_raw['cycleUsage']->threshold : 0; + + // CN_DEV_MODE: honour cn_usage=0-100 (forwarded as POST field by fetchDashboard + // since admin-ajax.php is a POST endpoint and $_GET params from the page URL + // are not available here). + if ( defined( 'CN_DEV_MODE' ) && CN_DEV_MODE && isset( $_POST['cn_usage'] ) ) { + $pct = max( 0, min( 100, (int) $_POST['cn_usage'] ) ); + $threshold = $threshold > 0 ? $threshold : 1000; + $visits = (int) round( $threshold * ( $pct / 100 ) ); + } + + // --- ConsentStats breakdown --- + + $level_totals = [ 1 => 0, 2 => 0, 3 => 0 ]; + + if ( ! empty( $analytics_raw['consentActivities'] ) && is_array( $analytics_raw['consentActivities'] ) ) { + foreach ( $analytics_raw['consentActivities'] as $entry ) { + $lvl = (int) $entry->consentlevel; + if ( isset( $level_totals[ $lvl ] ) ) { + $level_totals[ $lvl ] += (int) $entry->totalrecd; + } + } + } + + $consent_breakdown = $this->compute_consent_breakdown( $level_totals ); + + // Regulations saved locally by cn_api_request?configure action. + // Exposed here so Protection.jsx LAWS card can display them without a + // Designer API round-trip. (#1897) + $reg_keys = $network + ? get_site_option( 'cookie_notice_app_regulations', [] ) + : get_option( 'cookie_notice_app_regulations', [] ); + $regulations = array_fill_keys( (array) $reg_keys, true ); + + // Language codes saved locally by react_apply_languages() on successful API write. (#1966) + // Always includes 'en' (default) + any additional codes the user configured. + $saved_languages = $network + ? get_site_option( 'cookie_notice_app_languages', [] ) + : get_option( 'cookie_notice_app_languages', [] ); + $language = array_values( array_unique( array_merge( [ 'en' ], (array) $saved_languages ) ) ); + + // Platform account email from login token (#2168). + // Stored in cookie_notice_app_token transient as ->email after successful login. + // Used in PortalBridgeModal to tell the user which email to sign in with. + // Returns empty string when not connected (token not set or expired). + $data_token = $network + ? get_site_transient( 'cookie_notice_app_token' ) + : get_transient( 'cookie_notice_app_token' ); + $account_email = ! empty( $data_token->email ) ? sanitize_email( $data_token->email ) : ''; + + // Banner design fields cached by get_app_config() — React computes + // the active template on the fly by matching against PRESETS. + $design = $network + ? get_site_option( 'cookie_notice_app_design', [] ) + : get_option( 'cookie_notice_app_design', [] ); + + wp_send_json_success( [ + 'analytics' => [ + 'cycleUsage' => [ + 'visits' => $visits, + 'threshold' => $threshold, + ], + ], + 'consentBreakdown' => $consent_breakdown, + 'domainUrl' => home_url(), + 'appId' => $cn->options['general']['app_id'], + 'activatedAt' => isset( $cn->status_data['activation_datetime'] ) ? $cn->status_data['activation_datetime'] : 0, + 'consentCount' => $consent_breakdown['total'], + 'accountEmail' => $account_email, + 'appConfig' => [ + 'regulations' => $regulations, + 'language' => $language, + 'design' => $design, + ], + ] ); + } + + /** + * Return blocking/consent configuration data. + * + * Reads the cached Designer API config from the cookie_notice_app_blocking WP option + * (populated by welcome-api.php get_app_config() on admin page load, on the + * 24h cron, or via "Pull Configuration" button). Falls back to an empty stub + * for new installs. + * + * @return void + */ + public function get_config() { + $this->verify_request(); + + $cn = Cookie_Notice(); + + // ⚠️ Same multisite pattern as get_dashboard() — see comment there. + $network = $cn->is_network_options(); + $blocking = $network + ? get_site_option( 'cookie_notice_app_blocking', [] ) + : get_option( 'cookie_notice_app_blocking', [] ); + + wp_send_json_success( $this->build_blocking_response( $blocking ) ); + } + + /** + * Return paginated consent log entries. + * + * Calls the Transactional API via welcome-api.php for the requested date, + * maps each record to the shape expected by ConsentLogTable.jsx, then + * applies in-PHP pagination (10 records per page). + * + * POST params accepted: + * page int Page number (1-based, default 1) + * start_date string Date to fetch logs for (Y-m-d, default today) + * sort string Sort column key (ignored server-side — API returns ordered data) + * order string 'asc' | 'desc' (ignored server-side) + * + * @return void + */ + public function get_consent_logs() { + $this->verify_request(); + + $page = isset( $_POST['page'] ) ? max( 1, absint( $_POST['page'] ) ) : 1; + $start_date = isset( $_POST['start_date'] ) ? sanitize_text_field( $_POST['start_date'] ) : date( 'Y-m-d' ); + $end_date = isset( $_POST['end_date'] ) ? sanitize_text_field( $_POST['end_date'] ) : $start_date; + $per_page = 10; + + // Validate date formats (Y-m-d). + $dt = DateTime::createFromFormat( 'Y-m-d', $start_date ); + if ( ! $dt || $dt->format( 'Y-m-d' ) !== $start_date ) { + $start_date = date( 'Y-m-d' ); + } + + $dt_end = DateTime::createFromFormat( 'Y-m-d', $end_date ); + if ( ! $dt_end || $dt_end->format( 'Y-m-d' ) !== $end_date || $end_date < $start_date ) { + $end_date = $start_date; + } + + $cn = Cookie_Notice(); + + // Server-side range cap — free = 7 days, pro = 90 days. + $max_range = ( $cn->get_subscription() === 'pro' ) ? 90 : 7; + $range = (int) ( ( new DateTime( $end_date ) )->diff( new DateTime( $start_date ) )->days ); + + if ( $range > $max_range ) { + $end_date = ( new DateTime( $start_date ) )->modify( "+{$max_range} days" )->format( 'Y-m-d' ); + } + + $empty_breakdown = [ 'total' => 0, 'acceptRate' => 0, 'customRate' => 0, 'rejectRate' => 0, 'levelLabels' => $this->get_level_labels() ]; + + // No app_id means not connected — return empty gracefully. + if ( empty( $cn->options['general']['app_id'] ) ) { + wp_send_json_success( [ + 'logs' => [], + 'total' => 0, + 'page' => $page, + 'totalPages' => 0, + 'consentBreakdown' => $empty_breakdown, + ] ); + return; + } + + // Single API call for the full date range (Transactional API handles range via EndDate). + $raw = $cn->welcome_api->get_cookie_consent_logs( $start_date, $end_date ); + + if ( ! is_array( $raw ) || empty( $raw ) ) { + wp_send_json_success( [ + 'logs' => [], + 'total' => 0, + 'page' => $page, + 'totalPages' => 0, + 'consentBreakdown' => $empty_breakdown, + ] ); + return; + } + + // Transform raw API records into UI-ready log entries. + $result = $this->transform_consent_logs( $raw, $cn ); + $logs = $result['logs']; + + $total = count( $logs ); + $total_pages = (int) ceil( $total / $per_page ); + $offset = ( $page - 1 ) * $per_page; + $paged = array_slice( $logs, $offset, $per_page ); + + wp_send_json_success( [ + 'logs' => $paged, + 'total' => $total, + 'page' => $page, + 'totalPages' => $total_pages, + 'consentBreakdown' => $result['consent_breakdown'], + ] ); + } + + /** + * Add, edit, or remove a script provider. + * + * For 'edit' operations, updates the provider's CategoryID and propagates + * the change to all patterns belonging to that provider. + * + * @return void + */ + public function update_script() { + $this->verify_request(); + + $operation = isset( $_POST['operation'] ) ? sanitize_text_field( $_POST['operation'] ) : ''; + + if ( ! in_array( $operation, [ 'add', 'edit', 'remove' ], true ) ) { + wp_send_json_error( [ 'error' => 'Invalid operation.' ] ); + } + + if ( $operation === 'edit' ) { + $provider_id = isset( $_POST['provider_id'] ) ? sanitize_text_field( $_POST['provider_id'] ) : ''; + $category_id = isset( $_POST['category_id'] ) ? absint( $_POST['category_id'] ) : 0; + + if ( empty( $provider_id ) ) { + wp_send_json_error( [ 'error' => 'Missing provider_id.' ] ); + } + + if ( ! in_array( $category_id, [ 1, 2, 3, 4 ], true ) ) { + wp_send_json_error( [ 'error' => 'Invalid category_id.' ] ); + } + + $cn = Cookie_Notice(); + $network = $cn->is_network_options(); + + $blocking = $network + ? get_site_option( 'cookie_notice_app_blocking', [] ) + : get_option( 'cookie_notice_app_blocking', [] ); + + if ( empty( $blocking ) || ! isset( $blocking['providers'] ) ) { + wp_send_json_error( [ 'error' => 'No blocking configuration found.' ] ); + } + + // Update the provider's CategoryID. + $found = false; + + foreach ( $blocking['providers'] as &$provider ) { + $pid = is_object( $provider ) ? $provider->ProviderID : ( isset( $provider['ProviderID'] ) ? $provider['ProviderID'] : '' ); + + if ( (string) $pid === (string) $provider_id ) { + if ( is_object( $provider ) ) { + $provider->CategoryID = $category_id; + } else { + $provider['CategoryID'] = $category_id; + } + $found = true; + break; + } + } + unset( $provider ); + + if ( ! $found ) { + wp_send_json_error( [ 'error' => 'Provider not found.' ] ); + } + + // Propagate CategoryID to all patterns belonging to this provider. + if ( isset( $blocking['patterns'] ) && is_array( $blocking['patterns'] ) ) { + foreach ( $blocking['patterns'] as &$pattern ) { + $pat_pid = is_object( $pattern ) ? $pattern->ProviderID : ( isset( $pattern['ProviderID'] ) ? $pattern['ProviderID'] : '' ); + + if ( (string) $pat_pid === (string) $provider_id ) { + if ( is_object( $pattern ) ) { + $pattern->CategoryID = $category_id; + } else { + $pattern['CategoryID'] = $category_id; + } + } + } + unset( $pattern ); + } + + // Save back. + if ( $network ) { + update_site_option( 'cookie_notice_app_blocking', $blocking ); + } else { + update_option( 'cookie_notice_app_blocking', $blocking ); + } + } + + if ( $operation === 'add' ) { + $provider_name = isset( $_POST['provider_name'] ) ? sanitize_text_field( $_POST['provider_name'] ) : ''; + $provider_url = isset( $_POST['provider_url'] ) ? esc_url_raw( $_POST['provider_url'] ) : ''; + $category_id = isset( $_POST['category_id'] ) ? absint( $_POST['category_id'] ) : 0; + $description = isset( $_POST['description'] ) ? sanitize_text_field( $_POST['description'] ) : ''; + $script_patterns = isset( $_POST['script_patterns'] ) && is_array( $_POST['script_patterns'] ) ? $_POST['script_patterns'] : []; + $iframe_patterns = isset( $_POST['iframe_patterns'] ) && is_array( $_POST['iframe_patterns'] ) ? $_POST['iframe_patterns'] : []; + + if ( empty( $provider_name ) ) { + wp_send_json_error( [ 'error' => 'Provider name is required.' ] ); + } + + if ( ! in_array( $category_id, [ 1, 2, 3, 4 ], true ) ) { + wp_send_json_error( [ 'error' => 'Invalid category_id.' ] ); + } + + $cn = Cookie_Notice(); + $network = $cn->is_network_options(); + + $blocking = $network + ? get_site_option( 'cookie_notice_app_blocking', [] ) + : get_option( 'cookie_notice_app_blocking', [] ); + + if ( ! is_array( $blocking ) ) { + $blocking = []; + } + if ( ! isset( $blocking['providers'] ) ) { + $blocking['providers'] = []; + } + if ( ! isset( $blocking['patterns'] ) ) { + $blocking['patterns'] = []; + } + + // Generate a unique provider ID from the name + timestamp. + $provider_id = 'custom-' . sanitize_title( $provider_name ) . '-' . time(); + + // Append the new provider. + $blocking['providers'][] = (object) [ + 'ProviderID' => $provider_id, + 'ProviderName' => $provider_name, + 'ProviderURL' => $provider_url, + 'CategoryID' => $category_id, + 'IsCustom' => true, + ]; + + // Find current max CookieID so new patterns get unique IDs. + $max_cookie_id = 0; + foreach ( $blocking['patterns'] as $p ) { + $cid = is_object( $p ) ? (int) $p->CookieID : (int) ( isset( $p['CookieID'] ) ? $p['CookieID'] : 0 ); + if ( $cid > $max_cookie_id ) { + $max_cookie_id = $cid; + } + } + + // Append script patterns. + foreach ( $script_patterns as $pattern_str ) { + $pattern_str = sanitize_text_field( stripslashes( $pattern_str ) ); + if ( empty( $pattern_str ) ) { + continue; + } + $max_cookie_id++; + $blocking['patterns'][] = (object) [ + 'CookieID' => $max_cookie_id, + 'ProviderID' => $provider_id, + 'CategoryID' => $category_id, + 'PatternType' => 'script', + 'PatternFormat' => 'wildcard', + 'Pattern' => $pattern_str, + ]; + } + + // Append iframe patterns. + foreach ( $iframe_patterns as $pattern_str ) { + $pattern_str = sanitize_text_field( stripslashes( $pattern_str ) ); + if ( empty( $pattern_str ) ) { + continue; + } + $max_cookie_id++; + $blocking['patterns'][] = (object) [ + 'CookieID' => $max_cookie_id, + 'ProviderID' => $provider_id, + 'CategoryID' => $category_id, + 'PatternType' => 'iframe', + 'PatternFormat' => 'wildcard', + 'Pattern' => $pattern_str, + ]; + } + + if ( $network ) { + update_site_option( 'cookie_notice_app_blocking', $blocking ); + } else { + update_option( 'cookie_notice_app_blocking', $blocking ); + } + + wp_send_json_success( [ + 'message' => 'Script provider added.', + 'provider_id' => $provider_id, + ] ); + } + + if ( $operation === 'remove' ) { + $provider_id = isset( $_POST['provider_id'] ) ? sanitize_text_field( $_POST['provider_id'] ) : ''; + + if ( empty( $provider_id ) ) { + wp_send_json_error( [ 'error' => 'Missing provider_id.' ] ); + } + + $cn = Cookie_Notice(); + $network = $cn->is_network_options(); + + $blocking = $network + ? get_site_option( 'cookie_notice_app_blocking', [] ) + : get_option( 'cookie_notice_app_blocking', [] ); + + if ( empty( $blocking ) || ! isset( $blocking['providers'] ) ) { + wp_send_json_error( [ 'error' => 'No blocking configuration found.' ] ); + } + + // Remove the provider entry. + $blocking['providers'] = array_values( array_filter( $blocking['providers'], function( $p ) use ( $provider_id ) { + $pid = is_object( $p ) ? $p->ProviderID : ( isset( $p['ProviderID'] ) ? $p['ProviderID'] : '' ); + return (string) $pid !== (string) $provider_id; + } ) ); + + // Remove all patterns belonging to this provider. + if ( isset( $blocking['patterns'] ) && is_array( $blocking['patterns'] ) ) { + $blocking['patterns'] = array_values( array_filter( $blocking['patterns'], function( $p ) use ( $provider_id ) { + $pid = is_object( $p ) ? $p->ProviderID : ( isset( $p['ProviderID'] ) ? $p['ProviderID'] : '' ); + return (string) $pid !== (string) $provider_id; + } ) ); + } + + if ( $network ) { + update_site_option( 'cookie_notice_app_blocking', $blocking ); + } else { + update_option( 'cookie_notice_app_blocking', $blocking ); + } + + wp_send_json_success( [ 'message' => 'Script provider removed.' ] ); + } + + wp_send_json_success( [ 'message' => 'Script provider updated.' ] ); + } + + /** + * Transform raw API consent log records into structured log entries. + * + * Shared by get_consent_logs() (paginated table) and export_consent_logs() (CSV). + * Returns both the transformed log entries and the consent breakdown stats. + * + * @param array $raw Raw records from the Transactional API. + * @param Cookie_Notice_Main $cn Plugin instance. + * @return array { 'logs' => array, 'consent_breakdown' => array } + */ + private function transform_consent_logs( $raw, $cn ) { + // Compute consent breakdown from real-time data. + $level_counts = [ 1 => 0, 2 => 0, 3 => 0 ]; + + foreach ( $raw as $record ) { + $lvl = isset( $record->ev_consentlevel ) ? (int) $record->ev_consentlevel : 0; + if ( isset( $level_counts[ $lvl ] ) ) { + $level_counts[ $lvl ]++; + } + } + + $consent_breakdown = $this->compute_consent_breakdown( $level_counts ); + + // Consent level integer → human label (matches ConsentLogTable pill styles). + $labels = $this->get_level_labels(); + $level_map = [ + 1 => $labels['level1'], + 2 => $labels['level2'], + 3 => $labels['level3'], + ]; + + $logs = []; + + foreach ( $raw as $record ) { + $categories = []; + + if ( ! empty( $record->ev_essential ) ) + $categories[] = 'Essential'; + + if ( ! empty( $record->ev_analytics ) ) + $categories[] = 'Analytics'; + + if ( ! empty( $record->ev_marketing ) ) + $categories[] = 'Marketing'; + + if ( ! empty( $record->ev_functional ) ) + $categories[] = 'Functional'; + + $level = isset( $record->ev_consentlevel ) ? (int) $record->ev_consentlevel : 0; + + // Format timestamp to readable date/time. + $date_str = ''; + if ( ! empty( $record->timestamp ) ) { + try { + $ts = new DateTime( $record->timestamp ); + $date_str = $ts->format( 'Y-m-d H:i' ) . ' GMT'; + } catch ( Exception $e ) { + $date_str = $record->timestamp; + } + } + + $logs[] = [ + 'id' => isset( $record->ev_eventdetails_consentid ) ? $record->ev_eventdetails_consentid : '', + 'level' => isset( $level_map[ $level ] ) ? $level_map[ $level ] : $labels['level2'], + 'levelNum' => $level, + 'categories' => $categories, + 'date' => $date_str, + 'ip' => isset( $record->rj_ip ) ? $record->rj_ip : '', + ]; + } + + return [ + 'logs' => $logs, + 'consent_breakdown' => $consent_breakdown, + ]; + } + + /** + * Export consent logs as a downloadable CSV. + * + * Reuses transform_consent_logs() for data transformation, then formats + * the result as CSV and returns it as a string for browser download. + * Pro-only: enforced server-side (client-side TierGate is not sufficient). + * + * POST params accepted: + * start_date string Range start (Y-m-d, default today) + * end_date string Range end (Y-m-d, default start_date) + * + * @return void + */ + public function export_consent_logs() { + $this->verify_request(); + + $cn = Cookie_Notice(); + + // Server-side Pro gate — TierGate in React is client-only. + if ( $cn->get_subscription() !== 'pro' ) { + wp_send_json_error( [ 'error' => 'CSV export requires a Pro subscription.' ] ); + return; + } + + $start_date = isset( $_POST['start_date'] ) ? sanitize_text_field( $_POST['start_date'] ) : date( 'Y-m-d' ); + $end_date = isset( $_POST['end_date'] ) ? sanitize_text_field( $_POST['end_date'] ) : $start_date; + + // Validate date formats (Y-m-d). + $dt = DateTime::createFromFormat( 'Y-m-d', $start_date ); + if ( ! $dt || $dt->format( 'Y-m-d' ) !== $start_date ) { + $start_date = date( 'Y-m-d' ); + } + + $dt_end = DateTime::createFromFormat( 'Y-m-d', $end_date ); + if ( ! $dt_end || $dt_end->format( 'Y-m-d' ) !== $end_date || $end_date < $start_date ) { + $end_date = $start_date; + } + + // Server-side range cap — Pro = 90 days. + $range = (int) ( ( new DateTime( $end_date ) )->diff( new DateTime( $start_date ) )->days ); + + if ( $range > 90 ) { + $end_date = ( new DateTime( $start_date ) )->modify( '+90 days' )->format( 'Y-m-d' ); + } + + // No app_id means not connected — return empty. + if ( empty( $cn->options['general']['app_id'] ) ) { + wp_send_json_success( [ 'csv' => '', 'count' => 0 ] ); + return; + } + + $raw = $cn->welcome_api->get_cookie_consent_logs( $start_date, $end_date ); + + if ( ! is_array( $raw ) || empty( $raw ) ) { + wp_send_json_success( [ 'csv' => '', 'count' => 0 ] ); + return; + } + + $result = $this->transform_consent_logs( $raw, $cn ); + $logs = $result['logs']; + + // Build CSV string. + $csv_lines = []; + $csv_lines[] = 'Consent ID,Level,Date,IP,Categories'; + + foreach ( $logs as $log ) { + $csv_lines[] = sprintf( + '"%s","%s","%s","%s","%s"', + str_replace( '"', '""', $log['id'] ), + str_replace( '"', '""', $log['level'] ), + str_replace( '"', '""', $log['date'] ), + str_replace( '"', '""', $log['ip'] ), + str_replace( '"', '""', implode( '; ', $log['categories'] ) ) + ); + } + + wp_send_json_success( [ + 'csv' => implode( "\n", $csv_lines ), + 'count' => count( $logs ), + ] ); + } + + /** + * Rescan scripts from the Designer API. + * + * Forces a fresh fetch of the app blocking config from the remote + * Designer API, then returns the updated blocking data in the same + * shape as get_config(). + * + * @return void + */ + public function rescan_scripts() { + $this->verify_request(); + + $cn = Cookie_Notice(); + + // Force a fresh sync from the Designer API. + $cn->welcome_api->get_app_config( '', true ); + + // Re-read the now-updated local cache and return it. + $network = $cn->is_network_options(); + $blocking = $network + ? get_site_option( 'cookie_notice_app_blocking', [] ) + : get_option( 'cookie_notice_app_blocking', [] ); + + // CN_DEV_MODE: inject sample trackers when the real scan returns empty, + // so the UI can be tested without real third-party scripts on the page. + if ( defined( 'CN_DEV_MODE' ) && CN_DEV_MODE && empty( $blocking['providers'] ) ) { + $sample_providers = [ + (object) [ 'ProviderID' => 'google-analytics', 'ProviderName' => 'Google Analytics', 'ProviderURL' => 'analytics.google.com', 'CategoryID' => 0 ], + (object) [ 'ProviderID' => 'hotjar', 'ProviderName' => 'Hotjar', 'ProviderURL' => 'hotjar.com', 'CategoryID' => 0 ], + (object) [ 'ProviderID' => 'meta-pixel', 'ProviderName' => 'Meta Pixel', 'ProviderURL' => 'facebook.com', 'CategoryID' => 0 ], + (object) [ 'ProviderID' => 'hubspot', 'ProviderName' => 'HubSpot', 'ProviderURL' => 'hubspot.com', 'CategoryID' => 1 ], + (object) [ 'ProviderID' => 'linkedin-insight', 'ProviderName' => 'LinkedIn Insight', 'ProviderURL' => 'linkedin.com', 'CategoryID' => 0 ], + ]; + + if ( ! is_array( $blocking ) ) { + $blocking = []; + } + + $blocking['providers'] = $sample_providers; + } + + wp_send_json_success( $this->build_blocking_response( $blocking ) ); + } + + /** + * Save welcome modal dismissal timestamp. + * + * Called when the user closes the modal or clicks "Don't protect my business". + * Stores the timestamp so the modal won't re-appear for 30 days. + * + * @return void + */ + public function dismiss_welcome() { + $this->verify_request(); + + $cn = Cookie_Notice(); + + if ( $cn->is_network_admin() ) + update_site_option( 'cookie_notice_welcome_dismissed', current_time( 'mysql' ) ); + else + update_option( 'cookie_notice_welcome_dismissed', current_time( 'mysql' ) ); + + wp_send_json_success(); + } + + /** + * Mark the setup wizard as complete. + * + * Called when the user finishes (or skips) the FirstRunSetup wizard on the + * Settings tab. Persists a flag so the wizard doesn't re-appear. + * + * @return void + */ + public function complete_setup_wizard() { + $this->verify_request(); + + $cn = Cookie_Notice(); + + if ( $cn->is_network_admin() ) + update_site_option( 'cookie_notice_setup_wizard_complete', true ); + else + update_option( 'cookie_notice_setup_wizard_complete', true ); + + wp_send_json_success(); + } + + /** + * DEV ONLY: Reset all plugin onboarding state to simulate a fresh activation. + * Only registered as an AJAX action when CN_DEV_MODE is true. + */ + public function dev_reset() { + if ( ! defined( 'CN_DEV_MODE' ) || ! CN_DEV_MODE ) { + wp_send_json_error( [ 'error' => 'Not available outside CN_DEV_MODE.' ] ); + } + + $this->verify_request(); + + $cn = Cookie_Notice(); + + // --- Step 1: Delete the API-side app record BEFORE clearing WP options. (#1956) + // + // After a successful use_license or register+configure flow, the Account API creates + // an Application row for this domain. Deleting WP options alone does NOT remove it: + // - The app record consumes a subscription slot (distorts availablelicense counts) + // - Orphan apps accumulate across test runs + // + // We capture the current app_id from WP options, authenticate as the test account + // (whose credentials are defined via CN_DEV_TEST_EMAIL + CN_DEV_TEST_PASSWORD + // constants, falling back to env vars), then call POST /api/account/app/delete. + // + // This is best-effort: login or delete failures are logged but do NOT block the + // WP options reset — the reset must always succeed regardless of API availability. + $current_app_id = ! empty( $cn->options['general']['app_id'] ) ? $cn->options['general']['app_id'] : ''; + + if ( ! empty( $current_app_id ) ) { + $test_email = defined( 'CN_DEV_TEST_EMAIL' ) ? CN_DEV_TEST_EMAIL : getenv( 'CN_DEV_TEST_EMAIL' ); + $test_password = defined( 'CN_DEV_TEST_PASSWORD' ) ? CN_DEV_TEST_PASSWORD : getenv( 'CN_DEV_TEST_PASSWORD' ); + + if ( ! empty( $test_email ) && ! empty( $test_password ) ) { + // Login to get a Bearer token, then delete the app. + $welcome_api = Cookie_Notice()->welcome; + $login_result = $welcome_api->request( 'login', [ + 'AdminID' => $test_email, + 'Password' => $test_password, + ] ); + + if ( ! empty( $login_result->data->token ) ) { + // Store the full data object (not just the token string) — request() reads + // $data_token->token so the shape must match what login normally stores. + set_transient( 'cookie_notice_app_token', $login_result->data, HOUR_IN_SECONDS ); + + $delete_result = $welcome_api->request( 'app_delete', [ + 'AppID' => $current_app_id, + ] ); + + if ( $cn->options['general']['debug_mode'] ) { + error_log( '[Cookie Notice] dev_reset - app_delete result for ' . $current_app_id . ': ' . wp_json_encode( $delete_result ) ); + } + } else { + if ( $cn->options['general']['debug_mode'] ) { + error_log( '[Cookie Notice] dev_reset - login failed for ' . $test_email . ', skipping app_delete.' ); + } + } + } + } + + // --- Step 2: Clear WP options (always runs regardless of API result above). + delete_option( 'cookie_notice_welcome_dismissed' ); + delete_option( 'cookie_notice_setup_wizard_complete' ); + + $options = $cn->options['general']; + $options['app_id'] = ''; + $options['app_key'] = ''; + + if ( is_multisite() ) { + update_site_option( 'cookie_notice_options', $options ); + } else { + update_option( 'cookie_notice_options', $options ); + } + + $default_data = $cn->defaults['data']; + + if ( is_multisite() ) { + update_site_option( 'cookie_notice_status', $default_data ); + } else { + update_option( 'cookie_notice_status', $default_data ); + } + + // Clear transient caches + delete_transient( 'cookie_notice_app_quick_config' ); + delete_site_transient( 'cookie_notice_app_quick_config' ); + delete_transient( 'cookie_notice_app_token' ); + delete_site_transient( 'cookie_notice_app_token' ); + + $deleted_app = ! empty( $current_app_id ) ? $current_app_id : null; + wp_send_json_success( [ + 'message' => 'Plugin reset to fresh-activation state.', + 'deleted_app' => $deleted_app, + ] ); + } + + /** + * DEV ONLY: Set a single allowlisted WP option by name. + * Used by Playwright tests to set fixture state without Docker/WP-CLI. + * Only registered as an AJAX action when CN_DEV_MODE is true. + * + * POST fields: + * option_name — one of the allowlisted option names below + * option_value — string value to store + */ + public function test_set_option() { + if ( ! defined( 'CN_DEV_MODE' ) || ! CN_DEV_MODE ) { + wp_send_json_error( [ 'error' => 'Not available outside CN_DEV_MODE.' ] ); + } + + $this->verify_request(); + + // Allowlist — only options the test suite legitimately needs to set. + $allowed = [ + 'cookie_notice_ui_mode', + 'cookie_notice_status', + 'cookie_notice_setup_wizard_complete', + 'cookie_notice_welcome_dismissed', + 'cookie_notice_options', + ]; + + $option_name = isset( $_POST['option_name'] ) ? sanitize_key( $_POST['option_name'] ) : ''; + + if ( ! in_array( $option_name, $allowed, true ) ) { + wp_send_json_error( [ 'error' => 'Option not in allowlist: ' . $option_name ] ); + } + + // cookie_notice_options is stored as a PHP array — decode JSON input. + $raw_value = isset( $_POST['option_value'] ) ? wp_unslash( $_POST['option_value'] ) : ''; + + if ( $option_name === 'cookie_notice_options' ) { + $option_value = json_decode( $raw_value, true ); + if ( ! is_array( $option_value ) ) { + wp_send_json_error( [ 'error' => 'cookie_notice_options must be valid JSON object.' ] ); + } + } else { + $option_value = sanitize_text_field( $raw_value ); + } + + update_option( $option_name, $option_value ); + + wp_send_json_success( [ 'option' => $option_name, 'value' => $option_value ] ); + } + + /** + * DEV ONLY: Read a single allowlisted WP option by name. + * Used by Playwright tests to inspect persisted state without Docker/WP-CLI. + * Only registered as an AJAX action when CN_DEV_MODE is true. + * + * POST fields: + * option_name — one of the allowlisted option names below + */ + public function test_get_option() { + if ( ! defined( 'CN_DEV_MODE' ) || ! CN_DEV_MODE ) { + wp_send_json_error( [ 'error' => 'Not available outside CN_DEV_MODE.' ] ); + } + + $this->verify_request(); + + // Allowlist — only options the test suite legitimately needs to read. + $allowed = [ + 'cookie_notice_options', + 'cookie_notice_status', + 'cookie_notice_ui_mode', + 'cookie_notice_setup_wizard_complete', + 'cookie_notice_welcome_dismissed', + 'cookie_notice_app_blocking', + 'cookie_notice_app_design', + ]; + + $option_name = isset( $_POST['option_name'] ) ? sanitize_key( $_POST['option_name'] ) : ''; + + if ( ! in_array( $option_name, $allowed, true ) ) { + wp_send_json_error( [ 'error' => 'Option not in allowlist: ' . $option_name ] ); + } + + $value = get_option( $option_name ); + + // Serialize arrays/objects so the test can inspect them as a string. + if ( is_array( $value ) || is_object( $value ) ) { + $value = wp_json_encode( $value ); + } + + wp_send_json_success( [ 'option' => $option_name, 'value' => (string) $value ] ); + } + + /** + * Save plugin options submitted from the React admin UI. + * + * Reads each recognized POST field, sanitizes it, and merges it into the + * existing options array before persisting via update_option() (single-site) + * or update_site_option() (network). + * + * @return void + */ + public function save_options() { + $this->verify_request(); + + $cn = Cookie_Notice(); + $options = $cn->options['general']; + + // Boolean fields. + $bool_fields = [ + 'refuse_opt', + 'revoke_cookies', + 'on_scroll', + 'on_click', + 'redirection', + 'see_more', + 'bot_detection', + 'amp_support', + 'caching_compatibility', + 'debug_mode', + 'conditional_active', + 'deactivation_delete', + 'app_blocking', + ]; + + foreach ( $bool_fields as $field ) { + if ( isset( $_POST[ $field ] ) ) { + $options[ $field ] = (bool) $_POST[ $field ]; + } + } + + // Server-side threshold enforcement: cap app_blocking to false when + // the free-plan visit limit is exceeded, matching settings.php:1965. + if ( ! empty( $options['app_blocking'] ) && $cn->threshold_exceeded() ) { + $options['app_blocking'] = false; + } + + // Text fields. + $text_fields = [ + 'message_text', + 'accept_text', + 'refuse_text', + 'revoke_text', + 'revoke_message_text', + 'css_class', + ]; + + foreach ( $text_fields as $field ) { + if ( isset( $_POST[ $field ] ) ) { + $options[ $field ] = sanitize_text_field( $_POST[ $field ] ); + } + } + + // Connection credential fields — sanitize_key strips to lowercase alphanumeric + dashes/underscores. + if ( isset( $_POST['app_id'] ) ) { + $options['app_id'] = sanitize_key( $_POST['app_id'] ); + } + + if ( isset( $_POST['app_key'] ) ) { + $options['app_key'] = sanitize_key( $_POST['app_key'] ); + } + + // Script blocking code fields — these can contain + + '; + } + + /** + * Get URLs allowed to be previewed. + * + * @return array + */ + public function get_allowed_urls() { + $allowed_urls = [ home_url( '/' ) ]; + + if ( is_ssl() && ! $this->is_cross_domain() ) + $allowed_urls[] = home_url( '/', 'https' ); + + return $allowed_urls; + } + + /** + * Determines whether the admin and the frontend are on different domains. + * + * @return bool + */ + public function is_cross_domain() { + $admin_origin = wp_parse_url( admin_url() ); + $home_origin = wp_parse_url( home_url() ); + + return ( strtolower( $admin_origin['host'] ) !== strtolower( $home_origin['host'] ) ); + } +} diff --git a/wp-content/plugins/cookie-notice/includes/welcome.php b/wp-content/plugins/cookie-notice/includes/welcome.php new file mode 100644 index 0000000..7f26b56 --- /dev/null +++ b/wp-content/plugins/cookie-notice/includes/welcome.php @@ -0,0 +1,865 @@ +pricing_monthly = [ + 'compliance_monthly_notrial' => '14.95', + 'compliance_monthly_5' => '29.95', + 'compliance_monthly_10' => '49.95', + 'compliance_monthly_20' => '69.95' + ]; + + $this->pricing_yearly = [ + 'compliance_yearly_notrial' => '149.50', + 'compliance_yearly_5' => '299.50', + 'compliance_yearly_10' => '499.50', + 'compliance_yearly_20' => '699.50' + ]; + } + + /** + * Load scripts and styles - admin. + * + * @return void + */ + public function admin_enqueue_scripts( $page ) { + // get main instance + $cn = Cookie_Notice(); + + if ( $cn->check_status( $cn->get_status() ) ) + return; + + // Legacy welcome scripts only load when ui_mode is explicitly set to legacy. + if ( $cn->options['general']['ui_mode'] !== 'legacy' ) + return; + + // styles + wp_enqueue_style( 'dashicons' ); + wp_enqueue_style( 'cookie-notice-modaal', COOKIE_NOTICE_URL . '/assets/modaal/css/modaal.min.css', [], $cn->defaults['version'] ); + wp_enqueue_style( 'cookie-notice-spectrum', COOKIE_NOTICE_URL . '/assets/spectrum/spectrum.min.css', [], $cn->defaults['version'] ); + wp_enqueue_style( 'cookie-notice-microtip', COOKIE_NOTICE_URL . '/assets/microtip/microtip.min.css', [], $cn->defaults['version'] ); + + // scripts + wp_enqueue_script( 'cookie-notice-modaal', COOKIE_NOTICE_URL . '/assets/modaal/js/modaal.min.js', [], $cn->defaults['version'] ); + wp_enqueue_script( 'cookie-notice-spectrum', COOKIE_NOTICE_URL . '/assets/spectrum/spectrum.min.js', [], $cn->defaults['version'] ); + wp_enqueue_script( 'cookie-notice-welcome', COOKIE_NOTICE_URL . '/js/admin-welcome.js', [ 'jquery', 'jquery-ui-core', 'jquery-ui-progressbar' ], $cn->defaults['version'] ); + wp_enqueue_script( 'cookie-notice-braintree-client', 'https://js.braintreegateway.com/web/3.71.0/js/client.min.js', [], null, false ); + wp_enqueue_script( 'cookie-notice-braintree-hostedfields', 'https://js.braintreegateway.com/web/3.71.0/js/hosted-fields.min.js', [], null, false ); + wp_enqueue_script( 'cookie-notice-braintree-paypal', 'https://js.braintreegateway.com/web/3.71.0/js/paypal-checkout.min.js', [], null, false ); + + // check network + $network = $cn->is_network_admin(); + + // prepare script data + $script_data = [ + 'ajaxURL' => admin_url( 'admin-ajax.php' ), + 'network' => $network, + 'nonce' => wp_create_nonce( 'cookie-notice-welcome' ), + 'cnNonce' => wp_create_nonce( 'cookie-notice-welcome' ), + 'initModal' => $network ? get_site_transient( 'cn_show_welcome' ) : get_transient( 'cn_show_welcome' ), // welcome modal + 'error' => esc_html__( 'Unexpected error occurred. Please try again later.', 'cookie-notice' ), + 'statusPassed' => esc_html__( 'Passed', 'cookie-notice' ), + 'statusFailed' => esc_html__( 'Failed', 'cookie-notice' ), + 'paidMonth' => esc_html__( 'monthly', 'cookie-notice' ), + 'paidYear' => esc_html__( 'yearly', 'cookie-notice' ), + 'pricingMonthly' => $this->pricing_monthly, + 'pricingYearly' => $this->pricing_yearly, + 'complianceStatus' => $cn->get_status(), + 'complianceFailed' => sprintf( esc_html__( '%sCompliance Failed!%sYour website does not achieve minimum viable compliance. %sSign up to Compliance by Hu-manity.co%s to bring your site into compliance with the latest data privacy rules and regulations.', 'cookie-notice' ), '', '', '' ), + 'compliancePassed' => sprintf( esc_html__( '%sCompliance Passed!%sCongratulations. Your website meets minimum viable compliance.', 'cookie-notice' ), '', '' ), + 'licensesAvailable' => esc_html__( 'available', 'cookie-notice' ), + 'invalidFields' => esc_html__( 'Please fill all the required fields.', 'cookie-notice' ), + 'dismissed' => (bool) get_option( 'cookie_notice_welcome_dismissed', false ) + ]; + + // delete the show modal transient + if ( $network ) + delete_site_transient( 'cn_show_welcome' ); + else + delete_transient( 'cn_show_welcome' ); + + wp_add_inline_script( 'cookie-notice-welcome', 'var cnWelcomeArgs = ' . wp_json_encode( $script_data ) . ";\n", 'before' ); + + wp_enqueue_style( 'cookie-notice-welcome', COOKIE_NOTICE_URL . '/css/admin-welcome.css', [], $cn->defaults['version'] ); + } + + /** + * Send user to the welcome page on first activation. + * + * @global string $pagenow + * + * @return void + */ + public function welcome() { + global $pagenow; + + if ( $pagenow !== 'admin.php' ) + return; + + // get page + $page = isset( $_GET['page'] ) ? sanitize_key( $_GET['page'] ) : ''; + + if ( $page !== 'cookie-notice' ) + return; + + // bail if bulk activating or within an iframe + if ( isset( $_GET['activate-multi'] ) || defined( 'IFRAME_REQUEST' ) ) + return; + + // get action + $action = isset( $_GET['action'] ) ? sanitize_key( $_GET['action'] ) : ''; + + // get plugin + $plugin = isset( $_GET['plugin'] ) ? sanitize_file_name( $_GET['plugin'] ) : ''; + + if ( $action === 'upgrade-plugin' && strpos( $plugin, 'cookie-notice.php' ) !== false ) + return; + + add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_scripts' ] ); + add_action( 'admin_footer', [ $this, 'admin_footer' ] ); + } + + /** + * Welcome modal container. + * + * @return void + */ + public function admin_footer() { + echo ''; + } + + /** + * Dismiss the welcome modal — AJAX handler. + * Sets cookie_notice_welcome_dismissed option so the modal won't auto-fire again + * when user navigates to ?welcome=1 after closing without completing. + * + * @return void + */ + public function dismiss_welcome() { + if ( ! check_ajax_referer( 'cookie-notice-welcome', 'nonce', false ) ) + wp_die( -1 ); + + if ( ! current_user_can( 'manage_options' ) ) + wp_die( -1 ); + + update_option( 'cookie_notice_welcome_dismissed', true, false ); + + wp_die( 1 ); + } + + /** + * Render welcome screen sidebar step. + * + * @param int|string $screen + * @param bool $echo + * @return string|void + */ + public function welcome_screen( $screen, $echo = true ) { + if ( ! current_user_can( 'install_plugins' ) ) + wp_die( __( 'You do not have permission to access this page.', 'cookie-notice' ) ); + + $sidebars = [ 'about', 'login', 'register', 'configure', 'success' ]; + $steps = [ 1, 2, 3, 4 ]; + $screens = array_merge( $sidebars, $steps ); + + if ( ! empty( $screen ) ) { + if ( is_numeric( $screen ) ) + $screen = (int) $screen; + else + $screen = sanitize_key( $screen ); + } else + $screen = ''; + + if ( empty( $screen ) || ! in_array( $screen, $screens, true ) ) { + if ( isset( $_REQUEST['screen'] ) ) { + if ( is_numeric( $_REQUEST['screen'] ) ) + $screen = (int) $_REQUEST['screen']; + else + $screen = sanitize_key( $_REQUEST['screen'] ); + } else + $screen = ''; + + if ( ! in_array( $screen, $screens, true ) ) + $screen = ''; + } + + if ( empty( $screen ) ) + wp_die( __( 'You do not have permission to access this page.', 'cookie-notice' ) ); + + if ( wp_doing_ajax() && ! check_ajax_referer( 'cookie-notice-welcome', 'nonce' ) ) + wp_die( __( 'You do not have permission to access this page.', 'cookie-notice' ) ); + + // step screens + if ( in_array( $screen, $steps ) ) { + $html = ' +
    '; + + if ( $screen == 1 ) { + $html .= $this->welcome_screen( 'about', false ); + + $html .= ' +
    +
    +
    +

    Compliance by Hu-manity.co

    +

    ' . esc_html__( 'Simple cookie & privacy compliance solution for your business.', 'cookie-notice' ) . '

    +
    +
    +
    + Compliance by Hu-manity.co dashboard +
    +
    +

    ' . sprintf( esc_html__( 'Protect your business and take a proactive approach to data privacy laws with Compliance by Hu-manity.co. Build trust by giving your website visitors a beautiful, multi-level consent experience that complies with the latest cookie regulations in 100+ countries.', 'cookie-notice' ), '', '' ) . '

    +
    '; + $html .= ' +
    +
    + +
    + '; + + $html .= ' +
    +
    +
    '; + } elseif ( $screen == 2 ) { + $html .= $this->welcome_screen( 'configure', false ); + + $html .= ' +
    + +
    '; + } elseif ( $screen == 3 ) { + $html .= $this->welcome_screen( 'register', false ); + + $html .= ' +
    +
    +
    +

    Compliance by Hu-manity.co

    +

    ' . esc_html__( 'Consent Management Platform with simple, transparent pricing.', 'cookie-notice' ) . '

    +
    +

    ' . esc_html__( 'Choose monthly or yearly payment and number of domains for the fully featured, Professional plan. Or start with limited, Basic plan for free.', 'cookie-notice' ) . '

    +
    '; + + $html .= ' +

    ' . esc_html__( 'Select plan', 'cookie-notice' ) . ':

    +
    + + +
    +
    + + +
    +
    + +
    '; + + $html .= ' +
    +
    +
    '; + } elseif ( $screen == 4 ) { + $html .= $this->welcome_screen( 'success', false ); + + // get main instance + $cn = Cookie_Notice(); + $subscription = $cn->get_subscription(); + + $html .= ' +
    +
    +
    +

    ' . esc_html__( 'Congratulations', 'cookie-notice' ) . '

    +

    ' . esc_html__( 'You have successfully signed up to Compliance by Hu-manity.co.', 'cookie-notice' ) . '

    +
    +

    ' . esc_html__( 'Log in to your account and continue configuring your website.', 'cookie-notice' ) . '

    +
    + +
    +
    +
    '; + } + + $html .= ' +
    '; + // sidebar screens + } elseif ( in_array( $screen, $sidebars ) ) { + $html = ''; + + if ( $screen === 'about' ) { + $theme = wp_get_theme(); + + $html .= ' +
    +
    +
    +
    + +
    +
    +
    +

    ' . esc_html__( 'Compliance check', 'cookie-notice' ) . '

    +

    ' . esc_html__( 'This is a Compliance Check to determine your site’s compliance with updated data processing and consent rules under GDPR, CCPA and other international data privacy laws.', 'cookie-notice' ) . '

    +
    +

    ' . esc_html__( 'Site URL', 'cookie-notice' ) . ': ' . esc_url( home_url() ) . '

    +

    ' . esc_html__( 'Site Name', 'cookie-notice' ) . ': ' . esc_html( get_bloginfo( 'name' ) ) . '

    +
    +
    +
    ' . esc_html__( 'Checking...', 'cookie-notice' ) . '
    +
    +
    +

    ' . esc_html__( 'Consent Banner', 'cookie-notice' ) . '

    ' . esc_html__( 'Notify visitors to the site that it uses cookies or similar technologies.', 'cookie-notice' ) . '

    + + + + + +
    +
    + ' /*
    + . '
    */ . ' +
    '; + } elseif ( $screen === 'configure' ) { + $html .= ' +
    +
    +
    +
    + +
    +
    +
    +

    ' . esc_html__( 'Live Setup', 'cookie-notice' ) . '

    +

    ' . esc_html__( 'Configure your Compliance by Hu-manity.co design and compliance features through the options below. Click Apply Setup to save the configuration and go to selecting your preferred cookie solution.', 'cookie-notice' ) . '

    +
    +
    +
    +
    +
    + ' . + /* +
    + +
    + +
    +
    + */ + ' +
    + +
    + + + + + + + + +
    +
    +
    + +
    + + + +
    +
    +
    + +
    + + + + +
    +
    ' . + //
    * ' . esc_html__( 'available for Cookie Compliance™ Pro plans only', 'cookie-notice' ) . '
    + '
    +
    +
    +
    +
    + +
    + +
    + + + + + +
    +
    +
    + +
    + + + + + + +
    +
    ' . + //
    * ' . esc_html__( 'available for Cookie Compliance™ Pro plans only', 'cookie-notice' ) . '
    + '
    +
    +
    +
    + +
    '; + + $html .= wp_nonce_field( 'cn_api_configure', 'cn_nonce', true, false ); + + $html .= ' +
    +
    '; + } elseif ( $screen === 'register' ) { + $html .= ' +
    +
    +
    +
    + +
    +
    +
    +

    ' . esc_html__( 'Compliance account', 'cookie-notice' ) . '

    +
    +

    ' . esc_html__( 'Create a Compliance by Hu-manity.co account and select your preferred plan.', 'cookie-notice' ) . '

    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    + + ' . esc_html( 'Minimum eight characters, at least one capital letter and one number are required.', 'cookie-notice' ) . ' +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    '; + + // get site language + $locale = get_locale(); + $locale_code = explode( '_', $locale ); + + $html .= ' + '; + + $html .= wp_nonce_field( 'cn_api_register', 'cn_nonce', true, false ); + + $html .= ' +
    +

    ' . esc_html__( 'Already have an account?', 'cookie-notice' ) . ' ' . esc_html__( 'Sign in', 'cookie-notice' ). '

    +
    +
    '; + + $html .= ' +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    + +
    +
    + +
    + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    + +
    '; + + $html .= wp_nonce_field( 'cn_api_payment', 'cn_payment_nonce', true, false ); + + $html .= ' +
    +
    +
    +
    '; + } elseif ( $screen === 'login' ) { + $html .= ' +
    +
    +
    +
    + +
    +
    +
    +

    ' . esc_html__( 'Compliance Sign in', 'cookie-notice' ) . '

    +
    +

    ' . esc_html__( 'Sign in to your existing Compliance by Hu-manity.co account and select your preferred plan.', 'cookie-notice' ) . '

    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    + +
    '; + + // get site language + $locale = get_locale(); + $locale_code = explode( '_', $locale ); + + $html .= ' + '; + + $html .= wp_nonce_field( 'cn_api_login', 'cn_nonce', true, false ); + + $html .= ' +
    +

    ' . esc_html__( 'Don\'t have an account yet?', 'cookie-notice' ) . ' ' . esc_html__( 'Sign up', 'cookie-notice' ) . '

    +
    +
    +
    +
    + +
    +
    + +
    +
    + + + +
    +
    +
    + +
    +
    + +
    + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    +
    + + +

    + +
    '; + + $html .= wp_nonce_field( 'cn_api_payment', 'cn_payment_nonce', true, false ); + + $html .= ' +
    +
    +
    +
    '; + } elseif ( $screen === 'success' ) { + $html .= ' +
    +
    +
    +
    + +
    +
    +
    +

    ' . esc_html__( 'Success!', 'cookie-notice' ) . '

    +

    ' . esc_html__( 'You have successfully integrated your website with Compliance by Hu-manity.co.', 'cookie-notice' ) . '

    ' . sprintf( esc_html__( 'Go to Compliance by Hu-manity.co now. Or access it anytime from your %sCompliance settings page%s.', 'cookie-notice' ), '', '' ) . '

    +
    '; + } + + + + $html .= ' + +
    +
    '; + } + + if ( $echo ) { + // get allowed html + $allowed_html = wp_kses_allowed_html( 'post' ); + $allowed_html['div']['tabindex'] = true; + $allowed_html['button']['tabindex'] = true; + $allowed_html['iframe'] = [ + 'id' => true, + 'src' => true + ]; + $allowed_html['form'] = [ + 'id' => true, + 'class' => true, + 'action' => true, + 'data-action' => true + ]; + $allowed_html['select'] = [ + 'name' => true, + 'class' => true, + 'id' => true, + 'aria-label' => true + ]; + $allowed_html['option'] = [ + 'value' => true, + 'data-price' => true + ]; + $allowed_html['input'] = [ + 'id' => true, + 'type' => true, + 'name' => true, + 'class' => true, + 'value' => true, + 'tabindex' => true, + 'autocomplete' => true, + 'checked' => true, + 'placeholder' => true, + 'title' => true + ]; + + add_filter( 'safe_style_css', [ $this, 'allow_style_attributes' ] ); + + // echo wp_kses( $html, $allowed_html ); + echo $html; + + remove_filter( 'safe_style_css', [ $this, 'allow_style_attributes' ] ); + } else + return $html; + + if ( wp_doing_ajax() ) + exit(); + } +} diff --git a/wp-content/plugins/cookie-notice/index.php b/wp-content/plugins/cookie-notice/index.php new file mode 100644 index 0000000..561fa05 --- /dev/null +++ b/wp-content/plugins/cookie-notice/index.php @@ -0,0 +1,2 @@ + 0 ) { + for ( const [key, config] of Object.entries( charts ) ) { + // create canvas + var canvas = document.getElementById( 'cn-' + key + '-chart' ); + + if ( canvas ) + new Chart( canvas, config ); + } + } + } ); + +} )( jQuery ); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/js/admin-notice.js b/wp-content/plugins/cookie-notice/js/admin-notice.js new file mode 100644 index 0000000..c18d606 --- /dev/null +++ b/wp-content/plugins/cookie-notice/js/admin-notice.js @@ -0,0 +1,149 @@ +( function() { + 'use strict'; + + /** + * Build a form-encoded payload and send it without relying on jQuery. + * + * @param {string} action + * @param {Object} data + * @returns {void} + */ + const postNoticeAction = function( action, data ) { + if ( ! window.cnArgsNotice || ! cnArgsNotice.ajaxURL ) { + return; + } + + const bodyParams = { + action: action, + notice_action: data.noticeAction, + nonce: data.nonce, + cn_network: cnArgsNotice.network ? 1 : 0 + }; + + if ( typeof data.param !== 'undefined' ) { + bodyParams.param = data.param; + } + + const encodeBody = function( params ) { + return Object.keys( params ) + .map( function( key ) { + return encodeURIComponent( key ) + '=' + encodeURIComponent( params[ key ] ); + } ) + .join( '&' ); + }; + + const body = encodeBody( bodyParams ); + + if ( window.fetch ) { + fetch( cnArgsNotice.ajaxURL, { + method: 'POST', + credentials: 'same-origin', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' + }, + body: body + } ).catch( function() { + // fail silently – notice still closes + } ); + } else { + // XHR fallback for older browsers. + var xhr = new XMLHttpRequest(); + xhr.open( 'POST', cnArgsNotice.ajaxURL, true ); + xhr.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8' ); + xhr.send( body ); + } + }; + + const hideNotice = function( notice ) { + if ( notice ) { + notice.style.display = 'none'; + } + }; + + document.addEventListener( 'DOMContentLoaded', function() { + // No cookie compliance notice. + document.addEventListener( 'click', function( event ) { + const target = event.target; + + if ( ! target || typeof target.closest !== 'function' ) { + return; + } + + const dismissButton = target.closest( '.cn-notice .cn-no-compliance .cn-notice-dismiss' ); + + if ( ! dismissButton ) { + return; + } + + const notice = dismissButton.closest( '.cn-notice' ); + + if ( ! notice ) { + return; + } + + event.preventDefault(); + + let noticeAction = 'dismiss'; + let param = ''; + + if ( dismissButton.classList.contains( 'cn-approve' ) ) { + noticeAction = 'approve'; + } else if ( dismissButton.classList.contains( 'cn-delay' ) ) { + noticeAction = 'delay'; + } else if ( notice.classList.contains( 'cn-threshold' ) ) { + noticeAction = 'threshold'; + + const noticeText = notice.querySelector( '.cn-notice-text' ); + const delay = noticeText && noticeText.dataset ? parseInt( noticeText.dataset.delay, 10 ) : NaN; + + param = ! isNaN( delay ) && isFinite( delay ) ? delay : ''; + } + + postNoticeAction( 'cn_dismiss_notice', { + noticeAction: noticeAction, + nonce: cnArgsNotice.nonce, + param: param + } ); + + hideNotice( notice ); + } ); + + // Review notice. + document.addEventListener( 'click', function( event ) { + const target = event.target; + + if ( ! target || typeof target.closest !== 'function' ) { + return; + } + + const link = target.closest( '.cn-notice .cn-review .button-link' ); + + if ( ! link ) { + return; + } + + const notice = link.closest( '.cn-notice' ); + + if ( ! notice ) { + return; + } + + event.preventDefault(); + + let noticeAction = 'dismiss'; + + if ( link.classList.contains( 'cn-notice-review' ) ) { + noticeAction = 'review'; + } else if ( link.classList.contains( 'cn-notice-delay' ) ) { + noticeAction = 'delay'; + } + + postNoticeAction( 'cn_review_notice', { + noticeAction: noticeAction, + nonce: cnArgsNotice.reviewNonce + } ); + + hideNotice( notice ); + } ); + } ); +} )(); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/js/admin-plugins.js b/wp-content/plugins/cookie-notice/js/admin-plugins.js new file mode 100644 index 0000000..010d3a0 --- /dev/null +++ b/wp-content/plugins/cookie-notice/js/admin-plugins.js @@ -0,0 +1,71 @@ +( function( $ ) { + + // ready event + $( function() { + // cancel deactivation + $( document ).on( 'click', '.cn-deactivate-plugin-cancel', function( e ) { + tb_remove(); + + return false; + } ); + + // simple deactivation + $( document ).on( 'click', '.cn-deactivate-plugin-simple', function( e ) { + // display spinner + $( '#cn-deactivation-footer .spinner' ).addClass( 'is-active' ); + } ); + + // deactivation with sending data + $( document ).on( 'click', '.cn-deactivate-plugin-data', function( e ) { + var spinner = $( '#cn-deactivation-footer .spinner' ); + var url = $( this ).attr( 'href' ); + + // display spinner + spinner.addClass( 'is-active' ); + + // submit data + $.post( ajaxurl, { + action: 'cn-deactivate-plugin', + option_id: $( 'input[name="cn_deactivation_option"]:checked' ).val(), + other: $( 'textarea[name="cn_deactivation_other"]' ).val(), + nonce: cnArgsPlugins.nonce + } ).done( function( response ) { + // deactivate plugin + window.location.href = url; + } ).fail( function() { + // deactivate plugin + window.location.href = url; + } ); + + return false; + } ); + + // click on deactivation link + $( document ).on( 'click', '.cn-deactivate-plugin-modal', function( e ) { + tb_show( cnArgsPlugins.deactivate, '#TB_inline?inlineId=cn-deactivation-modal&modal=false' ); + + setTimeout( function() { + var modalBox = $( '#cn-deactivation-container' ).closest( '#TB_window' ); + + if ( modalBox.length > 0 ) { + $( modalBox ).addClass( 'cn-deactivation-modal' ); + + } + }, 0 ); + + return false; + } ); + + // change radio + $( document ).on( 'change', 'input[name="cn_deactivation_option"]', function( e ) { + var last = $( 'input[name="cn_deactivation_option"]' ).last().get( 0 ); + + // last element? + if ( $( this ).get( 0 ) === last ) + $( '.cn-deactivation-textarea textarea' ).prop( 'disabled', false ); + else + $( '.cn-deactivation-textarea textarea' ).prop( 'disabled', true ); + } ); + } ); + +} )( jQuery ); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/js/admin-welcome.js b/wp-content/plugins/cookie-notice/js/admin-welcome.js new file mode 100644 index 0000000..2e213f5 --- /dev/null +++ b/wp-content/plugins/cookie-notice/js/admin-welcome.js @@ -0,0 +1,986 @@ +( function( $ ) { + + // ready event + $( function() { + var btClient = false; + var btCreditCardsInitialized = false; + var btPayPalInitialized = false; + + var btInit = function() { + var result = btInitToken(); + + if ( result !== false && btCreditCardsInitialized === false ) { + // ajax was successful + result.done( function( response ) { + // token received + try { + // parse response + data = JSON.parse( response ); + + // first step, init braintree client + btClient = braintree.client.create( { + authorization: data.token + } ); + + btInitPaymentMethod( 'credit_card' ); + // token failed + } catch ( e ) { + btGatewayFail( 'btInit catch' ); + } + // ajax failed + } ).fail( function() { + btGatewayFail( 'btInit AJAX failed' ); + } ); + } + } + + var btInitToken = function() { + // payment screen? + var paymentEl = $( '.cn-sidebar form[data-action="payment"]' ); + + // init braintree + if ( paymentEl.length ) { + paymentEl.addClass( 'cn-form-disabled' ); + + if ( typeof braintree !== 'undefined' ) { + var ajaxArgs = { + action: 'cn_api_request', + request: 'get_bt_init_token', + nonce: cnWelcomeArgs.nonce + }; + + // network area? + if ( cnWelcomeArgs.network === '1' ) + ajaxArgs.cn_network = 1; + + return $.ajax( { + url: cnWelcomeArgs.ajaxURL, + type: 'POST', + dataType: 'html', + data: ajaxArgs + } ); + } else + return false; + } else + return false; + } + + var btInitPaymentMethod = function( type ) { + if ( btClient !== false ) { + if ( type === 'credit_card' && btCreditCardsInitialized === false ) { + $( 'form.cn-form[data-action="payment"]' ).addClass( 'cn-form-disabled' ); + + btClient.then( btCreditCardsInit ).then( btHostedFieldsInstance ).catch( btGatewayFail ); + } else if ( type === 'paypal' && btPayPalInitialized === false ) { + $( 'form.cn-form[data-action="payment"]' ).addClass( 'cn-form-disabled' ); + + btClient.then( btPaypalCheckoutInit ).then( btPaypalCheckoutSDK ).then( btPaypalCheckoutInstance ).then( btPaypalCheckoutButton ).catch( btGatewayFail ); + } + } else + btGatewayFail( 'btInitPaymentMethod btClient is false' ); + } + + var btCreditCardsInit = function( clientInstance ) { + return braintree.hostedFields.create( { + client: clientInstance, + styles: { + 'input': { + 'font-size': '14px', + 'font-family': '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif', + 'color': '#fff' + }, + ':focus': { + 'color': '#fff' + }, + "::placeholder": { + 'color': '#aaa' + } + }, + fields: { + number: { + 'selector': '#cn_card_number', + 'placeholder': '0000 0000 0000 0000' + }, + expirationDate: { + 'selector': '#cn_expiration_date', + 'placeholder': 'MM / YY' + }, + cvv: { + 'selector': '#cn_cvv', + 'placeholder': '123' + } + } + } ); + } + + var btHostedFieldsInstance = function( hostedFieldsInstance ) { + btCreditCardsInitialized = true; + + var form = $( 'form.cn-form[data-action="payment"]' ); + + form.removeClass( 'cn-form-disabled' ); + + form.on( 'submit', function() { + if ( form.hasClass( 'cn-payment-in-progress' ) ) + return false; + + form.find( '.cn-form-feedback' ).addClass( 'cn-hidden' ); + + // spin the spinner, if exists + if ( form.find( '.cn-spinner' ).length ) + form.find( '.cn-spinner' ).addClass( 'spin' ); + + var invalidForm = false; + var state = hostedFieldsInstance.getState(); + + // check hosted fields + Object.keys( state.fields ).forEach( function( field ) { + if ( ! state.fields[field].isValid ) { + $( state.fields[field].container ).addClass( 'braintree-hosted-fields-invalid' ); + + invalidForm = true; + } + } ); + + if ( invalidForm ) { + setTimeout( function() { + cnDisplayError( cnWelcomeArgs.invalidFields, form ); + + // spin the spinner, if exists + if ( form.find( '.cn-spinner' ).length ) + form.find( '.cn-spinner' ).removeClass( 'spin' ); + }, 500 ); + + return false; + } + + hostedFieldsInstance.tokenize( function( err, payload ) { + if ( err ) { + cnDisplayError( cnWelcomeArgs.error ); + + return false; + } else { + form.addClass( 'cn-payment-in-progress' ); + form.find( 'input[name="payment_nonce"]' ).val( payload.nonce ); + form.find( 'input[name="cn_payment_identifier"]' ).val( payload.details.lastFour ); + + $( '#cn_submit_pro' ).find( '.cn-screen-button[data-screen="4"]' ).trigger( 'click' ); + } + } ); + + return false; + } ); + } + + var btPaypalCheckoutInit = function( clientInstance ) { + return braintree.paypalCheckout.create( { + client: clientInstance + } ); + } + + var btPaypalCheckoutSDK = function( paypalCheckoutInstance ) { + return paypalCheckoutInstance.loadPayPalSDK( { + vault: true, + intent: 'tokenize' + } ); + } + + var btPaypalCheckoutInstance = function( paypalCheckoutInstance ) { + var form = $( 'form.cn-form[data-action="payment"]' ); + + return paypal.Buttons( { + fundingSource: paypal.FUNDING.PAYPAL, + createBillingAgreement: function() { + form.addClass( 'cn-form-disabled' ); + + return paypalCheckoutInstance.createPayment( { + flow: 'vault', + intent: 'tokenize', + currency: 'EUR' + } ); + }, + onApprove: function( data, actions ) { + return paypalCheckoutInstance.tokenizePayment( data ).then( function( payload ) { + form.addClass( 'cn-payment-in-progress' ); + form.find( 'input[name="payment_nonce"]' ).val( payload.nonce ); + form.find( 'input[name="cn_payment_identifier"]' ).val( payload.details.email ); + + $( '#cn_submit_pro' ).find( '.cn-screen-button[data-screen="4"]' ).trigger( 'click' ); + } ); + }, + onCancel: function( data ) { + form.removeClass( 'cn-form-disabled' ); + }, + onError: function( err ) { + form.removeClass( 'cn-form-disabled' ); + } + } ).render( '#cn_paypal_button' ); + } + + var btPaypalCheckoutButton = function() { + btPayPalInitialized = true; + + $( 'form.cn-form[data-action="payment"]' ).removeClass( 'cn-form-disabled' ); + } + + var btGatewayFail = function( error ) { + if ( typeof error !== 'undefined' ) + console.log( error ); + + cnDisplayError( cnWelcomeArgs.error ); + } + + var cnDisplayError = function( message, form ) { + if ( typeof form === 'undefined' ) + form = $( 'form.cn-form[data-action="payment"]' ); + + form.find( '.cn-form-feedback' ).html( '

    ' + message + '

    ' ).removeClass( 'cn-hidden' ); + } + + var cnWelcomeScreen = function( target ) { + var screen = $( target ).data( 'screen' ); + var steps = [1, 2, 3, 4]; + var sidebars = ['login', 'register', 'configure', 'payment']; + + // continue with screen loading + var requestData = { + action: 'cn_welcome_screen', + nonce: cnWelcomeArgs.nonce + }; + + if ( $.inArray( screen, steps ) !== -1 ) { + var container = $( '.cn-welcome-wrap' ); + + requestData.screen = screen; + } else if ( $.inArray( screen, sidebars ) !== -1 ) { + var container = $( '.cn-sidebar' ); + + requestData.screen = screen; + } else + return false; + + // network area? + if ( cnWelcomeArgs.network === '1' ) + requestData.cn_network = 1; + + // add loading overlay + $( container ).addClass( 'cn-loading' ); + + $.ajax( { + url: cnWelcomeArgs.ajaxURL, + type: 'POST', + dataType: 'html', + data: requestData + } ).done( function( response ) { + $( container ).replaceWith( response ); + } ).fail( function( jqXHR, textStatus, errorThrown ) { + // + } ).always( function( response ) { + // remove spinner + $( container ).removeClass( 'cn-loading' ); + + // trigger event + var event = $.Event( 'screen-loaded' ); + + $( document ).trigger( event ); + } ); + + return this; + }; + + var cnWelcomeForm = function( form ) { + var formAction = $( form[0] ).data( 'action' ); + var formResult = null; + var formData = { + action: 'cn_api_request', + nonce: cnWelcomeArgs.nonce + }; + + // clear feedback + $( form[0] ).find( '.cn-form-feedback' ).addClass( 'cn-hidden' ); + + // build request data + formData.request = formAction; + + // convert form data to object + $( form[0] ).serializeArray().map( function( x ) { + // exception for checkboxes + if ( x.name === 'cn_laws' ) { + var arrayVal = typeof formData[x.name] !== 'undefined' ? formData[x.name] : []; + + arrayVal.push( x.value ); + + formData[x.name] = arrayVal; + } else + formData[x.name] = x.value; + } ); + + // network area? + if ( cnWelcomeArgs.network === '1' ) + formData.cn_network = 1; + + formResult = $.ajax( { + url: cnWelcomeArgs.ajaxURL, + type: 'POST', + dataType: 'json', + data: formData + } ); + + return formResult; + }; + + // handle screen loading + $( document ).on( 'click', '.cn-screen-button', function( e ) { + var form = $( e.target ).closest( 'form' ); + var result = false; + + // spin the spinner, if exists + if ( $( e.target ).find( '.cn-spinner' ).length ) + $( e.target ).find( '.cn-spinner' ).addClass( 'spin' ); + + // no form? + if ( form.length === 0 ) + return cnWelcomeScreen( e.target ); + + var formData = {}; + var formDataset = $( form[0] ).data(); + var formAction = formDataset.hasOwnProperty( 'action' ) ? formDataset.action : ''; + + // get form data + $( form[0] ).serializeArray().map( function( x ) { + // exception for checkboxes + if ( x.name === 'cn_laws' ) { + var arrayVal = typeof formData[x.name] !== 'undefined' ? formData[x.name] : []; + + arrayVal.push( x.value ); + + formData[x.name] = arrayVal; + } else + formData[x.name] = x.value; + } ); + + // payment? + if ( formAction === 'payment' ) { + // free + if ( formData.plan === 'free' ) { + // load screen + cnWelcomeScreen( e.target ); + + return false; + // licesne + } else if ( formData.plan === 'license' ) { + // payment screen? + var paymentEl = $( '.cn-sidebar form[data-action="payment"]' ); + + // disable form + if ( paymentEl.length ) + paymentEl.addClass( 'cn-form-disabled' ); + + // get subscription ID + var subscriptionID = formData.hasOwnProperty( 'cn_subscription_id' ) ? parseInt( formData.cn_subscription_id ) : 0; + + var ajaxArgs = { + action: 'cn_api_request', + request: 'use_license', + subscriptionID: subscriptionID, + nonce: cnWelcomeArgs.nonce + }; + + // network area? + if ( cnWelcomeArgs.network === '1' ) + ajaxArgs.cn_network = 1; + + // assign license request + result = $.ajax( { + url: cnWelcomeArgs.ajaxURL, + type: 'POST', + dataType: 'json', + data: ajaxArgs + } ); + + // process license + result.done( function( response ) { + // error + if ( response.hasOwnProperty( 'error' ) ) { + cnDisplayError( response.error, $( form[0] ) ); + + return false; + // message + } else { + var targetEl = $( '#cn_submit_license' ).find( '.cn-screen-button[data-screen="4"]' ); + + // open next screen + cnWelcomeScreen( targetEl ); + + return result; + } + } ); + + // remove spinner + result.always( function( response ) { + if ( $( e.target ).find( '.cn-spinner' ).length ) + $( e.target ).find( '.cn-spinner' ).removeClass( 'spin' ); + + // enable form + if ( paymentEl.length ) + paymentEl.removeClass( 'cn-form-disabled' ); + } ); + // pro + } else { + // only credit cards + if ( $( form[0] ).find( 'input[name="payment_nonce"]' ).val() === '' ) { + form.trigger( 'submit' ); + + return false; + } + } + // other forms + } else + e.preventDefault(); + + // break here on license payment + if ( formAction === 'payment' && formData.plan === 'license' ) + return result; + + // get form and process it + result = cnWelcomeForm( form ); + + result.done( function( response ) { + // error + if ( response.hasOwnProperty( 'error' ) ) { + cnDisplayError( response.error, $( form[0] ) ); + + return false; + // message + } else if ( response.hasOwnProperty( 'message' ) ) { + cnDisplayError( response.message, $( form[0] ) ); + + return false; + // all good + } else { + switch ( formAction ) { + // logged in, go to success or billing + case 'login': + // register complete, go to success or billing + case 'register': + // if there are any subscriptions + if ( response.hasOwnProperty( 'subscriptions' ) ) { + var subscriptions = response.subscriptions; + + if ( subscriptions.length > 0 ) { + var available = 0; + + for ( i = 0; i < subscriptions.length; i ++ ) { + var subscriptionID = subscriptions[i].subscriptionid; + var licensesAvailable = parseInt( subscriptions[i].availablelicense ); + var subscriptionText = subscriptions[i].VendorSubscriptionID + ' - ' + licensesAvailable + ' ' + cnWelcomeArgs.licensesAvailable; + + var subscriptionOption = $( '' ); + + if ( licensesAvailable == 0 ) { + $( subscriptionOption ).attr( 'disabled', 'true'); + } + + $( '#cn-subscription-select' ).append( subscriptionOption ); + + available += licensesAvailable; + } + + if ( available > 0 ) { + $( '.cn-pricing-plan-license' ).removeClass( 'cn-disabled' ); + $( '.cn-pricing-plan-license' ).find( '.cn-plan-amount' ).text( available ); + } + } + } + + var accountPlan = formData.hasOwnProperty( 'plan' ) ? formData.plan : 'free'; + + // trigger payment + var accordionItem = $( form[0] ).closest( '.cn-accordion-item' ); + + // collapse account + $( accordionItem ).addClass( 'cn-collapsed cn-disabled' ); + + // show billing + $( accordionItem ).next().removeClass( 'cn-disabled' ).removeClass( 'cn-collapsed' ); + $( accordionItem ).find( 'form' ).removeClass( 'cn-form-disabled' ); + + // init braintree after payment screen is loaded via AJAX + btInit(); + break; + + case 'configure': + default: + // load screen + cnWelcomeScreen( e.target ); + break; + } + } + } ); + + result.always( function( response ) { + if ( $( e.target ).find( '.cn-spinner' ).length ) + $( e.target ).find( '.cn-spinner' ).removeClass( 'spin' ); + + // after invalid payment? + if ( formAction === 'payment' ) { + $( form[0] ).removeClass( 'cn-payment-in-progress' ); + $( form[0] ).find( 'input[name="payment_nonce"]' ).val( '' ); + } + } ); + + return result; + } ); + + // + $( document ).on( 'screen-loaded', function() { + var configureFields = $( '#cn-form-configure' ).serializeArray() || []; + var frame = window.frames[ 'cn_iframe_id' ]; + + if ( configureFields.length > 0 ) { + $( configureFields ).each( function( index, field ) { + } ); + } + } ); + + // change payment method + $( document ).on( 'change', 'input[name="method"]', function() { + var input = $( this ); + + $( '#cn_payment_method_credit_card, #cn_payment_method_paypal' ).toggle(); + + input.closest( 'form' ).find( '.cn-form-feedback' ).addClass( 'cn-hidden' ); + + // init payment method if needed + btInitPaymentMethod( input.val() ); + } ); + + // + $( document ).on( 'click', '.cn-accordion > .cn-accordion-item .cn-accordion-button', function() { + var accordionItem = $( this ).closest( '.cn-accordion-item' ); + var activeItem = $( this ).closest( '.cn-accordion' ).find( '.cn-accordion-item:not(.cn-collapsed)' ); + + if ( $( accordionItem ).hasClass( 'cn-collapsed' ) ) { + $( activeItem ).addClass( 'cn-collapsed' ); + $( accordionItem ).removeClass( 'cn-collapsed' ); + } + + return false; + } ); + + // live preview + $( document ).on( 'change', 'input[name="cn_position"]', function() { + var val = $( this ).val(); + var frame = window.frames['cn_iframe_id']; + + frame.contentWindow.postMessage( {call: 'position', value: val} ); + } ); + + $( document ).on( 'change', 'input[name="cn_laws"]', function() { + var val = []; + + $( 'input[name="cn_laws"]:checked' ).each( function() { + val.push( $( this ).val() ); + } ); + + var frame = window.frames['cn_iframe_id']; + + frame.contentWindow.postMessage( {call: 'laws', value: val} ); + } ); + + $( document ).on( 'change', 'input[name="cn_naming"]', function() { + var val = []; + + $( 'input[name="cn_naming"]:checked' ).each( function() { + val.push( $( this ).val() ); + } ); + + var frame = window.frames['cn_iframe_id']; + + frame.contentWindow.postMessage( {call: 'naming', value: val} ); + } ); + + $( document ).on( 'change', 'input[name="cn_on_scroll"]', function() { + var val = $( this ).prop( 'checked' ); + var frame = window.frames['cn_iframe_id']; + + frame.contentWindow.postMessage( {call: 'on_scroll', value: val} ); + } ); + + $( document ).on( 'change', 'input[name="cn_on_click"]', function() { + var val = $( this ).prop( 'checked' ); + var frame = window.frames['cn_iframe_id']; + + frame.contentWindow.postMessage( {call: 'on_click', value: val} ); + } ); + + $( document ).on( 'change', 'input[name="cn_ui_blocking"]', function() { + var val = $( this ).prop( 'checked' ); + var frame = window.frames['cn_iframe_id']; + + frame.contentWindow.postMessage( {call: 'ui_blocking', value: val} ); + } ); + + $( document ).on( 'change', 'input[name="cn_revoke_consent"]', function() { + var val = $( this ).prop( 'checked' ); + var frame = window.frames['cn_iframe_id']; + + frame.contentWindow.postMessage( {call: 'revoke_consent', value: val} ); + } ); + + $( document ).on( 'change', 'input[name="cn_color_primary"]', function() { + var val = $( this ).val(); + var frame = window.frames['cn_iframe_id']; + + frame.contentWindow.postMessage( {call: 'color_primary', value: val} ); + } ); + + $( document ).on( 'change', 'input[name="cn_color_background"]', function() { + var val = $( this ).val(); + var frame = window.frames['cn_iframe_id']; + + frame.contentWindow.postMessage( {call: 'color_background', value: val} ); + } ); + + $( document ).on( 'change', 'input[name="cn_color_border"]', function() { + var val = $( this ).val(); + var frame = window.frames['cn_iframe_id']; + + frame.contentWindow.postMessage( {call: 'color_border', value: val} ); + } ); + + $( document ).on( 'change', 'input[name="cn_color_text"]', function() { + var val = $( this ).val(); + var frame = window.frames['cn_iframe_id']; + + frame.contentWindow.postMessage( {call: 'color_text', value: val} ); + } ); + + $( document ).on( 'change', 'input[name="cn_color_heading"]', function() { + var val = $( this ).val(); + var frame = window.frames['cn_iframe_id']; + + frame.contentWindow.postMessage( {call: 'color_heading', value: val} ); + } ); + + $( document ).on( 'change', 'input[name="cn_color_button_text"]', function() { + var val = $( this ).val(); + var frame = window.frames['cn_iframe_id']; + + frame.contentWindow.postMessage( {call: 'color_button_text', value: val} ); + } ); + + // handle monthly / yearly payment plan + $( document ).on( 'change', 'input[name="cn_pricing_type"]', function() { + // pricing plans + var plansMonthly = cnWelcomeArgs.pricingMonthly; + var plansYearly = cnWelcomeArgs.pricingYearly; + + var pricingOptions = $( '#cn-pricing-plans option' ); + var checked = $( 'input[name="cn_pricing_type"]:checked' ).val(); + + var names = Object.keys( checked === 'yearly' ? plansYearly : plansMonthly ); + var pricing = Object.values( checked === 'yearly' ? plansYearly : plansMonthly ); + + if ( checked === 'yearly' ) + $( '.cn-plan-period' ).text( cnWelcomeArgs.paidYear ); + else + $( '.cn-plan-period' ).text( cnWelcomeArgs.paidMonth ); + + // replace options + var i = 0; + + for ( var property in pricing ) { + var option = pricingOptions[i]; + + $( option ).val( names[i] ); + $( option ).attr( 'data-price', pricing[i] ); + i++; + } + + // trigger plan selection + $( 'select[name="cn_pricing_plan"]' ).trigger( 'change' ); + } ); + + // handle pro plan selection + $( document ).on( 'change', 'select[name="cn_pricing_plan"]', function() { + var el = $( '#cn-pricing-plans' ); + var selected = $( el ).find( 'option:selected' ); + + // update price + $( '.cn-pricing-plan-pro .cn-plan-amount' ).text( $( selected ).attr( 'data-price' ) ); + + var availablePlans = ['free']; + + // merge with pro plans + availablePlans = availablePlans.concat( Object.keys( cnWelcomeArgs.pricingMonthly ) ); + availablePlans = availablePlans.concat( Object.keys( cnWelcomeArgs.pricingYearly ) ); + + var input = $( this ); + var inputVal = input.val(); + + inputVal = availablePlans.indexOf( inputVal ) !== -1 ? inputVal : 'free'; + + if ( inputVal === 'free' ) { + $( '#cn_submit_free' ).removeClass( 'cn-hidden' ); + $( '#cn_submit_pro' ).addClass( 'cn-hidden' ); + + $( document ).find( '#cn-field-plan-free' ).prop( 'checked', true ); + $( document ).find( '#cn-pricing-plan-free' ).prop( 'checked', true ); + } else { + $( '#cn_submit_free' ).addClass( 'cn-hidden' ); + $( '#cn_submit_pro' ).removeClass( 'cn-hidden' ); + + $( document ).find( '#cn-field-plan-pro' ).val( inputVal ).prop( 'checked', true ); + $( document ).find( '#cn-pricing-plan-pro' ).prop( 'checked', true ); + } + } ); + + // handle free / pro / license selection + $( document ).on( 'change', 'input[name="plan"]', function() { + var input = $( this ), + inputVal = input.val(); + + if ( inputVal === 'free' ) { + $( '#cn_submit_free' ).removeClass( 'cn-hidden' ); + $( '#cn_submit_pro' ).addClass( 'cn-hidden' ); + $( '#cn_submit_license' ).addClass( 'cn-hidden' ); + + $( document ).find( '#cn-pricing-plan-free' ).prop( 'checked', true ); + } else if ( inputVal === 'license' ) { + $( '#cn_submit_free' ).addClass( 'cn-hidden' ); + $( '#cn_submit_pro' ).addClass( 'cn-hidden' ); + $( '#cn_submit_license' ).removeClass( 'cn-hidden' ); + + $( document ).find( '#cn-pricing-plan-free' ).prop( 'checked', false ); + $( document ).find( '#cn-pricing-plan-pro' ).prop( 'checked', false ); + } else { + $( '#cn_submit_free' ).addClass( 'cn-hidden' ); + $( '#cn_submit_pro' ).removeClass( 'cn-hidden' ); + $( '#cn_submit_license' ).addClass( 'cn-hidden' ); + + $( document ).find( '#cn-pricing-plan-pro' ).prop( 'checked', true ); + } + } ); + + // highlight form + $( document ).on( 'click', 'input[name="cn_pricing"]', function() { + $( '.cn-accordion .cn-accordion-item:first-child:not(.cn-collapsed)' ).focus(); + } ); + + // select plan payment + $( document ).on( 'change', 'input[name="cn_pricing"]', function() { + var input = $( this ), + inputVal = input.val(); + + if ( inputVal === 'free' ) { + $( '#cn_submit_free' ).removeClass( 'cn-hidden' ); + $( '#cn_submit_pro' ).addClass( 'cn-hidden' ); + + $( document ).find( '#cn-field-plan-free' ).prop( 'checked', true ); + } else { + $( '#cn_submit_free' ).addClass( 'cn-hidden' ); + $( '#cn_submit_pro' ).removeClass( 'cn-hidden' ); + + $( document ).find( '#cn-field-plan-pro' ).prop( 'checked', true ); + } + + } ); + + // color picker + initSpectrum(); + + // init welcome modal + if ( cnWelcomeArgs.initModal == true ) + initModal(); + + } ); + + $( document ).on( 'ajaxComplete', function() { + // color picker + initSpectrum(); + } ); + + function initSpectrum() { + $( '.cn-color-picker' ).spectrum( { + showInput: true, + showInitial: true, + allowEmpty: false, + showAlpha: false + } ); + } + + function initModal() { + var progressbar, + timerId, + modal = $( "#cn-modal-trigger" ); + + if ( modal ) { + $( "#cn-modal-trigger" ).modaal( { + content_source: cnWelcomeArgs.ajaxURL + '?action=cn_welcome_screen' + '&nonce=' + cnWelcomeArgs.nonce + '&screen=1', + type: 'ajax', + width: 1600, + custom_class: 'cn-modal', + // is_locked: true + ajax_success: function() { + progressbar = $( document ).find( '.cn-progressbar' ); + + if ( progressbar ) { + timerId = initProgressBar( progressbar ); + } + }, + before_close: function() { + clearInterval( timerId ); + + var currentStep = $( '.cn-welcome-wrap' ); + + // reload on success screen; set dismissed flag on early close + if ( currentStep.length > 0 ) { + if ( $( currentStep[0] ).hasClass( 'cn-welcome-step-4' ) === true ) { + window.location.reload( true ); + } else { + // user dismissed without completing — suppress future auto-open via ?welcome=1 + $.post( cnWelcomeArgs.ajaxURL, { + action: 'cn_dismiss_welcome', + nonce: cnWelcomeArgs.nonce + } ); + } + } + }, + after_close: function() { + progressbar = $( document ).find( '.cn-progressbar' ); + + $( progressbar ).progressbar( "destroy" ); + } + } ); + + $( modal ).trigger( 'click' ); + + $( document ).on( 'click', '.cn-skip-button', function( e ) { + $( '#modaal-close' ).trigger( 'click' ); + } ); + } + } + + function initProgressBar( progressbar ) { + var progressbarObj, + progressLabel = $( document ).find( '.cn-progress-label' ), + complianceResults = $( document ).find( '.cn-compliance-results' ), + currentProgress = 0, + timerId; + + if ( progressbar ) { + $( document ).on( 'click', '.cn-screen-button', function( e ) { + e.preventDefault(); + + clearInterval( timerId ); + } ); + + $( progressbar ).progressbar( { + value: 5, + max: 100, + create: function( event, ui ) { + timerId = setInterval( function() { + // increment progress bar + currentProgress += 5; + + // update progressbar + progressbar.progressbar( 'value', currentProgress ); + + var lastItem = $( complianceResults ).find( 'div:visible' ).last(), + lastItemText = $( lastItem ).find( '.cn-compliance-status' ).text(); + + $( lastItem ).find( '.cn-compliance-status' ).text( lastItemText + ' .' ); + + switch ( currentProgress ) { + case 15: + $( lastItem ).find( '.cn-compliance-status' ).addClass( 'cn-passed' ).text( cnWelcomeArgs.statusPassed ); + + $( lastItem ).next().slideDown( 200 ); + break; + case 35: + case 55: + case 75: + case 95: + if ( cnWelcomeArgs.complianceStatus === 'active' ) { + $( lastItem ).find( '.cn-compliance-status' ).addClass( 'cn-passed' ).text( cnWelcomeArgs.statusPassed ); + } else { + $( lastItem ).find( '.cn-compliance-status' ).addClass( 'cn-failed' ).text( cnWelcomeArgs.statusFailed ); + } + + $( lastItem ).next().slideDown( 200 ); + break; + case 100: + if ( cnWelcomeArgs.complianceStatus === 'active' ) { + $( lastItem ).find( '.cn-compliance-status' ).addClass( 'cn-passed' ).text( cnWelcomeArgs.statusPassed ); + } else { + $( lastItem ).find( '.cn-compliance-status' ).addClass( 'cn-failed' ).text( cnWelcomeArgs.statusFailed ); + } + break; + } + + // complete + if ( currentProgress >= 100 ) + clearInterval( timerId ); + }, 300 ); + }, + change: function( event, ui ) { + progressLabel.text( progressbar.progressbar( 'value' ) + '%' ); + }, + complete: function( event, ui ) { + setTimeout( function() { + if ( cnWelcomeArgs.complianceStatus ) + $( '.cn-compliance-check' ).find( '.cn-compliance-feedback' ).html( '

    ' + cnWelcomeArgs.compliancePassed + '

    ' ).removeClass( 'cn-hidden' ); + else + $( '.cn-compliance-check' ).find( '.cn-compliance-feedback' ).html( '

    ' + cnWelcomeArgs.complianceFailed + '

    ' ).removeClass( 'cn-hidden' ); + }, 500 ); + } + } ); + + progressbarObj = $( progressbar ).progressbar( "instance" ); + + return timerId; + } + } + + $( document ).on( 'click', '.cn-run-upgrade, .cn-run-welcome', function( e ) { + e.preventDefault(); + + // modal + initModal(); + } ); + + $( document ).ready( function() { + var welcome = false; + + welcome = cnGetUrlParam( 'welcome' ); + + if ( welcome && ! cnWelcomeArgs.dismissed ) { + // modal — suppressed if user previously dismissed without completing + initModal(); + } + } ); + + $( document ).on( 'click', '.cn-sign-up', function( e ) { + e.preventDefault(); + + $( '.cn-screen-button' ).trigger( 'click' ); + } ); + + var cnGetUrlParam = function cnGetUrlParam( parameter ) { + var pageURL = window.location.search.substring( 1 ), + urlVars = pageURL.split( '&' ), + parameterName, + i; + + for ( i = 0; i < urlVars.length; i ++ ) { + parameterName = urlVars[i].split( '=' ); + + if ( parameterName[0] === parameter ) + return typeof parameterName[1] === undefined ? true : decodeURIComponent( parameterName[1] ); + } + + return false; + }; + +} )( jQuery ); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/js/admin.js b/wp-content/plugins/cookie-notice/js/admin.js new file mode 100644 index 0000000..649d43a --- /dev/null +++ b/wp-content/plugins/cookie-notice/js/admin.js @@ -0,0 +1,760 @@ +( function( $ ) { + + // ready event + $( function() { + // initialize color picker + $( '.cn_color' ).wpColorPicker(); + + $( document ).on( 'click', 'input.cn-reset-settings', function() { + return confirm( cnArgs.resetToDefaults ); + } ); + + if ( cnArgs.settingsTab === 'privacy-consent' ) { + var cnListTable = { + displayedSources: [], + sourceContainers: {}, + tableContainers: {}, + + /** + * Initialize list tables. + * + * @param object sources + * + * @return void + */ + init: function( sources ) { + for ( const source in sources ) { + let mainContainter = $( '#cn_privacy_consent_' + source ); + + // update duplicated ids + mainContainter.find( '#the-list' ).attr( 'id', 'the-list-' + source ); + mainContainter.find( '#table-paging' ).attr( 'id', 'table-paging-' + source ); + + if ( sources[source].type === 'dynamic' ) { + // add containers + this.sourceContainers[source] = mainContainter; + this.tableContainers[source] = mainContainter.find( '.cn-privacy-consent-list-table-container' ); + + // load list table only for active (checked) sources + if ( !! sources[source].status && !! sources[source].availability ) + this.display( source ); + } + } + }, + + /** + * Handle clicking functional links. + * + * @param string sourceId + * + * @return void + */ + start: function( sourceId ) { + var that = this; + + this.tableContainers[sourceId].find( '.tablenav-pages a, .manage-column.sortable a, .manage-column.sorted a' ).on( 'click', function( e ) { + e.preventDefault(); + + // remove question mark + var query = this.search.substring( 1 ); + + // prepare data + var data = { + paged: that.query( query, 'paged' ) || 1, + order: that.query( query, 'order' ) || 'asc', + orderby: that.query( query, 'orderby' ) || 'title', + search: that.query( query, 'search' ) || '' + }; + + that.update( sourceId, data ); + } ); + }, + + /** + * Display data for the first time. + * + * @param string sourceId + * + * @return void + */ + display: function( sourceId ) { + // already displayed? + if ( this.displayedSources.includes( sourceId ) ) + return; + + this.displayedSources.push( sourceId ); + + let that = this; + let spinner = this.sourceContainers[sourceId].find( '.tablenav .spinner' ); + + $.ajax( { + url: ajaxurl, + type: 'GET', + dataType: 'json', + data: { + nonce: $( '#cn_privacy_consent_nonce' ).val(), + action: 'cn_privacy_consent_display_table', + source: sourceId + } + } ).done( function( response ) { + try { + if ( response.success ) { + // update list table + that.tableContainers[sourceId].html( response.data ); + + // update duplicated ids + that.tableContainers[sourceId].find( '#the-list' ).attr( 'id', 'the-list-' + sourceId ); + that.tableContainers[sourceId].find( '#table-paging' ).attr( 'id', 'table-paging-' + sourceId ); + + // bind form status handling + that.tableContainers[sourceId].find( 'input.cn-privacy-consent-form-status' ).on( 'change', handleFormStatus ); + + let searchInput = $( '#' + sourceId + '-search-input' ); + let searchButton = $( '#' + sourceId + '-search-submit' ); + + // disallow enter key form submission + searchInput.on( 'keydown', function( e ) { + if ( e.key === 'Enter' ) { + e.preventDefault(); + + searchButton.click(); + // return false; + } + } ); + + // handle searching + searchButton.on( 'click', function( e ) { + e.preventDefault(); + + // remove question mark + var query = this.search.substring( 1 ); + + // prepare data + var data = { + paged: that.query( query, 'paged' ) || 1, + order: that.query( query, 'order' ) || 'asc', + orderby: that.query( query, 'orderby' ) || 'title', + search: searchInput.val() || '' + }; + + that.update( sourceId, data ); + } ); + + that.start( sourceId ); + } else { + console.log( 'Loading source "' + sourceId + '" failed.' ); + } + } catch ( e ) { + console.log( 'Loading source "' + sourceId + '" failed.' ); + } + } ).always( function() { + // hide spinner + spinner.removeClass( 'is-active' ); + + // enable list table + that.tableContainers[sourceId].find( 'table' ).removeClass( 'loading' ); + } ); + }, + + /** + * AJAX request to get source data. + * + * @param string sourceId + * @param object data + * + * @return void + */ + update: function( sourceId, data ) { + let that = this; + let spinner = this.sourceContainers[sourceId].find( '.tablenav .spinner' ); + + // display spinner + spinner.addClass( 'is-active' ); + + // disable list table + this.tableContainers[sourceId].find( 'table' ).addClass( 'loading' ); + + $.ajax( { + url: ajaxurl, + type: 'GET', + data: { + nonce: $( '#cn_privacy_consent_nonce' ).val(), + action: 'cn_privacy_consent_get_forms', + source: sourceId, + paged: data.paged, + order: data.order, + orderby: data.orderby, + search: data.search + } + } ).done( function( response ) { + try { + if ( response.success ) { + if ( response.data.rows.length ) + that.sourceContainers[sourceId].find( 'tbody' ).html( response.data.rows ); + + if ( response.data.column_headers.length ) + that.sourceContainers[sourceId].find( 'thead tr, tfoot tr' ).html( response.data.column_headers ); + + if ( response.data.pagination.length ) { + that.sourceContainers[sourceId].find( '.tablenav.bottom .tablenav-pages' ).html( $( response.data.pagination ).html() ); + that.sourceContainers[sourceId].find( '#table-paging' ).attr( 'id', 'table-paging-' + sourceId ); + } + + // bind form status handling + that.tableContainers[sourceId].find( 'input.cn-privacy-consent-form-status' ).on( 'change', handleFormStatus ); + + that.start( sourceId ); + } else { + console.log( 'FAILED' ); + } + } catch ( e ) { + console.log( 'FAILED' ); + } + } ).always( function() { + // hide spinner + spinner.removeClass( 'is-active' ); + + // enable list table + that.tableContainers[sourceId].find( 'table' ).removeClass( 'loading' ); + } ); + }, + + /** + * Filter the URL Query to extract variables. + * + * @param string query + * @param string variable + * + * @return string|bool + */ + query: function( query, variable ) { + var vars = query.split( '&' ); + + for ( var i = 0; i < vars.length; i++ ) { + var pair = vars[i].split( '=' ); + + if ( pair[0] === variable ) + return pair[1]; + } + + return false; + } + } + + // any privacy consent sources? + if ( cnArgs.privacyConsentSources ) { + // initialize list tables + cnListTable.init( cnArgs.privacyConsentSources ); + + // handle every single static form status + for ( const source in cnArgs.privacyConsentSources ) { + if ( cnArgs.privacyConsentSources[source].type === 'static' ) { + $( '#cn_privacy_consent_' + cnArgs.privacyConsentSources[source].id ).find( 'input.cn-privacy-consent-form-status' ).on( 'change', handleFormStatus ); + } + } + + // privacy consent source status + $( 'input.cn-privacy-consent-status' ).on( 'change', function() { + let checkbox = $( this ); + + if ( checkbox.is( ':checked' ) ) { + let source = checkbox.data( 'source' ); + + checkbox.closest( 'fieldset' ).find( '.cn-privacy-consent-options-container' ).slideDown( 'fast' ); + + // dynamic source? + if ( cnArgs.privacyConsentSources[source].type === 'dynamic' ) + cnListTable.display( source ); + } else + checkbox.closest( 'fieldset' ).find( '.cn-privacy-consent-options-container' ).slideUp( 'fast' ); + } ); + + // privacy consent active type + $( 'input.cn-privacy-consent-active-type' ).on( 'change', function( e ) { + let radio = $( e.target ); + let target = radio.closest( 'fieldset' ).find( '.cn-privacy-consent-list-table-container' ); + let value = $( '[name="' + $( radio ).attr('name') + '"]:checked' ).val(); + + if ( target.length > 0 ) { + if ( value === 'all' ) { + target.addClass( 'apply-all' ); + target.removeClass( 'apply-selected' ); + } else { + target.addClass( 'apply-selected' ); + target.removeClass( 'apply-all' ); + } + } + } ); + } + + function handleFormStatus() { + let el = $( this ); + + // disable list table + el.closest( 'table' ).addClass( 'loading' ); + + $.post( ajaxurl, { + action: 'cn_privacy_consent_form_status', + form_id: el.data( 'form_id' ), + source: el.data( 'source' ), + status: el.is( ':checked' ) ? 1 : 0, + nonce: cnArgs.noncePrivacyConsent + } ).done( function( data ) { + // + } ).always( function() { + // enable list table + el.closest( 'table' ).removeClass( 'loading' ); + } ); + } + } else if ( cnArgs.settingsTab === 'consent-logs' ) { + function handleListTablePagination( container, perPage ) { + let paginationLinks = container.find( '.pagination-links' ); + let firstPageButton = paginationLinks.find( '.first-page' ); + let lastPageButton = paginationLinks.find( '.last-page' ); + let nextPageButton = paginationLinks.find( '.next-page' ); + let prevPageButton = paginationLinks.find( '.prev-page' ); + let currentPageEl = paginationLinks.find( '.current-page' ); + let totalNumberofPages = parseInt( paginationLinks.data( 'total' ) ) || 1; + + // get table body + var tableBody = container.find( 'table tbody' ); + + // prepare array with table rows + var dataRows = container.find( 'table' ).find( 'tbody tr' ).toArray(); + + // set flag + var firstTime = true; + + // add pagination + container.pagination( { + dataSource: dataRows, + pageSize: perPage, + showNavigator: false, + showPrevious: false, + showNext: false, + showPageNumbers: false, + callback: function( data, pagination ) { + // skip showing/hiding table rows on init + if ( firstTime ) { + firstTime = false; + + return; + } + + // hide all table rows + tableBody.find( 'tr' ).hide(); + + // display table rows + for ( const el of data ) { + $( el ).show(); + } + } + } ); + + // handle first page + firstPageButton.on( 'click', function( e ) { + e.preventDefault(); + + firstPageButton.addClass( 'disabled' ); + lastPageButton.removeClass( 'disabled' ); + nextPageButton.removeClass( 'disabled' ); + prevPageButton.addClass( 'disabled' ); + + container.pagination( 'go', 1 ); + + currentPageEl.html( 1 ); + } ); + + // handle last page + lastPageButton.on( 'click', function( e ) { + e.preventDefault(); + + firstPageButton.removeClass( 'disabled' ); + lastPageButton.addClass( 'disabled' ); + nextPageButton.addClass( 'disabled' ); + prevPageButton.removeClass( 'disabled' ); + + container.pagination( 'go', totalNumberofPages ); + + currentPageEl.html( totalNumberofPages ); + } ); + + // handle next page + nextPageButton.on( 'click', function( e ) { + e.preventDefault(); + + firstPageButton.removeClass( 'disabled' ); + prevPageButton.removeClass( 'disabled' ); + + container.pagination( 'next' ); + + let currentPage = container.pagination( 'getCurrentPageNum' ); + + currentPageEl.html( currentPage ); + + if ( currentPage === totalNumberofPages ) { + lastPageButton.addClass( 'disabled' ); + nextPageButton.addClass( 'disabled' ); + } + } ); + + // handle previous page + prevPageButton.on( 'click', function( e ) { + e.preventDefault(); + + lastPageButton.removeClass( 'disabled' ); + nextPageButton.removeClass( 'disabled' ); + + container.pagination( 'previous' ); + + let currentPage = container.pagination( 'getCurrentPageNum' ); + + currentPageEl.html( currentPage ); + + if ( currentPage === 1 ) { + firstPageButton.addClass( 'disabled' ); + prevPageButton.addClass( 'disabled' ); + } + } ); + } + + if ( cnArgs.settingsSection === 'cookie' ) { + // consent logs + $( '.cn-consent-log-item input[type="checkbox"]' ).on( 'change', function() { + var el = $( this ); + var trEl = el.closest( 'tr' ); + var trDetailsId = trEl.attr( 'id' ) + '_details'; + var trDetailsIdHash = '#' + trDetailsId; + var trDetailsRow = trEl.attr( 'id' ) + '_row'; + + if ( el.is( ':checked' ) ) { + // remove fake row + $( '#' + trDetailsRow ).remove(); + + // valid data already downloaded? + if ( $( trDetailsIdHash ).length && $( trDetailsIdHash ).data( 'status' ) === 1 ) { + $( trDetailsIdHash ).show(); + } else { + var trDetailsDataEl = null; + + if ( $( trDetailsIdHash ).length ) { + $( trDetailsIdHash ).show(); + + trDetailsDataEl = $( trDetailsIdHash + ' .cn-consent-logs-data' ); + + trDetailsDataEl.addClass( 'loading' ); + trDetailsDataEl.html( '' ); + } else { + trEl.after( cnArgs.consentLogsTemplate ); + trEl.next().attr( 'id', trDetailsId ); + + trDetailsDataEl = $( trDetailsIdHash + ' .cn-consent-logs-data' ); + } + + $.ajax( { + url: cnArgs.ajaxURL, + type: 'POST', + dataType: 'json', + data: { + action: 'cn_get_cookie_consent_logs', + nonce: cnArgs.nonceCookieConsentLogs, + date: el.closest( 'tr' ).data( 'date' ) + } + } ).done( function( result ) { + if ( result.success ) { + // set success status + $( trDetailsIdHash ).data( 'status', 1 ); + + // add table rows or display error + trDetailsDataEl.find( '.spinner' ).replaceWith( result.data ); + + // update duplicated ids + trDetailsDataEl.find( '#the-list' ).attr( 'id', 'the-list-' + trEl.data( 'date' ) ); + + // bind pagination script + handleListTablePagination( trDetailsDataEl, 10 ); + } else { + // set failed status + $( trDetailsIdHash ).data( 'status', 0 ); + + // display error + trDetailsDataEl.find( '.spinner' ).replaceWith( cnArgs.consentLogsError ); + } + } ).fail( function( result ) { + // set failed status + $( trDetailsIdHash ).data( 'status', 0 ); + + // display error + trDetailsDataEl.find( '.spinner' ).replaceWith( cnArgs.consentLogsError ); + } ).always( function( result ) { + // hide spinner + trDetailsDataEl.removeClass( 'loading' ); + } ); + } + } else { + $( trDetailsIdHash ).hide(); + $( trDetailsIdHash ).after( '' ); + } + } ); + } else if ( cnArgs.settingsSection === 'privacy' ) { + let container = $( '.cn-privacy-consent-logs-data' ); + + $.ajax( { + url: ajaxurl, + type: 'POST', + dataType: 'json', + data: { + nonce: cnArgs.noncePrivacyConsentLogs, + action: 'cn_get_privacy_consent_logs' + } + } ).done( function( result ) { + if ( result.success ) { + // update list table + container.html( result.data ); + + // bind pagination script + handleListTablePagination( container, 20 ); + } else { + // display error + container.find( '.spinner' ).replaceWith( cnArgs.consentLogsError ); + } + } ).fail( function() { + // display error + container.find( '.spinner' ).replaceWith( cnArgs.consentLogsError ); + } ).always( function() { + // hide spinner + container.find( 'table' ).removeClass( 'loading' ); + } ); + } + } else if ( cnArgs.settingsTab === 'settings' ) { + // purge cache + $( '#cn_app_purge_cache a' ).on( 'click', function( e ) { + e.preventDefault(); + + var el = this; + + $( el ).parent().addClass( 'loading' ).append( '' ); + + var ajaxArgs = { + action: 'cn_purge_cache', + nonce: cnArgs.nonce + }; + + // network area? + if ( cnArgs.network ) + ajaxArgs.cn_network = 1; + + $.ajax( { + url: cnArgs.ajaxURL, + type: 'POST', + dataType: 'json', + data: ajaxArgs + } ).always( function( result ) { + $( el ).parent().find( '.spinner' ).remove(); + } ); + } ); + + // global override + $( 'input[name="cookie_notice_options[global_override]"]' ).on( 'change', function() { + $( '.cookie-notice-settings form' ).toggleClass( 'cn-options-disabled' ); + } ); + + // refuse option + $( '#cn_refuse_opt' ).on( 'change', function() { + if ( $( this ).is( ':checked' ) ) + $( '#cn_refuse_opt_container' ).slideDown( 'fast' ); + else + $( '#cn_refuse_opt_container' ).slideUp( 'fast' ); + } ); + + // revoke option + $( '#cn_revoke_cookies' ).on( 'change', function() { + if ( $( this ).is( ':checked' ) ) + $( '#cn_revoke_opt_container' ).slideDown( 'fast' ); + else + $( '#cn_revoke_opt_container' ).slideUp( 'fast' ); + } ); + + // privacy policy option + $( '#cn_see_more' ).on( 'change', function() { + if ( $( this ).is( ':checked' ) ) + $( '#cn_see_more_opt' ).slideDown( 'fast' ); + else + $( '#cn_see_more_opt' ).slideUp( 'fast' ); + } ); + + // on scroll option + $( '#cn_on_scroll' ).on( 'change', function() { + if ( $( this ).is( ':checked' ) ) + $( '#cn_on_scroll_offset' ).slideDown( 'fast' ); + else + $( '#cn_on_scroll_offset' ).slideUp( 'fast' ); + } ); + + // conditional display option + $( '#cn_conditional_display_opt' ).on( 'change', function() { + if ( $( this ).is( ':checked' ) ) + $( '#cn_conditional_display_opt_container' ).slideDown( 'fast' ); + else + $( '#cn_conditional_display_opt_container' ).slideUp( 'fast' ); + } ); + + // privacy policy link + $( '#cn_see_more_link-custom, #cn_see_more_link-page' ).on( 'change', function() { + if ( $( '#cn_see_more_link-custom:checked' ).val() === 'custom' ) { + $( '#cn_see_more_opt_page' ).slideUp( 'fast', function() { + $( '#cn_see_more_opt_link' ).slideDown( 'fast' ); + } ); + } else if ( $( '#cn_see_more_link-page:checked' ).val() === 'page' ) { + $( '#cn_see_more_opt_link' ).slideUp( 'fast', function() { + $( '#cn_see_more_opt_page' ).slideDown( 'fast' ); + } ); + } + } ); + + // script blocking + $( '#cn_refuse_code_fields' ).find( 'a' ).on( 'click', function( e ) { + e.preventDefault(); + + $( '#cn_refuse_code_fields' ).find( 'a' ).removeClass( 'nav-tab-active' ); + $( '.refuse-code-tab' ).removeClass( 'active' ); + + var id = $( this ).attr( 'id' ).replace( '-tab', '' ); + + $( '#' + id ).addClass( 'active' ); + $( this ).addClass( 'nav-tab-active' ); + } ); + + // add new group of rules + $( document ).on( 'click', '.add-rule-group', function( e ) { + e.preventDefault(); + + var html = $( '#rules-group-template' ).html(); + var group = $( '#rules-groups' ); + var groups = group.find( '.rules-group' ); + var groupID = ( groups.length > 0 ? parseInt( groups.last().attr( 'id' ).split( '-' )[2] ) + 1 : 1 ); + + html = html.replace( /__GROUP_ID__/g, groupID ); + html = html.replace( /__RULE_ID__/g, 1 ); + + group.append( '
    ' + html + '
    ' ); + group.find( '.rules-group' ).last().fadeIn( 'fast' ); + } ); + + // remove single rule or group + $( document ).on( 'click', '.remove-rule', function( e ) { + e.preventDefault(); + + var number = $( this ).closest( 'tbody' ).find( 'tr' ).length; + + if ( number === 1 ) { + $( this ).closest( '.rules-group' ).fadeOut( 'fast', function() { + $( this ).remove(); + } ); + } else { + $( this ).closest( 'tr' ).fadeOut( 'fast', function() { + $( this ).remove(); + } ); + } + } ); + + // handle changing values for specified type of rules + $( document ).on( 'change', '.rule-type', function() { + var el = $( this ); + var td = el.closest( 'tr' ).find( 'td.value' ); + var select = td.find( 'select' ); + var spinner = td.find( '.spinner' ); + + select.hide(); + spinner.fadeIn( 'fast' ).css( 'visibility', 'visible' ); + + $.post( ajaxurl, { + action: 'cn-get-group-rules-values', + cn_param: el.val(), + cn_nonce: cnArgs.nonceConditional + } ).done( function( data ) { + spinner.hide().css( 'visibility', 'hidden' ); + + try { + var response = $.parseJSON( data ); + + // remove potential optgroups + select.find( 'optgroup' ).remove(); + + // replace old select options with new ones + select.fadeIn( 'fast' ).find( 'option' ).remove().end().append( response.select ); + } catch( e ) { + // + } + } ).fail( function() { + // + } ); + } ); + } + + // sync configuration button + $( document ).on( 'click', '.cn-sync-config-btn', function( e ) { + e.preventDefault(); + + var button = $( this ); + var container = $( '#cn_sync_config' ); + var spinner = container.find( '.cn-sync-spinner' ); + var statusEl = container.find( '.cn-sync-status' ); + var messageEl = container.find( '.cn-sync-message' ); + + // disable button and show spinner + button.prop( 'disabled', true ); + spinner.addClass( 'is-active' ); + messageEl.hide().removeClass( 'notice notice-success notice-error' ); + + // make AJAX request + $.ajax( { + url: cnArgs.ajaxURL, + type: 'POST', + dataType: 'json', + data: { + action: 'cn_api_request', + request: 'sync_config', + nonce: cnArgs.nonceSyncConfig, + cn_network: cnArgs.network ? 1 : 0 + } + } ).done( function( response ) { + if ( response && response.success ) { + // update last synced timestamp + if ( response.timestamp ) { + var date = new Date( response.timestamp.replace( /-/g, '/' ) ); + var dateOptions = { year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit' }; + var formattedDate = date.toLocaleString( undefined, dateOptions ); + statusEl.text( 'Last synced: ' + formattedDate ); + } + + // show success message + messageEl.html( '

    ' + ( response.message || 'Configuration synced successfully.' ) + '

    ' ) + .addClass( 'notice notice-success' ) + .fadeIn( 'fast' ); + + // hide message after 5 seconds + setTimeout( function() { + messageEl.fadeOut( 'slow' ); + }, 5000 ); + } else { + // show error message + var errorMsg = response && response.error ? response.error : 'Failed to sync configuration. Please try again.'; + messageEl.html( '

    ' + errorMsg + '

    ' ) + .addClass( 'notice notice-error' ) + .fadeIn( 'fast' ); + } + } ).fail( function( jqXHR, textStatus, errorThrown ) { + // show error message + messageEl.html( '

    An error occurred while syncing configuration. Please try again.

    ' ) + .addClass( 'notice notice-error' ) + .fadeIn( 'fast' ); + } ).always( function() { + // re-enable button and hide spinner + button.prop( 'disabled', false ); + spinner.removeClass( 'is-active' ); + } ); + } ); + } ); + +} )( jQuery ); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/js/admin.min.js b/wp-content/plugins/cookie-notice/js/admin.min.js new file mode 100644 index 0000000..580e7c6 --- /dev/null +++ b/wp-content/plugins/cookie-notice/js/admin.min.js @@ -0,0 +1 @@ +!function(e){e(function(){if(e(".cn_color").wpColorPicker(),e(document).on("click","input.cn-reset-settings",function(){return confirm(cnArgs.resetToDefaults)}),"privacy-consent"===cnArgs.settingsTab){var n={displayedSources:[],sourceContainers:{},tableContainers:{},init:function(n){for(const t in n){let a=e("#cn_privacy_consent_"+t);a.find("#the-list").attr("id","the-list-"+t),a.find("#table-paging").attr("id","table-paging-"+t),"dynamic"===n[t].type&&(this.sourceContainers[t]=a,this.tableContainers[t]=a.find(".cn-privacy-consent-list-table-container"),n[t].status&&n[t].availability&&this.display(t))}},start:function(e){var n=this;this.tableContainers[e].find(".tablenav-pages a, .manage-column.sortable a, .manage-column.sorted a").on("click",function(t){t.preventDefault();var a=this.search.substring(1),s={paged:n.query(a,"paged")||1,order:n.query(a,"order")||"asc",orderby:n.query(a,"orderby")||"title",search:n.query(a,"search")||""};n.update(e,s)})},display:function(n){if(this.displayedSources.includes(n))return;this.displayedSources.push(n);let a=this,s=this.sourceContainers[n].find(".tablenav .spinner");e.ajax({url:ajaxurl,type:"GET",dataType:"json",data:{nonce:e("#cn_privacy_consent_nonce").val(),action:"cn_privacy_consent_display_table",source:n}}).done(function(s){try{if(s.success){a.tableContainers[n].html(s.data),a.tableContainers[n].find("#the-list").attr("id","the-list-"+n),a.tableContainers[n].find("#table-paging").attr("id","table-paging-"+n),a.tableContainers[n].find("input.cn-privacy-consent-form-status").on("change",t);let i=e("#"+n+"-search-input"),o=e("#"+n+"-search-submit");i.on("keydown",function(e){"Enter"===e.key&&(e.preventDefault(),o.click())}),o.on("click",function(e){e.preventDefault();var t=this.search.substring(1),s={paged:a.query(t,"paged")||1,order:a.query(t,"order")||"asc",orderby:a.query(t,"orderby")||"title",search:i.val()||""};a.update(n,s)}),a.start(n)}else console.log('Loading source "'+n+'" failed.')}catch(e){console.log('Loading source "'+n+'" failed.')}}).always(function(){s.removeClass("is-active"),a.tableContainers[n].find("table").removeClass("loading")})},update:function(n,a){let s=this,i=this.sourceContainers[n].find(".tablenav .spinner");i.addClass("is-active"),this.tableContainers[n].find("table").addClass("loading"),e.ajax({url:ajaxurl,type:"GET",data:{nonce:e("#cn_privacy_consent_nonce").val(),action:"cn_privacy_consent_get_forms",source:n,paged:a.paged,order:a.order,orderby:a.orderby,search:a.search}}).done(function(a){try{a.success?(a.data.rows.length&&s.sourceContainers[n].find("tbody").html(a.data.rows),a.data.column_headers.length&&s.sourceContainers[n].find("thead tr, tfoot tr").html(a.data.column_headers),a.data.pagination.length&&(s.sourceContainers[n].find(".tablenav.bottom .tablenav-pages").html(e(a.data.pagination).html()),s.sourceContainers[n].find("#table-paging").attr("id","table-paging-"+n)),s.tableContainers[n].find("input.cn-privacy-consent-form-status").on("change",t),s.start(n)):console.log("FAILED")}catch(e){console.log("FAILED")}}).always(function(){i.removeClass("is-active"),s.tableContainers[n].find("table").removeClass("loading")})},query:function(e,n){for(var t=e.split("&"),a=0;a0&&("all"===s?(a.addClass("apply-all"),a.removeClass("apply-selected")):(a.addClass("apply-selected"),a.removeClass("apply-all")))})}function t(){let n=e(this);n.closest("table").addClass("loading"),e.post(ajaxurl,{action:"cn_privacy_consent_form_status",form_id:n.data("form_id"),source:n.data("source"),status:n.is(":checked")?1:0,nonce:cnArgs.noncePrivacyConsent}).done(function(e){}).always(function(){n.closest("table").removeClass("loading")})}}else if("consent-logs"===cnArgs.settingsTab){function a(n,t){let a=n.find(".pagination-links"),s=a.find(".first-page"),i=a.find(".last-page"),o=a.find(".next-page"),c=a.find(".prev-page"),r=a.find(".current-page"),l=parseInt(a.data("total"))||1;var d=n.find("table tbody"),p=n.find("table").find("tbody tr").toArray(),u=!0;n.pagination({dataSource:p,pageSize:t,showNavigator:!1,showPrevious:!1,showNext:!1,showPageNumbers:!1,callback:function(n,t){if(u)u=!1;else{d.find("tr").hide();for(const t of n)e(t).show()}}}),s.on("click",function(e){e.preventDefault(),s.addClass("disabled"),i.removeClass("disabled"),o.removeClass("disabled"),c.addClass("disabled"),n.pagination("go",1),r.html(1)}),i.on("click",function(e){e.preventDefault(),s.removeClass("disabled"),i.addClass("disabled"),o.addClass("disabled"),c.removeClass("disabled"),n.pagination("go",l),r.html(l)}),o.on("click",function(e){e.preventDefault(),s.removeClass("disabled"),c.removeClass("disabled"),n.pagination("next");let t=n.pagination("getCurrentPageNum");r.html(t),t===l&&(i.addClass("disabled"),o.addClass("disabled"))}),c.on("click",function(e){e.preventDefault(),i.removeClass("disabled"),o.removeClass("disabled"),n.pagination("previous");let t=n.pagination("getCurrentPageNum");r.html(t),1===t&&(s.addClass("disabled"),c.addClass("disabled"))})}if("cookie"===cnArgs.settingsSection)e('.cn-consent-log-item input[type="checkbox"]').on("change",function(){var n=e(this),t=n.closest("tr"),s=t.attr("id")+"_details",i="#"+s,o=t.attr("id")+"_row";if(n.is(":checked"))if(e("#"+o).remove(),e(i).length&&1===e(i).data("status"))e(i).show();else{var c=null;e(i).length?(e(i).show(),(c=e(i+" .cn-consent-logs-data")).addClass("loading"),c.html('')):(t.after(cnArgs.consentLogsTemplate),t.next().attr("id",s),c=e(i+" .cn-consent-logs-data")),e.ajax({url:cnArgs.ajaxURL,type:"POST",dataType:"json",data:{action:"cn_get_cookie_consent_logs",nonce:cnArgs.nonceCookieConsentLogs,date:n.closest("tr").data("date")}}).done(function(n){n.success?(e(i).data("status",1),c.find(".spinner").replaceWith(n.data),c.find("#the-list").attr("id","the-list-"+t.data("date")),a(c,10)):(e(i).data("status",0),c.find(".spinner").replaceWith(cnArgs.consentLogsError))}).fail(function(n){e(i).data("status",0),c.find(".spinner").replaceWith(cnArgs.consentLogsError)}).always(function(e){c.removeClass("loading")})}else e(i).hide(),e(i).after('')});else if("privacy"===cnArgs.settingsSection){let i=e(".cn-privacy-consent-logs-data");e.ajax({url:ajaxurl,type:"POST",dataType:"json",data:{nonce:cnArgs.noncePrivacyConsentLogs,action:"cn_get_privacy_consent_logs"}}).done(function(e){e.success?(i.html(e.data),a(i,20)):i.find(".spinner").replaceWith(cnArgs.consentLogsError)}).fail(function(){i.find(".spinner").replaceWith(cnArgs.consentLogsError)}).always(function(){i.find("table").removeClass("loading")})}}else"settings"===cnArgs.settingsTab&&(e("#cn_app_purge_cache a").on("click",function(n){n.preventDefault();var t=this;e(t).parent().addClass("loading").append('');var a={action:"cn_purge_cache",nonce:cnArgs.nonce};cnArgs.network&&(a.cn_network=1),e.ajax({url:cnArgs.ajaxURL,type:"POST",dataType:"json",data:a}).always(function(n){e(t).parent().find(".spinner").remove()})}),e('input[name="cookie_notice_options[global_override]"]').on("change",function(){e(".cookie-notice-settings form").toggleClass("cn-options-disabled")}),e("#cn_refuse_opt").on("change",function(){e(this).is(":checked")?e("#cn_refuse_opt_container").slideDown("fast"):e("#cn_refuse_opt_container").slideUp("fast")}),e("#cn_revoke_cookies").on("change",function(){e(this).is(":checked")?e("#cn_revoke_opt_container").slideDown("fast"):e("#cn_revoke_opt_container").slideUp("fast")}),e("#cn_see_more").on("change",function(){e(this).is(":checked")?e("#cn_see_more_opt").slideDown("fast"):e("#cn_see_more_opt").slideUp("fast")}),e("#cn_on_scroll").on("change",function(){e(this).is(":checked")?e("#cn_on_scroll_offset").slideDown("fast"):e("#cn_on_scroll_offset").slideUp("fast")}),e("#cn_conditional_display_opt").on("change",function(){e(this).is(":checked")?e("#cn_conditional_display_opt_container").slideDown("fast"):e("#cn_conditional_display_opt_container").slideUp("fast")}),e("#cn_see_more_link-custom, #cn_see_more_link-page").on("change",function(){"custom"===e("#cn_see_more_link-custom:checked").val()?e("#cn_see_more_opt_page").slideUp("fast",function(){e("#cn_see_more_opt_link").slideDown("fast")}):"page"===e("#cn_see_more_link-page:checked").val()&&e("#cn_see_more_opt_link").slideUp("fast",function(){e("#cn_see_more_opt_page").slideDown("fast")})}),e("#cn_refuse_code_fields").find("a").on("click",function(n){n.preventDefault(),e("#cn_refuse_code_fields").find("a").removeClass("nav-tab-active"),e(".refuse-code-tab").removeClass("active");var t=e(this).attr("id").replace("-tab","");e("#"+t).addClass("active"),e(this).addClass("nav-tab-active")}),e(document).on("click",".add-rule-group",function(n){n.preventDefault();var t=e("#rules-group-template").html(),a=e("#rules-groups"),s=a.find(".rules-group"),i=s.length>0?parseInt(s.last().attr("id").split("-")[2])+1:1;t=(t=t.replace(/__GROUP_ID__/g,i)).replace(/__RULE_ID__/g,1),a.append('
    '+t+"
    "),a.find(".rules-group").last().fadeIn("fast")}),e(document).on("click",".remove-rule",function(n){n.preventDefault(),1===e(this).closest("tbody").find("tr").length?e(this).closest(".rules-group").fadeOut("fast",function(){e(this).remove()}):e(this).closest("tr").fadeOut("fast",function(){e(this).remove()})}),e(document).on("change",".rule-type",function(){var n=e(this),t=n.closest("tr").find("td.value"),a=t.find("select"),s=t.find(".spinner");a.hide(),s.fadeIn("fast").css("visibility","visible"),e.post(ajaxurl,{action:"cn-get-group-rules-values",cn_param:n.val(),cn_nonce:cnArgs.nonceConditional}).done(function(n){s.hide().css("visibility","hidden");try{var t=e.parseJSON(n);a.find("optgroup").remove(),a.fadeIn("fast").find("option").remove().end().append(t.select)}catch(e){}}).fail(function(){})}));e(document).on("click",".cn-sync-config-btn",function(n){n.preventDefault();var t=e(this),a=e("#cn_sync_config"),s=a.find(".cn-sync-spinner"),i=a.find(".cn-sync-status"),o=a.find(".cn-sync-message");t.prop("disabled",!0),s.addClass("is-active"),o.hide().removeClass("notice notice-success notice-error"),e.ajax({url:cnArgs.ajaxURL,type:"POST",dataType:"json",data:{action:"cn_api_request",request:"sync_config",nonce:cnArgs.nonceSyncConfig,cn_network:cnArgs.network?1:0}}).done(function(e){if(e&&e.success){if(e.timestamp){var n=new Date(e.timestamp.replace(/-/g,"/")).toLocaleString(void 0,{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"});i.text("Last synced: "+n)}o.html("

    "+(e.message||"Configuration synced successfully.")+"

    ").addClass("notice notice-success").fadeIn("fast"),setTimeout(function(){o.fadeOut("slow")},5e3)}else{var t=e&&e.error?e.error:"Failed to sync configuration. Please try again.";o.html("

    "+t+"

    ").addClass("notice notice-error").fadeIn("fast")}}).fail(function(e,n,t){o.html("

    An error occurred while syncing configuration. Please try again.

    ").addClass("notice notice-error").fadeIn("fast")}).always(function(){t.prop("disabled",!1),s.removeClass("is-active")})})})}(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/js/front-welcome.js b/wp-content/plugins/cookie-notice/js/front-welcome.js new file mode 100644 index 0000000..5e97c7f --- /dev/null +++ b/wp-content/plugins/cookie-notice/js/front-welcome.js @@ -0,0 +1,475 @@ +( function ( $ ) { + + // ready event + $( function () { + var huObject = null; + var cnHiddenElements = {}; + + // listen for the load + document.addEventListener( 'load.hu', function ( e ) { + // get valid hu object + for ( const object of ['__hu', 'hu'] ) { + // check global variable + if ( typeof window[object] !== 'undefined' && window[object].hasOwnProperty( 'earlyInit' ) && typeof window[object].earlyInit === 'function' ) { + huObject = window[object]; + // no need to check again + break; + } + } + + // set widget text strings + huObject.setTexts( cnFrontWelcome.textStrings ); + } ); + + // listen for the destroy + document.addEventListener( 'destroy.hu', function ( e ) { + var customOptions = {}; + + var revoke_option = $( parent.document ).find( 'input[name="cn_revoke_consent"]' ); + + if ( revoke_option.length > 0 ) { + var value = $( revoke_option[0] ).is( ':checked' ); + + if ( value === false ) { + // reload with a delay + setTimeout( + function () { + huObject.reload(); + }, 2000 + ); + } + $.extend( customOptions.config, {revokeConsent: value} ); + }; + + // set widget options + huObject.setOptions( customOptions ); + } ); + + // listen for the reload + document.addEventListener( 'reload.hu', function ( e ) { + var container = $( '#hu' ); + var customOptions = {config: { + dontSellLink: true, + privacyPolicyLink: true + }}; + + // loop through checkbox options + var checkboxFields = { + onScroll: $( parent.document ).find( 'input[name="cn_on_scroll"]' ), + onClick: $( parent.document ).find( 'input[name="cn_on_click"]' ), + uiBlocking: $( parent.document ).find( 'input[name="cn_ui_blocking"]' ), + revokeConsent: $( parent.document ).find( 'input[name="cn_revoke_consent"]' ) + }; + + $.each( checkboxFields, function ( key, items ) { + var value = false; + + if ( items.length > 0 ) { + value = $( items[0] ).is( ':checked' ); + } + + $.extend( customOptions.config, {[key]: value} ); + } ); + + // set widget options + huObject.setOptions( customOptions ); + } ); + + // listen for the display + document.addEventListener( 'display.hu', function ( e ) { + var val = []; + var container = $( '#hu' ); + var customOptions = {config: { + // make it empty + }}; + + $( parent.document ).find( 'input[name="cn_laws"]:checked' ).each( function () { + val.push( $( this ).val() ); + } ); + + if ( $.inArray( 'ccpa', val ) !== - 1 || $.inArray( 'otherus', val ) !== - 1 ) { + var htmlElement = $( $( container ).find( '#hu-cookies-notice-dontsell-btn' ).parent() ); + + if ( htmlElement.length === 0 ) { + $( '#hu-policy-links' ).append( cnHiddenElements.ccpa ); + + delete cnHiddenElements.ccpa; + } + + $.extend( customOptions.config, {dontSellLink: true} ); + } else { + var htmlElement = $( $( container ).find( '#hu-cookies-notice-dontsell-btn' ).parent() ); + + // add to hidden elements + if ( htmlElement ) { + cnHiddenElements['ccpa'] = htmlElement; + + // remove el + $( htmlElement ).remove(); + } + + $.extend( customOptions.config, {dontSellLink: false} ); + } + + // loop through checkbox options + var checkboxFields = { + onScroll: $( parent.document ).find( 'input[name="cn_on_scroll"]' ), + onClick: $( parent.document ).find( 'input[name="cn_on_click"]' ), + uiBlocking: $( parent.document ).find( 'input[name="cn_ui_blocking"]' ), + revokeConsent: $( parent.document ).find( 'input[name="cn_revoke_consent"]' ) + }; + + $.each( checkboxFields, function ( key, items ) { + var value = false; + + if ( items.length > 0 ) { + value = $( items[0] ).is( ':checked' ); + } + + $.extend( customOptions.config, {[key]: value} ); + } ); + + // set widget options + huObject.setOptions( customOptions ); + } ); + + // listen for the parent + window.addEventListener( 'message', function ( event ) { + var iframe = $( parent.document ).find( '#cn_iframe_id' ); + var form = $( parent.document ).find( '#cn-form-configure' ); + + // add spinner + $( iframe ).closest( '.has-loader' ).addClass( 'cn-loading' ).append( '' ); + + // lock options + $( form ).addClass( 'cn-form-disabled' ); + + // emit loader + window.setTimeout( function () { + if ( typeof event.data == 'object' ) { + var container = $( '#hu' ); + var option = event.data.call; + var customOptions = {}; + var customTexts = {}; + var reload = false; + + switch ( option ) { + case 'position': + $( container ).removeClass( 'hu-position-bottom hu-position-top hu-position-left hu-position-right hu-position-center' ); + $( container ).addClass( 'hu-position-' + event.data.value ); + + customOptions = {design: {position: event.data.value}} + break; + + case 'naming': + var level1 = $( '.hu-cookies-notice-consent-choices-1' ); + var level2 = $( '.hu-cookies-notice-consent-choices-2' ); + var level3 = $( '.hu-cookies-notice-consent-choices-3' ); + var text1 = cnFrontWelcome.levelNames[event.data.value][1]; + var text2 = cnFrontWelcome.levelNames[event.data.value][2]; + var text3 = cnFrontWelcome.levelNames[event.data.value][3]; + + // apply text to dom elements + $( level1 ).find( '.hu-toggle-label' ).text( text1 ); + $( level2 ).find( '.hu-toggle-label' ).text( text2 ); + $( level3 ).find( '.hu-toggle-label' ).text( text3 ); + + // apply text to text strings + customTexts = { + levelNameText_1: text1, + levelNameText_2: text2, + levelNameText_3: text3 + } + break; + + case 'laws': + customOptions.config = {} + + if ( $.inArray( 'ccpa', event.data.value ) !== - 1 || $.inArray( 'otherus', event.data.value ) !== - 1 ) { + var htmlElement = $( container ).find( '#hu-cookies-notice-dontsell-btn' ).parent(); + + if ( htmlElement.length === 0 ) { + $( '#hu-policy-links' ).append( cnHiddenElements.ccpa ); + + delete cnHiddenElements.ccpa; + } + + $.extend( customOptions.config, {dontSellLink: true} ); + } else { + var htmlElement = $( container ).find( '#hu-cookies-notice-dontsell-btn' ).parent(); + + // add to hidden elements + if ( htmlElement && ! cnHiddenElements.hasOwnProperty( 'ccpa' ) ) { + cnHiddenElements['ccpa'] = htmlElement; + + // remove el + $( htmlElement ).remove(); + } + + $.extend( customOptions.config, {dontSellLink: false} ); + } + + break; + + case 'on_scroll': + var value = event.data.value === true; + reload = true; + + $.extend( customOptions.config, {onScroll: value} ); + break; + + case 'on_click': + var value = event.data.value === true; + reload = true; + + $.extend( customOptions.config, {onClick: value} ); + break; + + case 'ui_blocking': + var value = event.data.value === true; + reload = true; + + $.extend( customOptions.config, {uiBlocking: value} ); + break; + + case 'revoke_consent': + var value = event.data.value === true; + reload = true; + + $.extend( customOptions.config, {revokeConsent: value} ); + break; + + case 'color_primary': + var iframeContents = $( iframe ).contents()[0]; + + iframeContents.documentElement.style.setProperty( '--hu-primaryColor', event.data.value ); + customOptions = {design: {primaryColor: event.data.value}} + break; + + case 'color_background': + var iframeContents = $( iframe ).contents()[0]; + + iframeContents.documentElement.style.setProperty( '--hu-bannerColor', event.data.value ); + customOptions = {design: {bannerColor: event.data.value}} + break; + + case 'color_border': + var iframeContents = $( iframe ).contents()[0]; + + iframeContents.documentElement.style.setProperty( '--hu-borderColor', event.data.value ); + customOptions = {design: {borderColor: event.data.value}} + break; + + case 'color_text': + var iframeContents = $( iframe ).contents()[0]; + + iframeContents.documentElement.style.setProperty( '--hu-textColor', event.data.value ); + customOptions = {design: {textColor: event.data.value}} + break; + + case 'color_heading': + var iframeContents = $( iframe ).contents()[0]; + + iframeContents.documentElement.style.setProperty( '--hu-headingColor', event.data.value ); + customOptions = {design: {headingColor: event.data.value}} + break; + + case 'color_button_text': + var iframeContents = $( iframe ).contents()[0]; + + iframeContents.documentElement.style.setProperty( '--hu-btnTextColor', event.data.value ); + customOptions = {design: {btnTextColor: event.data.value}} + break; + } + + // set widget options + huObject.setOptions( customOptions ); + + // set widget texts + huObject.setTexts( customTexts ); + + // reload if needed + if ( reload ) { + huObject.reload(); + } + } + + // remove spinner + $( iframe ).closest( '.has-loader' ).find( '.cn-spinner' ).remove(); + $( iframe ).closest( '.has-loader' ).removeClass( 'cn-loading' ); + + // unlock options + $( form ).removeClass( 'cn-form-disabled' ); + }, 500 ); + }, false ); + + // is it iframe? + if ( document !== parent.document && typeof cnFrontWelcome !== 'undefined' && cnFrontWelcome.previewMode ) { + var iframe = $( parent.document ).find( '#cn_iframe_id' ); + + // inject links into initial document + $( document.body ).find( 'a[href], area[href]' ).each( function () { + cnAddPreviewModeToLink( this, iframe ); + } ); + + // inject links into initial document + $( document.body ).find( 'form' ).each( function () { + cnAddPreviewModeToForm( this, iframe ); + } ); + + // inject links for new elements added to the page + if ( typeof MutationObserver !== 'undefined' ) { + var observer = new MutationObserver( function ( mutations ) { + _.each( mutations, function ( mutation ) { + $( mutation.target ).find( 'a[href], area[href]' ).each( function () { + cnAddPreviewModeToLink( this, iframe ); + } ); + + $( mutation.target ).find( 'form' ).each( function () { + cnAddPreviewModeToForm( this, iframe ); + } ); + } ); + } ); + + observer.observe( document.documentElement, { + childList: true, + subtree: true + } ); + } else { + // If mutation observers aren't available, fallback to just-in-time injection. + $( document.documentElement ).on( 'click focus mouseover', 'a[href], area[href]', function () { + cnAddPreviewModeToLink( this, iframe ); + } ); + } + + // remove spinner + $( iframe ).closest( '.has-loader' ).find( '.cn-spinner' ).remove(); + $( iframe ).closest( '.has-loader' ).removeClass( 'cn-loading' ); + } + } ); + + /** + * Inject preview mode parameter into specific links on the frontend. + */ + function cnAddPreviewModeToLink( element, iframe ) { + var params, $element = $( element ); + + // skip elements with no href attribute + if ( ! element.hasAttribute( 'href' ) ) + return; + + // skip links in admin bar + if ( $element.closest( '#wpadminbar' ).length ) + return; + + // ignore links with href="#", href="#id", or non-HTTP protocols (e.g. javascript: and mailto:) + if ( '#' === $element.attr( 'href' ).substr( 0, 1 ) || ! /^https?:$/.test( element.protocol ) ) + return; + + // make sure links in preview use HTTPS if parent frame uses HTTPS. + // if ( api.settings.channel && 'https' === api.preview.scheme.get() && 'http:' === element.protocol && -1 !== api.settings.url.allowedHosts.indexOf( element.host ) ) + // element.protocol = 'https:'; + + // ignore links with special class + if ( $element.hasClass( 'wp-playlist-caption' ) ) + return; + + // check special links + if ( ! cnIsLinkPreviewable( element ) ) + return; + + $( element ).on( 'click', function () { + $( iframe ).closest( '.has-loader' ).addClass( 'cn-loading' ); + } ); + + // parse query string + params = cnParseQueryString( element.search.substring( 1 ) ); + + // set preview mode + params.cn_preview_mode = 1; + + element.search = $.param( params ); + } + + /** + * Inject preview mode parameter into specific forms on the frontend. + */ + function cnAddPreviewModeToForm( element, iframe ) { + var input = document.createElement( 'input' ); + + input.setAttribute( 'type', 'hidden' ); + input.setAttribute( 'name', 'cn_preview_mode' ); + input.setAttribute( 'value', 1 ); + + element.appendChild( input ); + } + + /** + * Parse query string. + */ + function cnParseQueryString( string ) { + var params = {}; + + _.each( string.split( '&' ), function ( pair ) { + var parts, key, value; + + parts = pair.split( '=', 2 ); + + if ( ! parts[0] ) + return; + + key = decodeURIComponent( parts[0].replace( /\+/g, ' ' ) ); + key = key.replace( / /g, '_' ); + + if ( _.isUndefined( parts[1] ) ) + value = null; + else + value = decodeURIComponent( parts[1].replace( /\+/g, ' ' ) ); + + params[ key ] = value; + } ); + + return params; + } + + /** + * Whether the supplied link is previewable. + */ + function cnIsLinkPreviewable( element ) { + var matchesAllowedUrl, parsedAllowedUrl, elementHost; + + if ( 'javascript:' === element.protocol ) + return true; + + // only web urls can be previewed + if ( element.protocol !== 'https:' && element.protocol !== 'http:' ) + return false; + + elementHost = element.host.replace( /:(80|443)$/, '' ); + parsedAllowedUrl = document.createElement( 'a' ); + matchesAllowedUrl = ! _.isUndefined( _.find( cnFrontWelcome.allowedURLs, function ( allowedUrl ) { + parsedAllowedUrl.href = allowedUrl; + + return parsedAllowedUrl.protocol === element.protocol && parsedAllowedUrl.host.replace( /:(80|443)$/, '' ) === elementHost && 0 === element.pathname.indexOf( parsedAllowedUrl.pathname.replace( /\/$/, '' ) ); + } ) ); + + if ( ! matchesAllowedUrl ) + return false; + + // skip wp login and signup pages + if ( /\/wp-(login|signup)\.php$/.test( element.pathname ) ) + return false; + + // allow links to admin ajax as faux frontend URLs + if ( /\/wp-admin\/admin-ajax\.php$/.test( element.pathname ) ) + return false; + + // disallow links to admin, includes, and content + if ( /\/wp-(admin|includes|content)(\/|$)/.test( element.pathname ) ) + return false; + + return true; + } + ; + +} )( jQuery ); \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/js/front.js b/wp-content/plugins/cookie-notice/js/front.js new file mode 100644 index 0000000..1913bd1 --- /dev/null +++ b/wp-content/plugins/cookie-notice/js/front.js @@ -0,0 +1,528 @@ +// CustomEvent polyfil for IE support +( function() { + + if ( typeof window.CustomEvent === "function" ) + return false; + + function CustomEvent( event, params ) { + params = params || { bubbles: false, cancelable: false, detail: undefined }; + + var evt = document.createEvent( 'CustomEvent' ); + + evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail ); + + return evt; + } + + CustomEvent.prototype = window.Event.prototype; + + window.CustomEvent = CustomEvent; +} )(); + +// ClassList polyfil for IE/Safari support +( function() { + var regExp = function ( name ) { + return new RegExp( '(^| )' + name + '( |$)' ); + }; + + var forEach = function ( list, fn, scope ) { + for ( var i = 0; i < list.length; i++ ) { + fn.call( scope, list[i] ); + } + }; + + function ClassList( element ) { + this.element = element; + } + + ClassList.prototype = { + add: function() { + forEach( arguments, function ( name ) { + if ( !this.contains( name ) ) { + this.element.className += this.element.className.length > 0 ? ' ' + name : name; + } + }, this ); + }, + remove: function() { + forEach( arguments, function ( name ) { + this.element.className = + this.element.className.replace( regExp( name ), '' ); + }, this ); + }, + toggle: function ( name ) { + return this.contains( name ) + ? ( this.remove( name ), false ) : ( this.add( name ), true ); + }, + contains: function ( name ) { + return regExp( name ).test( this.element.className ); + }, + // bonus.. + replace: function ( oldName, newName ) { + this.remove( oldName ), this.add( newName ); + } + }; + + // IE8/9, Safari + if ( !( 'classList' in Element.prototype ) ) { + Object.defineProperty( Element.prototype, 'classList', { + get: function() { + return new ClassList( this ); + } + } ); + } + + if ( window.DOMTokenList && DOMTokenList.prototype.replace == null ) + DOMTokenList.prototype.replace = ClassList.prototype.replace; +} )(); + +// cookieNotice +( function ( window, document, undefined ) { + + var cookieNotice = new function() { + // cookie status + this.cookiesAccepted = null; + + // notice container + this.noticeContainer = null; + + // set cookie value + this.setStatus = function ( cookieValue ) { + var _this = this; + var cookieDomain = ''; + var cookiePath = ''; + var date = new Date(); + var laterDate = new Date(); + + // remove listening to scroll event + if ( cnArgs.onScroll ) + window.removeEventListener( 'scroll', this.handleScroll ); + + // set cookie type and expiry time in seconds + if ( cookieValue === 'accept' ) { + cookieValue = 'true'; + laterDate.setTime( parseInt( date.getTime() ) + parseInt( cnArgs.cookieTime ) * 1000 ); + } else { + cookieValue = 'false'; + laterDate.setTime( parseInt( date.getTime() ) + parseInt( cnArgs.cookieTimeRejected ) * 1000 ); + } + + if ( cnArgs.globalCookie ) + cookieDomain = this.getDomain( document.location.hostname ); + + // get domain path in localhost + if ( document.location.hostname === 'localhost' ) + cookiePath = document.location.pathname.split( '/' )[1]; + + var secureValue = ''; + + if ( document.location.protocol === 'https:' ) + secureValue = ';secure'; + + // set cookie + document.cookie = cnArgs.cookieName + '=' + cookieValue + ';expires=' + laterDate.toUTCString() + ';path=/' + cookiePath + ';domain=' + cookieDomain + secureValue; + + // update global status + this.cookiesAccepted = cookieValue === 'true'; + + // trigger custom event + var event = new CustomEvent( + 'setCookieNotice', + { + detail: { + value: cookieValue, + time: date, + expires: laterDate, + data: cnArgs + } + } + ); + + document.dispatchEvent( event ); + + this.setBodyClass( [ 'cookies-set', cookieValue === 'true' ? 'cookies-accepted' : 'cookies-refused' ] ); + + this.hideCookieNotice(); + + // show revoke notice if enabled + if ( cnArgs.revokeCookiesOpt === 'automatic' ) { + // show cookie notice after the revoke is hidden + this.noticeContainer.addEventListener( 'animationend', function handler() { + _this.noticeContainer.removeEventListener( 'animationend', handler ); + _this.showRevokeNotice(); + } ); + this.noticeContainer.addEventListener( 'webkitAnimationEnd', function handler() { + _this.noticeContainer.removeEventListener( 'webkitAnimationEnd', handler ); + _this.showRevokeNotice(); + } ); + } + + // redirect? + if ( cnArgs.redirection && ( ( cookieValue === 'true' && this.cookiesAccepted === null ) || ( cookieValue !== this.cookiesAccepted && this.cookiesAccepted !== null ) ) ) { + var url = window.location.protocol + '//', + hostname = window.location.host + '/' + window.location.pathname; + + // is cache enabled? + if ( cnArgs.cache ) { + url = url + hostname.replace( '//', '/' ) + ( window.location.search === '' ? '?' : window.location.search + '&' ) + 'cn-reloaded=1' + window.location.hash; + + window.location.href = url; + } else { + url = url + hostname.replace( '//', '/' ) + window.location.search + window.location.hash; + + window.location.reload( true ); + } + + return; + } + }; + + // get domain + this.getDomain = function( url ) { + var regex = new RegExp( /https?:\/\// ); + + if ( ! regex.test( url ) ) + url = 'http://' + url; + + var parts = new URL( url ).hostname.split( '.' ); + + return parts.slice( 0 ).slice( -( parts.length === 4 ? 3 : 2 ) ).join( '.' ); + } + + // get cookie value + this.getStatus = function ( bool ) { + var value = "; " + document.cookie, + parts = value.split( '; cookie_notice_accepted=' ); + + if ( parts.length === 2 ) { + var val = parts.pop().split( ';' ).shift(); + + if ( bool ) + return val === 'true'; + else + return val; + } else + return null; + }; + + // display cookie notice + this.showCookieNotice = function() { + var _this = this; + + // trigger custom event + var event = new CustomEvent( + 'showCookieNotice', + { + detail: { + data: cnArgs + } + } + ); + + document.dispatchEvent( event ); + + this.noticeContainer.classList.remove( 'cookie-notice-hidden' ); + this.noticeContainer.classList.add( 'cn-animated' ); + this.noticeContainer.classList.add( 'cookie-notice-visible' ); + + // detect animation + this.noticeContainer.addEventListener( 'animationend', function handler() { + _this.noticeContainer.removeEventListener( 'animationend', handler ); + _this.noticeContainer.classList.remove( 'cn-animated' ); + } ); + this.noticeContainer.addEventListener( 'webkitAnimationEnd', function handler() { + _this.noticeContainer.removeEventListener( 'webkitAnimationEnd', handler ); + _this.noticeContainer.classList.remove( 'cn-animated' ); + } ); + }; + + // hide cookie notice + this.hideCookieNotice = function() { + var _this = this; + + // trigger custom event + var event = new CustomEvent( + 'hideCookieNotice', + { + detail: { + data: cnArgs + } + } + ); + + document.dispatchEvent( event ); + + this.noticeContainer.classList.add( 'cn-animated' ); + this.noticeContainer.classList.remove( 'cookie-notice-visible' ); + + // detect animation + this.noticeContainer.addEventListener( 'animationend', function handler() { + _this.noticeContainer.removeEventListener( 'animationend', handler ); + _this.noticeContainer.classList.remove( 'cn-animated' ); + _this.noticeContainer.classList.add( 'cookie-notice-hidden' ); + } ); + this.noticeContainer.addEventListener( 'webkitAnimationEnd', function handler() { + _this.noticeContainer.removeEventListener( 'webkitAnimationEnd', handler ); + _this.noticeContainer.classList.remove( 'cn-animated' ); + _this.noticeContainer.classList.add( 'cookie-notice-hidden' ); + } ); + }; + + // display revoke notice + this.showRevokeNotice = function() { + var _this = this; + + // trigger custom event + var event = new CustomEvent( + 'showRevokeNotice', + { + detail: { + data: cnArgs + } + } + ); + + document.dispatchEvent( event ); + + this.noticeContainer.classList.remove( 'cookie-revoke-hidden' ); + this.noticeContainer.classList.add( 'cn-animated' ); + this.noticeContainer.classList.add( 'cookie-revoke-visible' ); + + // detect animation + this.noticeContainer.addEventListener( 'animationend', function handler() { + _this.noticeContainer.removeEventListener( 'animationend', handler ); + _this.noticeContainer.classList.remove( 'cn-animated' ); + } ); + this.noticeContainer.addEventListener( 'webkitAnimationEnd', function handler() { + _this.noticeContainer.removeEventListener( 'webkitAnimationEnd', handler ); + _this.noticeContainer.classList.remove( 'cn-animated' ); + } ); + }; + + // hide revoke notice + this.hideRevokeNotice = function() { + var _this = this; + + // trigger custom event + var event = new CustomEvent( + 'hideRevokeNotice', + { + detail: { + data: cnArgs + } + } + ); + + document.dispatchEvent( event ); + + this.noticeContainer.classList.add( 'cn-animated' ); + this.noticeContainer.classList.remove( 'cookie-revoke-visible' ); + + // detect animation + this.noticeContainer.addEventListener( 'animationend', function handler() { + _this.noticeContainer.removeEventListener( 'animationend', handler ); + _this.noticeContainer.classList.remove( 'cn-animated' ); + _this.noticeContainer.classList.add( 'cookie-revoke-hidden' ); + } ); + this.noticeContainer.addEventListener( 'webkitAnimationEnd', function handler() { + _this.noticeContainer.removeEventListener( 'webkitAnimationEnd', handler ); + _this.noticeContainer.classList.remove( 'cn-animated' ); + _this.noticeContainer.classList.add( 'cookie-revoke-hidden' ); + } ); + }; + + // change body classes + this.setBodyClass = function ( classes ) { + // remove body classes + document.body.classList.remove( 'cookies-revoke' ); + document.body.classList.remove( 'cookies-accepted' ); + document.body.classList.remove( 'cookies-refused' ); + document.body.classList.remove( 'cookies-set' ); + document.body.classList.remove( 'cookies-not-set' ); + + // add body classes + for ( var i = 0; i < classes.length; i++ ) { + document.body.classList.add( classes[i] ); + } + }; + + // handle mouse scrolling + this.handleScroll = function() { + var scrollTop = window.pageYOffset || ( document.documentElement || document.body.parentNode || document.body ).scrollTop + + // accept cookie + if ( scrollTop > parseInt( cnArgs.onScrollOffset ) ) + this.setStatus( 'accept' ); + }; + + // cross browser compatible closest function + this.getClosest = function ( elem, selector ) { + // element.matches() polyfill + if ( !Element.prototype.matches ) { + Element.prototype.matches = + Element.prototype.matchesSelector || + Element.prototype.mozMatchesSelector || + Element.prototype.msMatchesSelector || + Element.prototype.oMatchesSelector || + Element.prototype.webkitMatchesSelector || + function ( s ) { + var matches = ( this.document || this.ownerDocument ).querySelectorAll( s ), + i = matches.length; + while ( --i >= 0 && matches.item( i ) !== this ) { + } + return i > -1; + }; + } + + // get the closest matching element + for ( ; elem && elem !== document; elem = elem.parentNode ) { + if ( elem.matches( selector ) ) + return elem; + } + + return null; + }; + + // check if displaye in an iframe + this.inIframe = function() { + try { + return window.self !== window.top; + } catch (e) { + return true; + } + } + + // initialize + this.init = function() { + var _this = this; + + // bail if in iframe + if ( this.inIframe() === true ) + return; + + this.cookiesAccepted = this.getStatus( true ); + this.noticeContainer = document.getElementById( 'cookie-notice' ); + + // no container? + if ( ! this.noticeContainer ) + return; + + var cookieButtons = document.getElementsByClassName( 'cn-set-cookie' ), + revokeButtons = document.getElementsByClassName( 'cn-revoke-cookie' ), + linkButton = document.getElementById( 'cn-more-info' ), + closeButton = document.getElementById( 'cn-close-notice' ); + + // add effect class + this.noticeContainer.classList.add( 'cn-effect-' + cnArgs.hideEffect ); + + // check cookies status + if ( this.cookiesAccepted === null ) { + // handle on scroll + if ( cnArgs.onScroll ) + window.addEventListener( 'scroll', function ( e ) { + _this.handleScroll(); + } ); + + // handle on click + if ( cnArgs.onClick ) + window.addEventListener( 'click', function ( e ) { + var outerContainer = _this.getClosest( e.target, '#cookie-notice' ); + + // accept notice if clicked element is not inside the container + if ( outerContainer === null ) + _this.setStatus( 'accept' ); + }, true ); + + this.setBodyClass( [ 'cookies-not-set' ] ); + + // show cookie notice + this.showCookieNotice(); + } else { + this.setBodyClass( [ 'cookies-set', this.cookiesAccepted === true ? 'cookies-accepted' : 'cookies-refused' ] ); + + // show revoke notice if enabled + if ( cnArgs.revokeCookies && cnArgs.revokeCookiesOpt === 'automatic' ) + this.showRevokeNotice(); + } + + // handle cookie buttons click + for ( var i = 0; i < cookieButtons.length; i++ ) { + cookieButtons[i].addEventListener( 'click', function ( e ) { + e.preventDefault(); + // Chrome double click event fix + e.stopPropagation(); + + _this.setStatus( this.dataset.cookieSet ); + } ); + } + + // handle link button + if ( linkButton !== null ) { + linkButton.addEventListener( 'click', function ( e ) { + var linkUrl = this.dataset.linkUrl || this.getAttribute( 'href' ); + var linkTarget = this.dataset.linkTarget || this.getAttribute( 'target' ) || '_self'; + + // only intercept when we have a destination + if ( ! linkUrl ) + return; + + e.preventDefault(); + // Chrome double click event fix + e.stopPropagation(); + + window.open( linkUrl, linkTarget ); + } ); + } + + // handle close button + if ( closeButton !== null ) { + closeButton.addEventListener( 'keydown', function ( e ) { + if ( e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar' || e.keyCode === 13 || e.keyCode === 32 ) { + e.preventDefault(); + // Chrome double click event fix + e.stopPropagation(); + + _this.setStatus( 'reject' ); + } + } ); + + closeButton.addEventListener( 'click', function ( e ) { + e.preventDefault(); + // Chrome double click event fix + e.stopPropagation(); + + _this.setStatus( 'reject' ); + } ); + } + + // handle revoke buttons click + for ( var i = 0; i < revokeButtons.length; i++ ) { + revokeButtons[i].addEventListener( 'click', function ( e ) { + e.preventDefault(); + + // hide revoke notice + if ( _this.noticeContainer.classList.contains( 'cookie-revoke-visible' ) ) { + _this.hideRevokeNotice(); + + // show cookie notice after the revoke is hidden + _this.noticeContainer.addEventListener( 'animationend', function handler() { + _this.noticeContainer.removeEventListener( 'animationend', handler ); + _this.showCookieNotice(); + } ); + _this.noticeContainer.addEventListener( 'webkitAnimationEnd', function handler() { + _this.noticeContainer.removeEventListener( 'webkitAnimationEnd', handler ); + _this.showCookieNotice(); + } ); + // show cookie notice + } else if ( _this.noticeContainer.classList.contains( 'cookie-notice-hidden' ) && _this.noticeContainer.classList.contains( 'cookie-revoke-hidden' ) ) + _this.showCookieNotice(); + } ); + } + }; + } + + // initialize plugin + window.addEventListener( 'load', function() { + cookieNotice.init(); + }, false ); + +} )( window, document, undefined ); diff --git a/wp-content/plugins/cookie-notice/js/front.min.js b/wp-content/plugins/cookie-notice/js/front.min.js new file mode 100644 index 0000000..2dad1d6 --- /dev/null +++ b/wp-content/plugins/cookie-notice/js/front.min.js @@ -0,0 +1 @@ +!function(){if("function"==typeof window.CustomEvent)return!1;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}(),function(){var e=function(e){return new RegExp("(^| )"+e+"( |$)")},t=function(e,t,n){for(var i=0;i0?" "+e:e)},this)},remove:function(){t(arguments,function(t){this.element.className=this.element.className.replace(e(t),"")},this)},toggle:function(e){return this.contains(e)?(this.remove(e),!1):(this.add(e),!0)},contains:function(t){return e(t).test(this.element.className)},replace:function(e,t){this.remove(e),this.add(t)}},"classList"in Element.prototype||Object.defineProperty(Element.prototype,"classList",{get:function(){return new n(this)}}),window.DOMTokenList&&null==DOMTokenList.prototype.replace&&(DOMTokenList.prototype.replace=n.prototype.replace)}(),function(e,t){var n=new function(){this.cookiesAccepted=null,this.noticeContainer=null,this.setStatus=function(n){var i=this,o="",s="",c=new Date,a=new Date;cnArgs.onScroll&&e.removeEventListener("scroll",this.handleScroll),"accept"===n?(n="true",a.setTime(parseInt(c.getTime())+1e3*parseInt(cnArgs.cookieTime))):(n="false",a.setTime(parseInt(c.getTime())+1e3*parseInt(cnArgs.cookieTimeRejected))),cnArgs.globalCookie&&(o=this.getDomain(t.location.hostname)),"localhost"===t.location.hostname&&(s=t.location.pathname.split("/")[1]);var r="";"https:"===t.location.protocol&&(r=";secure"),t.cookie=cnArgs.cookieName+"="+n+";expires="+a.toUTCString()+";path=/"+s+";domain="+o+r,this.cookiesAccepted="true"===n;var d=new CustomEvent("setCookieNotice",{detail:{value:n,time:c,expires:a,data:cnArgs}});if(t.dispatchEvent(d),this.setBodyClass(["cookies-set","true"===n?"cookies-accepted":"cookies-refused"]),this.hideCookieNotice(),"automatic"===cnArgs.revokeCookiesOpt&&(this.noticeContainer.addEventListener("animationend",function e(){i.noticeContainer.removeEventListener("animationend",e),i.showRevokeNotice()}),this.noticeContainer.addEventListener("webkitAnimationEnd",function e(){i.noticeContainer.removeEventListener("webkitAnimationEnd",e),i.showRevokeNotice()})),cnArgs.redirection&&("true"===n&&null===this.cookiesAccepted||n!==this.cookiesAccepted&&null!==this.cookiesAccepted)){var l=e.location.protocol+"//",h=e.location.host+"/"+e.location.pathname;cnArgs.cache?(l=l+h.replace("//","/")+(""===e.location.search?"?":e.location.search+"&")+"cn-reloaded=1"+e.location.hash,e.location.href=l):(l=l+h.replace("//","/")+e.location.search+e.location.hash,e.location.reload(!0))}else;},this.getDomain=function(e){new RegExp(/https?:\/\//).test(e)||(e="http://"+e);var t=new URL(e).hostname.split(".");return t.slice(0).slice(-(4===t.length?3:2)).join(".")},this.getStatus=function(e){var n=("; "+t.cookie).split("; cookie_notice_accepted=");if(2===n.length){var i=n.pop().split(";").shift();return e?"true"===i:i}return null},this.showCookieNotice=function(){var e=this,n=new CustomEvent("showCookieNotice",{detail:{data:cnArgs}});t.dispatchEvent(n),this.noticeContainer.classList.remove("cookie-notice-hidden"),this.noticeContainer.classList.add("cn-animated"),this.noticeContainer.classList.add("cookie-notice-visible"),this.noticeContainer.addEventListener("animationend",function t(){e.noticeContainer.removeEventListener("animationend",t),e.noticeContainer.classList.remove("cn-animated")}),this.noticeContainer.addEventListener("webkitAnimationEnd",function t(){e.noticeContainer.removeEventListener("webkitAnimationEnd",t),e.noticeContainer.classList.remove("cn-animated")})},this.hideCookieNotice=function(){var e=this,n=new CustomEvent("hideCookieNotice",{detail:{data:cnArgs}});t.dispatchEvent(n),this.noticeContainer.classList.add("cn-animated"),this.noticeContainer.classList.remove("cookie-notice-visible"),this.noticeContainer.addEventListener("animationend",function t(){e.noticeContainer.removeEventListener("animationend",t),e.noticeContainer.classList.remove("cn-animated"),e.noticeContainer.classList.add("cookie-notice-hidden")}),this.noticeContainer.addEventListener("webkitAnimationEnd",function t(){e.noticeContainer.removeEventListener("webkitAnimationEnd",t),e.noticeContainer.classList.remove("cn-animated"),e.noticeContainer.classList.add("cookie-notice-hidden")})},this.showRevokeNotice=function(){var e=this,n=new CustomEvent("showRevokeNotice",{detail:{data:cnArgs}});t.dispatchEvent(n),this.noticeContainer.classList.remove("cookie-revoke-hidden"),this.noticeContainer.classList.add("cn-animated"),this.noticeContainer.classList.add("cookie-revoke-visible"),this.noticeContainer.addEventListener("animationend",function t(){e.noticeContainer.removeEventListener("animationend",t),e.noticeContainer.classList.remove("cn-animated")}),this.noticeContainer.addEventListener("webkitAnimationEnd",function t(){e.noticeContainer.removeEventListener("webkitAnimationEnd",t),e.noticeContainer.classList.remove("cn-animated")})},this.hideRevokeNotice=function(){var e=this,n=new CustomEvent("hideRevokeNotice",{detail:{data:cnArgs}});t.dispatchEvent(n),this.noticeContainer.classList.add("cn-animated"),this.noticeContainer.classList.remove("cookie-revoke-visible"),this.noticeContainer.addEventListener("animationend",function t(){e.noticeContainer.removeEventListener("animationend",t),e.noticeContainer.classList.remove("cn-animated"),e.noticeContainer.classList.add("cookie-revoke-hidden")}),this.noticeContainer.addEventListener("webkitAnimationEnd",function t(){e.noticeContainer.removeEventListener("webkitAnimationEnd",t),e.noticeContainer.classList.remove("cn-animated"),e.noticeContainer.classList.add("cookie-revoke-hidden")})},this.setBodyClass=function(e){t.body.classList.remove("cookies-revoke"),t.body.classList.remove("cookies-accepted"),t.body.classList.remove("cookies-refused"),t.body.classList.remove("cookies-set"),t.body.classList.remove("cookies-not-set");for(var n=0;nparseInt(cnArgs.onScrollOffset)&&this.setStatus("accept")},this.getClosest=function(e,n){for(Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length;--n>=0&&t.item(n)!==this;);return n>-1});e&&e!==t;e=e.parentNode)if(e.matches(n))return e;return null},this.inIframe=function(){try{return e.self!==e.top}catch(e){return!0}},this.init=function(){var n=this;if(!0!==this.inIframe()&&(this.cookiesAccepted=this.getStatus(!0),this.noticeContainer=t.getElementById("cookie-notice"),this.noticeContainer)){var i=t.getElementsByClassName("cn-set-cookie"),o=t.getElementsByClassName("cn-revoke-cookie"),s=t.getElementById("cn-more-info"),c=t.getElementById("cn-close-notice");this.noticeContainer.classList.add("cn-effect-"+cnArgs.hideEffect),null===this.cookiesAccepted?(cnArgs.onScroll&&e.addEventListener("scroll",function(e){n.handleScroll()}),cnArgs.onClick&&e.addEventListener("click",function(e){null===n.getClosest(e.target,"#cookie-notice")&&n.setStatus("accept")},!0),this.setBodyClass(["cookies-not-set"]),this.showCookieNotice()):(this.setBodyClass(["cookies-set",!0===this.cookiesAccepted?"cookies-accepted":"cookies-refused"]),cnArgs.revokeCookies&&"automatic"===cnArgs.revokeCookiesOpt&&this.showRevokeNotice());for(var a=0;a\n" +"Language-Team: dFactory \n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.6\n" +"X-Poedit-KeywordsList: gettext;gettext_noop;__;_e;_n;esc_html__;esc_html_e\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-SearchPath-0: ..\n" + +#: ../cookie-notice.php:820 +msgid "Now Supporting Microsoft Consent Mode" +msgstr "" + +#: ../cookie-notice.php:820 ../cookie-notice.php:822 +msgid "Cookie Compliance now integrates with Microsoft Consent Mode, allowing you to sync user consent with Microsoft Ads and UET tracking. Combined with full support for GDPR, CCPA, and other major privacy laws, it’s the easiest way to stay compliant across regions — all without writing a single line of code." +msgstr "" + +#: ../cookie-notice.php:820 +msgid "Sign up to add compliance features now, and upgrade when you're ready to unlock advanced features." +msgstr "" + +#: ../cookie-notice.php:820 ../includes/privacy-consent.php:330 +#: ../includes/settings.php:985 ../includes/settings.php:1041 +msgid "Add Compliance features" +msgstr "" + +#: ../cookie-notice.php:820 ../cookie-notice.php:822 +msgid "Dismiss Notice" +msgstr "" + +#: ../cookie-notice.php:822 +msgid "Unlock Microsoft Consent Mode Support" +msgstr "" + +#: ../cookie-notice.php:822 +msgid "Microsoft Consent Mode is available exclusively on the Pro plan — upgrade now to activate it in your dashboard." +msgstr "" + +#: ../cookie-notice.php:822 ../includes/settings.php:672 +msgid "Upgrade to Pro" +msgstr "" + +#: ../cookie-notice.php:859 +msgid "Cookie Compliance Warning" +msgstr "" + +#: ../cookie-notice.php:859 +#, php-format +msgid "Your website has reached the %1$s visits usage limit for the Cookie Compliance Basic Plan. Compliance services such as Consent Record Storage, Autoblocking, and Consent Analytics have been deactivated until current usage cycle ends on %2$s." +msgstr "" + +#: ../cookie-notice.php:859 +#, php-format +msgid "To reactivate compliance services now, upgrade your domain to a Pro plan." +msgstr "" + +#: ../cookie-notice.php:883 +msgid "We Value Your Feedback" +msgstr "" + +#: ../cookie-notice.php:883 +#, php-format +msgid "Hi, you've been using Cookie Notice & Compliance for GDPR / CCPA for more than %s. We hope it has been a valuable addition to your WordPress site. We would be grateful if you could take a few minutes to share your thoughts by leaving a review." +msgstr "" + +#: ../cookie-notice.php:883 +msgid "Thank you for helping us improve and grow!" +msgstr "" + +#: ../cookie-notice.php:883 +msgid "Review" +msgstr "" + +#: ../cookie-notice.php:883 +msgid "Delay" +msgstr "" + +#: ../cookie-notice.php:883 +msgid "Dismiss" +msgstr "" + +#: ../cookie-notice.php:1248 +msgid "Cookie Notice & Compliance - Deactivation survey" +msgstr "" + +#: ../cookie-notice.php:1313 +msgid "Settings" +msgstr "" + +#: ../cookie-notice.php:1328 +msgid "Free Upgrade" +msgstr "" + +#: ../cookie-notice.php:1354 +msgid "We're sorry to see you go. Could you please tell us what happened?" +msgstr "" + +#: ../cookie-notice.php:1358 +msgid "I couldn't figure out how to make it work." +msgstr "" + +#: ../cookie-notice.php:1359 +msgid "I found another plugin to use for the same task." +msgstr "" + +#: ../cookie-notice.php:1360 +msgid "The Cookie Compliance banner is too big." +msgstr "" + +#: ../cookie-notice.php:1361 +msgid "The Cookie Compliance consent choices (Silver, Gold, Platinum) are confusing." +msgstr "" + +#: ../cookie-notice.php:1362 +msgid "The Cookie Compliance default settings are too strict." +msgstr "" + +#: ../cookie-notice.php:1363 +msgid "The web application user interface is not clear to me." +msgstr "" + +#: ../cookie-notice.php:1364 +msgid "Support isn't timely." +msgstr "" + +#: ../cookie-notice.php:1365 ../includes/welcome.php:472 +msgid "Other" +msgstr "" + +#: ../cookie-notice.php:1379 +msgid "Cancel" +msgstr "" + +#: ../cookie-notice.php:1380 +msgid "Deactivate" +msgstr "" + +#: ../cookie-notice.php:1381 +msgid "Deactivate & Submit" +msgstr "" + +#: ../includes/consent-logs-date-list-table.php:24 +msgid "The table below shows the consent records from your website accumulated from the last thirty days." +msgstr "" + +#: ../includes/consent-logs-date-list-table.php:26 +#, php-format +msgid "View individual records by expanding a single row of data or log in to the Cookie Compliance dashboard to export proof of consent." +msgstr "" + +#: ../includes/consent-logs-date-list-table.php:30 +msgid "Note: domains using Cookie Compliance limited, Basic plan allow you to view consent records from the last 7 days and store data only for 30 days." +msgstr "" + +#: ../includes/consent-logs-date-list-table.php:162 +#: ../includes/privacy-consent-list-table.php:253 +#: ../includes/privacy-consent-logs-list-table.php:282 +msgid "Date" +msgstr "" + +#: ../includes/consent-logs-date-list-table.php:163 +msgid "Level 1" +msgstr "" + +#: ../includes/consent-logs-date-list-table.php:164 +msgid "Level 2" +msgstr "" + +#: ../includes/consent-logs-date-list-table.php:165 +msgid "Level 3" +msgstr "" + +#: ../includes/consent-logs-date-list-table.php:166 +msgid "Total" +msgstr "" + +#: ../includes/consent-logs-date-list-table.php:280 +#: ../includes/consent-logs-list-table.php:297 +msgid "No cookie consent logs found." +msgstr "" + +#: ../includes/consent-logs-list-table.php:42 +msgid "Basic Operations" +msgstr "" + +#: ../includes/consent-logs-list-table.php:45 +msgid "Content Personalization" +msgstr "" + +#: ../includes/consent-logs-list-table.php:48 +msgid "Site Optimization" +msgstr "" + +#: ../includes/consent-logs-list-table.php:51 +msgid "Ad Personalization" +msgstr "" + +#: ../includes/consent-logs-list-table.php:60 ../includes/settings.php:231 +msgid "1 month" +msgstr "" + +#: ../includes/consent-logs-list-table.php:62 ../includes/settings.php:232 +msgid "3 months" +msgstr "" + +#: ../includes/consent-logs-list-table.php:64 ../includes/settings.php:233 +msgid "6 months" +msgstr "" + +#: ../includes/consent-logs-list-table.php:66 ../includes/settings.php:234 +msgid "1 year" +msgstr "" + +#: ../includes/consent-logs-list-table.php:68 +msgid "2 years" +msgstr "" + +#: ../includes/consent-logs-list-table.php:72 +#, php-format +msgid "Level %d" +msgstr "" + +#: ../includes/consent-logs-list-table.php:75 +#: ../includes/privacy-consent-logs-list-table.php:343 +msgid "GMT" +msgstr "" + +#: ../includes/consent-logs-list-table.php:106 +msgid "Consent ID" +msgstr "" + +#: ../includes/consent-logs-list-table.php:107 +msgid "Consent Level" +msgstr "" + +#: ../includes/consent-logs-list-table.php:108 +msgid "Categories" +msgstr "" + +#: ../includes/consent-logs-list-table.php:109 +msgid "Duration" +msgstr "" + +#: ../includes/consent-logs-list-table.php:110 +msgid "Time" +msgstr "" + +#: ../includes/consent-logs-list-table.php:111 +#: ../includes/privacy-consent-logs-list-table.php:283 +msgid "IP address" +msgstr "" + +#: ../includes/consent-logs-list-table.php:182 +#: ../includes/privacy-consent-logs-list-table.php:174 +#, php-format +msgid "%s item" +msgstr "" + +#: ../includes/consent-logs-list-table.php:198 +#: ../includes/privacy-consent-logs-list-table.php:190 +msgid "First page" +msgstr "" + +#: ../includes/consent-logs-list-table.php:209 +#: ../includes/privacy-consent-logs-list-table.php:201 +msgid "Previous page" +msgstr "" + +#: ../includes/consent-logs-list-table.php:219 +#: ../includes/privacy-consent-logs-list-table.php:211 +msgid "Current Page" +msgstr "" + +#: ../includes/consent-logs-list-table.php:238 +#: ../includes/privacy-consent-logs-list-table.php:230 +msgid "Next page" +msgstr "" + +#: ../includes/consent-logs-list-table.php:249 +#: ../includes/privacy-consent-logs-list-table.php:241 +msgid "Last page" +msgstr "" + +#: ../includes/consent-logs.php:118 +msgid "We were unable to download consent logs due to an error. Please try again later." +msgstr "" + +#: ../includes/dashboard.php:72 +msgid "Cookie Compliance" +msgstr "" + +#: ../includes/dashboard.php:254 ../includes/dashboard.php:266 +#: ../includes/dashboard.php:278 +#, php-format +msgid "Level %s" +msgstr "" + +#: ../includes/dashboard.php:322 +msgid "Privacy Content Logs" +msgstr "" + +#: ../includes/dashboard.php:402 +msgid "Traffic Overview" +msgstr "" + +#: ../includes/dashboard.php:403 +msgid "Displays the general visits information for your domain." +msgstr "" + +#: ../includes/dashboard.php:407 +msgid "Cookie Consent Activity" +msgstr "" + +#: ../includes/dashboard.php:408 +msgid "Displays the chart of the domain cookie consent activity in the last 30 days." +msgstr "" + +#: ../includes/dashboard.php:412 +msgid "Privacy Consent Activity" +msgstr "" + +#: ../includes/dashboard.php:413 +msgid "Displays the chart of the domain privacy consent activity in the last 30 days." +msgstr "" + +#: ../includes/dashboard.php:433 +msgid "View consent activity inside WordPress Dashboard" +msgstr "" + +#: ../includes/dashboard.php:434 +msgid "Display information about the visits." +msgstr "" + +#: ../includes/dashboard.php:435 +msgid "Get Consent logs data for the last 30 days." +msgstr "" + +#: ../includes/dashboard.php:436 +msgid "Enable consent purpose categories, automatic cookie blocking and more." +msgstr "" + +#: ../includes/dashboard.php:437 ../includes/settings.php:481 +#: ../includes/settings.php:527 +msgid "Upgrade to Cookie Compliance" +msgstr "" + +#: ../includes/dashboard.php:539 +msgid "Total Visits" +msgstr "" + +#: ../includes/dashboard.php:541 +msgid "Last 30 days" +msgstr "" + +#: ../includes/dashboard.php:544 ../includes/settings.php:145 +#: ../includes/settings.php:340 ../includes/settings.php:760 +msgid "Consent Logs" +msgstr "" + +#: ../includes/dashboard.php:546 +#, php-format +msgid "Updated %s" +msgstr "" + +#: ../includes/dashboard.php:563 +msgid "Traffic Usage" +msgstr "" + +#: ../includes/dashboard.php:566 +#, php-format +msgid "Visits usage: %1$s / %2$s" +msgstr "" + +#: ../includes/dashboard.php:567 +#, php-format +msgid "Cycle started: %s" +msgstr "" + +#: ../includes/dashboard.php:568 +#, php-format +msgid "Days to go: %s" +msgstr "" + +#: ../includes/dashboard.php:620 +msgid "Cookie Compliance Status" +msgstr "" + +#: ../includes/dashboard.php:635 +msgid "Your site does not have Cookie Compliance" +msgstr "" + +#: ../includes/dashboard.php:637 +msgid "Run Compliance Check to determine your site's compliance with updated data processing and consent rules under GDPR, CCPA and other international data privacy laws." +msgstr "" + +#: ../includes/dashboard.php:638 +msgid "Run Compliance Check" +msgstr "" + +#: ../includes/dashboard.php:641 ../includes/settings.php:337 +#: ../includes/settings.php:946 ../includes/settings.php:960 +#: ../includes/settings.php:979 ../includes/welcome.php:416 +msgid "Cookie Notice" +msgstr "" + +#: ../includes/modules/amp/amp.php:161 +msgid "Cookie Compliance AMP Consent" +msgstr "" + +#: ../includes/modules/contact-form-7/privacy-consent.php:28 +msgid "Contact Form 7" +msgstr "" + +#: ../includes/modules/formidable-forms/privacy-consent.php:28 +msgid "Formidable Forms" +msgstr "" + +#: ../includes/modules/mailchimp/privacy-consent.php:28 +msgid "Mailchimp for WP" +msgstr "" + +#: ../includes/modules/woocommerce/privacy-consent.php:37 +msgid "WooCommerce" +msgstr "" + +#: ../includes/modules/woocommerce/privacy-consent.php:46 +#: ../includes/modules/wordpress/privacy-consent.php:47 +msgid "Registration Form" +msgstr "" + +#: ../includes/modules/woocommerce/privacy-consent.php:62 +msgid "Checkout Form" +msgstr "" + +#: ../includes/modules/wordpress/privacy-consent.php:38 +msgid "WordPress" +msgstr "" + +#: ../includes/modules/wordpress/privacy-consent.php:65 +msgid "Comment Form" +msgstr "" + +#: ../includes/modules/wpforms/privacy-consent.php:28 +msgid "WPForms" +msgstr "" + +#: ../includes/privacy-consent-list-table.php:188 +msgid "1 form" +msgstr "" + +#: ../includes/privacy-consent-list-table.php:250 +msgid "Form Title" +msgstr "" + +#: ../includes/privacy-consent-list-table.php:251 +msgid "Form ID" +msgstr "" + +#: ../includes/privacy-consent-list-table.php:252 +msgid "Fields" +msgstr "" + +#: ../includes/privacy-consent-list-table.php:254 +msgid "Status" +msgstr "" + +#: ../includes/privacy-consent-list-table.php:330 +msgid "No forms found." +msgstr "" + +#: ../includes/privacy-consent-logs-list-table.php:48 +msgid "The table below shows the latest privacy consent records collected from the forms on your website." +msgstr "" + +#: ../includes/privacy-consent-logs-list-table.php:49 +#, php-format +msgid "Log in to the Cookie Compliance dashboard to view details or export proof of consent." +msgstr "" + +#: ../includes/privacy-consent-logs-list-table.php:53 +msgid "Note: domains using Cookie Compliance limited, Basic plan allow you to collect up to 100 records." +msgstr "" + +#: ../includes/privacy-consent-logs-list-table.php:74 +#: ../includes/privacy-consent-logs-list-table.php:319 +#: ../includes/privacy-consent-logs-list-table.php:326 +msgid "—" +msgstr "" + +#: ../includes/privacy-consent-logs-list-table.php:278 +msgid "Subject" +msgstr "" + +#: ../includes/privacy-consent-logs-list-table.php:279 +#: ../includes/settings.php:272 +msgid "Preferences" +msgstr "" + +#: ../includes/privacy-consent-logs-list-table.php:280 +msgid "Source" +msgstr "" + +#: ../includes/privacy-consent-logs-list-table.php:281 +msgid "Form" +msgstr "" + +#: ../includes/privacy-consent-logs-list-table.php:380 +msgid "No privacy consent logs found." +msgstr "" + +#: ../includes/privacy-consent.php:222 +msgid "Apply to all forms" +msgstr "" + +#: ../includes/privacy-consent.php:223 +msgid "Apply to selected forms" +msgstr "" + +#: ../includes/privacy-consent.php:257 ../includes/settings.php:756 +#: ../includes/settings.php:801 ../includes/settings.php:820 +msgid "Compliance Integration" +msgstr "" + +#: ../includes/privacy-consent.php:259 ../includes/settings.php:758 +#: ../includes/settings.php:802 +msgid "Compliance Status" +msgstr "" + +#: ../includes/privacy-consent.php:262 +msgid "Privacy Consent Settings" +msgstr "" + +#: ../includes/privacy-consent.php:299 ../includes/privacy-consent.php:312 +#: ../includes/privacy-consent.php:325 ../includes/settings.php:144 +#: ../includes/settings.php:339 +msgid "Privacy Consent" +msgstr "" + +#: ../includes/privacy-consent.php:299 ../includes/privacy-consent.php:300 +#: ../includes/privacy-consent.php:301 ../includes/settings.php:946 +#: ../includes/settings.php:947 ../includes/settings.php:948 +#: ../includes/settings.php:949 ../includes/settings.php:960 +#: ../includes/settings.php:979 ../includes/settings.php:1013 +#: ../includes/settings.php:1014 +msgid "Active" +msgstr "" + +#: ../includes/privacy-consent.php:300 ../includes/privacy-consent.php:313 +#: ../includes/privacy-consent.php:326 +msgid "Privacy Consent Storage" +msgstr "" + +#: ../includes/privacy-consent.php:301 ../includes/privacy-consent.php:314 +#: ../includes/privacy-consent.php:327 ../includes/welcome.php:421 +msgid "Proof-of-Consent" +msgstr "" + +#: ../includes/privacy-consent.php:304 ../includes/privacy-consent.php:317 +#: ../includes/settings.php:952 ../includes/settings.php:966 +#: ../includes/settings.php:1017 ../includes/settings.php:1029 +msgid "Log in & Configure" +msgstr "" + +#: ../includes/privacy-consent.php:305 ../includes/settings.php:953 +#: ../includes/settings.php:1018 +msgid "Log in to the Cookie Compliance™ dashboard to explore, configure and manage its functionalities." +msgstr "" + +#: ../includes/privacy-consent.php:312 ../includes/privacy-consent.php:313 +#: ../includes/privacy-consent.php:314 ../includes/settings.php:961 +#: ../includes/settings.php:962 ../includes/settings.php:963 +#: ../includes/settings.php:1025 ../includes/settings.php:1026 +msgid "Pending" +msgstr "" + +#: ../includes/privacy-consent.php:318 ../includes/settings.php:967 +#: ../includes/settings.php:1030 +msgid "Log in to the Cookie Compliance™ web application and complete the setup process." +msgstr "" + +#: ../includes/privacy-consent.php:325 ../includes/privacy-consent.php:326 +#: ../includes/privacy-consent.php:327 ../includes/settings.php:980 +#: ../includes/settings.php:981 ../includes/settings.php:982 +#: ../includes/settings.php:1037 ../includes/settings.php:1038 +msgid "Inactive" +msgstr "" + +#: ../includes/privacy-consent.php:331 ../includes/settings.php:1042 +#, php-format +msgid "Sign up to %s and enable Privacy Consent support." +msgstr "" + +#: ../includes/privacy-consent.php:355 +#, php-format +msgid "Enable to apply privacy consent support for %s forms." +msgstr "" + +#: ../includes/privacy-consent.php:658 ../includes/settings.php:2181 +msgid "Settings saved." +msgstr "" + +#: ../includes/privacy-consent.php:662 ../includes/settings.php:2185 +msgid "Settings restored to defaults." +msgstr "" + +#: ../includes/settings.php:143 ../includes/settings.php:338 +msgid "Cookie Consent" +msgstr "" + +#: ../includes/settings.php:159 ../includes/settings.php:1013 +#: ../includes/settings.php:1025 ../includes/settings.php:1037 +#: ../includes/welcome.php:419 +msgid "Cookie Consent Logs" +msgstr "" + +#: ../includes/settings.php:160 ../includes/settings.php:1014 +#: ../includes/settings.php:1026 ../includes/settings.php:1038 +#: ../includes/welcome.php:420 +msgid "Privacy Consent Logs" +msgstr "" + +#: ../includes/settings.php:173 +msgid "Page Type" +msgstr "" + +#: ../includes/settings.php:174 +msgid "Page" +msgstr "" + +#: ../includes/settings.php:175 +msgid "Post Type" +msgstr "" + +#: ../includes/settings.php:176 +msgid "Post Type Archive" +msgstr "" + +#: ../includes/settings.php:177 +msgid "User Type" +msgstr "" + +#: ../includes/settings.php:178 +msgid "Taxonomy Archive" +msgstr "" + +#: ../includes/settings.php:182 +msgid "is equal to" +msgstr "" + +#: ../includes/settings.php:183 +msgid "is not equal to" +msgstr "" + +#: ../includes/settings.php:187 +msgid "Hide the banner" +msgstr "" + +#: ../includes/settings.php:188 +msgid "Show the banner" +msgstr "" + +#: ../includes/settings.php:192 +msgid "Top" +msgstr "" + +#: ../includes/settings.php:193 +msgid "Bottom" +msgstr "" + +#: ../includes/settings.php:197 ../includes/settings.php:240 +msgid "None" +msgstr "" + +#: ../includes/settings.php:198 +msgid "Light" +msgstr "" + +#: ../includes/settings.php:199 +msgid "Dark" +msgstr "" + +#: ../includes/settings.php:203 +msgid "Automatic" +msgstr "" + +#: ../includes/settings.php:204 +msgid "Manual" +msgstr "" + +#: ../includes/settings.php:208 +msgid "Page link" +msgstr "" + +#: ../includes/settings.php:209 +msgid "Custom link" +msgstr "" + +#: ../includes/settings.php:215 +msgid "Banner" +msgstr "" + +#: ../includes/settings.php:216 ../includes/settings.php:827 +msgid "Message" +msgstr "" + +#: ../includes/settings.php:220 +msgid "Text color" +msgstr "" + +#: ../includes/settings.php:221 +msgid "Button color" +msgstr "" + +#: ../includes/settings.php:222 +msgid "Bar color" +msgstr "" + +#: ../includes/settings.php:228 +msgid "An hour" +msgstr "" + +#: ../includes/settings.php:229 +msgid "1 day" +msgstr "" + +#: ../includes/settings.php:230 +msgid "1 week" +msgstr "" + +#: ../includes/settings.php:235 +msgid "infinity" +msgstr "" + +#: ../includes/settings.php:241 +msgid "Fade" +msgstr "" + +#: ../includes/settings.php:242 +msgid "Slide" +msgstr "" + +#: ../includes/settings.php:246 +msgid "Header" +msgstr "" + +#: ../includes/settings.php:247 +msgid "Footer" +msgstr "" + +#: ../includes/settings.php:252 +msgid "Private" +msgstr "" + +#: ../includes/settings.php:253 +msgid "Balanced" +msgstr "" + +#: ../includes/settings.php:254 +msgid "Personalized" +msgstr "" + +#: ../includes/settings.php:257 +msgid "Silver" +msgstr "" + +#: ../includes/settings.php:258 +msgid "Gold" +msgstr "" + +#: ../includes/settings.php:259 +msgid "Platinum" +msgstr "" + +#: ../includes/settings.php:262 +msgid "Reject All" +msgstr "" + +#: ../includes/settings.php:263 +msgid "Accept Some" +msgstr "" + +#: ../includes/settings.php:264 +msgid "Accept All" +msgstr "" + +#: ../includes/settings.php:269 +msgid "Save my preferences" +msgstr "" + +#: ../includes/settings.php:270 ../includes/settings.php:294 +#: ../includes/settings.php:829 +msgid "Privacy policy" +msgstr "" + +#: ../includes/settings.php:271 +msgid "Do Not Sell" +msgstr "" + +#: ../includes/settings.php:273 +msgid "Your data is your property and we support your right to privacy and transparency." +msgstr "" + +#: ../includes/settings.php:274 +msgid "To provide you the best experience on our website, we use cookies or similar technologies. Select a data access level to decide for which purposes we may use and share your data." +msgstr "" + +#: ../includes/settings.php:275 +msgid "Highest level of privacy. Data accessed for necessary site operations only. Data shared with 3rd parties to ensure the site is secure and works on your device." +msgstr "" + +#: ../includes/settings.php:276 +msgid "Balanced experience. Data accessed for content personalisation and site optimisation. Data shared with 3rd parties may be used to track and store your preferences for this site." +msgstr "" + +#: ../includes/settings.php:277 +msgid "Highest level of personalisation. Data accessed to make ads and media more relevant. Data shared with 3rd parties may be use to track you on this site and other sites you visit." +msgstr "" + +#: ../includes/settings.php:281 +msgid "month" +msgstr "" + +#: ../includes/settings.php:282 +msgid "months" +msgstr "" + +#: ../includes/settings.php:289 +msgid "We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it." +msgstr "" + +#: ../includes/settings.php:290 +msgid "Ok" +msgstr "" + +#: ../includes/settings.php:291 +msgid "No" +msgstr "" + +#: ../includes/settings.php:292 +msgid "You can revoke your consent any time using the Revoke consent button." +msgstr "" + +#: ../includes/settings.php:293 ../includes/settings.php:831 +msgid "Revoke consent" +msgstr "" + +#: ../includes/settings.php:337 +msgid "Privacy" +msgstr "" + +#: ../includes/settings.php:338 +msgid "Cookie Notice - Cookie Consent" +msgstr "" + +#: ../includes/settings.php:339 +msgid "Cookie Notice - Privacy Consent" +msgstr "" + +#: ../includes/settings.php:340 +msgid "Cookie Notice - Consent Logs" +msgstr "" + +#: ../includes/settings.php:355 +msgid "NEW!" +msgstr "" + +#: ../includes/settings.php:391 +msgid "Cookie Notice & Compliance for GDPR/CCPA" +msgstr "" + +#: ../includes/settings.php:437 +msgid "Global network settings override is inactive. Consent records are available for each website of the multisite network separately." +msgstr "" + +#: ../includes/settings.php:439 +msgid "Global network settings override is active. Consent records are available for network administrators in the multisite admin only." +msgstr "" + +#: ../includes/settings.php:477 +msgid "Handle Privacy Consent Logs with Cookie Compliance" +msgstr "" + +#: ../includes/settings.php:478 +msgid "Integrate your website forms with Privacy Consent." +msgstr "" + +#: ../includes/settings.php:479 +msgid "Collect and export proof of consent of your users." +msgstr "" + +#: ../includes/settings.php:480 +msgid "Gain confidence that you are processing personal data legally." +msgstr "" + +#: ../includes/settings.php:523 +msgid "Record and view Cookie Consent Logs inside WordPress" +msgstr "" + +#: ../includes/settings.php:524 +msgid "Automatically collect each cookie consent log." +msgstr "" + +#: ../includes/settings.php:525 +msgid "Securely store and manage visitor consents." +msgstr "" + +#: ../includes/settings.php:526 +msgid "Monitor consent activity directly in your WordPress dashboard." +msgstr "" + +#: ../includes/settings.php:622 +msgid "Reset to defaults" +msgstr "" + +#: ../includes/settings.php:654 +msgid "Your Cookie Compliance plan:" +msgstr "" + +#: ../includes/settings.php:655 ../includes/welcome.php:327 +msgid "Professional" +msgstr "" + +#: ../includes/settings.php:655 ../includes/welcome.php:304 +#: ../includes/welcome.php:596 ../includes/welcome.php:694 +msgid "Basic" +msgstr "" + +#: ../includes/settings.php:658 ../includes/welcome.php:308 +#: ../includes/welcome.php:340 +msgid "GDPR, CCPA, LGPD, PECR requirements" +msgstr "" + +#: ../includes/settings.php:659 ../includes/welcome.php:309 +#: ../includes/welcome.php:341 +msgid "Consent Analytics Dashboard" +msgstr "" + +#: ../includes/settings.php:660 ../includes/welcome.php:342 +#, php-format +msgid "%sUnlimited%s visits" +msgstr "" + +#: ../includes/settings.php:661 ../includes/welcome.php:343 +#, php-format +msgid "%sUnlimited%s privacy consents" +msgstr "" + +#: ../includes/settings.php:662 ../includes/welcome.php:344 +#, php-format +msgid "%sLifetime%s consent storage" +msgstr "" + +#: ../includes/settings.php:663 ../includes/welcome.php:313 +#: ../includes/welcome.php:345 +#, php-format +msgid "%sGoogle & Facebook%s consent modes" +msgstr "" + +#: ../includes/settings.php:664 ../includes/welcome.php:314 +#: ../includes/welcome.php:346 +#, php-format +msgid "%sGeolocation%s support" +msgstr "" + +#: ../includes/settings.php:665 ../includes/welcome.php:347 +#, php-format +msgid "%sUnlimited%s languages" +msgstr "" + +#: ../includes/settings.php:666 ../includes/welcome.php:348 +#, php-format +msgid "%sPriority%s Support" +msgstr "" + +#: ../includes/settings.php:681 +msgid "Protect your business" +msgstr "" + +#: ../includes/settings.php:682 +msgid "with Cookie Compliance™" +msgstr "" + +#: ../includes/settings.php:684 +msgid "Make your website compatible with the latest cookie and privacy requirements. Comply with GDPR, CCPA and other data privacy laws effectively." +msgstr "" + +#: ../includes/settings.php:686 +msgid "Cookie Compliance dashboard" +msgstr "" + +#: ../includes/settings.php:687 +msgid "Learn more" +msgstr "" + +#: ../includes/settings.php:697 +msgid "F.A.Q." +msgstr "" + +#: ../includes/settings.php:701 +msgid "Does the Cookie Notice make my site fully compliant with GDPR/CCPA and other privacy regulations?" +msgstr "" + +#: ../includes/settings.php:702 +msgid "It is not possible to provide the required technical compliance features using only a WordPress plugin. Features like consent record storage, purpose categories and script blocking that bring your site into full compliance with privacy regulations are only available through the Cookie Compliance integration." +msgstr "" + +#: ../includes/settings.php:706 +msgid "Does the Cookie Compliance integration make my site fully compliant with GDPR/CCPA?" +msgstr "" + +#: ../includes/settings.php:707 +msgid "Yes! The plugin + web application version includes technical compliance features to meet requirements for over 100 countries and legal jurisdictions." +msgstr "" + +#: ../includes/settings.php:711 +msgid "Is Cookie Compliance free?" +msgstr "" + +#: ../includes/settings.php:712 +msgid "Yes, but with limits. Cookie Compliance includes both free and paid plans to choose from depending on your needs and your website monthly traffic." +msgstr "" + +#: ../includes/settings.php:716 +msgid "Where can I find pricing options?" +msgstr "" + +#: ../includes/settings.php:717 +msgid "You can learn more about the features and pricing by visiting the Cookie Compliance website here:" +msgstr "" + +#: ../includes/settings.php:767 ../includes/settings.php:772 +msgid "Network Settings" +msgstr "" + +#: ../includes/settings.php:768 +msgid "Global Settings Override" +msgstr "" + +#: ../includes/settings.php:769 +msgid "Global Cookie" +msgstr "" + +#: ../includes/settings.php:803 ../includes/settings.php:822 +msgid "App ID" +msgstr "" + +#: ../includes/settings.php:804 ../includes/settings.php:823 +msgid "App Key" +msgstr "" + +#: ../includes/settings.php:807 +msgid "Cookie Consent Settings" +msgstr "" + +#: ../includes/settings.php:808 ../includes/settings.php:947 +#: ../includes/settings.php:961 ../includes/settings.php:980 +#: ../includes/welcome.php:417 +msgid "Autoblocking" +msgstr "" + +#: ../includes/settings.php:809 +msgid "Scripts" +msgstr "" + +#: ../includes/settings.php:810 +msgid "Caching Compatibility" +msgstr "" + +#: ../includes/settings.php:811 ../includes/settings.php:1100 +msgid "Purge Cache" +msgstr "" + +#: ../includes/settings.php:812 +msgid "Conditional Display" +msgstr "" + +#: ../includes/settings.php:813 +msgid "Bot Detection" +msgstr "" + +#: ../includes/settings.php:814 +msgid "AMP Support" +msgstr "" + +#: ../includes/settings.php:815 +msgid "Debug Mode" +msgstr "" + +#: ../includes/settings.php:816 ../includes/settings.php:840 +msgid "Deactivation" +msgstr "" + +#: ../includes/settings.php:821 +msgid "Compliance status" +msgstr "" + +#: ../includes/settings.php:826 +msgid "Cookie Notice Settings" +msgstr "" + +#: ../includes/settings.php:828 +msgid "Button text" +msgstr "" + +#: ../includes/settings.php:830 +msgid "Refuse consent" +msgstr "" + +#: ../includes/settings.php:832 +msgid "Script blocking" +msgstr "" + +#: ../includes/settings.php:833 +msgid "Reloading" +msgstr "" + +#: ../includes/settings.php:834 +msgid "On scroll" +msgstr "" + +#: ../includes/settings.php:835 +msgid "On click" +msgstr "" + +#: ../includes/settings.php:836 +msgid "Accepted expiry" +msgstr "" + +#: ../includes/settings.php:837 +msgid "Rejected expiry" +msgstr "" + +#: ../includes/settings.php:838 +msgid "Conditional display" +msgstr "" + +#: ../includes/settings.php:839 +msgid "Script placement" +msgstr "" + +#: ../includes/settings.php:843 +msgid "Cookie Notice Design" +msgstr "" + +#: ../includes/settings.php:844 +msgid "Position" +msgstr "" + +#: ../includes/settings.php:845 +msgid "Animation" +msgstr "" + +#: ../includes/settings.php:846 +msgid "Colors" +msgstr "" + +#: ../includes/settings.php:847 +msgid "Button class" +msgstr "" + +#: ../includes/settings.php:859 +msgid "Enable global network settings override." +msgstr "" + +#: ../includes/settings.php:860 +msgid "Every site in the network will use the same settings. Site administrators will not be able to change them." +msgstr "" + +#: ../includes/settings.php:874 +msgid "This option works only for domain-based networks." +msgstr "" + +#: ../includes/settings.php:880 +msgid "Enable global network cookie consent." +msgstr "" + +#: ../includes/settings.php:881 +msgid "Cookie consent in one of the network sites results in a consent in all of the sites on the network." +msgstr "" + +#: ../includes/settings.php:892 +msgid "Global network settings override is active. Every site will use the same network settings. Please contact super administrator if you want to have more control over the settings." +msgstr "" + +#: ../includes/settings.php:948 ../includes/settings.php:962 +#: ../includes/settings.php:981 ../includes/welcome.php:418 +msgid "Cookie Categories" +msgstr "" + +#: ../includes/settings.php:949 ../includes/settings.php:963 +#: ../includes/settings.php:982 +msgid "Cookie Consent Storage" +msgstr "" + +#: ../includes/settings.php:986 +#, php-format +msgid "Sign up to %s and add GDPR, CCPA and other international data privacy laws compliance features." +msgstr "" + +#: ../includes/settings.php:1056 +msgid "Enter your Cookie Compliance™ application ID." +msgstr "" + +#: ../includes/settings.php:1069 +msgid "Enter your Cookie Compliance™ application secret key." +msgstr "" + +#: ../includes/settings.php:1086 +msgid "Enable to automatically block 3rd party scripts before user consent is set." +msgstr "" + +#: ../includes/settings.php:1087 +msgid "This option has been temporarily disabled because your website has reached the usage limit for the Cookie Compliance Basic plan. It will become available again when the current visits cycle resets or you upgrade your website to a Professional plan." +msgstr "" + +#: ../includes/settings.php:1102 +msgid "Click the Purge Cache button to refresh the app configuration." +msgstr "" + +#: ../includes/settings.php:1117 +msgid "Enable conditional display of the banner." +msgstr "" + +#: ../includes/settings.php:1129 +msgid "Determine what should happen when the following conditions are met." +msgstr "" + +#: ../includes/settings.php:1165 +msgid "Enable to run the consent banner in debug mode." +msgstr "" + +#: ../includes/settings.php:1179 +msgid "Enable to support AMP." +msgstr "" + +#: ../includes/settings.php:1180 +msgid "No compatible Google AMP plugins found." +msgstr "" + +#: ../includes/settings.php:1180 +msgid "Allows you to activate consent banner support for Google AMP." +msgstr "" + +#: ../includes/settings.php:1192 +msgid "Enable to activate bot detection and reduce the number of calculated website visits." +msgstr "" + +#: ../includes/settings.php:1213 +msgid "Currently detected active caching plugins" +msgstr "" + +#: ../includes/settings.php:1221 +msgid "No compatible cache plugins found." +msgstr "" + +#: ../includes/settings.php:1225 +msgid "Enable to apply changes improving compatibility with caching plugins." +msgstr "" + +#: ../includes/settings.php:1238 +msgid "Enter the cookie notice message." +msgstr "" + +#: ../includes/settings.php:1251 +msgid "The text of the option to accept the notice and make it disappear." +msgstr "" + +#: ../includes/settings.php:1266 +msgid "Enable to give to the user the possibility to refuse third party non functional cookies." +msgstr "" + +#: ../includes/settings.php:1270 +msgid "The text of the button to refuse the consent." +msgstr "" + +#: ../includes/settings.php:1291 +msgid "Head" +msgstr "" + +#: ../includes/settings.php:1292 +msgid "Body" +msgstr "" + +#: ../includes/settings.php:1295 +msgid "The code to be used in your site header, before the closing head tag." +msgstr "" + +#: ../includes/settings.php:1299 +msgid "The code to be used in your site footer, before the closing body tag." +msgstr "" + +#: ../includes/settings.php:1303 +msgid "Enter non functional cookies Javascript code here (for e.g. Google Analitycs) to be used after the visitor consent is given." +msgstr "" + +#: ../includes/settings.php:1318 +#, php-format +msgid "Enable to give to the user the possibility to revoke their consent %s(requires \"Refuse consent\" option enabled)%s." +msgstr "" + +#: ../includes/settings.php:1321 +msgid "Enter the revoke message." +msgstr "" + +#: ../includes/settings.php:1323 +msgid "The text of the button to revoke the consent." +msgstr "" + +#: ../includes/settings.php:1331 +#, php-format +msgid "Select the method for displaying the revoke button - automatic (in the banner) or manual using %s[cookies_revoke]%s shortcode." +msgstr "" + +#: ../includes/settings.php:1344 +msgid "Enable to reload the page after the notice is accepted." +msgstr "" + +#: ../includes/settings.php:1375 +msgid "Enable privacy policy link." +msgstr "" + +#: ../includes/settings.php:1378 +msgid "The text of the privacy policy button." +msgstr "" + +#: ../includes/settings.php:1388 +msgid "Select where to redirect user for more information." +msgstr "" + +#: ../includes/settings.php:1391 +msgid "-- select page --" +msgstr "" + +#: ../includes/settings.php:1402 +msgid "Select from one of your site's pages." +msgstr "" + +#: ../includes/settings.php:1408 +msgid "Synchronize with WordPress Privacy Policy page." +msgstr "" + +#: ../includes/settings.php:1415 +msgid "Enter the full URL starting with http(s)://" +msgstr "" + +#: ../includes/settings.php:1425 +msgid "Select the privacy policy link target." +msgstr "" + +#: ../includes/settings.php:1435 +msgid "Select the privacy policy link position." +msgstr "" + +#: ../includes/settings.php:1458 +msgid "The amount of time that the cookie should be stored for when user accepts the notice." +msgstr "" + +#: ../includes/settings.php:1479 +msgid "The amount of time that the cookie should be stored for when the user doesn't accept the notice." +msgstr "" + +#: ../includes/settings.php:1498 +msgid "Select where all the plugin scripts should be placed." +msgstr "" + +#: ../includes/settings.php:1517 +msgid "Select location for the notice." +msgstr "" + +#: ../includes/settings.php:1536 +msgid "Select the animation style." +msgstr "" + +#: ../includes/settings.php:1551 +msgid "Enable to accept the notice when user scrolls." +msgstr "" + +#: ../includes/settings.php:1554 +msgid "Number of pixels user has to scroll to accept the notice and make it disappear." +msgstr "" + +#: ../includes/settings.php:1567 +msgid "Enable to accept the notice on any click on the page." +msgstr "" + +#: ../includes/settings.php:1579 +msgid "Enable if you want all plugin data to be deleted on deactivation." +msgstr "" + +#: ../includes/settings.php:1592 +msgid "Enter additional button CSS classes separated by spaces." +msgstr "" + +#: ../includes/settings.php:1617 +msgid "Bar opacity" +msgstr "" + +#: ../includes/settings.php:1792 +msgid "It looks like some of the Consent Security Policy (CSP) records in your website's .htaccess file may be causing Cookie Compliance loading problems. Make sure you allow loading of Cookie Compliance resources by adding the following record:" +msgstr "" + +#: ../includes/settings.php:1792 +msgid "img-src data:; style-src 'unsafe-inline'; connect-src *.hu-manity.co; script-src 'unsafe-inline' *.hu-manity.co" +msgstr "" + +#: ../includes/settings.php:2288 +msgid "Are you sure you want to reset these settings to defaults?" +msgstr "" + +#: ../includes/settings.php:2423 +msgid "or" +msgstr "" + +#: ../includes/settings.php:2490 +msgid "+ Add rule" +msgstr "" + +#: ../includes/settings.php:2491 +msgid "Create a set of rules to define the exact conditions for displaying or hiding the banner." +msgstr "" + +#: ../includes/settings.php:2597 +msgid "-- no public archives --" +msgstr "" + +#: ../includes/settings.php:2616 +msgid "-- no public terms --" +msgstr "" + +#: ../includes/settings.php:2730 +#, php-format +msgid "Untitled Page %d" +msgstr "" + +#: ../includes/settings.php:2744 +msgid "Front Page" +msgstr "" + +#: ../includes/settings.php:2745 +msgid "Home Page" +msgstr "" + +#: ../includes/settings.php:2756 +msgid "Logged in" +msgstr "" + +#: ../includes/settings.php:2757 +msgid "Guest" +msgstr "" + +#: ../includes/welcome-api.php:35 ../includes/welcome-api.php:39 +#: ../includes/welcome-api.php:46 ../includes/welcome-api.php:59 +#: ../includes/welcome.php:207 ../includes/welcome.php:235 +#: ../includes/welcome.php:238 +msgid "You do not have permission to access this page." +msgstr "" + +#: ../includes/welcome-api.php:115 ../includes/welcome-api.php:361 +#: ../includes/welcome-api.php:403 ../includes/welcome-api.php:563 +#: ../includes/welcome-api.php:637 ../includes/welcome-api.php:1242 +#: ../includes/welcome.php:128 +msgid "Unexpected error occurred. Please try again later." +msgstr "" + +#: ../includes/welcome-api.php:152 +msgid "Empty plan or payment method data." +msgstr "" + +#: ../includes/welcome-api.php:187 +msgid "Unable to create customer data." +msgstr "" + +#: ../includes/welcome-api.php:226 +msgid "Unable to create payment mehotd." +msgstr "" + +#: ../includes/welcome-api.php:232 +msgid "No payment method token." +msgstr "" + +#: ../includes/welcome-api.php:288 +msgid "Please accept the Terms of Service to proceed." +msgstr "" + +#: ../includes/welcome-api.php:297 ../includes/welcome-api.php:531 +msgid "Email is not allowed to be empty." +msgstr "" + +#: ../includes/welcome-api.php:307 ../includes/welcome-api.php:540 +msgid "Password is not allowed to be empty." +msgstr "" + +#: ../includes/welcome-api.php:313 +msgid "The password contains illegal characters or does not meet the conditions." +msgstr "" + +#: ../includes/welcome-api.php:319 +msgid "Passwords do not match." +msgstr "" + +#: ../includes/welcome-api.php:1212 +msgid "\"AppID\" is not allowed to be empty." +msgstr "" + +#: ../includes/welcome.php:129 +msgid "Passed" +msgstr "" + +#: ../includes/welcome.php:130 +msgid "Failed" +msgstr "" + +#: ../includes/welcome.php:131 ../includes/welcome.php:328 +#: ../includes/welcome.php:597 ../includes/welcome.php:695 +msgid "monthly" +msgstr "" + +#: ../includes/welcome.php:132 +msgid "yearly" +msgstr "" + +#: ../includes/welcome.php:136 +#, php-format +msgid "%sCompliance Failed!%sYour website does not achieve minimum viable compliance. %sSign up to Cookie Compliance%s to bring your site into compliance with the latest data privacy rules and regulations." +msgstr "" + +#: ../includes/welcome.php:137 +#, php-format +msgid "%sCompliance Passed!%sCongratulations. Your website meets minimum viable compliance." +msgstr "" + +#: ../includes/welcome.php:138 ../includes/welcome.php:697 +msgid "available" +msgstr "" + +#: ../includes/welcome.php:139 +msgid "Please fill all the required fields." +msgstr "" + +#: ../includes/welcome.php:253 +msgid "Simple cookie & privacy compliance solution for your business." +msgstr "" + +#: ../includes/welcome.php:260 +msgid "Protect your business and take a proactive approach to data privacy laws with Cookie Compliance™. Build trust by giving your website visitors a beautiful, multi-level consent experience that complies with the latest cookie regulations in 100+ countries." +msgstr "" + +#: ../includes/welcome.php:264 +msgid "Sign up to Cookie Compliance" +msgstr "" + +#: ../includes/welcome.php:265 +msgid "Skip for now" +msgstr "" + +#: ../includes/welcome.php:288 +msgid "Consent Management Platform with simple, transparent pricing." +msgstr "" + +#: ../includes/welcome.php:290 +msgid "Choose monthly or yearly payment and number of domains for the fully featured, Professional plan. Or start with limited, Basic plan for free." +msgstr "" + +#: ../includes/welcome.php:294 +msgid "Select plan" +msgstr "" + +#: ../includes/welcome.php:296 +msgid "Monthly" +msgstr "" + +#: ../includes/welcome.php:297 +msgid "Yearly" +msgstr "" + +#: ../includes/welcome.php:297 +msgid "Save 12%" +msgstr "" + +#: ../includes/welcome.php:305 +msgid "Free" +msgstr "" + +#: ../includes/welcome.php:310 +#, php-format +msgid "%s1,000%s visits / month" +msgstr "" + +#: ../includes/welcome.php:311 +#, php-format +msgid "%s100%s privacy consents" +msgstr "" + +#: ../includes/welcome.php:312 +#, php-format +msgid "%s30 days%s consent storage" +msgstr "" + +#: ../includes/welcome.php:315 +#, php-format +msgid "%s1 additional%s language" +msgstr "" + +#: ../includes/welcome.php:316 +#, php-format +msgid "%sBasic%s Support" +msgstr "" + +#: ../includes/welcome.php:319 +msgid "Start Basic" +msgstr "" + +#: ../includes/welcome.php:329 +msgid "Recommended" +msgstr "" + +#: ../includes/welcome.php:331 +msgid "Pricing options" +msgstr "" + +#: ../includes/welcome.php:332 ../includes/welcome.php:333 +#: ../includes/welcome.php:334 ../includes/welcome.php:335 +#, php-format +msgid "%s domain license" +msgstr "" + +#: ../includes/welcome.php:351 +msgid "Start Professional" +msgstr "" + +#: ../includes/welcome.php:357 +msgid "I don’t want to create an account now" +msgstr "" + +#: ../includes/welcome.php:375 +msgid "Congratulations" +msgstr "" + +#: ../includes/welcome.php:376 +msgid "You have successfully signed up to Cookie Compliance." +msgstr "" + +#: ../includes/welcome.php:378 +msgid "Log in to your account and continue configuring your website." +msgstr "" + +#: ../includes/welcome.php:381 +msgid "Go to Application" +msgstr "" + +#: ../includes/welcome.php:406 +msgid "Compliance check" +msgstr "" + +#: ../includes/welcome.php:407 +msgid "This is a Compliance Check to determine your site’s compliance with updated data processing and consent rules under GDPR, CCPA and other international data privacy laws." +msgstr "" + +#: ../includes/welcome.php:409 +msgid "Site URL" +msgstr "" + +#: ../includes/welcome.php:410 +msgid "Site Name" +msgstr "" + +#: ../includes/welcome.php:413 +msgid "Checking..." +msgstr "" + +#: ../includes/welcome.php:416 +msgid "Notify visitors to the site that it uses cookies or similar technologies." +msgstr "" + +#: ../includes/welcome.php:417 +msgid "Block non-essential 3rd party services until consent is registered." +msgstr "" + +#: ../includes/welcome.php:418 +msgid "Allow to customize the consent requested per purpose of use." +msgstr "" + +#: ../includes/welcome.php:419 +msgid "Save the website visitor's cookie consent preferences." +msgstr "" + +#: ../includes/welcome.php:420 +msgid "Record the website user's consent to the processing of personal data." +msgstr "" + +#: ../includes/welcome.php:421 +msgid "Store and export a Proof-of-consent in secure audit format." +msgstr "" + +#: ../includes/welcome.php:437 +msgid "Live Setup" +msgstr "" + +#: ../includes/welcome.php:438 +msgid "Configure your Cookie Notice & Compliance design and compliance features through the options below. Click Apply Setup to save the configuration and go to selecting your preferred cookie solution." +msgstr "" + +#: ../includes/welcome.php:442 +msgid "Banner Compliance" +msgstr "" + +#: ../includes/welcome.php:463 +msgid "Select the laws that apply to your business" +msgstr "" + +#: ../includes/welcome.php:465 +msgid "GDPR" +msgstr "" + +#: ../includes/welcome.php:465 +msgid "European Union and Switzerland" +msgstr "" + +#: ../includes/welcome.php:466 +msgid "CCPA/CPRA" +msgstr "" + +#: ../includes/welcome.php:466 +msgid "California" +msgstr "" + +#: ../includes/welcome.php:467 +msgid "Other U.S. State Laws" +msgstr "" + +#: ../includes/welcome.php:467 +msgid "Virginia, Colorado, Connecticut, Utah, etc." +msgstr "" + +#: ../includes/welcome.php:468 +msgid "UK PECR" +msgstr "" + +#: ../includes/welcome.php:468 +msgid "United Kingdom" +msgstr "" + +#: ../includes/welcome.php:469 +msgid "LGPD" +msgstr "" + +#: ../includes/welcome.php:469 +msgid "Brazil" +msgstr "" + +#: ../includes/welcome.php:470 +msgid "PIPEDA" +msgstr "" + +#: ../includes/welcome.php:470 +msgid "Canada" +msgstr "" + +#: ../includes/welcome.php:471 +msgid "POPIA" +msgstr "" + +#: ../includes/welcome.php:471 +msgid "South Africa" +msgstr "" + +#: ../includes/welcome.php:476 +msgid "Select a naming style for the consent choices" +msgstr "" + +#: ../includes/welcome.php:478 +msgid "Private, Balanced, Personalized" +msgstr "" + +#: ../includes/welcome.php:479 +msgid "Silver, Gold, Platinum" +msgstr "" + +#: ../includes/welcome.php:480 +msgid "Reject All, Accept Some, Accept All​" +msgstr "" + +#: ../includes/welcome.php:484 +msgid "Select basic consent options:" +msgstr "" + +#: ../includes/welcome.php:486 +msgid "Consent on Scroll" +msgstr "" + +#: ../includes/welcome.php:487 +msgid "Consent on Click" +msgstr "" + +#: ../includes/welcome.php:488 +msgid "UI Blocking" +msgstr "" + +#: ../includes/welcome.php:489 +msgid "Revoke Consent" +msgstr "" + +#: ../includes/welcome.php:496 +msgid "Banner Design" +msgstr "" + +#: ../includes/welcome.php:500 +msgid "Select your preferred display position" +msgstr "" + +#: ../includes/welcome.php:510 +msgid "Adjust the banner color scheme" +msgstr "" + +#: ../includes/welcome.php:512 +msgid "Color of the buttons and interactive elements." +msgstr "" + +#: ../includes/welcome.php:513 +msgid "Color of the banner background." +msgstr "" + +#: ../includes/welcome.php:514 +msgid "Color of the body text." +msgstr "" + +#: ../includes/welcome.php:515 +msgid "Color of the borders and inactive elements." +msgstr "" + +#: ../includes/welcome.php:516 +msgid "Color of the heading text." +msgstr "" + +#: ../includes/welcome.php:517 +msgid "Color of the button text." +msgstr "" + +#: ../includes/welcome.php:525 +msgid "Apply Setup" +msgstr "" + +#: ../includes/welcome.php:543 +msgid "Compliance account" +msgstr "" + +#: ../includes/welcome.php:545 +msgid "Create a Cookie Compliance™ account and select your preferred plan." +msgstr "" + +#: ../includes/welcome.php:549 +msgid "Create Account" +msgstr "" + +#: ../includes/welcome.php:565 +#, php-format +msgid "I have read and agree to the %sTerms of Service%s" +msgstr "" + +#: ../includes/welcome.php:569 +msgid "Sign Up" +msgstr "" + +#: ../includes/welcome.php:583 +msgid "Already have an account?" +msgstr "" + +#: ../includes/welcome.php:583 ../includes/welcome.php:669 +msgid "Sign in" +msgstr "" + +#: ../includes/welcome.php:590 ../includes/welcome.php:688 +msgid "Select Plan" +msgstr "" + +#: ../includes/welcome.php:597 ../includes/welcome.php:695 +#, php-format +msgid "%sProfessional%s" +msgstr "" + +#: ../includes/welcome.php:601 ../includes/welcome.php:702 +#: ../includes/welcome.php:741 +msgid "Confirm" +msgstr "" + +#: ../includes/welcome.php:606 ../includes/welcome.php:707 +msgid "Payment Method" +msgstr "" + +#: ../includes/welcome.php:608 ../includes/welcome.php:709 +msgid "Credit Card" +msgstr "" + +#: ../includes/welcome.php:609 ../includes/welcome.php:710 +msgid "PayPal" +msgstr "" + +#: ../includes/welcome.php:615 ../includes/welcome.php:716 +msgid "Card Number" +msgstr "" + +#: ../includes/welcome.php:619 ../includes/welcome.php:720 +msgid "Expiration Date" +msgstr "" + +#: ../includes/welcome.php:623 ../includes/welcome.php:724 +msgid "CVC/CVV" +msgstr "" + +#: ../includes/welcome.php:627 ../includes/welcome.php:728 +msgid "Submit" +msgstr "" + +#: ../includes/welcome.php:652 +msgid "Compliance Sign in" +msgstr "" + +#: ../includes/welcome.php:654 +msgid "Sign in to your existing Cookie Compliance™ account and select your preferred plan." +msgstr "" + +#: ../includes/welcome.php:658 +msgid "Account Login" +msgstr "" + +#: ../includes/welcome.php:683 +msgid "Don't have an account yet?" +msgstr "" + +#: ../includes/welcome.php:683 +msgid "Sign up" +msgstr "" + +#: ../includes/welcome.php:697 +msgid "Use License" +msgstr "" + +#: ../includes/welcome.php:737 +msgid "Select subscription" +msgstr "" + +#: ../includes/welcome.php:761 +msgid "Success!" +msgstr "" + +#: ../includes/welcome.php:762 +msgid "You have successfully integrated your website to Cookie Compliance™" +msgstr "" + +#: ../includes/welcome.php:762 +#, php-format +msgid "Go to Cookie Compliance application now. Or access it anytime from your %sCookie Notice settings page%s." +msgstr "" diff --git a/wp-content/plugins/cookie-notice/readme.txt b/wp-content/plugins/cookie-notice/readme.txt new file mode 100644 index 0000000..419bb59 --- /dev/null +++ b/wp-content/plugins/cookie-notice/readme.txt @@ -0,0 +1,719 @@ +=== Compliance by Hu-manity.co === +Contributors: humanityco +Tags: gdpr, ccpa, cookies, consent, privacy +Requires at least: 4.9.6 +Requires PHP: 7.4 +Tested up to: 6.9 +Stable tag: 3.0.5 +License: MIT License +License URI: http://opensource.org/licenses/MIT + +Intentional Consent for WordPress — GDPR, CCPA, CPRA & ePrivacy compliance with consent records, autoblocking & Google Consent Mode v2. + +== Description == + +Compliance by Hu-manity.co (formerly known as Cookie Notice) provides a simple, customizable website banner that can be used to help your website comply with cookie consent requirements under the EU GDPR, CCPA, and other data privacy laws — with seamless integration with Cookie Compliance to help your site comply with the latest updates to existing consent laws. + +Cookie Compliance is a fully featured Consent Management Platform (CMP) that provides automated compliance features and enhanced design controls in a state-of-the-art web application. Cookie Compliance enables websites to take a proactive approach to data protection and consent laws. It is the first solution to offer Intentional Consent, a new consent framework that incorporates the latest guidelines from over 100+ countries, and emerging standards from leading international organizations like the IEEE and European Center for Digital Rights (noyb.eu). Cookie Compliance provides a beautiful, multi-level experience and includes new choices and controls for site visitors to better understand and engage in data privacy decisions. + +> Our Cookie Compliance web application introduces a more ethical, proactive way to capture and manage consent. This early version of the emerging Intentional Consent framework is a result of Hu-manity.co’s ongoing work with top Fortune 500 companies, governments, and standards organizations, who believe that the imbalanced relationship between consumers and corporations is unsustainable when it comes to data privacy and consent online. We are making it available for all website owners and operators who share this belief and support our mission to eliminate the dark patterns in online consent.
    +> Matt Sinderbrand - Chief Platform Officer, Hu-manity.co + +## Compliance (plugin only) + +Compliance by Hu-manity.co provides a simple, customizable website banner to help your website comply with certain cookie consent requirements. + += Banner features: = + +* Customizable notice message +* Consent on click, scroll or close +* Multiple cookie expiry options +* Link to Privacy Policy page +* WordPress Privacy Policy page synchronization +* WPML and Polylang compatible +* SEO friendly + +## Cookie Compliance (plugin + web application) + +Cookie Compliance gives you access to the most up-to-date formatting guidelines and technical compliance requirements for over 100 countries and legal jurisdictions. + += Banner features: = + +* Intentional Consent provides 3 equal buttons to give site visitors the ability to accept none, some, or all cookies through packaged choices called Data Access Levels. Data Access Levels improve consent conversion and eliminate the dark pattern of deceptive, non-equal choices in the first layer. Complies with equal choice principle prescribed under GDPR and other data protection laws. +* Consent duration selector gives visitor control over how long their consent remains valid for your site. Enables your site to align with recent guidelines from EU Data Protection Authorities, which state that cookie consent should be valid for no longer than a period of 6 months. +* Cookie purpose categories make it easy for website visitors to customize their consent by category. Complies with affirmative, opt-in consent requirements prescribed under GDPR and other data protection laws. +* Consent metrics displays the visitor's consent record and a list of blocked / allowed 3rd parties directly in the expanded level of the banner. Complies with latest guidance from EU Data Protection Authorities like CNIL (France) and ICO (UK). +* Customizable Privacy Paper provides helpful information to improve visitor comprehension and understanding of the data sharing risks and benefits. Allows you to summarize core components of your sites privacy notice and aligns with the informed principle prescribed by GDPR rules for valid consent capture. +* Configurable Privacy Contact allows you to provide contact information for a business’ data privacy admin, as well as helpful links to data subject request forms and other data privacy resources. Aligns with the informed principle prescribed by GDPR rules for valid consent capture. + += Web Application features: = + +* Consent analytics dashboard shows event data for number of visits and provides a “trust score” to help you track how site visitors are setting their consent. Make adjustments to your banner to improve your cookie acceptance rate and monitor progress via the consent activity graph. +* Default configurations for GDPR, CCPA and more help to remove dark patterns and allow for quick and easy deployment of the consent banner without any guesswork. Customize the design of any default configuration to match the look and feel of your site. +* Automatic script blocking blocks all non-essential cookie scripts and iFrames by default and complies with valid consent rules under GDPR and other data protection laws; in order to be compliant, your site must record visitor consent before setting or sending cookies. +* Google Consent Mode ensures that your website can still gather valuable insights and perform effectively while respecting users' privacy preferences by dynamically adjusting the behavior of Google services according to user consent. +* Facebook Consent Mode allows your website to measure the impact of your ads on Facebook, track website activities and conversions and automatically deliver ads to Facebook if the user has agreed to. +* Consent record storage automatically stores a record of each consent and makes these records available for export. Complies with proof-of-consent requirements prescribed under GDPR and other data protection laws. +* Multilingual support automatically translates all banner text strings and allows you to provide custom translations for every text field to ensure visitors get a consistent consent experience. +* Multidomain management allows you to manage additional Free or Professional domains under a single account and enables you to customize banner configuration and design for each domain independently. + += Cookie Compliance proactive approach: = + +For all businesses, the resources required to stay ahead of the latest regulations increases with the passage of each new law. With enforcement of compliance violations increasing daily, we believe it is critical for us as a trusted consent vendor to do everything in our power to help you stay ahead of these laws and remove the risk to your business + +Cookie Compliance covers all current and upcoming regulations: + +* GDPR (EU) +* ePrivacy Directive (EU) +* ePrivacy Regulation (EU) +* PECR (UK) +* LGPD (Brazil) +* PIPEDA (Canada) +* PDPB (India) +* CCPA (California, US) +* VCDPA (Virginia, US) +* Colorado Privacy Act (US) +* CPRA (California, US) + +Cookie Compliance incorporates all recent formatting guidance: + +* European Data Protection Supervisor (EDPS) +* ICO (United Kingdom) +* CNIL (France) +* GPDP (Italy) +* BfDl (Germany) +* AEPD (Spain) +* European Center for Digital Rights (noyb.eu) + +Cookie Compliance targets dark patterns + +Dark Patterns are user interface (UI) techniques that push site visitors to make decisions (such as agreeing to the installation of cookies on their devices) that they might not otherwise make. The most common Dark Pattern is the lack of an equal “reject all” button on the first layer of the consent notice. Dark Patterns are explicitly banned under GDPR and other data protection laws. + +As a part of our proactive approach, Cookie Compliance is configured by default to prevent Dark Patterns through our unique Intentional Consent design. + +== Installation == + +1. Install Compliance by Hu-manity.co either via the WordPress.org plugin directory, or by uploading the files to your server +2. Activate the plugin through the 'Plugins' menu in WordPress +3. Go to the Compliance settings and set your options. +4. Click "Add Compliance features" button to start Cookie Compliance integration. +5. Create Cookie Compliance account and select plan. +6. Log in to Cookie Compliance web application anytime to customize the settings. + +== Privacy == + +Compliance by Hu-manity.co is a Consent Management Platform client. Depending on how you use it, the plugin may send data to Hu-manity.co services on your behalf. This section describes what data leaves your WordPress server and when. It is kept up to date as the plugin evolves; material changes are noted in the changelog. + += Plugin-only mode (Banner Only / Basic) = + +If you install the plugin and choose "Banner Only" in the Welcome screen — or never open the Welcome screen at all — the plugin operates entirely on your WordPress site. No account is created and the plugin does not initiate calls to Hu-manity.co services. + += Connected mode (Free or Professional) = + +If you create a Cookie Compliance account from the Welcome screen (or log into an existing one), the plugin connects your site to the Hu-manity.co platform. While connected, the plugin sends data over HTTPS to Hu-manity.co's platform services (hosted under `*-api.hu-manity.co`) for the following purposes: + +* Account sign-up and sign-in, and registering your site as an application. +* Fetching and updating your banner configuration. +* Fetching consent analytics and individual consent records shown in the Audit Trail. +* Processing subscription payments (Professional plans only). + +The data sent depends on the feature you are using and typically includes: + +* **Account-identifying data** such as the email address and password used for sign-up or sign-in. +* **Site-identifying data** such as your site's URL, title, description, and language. +* **Application credentials** (App ID and Secret Key) issued to your site at registration, included with subsequent platform requests. +* **Subscription and billing data** for Professional plans, such as the selected plan identifier and a one-time payment token described below. +* **Integration telemetry** such as the plugin version and which admin interface (React or Legacy) you are using, sent as HTTP headers so we can understand integration adoption and support the plugin. +* **Operational metadata** such as the timestamp and locale of a request, as is normal for HTTPS API calls. + +As the plugin evolves, additional non-personal fields of the same categories listed above may be sent to support new features. Material changes are noted in the changelog. + += Payments (Professional plans only) = + +Payment card details are collected by Braintree's hosted-fields SDK running in your browser and are tokenized there. The plugin and Hu-manity.co servers do not receive raw card data. A one-time, non-replayable Braintree token is sent to Hu-manity.co's platform to create the subscription. + += Deactivation feedback = + +If you deactivate the plugin and fill in the optional deactivation feedback form, the reason you select, any free-text comment you type, and your site URL are sent once to Hu-manity.co so we can improve the product. Submitting the form is optional; clicking "Skip" sends nothing. This applies to both Plugin-only and Connected modes. + += The banner shown to your site visitors = + +The consent banner shown to your site visitors is served from `cdn.hu-manity.co/hu-banner.min.js`. When a visitor interacts with the banner, the banner script (running in the visitor's browser, not the plugin) communicates directly with Hu-manity.co services to record the consent decision — this is what makes consent records available to you in the Audit Trail. This data flow is between the visitor's browser and Hu-manity.co and does not pass through your WordPress server. Because these requests originate in the visitor's browser, the visitor's IP address is visible to Hu-manity.co as part of standard HTTPS network handling. + += Local state set by the plugin = + +The plugin stores operational state in three places. None of this is transmitted to Hu-manity.co: + +* **On your WordPress server (options and transients)** — for example, a welcome-modal dismissal timestamp (`cookie_notice_welcome_dismissed`) and short-lived caches of API tokens and configuration. +* **In the admin user's browser (localStorage)** — for example, first-run setup flags such as `cn_setup_wizard_complete_*` and `cn_has_platform_config_*`. +* **In visitor browsers (a short-lived `hu-form` cookie, 5 minutes)** — set when forms with consent integration are submitted. Used locally by the form-consent flow. + +As the plugin evolves, additional keys may be stored in any of these locations. They remain local state on your site or in the user's browser — not data sent to Hu-manity.co. Material changes to this pattern would be noted in the changelog. + += Data the plugin does not send = + +* The plugin does not transmit visitor IP addresses, cookies, page URLs, or page content as data fields. IP addresses are, as with any HTTPS request, visible to the receiving server as part of standard network handling. +* The plugin does not transmit the content of your posts, pages, users, or WordPress database. +* The plugin does not send data to third parties other than Hu-manity.co and, for Professional plan payments, Braintree (a PayPal service). + += Service providers = + +* Hu-manity.co / Cookie Compliance — primary service provider. + * Terms of Service: https://cookie-compliance.co/terms-of-service/ + * Privacy contact: https://cookie-compliance.co/documentation/privacy-contact/ +* Braintree (a PayPal service) — processes Professional plan signups initiated from the plugin (not invoked for Basic or Free). +* When you manage your subscription from the Cookie Compliance web application, additional payment gateway providers may process your billing information. +* Hu-manity.co's email subscription service — receives your account email address and name to manage newsletter and operational email preferences. You can unsubscribe at any time via the email footer or by deleting your account. + +Account and consent data is processed in the European Union (AWS Ireland region). Hu-manity.co's public marketing websites (hu-manity.co, cookie-compliance.co) are hosted separately in the United States. + += How long we retain your data = + +* Plugin-side caches on your WordPress server (API tokens, subscription data, configuration) are short-lived, with TTLs typically up to 24 hours. The visitor `hu-form` cookie expires after 5 minutes. +* On the Hu-manity.co platform, account information and consent records are retained as long as your Cookie Compliance account is active, and are removed when the account is deleted or via an erasure request. + += What rights you have over your data = + +* **Stop further sends.** Deactivate the plugin from the Plugins screen — no further plugin-initiated API calls will be made. +* **Export consent records.** Site owners can export cookie-consent and privacy-consent logs as CSV from the Cookie Compliance web application. +* **Delete your account and all associated data.** The Cookie Compliance web application has an account-deletion flow. Triggering it cancels active subscriptions, deletes your apps and banner configuration, removes your consent records from the platform, and nullifies free-text personal data before deleting the account. +* **Erasure of visitor data (GDPR Article 17 / CCPA Delete).** To request erasure of a specific visitor's records (by email, session ID, IP, or consent ID), contact Hu-manity.co via the privacy contact page above. Hu-manity.co processes the request and erases the matching records from its storage systems within 30 days, in line with GDPR Article 12. +* **Manage consent (visitors).** Site visitors can adjust their consent at any time through the consent banner. + +== Frequently Asked Questions == + += Is Compliance by Hu-manity.co free? = +Yes! Compliance by Hu-manity.co is free software. + += Is Cookie Compliance free? = +Yes, but with limits. Cookie Compliance includes both free and paid plans to choose from depending on your needs and your website traffic. + += Does Compliance by Hu-manity.co make my site fully compliant with GDPR or US Privacy Laws? = +No. The plugin-only version DOES NOT include technical compliance features such as automatic script blocking, consent purpose categories, or consent record storage. These features are only available through the Cookie Compliance integration. + += Does the Cookie Compiance integration make my site fully compliant with GDPR and US Privacy Laws? = +Yes! The plugin + web appliaction version includes technical compliance features to meet requirements for over 100 countries and legal jurisdictions. + +== Screenshots == + +1. Compliance by Hu-manity.co — Notice settings, Compliance integration inactive +2. Compliance by Hu-manity.co — Notice settings, Compliance integration active +3. Cookie Compliance dashboard overview +4. Cookie Compliance settings + +== Changelog == + += 3.0.5 = +* Fix: Disabling Autoblocking via the legacy settings form on multisite sites now saves correctly. + += 3.0.4 = +* Fix: The Compliance settings page no longer breaks on sites where Cloudflare Rocket Loader or a caching/optimizer plugin (WP Rocket, LiteSpeed Cache, Autoptimize, NitroPack, SG Speed Optimizer, or Jetpack Boost) is configured to process WP admin scripts. The plugin's admin bundle now signals these tools to skip it, extending the same banner-script protection added in 3.0.3. +* Fix: If the Compliance settings page fails to load, you now see a "Loading Compliance dashboard…" message that reveals troubleshooting steps (caching plugin, browser extension, incognito mode) and a link to support — replacing the silent white screen some users hit when a CDN, optimizer, or browser extension blocked the admin bundle. + += 3.0.3 = +* Tweak: Send client type, plugin version, and admin UI mode (React or Legacy) as HTTP headers on platform API requests to support integration adoption analytics. No effect on banner behavior, site visitors, or consent data. +* Docs: Added a Privacy section to the readme describing, by service and data category, what the plugin sends to Hu-manity.co services and when. Placed after Installation per WordPress convention. Covers admin-side state stored on the WordPress site (options, transients, localStorage), the visitor IP visibility implied by the banner's direct browser-to-platform requests, retention of plugin-side caches and platform-side account/consent data, sub-processors (Braintree for plugin-initiated payments, additional payment gateway providers for webapp-managed subscriptions, and Hu-manity.co's email subscription service), data processing location (European Union, AWS Ireland), and concrete data-subject rights (deactivation, CSV export, account deletion, and GDPR Article 17 / CCPA erasure of visitor records within a 30-day SLA per GDPR Article 12). +* Fix: Added JS optimizer exclusion attributes to the banner script tags to prevent caching and performance plugins from delaying consent recording. Covers WP Rocket (data-nowprocket), Autoptimize (data-noptimize), LiteSpeed Cache (data-no-optimize), NitroPack (nitro-exclude), Jetpack Boost (data-jetpack-boost), and Cloudflare Rocket Loader (data-cfasync). Also adds stable IDs (hu-banner-options, hu-banner-js) so users of plugins without attribute support (W3 Total Cache, SG Optimizer, Swift Performance) can enter these as exclusion keywords in their plugin settings. +* New: GPC banner mode is now configurable directly from the plugin. The Protection tab's GPC panel exposes three options for what visitors see when their browser signals Global Privacy Control — "Show passive notice" (a brief auto-dismiss confirmation that the preference was honored), "Silent" (no on-screen indication), or "Show full banner" (the standard consent flow). When CCPA or other US privacy laws are selected, the plugin defaults to "Show passive notice" — improving transparency without re-displaying the banner on every page. The active mode is also surfaced on the GPC Support card under Compliance Behavior so site admins can see at a glance how GPC manifests for their visitors. The setting can still be changed at any time in the Cookie Compliance web application. + += 3.0.2 = +* Fix: Decouple Autoblocking from privacy law selection in React and legacy settings — the toggle now appears for connected users regardless of whether laws are configured, and is no longer mislabeled as a Pro-only feature in the legacy UI. +* Fix: Preserve boolean types when caching Designer, Account, and Analytics API responses — compliance flags such as gpcSupportMode, doNotTrackMode, onScroll, onClick, uiBlocking, revokeConsent and nested regulations were being silently coerced to strings, which risks breaking strict type checks downstream. + += 3.0.1 = +* Fix: Resolved missing file error preventing plugin activation for some users who updated during the initial 3.0.0 release + += 3.0.0 = +* Rebrand: Plugin renamed from "Cookie Notice & Compliance for GDPR / CCPA" to "Compliance by Hu-manity.co". WordPress admin sidebar now reads "Compliance" with Settings and Audit Trail submenus. All internal option keys and slugs remain unchanged — no action required for existing installs. +* New: Modern React-based admin dashboard replaces the legacy PHP settings pages. Three main tabs — Protection, Settings, and Audit Trail — with a polished, card-based interface. +* New: Guided setup wizard with banner template picker (6 presets), setup checklist, and quick-start configuration for new installs. +* New: Welcome Modal with in-plugin account creation, plan selection, and Braintree payment — complete the signup flow without leaving WordPress. +* New: Protection Chooser — redesigned tier selection (Basic, Professional, Business) with feature comparison cards. +* New: 5-position banner placement selector (top, bottom, floating left, floating right, floating center) with fixed/floating toggle. Dismiss animation controls added to Banner Design settings. +* New: Law Selector with geo-aware regulation display and compliance context for GDPR, CCPA, and 100+ jurisdictions. +* New: Consent Modes panel — configure Google Consent Mode v2, Facebook, and Microsoft consent toggles directly from the plugin. +* New: Audit Trail tab — view consent log records pulled live, with dynamic consent level labels. +* New: Conditional Display rule builder — control when and where the consent banner appears. +* New: Excluded Script Handles setting — exclude specific scripts from autoblocking by handle name. +* New: Centralized notification system with contextual calls-to-action based on your setup status and subscription tier. +* New: Portal deep links — jump directly from the plugin to the relevant page in the Cookie Compliance web application. +* New: Live configuration sync — admin pages pull fresh banner configuration from the platform on load. +* New: React ErrorBoundary prevents white-screen crashes — admin gracefully recovers from unexpected errors. +* Improvement: Pro feature indicators show locked features with upgrade prompts for free-tier users. +* Improvement: Usage dashboard shows near-limit nudge at 70%+ of cycle usage. +* Improvement: Email-exists recovery flow guides users who try to register with an existing account. +* Fix: Domain URL normalization on login prevents duplicate app registrations. + += 2.5.16 = +* Fix: Multisite with global override now correctly reads blocking data and cache-purge transients from network storage +* Fix: Custom patterns and providers are now always included in huOptions regardless of autoblocking state + += 2.5.15 = +* Fix: Multisite with global override now correctly loads custom blocking patterns and providers on the frontend + += 2.5.12 = +* New: Added pull configuration option to sync on demand instead of waiting for cron + += 2.5.11 = +* Security: Enforce TLS verification for platform API requests. +* Security: Require capability + nonce for cache purge and privacy consent/conditional rule AJAX handlers. +* Tweak: Switch admin notice JS to vanilla to avoid jQuery conflicts and ensure notices can be closed. + += 2.5.10 = +* Fix: Make close icon keyboard-focusable (Enter/Space handler, tabindex, focus outline) +* Fix: Ensure policy link uses href/target and data attrs so "Message" position opens correctly +* Fix: Enqueue frontend JS when [cookies_revoke] shortcode is present to allow reopen links for logged-in sessions +* Fix: Guard legacy options fallback to avoid PHP 8 fatal on non-array settings + += 2.5.9 = +* Security: Fixed Stored XSS vulnerability in [cookies_accepted] shortcode via HTML entity resurrection +* New: Easy Digital Downloads privacy consent support +* Fix: Improved bot detection and object cache compatibility + += 2.5.8 = +* New: Microsoft Clarity Consent API v2 support +* Fix: Prevent loading banner in Beaver Builder +* Fix: Improved bot detection and object cache compatibility +* Fix: Close icon accessibility by switching to button + += 2.5.7 = +* New: Microsoft Consent Mode support +* Tweak: Convert banner links to buttons (for accessibility) +* Tweak: Improved compatibility with caching plugins +* Fix: Displaying cookie notice in admin + += 2.5.6 = +* New: Added Form and Source columns to Privacy Consents table +* Fix: WooCommerce render block issue +* Tweak: Updated WooCommerce Blocks Checkout handling +* Tweak: Disable Privacy Consent cupport when there are no forms available +* Tweak: Updated Chart.js to 4.4.8 + += 2.5.5 = +* New: Added Privacy Consent activity chart +* Fix: Hummingbird caching plugin compatibility + += 2.5.4 = +* New: Option to handle all or selected forms in Privacy Consent +* Fix: Undefined array key "form_type" when switching WooCommerce forms + += 2.5.3 = +* Fix: Undefined huOptions variable +* Fix: Prevent loading Privacy Consent modules without Cookie Compliance +* Tweak: Updated Chart.js to 4.4.6 + += 2.5.2 = +* Fix: Fatal error on pages with embedded contact form 7 forms + += 2.5.1 = +* Fix: Missing one of the plugin files + += 2.5.0 = +* New: Introducing Privacy Consent +* Tweak: UI updates for the Consent Logs page +* Tweak: Onboarding screen UI improvements +* Tweak: Switch from local to GMT time for consent logs display +* Tweak: Admin menu reorganization + += 2.4.18 = +* Fix: Potential security issue with escaping textarea fields +* Fix: Saving link target for Privacy Policy page +* Fix: Force protocol for widget URL + += 2.4.17 = +* New: SpeedyCache caching plugin compatibility +* New: Breeze caching plugin compatibility +* Fix: Improved WP Rocket plugin compatibility +* Fix: Improved Speed Optimize plugin compatibility +* Fix: Network settings override switching +* Tweak: Chart.js updated to 4.4.3 + += 2.4.16 = +* New: Option to enable/disable bot detection +* Fix: Typo in wp_die() function calls +* Tweak: Improved escaping text strings + += 2.4.15 = +* New: Passing Google Consent default parameters (Cookie Compliance only) +* Fix: Invalid Norwegian language locale code + += 2.4.14 = +* New: Google Consent V2 support (Cookie Compliance only) +* New: Added scripts option to Compliance Settings + += 2.4.13 = +* Fix: Removed unneeded parameter from WP Fastest Cache compatibility fix + += 2.4.12 = +* New: WP Optimize caching plugin compatibility +* Fix: WP Fastest Cache plugin compatibility + += 2.4.11 = +* New: Dedicated Consent Logs page +* New: Google AMP support for Cookie Compliance +* New: Settings navigation through tabs and menu items +* Fix: Saving App ID/Key not working in edge cases +* Tweak: Chart.js updated to 4.4.0 + += 2.4.10 = +* New: Option to enable/disable caching compatibility +* New: WP Fastest Cache plugin compatibility +* Fix: Potential security issue with purging cache +* Fix: Improved refreshing Compliance analytics data +* Tweak: Chart.js updated to 4.3.2 + += 2.4.9 = +* New: WP Rocket plugin compatibility +* New: LiteSpeed Cache plugin compatibility +* New: Google Consent Mode support (Cookie Compliance only) +* New: Facebook Pixel Consent Mode support (Cookie Compliance only) + += 2.4.8 = +* New: Added Pages to Conditional display +* Fix: Homepage display issue +* Fix: Background color issue +* Tweak: Improved WP Rocket support +* Tweak: Improved SG Optimizer support + += 2.4.7 = +* New: Conditional display of the banner +* Tweak: Improved sanitization and validation of data +* Tweak: PHP 8.1 and 8.2 compatibility +* Tweak: Added async attribute when autoblocking is disabled + += 2.4.6 = +* Fix: Cookie Compliance inactive status issue + += 2.4.5 = +* Tweak: Remove the notice from the Elementor page builder +* Tweak: Remove the notice from widgets screen +* Fix: Improved Contact Form 7 reCaptcha compatibility + += 2.4.4 = +* Fix: Undefined index: status and subscription + += 2.4.3 = +* Fix: Deprecated preg_replace() notice in PHP 8.1 + += 2.4.2 = +* New: Compatibility with Autoptimize plugin +* Fix: Improved Contact Form 7 reCaptcha support +* Fix: Fixed non-static method cookies_set() + += 2.4.1 = +* New: Contact Form 7 reCaptcha support +* Tweak: Switched health status from critical to recommended when Cookie Compliance is not integrated +* Tweak: Add SimeSite=Lax for created cookies + += 2.4.0 = +* New: Advanced Multisite support +* Fix: Polylang translation not working for shortcode +* Fix: Parse error: syntax error, unexpected ‘[‘ + += 2.3.1 = +* New: Option to run consent banner in debug mode +* Fix: Invalid validation of dismissable notices + += 2.3.0 = +* New: Compliance Multi-license pricing options +* Tweak: WordPress 6.0 compatibility + += 2.2.3 = +* Fix: Undefined notice in WP dashboard +* Fix: Close icon event not firing +* Tweak: Remove aria-label from the close icon +* Tweak: CSS tweaks in the admin + += 2.2.2 = +* Fix: Uncrawlable close notice link +* Tweak: WordPress 5.9 compatibility +* Tweak: Prevent displaying the notice in an iframe +* Tweak: Send site language to a web app on signup + += 2.2.1 = +* Fix: Missing variable definition in frontend + += 2.2.0 = +* New: Option to hide banner for logged in users (Compliance only) + += 2.1.5 = +* Tweak: Additional sanitization applied + += 2.1.4 = +* Fix: Wordpress 5.8 widgets compatibility + += 2.1.3 = +* Fix: HTML attributes removed from text strings +* Tweak: Improved sanitization of options + += 2.1.2 = +* Tweak: Improved escaping of button labels + += 2.1.1 = +* Fix: Security bug related to compliance caching + += 2.1.0 = +* New: Introducing Cookie Compliance Free plan + += 2.0.4 = +* Fix: Undefined constant HOURS_IN_SECONDS +* Fix: Button style none adding CSS classes "cn-set-cookie cn-button" +* Tweak: Switched the behavior of close icon from accept to reject +* Tweak: Minified frontend and admin js files + += 2.0.3 = +* Fix: Cookies accepted function issue when Compliance activated + += 2.0.2 = +* Tweak: UI/UX improvements + += 2.0.1 = +* Fix: Pending Compliance update blocking the notice +* Fix: PHP Warning: Cannot modify header information +* Tweak: UI/UX fixes for the settings screen + += 2.0.0 = +* New: Introducing Cookie Compliance for GDPR/CCPA + += 1.3.2 = +* Tweak: Speed up Corona Banner loading by moving JS file to footer with async parameter +* Tweak: Improve buttons CSS padding +* Tweak: Accessibility improvements on links + += 1.3.1 = +* Fix: Unable to select Privacy policy link +* Fix: Blank Cookies policy link in a message +* Fix: Undefined index: on_click +* Tweak: Adjusted default opacity back to 100 + += 1.3.0 = +* New: Introducing Corona Banner that displays data about Coronavirus pandemia and five steps recommended by the WHO (World Health Organization) +* New: Option to set bar opacity +* New: Accept the notice with close icon +* Fix: Policy link added to message without policy option enabled + += 1.2.51 = +* Fix: Problems with iOS and OK/Reject button +* Tweak: Added Separate cookie expiry for Reject, props Carlos Buchart + += 1.2.50 = +* Fix: The body css class always set to "cookies-refused" +* Tweak: Improve IE & Safari CustomEvent and ClassList support +* Tweak: Change the plugin js init event + += 1.2.49 = +* New: Option to accept the notice with any page click +* Tweak: Remove jQuery dependency +* Tweak: Swtich from jQuery to CSS3 animations +* Tweak: Improve the CSS and HTML structure + += 1.2.48 = +* Fix: HTML tags stripped from cookie message +* Fix: Link target not accepted in inline privacy link + += 1.2.47 = +* New: Option to select the privacy policy link position +* Tweak: Do not relad the page on refuse button click +* Tweak: Added aria-label attribute to cookie notice container + += 1.2.46 = +* Tweak: Remove WP Super Cache cookie on deactivation +* Tweak: Remove plugin version from the db on deactivation + += 1.2.45 = +* Tweak: Improved WP Super Cache support +* Tweak: CSS container style issue and media query for mobile + += 1.2.44 = +* Fix: The text of the revoke button ignored in shortcode +* Fix: Revoke consent button not displayed automatically in top position +* Tweak: Add shortcode parsing for content of [cookies_accepted], thanks to [dsturm](https://github.com/dsturm) + += 1.2.43 = +* New: Option to revoke the user consent +* New: Script blocking extended to header and footer +* New: Synchronization with WordPress 4.9.6 Privacy Policy page +* New: Custom button class option +* Tweak: Added 1 hour cookie expiry option + += 1.2.42 = +* New: Introducing [cookies_accepted][/cookies_accepted] shortcode +* Fix: Infinite cookie expiry issue + += 1.2.41 = +* Fix: Infinite redirection loop with scroll enabled + += 1.2.40 = +* Fix: Div align center on some themes +* Tweak: Extended list of allowed HTML tags in refuse code +* Tweak: Minified CSS and JS + += 1.2.39 = +* New: Option to reload the page after cookies are accepted + += 1.2.38 = +* Tweak: Move frontend cookie js functions before the document ready call, thanks to [fgreinus](https://github.com/fgreinus) +* Tweak: Adjust functional javascript code handling +* Fix: Chhromium infinity expiration date not valid +* Fix: Remove deprecated screen_icon() function + += 1.2.37 = +* Tweak: Add aria landmark role="banner" +* Tweak: Extend cn_cookie_notice_args with button class + += 1.2.36.1 = +* Fix: Repository upload issue with 1.2.36 + += 1.2.36 = +* Fix: String translation support for WMPL 3.2+ +* Fix: Global var possible conflict with other plugins +* Tweak: Add $options array to "cn_cookie_notice_output" filter, thanks to [chesio](https://github.com/chesio). +* Tweak: Removed local translation files in favor of WP repository translations. + += 1.2.35 = +* Tweak: Use html_entity_decode on non-functional code block +* Tweak: get_pages() function placement optimization +* Tweak: Filterable manage cookie notice capability + += 1.2.34 = +* Fix: Empty href in links HTML validation issue + += 1.2.33 = +* New: Greek translation thanks to Elias Stefanidis + += 1.2.32 = +* Fix: Accept cookie button hidden on acceptance instead of the cookie message container + += 1.2.31 = +* New: Non functional Javascript code field +* Fix: Minified Javascript caching issue + += 1.2.30 = +* Fix: jQuery error after accepting cookies + += 1.2.29 = +* Tweak: Add class to body element when displayed +* Tweak: Italian translation update + += 1.2.28 = +* New: Option to set on scroll offset + += 1.2.27 = +* Tweak: Correctly remove scroll event, limit possible conflicts +* Tweak: Italian translation update + += 1.2.26 = +* Fix: Accept cookies on scroll option working unchecked. +* Fix: call_user_func() warning on lower version of WP + += 1.2.25 = +* New: Option to accept cookies on scroll, thanks to [Cristian Pascottini](http://cristian.pascottini.net/) + += 1.2.24 = +* New: Option to refuse to accept cookies +* New: setCookieNotice custom jQuery event +* Tweak: Italian translation updated, thanks to Luca Speranza + += 1.2.23 = +* New: Finnish translation, thanks to [Daniel Storgards](www.danielstorgards.com) + += 1.2.22 = +* Tweak: Swedish translation updated, thx to Ove Kaufeldt + += 1.2.21 = +* New: Plugin development moved to [dFactory GitHub Repository](https://github.com/dfactoryplugins) +* Tweak: Code cleanup + += 1.2.20 = +* New: Option to select scripts placement, header or footer + += 1.2.19 = +* New: Danish translation, thanks to Lui Wallentin Gottler + += 1.2.18.1 = +* Fix: Quick fix for 1.2.18 print_r in code + += 1.2.18 = +* New: More info link target option +* Tweak: Additional HTML ids, for more flexible customization + += 1.2.17 = +* New: Hebrew translation, thanks to [Ahrale Shrem](http://atar4u.com/) + += 1.2.16 = +* Tweak: Dutch translation missing due to a typo + += 1.2.15 = +* New: Danish translation, thanks to Hans C. Jorgensen +* Fix: Notice bar not visible if no animation selected + += 1.2.14 = +* New: Hungarian translation, thanks to [Surbma](http://surbma.hu) + += 1.2.13 = +* New: Croatian translation, thanks to [Marko Beus](http://www.markobeus.com/) + += 1.2.12 = +* New: Slovenian translation, thanks to Thomas Cuk + += 1.2.11 = +* New: Swedish translation, thanks to [Daniel Storgards](http://www.danielstorgards.com/) + += 1.2.10 = +* New: Italian translation, thanks to [Luca](http://www.lucacicca.it) +* Tweak: Confirmed WP 4.0 compatibility + += 1.2.9.1 = +* Tweak: Enable HTML in cookie message text +* New: Option to donate this plugin :) + += 1.2.8 = +* New: Czech translation, thanks to [Adam Laita](http://laita.cz) + += 1.2.7 = +* New: French translation, thanks to [Laura Orsal](http://www.traductrice-independante.fr) +* New: Deleting plugin settings on deactivation as an option + += 1.2.6 = +* New: German translation, thanks to Alex Ernst + += 1.2.5 = +* New: Spanish translation, thanks to Fernando Blasco + += 1.2.4 = +* New: Added filter hooks to customize where and how display the cookie notice + += 1.2.3 = +* New: Portuguese translation, thanks to Luis Maia + += 1.2.2 = +* Fix: Read more linking to default site language in WPML & Polylang + += 1.2.1 = +* Tweak: UI improvements for WP 3.8 + += 1.2.0 = +* Fix: Cookie not saving in IE +* Fix: Notice hidden under Admin bar bug +* Tweak: Improved WPML & Polylang compatibility + += 1.1.0 = +* New: Rewritten cookie setting method to pure JS +* Fix: Compatibility with WP Super Cache and other caching plugins + += 1.0.2 = +* New: Dutch translation, thanks to Heleen van den Bos + += 1.0.1 = +* Tweak: Changed setting cookie mode from AJAX to JS driven + += 1.0.0 = +Initial release + +== Upgrade Notice == + += 2.5.12 = +Added pull configuration option to sync on demand instead of waiting for cron + += 2.5.11 = +Security hardening (TLS verification, admin capability checks, nonce-protected cache purge) and improved admin notices closing without jQuery conflicts diff --git a/wp-content/plugins/cookie-notice/templates/empty.html b/wp-content/plugins/cookie-notice/templates/empty.html new file mode 100644 index 0000000..4ee08d2 --- /dev/null +++ b/wp-content/plugins/cookie-notice/templates/empty.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/wp-super-cache/LICENSE.txt b/wp-content/plugins/wp-super-cache/LICENSE.txt new file mode 100644 index 0000000..490c84a --- /dev/null +++ b/wp-content/plugins/wp-super-cache/LICENSE.txt @@ -0,0 +1,355 @@ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, see . + + +=================================== + + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Moe Ghoul, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/wp-content/plugins/wp-super-cache/SECURITY.md b/wp-content/plugins/wp-super-cache/SECURITY.md new file mode 100644 index 0000000..98f48dd --- /dev/null +++ b/wp-content/plugins/wp-super-cache/SECURITY.md @@ -0,0 +1,47 @@ +# Security Policy + +Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). + +## Supported Versions + +Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. + +## Reporting a Vulnerability + +Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: + +* [Jetpack](https://jetpack.com/) +* Jetpack Backup +* Jetpack Boost +* Jetpack CRM +* Jetpack Protect +* Jetpack Search +* Jetpack Social +* Jetpack VideoPress + +**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** + +Our most critical targets are: + +* Jetpack and the Jetpack composer packages (all within this repo) +* Jetpack.com -- the primary marketing site. +* cloud.jetpack.com -- a management site. +* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. + +For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). + +_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ + +## Guidelines + +We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: + +* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). +* Pen-testing Production: + * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). + * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. + * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. + * To be eligible for a bounty, all of these guidelines must be followed. +* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. + +We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/plugins/wp-super-cache/advanced-cache.php b/wp-content/plugins/wp-super-cache/advanced-cache.php new file mode 100644 index 0000000..7bf3f1e --- /dev/null +++ b/wp-content/plugins/wp-super-cache/advanced-cache.php @@ -0,0 +1,29 @@ +'; + } +} + +if ( false == defined( 'WPCACHEHOME' ) ) { + define( 'ADVANCEDCACHEPROBLEM', 1 ); +} elseif ( ! include_once WPCACHEHOME . 'wp-cache-phase1.php' ) { + if ( ! @is_file( WPCACHEHOME . 'wp-cache-phase1.php' ) ) { + define( 'ADVANCEDCACHEPROBLEM', 1 ); + } +} +if ( defined( 'ADVANCEDCACHEPROBLEM' ) ) { + register_shutdown_function( 'wpcache_broken_message' ); +} diff --git a/wp-content/plugins/wp-super-cache/assets/automattic-airline.svg b/wp-content/plugins/wp-super-cache/assets/automattic-airline.svg new file mode 100644 index 0000000..f092fca --- /dev/null +++ b/wp-content/plugins/wp-super-cache/assets/automattic-airline.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/wp-content/plugins/wp-super-cache/assets/boost-install-card-main-2x.png b/wp-content/plugins/wp-super-cache/assets/boost-install-card-main-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7c4faa6dba38ed449454274610e8e821144fcb5f GIT binary patch literal 305554 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�k_*?|WdmOBsCF!HL^9|$1>>Bk(&#&s^g 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

    &P1 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�(?y}VfIdsFs@`gvUn&Fs;rkkE}G~Tt#QAh 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 Q(i1);G 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 QYCPZ=Uo^i!IPY}-Kkn6d0RR91 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-super-cache/assets/boost-install-card-main.png b/wp-content/plugins/wp-super-cache/assets/boost-install-card-main.png new file mode 100644 index 0000000000000000000000000000000000000000..7a925d93a787a1d33707ca22753c275d3e2b97f4 GIT binary patch literal 96878 zcmW(+c|6nqAK!*KN0b~xI#et~xsUXf4w4AVH6-^jS2p*w(&6fI6e1D1=Dzm94n7l; zwTFU0LsV{DxonPy{upEPJ!K=p$%?4*p7?iL4c@XYH9dS&ygXx-8EVaJd+U;RbNgoP z&-B4+liso2g<61YaZq24Jt@1lY=5Ss_n>-fdT3}!^H4)^5In(Q*7fkSmb#i~Q)w^K zP1%Zpw>6e6m49_7P=UtGd%gmuvn!9v6m*GA%mEeqX6DUjI^hCn?dCq5Z^EMXuO7rV zjAS|E3QP+aBBq+iiNqP^IV;3q+V+zc+?Jo_=-cuB&|5y^rVZOuWoDb6eUR zcZ85<4m7-9XKQ#L?v@?7?n=y7bNe`x*Zf->AyZ9d*FW)3M+UR`!j=gk0Fq3hcME>JTIuqQIG8Qsd zGaNDWXe!7{^qNk@fN{F|_XlYgzq_AtU5&p}erxwT<89T2_U@sv!%0DFj}kQ%S(-f= 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 z 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 + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/wp-super-cache/assets/jetpack-logo.svg b/wp-content/plugins/wp-super-cache/assets/jetpack-logo.svg new file mode 100644 index 0000000..af8a87c --- /dev/null +++ b/wp-content/plugins/wp-super-cache/assets/jetpack-logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/wp-super-cache/assets/super-cache-icon.png b/wp-content/plugins/wp-super-cache/assets/super-cache-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f950ead2149ba1e1211231c2e1d620d1cce10d GIT binary patch literal 3105 zcmZ`*cTm&W7QVlP5UK>xH6(!~5YmCf&}#@Sgcgd5h)V!nr3r`yY54)tTuK%Z8&VVz zr3(rcBq(+T7TtX)y09o~SwvI>k&+i@-oJ0=n|sfk@1A?Ud(PaMQz-WH)Yiah006YT zgl>TVKuQw=YDnc4+Y}NE01}9Og57DRJf(+jX2CGGq_VgsKfp0zawtDwZp<(=HTM)A@ZxMZ(wt+GT@w)v`ns*y}(2COLTl`S^0@m)gfV$n$vX*GhTjS zQ9|-QTSq}&!LOUQN={T(9Y~j^OS2CjIYwi1y?g_099^vJos;(+`0a3orJZwQb8GjN zYm<}zeEc}GG4y9||DfsVj~*QQE<58=7t%RTgKBp}V>;V^J*|*W>h;Av3B>+vWn#f* z?sqV{=7aNHPdn*mI23?w_99T}>ot$~@s__(+W1Yj1qenLH4HJ?&v& zXUg1VOS$EzU+hA1GiRLjG!Sv=>shQ47t(PzLn}6Os}=RC4{n16^}LWkW3Yb{5Kp-q z+L|&Sim@9ls69S7cMiS5(}2ff$ppk89xd74IMk9_?n-R;BKUCWF*cL}KFL++W6rY) z=F#ds4Yo#XKYsF*qZ#9dFV0cmv1fnk>AHGTCTlPNo91W~9J1w5acOn!nSMY0V{Sxi zHq+A9DJDMYRCTSj1K)2wtzCq_D8h^U0<#Y0A3a_fu|3*sy>*2vF~*h>v2AC%qftJe z6uWD8xRuEn4})JzWEX^lJt=98LV}AqBhHp`$6x=lH$K{ilIu*~Zf$bJmH4X*Da?|3 zSU~jR())aIQPw8;&SVyY-6_Jy+ETVzo80u%Z}B2*vY@(g=v)@7`>ynj@&h3D1o{Oj zz+@Lk1c2Irmzzs)3N$s8rKA9&X8x$*YXSWYlMe$3p`wN%{Xe7V#dlGfUS2k*39YGO zr#F8?kxLbQ%qcyBeXO|h^2DaEj}d!#!^pQUF0C5caKRUD*>?z(%mRWs!e$tmSce`L z65(??@+V4LxuVBS^(B@a^=dZq_l3_b>7X&ja)%gfbe`2vH2}TYS}-vp08EbcX9}YU z=PEzA0&!+?)gA8H+EVht7PFiGLJxw@#ifuQo)38{NLkB2Fmr##&1!9dhMGAL=EZD& zKbA|=Ua)rdz%w6(IFA+?&jCI`##I0P`ia|_C!AKOh*bqX?|3<^eilFIk zWf2y2!2a^k5sgMDOsZvvKmh)0r7&zaYz0=Y8&Z|`qdFm3A?yH}j1liao29N84Wo>d zf>2MPZrB2>8$ypOi7>t)toarxTZHYvIvJAGHPNL3w&+58!M2NPuOZHA=m5~tQNRA? zFG3qjE0Pn+yHpiF+SIOCwwR0yLaHso{n+CrLCK_+DRI^o_Y^J8iYsNe^5Qo}?r$+)I) zshM8zPn^p-$yzZVIzXPetw-*K37_*XhMEo%>!mfU&i zQ<;FFw_=a`Nb|;~Dv~j8oAuuhX7pZ>g4SneP&=D(Y3ZMr->g(5U>X|mbqiA7E1b&1 zjU|6cCf`opz5)~p6Jev|P+$OMhM$Z#sX^_Wn7=JgF4+lvU&x61vI7wc3o^&lv|i6k zd^Cq160zA?Q%?}(Ul!~CDb4K!xl3QvvG;XN`Id^Hv6&o(DW9e|^XVicfWIt(w1dEN z;oSilX57h{fI$!@&s_s#c}AvkZ?|bjV+e zSMA#g58gc-TAimSQO+p(q?Aa_z>^mGR>>0Je{aq7AI@tpr#(-Cvg_MhGj*os8*U+d zs$Gg^?tk;QVagwEj`wQri{q!m>QmOzflB&49gcN5_DeSO3HqF;8?}N^QnPcqbrl!e zbo*x<5&x^&;61bB>;P*tqdRryv+U60R5Z2R3DM&oA+3d(|}B zTE7~D@95*@i<)~a5h z&WTvHfA;b*OFe=uG%P4gYN3&wvNa{ki8Z-z2Mc?LNb+e1T6AT3t1u#QX0PO0YU8BcmzE49g9 zmOM3@rXq)t- wp_nonce_url( admin_url( 'update.php?action=install-plugin&plugin=jetpack-boost' ), 'install-plugin_jetpack-boost' ), + 'activate_url' => admin_url( 'plugins.php' ), + 'is_installed' => wpsc_is_boost_installed(), + ); +} + +/** + * Display an admin notice to install Jetpack Boost. + */ +function wpsc_jetpack_boost_notice() { + if ( ! isset( $_GET['page'] ) || $_GET['page'] !== 'wpsupercache' ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended + return; + } + + // hide the admin notice if Jetpack Boost Cache is already used. + if ( 'BOOST' === wpsc_identify_advanced_cache() ) { + return; + } + + // Don't show the banner if the banner has been dismissed. + $is_dismissed = '1' === get_user_option( 'wpsc_dismissed_boost_admin_notice' ); + if ( $is_dismissed ) { + return; + } + + // Don't show the admin notice if Jetpack Boost is too old. + if ( ! wpsc_is_boost_current() ) { + return; + } + + // Don't show the banner if Super Cache is using features that Boost doesn't support. + if ( ! wpsc_is_boost_compatible() ) { + return; + } + + $config = wpsc_get_boost_migration_config(); + $button_url = $config['is_installed'] ? $config['activate_url'] : $config['install_url']; + $button_class = $config['is_installed'] ? 'wpsc-activate-boost-button' : 'wpsc-install-boost-button'; + + ?> +

    + +

    + +

    +

    +
      + +
    1. ' . esc_html__( 'Boost Settings', 'wp-super-cache' ) . '' ); ?>
    2. +
    3. +
    4. +
    +
    + =' ); + } else { + return true; // don't care if Boost is not installed + } +} \ No newline at end of file diff --git a/wp-content/plugins/wp-super-cache/inc/delete-cache-button.js b/wp-content/plugins/wp-super-cache/inc/delete-cache-button.js new file mode 100644 index 0000000..b63e2c7 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/inc/delete-cache-button.js @@ -0,0 +1,37 @@ +/* global wpsc_ajax */ +( function ( $ ) { + $( document ).ready( function () { + $( '#wp-admin-bar-delete-cache' ).on( 'click', function () { + $( '#wp-admin-bar-delete-cache' ).fadeOut( 'slow' ); + $.ajax( { + type: 'post', + dataType: 'json', + url: wpsc_ajax.ajax_url, + data: { + // wp ajax action + action: 'ajax-delete-cache', + + path: wpsc_ajax.path, + admin: wpsc_ajax.admin, + + // send the nonce along with the request + nonce: wpsc_ajax.nonce, + }, + success: function () { + if ( wpsc_ajax.admin === '1' ) { + // eslint-disable-next-line no-console + console.log( 'Deleted entire cache' ); + } else { + // eslint-disable-next-line no-console + console.log( 'Deleted cache for this page and reloading' ); + } + window.location.reload(); + }, + complete: function () { + $( '#wp-admin-bar-delete-cache' ).fadeIn( 'slow' ); + }, + } ); + return false; + } ); + } ); +} )( jQuery ); diff --git a/wp-content/plugins/wp-super-cache/inc/delete-cache-button.php b/wp-content/plugins/wp-super-cache/inc/delete-cache-button.php new file mode 100644 index 0000000..ffc24f3 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/inc/delete-cache-button.php @@ -0,0 +1,182 @@ +\'\"\r\n\t\(\)]/', '', $_SERVER[ 'REQUEST_URI' ] ); + $path = preg_replace( '`^' . $site_regex . '`', '', $req_uri ); + + $wp_admin_bar->add_menu( array( + 'parent' => '', + 'id' => 'delete-cache', + 'title' => __( 'Delete Cache', 'wp-super-cache' ), + 'meta' => array( 'title' => __( 'Delete cache of the current page', 'wp-super-cache' ) ), + 'href' => wp_nonce_url( admin_url( 'index.php?action=delcachepage&path=' . rawurlencode( $path ) ), 'delete-cache-' . $path . '_0', 'nonce' ) + ) ); + } + + if ( is_admin() && ( wpsupercache_site_admin() || current_user_can( 'delete_others_posts' ) ) ) { + $wp_admin_bar->add_menu( array( + 'parent' => '', + 'id' => 'delete-cache', + 'title' => __( 'Delete Cache', 'wp-super-cache' ), + 'meta' => array( 'title' => __( 'Delete Super Cache cached files', 'wp-super-cache' ) ), + 'href' => wp_nonce_url( admin_url( 'index.php?admin=1&action=delcachepage&path=' . rawurlencode( trailingslashit( $path_to_home ) ) ), 'delete-cache-' . trailingslashit( $path_to_home ) . '_1', 'nonce' ) + ) ); + } +} +add_action( 'admin_bar_menu', 'wpsc_admin_bar_render', 99 ); + +function wpsc_delete_cache_scripts() { + if ( ! is_user_logged_in() ) { + return; + } + + if ( + is_plugin_active( 'amp/amp.php' ) || + ( function_exists( 'ampforwp_is_amp_endpoint' ) && ampforwp_is_amp_endpoint() ) + ) { + wp_cache_debug( 'AMP detected. Not loading Delete Cache button JavaScript.' ); + return; + } + + $path_to_home = rtrim( (string) parse_url( get_option( 'home' ), PHP_URL_PATH ), '/' ); + + wp_enqueue_script( 'delete-cache-button', plugins_url( '/delete-cache-button.js', __FILE__ ), array('jquery'), '1.0', 1 ); + + if ( ( is_singular() || is_archive() || is_front_page() || is_search() ) && current_user_can( 'delete_others_posts' ) ) { + $site_regex = preg_quote( $path_to_home, '`' ); + $req_uri = preg_replace( '/[ <>\'\"\r\n\t\(\)]/', '', $_SERVER[ 'REQUEST_URI' ] ); + $path_to_home = preg_replace( '`^' . $site_regex . '`', '', $req_uri ); + $admin = 0; + } else { + $admin = 1; + } + + if ( $path_to_home === '' ) { + $path_to_home = '/'; + } + + $nonce = wp_create_nonce( 'delete-cache-' . $path_to_home . '_' . $admin ); + wp_localize_script( 'delete-cache-button', 'wpsc_ajax', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'path' => $path_to_home, 'admin' => $admin, 'nonce' => $nonce ) ); +} +add_action( 'wp_ajax_ajax-delete-cache', 'wpsc_admin_bar_delete_cache_ajax' ); +add_action( 'admin_enqueue_scripts', 'wpsc_delete_cache_scripts' ); + +/** + * Delete cache for a specific page. + */ +function wpsc_admin_bar_delete_cache_ajax() { + // response output + header( "Content-Type: application/json" ); + if ( ! wpsc_delete_cache_directory() ) { + if ( defined( 'WPSCDELETEERROR' ) ) { + return json_decode( constant( 'WPSCDELETEERROR' ) ); + } else { + return false; + } + } +} + +function wpsc_admin_bar_delete_cache() { + $referer = wp_get_referer(); + + if ( ! isset( $_GET['admin'] ) ) { + $_GET['admin'] = 0; + } + + foreach( array( 'path', 'nonce', 'admin' ) as $part ) { + if ( isset( $_GET[ $part ] ) ) { + $_POST[ $part ] = $_GET[ $part ]; + } + } + wpsc_delete_cache_directory(); + + $req_path = isset( $_POST['path'] ) ? sanitize_text_field( stripslashes( $_POST['path'] ) ) : ''; + $valid_nonce = ( $req_path && isset( $_POST['nonce'] ) ) ? wp_verify_nonce( $_POST['nonce'], 'delete-cache-' . $_POST['path'] . '_' . $_POST['admin'] ) : false; + + if ( + $valid_nonce + && $referer + && $req_path + && ( + false !== stripos( $referer, $req_path ) + || 0 === stripos( $referer, wp_login_url() ) + ) + ) { + /** + * Hook into the cache deletion process after a successful cache deletion from the admin bar button. + * + * @since 1.9 + * + * @param string $req_path Path of the page where the cache flush was requested. + * @param string $referer Referer URL. + */ + do_action( 'wpsc_after_delete_cache_admin_bar', $req_path, $referer ); + + if ( $_POST['admin'] ) { + wp_safe_redirect( $referer ); + } else { + wp_safe_redirect( esc_url_raw( home_url( $req_path ) ) ); + } + exit( 0 ); + } else { + die( "Oops. Problem with nonce. Please delete cached page from settings page." ); + } +} + +if ( 'delcachepage' === filter_input( INPUT_GET, 'action' ) ) { + add_action( 'admin_init', 'wpsc_admin_bar_delete_cache' ); +} + +function wpsc_delete_cache_directory() { + if ( ! current_user_can( 'delete_others_posts' ) ) { + return false; + } + + $req_path = isset( $_POST['path'] ) ? sanitize_text_field( stripslashes( $_POST['path'] ) ) : ''; + $valid_nonce = ( $req_path && isset( $_POST['nonce'] ) ) ? wp_verify_nonce( $_POST['nonce'], 'delete-cache-' . $_POST['path'] . '_' . $_POST['admin'] ) : false; + + if ( ! $valid_nonce ) { + wp_cache_debug( 'wpsc_delete_cache_directory: nonce was not valid' ); + return false; + } + + $path = realpath( trailingslashit( get_supercache_dir() . str_replace( '..', '', preg_replace( '/:.*$/', '', $req_path ) ) ) ); + + if ( $path ) { + if ( isset( $_POST['admin'] ) && (int) $_POST['admin'] === 1 ) { + global $file_prefix; + wp_cache_debug( 'Cleaning cache for this site.' ); + wp_cache_clean_cache( $file_prefix ); + return; + } + $path = trailingslashit( $path ); + $supercachepath = realpath( get_supercache_dir() ); + + if ( false === wp_cache_confirm_delete( $path ) || ! str_starts_with( $path, $supercachepath ) ) { + wp_cache_debug( 'Could not delete directory: ' . $path ); + define( 'WPSCDELETEERROR', 'Could not delete directory' ); + return false; + } + + wp_cache_debug( 'Deleting cache files in directory: ' . $path ); + wpsc_delete_files( $path ); + return; + } else { + wp_cache_debug( 'wpsc_delete_cache_directory: Could not delete directory. It does not exist: ' . esc_attr( $_POST['path'] ) ); + } +} diff --git a/wp-content/plugins/wp-super-cache/inc/preload-notification.php b/wp-content/plugins/wp-super-cache/inc/preload-notification.php new file mode 100644 index 0000000..b84a4b7 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/inc/preload-notification.php @@ -0,0 +1,30 @@ + admin_url( 'admin-ajax.php' ), + 'nonce' => wp_create_nonce( 'wpsc-get-preload-status' ), + 'preload_status' => wpsc_get_preload_status( true ), + ) + ); + } +} + +add_action( 'admin_footer', 'wpsc_preload_notification_scripts' ); diff --git a/wp-content/plugins/wp-super-cache/js/admin.js b/wp-content/plugins/wp-super-cache/js/admin.js new file mode 100644 index 0000000..f6621f2 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/js/admin.js @@ -0,0 +1,146 @@ +/** + * Handle the buttons for the Boost migration. + * @param {jQuery} $ - jQuery + */ +( $ => { + $( document ).ready( function () { + // Don't run on versions of WordPress too old for the block editor and the translation methods it brings. + // All the install / activate options are plain links with meaningful destinations anyway. + if ( ! window.wp || ! window.wp.i18n ) { + return; + } + + const { __, sprintf } = window.wp.i18n; + const ajaxurl = window.ajaxurl; + const wpscAdmin = window.wpscAdmin; + + const setupBoostButton = $target => { + if ( ! $target.hasClass( 'wpsc-boost-migration-button' ) ) { + // eslint-disable-next-line no-console + console.warn( 'Unexpected button clicked for Boost migration.' ); + return; + } + const $label = $target.find( 'label' ); + const $spinner = $target.find( '.spinner' ); + const $errorMessage = $target.prev( '.wpsc-boost-migration-error' ); + const source = $target.attr( 'data-source' ); + const originalText = $label.text(); + + // Helper function to show an error. + const showError = err => { + reset(); + + $errorMessage + .text( + err || + __( 'An error occurred while trying to activate Jetpack Boost', 'wp-super-cache' ) + ) + .show(); + }; + // Helper function to show Boost Banner work in progress. + const showBusy = action => { + $target.attr( 'disabled', true ); + $label.text( action ); + $spinner.addClass( 'is-active' ).show(); + }; + + // Helper function to reset Boost Banner button. + const reset = () => { + $target.attr( 'disabled', false ); + $label.text( originalText ); + $spinner.removeClass( 'is-active' ).hide(); + }; + + // Activate Jetpack Boost. + const activateBoost = () => { + showBusy( __( 'Activating…', 'wp-super-cache' ) ); + + $.post( ajaxurl, { + action: 'wpsc_activate_boost', + _ajax_nonce: wpscAdmin.boostActivateNonce, + source: source, + } ) + .done( response => { + if ( response.success ) { + $label.text( 'Success! Sending you to Jetpack Boost...' ); + $spinner.hide(); + window.location.href = 'admin.php?page=jetpack-boost'; + } else { + showError( response.data ); + } + } ) + .fail( response => { + showError( + sprintf( + /* translators: %d is an HTTP error code */ + __( 'Failed to activate Jetpack Boost: HTTP %d error received', 'wp-super-cache' ), + response.status + ) + ); + } ); + }; + + const installBoost = () => { + showBusy( __( 'Installing…', 'wp-super-cache' ) ); + $.post( ajaxurl, { + action: 'wpsc_install_plugin', + _ajax_nonce: wpscAdmin.boostInstallNonce, + slug: 'jetpack-boost', + } ) + .done( response => { + if ( response.success ) { + activateBoost(); + } else { + showError( response.data ); + } + } ) + .fail( response => { + showError( + sprintf( + /* translators: %d is an HTTP error code */ + __( 'Failed to install Jetpack Boost: HTTP %d error received', 'wp-super-cache' ), + response.status + ) + ); + } ); + }; + + return { + installBoost, + activateBoost, + }; + }; + + // One-click install for Boost. + $( '.wpsc-install-boost-button' ).on( 'click', event => { + event.preventDefault(); + const boostActivation = setupBoostButton( $( event.currentTarget ) ); + boostActivation.installBoost(); + } ); + + // Handle activate button click. + $( '.wpsc-activate-boost-button' ).on( 'click', event => { + event.preventDefault(); + const boostActivation = setupBoostButton( $( event.currentTarget ) ); + boostActivation.activateBoost(); + } ); + + // Dismiss Boost banner. + $( '.wpsc-boost-dismiss' ).on( 'click', () => { + $( '.wpsc-boost-banner' ).fadeOut( 'slow' ); + $.post( ajaxurl, { + action: 'wpsc-hide-boost-banner', + nonce: wpscAdmin.boostDismissNonce, + } ); + } ); + + // Dismiss admin notice + $( '.boost-notice' ).on( 'click', '.notice-dismiss', event => { + event.preventDefault(); + $.post( ajaxurl, { + action: 'wpsc_dismiss_boost_notice', + _ajax_nonce: wpscAdmin.boostNoticeDismissNonce, + } ); + } ); + } ); +} )( jQuery ); diff --git a/wp-content/plugins/wp-super-cache/js/preload-notification.js b/wp-content/plugins/wp-super-cache/js/preload-notification.js new file mode 100644 index 0000000..a23cca4 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/js/preload-notification.js @@ -0,0 +1,122 @@ +jQuery( document ).ready( function () { + const { __, sprintf } = window.wp.i18n; + + // Set how often to check when a preload job is running + const ACTIVE_INTERVAL = 3000; + + // Set how often to check when no preload job is running + const INACTIVE_INTERVAL = 30000; + + // Get a reference to the log element and the previous log entry + const preloadInfoPanel = jQuery( '#wpsc-preload-status' ); + + // Abort early if no info panel exists. + if ( ! preloadInfoPanel.length ) { + return; + } + + update_preload_status( window.wpsc_preload_ajax.preload_status ); + + /** + * Schedule the next preload status update. + * + * @param {number} time - time in milliseconds to wait before updating. + */ + function schedule_preload_update( time ) { + setTimeout( () => { + jQuery.post( + window.wpsc_preload_ajax.ajax_url, + { + action: 'wpsc_get_preload_status', + _ajax_nonce: window.wpsc_preload_ajax.nonce, + }, + json => { + if ( ! json || ! json.success ) { + return; + } + + update_preload_status( json.data ); + } + ); + }, time ); + } + + /** + * Update displayed preload status using the provided data. + * + * @param {object} data - description of the preload status. + */ + function update_preload_status( data ) { + // Bail early if no data is available. But try again in a few seconds. + if ( ! data || ( ! data.running && ! data.next && ! data.previous ) ) { + schedule_preload_update( ACTIVE_INTERVAL ); + return; + } + + preloadInfoPanel.empty(); + let nextPreloadTime = data.running ? ACTIVE_INTERVAL : INACTIVE_INTERVAL; + + if ( data.running ) { + const panel = jQuery( '
    ' ); + + panel.append( + jQuery( '

    ' ).append( jQuery( '' ).text( __( 'Preloading', 'wp-super-cache' ) ) ) + ); + panel.append( + jQuery( '

    ' ).text( __( 'Preloading is currently running.', 'wp-super-cache' ) ) + ); + + const ul = panel.append( jQuery( '

      ' ) ); + for ( const entry of data.history ) { + ul.append( jQuery( '
    • ' ).text( entry.group + ' ' + entry.progress + ': ' + entry.url ) ); + } + + preloadInfoPanel.append( panel ); + } else if ( data.next || data.previous ) { + const panel = jQuery( '
      ' ); + + if ( data.next ) { + const diff = Math.max( 0, data.next - Math.floor( Date.now() / 1000 ) ); + const seconds = diff % 60; + const minutes = Math.floor( diff / 60 ) % 60; + const hours = Math.floor( diff / 3600 ) % 24; + const days = Math.floor( diff / 86400 ); + + // If we're preloading within the next minute, start loading faster. + if ( minutes + hours === 0 ) { + nextPreloadTime = ACTIVE_INTERVAL; + } + + const p = jQuery( '

      ' ); + p.append( + jQuery( '' ).html( + sprintf( + /* Translators: 1: Number of days, 2: Number of hours, 3: Number of minutes, 4: Number of seconds */ + __( + 'Next preload scheduled in %1$s days, %2$s hours, %3$s minutes and %4$s seconds.', + 'wp-super-cache' + ), + days, + hours, + minutes, + seconds + ) + ) + ); + + panel.append( p ); + } + + if ( data.previous ) { + const p = jQuery( '

      ' ); + p.append( jQuery( '' ).text( __( 'Last preload finished:', 'wp-super-cache' ) + ' ' ) ); + p.append( jQuery( '' ).text( new Date( data.previous * 1000 ).toLocaleString() ) ); + panel.append( p ); + } + + preloadInfoPanel.append( panel ); + } + + schedule_preload_update( nextPreloadTime ); + } +} ); diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-be_BY.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-be_BY.mo new file mode 100644 index 0000000000000000000000000000000000000000..019f2ffad097e505ee65334b0dc90a270fba6b79 GIT binary patch literal 75729 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-be_BY.po b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-be_BY.po new file mode 100644 index 0000000..5aee19e --- /dev/null +++ b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-be_BY.po @@ -0,0 +1,1555 @@ +# Translation of the WordPress plugin by . +# Copyright (C) 2010 +# This file is distributed under the same license as the package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: WP Super Cache\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-super-cache\n" +"POT-Creation-Date: 2010-09-27 13:58+0000\n" +"PO-Revision-Date: 2011-08-10 18:25+0200\n" +"Last-Translator: \n" +"Language-Team: Alexandr Alexandrov \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Belarusian\n" +"X-Poedit-Country: BELARUS\n" + +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "Ваш каментар чакае пацверджання." + +#: plugins/awaitingmoderation.php:23 +#: plugins/awaitingmoderation.php:38 +#: plugins/badbehaviour.php:47 +#: plugins/badbehaviour.php:65 +#: plugins/domain-mapping.php:47 +#: plugins/domain-mapping.php:62 +#: plugins/searchengine.php:61 +#: plugins/searchengine.php:76 +#: wp-cache.php:1114 +msgid "Disable" +msgstr "Адключыць" + +#: plugins/awaitingmoderation.php:29 +#: plugins/badbehaviour.php:55 +#: plugins/domain-mapping.php:53 +#: plugins/searchengine.php:67 +msgid "disabled" +msgstr "Адключаны" + +#: plugins/awaitingmoderation.php:31 +#: plugins/badbehaviour.php:57 +#: plugins/domain-mapping.php:55 +#: plugins/searchengine.php:69 +#: wp-cache.php:1460 +msgid "enabled" +msgstr "Уключаны" + +#: plugins/awaitingmoderation.php:33 +#, php-format +msgid "Awaiting Moderation plugin is %s" +msgstr "Статут ўбудовы \" Awaiting Moderation\": %s" + +#: plugins/awaitingmoderation.php:34 +msgid "(Remove the text \"Your comment is awaiting moderation.\" when someone leaves a moderated comment.) " +msgstr "(Прыбірае тэкст \" Ваш каментар чакае праверкі\" калі хто-то размяшчае каментар да запісу)" + +#: plugins/awaitingmoderation.php:36 +#: plugins/badbehaviour.php:63 +#: plugins/domain-mapping.php:60 +#: plugins/searchengine.php:74 +#: wp-cache.php:1114 +msgid "Enable" +msgstr "Дазволіць" + +#: plugins/badbehaviour.php:45 +msgid "Bad Behaviour not found. Please check your install." +msgstr "Плагін \" Bad Behaviour\" не быў знойдзены. Праверце, завяршылі Ці Вы яго ўстаноўку." + +#: plugins/badbehaviour.php:60 +#, php-format +msgid "Bad Behaviour support is %s." +msgstr "Статут ўбудовы \" Bad Behaviour\": %s." + +#: plugins/badbehaviour.php:61 +#, php-format +msgid "(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr "(Гэты дадатковы модуль будзе функцыянаваць толькі ў рэжыме сярэдняга кэшавання, адключыце сціск і ўсталюйце ўбудова \"Bad Behavior\" у \"%s/plugins/bad-behavior/\")" + +#: plugins/badbehaviour.php:69 +#: wp-cache.php:1191 +#: wp-cache.php:1193 +msgid "Warning!" +msgstr "Увага!" + +#: plugins/domain-mapping.php:57 +#, php-format +msgid "Domain Mapping support plugin is %s" +msgstr "Статут ўбудовы \" Domain Mapping\": %s" + +#: plugins/domain-mapping.php:58 +msgid "(support for multiple domains on multisite websites) " +msgstr "(Падтрымка для MU - сэрвісу блогаў)" + +#: plugins/domain-mapping.php:72 +msgid "Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin." +msgstr "Выяўленая падтрымка сэрвісу мультиблогов! Каб палегчыць і паскорыць працу плагіна, Вам трэба ўключыць падтрымку мультиблогов ў наладах." + +#: plugins/searchengine.php:71 +#, php-format +msgid "No Adverts for Friends plugin is %s." +msgstr "Статут ўбудовы \" No Adverts for Friends\":% s." + +#: plugins/searchengine.php:72 +msgid "(requires friendsadverts.php too) " +msgstr "(Патрабуе ўсталёўкі friendsadverts.php ) " + +#: wp-cache.php:87 +#, php-format +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "Калі ласка, стварыце файл% s / wp-cache-config.php з wp-super-cache/wp-cache-config-sample.php" + +#: wp-cache.php:138 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "Увага! Уключаны рэжым PHP Safe Mode!" + +#: wp-cache.php:139 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "Пры працы з убудовай могуць узнікнуць праблемы, так як PHP Safe Mode уключаны на Вашым серверы." + +#: wp-cache.php:143 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "Ваш сервер настроены так, што правярае ўладальніка для ўсіх PHP скрыптоў перад тым як дазволіць ім чытанне або запіс у файл." + +#: wp-cache.php:144 +#, php-format +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "Вы або Адміністратар можаце выправіць памылкі, змяніўшы групу ўладальніка скрыптоў плагіна праз налады вэб-сервера. Таксама трэба змяніць уладальніка для тэчкі% s / cache /. Для больш падрабязнай інфармацыі глядзіце старонку дапамогі па рэжыму safe mode (на англ.). " + +#: wp-cache.php:146 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "Вы або Адміністратар павінны адключыць гэта. Для больш падрабязнай інфармацыі глядзіце старонку дапамогі па рэжыму safe mode (на англ.). Дадзеныя налады НЕ могуць быць адключаныя праз файл. htaccess, для вырашэння праблемы трэба рэдагаваць php.ini ў наладах вэб-сервера. " + +#: wp-cache.php:152 +msgid "Permlink Structure Error" +msgstr "Памылка структуры спасылак" + +#: wp-cache.php:153 +msgid "A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks." +msgstr "Для карэктнай працы ўбудовы неабходная карэктная налада структуры спасылак. Каб наладзіць іх, наведайце старонку Сталыя спасылкі . " + +#: wp-cache.php:165 +#, php-format +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "Увага! Ваша hostname \"% s\"пераўтворана ў% s" + +#: wp-cache.php:166 +#, php-format +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "Ваш вэб-сервер вырашыў, што hostname зменена на% s. Некаторыя опцыі ўбудовы (напрыклад, \" Ачыстка смецця \") і сам WordPress могуць працаваць некарэктна." + +#: wp-cache.php:167 +#: wp-cache.php:181 +#, php-format +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "Каб даведацца больш, наведайце раздзел 16 ст Апісанні праблем у файле readme.txt (на англ.) " + +#: wp-cache.php:180 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "На жаль, файл wp-cron.php не быў знойдзены. Гэты скрыпт неабходны для карэктнай працы опциии \" Ачыстка смецця \"і самога WordPress." + +#: wp-cache.php:195 +msgid "Cannot continue... fix previous problems and retry." +msgstr "Немагчыма працягнуць ... перш чым паўтарыць спробу, выпраўце папярэднія памылкі." + +#: wp-cache.php:204 +msgid "Zlib Output Compression Enabled!" +msgstr "Сціск Zlib Output ўключана!" + +#: wp-cache.php:205 +msgid "PHP is compressing the data sent to the visitors of your site. Disabling this is recommended as the plugin caches the compressed output once instead of compressing the same page over and over again. Also see #21 in the Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "PHP выкарыстоўвае сціск для сціснутых старонкі Вашага сайта. Адключэнне дадзенай опцыі рэкамендуецца, каб пазбегнуць шматразовага сціску старонак убудовай. Даведацца больш, наведаўшы профіль 16 ст \" Апісанне праблем \"у файле readme.txt (на англ.). Таксама азнаёмцеся з гэтай старонкай (на англ.) па php.ini. " + +#: wp-cache.php:209 +msgid "Mod rewrite may not be installed!" +msgstr "Здаецца, модуль mod_rewrite не ўстаноўлены!" + +#: wp-cache.php:210 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use legacy or PHP modes." +msgstr "Узнікла памылка, звязаная з тым, што модуль mod_rewrite адсутнічае ці не ўсталяваны. Калі ласка, праверце наяўнасць модуля mod_rewrite ў канфігурацыях сервера. Модуль неабходны для карэктнай працы ўбудовы з статычнымі файламі. Без падлучанага mod_rewrite Вы можаце выкарыстоўваць толькі рэжымы з падтрымкай PHP або сярэднюю кэшаванне . " + +#: wp-cache.php:215 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "Рэжым \" только_чтение \". Налады не могуць быць зменены." + +#: wp-cache.php:216 +#, php-format +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "Канфігурацыйны файл плагіна WP Super Cache %s/wp-cache-config.php не можа быць зменены. Каб працягнуць, Вы павінны ўсталяваць правы на запіс для файла. " + +#: wp-cache.php:217 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "Самы просты спосаб выправіць гэта - змяніць правы доступу, выкарыстоўваючы CHMOD, праз FTP-кліент. Дастаткова ўсталяваць глабальныя правы на запіс." + +#: wp-cache.php:218 +msgid "Writeable:" +msgstr "Даступна для запісу:" + +#: wp-cache.php:219 +msgid "Readonly:" +msgstr "Толькі чытанне:" + +#: wp-cache.php:231 +#, php-format +msgid "Warning! %s is writeable!" +msgstr "Увага! Тэчка% s даступная для запісу!" + +#: wp-cache.php:232 +#, php-format +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "Вы павінны змяніць правы на тэчку% s. Каб зрабіць гэта - скарыстайцеся FTP-кліента або наступнай камандай:" + +#: wp-cache.php:240 +msgid "Mobile rewrite rules detected" +msgstr "Выяўленая падтрымка мабільных прылад" + +#: wp-cache.php:241 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"2.0\\ MMP|240x320\" and delete those." +msgstr "Для больш прадуктыўнай працы сайта, Вам варта ўключыць опцыю \" Падтрымка мабільных прылад \"або выдаліць гэтую запіс з правілаў ст. Htaccess. Знайдзіце наступны тэкст (два радкі) \"2.0\\ MMP|240x320\" і выдаліце яго." + +#: wp-cache.php:241 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "На Вашых звычайных наведвальніках гэта ніяк не адаб'ецца, а вось якія выкарыстоўваюць мабільныя прылады для вэб-серфінгу не будуць атрымліваць кэшаваныя старонкі (калі опцыя адключаная)." + +#: wp-cache.php:247 +#: wp-cache.php:258 +msgid "Rewrite rules must be updated" +msgstr "Правы на запіс павінны быць абноўленыя" + +#: wp-cache.php:248 +#: wp-cache.php:259 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "Неабходныя для працы ўбудовы правы былі змененыя або отсуствіі." + +#: wp-cache.php:249 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "Падтрымка блогам мабільных прылад патрабуе прысутнасці асаблівых правілаў у файле. Htaccess, інакш Вы не зможаце выкарыстоўваць гэтую опцыю. Ніжэй прадстаўлены магчымы спосабы (у парадку складанасці):" + +#: wp-cache.php:250 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "Перакладзіце убудова ў рэжым сярэдняга кэшавання і ўключыце падтрымку мобмльных прылад." + +#: wp-cache.php:251 +#: wp-cache.php:260 +msgid "Scroll down the Advanced Settings page and click the Update Mod_Rewrite Rules button." +msgstr "Пракруціць старонку ўніз і націсніце кнопку Абнавіць правілы Mod_Rewrite.\"" + +#: wp-cache.php:252 +#, php-format +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "Выдаліце ​​ўсе правілы mod_rewrite з файла% s.htaccess, паміж # BEGIN WPSuperCache і # END WPSuperCache і абновіце старонку (аднаўленне правілаў запусціцца аўтаматычна). " + +#: wp-cache.php:253 +#, php-format +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ add these lines: (do it twice, once for each section)" +msgstr "Дадайце правілы самастойна. Для гэтага адкрыйце у рэдактары файл% s.htaccess і знайдзіце код паміж # BEGIN WPSuperCache і # END WPSuperCache . Вы ўбачыце два падобных блока кода. Адразу пасля радка %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ дадайце наступнае (такіх радкоў дзве, дадайце код і пасля другой): " + +#: wp-cache.php:266 +msgid "Required to serve compressed supercache files properly." +msgstr "Неабходна для правільнага сціску файлаў." + +#: wp-cache.php:266 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "Неабходна наладзіць кэшаванне на старонцы ўбудовы. Карыстальнікі браўзэра IE7 будуць бачыць необновленные старонкі з кэша без падтрымкі дадзенага модуля." + +#: wp-cache.php:266 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "Усталюйце дату заканчэння актуальнасці старонак. Карыстальнікі могуць не ўбачыць новую версію кэшаваныя старонкі без дадзенага модуля." + +#: wp-cache.php:273 +msgid "Missing Apache Modules" +msgstr "Адсутныя модулі Apache" + +#: wp-cache.php:274 +msgid "The following Apache modules are missing. The plugin will work in legacy mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "Наступныя модулі Apache адсутнічаюць на Вашым серверы. Без іх убудова зможа працаваць толькі ў рэжыме сярэдняга кэшавання. У рэжыме з падтрымкай Super Cache Вашы карыстальнікі могуць бачыць пашкоджаныя старонкі або пратэрмінаваныя іх копіі." + +#: wp-cache.php:413 +msgid "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file." +msgstr "\"Увага! Вы спрабуеце ўключыць сціск, але модуль zlib.output_compression адключаны. Глядзіце пункт нумар 21 падзелу \"Апісанне праблем \" у файле readme.txt (на англ.) " + +#: wp-cache.php:501 +msgid "WP Super Cache Settings" +msgstr "Налады WP Super Cache" + +#: wp-cache.php:512 +msgid "Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced Settings Page by default." +msgstr "Важна: Mod_rewrite або Legacy caching адключаныя. Па змаўчанні будзе загружацца старонка \" Налады \"." + +#: wp-cache.php:523 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "Файл канфігурацый быў зменены, некаторыя налады не адпавядаюць патрабаванням ўбудовы. Наведайце старонку \" Налады \"каб выправіць гэта." + +#: wp-cache.php:540 +#: wp-cache.php:614 +msgid "Caching must be enabled to use this feature" +msgstr "Кэшаванне павінна быць уключана, калі Вы хочаце выкарыстоўваць дадзеную опцыю" + +#: wp-cache.php:542 +msgid "Cache Tester" +msgstr "Праверка кэшавання" + +#: wp-cache.php:543 +msgid "Test your cached website by clicking the test button below." +msgstr "Праверце наладкі кэшавання свайго блога націскам адной кнопкі." + +#: wp-cache.php:550 +#, php-format +msgid "Fetching %s to prime cache: " +msgstr "Праверка старонкі% s у кэшы:" + +#: wp-cache.php:552 +#: wp-cache.php:559 +#: wp-cache.php:566 +msgid "OK" +msgstr "ЁСЦЬ" + +#: wp-cache.php:557 +#, php-format +msgid "Fetching first copy of %s: " +msgstr "Праверка першай копіі% s:" + +#: wp-cache.php:564 +#, php-format +msgid "Fetching second copy of %s: " +msgstr "Праверка второй копіі% s:" + +#: wp-cache.php:570 +msgid "One or more page requests failed:" +msgstr "Пры працы з кэшам адбыліся памылкі:" + +#: wp-cache.php:589 +#: wp-cache.php:590 +#, php-format +msgid "Page %d: %d (%s)" +msgstr "Старонка% d:% d (% s)" + +#: wp-cache.php:596 +#, php-format +msgid "Page 1: %s" +msgstr "Старонка 1:% s" + +#: wp-cache.php:597 +#, php-format +msgid "Page 2: %s" +msgstr "Старонка 2:% s" + +#: wp-cache.php:598 +msgid "The timestamps on both pages match!" +msgstr "Часовыя штампы абодвух варыянтаў старонкі супадаюць!" + +#: wp-cache.php:600 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "Старонкі не супадаюць! Часавы штамп адрозніваецца ці не быў знойдзены!" + +#: wp-cache.php:606 +msgid "Send non-secure (non https) request for homepage" +msgstr "Даслаць неабаронены (не па https) запыт для галоўнай старонкі" + +#: wp-cache.php:607 +msgid "Test Cache" +msgstr "Праверыць" + +#: wp-cache.php:632 +#: wp-cache.php:755 +msgid "Cancel Cache Preload" +msgstr "Адмяніць агульнае кэшаванне" + +#: wp-cache.php:638 +msgid "Scheduled preloading of cache cancelled. If a job is currently running it will not shutdown until the current 100 pages are complete." +msgstr "Агульнае кэшаванне па раскладзе адключана. Калі служба цяпер запушчана, яна не будзе завершана пакуль бягучыя 100 старонак не кэшаваць." + +#: wp-cache.php:649 +msgid "Scheduled preloading of cache cancelled." +msgstr "Агульнае кэшаванне па раскладзе адключана." + +#: wp-cache.php:675 +#: wp-cache.php:753 +msgid "Preload Cache Now" +msgstr "Стварыць агульны кэш цяпер" + +#: wp-cache.php:678 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "Агульная кэшаванне адбудзецца праз 10 секунд." + +#: wp-cache.php:682 +#, php-format +msgid "Scheduled preloading of cache in %d minutes" +msgstr "Агульнае кэшаванне адбудзецца праз% d хвілін" + +#: wp-cache.php:686 +msgid "This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now." +msgstr "Пры актывацыі агульнага кэшавання, будзе створана копія для кожнай запісу і старонкі Вашага блога. У гэтым рэжыме ствараюцца статычныя старонкі, якія затым будуць бачыць \" неапазнаныя \"наведвальнікі (напрыклад, пошукавыя боты і іншыя). Гэта можа дапамагчы ў паляпшэнні ўзроўню PR Google, так як у аснове іх алгарытму ляжыць і хуткасць водгуку вэб-сайта. " + +#: wp-cache.php:687 +msgid "Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "Аднак, пры выкарыстанні дадзенага віду кэша ствараецца нашмат больш файлаў. Рэкамендуецца выкарыстоўваць такі тып, калі ў Вас вельмі шмат запісаў (10 тысяч і больш) на блогу. Асабліва гэта важна, калі Вы карыстаецеся паслугамі віртуальнага хостынгу." + +#: wp-cache.php:688 +msgid "In ’Preload Mode’ regular garbage collection will only clean out old legacy files for known users, not the preloaded supercache files. This is a recommended setting when the cache is preloaded." +msgstr "У рэжыме 'Агульнага кэшавання' запланаваная ачыстка смецця будзе выдаляць толькі кэш запісаў простага тыпу (кэш з Super Cache не будзе выдалены). Дадзеная налада рэкамендавана для выкарыстання." + +#: wp-cache.php:692 +#, php-format +msgid "Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)" +msgstr "Перагружаць агульны кэш кожныя% s хвілін (ўвядзіце 0, каб адключыць, мінімальнае дапушчальнае кол-у хвілін% d)." + +#: wp-cache.php:705 +msgid "all" +msgstr "Ўвесь" + +#: wp-cache.php:718 +#, php-format +msgid "Preload %s posts." +msgstr "Кэшаваць% s запісу." + +#: wp-cache.php:725 +msgid "Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "Папярэдні рэжым (ачыстка смецця працуе не цалкам, опцыя рэкамендавана да ўключэння.)" + +#: wp-cache.php:728 +msgid "Send me status emails when files are refreshed." +msgstr "Адпраўляць мне паведамленні з апавяшчэннямі аб абнаўленні кэша." + +#: wp-cache.php:733 +msgid "Many emails, 2 emails per 100 posts." +msgstr "Высокі ўзровень: 2 паведамленні на 100 запісаў." + +#: wp-cache.php:736 +msgid "Medium, 1 email per 100 posts." +msgstr "Сярэдні ўзровень: 1 паведамленне на 100 запісаў." + +#: wp-cache.php:739 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "Нізкі ўзровень: 1 e-mail ў пачатку і 1 у канцы кэшавання." + +#: wp-cache.php:743 +#, php-format +msgid "Refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Абнаўленне кэша праз% d г% d мін і% d сек." + +#: wp-cache.php:744 +#, php-format +msgid "Full refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Поўнае кэшаванне проихойдет праз% d г% d мін і% d сек." + +#: wp-cache.php:750 +#, php-format +msgid "Currently caching from post %d to %d." +msgstr "У дадзены моманты кэшуюцца запісы з% d па% d." + +#: wp-cache.php:753 +msgid "Update Settings" +msgstr "Абнавіць налады" + +#: wp-cache.php:761 +msgid "Preloading of cache disabled. Please disable legacy page caching or talk to your host administrator." +msgstr "Агульнае кэшаванне адключана. Калі ласка, уключыце поўны рэжым працы ўбудовы або звернецеся да адміністратара сервера." + +#: wp-cache.php:776 +#: wp-cache.php:865 +msgid "Caching" +msgstr "Статут кэшавання" + +#: wp-cache.php:780 +msgid "Cache hits to this website for quick access." +msgstr "Кэшаваць хіты сайта для паскарэння доступу." + +#: wp-cache.php:780 +#: wp-cache.php:781 +#: wp-cache.php:795 +#: wp-cache.php:799 +#: wp-cache.php:802 +#: wp-cache.php:803 +#: wp-cache.php:868 +msgid "Recommended" +msgstr "Рэкамендавана" + +#: wp-cache.php:781 +msgid "Use mod_rewrite to serve cache files." +msgstr "Выкарыстоўваць mod_rewrite для абслугоўвання кэша." + +#: wp-cache.php:782 +msgid "Use PHP to serve cache files." +msgstr "Выкарыстоўваць PHP для абслугоўвання кэша." + +#: wp-cache.php:783 +msgid "Legacy page caching." +msgstr "Спрошчанае кэшаванне." + +#: wp-cache.php:784 +msgid "Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should go with PHP caching." +msgstr "Выкарыстанне mod_rewrite дапаможа зрабіць працу блога хутчэй, чым PHP (хоць і гэты варыянт таксама не такі павольны). Гэты рэжым прасцей і зручней, але пачаткоўцу карыстачу лепш выкарыстоўваць кэшаванне PHP." + +#: wp-cache.php:790 +msgid "Miscellaneous" +msgstr "Рознае" + +#: wp-cache.php:795 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "Сціскаць файлы кэша каб паскорыць працу." + +#: wp-cache.php:796 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching it on and off clears the cache." +msgstr "Сціск кэша адключана па змаўчанні, так як можа некарэктна працаваць на некаторых хостынгах. Уключэнне або Адключэнне дадзенай опцыі аўтаматычна чысціць часовы кэш." + +#: wp-cache.php:799 +msgid "304 Not Modified browser caching. Indicate when a page has not been modified since last requested." +msgstr "Памылка 304. Дадзеная памылка ўзнікае тады, калі старонка не была зменена з часу мінулага запыту." + +#: wp-cache.php:800 +msgid "304 support is disabled by default because in the past GoDaddy had problems with some of the headers used." +msgstr "Падтрымка памылкі 304 адключаная па змаўчанні (з-за праблем некаторых сэрвісаў)." + +#: wp-cache.php:802 +msgid "Don’t cache pages for known users." +msgstr "Не кэшаваць старонкі для вядомых карыстальнікаў.\"" + +#: wp-cache.php:803 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated." +msgstr "Аўта перабудова кэшу. Госці блога ўбачаць састарэлыя версіі старонак кэша пакуль новыя будуць генеравацца." + +#: wp-cache.php:804 +msgid "Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)" +msgstr "Расказаць ўсім, што Вы карыстаецеся убудовай WP Super Cache (паведамленне будзе размешчана ў \" склепе \"сайта)!" + +#: wp-cache.php:810 +#: wp-cache.php:957 +#: wp-cache.php:1473 +msgid "Advanced" +msgstr "Налады" + +#: wp-cache.php:814 +msgid "Mobile device support." +msgstr "Падтрымка мабільных прылад" + +#: wp-cache.php:815 +msgid "Clear all cache files when a post or page is published." +msgstr "Ачышчаць кэш калі новая запіс або старонка апублікаваная." + +#: wp-cache.php:816 +msgid "Only refresh current page when comments made." +msgstr "Перагружаць старонку пры даданні новага каментара да яе" + +#: wp-cache.php:817 +msgid "List the newest cached pages on this page." +msgstr "Стварыць спіс старонак у кэшы (выводзіцца на гэтай старонцы)" + +#: wp-cache.php:819 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "Блакаванне файлаў. Вам хутчэй за ўсё не спатрэбіцца дадзеная опцыя, але яна можа вырашыць праблему маламагутных хостынгаў. Увага! Уключэнне опцыі, у рэдкіх выпадках, можа выклікаць праблемы ў працы блога!\"" + +#: wp-cache.php:822 +msgid "Use object cache to store cached files." +msgstr "Выкарыстоўваць аб'екты кэша для захоўвання кэшаваных файлаў." + +#: wp-cache.php:822 +msgid "(Experimental)" +msgstr "(Эксперыментальныя налады)" + +#: wp-cache.php:829 +msgid "Note:" +msgstr "Важна:" + +#: wp-cache.php:831 +#, php-format +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "Деактивируя убудова, пераканайцеся што тэчка% s даступная для запісу ў наладах Вашага сервера, каб файлы плагіна advanced-cache.php і cache-config.php былі выдаленыя ў аўтаматычным рэжыме (таксама праверце наяўнасць правоў на запіс для гэтых двух файлаў)." + +#: wp-cache.php:832 +#, php-format +msgid "Please see the readme.txt for instructions on uninstalling this script. Look for the heading, \"How to uninstall WP Super Cache\"." +msgstr "Для даведкі глядзіце readme.txt (дакумент на англ.). Там Вы знойдзеце карысную інфармацыю па выкарыстанню і выдаленню плагіна WP Super Cache. " + +#: wp-cache.php:833 +#, php-format +msgid "Need help? Check the Super Cache readme file. It includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already have been answered." +msgstr "Усё яшчэ патрэбна дапамога? Глядзіце афіцыйны чаво па плагіна Super Cache (па-ангельску). Таксама, Вы можаце задаць сваё пытанне на форумах тых. падтрымкі (па-ангельску), або азнаёміцца ​​з праблемамі іншых карыстальнікаў і прапанаванымі ім рашэннямі. " + +#: wp-cache.php:836 +#: wp-cache.php:883 +msgid "Update Status" +msgstr "Абнавіць" + +#: wp-cache.php:843 +msgid "Accepted Filenames & Rejected URIs" +msgstr "Дапушчальныя імёны & Забароненыя адрасы" + +#: wp-cache.php:868 +msgid "Caching On" +msgstr "Кэшаванне ўключана" + +#: wp-cache.php:869 +msgid "Caching Off" +msgstr "Кэшаванне выключана" + +#: wp-cache.php:870 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "Важна: рэкамендуецца ўключыць PHP кэшаванне, аўто перабудову кэша і падтрымку для мабільных прылад" + +#: wp-cache.php:880 +msgid "Notice: Supercache mod_rewrite rules detected. Cached files will be served using those rules. Edit the .htaccess file in the root of your install and remove the SuperCache rules." +msgstr "Увага: Сярод правілаў mod_rewrite выяўленыя правілы ад Supercache. Для працы з кэшам будуць выкарыстаны менавіта гэтыя правілы. Каб выдаліць іх, Вам трэба ўручную адрэдагаваць файл. Htaccess." + +#: wp-cache.php:892 +msgid "Make WordPress Faster" +msgstr "Зрабі свой блог хутчэй!" + +#: wp-cache.php:893 +#, php-format +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "Дадатковы модуль %1$s створаны і абнаўляецца аўтарам %2$s пры падтрымцы многіх іншых." + +#: wp-cache.php:894 +#, php-format +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "Наведайце блог аўтара плагіна %1$s і яго фотаблог на %2$s." + +#: wp-cache.php:895 +#, php-format +msgid "Please say hi to him on %s too!" +msgstr "Калі ласка, наведайце% s аўтара!" + +#: wp-cache.php:903 +#, php-format +msgid "Cached pages since %1$s : %2$s" +msgstr "Старонак ў кэшы з %1$s: %2$s" + +#: wp-cache.php:904 +msgid "Newest Cached Pages:" +msgstr "Новае ў кэшы:" + +#: wp-cache.php:908 +#, php-format +msgid "Cached %s seconds ago" +msgstr "Паведамленні ў кэш% s секунд назад" + +#: wp-cache.php:911 +msgid "(may not always be accurate on busy sites)" +msgstr "(Спіс не рэкамендаваны для вялікіх сайтаў)" + +#: wp-cache.php:930 +msgid "Cache plugins are PHP scripts that live in a plugins folder inside the wp-super-cache folder. They are loaded when Supercache loads, much sooner than regular WordPress plugins." +msgstr "Кэшаванне адбываецца за кошт PHP файлаў, якія захоўваюцца ў тэчцы ўбудовы. Яны загружаюцца пры ўключэнні рэжыму Supercache. Загрузка адбываецца нашмат часцей, чым для астатніх убудоў WordPress." + +#: wp-cache.php:931 +msgid "This is strictly an advanced feature only and knowledge of both PHP and WordPress actions is required to create them." +msgstr "Для выкарыстання дадзенай опцыі трэба ведаць не толькі PHP, але і WordPress (не на пачатковым узроўні)." + +#: wp-cache.php:941 +msgid "Available Plugins" +msgstr "Даступныя ўбудовы" + +#: wp-cache.php:957 +msgid "Easy" +msgstr "Кэш" + +#: wp-cache.php:957 +msgid "Tester & Contents" +msgstr "Праверка" + +#: wp-cache.php:957 +msgid "Preload" +msgstr "Агульны кэш" + +#: wp-cache.php:957 +msgid "Plugins" +msgstr "Даданыя модулі" + +#: wp-cache.php:957 +msgid "Debug" +msgstr "Абслугоўванне" + +#: wp-cache.php:984 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "Увага: Праверка правілаў WP Super Cache mod_rewrite адключаная для блогаў сеткі пакуль не будзе запушчана на галоўным блогу . " + +#: wp-cache.php:986 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on on the main site of this network." +msgstr "Увага: Праверка правілаў WP Super Cache mod_rewrite адключаная для блогаў сеткі пакуль не будзе запушчана на галоўным блогу . " + +#: wp-cache.php:996 +msgid "Mod Rewrite Rules" +msgstr "Модуль Mod Rewrite" + +#: wp-cache.php:1002 +msgid "WordPress MU Detected" +msgstr "Знойдзены WordPress MU!" + +#: wp-cache.php:1002 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "На жаль, mod_rewrite немагчыма абнавіць у аўтаматычным рэжыме ў WordPress MU. Вам прыйдзецца ўручную зрабіць гэта: адкрыйце файл. Htaccess (размешчаны ў каранёвай дырэкторыі блога) і дадайце наступныя правілы ў яго." + +#: wp-cache.php:1004 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Mod Rewrite не можа быць абноўлены!" + +#: wp-cache.php:1005 +#, php-format +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "Для карэктнай працы, у Вашым файле% s.htaccess павінны быць прапісаны маркеры BEGIN, і END. Паміж імі знаходзяцца асноўныя правілы WordPress mod_rewrite, прыклад:" + +#: wp-cache.php:1007 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "Абнавіце старонку калі скончыце рэдагаванне файла. Htaccess." + +#: wp-cache.php:1011 +msgid "Thank you for upgrading." +msgstr "Дзякуй за абнаўленне." + +#: wp-cache.php:1011 +#, php-format +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "З моманту апошняй усталяванай версіі плагіна правілы mod_rewrite былі змененыя. На жаль, Вам давядзецца ўручную выдаліць старыя правілы перш чым новыя запрацуюць. Абнавіце гэтую старонку калі скончыце рэдагаваць файл. Htaccess. Калі Вы жадаеце цалкам абнавіць усе самі, то заменіце наступны радок:%1$s на гэтую:%2$s. Адзінае адрозненне - гэта замена \"HTTP_COOKIE \" на \"HTTP: Cookie \" і \"wordpressuser \" на \"wordpress \". Гэтыя перамены звязаны з новай версіяй WordPress 02/05 . Вядома Вы можаце працягваць працаваць са старымі версіямі, калі хопіць адвагі;) " + +#: wp-cache.php:1015 +msgid "Trailing slash check required." +msgstr "Патрабуецца праверка trailing slash." + +#: wp-cache.php:1015 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "Здаецца, усе спасылкі Вашага блога заканчваюцца сімвалам \"/\". На жаль, як толькі Вы ўсталявалі гэты дадатковы модуль, спрацавала опцыя, выявілая копіі спасылак без знака \"/\" на канцы, і цяпер яна не можа ажыццявіць перанакіраванне на верны адрас. Каб гэта выправіць гэта, Вы павінны адрэдагаваць файл. htaccess і дадаць два новыя правілы да групы асноўных правілаў плагіна Supercache: " + +#: wp-cache.php:1017 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "Каб паглядзець поўны спіс якія працуюць правілаў, націсніце кнопку ніжэй \" Паглядзець правілы mod_rewrite \"." + +#: wp-cache.php:1031 +msgid "Mod Rewrite rules updated!" +msgstr "Правілы mod_rewrite абноўлены!" + +#: wp-cache.php:1032 +#, php-format +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "Файл% s.htaccess быў паспяхова абноўлены, неабходныя правілы mod_rewrite былі дададзеныя. Калі ласка, праверце іх. Яны павінны выглядаць так:" + +#: wp-cache.php:1034 +msgid "Mod Rewrite rules must be updated!" +msgstr "Правілы mod_rewrite павінны быць абноўлены!" + +#: wp-cache.php:1035 +#, php-format +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "Ваш файл% s.htaccess недаступны для запісу (у наладах сервера) і не можа быць абноўлены ў аўтаматычным рэжыме. Вы павінны ўручную дадаць новыя правілы да асноўных правілах WordPress так, як паказана ніжэй:" + +#: wp-cache.php:1040 +#, php-format +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "Правілы mod_rewrite для плагіна WP Super Cache былі выяўленыя ў файле% s.htaccess.
      Націсніце на адпаведную кнопку, каб паглядзець радкі. Калі Вы толькі што абнавілі убудова, праверце ўсе правілы. " + +#: wp-cache.php:1043 +msgid "A difference between the rules in your .htaccess file and the plugin rewrite rules has been found. This could be simple whitespace differences but you should compare the rules in the file with those below as soon as possible. Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "Паміж правіламі ў Вашым файле. Htaccess і правіламі самога плагіна выяўленыя неадпаведнасці. Гэта можа быць проста лішні сімвал ў радку, але Вы павінны асабіста параўнаць арыгінальныя правілы са сваімі як мага хутчэй. Націсніце на кнопку 'Абнавіць правілы Mod_Rewrite', каб зрабіць гэта ў аўтаматычным рэжыме. " + +#: wp-cache.php:1046 +msgid "View Mod_Rewrite Rules" +msgstr "Паглядзець правілы mod_rewrite" + +#: wp-cache.php:1050 +#: wp-cache.php:2287 +#, php-format +msgid "Rules must be added to %s too:" +msgstr "Правілы павінны быць таксама дададзены да% s:" + +#: wp-cache.php:1058 +#, php-format +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "Правілы для Gzip-сціску дададзеныя ў файл% s.htaccess." + +#: wp-cache.php:1065 +msgid "Fix Configuration" +msgstr "Аднавіць стандартныя налады" + +#: wp-cache.php:1068 +msgid "Restore Default Configuration" +msgstr "Аднавіць налады па змаўчанні" + +#: wp-cache.php:1076 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "Праверка каментарыяў ўключана. Перш чым Вашы каментары будуць апублікаваныя пройдзе нейкі час." + +#: wp-cache.php:1101 +msgid "Lock Down:" +msgstr "Закрыты рэжым:" + +#: wp-cache.php:1101 +msgid "Disabled" +msgstr "Адключаны" + +#: wp-cache.php:1101 +msgid "Enabled" +msgstr "Уключаны" + +#: wp-cache.php:1102 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "Падрыхтуйце свой блог да запланаваных усплёскаў наведвальнасці, актываваўшы дадзены рэжым. У актыўным стане размяшчэнне новых каментароў і запісаў НЕ будзе абнаўляць статычныя файлы ў кэшы." + +#: wp-cache.php:1103 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "Распрацоўнікам: Зрабіце свой уласны убудова закрытага рэжыму сумяшчальным з нашым, дадаўшы зменную \" WPLOCKDOWN\". Прыведзены ніжэй код дапаможа Вам адаптаваць свой ўбудова да налад нашага Рэжыму." + +#: wp-cache.php:1105 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "Выбачайце, мой блог часова недаступны. Зайдзіце пазней" + +#: wp-cache.php:1109 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "Ваш блог выкарыстоўвае Закрыты рэжым. Новыя каментары не абнаўляюць ўсе статычныя элементы кэша." + +#: wp-cache.php:1111 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "Ваш блог не выкарыстоўвае Закрыты рэжым. Апошнія каментарыі абнаўляюць ўсе статычныя элементы кэша." + +#: wp-cache.php:1117 +msgid "Lock Down" +msgstr "Закрыты рэжым" + +#: wp-cache.php:1125 +msgid "Directly Cached Files" +msgstr "Прамое кэшаванне старонак" + +#: wp-cache.php:1183 +#, php-format +msgid "%s removed!" +msgstr "%s выдалены!" + +#: wp-cache.php:1191 +#, php-format +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "Вы павінны дазволіць запіс для% s. Але так як гэта патэнцыйная ўразлівасць, пасля абнаўлення старонкі вярніце правы на чытанне." + +#: wp-cache.php:1193 +#, php-format +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "Директрия% s даступная для запісу. Вам варта змяніць яе права на \" Толькі чытанне \"." + +#: wp-cache.php:1207 +msgid "Existing direct page" +msgstr "Старонка існуе" + +#: wp-cache.php:1207 +msgid "Delete cached file" +msgstr "Выдаліць файлы з кэша" + +#: wp-cache.php:1212 +msgid "Add direct page:" +msgstr "Дадаць старонку ў кэш:" + +#: wp-cache.php:1214 +#, php-format +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "Дадзены кэш ствараецца прама з папкі, дзе знаходзіцца Ваш блог (тэчка% s). Гэтая опцыя карысная толькі тады, калі чакаецца вялікі прыток наведвальнікаў з больш папулярнага сайта на пэўную старонку або запіс Вашага." + +#: wp-cache.php:1216 +#, php-format +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "Напрыклад: каб дадаць у кэш старонцы на %1$s about /, трэба прапісаць %1$s about / ці / about /. Кэш для старонкі будзе створаны адразу ж пасля першага да яе звароту госцем." + +#: wp-cache.php:1217 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "Каб выдаліць старонку з такога кэша, ачысціце тэкставае поле і выдаліце ​​файлы кэша." + +#: wp-cache.php:1222 +msgid "Update Direct Pages" +msgstr "Абнавіць стрницы" + +#: wp-cache.php:1260 +msgid "Expiry Time & Garbage Collection" +msgstr "Пратэрмінаваныя старонкі & Ачыстка смецця" + +#: wp-cache.php:1262 +msgid "Expire time:" +msgstr "Актуальнасць кэшу:" + +#: wp-cache.php:1263 +msgid "seconds" +msgstr "Секунд" + +#: wp-cache.php:1264 +msgid "Garbage Collection" +msgstr "Ачыстка смецця" + +#: wp-cache.php:1264 +msgid "If the expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above." +msgstr "Калі час актуальнасці кэша больш за 1800 секунд (паўгадзіны), то ачыстка смецця будзе запускацца кожныя 10 хвілін." + +#: wp-cache.php:1265 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 300 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. If you are using legacy caching aim to have less than 500 cached files if possible. You can have many times more cached files when using mod_rewrite or PHP caching." +msgstr "Паверка і выдаленне пратэрмінаваных старонак кэша займае час, але і пакідаць такія файлы ў сістэме не варта. На вялікіх блогах трэба выстаўляць \" час жыцця \" кожнай копіі 300 секунд. Вы можаце паэксперыментаваць з наладай і паглядзець, колькі пратэрмінаваных копій старонак застаецца ў кэшы на працягу дня. Аптымальнае лік такіх старонак не больш за 500. Выкарыстоўваючы кэшаванне з mod_rewrite або PHP, Вы зможаце павялічыць колькасць кэшируемых старонак. " + +#: wp-cache.php:1266 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "Усталюйце значэнне на 0, каб адключыць Ачыстку смецця." + +#: wp-cache.php:1267 +msgid "Change Expiration" +msgstr "Змяніць час жыцця копіі" + +#: wp-cache.php:1311 +msgid "Rejected User Agents" +msgstr "Пошукавыя і іншыя боты" + +#: wp-cache.php:1312 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "Каб забараніць плагіна кэшаваць запыты ад пошукавых ботаў і іншых сеткавых робатаў, увядзіце іх назвы ў полі ніжэй (па адным у радку). Калі копія старонкі ўжо існуе ў кэшы Super Cache, то яна ўсё роўна будзе адпраўлена боту." + +#: wp-cache.php:1319 +msgid "Save UA Strings" +msgstr "Захаваць наладкі" + +#: wp-cache.php:1342 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "Не кэшаваць старонкі наступных тыпаў. Паспрабуйцце звярнуцца да Артыкулам Кодэкса WP (па-ангельску), каб даведацца больш падрабязна пра тыпы старонак. " + +#: wp-cache.php:1345 +msgid "Single Posts" +msgstr "Запісы" + +#: wp-cache.php:1346 +msgid "Pages" +msgstr "Старонкі" + +#: wp-cache.php:1347 +msgid "Front Page" +msgstr "Асноўная старонка" + +#: wp-cache.php:1348 +msgid "Home" +msgstr "Хатняя старонка" + +#: wp-cache.php:1349 +msgid "Archives" +msgstr "Архівы" + +#: wp-cache.php:1350 +msgid "Tags" +msgstr "Пазнакі" + +#: wp-cache.php:1351 +msgid "Category" +msgstr "Рубрыкі" + +#: wp-cache.php:1352 +msgid "Feeds" +msgstr "Фиды" + +#: wp-cache.php:1353 +msgid "Search Pages" +msgstr "Старонкі пошуку" + +#: wp-cache.php:1355 +#: wp-cache.php:1483 +msgid "Save" +msgstr "Захаваць" + +#: wp-cache.php:1372 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "Поле ніжэй Вы таксама можаце запоўніць фрагментамі адрасоў старонак (або груп старонак, напрыклад, архіў за год / месяц і г.д.), якія не будуць кэшавацца. Плагін будзе сканаваць адрасы старонак на прадмет наяўнасці ў іх фрагментаў, указаных ніжэй, перад кэшаваннем. " + +#: wp-cache.php:1378 +msgid "Save Strings" +msgstr "Захаваць спіс забароненых фрагментаў" + +#: wp-cache.php:1394 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "Поле ніжэй Вы можаце запоўніць назвамі файлаў якія будуць кэшаваць, нават калі ў іх назве ёсць забароненых да кэшавання фрагменты." + +#: wp-cache.php:1400 +msgid "Save Files" +msgstr "Захаваць спіс файлаў" + +#: wp-cache.php:1445 +msgid "Currently logging to: " +msgstr "Рэжым запісаны на:" + +#: wp-cache.php:1455 +msgid "Fix problems with the plugin by debugging it here. It can send you debug emails or log them to a file in your cache directory." +msgstr "Тут Вы можаце вырашыць некаторыя праблемы, якія ўзнікаюць пры працы з убудовай, з дапамогай адладкі. Вы можаце запісваць службовую інфармацыю (логі) у файлы дырэкторыі кэша." + +#: wp-cache.php:1456 +msgid "Logging to a file is easier but faces the problem that clearing the cache will clear the log file." +msgstr "Атрымаць доступ да файла лога проста, але пры ачыстцы кэша лог таксама будзе выдалены." + +#: wp-cache.php:1460 +msgid "Debugging" +msgstr "Рэжым адладкі" + +#: wp-cache.php:1461 +msgid "Logging Type" +msgstr "Тып ўваходу" + +#: wp-cache.php:1461 +msgid "Email" +msgstr "Email" + +#: wp-cache.php:1462 +msgid "file" +msgstr "Файл" + +#: wp-cache.php:1463 +msgid "IP Address" +msgstr "Адрас IP" + +#: wp-cache.php:1463 +#, php-format +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(Запісвае звароту толькі з гэтага IP. Ваш IP -% s)" + +#: wp-cache.php:1464 +msgid "Log level" +msgstr "Узровень логу" + +#: wp-cache.php:1470 +msgid "(1 = less, 5 = more, may cause severe server load.)" +msgstr "(1 = найменшы, 5 = найбольшы, можа выклікаць болшую нагрузку на сервер)" + +#: wp-cache.php:1473 +msgid "In very rare cases two problems may arise on some blogs:

      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "У асабліва рэдкіх выпадках на блогу могуць здарыцца дзве праблемы:
      1. Замест галоўнай старонкі карыстальнікі будуць бачыць прапанову загрузіць. Zip архіў з ёй
      2. Замест галоўнай старонкі можа быць дададзеная ў кэш зусім іншая (толькі ў выпадку, калі Ваш бог выкарыстоўвае наступную структуру спасылак /% category% /% postname% /).
      " + +#: wp-cache.php:1474 +#, php-format +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "I'm 99% certain! Памылкі, якія могуць паўстаць пры працы з WP Super Cache, не звязаныя з самім убудовай. Яны ўзнікаюць у рэдкіх выпадках, але Вы можаце падстрахавацца, запусціўшы аўтаматычную праверку блога кожныя 5 хвілін. У выпадку памылкі, Вам будзе адпраўлена паведамленне. " + +#: wp-cache.php:1476 +msgid "Check front page every 5 minutes." +msgstr "Правяраць галоўную старонку кожныя 5 хвілін." + +#: wp-cache.php:1477 +msgid "Front page text" +msgstr "Ключавой тэкст" + +#: wp-cache.php:1477 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "Калі ласка, увядзіце тэкст які ўбудова будзе шукаць на галоўнай старонцы. Калі тэкст не будзе знойдзены, то кэш аўтаматычна ачысціцца. Пакіньце поле пустым каб адключыць опцыю." + +#: wp-cache.php:1478 +msgid "Clear cache on error." +msgstr "Ачышчаць кэш пры памылцы." + +#: wp-cache.php:1479 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "Паведаміць адміністратару блога па завяршэння праверкі (карысна пры тэставанні на памылкі)." + +#: wp-cache.php:1493 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "Памылка: сціск GZIP ўключана, адключыце яго калі хочаце запусціць wp-cache." + +#: wp-cache.php:1540 +#: wp-cache.php:1702 +msgid "Warning" +msgstr "Увага" + +#: wp-cache.php:1540 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "Сціск GZIP ўключана ў наладах WordPress, убудова не будзе працаваць да таго часу, пакуль Вы не адключыце gzip." + +#: wp-cache.php:1598 +#: wp-cache.php:1603 +#: wp-cache.php:1635 +#: wp-cache.php:1640 +#: wp-cache.php:1646 +msgid "Error" +msgstr "Памылка" + +#: wp-cache.php:1598 +#, php-format +msgid "Your cache directory ($cache_path) did not exist and couldn’t be created by the web server. Check %s permissions." +msgstr "Тэчка ($ cache_path) не існуе і не можа быць створана ў аўтаматычным рэжыме. Праверце правы доступу да% s." + +#: wp-cache.php:1603 +#, php-format +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "Тэчка (%1$s) або %2$s павінна быць даступная для запісу. Перепроверьте правы доступу." + +#: wp-cache.php:1635 +#, php-format +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "Канфігурацыйны файл WP-Cache (% s) можа быць ня дзейнічае і недаступны для запісу. Калі ласка, выдаліце яго ўручную і абновіце старонку." + +#: wp-cache.php:1640 +#, php-format +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "Канфігурацыйны файл адсутнічае, а тэчка %1$s (%2$s) недаступная для запісу. Праверце правы доступу." + +#: wp-cache.php:1646 +#, php-format +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "Файл WP-Cache (% s) не быў знойдзены. Праверце, завяршылі Вы ўстаноўку ўбудовы." + +#: wp-cache.php:1702 +#, php-format +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "%s/advanced-cache.php не існуе або не можа быць абноўлены ў аўтаматычным рэжыме." + +#: wp-cache.php:1703 +msgid "1. If it already exists please delete the file first." +msgstr "1. Калі ён ужо існуе ў тэчках Вашага блога, выдаліце ​​яго." + +#: wp-cache.php:1704 +#, php-format +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. Зменіце правы доступу да %1$s, каб можна было запісаць дадзеныя ў аўтаматычным рэжыме (правы павінны быць: chmod 777 %1$s), праверце правільнасць зададзеных правоў і абновіце старонку. Гэта часовае ўмова, пасля абнаўлення старонкі правы доступу трэба вярнуць на ранейшыя (з 777 на 755). " + +#: wp-cache.php:1705 +#, php-format +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. Абнавіце старонку, файл% s / advanced-cache.php абновіцца сам" + +#: wp-cache.php:1706 +#, php-format +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "Калі гэта не спрацавала, пераканайцеся што% s / advanced-cache.php сапраўды не існуе:" + +#: wp-cache.php:1707 +#, php-format +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. Адкрыйце файл %1$s$wp_cache_file ў тэкставым рэдактары.
    • 2. Зменіце радок CACHEHOME на %2$s
    • 3. Захавайце файл і скапіруйце ў %3$s, затым абновіце старонку.
    • " + +#: wp-cache.php:1730 +msgid "

      WP_CACHE constant set to false

      The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

      define('WP_CACHE', true);

      " +msgstr "

      Параметр WP_CACHE не актываваны

      Дадзены параметр павінен быць актываваны для таго, каб WordPress мог карэктна працаваць з файламі кэша. У дадзены момант ён адключаны. Каб уключыць яго, адкрыйце файл wp-config.php і дадайце ў яго наступны радок:

      define('WP_CACHE', true);

      " + +#: wp-cache.php:1732 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "\"Памылка: Зменная WP_CACHE ня актываваная ў файле агульных канфігурацый wp-config.php . " + +#: wp-cache.php:1733 +#, php-format +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "Выпраўце файл наладак код %s і дадайце наступную пункту:
      define('WP_CACHE', true);
      Інакш, WP-Cache не зможа запусціцца. " + +#: wp-cache.php:1737 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the FAQ. The WP_CACHE line must be moved up." +msgstr "

      Пераменная WP_CACHE дададзеная ў файл канфігурацый wp-config.php

      Калі Вы да гэтага часу бачыце дадзенае паведамленне, то паспрабуйцце звярнуцца з пунктам 5 чаво (на англ.). Радок з WP_CACHE павінна быць размешчаная вышэй. " + +#: wp-cache.php:1759 +msgid "Cache Contents" +msgstr "Стан кэша" + +#: wp-cache.php:1762 +msgid "Object cache in use. No cache listing available." +msgstr "Спіс кэшавання недаступны." + +#: wp-cache.php:1786 +#, php-format +msgid "Deleting supercache file: %s
      " +msgstr "Выдаленне файлаў Super Cache:% s
      " + +#: wp-cache.php:1803 +#, php-format +msgid "Deleting wp-cache file: %s
      " +msgstr "Выдаленне файлаў WP-Cache:% s
      " + +#: wp-cache.php:1868 +msgid "Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page." +msgstr "Статыстыка аб'ектыў ў кэшы НЕ ствараецца аўтаматычна. Каб абнавіць яе ўручную націсніце на спасылку ніжэй." + +#: wp-cache.php:1869 +msgid "Regenerate cache stats" +msgstr "Абнавіць статыстыку кэша" + +#: wp-cache.php:1871 +#, php-format +msgid "Cache stats last generated: %s minutes ago." +msgstr "Статыстыка аб'ектаў у кэшы апошні раз створана:% s мін таму." + +#: wp-cache.php:1877 +msgid "WP-Cache" +msgstr "Стан WP-Cache" + +#: wp-cache.php:1878 +#: wp-cache.php:1894 +#, php-format +msgid "%s Cached Pages" +msgstr "%s старонак у кэшы" + +#: wp-cache.php:1879 +#: wp-cache.php:1899 +#, php-format +msgid "%s Expired Pages" +msgstr "%s старонак пратэрмінаваны" + +#: wp-cache.php:1893 +msgid "WP-Super-Cache" +msgstr "Стан WP-Super-Cache" + +#: wp-cache.php:1904 +msgid "Fresh WP-Cached Files" +msgstr "Новыя файлы WP-Cache" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "URI" +msgstr "АДРАС" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +msgid "Key" +msgstr "Ключ" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "Age" +msgstr "Узрост" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "Delete" +msgstr "Выдаліць" + +#: wp-cache.php:1920 +msgid "Stale WP-Cached Files" +msgstr "Старыя файлы WP-Cache" + +#: wp-cache.php:1936 +msgid "Fresh Super Cached Files" +msgstr "Новыя файлы Super Cache" + +#: wp-cache.php:1952 +msgid "Stale Super Cached Files" +msgstr "Старыя файлы Super Cache" + +#: wp-cache.php:1968 +msgid "Hide file list" +msgstr "Прыбраць спіс" + +#: wp-cache.php:1970 +msgid "Too many cached files, no listing possible." +msgstr "Занадта шмат аб'ектаў у кэшы, стварэнне спісу немагчыма." + +#: wp-cache.php:1972 +msgid "List all cached files" +msgstr "Спіс кэшаваных файлаў" + +#: wp-cache.php:1978 +#, php-format +msgid "Garbage Collection
      Last GC was %s minutes ago
      " +msgstr "\"Ачыстка смецця
      Папярэдняя ачыстка была% s хвілін назад
      " + +#: wp-cache.php:1979 +#, php-format +msgid "Next GC in %s minutes" +msgstr "Наступная ачыстка будзе праз% s хвілін" + +#: wp-cache.php:1982 +#, php-format +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "Пратэрмінаваны кэш - гэта старонкі, створаныя больш чым% s секунд таму. Не гледзячы на ​​свой статус, яны выкарыстоўваюцца ў агульным кэшы і перыядычна выдаляюцца." + +#: wp-cache.php:1993 +msgid "Delete Expired" +msgstr "Выдаліць пратэрмінаваны кэш" + +#: wp-cache.php:1999 +#: wp-cache.php:2011 +#: wp-cache.php:2174 +msgid "Delete Cache" +msgstr "Выдаліць увесь кэш" + +#: wp-cache.php:2011 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Выдаліць файлы Super Cache (у новым акне)" + +#: wp-cache.php:2150 +#, php-format +msgid "%1$s is Digg proof thanks to caching by %2$s" +msgstr "%1$s ўдзячны плагіна %2$s за проделаннную працу" + +#: wp-cache.php:2183 +#, php-format +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "Плагін WP Super Cache павінен быць наладжаны! Каб актываваць яго і наладзіць, перайдзіце на старонку кіравання убудовай. " + +#: wp-cache.php:2189 +msgid "Settings" +msgstr "Налады" + +#: wp-cache.php:2199 +#, php-format +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "Плагін WP Super Cache не актываваны. Каб актываваць яго, перайдзіце на старонку кіравання убудовай. " + +#: wp-cache.php:2218 +#, php-format +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] Галоўная старонка сціснута з дапамогай gzipped! Выдаліце ​​кэш!" + +#: wp-cache.php:2218 +#, php-format +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "Адбылася памылка! Наведайце% s каб выдаліць кэш!" + +#: wp-cache.php:2221 +#, php-format +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] Галоўная старонка сціснута з дапамогай gzipped! Кэш выдалены!" + +#: wp-cache.php:2221 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "Увесь кэш для Вашага блога быў ачышчаны, так як убудова заўважыў памылку на галоўнай старонцы (яна запампоўваліся архівам). Каб праверыць кэш, наведайце гэтую стрницу% s." + +#: wp-cache.php:2228 +#, php-format +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] Кэш галоўнай старонкі змяшчае памылку! Выдаліце ​​кэш!" + +#: wp-cache.php:2228 +#, php-format +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "Адбылася памылка, на галоўнай старонцы Вашага блога не быў выяўлены ключавой тэкст \"%2$s\"! Каб выправіць памылку, наведайце гэтую старонку %1$s і ўручную ачысьціць кэш." + +#: wp-cache.php:2231 +#, php-format +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] Галоўная старонка адлюстроўваецца з памылкай! Кэш выдалены!" + +#: wp-cache.php:2231 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "Адбылася памылка, на галоўнай старонцы Вашага блога не быў выяўлены ключавой тэкст \"%2$s\"! Наведайце гэтую старонку %1$s каб праверыць кэш." + +#: wp-cache.php:2236 +#, php-format +msgid "[%s] Front page check!" +msgstr "[%s] Галоўная старонка праверана!" + +#: wp-cache.php:2236 +#, php-format +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "Плагін WP Super Cache толькі што праверыў галоўную старонку Вашага блога на прадмет памылак. Каб адключыць апавяшчэння і праверку наведаеце гэтую старонку% s." + +#: wp-cache.php:2279 +msgid "Cannot update .htaccess" +msgstr "Не магу абнавіць файл. Htaccess" + +#: wp-cache.php:2279 +#, php-format +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "Файл %s.htaccess не можа быць абноўлены ў аўтаматычным рэжыме. Каб выправіць гэта задайце неабходныя для запісу правы доступу да яго. " + +#: wp-cache.php:2279 +msgid "Refresh this page when the file permissions have been modified." +msgstr "Абнавіце старонку калі неабходныя правы доступу будуць зададзены." + +#: wp-cache.php:2279 +#, php-format +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "Вы таксама можаце рэдагаваць файл %s.htaccess ўручную і асабіста дадаць неабходныя правілы (да наяўных там правілаў WordPress): " + +#: wp-cache.php:2283 +#, php-format +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "Каб убудова мог правільна працаваць з статычнымі html файламі, Вы павінны дадаць у файл %s.htaccess правілы модуля mod_rewrite " + +#: wp-cache.php:2284 +msgid "You can edit the file yourself add the following rules." +msgstr "Вы можаце ўручную адрэдагаваць файл і дадаць неабходныя правілы." + +#: wp-cache.php:2285 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr "Праверце што яны ідуць перад усімі ўжо існуючымі ў дакуменце правіламі WordPress." + +#: wp-cache.php:2293 +msgid "Update Mod_Rewrite Rules" +msgstr "Абнавіць правілы mod_rewrite" + +#: wp-cache.php:2389 +#, php-format +msgid "[%1$s] Cache Preload Started" +msgstr "[%1$s] Агульная кэшаванне пачалося" + +#: wp-cache.php:2391 +#, php-format +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] Абнаўленне кэша запісаў з %2$d па %3$d" + +#: wp-cache.php:2402 +#, php-format +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s] %2$d кэш запісаў абноўлены" + +#: wp-cache.php:2402 +msgid "Refreshed the following posts:" +msgstr "Наступныя запісы абноўлены:" + +#: wp-cache.php:2411 +#, php-format +msgid "Scheduling next preload refresh in %d minutes." +msgstr "Наступнае запланаванае абнаўленне агульнага кэша праз% d хвілін." + +#: wp-cache.php:2421 +#, php-format +msgid "[%s] Cache Preload Completed" +msgstr "[%s] Агульная кэшаванне завершана" + +#: wp-cache.php:2421 +msgid "Cleaning up old supercache files." +msgstr "Выдаляць старыя файлы з кэша Super Cache." + +#: wp-cache.php:2462 +#, php-format +msgid "[%s] Preload may have stalled." +msgstr "[%s] Агульная кэшаванне магло быць спынена." + +#: wp-cache.php:2462 +#, php-format +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"Агульнае кэшаванне было перазапушчаныя. \n" +"%s" + +#~ msgid "" +#~ "Scroll down this page and click the Update Mod_Rewrite Rules button." +#~ msgstr "" +#~ "Пролистайте страницу вних и нажмите кнопку Обновить правила " +#~ "Mod_Rewrite." + +#~ msgid "WP Super Cache Manager" +#~ msgstr "Управление плагином WP Super Cache" + +#~ msgid "Why your configuration may not be changed" +#~ msgstr "Почему конфигурации не могут быть изменены" + +#~ msgid "Why" +#~ msgstr "Почему" + +#~ msgid "ON" +#~ msgstr "ВКЛ" + +#~ msgid "WP Cache and Super Cache enabled" +#~ msgstr "Плагины WP Cache и Super Cache включены" + +#~ msgid "HALF ON" +#~ msgstr "РАБОТАЕТ НАПОЛОВИНУ" + +#~ msgid "Super Cache Disabled, only legacy WP-Cache caching." +#~ msgstr "Плагин Super Cache отключен, работает только кэшировани WP-Cache" + +#~ msgid "OFF" +#~ msgstr "ВЫКЛ" + +#~ msgid "WP Cache and Super Cache disabled" +#~ msgstr "Плагины WP Cache и Super Cache отключены" + +#~ msgid "" +#~ "Cache rebuild. Serve a supercache file to anonymous users while a new " +#~ "file is being generated. Recommended for very busy websites with " +#~ "lots of comments. Makes \"directly cached pages\" and \"Lockdown mode\" " +#~ "obsolete." +#~ msgstr "" +#~ "Восстановление кэша. При включенной опции, гости сайта будут получать " +#~ "старые страницы из плагина Super Cache, пока формируются новые. " +#~ "Рекомендуется использовать данную опцию только для очень " +#~ "посещаемых блогов, где много комментариев. После включения опции в " +#~ "настройках \"прямое кэширование страниц\" и \"закрытый режим\" нет нужды " +#~ "(они устаревают)" + +#~ msgid "" +#~ "List the newest cached pages (may be expensive to run on busy sites, use " +#~ "with caution.)" +#~ msgstr "" +#~ "Создавать список новых кэшированных страниц (использовать на свой страх и " +#~ "риск, может затормозить сайты с большим количеством посетителей)" + +#~ msgid "" +#~ "%1$s really makes your blog go faster. Make it go faster* by " +#~ "buying me an Amazon gift card! Make it out to \"%3$s" +#~ "\" for whatever amount you want. Every penny helps!" +#~ msgstr "" +#~ "%1$s действительно ускоряет Ваш блог. Вы можете сделать его еще " +#~ "быстрее*, купив мне подарочную карту сервиса " +#~ "Amazon! Можете выбрать \"%3$s\" любое значение, какое хотите. Каждая " +#~ "копейка поможет мне!" + +#~ msgid "" +#~ "If Amazon isn’t your thing, there’s also PayPal. Click the " +#~ "\"Donate\" button below or take a quick peek at my wishlist." +#~ msgstr "" +#~ "Если Вы не хотите иметь дело с Amazon , то можно сделать пожертвование " +#~ "через PayPal. Нажмите кнопку \"Пожертвовать\" или выберите подарок для " +#~ "меня из моего списка желаний." + +#~ msgid "Thanks in advance!" +#~ msgstr "Заранее благодарю!" + +#~ msgid "" +#~ "Ok, it won’t go any faster but you’ll make this plugin author " +#~ "very happy!" +#~ msgstr "" +#~ "Ладно, он не будет быстрее, но Вы все равно сделаете автора плагина очень " +#~ "счастливым!" + +#~ msgid "Don’t show me this again." +#~ msgstr "Не показывать больше это сообщение." + +#~ msgid "Hide" +#~ msgstr "Спрятать" + +#~ msgid "" +#~ "He blogs at %1$s and posts photos at %2$s. He would really appreciate a " +#~ "donation to encourage development of this plugin." +#~ "
      Even a penny will help." +#~ msgstr "" +#~ "Блог автора - %1$s, фотоблог - %2$s. Автор плагина будет благодарен любой " +#~ "поддержке от Вас.
      Даже копейка может помочь в " +#~ "его работе." + +#~ msgid "Super Cache Compression" +#~ msgstr "Сжатие кэша Super Cache" + +#~ msgid "Compression is enabled by default when in HALF ON mode." +#~ msgstr "" +#~ "Сжатие кэша отключено по умолчанию в режиме РАБОТАЕТ НАПОЛОВИНУ." + +#~ msgid "Super Cache compression is now disabled." +#~ msgstr "Сжатие кэша Super Cache теперь отключено." + +#~ msgid "Super Cache compression is now enabled." +#~ msgstr "Сжатие кэша Super Cache теперь включено." + +#~ msgid "Update Compression" +#~ msgstr "Обновить настройки сжатия" + +#~ msgid "Debug Settings" +#~ msgstr "Параметры отладки" + +#~ msgid "" +#~ "

      WP_CACHE constant in wp-config.php set to false

      The WP_CACHE " +#~ "constant is defined in your wp-config.php but must be set to true, not " +#~ "false for this plugin to work correctly.

      " +#~ msgstr "" +#~ "

      Значение для WP_CACHE в конфигурационном файле WordPrees wp-config." +#~ "php установлено на \"false\"

      Чтобы плагин заработал, значение " +#~ "WP_CACHE в wp-config.php нужно поставить на \"true\".

      " + +#~ msgid "You must edit the file yourself add the following rules." +#~ msgstr "" +#~ "Вы должны вручную отредактировать файл и добавить необходимые правила." diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-de_DE.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-de_DE.mo new file mode 100644 index 0000000000000000000000000000000000000000..bb9ee20b75ad44cd4c78e69fa8095fb00c3e5314 GIT binary patch literal 70830 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 B4blJr literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-de_DE.po b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-de_DE.po new file mode 100644 index 0000000..abb70ce --- /dev/null +++ b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-de_DE.po @@ -0,0 +1,1547 @@ +# Translation of the WordPress plugin by . +# Copyright (C) 2010 +# This file is distributed under the same license as the package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: wp-super-cache 1.2\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-super-cache\n" +"POT-Creation-Date: 2011-02-23 17:57:46+00:00\n" +"PO-Revision-Date: 2011-02-24 16:42+0100\n" +"Last-Translator: \n" +"Language-Team: Blog-Lounge.org \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: en, er,\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: plugins/badbehaviour.php:47 +msgid "Bad Behaviour not found. Please check your install." +msgstr "\"Bad Behaviour\" nicht gefunden. Bitte überprüfe deine Installation." + +#: plugins/badbehaviour.php:63 +msgid "Bad Behavior" +msgstr "Schlechtes Verhalten (Bad Behavior)" + +#: plugins/badbehaviour.php:65 +#: plugins/awaitingmoderation.php:34 +#: plugins/domain-mapping.php:60 +#: wp-cache.php:1205 +msgid "Enabled" +msgstr "Aktiviert" + +#: plugins/badbehaviour.php:66 +#: plugins/awaitingmoderation.php:35 +#: plugins/domain-mapping.php:61 +#: wp-cache.php:1205 +msgid "Disabled" +msgstr "Deaktiviert" + +#: plugins/badbehaviour.php:68 +msgid "(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr "(Nur Legacy-Caching wird unterstützt, Komprimierung deaktiviert, und benötigt Bad Behavior in \"%s/plugins/bad-behavior/\") " + +#: plugins/badbehaviour.php:71 +#: plugins/awaitingmoderation.php:40 +#: plugins/searchengine.php:69 +#: plugins/domain-mapping.php:66 +#: wp-cache.php:1552 +msgid "enabled" +msgstr "aktiviert" + +#: plugins/badbehaviour.php:73 +#: plugins/awaitingmoderation.php:42 +#: plugins/searchengine.php:67 +#: plugins/domain-mapping.php:68 +msgid "disabled" +msgstr "deaktiviert" + +#: plugins/badbehaviour.php:74 +msgid "Bad Behavior support is now %s" +msgstr "\"Bad Behaviour\"-Support ist jetzt %s. " + +#: plugins/badbehaviour.php:76 +#: plugins/awaitingmoderation.php:45 +#: plugins/domain-mapping.php:71 +msgid "Update" +msgstr "Aktualisieren" + +#: plugins/badbehaviour.php:83 +#: wp-cache.php:1295 +#: wp-cache.php:1297 +msgid "Warning!" +msgstr "Warnung!" + +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "Dein Kommentar wird vor der Freigabe moderiert." + +#: plugins/awaitingmoderation.php:32 +msgid "Awaiting Moderation" +msgstr "Wartet auf Freigabe " + +#: plugins/awaitingmoderation.php:36 +msgid "Enables or disables plugin to Remove the text \"Your comment is awaiting moderation.\" when someone leaves a moderated comment." +msgstr "Aktiviert oder deaktiviert: Entferne den Text \"Dein Kommentar wird vor der Freigabe moderiert.\" wenn jemand einen zu moderierenden Kommentar hinterlässt. " + +#: plugins/awaitingmoderation.php:43 +msgid "Awaiting Moderation is now %s" +msgstr "\"Awaiting Moderation\"-Plugin ist jetzt %s. " + +#: plugins/searchengine.php:61 +#: plugins/searchengine.php:76 +#: wp-cache.php:1218 +msgid "Disable" +msgstr "Deaktiviere" + +#: plugins/searchengine.php:71 +msgid "No Adverts for Friends plugin is %s." +msgstr "No Adverts for Friends-Plugin ist %s. " + +#: plugins/searchengine.php:72 +msgid "(requires friendsadverts.php too) " +msgstr "(friendsadverts.php ebenfalls erforderlich) " + +#: plugins/searchengine.php:74 +#: wp-cache.php:1218 +msgid "Enable" +msgstr "Aktiviere" + +#: plugins/domain-mapping.php:58 +msgid "Domain Mapping" +msgstr "Domain-Mapping" + +#: plugins/domain-mapping.php:63 +msgid "Provides support for Domain Mapping plugin to map multiple domains to a blog." +msgstr "Unterstützt das Domain Mapping-Plugin, um verschiedene Domains auf einen Blog einzutragen." + +#: plugins/domain-mapping.php:69 +msgid "Domain Mapping support is now %s" +msgstr "\"Domain Mapping\"-Support ist %s. " + +#: plugins/domain-mapping.php:83 +msgid "Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin." +msgstr "\"Domain Mapping\"-Plugin gefunden! Bitte gehe zur Supercache Plugins-Page und aktiviere das \"Domain Mapping\" Hilfs-Plugin." + +#: ossdl-cdn.php:146 +msgid "Your website probably uses lots of static files. Image, Javascript and CSS files are usually static files that could just as easily be served from another site or CDN. Therefore this plugin replaces any links in the wp-content and wp-includes directories (except for PHP files) on your site with the URL you provide below. That way you can either copy all the static content to a dedicated host or mirror the files to a CDN by origin pull." +msgstr "Deine Webseite nutzt evtl. viele statische Dateien. Bilder, Javascript- und CSS-Dateien sind normalerweise statische Dateien, die genausogut von einer anderen (Sub-)Domain oder einem CDN (Content Distribution Network) ausgeliefert werden können. Deshalb ersetzt dieses Plugin alle Pfade in den Verzeichnissen wp-content und wp-includes (ausnahmsweise der PHP-Dateien) deiner Seite mit dem URL, den Du unten eingibst. Auf diese Art können die statischen Inhalte auf einen dedizierten Server kopiert werden, oder die Dateien über ein \"CDN\" via origin pull gespiegelt werden." + +#: ossdl-cdn.php:147 +#: wp-cache.php:968 +msgid "The CDN Sync Tool plugin will help upload files to Amazon S3/Cloudfront if you would rather not depend on origin pull. See the plugin support forum if you have any queries about this plugin." +msgstr "Das CDN Sync-Tool Plugin wird den Dateiupload zu Amazon S3/Cloudfront unterstützen, wenn Du lieber vom Orginalzugriff unabhängig bist. Lies das plugin support forum, wenn Du zu diesem Plugin irgendwelche Fragen hast." + +#: ossdl-cdn.php:148 +msgid "WARNING: Test some static urls e.g., %s to ensure your CDN service is fully working before saving changes." +msgstr "WARNUNG: Teste erst ein paar statische URLs, z.B.: %s - um vor dem Speichern deiner Änderungen sicherzustellen, daß dein CDN-Service voll funkionsfähig ist." + +#: ossdl-cdn.php:149 +msgid "You can define different CDN URLs for each site on a multsite network." +msgstr "Du kannst verschiedene CDN-URLs für jede Seite eines Multsite-Blognetzwerks definieren." + +#: ossdl-cdn.php:157 +msgid "Enable CDN Support" +msgstr "Aktiviere CDN Support" + +#: ossdl-cdn.php:160 +msgid "Off-site URL" +msgstr "Off-site URL" + +#: ossdl-cdn.php:163 +msgid "The new URL to be used in place of %1$s for rewriting. No trailing / please.
      Example: %2$s." +msgstr "Der neue URL anstelle von %1$s für das Rewriting. Kein führendes Zeichen / bitte.
      Als Beispiel: %2$s." + +#: ossdl-cdn.php:167 +msgid "Include directories" +msgstr "Schließe Verzeichnisse mit ein" + +#: ossdl-cdn.php:170 +msgid "Directories to include in static file matching. Use a comma as the delimiter. Default is wp-content, wp-includes, which will be enforced if this field is left empty." +msgstr "Verzeichnisse, die in Static File Matching mit einbezogen werden sollen. Benutze das Komma als Trennzeichen. Die Vorgabe ist wp-content, wp-includes, zwangsläufig eingesetzt, wenn das Feld leer gelassen wird." + +#: ossdl-cdn.php:174 +msgid "Exclude if substring" +msgstr "Verbergen falls Substring" + +#: ossdl-cdn.php:177 +msgid "Excludes something from being rewritten if one of the above strings is found in the match. Use a comma as the delimiter like this, .php, .flv, .do, and always include .php (default)." +msgstr "Schließt etwas vor Revisionen aus, wenn eine der obengenannten Zeichenketten im Ergebnis gefunden wird. Benutze ein Komma als Trennzeichen, wie hier: .php, .flv, .do, und binde immer .php mit ein (Standard)." + +#: ossdl-cdn.php:181 +msgid "Additional CNAMES" +msgstr "Weitere CNAMES" + +#: ossdl-cdn.php:184 +msgid "These CNAMES will be used in place of %1$s for rewriting (in addition to the off-site URL above). Use a comma as the delimiter. For pages with a large number of static files, this can improve browser performance. CNAMEs may also need to be configured on your CDN.
      Example: %2$s" +msgstr "Diese CNAMES werden anstatt der %1$s für Rewriting genutzt (als Ergänzung zu dem Off-Site URL weiter oben). Benutze ein Komma als Trennzeichen. Für Seiten mit einer großen Anzahl statischer Dateien kann sich dadurch die Leistung des Browsers verbessern. Es kann sein, das CNAMEs auch in deinem CDN konfiguriert werden müssen.
      Als Beispiel: %2$s" + +#: ossdl-cdn.php:188 +msgid "Skip https URLs to avoid \"mixed content\" errors" +msgstr "Überspringt https URLs um \"mixed content\" Fehler zu vermeiden" + +#: ossdl-cdn.php:192 +msgid "Save Changes" +msgstr "Änderungen speichern" + +#: ossdl-cdn.php:194 +msgid "CDN functionality provided by OSSDL CDN Off Linker by Mark Kubacki" +msgstr "CDN-Funktionen bereitgestellt durch OSSDL CDN Off Linker von Mark Kubacki." + +#: wp-cache.php:99 +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "Bitte erstelle %s /wp-cache-config.php aus der wp-super-cache/wp-cache-config-sample.php" + +#: wp-cache.php:162 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "Achtung! PHP Safe-Modus ist aktiviert!!" + +#: wp-cache.php:163 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "Kann sein dass es zu Probleme mit diesem Plugin kommt, da SAFE MODE aktiviert ist." + +#: wp-cache.php:167 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "Dein Server ist so eingestellt, dass erst die Besitzrechte des PHP-Skripts überprüft werden, bevor Schreib- und Lese-Zugriff gestattet wird." + +#: wp-cache.php:168 +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "Du oder ein Administrador könnten es ans Laufen kriegen, wenn die Besitzrechte des Plugin-Skripts entsprechend den Einstellungen auf dem Webserver (Gruppe/Besitzer) angepasst werden. Die Besitzergruppe des %s/cache/-Verzeichnisses muss ebenfalls geändert werden. Weitere Details unter Safe-Modus Anleitung." + +#: wp-cache.php:170 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "Du oder ein Administrator müssen das deaktivieren. Bitte besuche die Seite Safe-Modus Anleitung für weitere Details. Leider kann das nicht per .htaccess ausgeschaltet werden, sondern muss in der php.ini konfiguriert werden." + +#: wp-cache.php:176 +msgid "Permlink Structure Error" +msgstr "Fehler in Permalink-Struktur" + +#: wp-cache.php:177 +msgid "A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks." +msgstr "Benutzerdefinierte Struktur oder Permalink-Struktur ist für korrektes Funkionieren des Plugins erforderlich. Bitte gehe zu Einstellungen > Permalinks um deine Permalinks zu konfigurieren." + +#: wp-cache.php:189 +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "Achtung! Dein Host-Name \"%s\" wird in %s aufgelöst" + +#: wp-cache.php:190 +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "Dein Server glaubt, dein Host-Name wird zu %s aufgelöst. Einige Dienste, z.B. die Garbage-Collection dieses Plugins und in WordPress eingebundene Beiträge, werden evtl. nicht korrekt funktionieren." + +#: wp-cache.php:191 +#: wp-cache.php:205 +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "Bitte lese den Eintrag Nº16 im Bereich: Troubleshooting der readme.txt" + +#: wp-cache.php:204 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "Leider kann WordPress die Datei wp-cron.php nicht finden. Dieses Skript wird für einwandfreies Funktionieren der Garbage-Collection dieses Plugins, der zeitlichen Einbindung von Beiträgen in WordPress und andere kritische Aktionen benötigt." + +#: wp-cache.php:219 +msgid "Cannot continue... fix previous problems and retry." +msgstr "Geht nicht weiter... vorausgegangene Probleme beheben und noch einmal versuchen." + +#: wp-cache.php:228 +msgid "Zlib Output Compression Enabled!" +msgstr "\"Zlib Output Compression\" (Dateiausgabe komprimiert) ist aktiviert!!" + +#: wp-cache.php:229 +msgid "PHP is compressing the data sent to the visitors of your site. Disabling this is recommended as the plugin caches the compressed output once instead of compressing the same page over and over again. Also see #21 in the Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "PHP komprimiert die Daten, die an die Besucher deiner Seite gesendet werden. Deaktivierung wird hier empfohlen, da das Plugin ansonsten einmalig die komprimierte Ausgabe cached statt die gleiche Seite immer und immer wieder zu cachen. Beachte dazu auch #21 im Bereich \"Troubleshooting\". Lese diese Seite mit Anweisungen zur Bearbeitung deiner php.ini." + +#: wp-cache.php:233 +msgid "Mod rewrite may not be installed!" +msgstr "Mod Rewrite ist wahrscheinlich nicht installiert!" + +#: wp-cache.php:234 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use legacy or PHP modes." +msgstr "Scheint als wäre mod_rewrite nicht installiert. Manchmal ist dieser Check nicht zuverlässig, besonders wenn dein Webserver nicht mit Apache arbeitet. Bitte stelle sicher, dass das Modul mod_rewrite aktiviert ist. Es wird benötigt, um statische Supercache-Dateien zu erstellen. Du kannst dann immer noch Legacy oder PHP-Modi benutzen." + +#: wp-cache.php:239 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "Nur Leserechte (Read-Only Modus). Die Konfiguration kann nicht geändert werden." + +#: wp-cache.php:240 +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "Die WP-Super-Cache Konfigurationsdatei %s/wp-cache-config.php kann nicht bearbeitet werden. Für jegliche Änderung muss der Webserver Schreibrechte für die Datei besitzen." + +#: wp-cache.php:241 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "Eine einfache Art das zu tun ist, die Berechtigungen temporär per CHMOD über die Konsole oder mit deinem FTP-Programmm zu ändern. Sorge dafür dass sie global beschreibbar ist, dann soll es wohl klappen." + +#: wp-cache.php:242 +#: wp-cache.php:258 +msgid "This page explains how to change file permissions." +msgstr "Diese Seite erklärt, wie Datei-Zugriffsrechte geändert werden können (Englisch)." + +#: wp-cache.php:243 +msgid "Writeable:" +msgstr "Beschreibbar: " + +#: wp-cache.php:244 +msgid "Readonly:" +msgstr "Nur Leserechte: " + +#: wp-cache.php:256 +msgid "Warning! %s is writeable!" +msgstr "Warnung! %s ist beschreibbar!" + +#: wp-cache.php:257 +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "Du solltest die Zugriffsrechte in %s ändern, stelle sie etwas restriktiver ein. Benutze dein FTP-Programm, oder die folgende Anweisung um das zu erledigen:" + +#: wp-cache.php:267 +msgid "Mobile rewrite rules detected" +msgstr "\"Rewrite Rules\" für mobile Endgeräte gefunden" + +#: wp-cache.php:268 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"2.0\\ MMP|240x320\" and delete those." +msgstr "Für optimale Performance solltest Du \"Mobile Endgeräte unterstützen\" aktivieren oder die \"Rewrite Rules für mobile Endgeräte\" in der .htaccess löschen. Suche die beiden Zeilen mit dem Text \"2.0\\ MMP|240x320\" und entferne sie." + +#: wp-cache.php:268 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "Hat keinen Einfluss auf normale Besucher, nur Handy-Benutzer bekommen ungecachede Seiten angezeigt." + +#: wp-cache.php:274 +#: wp-cache.php:285 +msgid "Rewrite rules must be updated" +msgstr "\"Rewrite Rules\" müssen aktualisiert werden!" + +#: wp-cache.php:275 +#: wp-cache.php:286 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "Die \"Rewrite Rules\" für dieses Plugin wurden geändert oder sind nicht vorhanden." + +#: wp-cache.php:276 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "Die Unterstützung mobiler Endgeräte benötigt Extra-Regeln in der Datei .htaccess, oder Du setzt das Plugin in den Legacy-Modus. Hier sind deine Oprionen (sortiert nach Schwierigkeitsgrad):" + +#: wp-cache.php:277 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "Setze das Plugin auf den half-on-Modus und aktiviere \" Unterstützung mobiler Endgeräte\"." + +#: wp-cache.php:278 +#: wp-cache.php:287 +msgid "Scroll down the Advanced Settings page and click the Update Mod_Rewrite Rules button." +msgstr "Scroll zum Ende der \"Erweitere Einstellungen\"-Seite und klicke auf den Schalter Mod_Rewrite Rules aktualisieren." + +#: wp-cache.php:279 +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "Lösche die mod_rewrite rules des Plugins in %s.htaccess zwischen # BEGIN WPSuperCache und # END WPSuperCache und lass sie dann vom Plugin neu generieren. Dazu musst Du nur diese Seite im Browser neu laden." + +#: wp-cache.php:280 +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ add these lines: (do it twice, once for each section)" +msgstr "Trage die Regeln selbst ein. Bearbeite %s.htaccess und finde den Block zwischen den Zeilen # BEGIN WPSuperCache und # END WPSuperCache. Da gibt es zwei Bereiche, die sich sehr ähneln. Direkt unterhalb der Zeile %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$ diese Zeilen einfügen: (zweimal, jeweils eine in beiden Bereichen)" + +#: wp-cache.php:293 +msgid "Required to serve compressed supercache files properly." +msgstr "Erforderlich um komprimierte Supercache-Dateien sauber zu erstellen." + +#: wp-cache.php:293 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "Erforderlich um Caching-Infos in Supercache-Seiten zu schreiben. IE7-User bekommen ohne dieses Modul nur alte Seiten zu sehen." + +#: wp-cache.php:293 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "Setzt das Ablaufdatum für Supercache-Seiten. Besucher bekommen unter Umständen ohne diese Modul neue Seiten nicht angezeigt oder verlieren Kommentare, wenn sie den Browser neu laden." + +#: wp-cache.php:300 +msgid "Missing Apache Modules" +msgstr "Fehlende Apache-Module" + +#: wp-cache.php:301 +msgid "The following Apache modules are missing. The plugin will work in legacy mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "Folgende Apache-Module fehlen. Das Plugin arbeitet ohne sie im Legacy-Modus. Im vollen Supercache-Modus kann es ansonsten passieren, dass deine Besucher beschädigte Seiten oder veraltete Inhalte sehen." + +#: wp-cache.php:459 +msgid "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file." +msgstr "Achtung! Du hast versucht die Datei-Komprimierung zu aktivieren, aber zlib.output_compression ist aktiv. Lese dazu #21 im Bereich Troubleshooting der Datei readme.txt." + +#: wp-cache.php:550 +msgid "WP Super Cache Settings" +msgstr "WP-Super-Cache Einstellungen" + +#: wp-cache.php:561 +msgid "Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced Settings Page by default." +msgstr "Hinweis: Mod_rewrite oder Legacy-Caching aktiviert. Die Seite \"Erweiterte-Einstellungen\" wird standardmässig angezeigt." + +#: wp-cache.php:572 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "Die Konfigurationsdatei wurde geändert, einige Werte sind vielleicht falsch. Bitte die Seite neu laden im Menü \"Einstellungen\", um sie zurückzusetzen." + +#: wp-cache.php:597 +msgid "Caching must be enabled to use this feature" +msgstr "Caching muss aktiviert sein, um diese Option nutzen zu können" + +#: wp-cache.php:615 +#: wp-cache.php:746 +msgid "Cancel Cache Preload" +msgstr "Cache-Preload abstellen" + +#: wp-cache.php:623 +#: wp-cache.php:634 +msgid "Scheduled preloading of cache cancelled." +msgstr "Planmässiges Vorladen des Cache abgebrochen." + +#: wp-cache.php:660 +#: wp-cache.php:744 +msgid "Preload Cache Now" +msgstr "Cache jetzt vorladen" + +#: wp-cache.php:664 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "Planmässiges Vorladen des Cache in 10 Sekunden" + +#: wp-cache.php:669 +msgid "Scheduled preloading of cache in %d minutes" +msgstr "Planmässiges Vorladen des Cache in %d Minuten" + +#: wp-cache.php:673 +msgid "This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now." +msgstr "Dadurch werden alle publizierten Seiten und Beiträge gecached. Es werden statische Supercache-Dateien erstellt, so dass anonyme Besucher (inklusive Bots) eine gecachede Seite aufrufen. Das kann möglicherweise dein Google-Ranking verbessern, da kurze Ladezeiten als Maßstab für die Beurteilung von Webseiten relevant sind." + +#: wp-cache.php:674 +msgid "Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "\"Vorladen\" produziert aber auch eine Menge Dateien. Es wird vom ältesten bis zum neuesten Beitrag gecached, also bedenke bitte nur die Neuesten zu cachen, wenn Du viele (10.000+) Einträge hast. Das spielt vor allem auf virtuellen Servern (shared hosting) eine entscheidende Rolle." + +#: wp-cache.php:675 +msgid "In ’Preload Mode’ regular garbage collection will only clean out old legacy files for known users, not the preloaded supercache files. This is a recommended setting when the cache is preloaded." +msgstr "Im \"Preload-Modus\" wird die normale \"Garbage Collection\" (Leeren des abgelaufenen Cache) nur alte Legacy-Dateien für schon bekannte Benutzer bereinigen, nicht die vorab geladenen Supercache-Dateien. Das ist die empfohlene Einstellung wenn der Cache vorgeladen wird." + +#: wp-cache.php:679 +msgid "Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)" +msgstr "Erneuere vorab geladene Cache-Dateien alle %s Minuten. (0 zum deaktivieren, Minimum %d Minuten.)" + +#: wp-cache.php:692 +msgid "all" +msgstr "Alle" + +#: wp-cache.php:705 +msgid "Preload %s posts." +msgstr "Lade %s Beiträge vorab." + +#: wp-cache.php:712 +msgid "Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "Preload-Modus (Garbage-Collection nur für Legacy Cache-Dateien. Empfohlen.)" + +#: wp-cache.php:715 +msgid "Send me status emails when files are refreshed." +msgstr "Sende mir E-Mails zum Status, wenn Dateien erneuert wurden." + +#: wp-cache.php:720 +msgid "Many emails, 2 emails per 100 posts." +msgstr "Viele E-Mails, 2 E-Mails pro 100 Beiträge." + +#: wp-cache.php:723 +msgid "Medium, 1 email per 100 posts." +msgstr "Mittel, 1 E-Mail pro 100 Beiträge." + +#: wp-cache.php:726 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "Weniger E-Mails, 1 am Anfang und 1 am Ende des Preloads aller Beiträge." + +#: wp-cache.php:730 +msgid "Refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Erneuern des Cache in %d Stunden %d Minuten und %d Sekunden." + +#: wp-cache.php:731 +msgid "Full refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Vollständiges Erneuern des Cache in %d Stunden %d Minuten und %d Sekunden." + +#: wp-cache.php:737 +msgid "Currently caching from post %d to %d." +msgstr "Momentan wird von Beitrag %d bis %d gecached." + +#: wp-cache.php:741 +msgid "Page last cached: %s" +msgstr "Seite zuletzt gecached: %s" + +#: wp-cache.php:744 +msgid "Update Settings" +msgstr "Einstellungen aktualisieren" + +#: wp-cache.php:752 +msgid "Preloading of cache disabled. Please disable legacy page caching or talk to your host administrator." +msgstr "Cache-Preloading deaktiviert. Bitte deaktiviere Legacy-Caching oder kläre das mit deinem Hosting-Administrator." + +#: wp-cache.php:769 +#: wp-cache.php:865 +msgid "Caching" +msgstr "Caching" + +#: wp-cache.php:773 +msgid "Cache hits to this website for quick access." +msgstr "Cache Treffer auf diese Webseite für schnellen Zugriff." + +#: wp-cache.php:773 +#: wp-cache.php:774 +#: wp-cache.php:791 +#: wp-cache.php:796 +#: wp-cache.php:799 +#: wp-cache.php:800 +#: wp-cache.php:813 +#: wp-cache.php:868 +msgid "Recommended" +msgstr "Empfohlen" + +#: wp-cache.php:774 +msgid "Use mod_rewrite to serve cache files." +msgstr "Nutze mod_rewrite um Cache-Dateien auszuliefern." + +#: wp-cache.php:775 +msgid "Use PHP to serve cache files." +msgstr "Nutze PHP um Cache-Dateien auszuliefern." + +#: wp-cache.php:776 +msgid "Legacy page caching." +msgstr "Legacy Page-Caching." + +#: wp-cache.php:777 +msgid "Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should use PHP caching." +msgstr "Mod_rewrite ist am schnellsten, PHP ist fast genau so schnell und einfacher ans Laufen zu kriegen, währen Legacy-Caching langsamer läuft, aber flexibler und ebenso leicht zu aktivieren. Neulinge sollten PHP-Caching wählen." + +#: wp-cache.php:783 +msgid "Miscellaneous" +msgstr "Sonstiges" + +#: wp-cache.php:789 +msgid "Warning! Compression is disabled as gzencode() function not found." +msgstr "Warnung! Komprimierung ist deaktiviert, weil die Funktion gzencode() nicht vorhanden ist." + +#: wp-cache.php:791 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "Komprimiere Seiten, so das sie schneller an Besucher ausgeliefert werden." + +#: wp-cache.php:792 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching it on and off clears the cache." +msgstr "Die Komprimierung ist standardmässig deaktiviert, da manche Hosts Probleme mit komprimierten Dateien haben. An- und abschalten leert den Cache." + +#: wp-cache.php:796 +msgid "304 Not Modified browser caching. Indicate when a page has not been modified since last requested." +msgstr "304 Not Modified Browser Caching. Stelle fest wenn eine Seite seit dem letzten Aufruf nicht modifiziert wurde." + +#: wp-cache.php:797 +msgid "304 support is disabled by default because in the past GoDaddy had problems with some of the headers used." +msgstr "304-Support ist standardmässig deaktiviert, da \"GoDaddy\" in der Vergangenheit Probleme mit ein paar der eingesetzten Header hatte." + +#: wp-cache.php:799 +msgid "Don’t cache pages for known users." +msgstr "Seiten für bekannte Benutzer nicht cachen." + +#: wp-cache.php:800 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated." +msgstr "Cache neu erstellen. Liefert eine Supercache-Datei an anonyme Besucher aus, während eine neue Datei erstellt wird." + +#: wp-cache.php:801 +msgid "Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)" +msgstr "Proudly tell the world your server is Digg proof! (zeigt einen kleinen Hinweis im Footer deines Blogs, dass dein Server \"hieb- und stichfest\" ist)" + +#: wp-cache.php:807 +#: wp-cache.php:1056 +#: wp-cache.php:1563 +msgid "Advanced" +msgstr "Erweitert" + +#: wp-cache.php:811 +msgid "Mobile device support." +msgstr "Unterstützung mobiler Endgeräte." + +#: wp-cache.php:812 +msgid "Clear all cache files when a post or page is published." +msgstr "Alle Cache-Dateien bereinigen, wenn ein Beitrag oder eine Seite publiziert wird." + +#: wp-cache.php:813 +msgid "Extra homepage checks. (Very occasionally stops homepage caching)" +msgstr "Extra Startseiten-Checks. (Stoppt in sehr seltenen Fällen Startseiten-Caching)" + +#: wp-cache.php:814 +msgid "Only refresh current page when comments made." +msgstr "Aktuelle Seite nur erneuern, wenn Kommentare geschrieben werden." + +#: wp-cache.php:815 +msgid "List the newest cached pages on this page." +msgstr "Auflistung der zuletzt gecacheden Pages auf dieser Seite." + +#: wp-cache.php:817 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "Datei \"stumpf\" sperren. Brauchst Du wahrscheinlich nicht, aber es könnte helfen wenn dein Server schwächelt. Achtung! Kann in seltenen Fällen dazu führen das dein Server abstürzt!" + +#: wp-cache.php:819 +msgid "Late init. Display cached files after WordPress has loaded. Most useful in legacy mode." +msgstr "Verzögerte Initiierung. Zeige gecachede Dateien nachdem WordPress geladen ist. Meistens nützlich im Legacy-Modus." + +#: wp-cache.php:821 +msgid "Use object cache to store cached files." +msgstr "Nutze Objekt-Cache um gecachede Dateien zu speichern." + +#: wp-cache.php:821 +msgid "(Experimental)" +msgstr "(Experimentell)" + +#: wp-cache.php:828 +msgid "Note:" +msgstr "Hinweis: " + +#: wp-cache.php:830 +msgid "Uninstall this plugin on the plugins page. It will automatically clean up after itself. If manual intervention is required then simple instructions are provided." +msgstr "Deinstalliere das Plugin in der Plugins-Verwaltung. Es wird dabei automatisch hinter sich aufräumen. Wenn ein manueller Eingriff nötig ist, gibt es einfache Anweisungen." + +#: wp-cache.php:831 +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "Wenn Du das Plugin deinstallierst, stelle sicher dass Verzeichnis %s für den Webserver beschreibbar ist, so das die Dateien advanced-cache.php und cache-config.php automatisch entfernt werden können. (..die Dateien ebenfalls beschreibbar zu machen ist dabei eine gute Idee!)" + +#: wp-cache.php:832 +msgid "Please see the readme.txt for instructions on uninstalling this script. Look for the heading, \"How to uninstall WP Super Cache\"." +msgstr "Bitte werfe einen Blick in readme.txt für Anleitungen zur Deinstallation dieses Skripts. Suche nach der Überschrift \"How to uninstall WP Super Cache\"." + +#: wp-cache.php:833 +msgid "Need help? Check the Super Cache readme file. It includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already have been answered." +msgstr "Hilfe benötigt? Check die Datei Super Cache readme. Sie enthält die Dokumenration zur Installation, FAQ und Troubleshooting-Tipps. Das Supportforum steht ebenso zur Verfügung. Vielleicht ist deine Frage dort schon beantwortet worden." + +#: wp-cache.php:836 +#: wp-cache.php:883 +msgid "Update Status" +msgstr "Update-Status" + +#: wp-cache.php:843 +msgid "Accepted Filenames & Rejected URIs" +msgstr "Akzeptierte Dateinamen & Abgewiesene URIs" + +#: wp-cache.php:868 +msgid "Caching On" +msgstr "Caching An" + +#: wp-cache.php:869 +msgid "Caching Off" +msgstr "Caching Aus" + +#: wp-cache.php:870 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "Hinweis: aktiviert PHP-Caching, Cache-Rebuild und Mobile-Support" + +#: wp-cache.php:880 +msgid "Notice: PHP caching enabled but Supercache mod_rewrite rules detected. Cached files will be served using those rules. If your site is working ok please ignore this message or you can edit the .htaccess file in the root of your install and remove the SuperCache rules." +msgstr "Hinweis: PHP-Caching ist aktiviert, es wurden aber Supercache mod_rewrite rules gefunden. Cache-Dateien werden nach diesen Regeln erstellt. Wenn deine Seite funkioniert, kannst Du diesen Hinweis gerne ignorieren. Oder bearbeite die Datei .htaccess - auf der \"root\" (oberste Ebene im Webverzeichnis) deiner Installation - und entferne die Supercache-Regeln." + +#: wp-cache.php:885 +msgid "Cache Tester" +msgstr "Cache-Tester" + +#: wp-cache.php:886 +msgid "Test your cached website by clicking the test button below." +msgstr "Teste deine gecachede Webseite durch anklicken des Schalters \"Cache testen\" hier unten." + +#: wp-cache.php:892 +msgid "Fetching %s to prime cache: " +msgstr "Lädt %s um den Cache zu priorisieren: " + +#: wp-cache.php:894 +#: wp-cache.php:902 +#: wp-cache.php:910 +msgid "OK" +msgstr "OK" + +#: wp-cache.php:897 +msgid "Fetching first copy of %s: " +msgstr "Lädt die erste Kopie von %s: " + +#: wp-cache.php:905 +msgid "Fetching second copy of %s: " +msgstr "Lädt die zweite Kopie von %s: " + +#: wp-cache.php:913 +msgid "One or more page requests failed:" +msgstr "Ein oder mehrere Seitenaufrufe fehlgeschlagen: " + +#: wp-cache.php:932 +#: wp-cache.php:933 +msgid "Page %d: %d (%s)" +msgstr "Seite %d: %d (%s)" + +#: wp-cache.php:939 +msgid "Page 1: %s" +msgstr "Seite 1: %s" + +#: wp-cache.php:940 +msgid "Page 2: %s" +msgstr "Seite 2: %s" + +#: wp-cache.php:941 +msgid "The timestamps on both pages match!" +msgstr "Die Zeitstempel auf beiden Seiten stimmen überein!" + +#: wp-cache.php:943 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "Die Seiten stimmen nicht überein! Die Zeitstempel sind unterschiedlich oder wurden nicht gefunden!" + +#: wp-cache.php:950 +msgid "Send non-secure (non https) request for homepage" +msgstr "Sende \"Non-Secure\"-Anfrage (kein https) für Homepage" + +#: wp-cache.php:951 +msgid "Test Cache" +msgstr "Cache testen" + +#: wp-cache.php:955 +msgid "Delete Cached Pages" +msgstr "Lösche gecachede Seiten" + +#: wp-cache.php:956 +msgid "Cached pages are stored on your server as html and PHP files. If you need to delete them use the button below." +msgstr "Gecachede Seiten werden auf deinem Server als HTML- und PHP-Dateien gespeichert. Wenn Du sie löschen mußt, nutze den Button hier unten." + +#: wp-cache.php:959 +#: wp-cache.php:2093 +#: wp-cache.php:2105 +#: wp-cache.php:2268 +msgid "Delete Cache" +msgstr "Cache leeren" + +#: wp-cache.php:963 +msgid "Recommended Links and Plugins" +msgstr "Empfohlene Links und Plugins" + +#: wp-cache.php:964 +msgid "Caching is only one part of making a website faster. Here are some other plugins that will help:" +msgstr "Caching ist nur eine Möglichkeit, eine Webseite \"schneller\" zu machen. Hier ein paar weitere hilfreiche Plugins:" + +#: wp-cache.php:965 +msgid "WP Minify reduces the number of files served by your web server by joining Javascript and CSS files together. Alternatively you can use WPSCMin, a Supercache plugin that minifies cached pages. It does not however join JS/CSS files together." +msgstr "WP Minify reduziert die Anzahl der von deinem Webserver ausgelieferten Dateien durch Kombination der Javascript- und CSS-Dateien. Alternativ dazu kannst Du WPSCMin, ein Supercache-Plugin zur Minimierung gecacheder Seiten nutzen. Dieses bündelt JS/CSS-Dateien in keiner Weise." + +#: wp-cache.php:966 +msgid "Yahoo! Yslow is an extension for the Firefox add-on Firebug. It analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. Also try the performance tools online at GTMetrix." +msgstr "Yahoo! Yslow ist eine Erweiterung des Firefox add-on Firebug. Sie analysiert Webseiten und bietet Möglichkeiten zur Verbesserung der Performanz an, die auf einer Reihe von Regeln für hoch-performante Webseiten bestehen. Probiere auch die Performance-Online-Tools unter GTMetrix." + +#: wp-cache.php:967 +msgid "Use Google Libraries allows you to load some commonly used Javascript libraries from Google webservers. Ironically it may reduce your Yslow score." +msgstr "Nutze Google-Libraries ermöglicht es, einige der allgemein gebräuchlichen Javascript-Bibliotheken von Google Webservern zu laden. Ironischerweise kann das deine Werte im Yslow-Score verschlechtern." + +#: wp-cache.php:969 +msgid "Advanced users only: Speed up your site with Caching and cache-control explains how to make your site more cacheable with .htaccess rules." +msgstr "Nur für Fortgeschrittene: Speed up your site with Caching and cache-control erklärt, wie deine Seite über Regeln in der .htaccess-Datei cache-fähiger gemacht wird." + +#: wp-cache.php:970 +msgid "Advanced users only: Install an object cache. Choose from Memcached, XCache, eAcccelerator and others." +msgstr "Nur für Fortgeschrittene: Installiere einen \"Objekt-Cache\". Wähle Memcached, XCache, eAcccelerator und andere." + +#: wp-cache.php:981 +msgid "Make WordPress Faster" +msgstr "Mach WordPress schneller!" + +#: wp-cache.php:982 +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "%1$s wurde entwickelt/wird gewartet von %2$s unter Beteiligung vieler Anderer." + +#: wp-cache.php:983 +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "Er bloggt unter %1$s und publiziert Photos in %2$s" + +#: wp-cache.php:984 +msgid "Please say hi to him on %s too!" +msgstr "Bitte sag auch \"Hallo\" zu ihm bei %s!" + +#: wp-cache.php:985 +msgid "Need Help?" +msgstr "Hilfe benötigt?" + +#: wp-cache.php:987 +msgid "Installation Help" +msgstr "Hilfe zur Installation" + +#: wp-cache.php:988 +msgid "Frequently Asked Questions" +msgstr "Frequently Asked Questions" + +#: wp-cache.php:989 +msgid "Support Forum" +msgstr "Support-Forum" + +#: wp-cache.php:991 +msgid "Rate This Plugin!" +msgstr "Bitte bewerte dieses Plugin!" + +#: wp-cache.php:992 +msgid "Please rate this plugin and tell me if it works for you or not. It really helps development." +msgstr "Bitte bewerte dieses Plugin und berichte mir, ob es für dich funktioniert oder nicht. Damit unterstützt Du die Weiterentwicklung wirklich und wahrhaftig." + +#: wp-cache.php:1001 +msgid "Cached pages since %1$s : %2$s" +msgstr "Cached-Pages seit %1$s : %2$s" + +#: wp-cache.php:1002 +msgid "Newest Cached Pages:" +msgstr "Neueste Cached-Pages: " + +#: wp-cache.php:1006 +msgid "Cached %s seconds ago" +msgstr "Vor %s Sekunden gecached" + +#: wp-cache.php:1009 +msgid "(may not always be accurate on busy sites)" +msgstr "(auf besucherstarken Seiten vielleicht nicht immer exakt)" + +#: wp-cache.php:1028 +msgid "Cache plugins are PHP scripts that live in a plugins folder inside the wp-super-cache folder. They are loaded when Supercache loads, much sooner than regular WordPress plugins." +msgstr "Cache-Plugins sind PHP-Skripte, die sich im Plugin-Verzeichnis innerhalb des Ordners \"wp-super-cache\" befinden. Sie werden zusammen mit Supercache geladen, viel früher als reguläre WordPress-Plugins." + +#: wp-cache.php:1029 +msgid "This is strictly an advanced feature only and knowledge of both PHP and WordPress actions is required to create them." +msgstr "Das ist definitiv nur eine Option für sehr weit \"Fortgeschrittene\". Kenntnisse sowohl in PHP als auch zu WordPress-Actions sind Vorraussetzung, um sie zu erstellen." + +#: wp-cache.php:1039 +msgid "Available Plugins" +msgstr "Verfügbare Plugins" + +#: wp-cache.php:1056 +msgid "Easy" +msgstr "Easy" + +#: wp-cache.php:1056 +msgid "CDN" +msgstr "CDN" + +#: wp-cache.php:1056 +msgid "Contents" +msgstr "Inhalte" + +#: wp-cache.php:1056 +msgid "Preload" +msgstr "Preload" + +#: wp-cache.php:1056 +msgid "Plugins" +msgstr "Plugins" + +#: wp-cache.php:1056 +msgid "Debug" +msgstr "Debug" + +#: wp-cache.php:1091 +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "Hinweis: WP-Super-Cache mod_rewrite rule Checks sind deaktiviert, insofern sie nicht auf der Hauptseite dieses Blog-Netzwerks laufen." + +#: wp-cache.php:1100 +msgid "Mod Rewrite Rules" +msgstr "Mod Rewrite Rules" + +#: wp-cache.php:1106 +msgid "WordPress MU Detected" +msgstr "WordPress MU (WP Multi-Sites) festgestellt" + +#: wp-cache.php:1106 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "Leider können die \"Rewrite-Rules\" nicht automatisch aktualisiert werden, wenn Du WordPress MU benutzt. Bitte öffne deine .htaccess und füge die folgenden mod_rewrite Regeln oberhalb aller anderen Einträge in die Datei ein." + +#: wp-cache.php:1108 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Mod Rewrite Rules können nicht aktualisiert werden!" + +#: wp-cache.php:1109 +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "Es müssen die Markierungen BEGIN und END in %s.htaccess stehen, damit das Auto-Update funktioniert. Sie sehen so aus und umgeben die WordPress mod_rewrite Regeln: " + +#: wp-cache.php:1111 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "Lade die Seite neu, wenn Du die Datei .htaccess aktualisiert hast." + +#: wp-cache.php:1115 +msgid "Thank you for upgrading." +msgstr "Danke für das Upgrade." + +#: wp-cache.php:1115 +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "Die mod_rewrite-Regeln haben sich verändert, seit Du das Plugin installiert hast. Leider musst Du die alten Supercache-Regeln entfernen, bevor die Neuen aktualisiert werden können. Lade die Seite neu, wenn Du deine .htaccess aktualisiert hast. Wenn Du händisch aktualisieren willst, ändere die folgende Zeile: %1$s so dass sie hinterher so aussieht: %2$s Die einzigen Änderungen: \"HTTP_COOKIE\" wird zu \"HTTP:Cookie\" und \"wordpressuser\" wird zu \"wordpress\". Dies wurde in WordPress 2.5 geändert, ist aber abwärtskompatibel mit älteren Versionen - wenn Du mutig genug bist, sie zu benutzen." + +#: wp-cache.php:1119 +msgid "Trailing slash check required." +msgstr "Überprüfung des \"trailing slash\" (Schrägstrich am Ende des URL) erforderlich." + +#: wp-cache.php:1119 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "Sieht aus als hätte dein Blog URLs, die mit \"/\" aufhören. Dummerweise wurde ein Bug entdeckt, nachdem Du das Plugin installiert hast: URLs, die ohne \"/\" enden liefern den gleichen Inhalt wie URLs mit \"/\", und werden nicht auf den eigentlichen URL weitergeleitet (Dublicate Content). Um das zu beheben, bearbeite deine .htaccess und füge diese beiden Regeln den zwei Super-Cache-Gruppen hinzu: " + +#: wp-cache.php:1121 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "Du kannst sehen wo die Regeln eingetragen werden, wenn Du den \"View mod_rewrite rules\"-Link hier unten anklickst." + +#: wp-cache.php:1135 +msgid "Mod Rewrite rules updated!" +msgstr "Mod Rewrite Rules aktualisiert!" + +#: wp-cache.php:1136 +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "%s.htaccess wurde mit den nötigen mod_rewriteRegeln aktualisiert. Bitte überprüfe, ob sie korrekt sind. So sollten sie aussehen: " + +#: wp-cache.php:1138 +msgid "Mod Rewrite rules must be updated!" +msgstr "Mod Rewrite Rules müssen aktualisiert werden!" + +#: wp-cache.php:1139 +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "Deine %s.htaccess ist für den Webserver nicht beschreibbar und muss mit den nötigen mod_rewrite rules aktualisiert werden. Die neuen Regeln werden, wie hier im Code angezeigt, oberhalb der regulären WordPress-Regeln eingetragen: " + +#: wp-cache.php:1144 +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "WP-Super-Cache mod_rewrite rules in der Datei %s.htaccess gefunden.
      Klicke auf den folgenden Link, um die Einträge die dieser Datei hinzugefügt wurden, anzuzeigen. Wenn Du ein Upgrade des Plugins gemacht hast, stelle sicher dass diese Regeln zutreffen." + +#: wp-cache.php:1147 +msgid "A difference between the rules in your .htaccess file and the plugin rewrite rules has been found. This could be simple whitespace differences but you should compare the rules in the file with those below as soon as possible. Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "Eine Abweichung zwischen den Regeln in deiner .htaccess file und den Rewrite Rules im Plugin wurde festgestellt. Dabei kann es sich nur um unterschiedliche Abstände oder Leerzeichen handeln, Du solltest aber die Regeln in der Datei mit den hier unten angezeigten möglichst bald abgleichen. Klicke den \"Mod_Rewrite Rules\"-Button um die Regeln zu aktualisieren." + +#: wp-cache.php:1150 +msgid "View Mod_Rewrite Rules" +msgstr "Mod_Rewrite Rules anzeigen" + +#: wp-cache.php:1154 +#: wp-cache.php:2384 +msgid "Rules must be added to %s too:" +msgstr "Regeln müssen auch noch zu %s hinzugefügt werden: " + +#: wp-cache.php:1162 +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "\"Gzip encoding rules\" in %s.htaccess erstellt." + +#: wp-cache.php:1169 +msgid "Fix Configuration" +msgstr "Repariere Konfiguration" + +#: wp-cache.php:1172 +msgid "Restore Default Configuration" +msgstr "Ursprüngliche Konfiguration wieder herstellen" + +#: wp-cache.php:1180 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "Kommentare werden moderiert. Es kann etwas dauern, bis dein Kommentar angezeigt wird." + +#: wp-cache.php:1205 +msgid "Lock Down:" +msgstr "Sperren: " + +#: wp-cache.php:1206 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "Bereite deinen Server auf eine zu erwartende Höchstlast an Traffic vor, indem Du \"Sperren\" aktivierst. In dieser Einstellung werden die statischen Dateien im Cache nicht erneuert, wenn zu den Beiträgen Kommentare veröffentlicht werden." + +#: wp-cache.php:1207 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting: " + +#: wp-cache.php:1209 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "
      Entschuldigung. Mein Blog ist im \"Gesperrt\"-Modus. Updates werden in Kürze angezeigt" + +#: wp-cache.php:1213 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "WordPress ist im \"locked down\" Modus. Statische Super-Cache-Dateien werden nicht gelöscht, wenn neue Kommentare geschrieben werden." + +#: wp-cache.php:1215 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "WordPress ist nicht im \"locked down\" Modus. Neue Kommentare werden ganz normal die statischen Super-Cache-Dateien erneuern." + +#: wp-cache.php:1221 +msgid "Lock Down" +msgstr "Sperre" + +#: wp-cache.php:1229 +msgid "Directly Cached Files" +msgstr "Direkt gecachede Dateien" + +#: wp-cache.php:1287 +msgid "%s removed!" +msgstr "%s entfernt!" + +#: wp-cache.php:1295 +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "Du musst %s beschreibbar machen, um diese Option zu nutzen. Da es sich dabei um ein Sicherheitsrisiko handelt, ändere das bitte wieder auf \"Nur Leserechte\" nachdem die Seite generiert ist." + +#: wp-cache.php:1297 +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "%s ist beschreibbar! Da es sich dabei um ein Sicherheitsrisiko handelt, ändere das bitte wieder auf \"Nur Lesen\" nachdem die Seite generiert ist." + +#: wp-cache.php:1311 +msgid "Existing direct page" +msgstr "Direkt-Seite existiert" + +#: wp-cache.php:1311 +msgid "Delete cached file" +msgstr "Lösche gecachede Datei" + +#: wp-cache.php:1316 +msgid "Add direct page:" +msgstr "Direkt-Seite hinzufügen: " + +#: wp-cache.php:1318 +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "Direkt gecachede Seiten sind Dateien, die direkt in %s erzeugt werden, da wo dein Blog liegt. Diese Option ist nur sinnvoll, wenn Du auf dem Niveau von Facebook oder Digg Traffic auf einer Seite oder auf einem Beitrag erwartest." + +#: wp-cache.php:1320 +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "Als Beispiel: Um %1$sabout/ zu cachen, würdest Du %1$sabout/ oder /about/ eingeben. Die Cache-Datei wird dann erstellt, sobald ein anonymer Besucher die Seite aufruft." + +#: wp-cache.php:1321 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "Leere die Textbox, um sie von der Liste der Direkt-Seiten zu entfernen und die Cache-Datei zu löschen." + +#: wp-cache.php:1326 +msgid "Update Direct Pages" +msgstr "Direkt-Seiten aktualisieren" + +#: wp-cache.php:1364 +msgid "Expiry Time & Garbage Collection" +msgstr "Expiry-Time & Garbage-Collection" + +#: wp-cache.php:1366 +msgid "Expire time:" +msgstr "Laufzeitende:" + +#: wp-cache.php:1367 +msgid "seconds" +msgstr "Sekunden" + +#: wp-cache.php:1368 +msgid "Garbage Collection" +msgstr "Müll-Entsorgung (Garbage-Collection)" + +#: wp-cache.php:1368 +msgid "If the expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above." +msgstr "Wenn die Laufzeit länger als 1800 Sekunden (halbe Stunde) ist, wird \"Garbage Collection\" alle 10 Minuten ausgeführt, andernfalls passiert das 10 Sekunden nach Ablauf der oben angegebenen Zeit." + +#: wp-cache.php:1369 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 300 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. If you are using legacy caching aim to have less than 500 cached files if possible. You can have many times more cached files when using mod_rewrite or PHP caching." +msgstr "Suchen und Entfernen von abgelaufenen Dateien kostet ressourcen, sie einfach da zu belassen aber auch. Auf einer sehr gut besuchten Seite solltest Du die Laufzeit auf 300 Sekunden setzen. Experimentiere mit verschiedenen Werten und besuche diese Seite mehrmals um zu überprpüfen, wieviele \"expired\"-Dateien sich zu welcher Zeit im Laufe des Tages ansammeln. Wenn Du Legacy-Caching benutzt, versuche möglich unter 500 Cache-Dateien zu bleiben. Du kannst um ein Vielfaches mehr Dateien haben, wenn Du mod_rewrite oder PHP-Caching einsetzt." + +#: wp-cache.php:1370 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "Setze die Laufzeit auf 0 Sekunden um die Garbage-Collection zu deaktivieren." + +#: wp-cache.php:1371 +msgid "Change Expiration" +msgstr "Laufzeit ändern" + +#: wp-cache.php:1415 +msgid "Rejected User Agents" +msgstr "Abgewehrte User-Agents" + +#: wp-cache.php:1416 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "Strings im HTTP \"User Agent\"-Header die WP-Cache davon abhalten, Anfragen von Bots, Spidern und Crawlern zu cachen. Vermerke, das Super-Cache-Dateien weiter an diese Agents ausgeliefert werden wenn sie schon existieren." + +#: wp-cache.php:1423 +msgid "Save UA Strings" +msgstr "User-Agenten-Strings speichern" + +#: wp-cache.php:1446 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "Folgende Page-Typen nicht cachen. Studiere zu jedem Typ die ausführliche Diskussion in der Dokumentation Conditional Tags." + +#: wp-cache.php:1449 +msgid "Single Posts" +msgstr "Einzelne Beiträge" + +#: wp-cache.php:1450 +msgid "Pages" +msgstr "Seiten" + +#: wp-cache.php:1451 +msgid "Front Page" +msgstr "Startseite" + +#: wp-cache.php:1452 +msgid "Home" +msgstr "Home" + +#: wp-cache.php:1453 +msgid "Archives" +msgstr "Archive" + +#: wp-cache.php:1454 +msgid "Tags" +msgstr "Suchworte (tags)" + +#: wp-cache.php:1455 +msgid "Category" +msgstr "Kategorie" + +#: wp-cache.php:1456 +msgid "Feeds" +msgstr "Feeds" + +#: wp-cache.php:1457 +msgid "Search Pages" +msgstr "Suchseiten" + +#: wp-cache.php:1459 +#: wp-cache.php:1573 +msgid "Save" +msgstr "Speichern" + +#: wp-cache.php:1476 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "Hier Strings (Zeichenketten, keine Dateinamen) einfügen, um so dafür zu sorgen dass eine Seite nicht gecached wird. Als Beispiel: Wenn deine URLs das Jahresdatum enthalten und Du die Beiträge vom vergangenen Jahr nicht cachen willst, reicht es das Jahr, z.B. \"/2004/\" anzugeben. WP-Cache wird überprüfen, ob diese Zeichenkette im URI enthalten ist und in dem Fall diese Seite dann nicht cachen." + +#: wp-cache.php:1482 +msgid "Save Strings" +msgstr "Strings speichern" + +#: wp-cache.php:1498 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "Hier die Dateinamen angeben, die gecached werden sollen, auch wenn sie einer oben auszusortierenden Zeichenkette entsprechen." + +#: wp-cache.php:1504 +msgid "Save Files" +msgstr "Dateien speichern" + +#: wp-cache.php:1545 +msgid "Currently logging to: %s" +msgstr "Aktuelle Protokolle (Logs) in: %s" + +#: wp-cache.php:1548 +msgid "Fix problems with the plugin by debugging it here. It can log them to a file in your cache directory." +msgstr "Versuche Probleme mit dem Plugin durch den Debugger hier zu lösen. Das System kann sie in eine Log-Datei in deinem Cache-Verzeichnis schreiben." + +#: wp-cache.php:1552 +msgid "Debugging" +msgstr "Debuggen" + +#: wp-cache.php:1553 +msgid "IP Address" +msgstr "IP-Addresse" + +#: wp-cache.php:1553 +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(nur Abfragen dieser IP protokollieren. Deine IP ist %s)" + +#: wp-cache.php:1554 +msgid "Log level" +msgstr "Log-Level" + +#: wp-cache.php:1560 +msgid "(1 = less, 5 = more, may cause severe server load.)" +msgstr "(1 = weniger, 5 = mehr, kann heftige Serverlast verursachen)" + +#: wp-cache.php:1563 +msgid "In very rare cases two problems may arise on some blogs:
      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "In sehr seltenen Fällen können zwei Probleme auf manchen Blogs auftreten:
      1. Die Startseite kann anfangen sich als zip.Archiv herunterzuladen.
      2. Eine falsche Seite wird nach dem Zufallsprinzip als Startseite gecached, wenn dein Blog eine statische Seite als Startseite benutzt und deine Permalinks mit /%category%/%postname%/ strukturiert sind.
      " + +#: wp-cache.php:1564 +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "Ich bin zu 99% sicher, dass das keine von WP-Super-Cache verursachten Bugs sind, und sie kommen nur in extrem seltenen Fällen vor. Du kannst aber alle 5 Minuten einen simplen Check laufen lassen, um sicherzugehen dass deine Seite ok ist, wenn Du dir Sorgen machst. Du bekommst dann eine E-Mail Benachrichtigung, falls ein Problem auftaucht." + +#: wp-cache.php:1566 +msgid "Check front page every 5 minutes." +msgstr "Check die Startseite alle 5 Minuten." + +#: wp-cache.php:1567 +msgid "Front page text" +msgstr "Text der Startseite" + +#: wp-cache.php:1567 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "Text, um danach auf der Front-Page zu suchen: Wenn nicht gefunden, wird der Cache geleert. Leer lassen um das zu deaktivieren." + +#: wp-cache.php:1568 +msgid "Clear cache on error." +msgstr "Bei \"Error\" Cache leeren." + +#: wp-cache.php:1569 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "E-Mail an den Administrator wenn die Überprüfung beendet. (hilfreich für Tests)" + +#: wp-cache.php:1583 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "Error: GZIP-Komprimierung ist aktiv, deaktiviere sie wenn Du wp-cache nutzen willst." + +#: wp-cache.php:1630 +#: wp-cache.php:1796 +msgid "Warning" +msgstr "Warnung" + +#: wp-cache.php:1630 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "GZIP-Komprimierung ist in WordPress aktiviert - wp-cache wird überbrückt, bis Du \"gzip compression\" deaktiviert hast." + +#: wp-cache.php:1692 +#: wp-cache.php:1697 +#: wp-cache.php:1729 +#: wp-cache.php:1734 +#: wp-cache.php:1740 +msgid "Error" +msgstr "Fehler" + +#: wp-cache.php:1692 +msgid "Your cache directory ($cache_path) did not exist and couldn’t be created by the web server. Check %s permissions." +msgstr "Dein Cache-Verzeichnis ($cache_path) existiert nicht und konnte nicht erstellt werden. Prüfe %s Benutzerrechte." + +#: wp-cache.php:1697 +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "Dein Cache-Verzeichnis (%1$s) oder %2$s muss beschreibbar sein, damit das Plugin funktioniert. Doppelt überprüfen." + +#: wp-cache.php:1729 +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "Deine WP-Cache Konfigurationsdatei (%s) ist nicht aktuell und nicht beschreibbar für den Webserver. Bitte lösche sie und lade diese Seite neu." + +#: wp-cache.php:1734 +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "Deine WP-Cache Konfigurationsdatei fehlt und %1$s Verzeichnis (%2$s) ist nicht beschreibbar für den Webserver. Bitte überprüfe die Berechtigungen für den Webserver." + +#: wp-cache.php:1740 +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "WP-Cache Konfigurations-Beispieldatei (%s) existiert nicht. Überprüfe die Installation." + +#: wp-cache.php:1796 +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "%s/advanced-cache.php existiert nicht oder kann nicht aktualisiert werden." + +#: wp-cache.php:1797 +msgid "1. If it already exists please delete the file first." +msgstr "1. Wenn es sie schon gibt, bitte die Datei zuerst löschen." + +#: wp-cache.php:1798 +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. Vergebe %1$s Schreibrechte per CHMOD in der Konsole oder mit deinem FTP-Programm. (chmod 777 %1$s) und lade diese Seite neu. Das ist nur eine zeitweilige Massnahme und Du musst sie danach wieder auf \"Nur Lesen\" setzen (ändere 777 zu 755 im vorhergehenden Befehl)." + +#: wp-cache.php:1799 +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. Lade diese Seite neu um %s/advanced-cache.php zu aktualisieren." + +#: wp-cache.php:1800 +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "Wenn das nicht hilft, stelle sicher dass die Datei %s/advanced-cache.php nicht existiert: " + +#: wp-cache.php:1801 +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. Öffne %1$s$wp_cache_file in einem Texteditor (Notepad++ oder das blaue Teil von Windows..)
    • 2. Ändere den Text CACHEHOME in %2$s
    • 3. Speichere die Datei, kopiere sie nach %3$s und lade diese Seite neu.
    • " + +#: wp-cache.php:1824 +msgid "

      WP_CACHE constant set to false

      The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

      define('WP_CACHE', true);

      " +msgstr "

      WP_CACHE-Konstante auf \"False\" gesetzt

      Die WP_CACHE-Konstante wird von WordPress genutzt, um den Code der Cache-Seiten erstellt zu laden. Unglücklicherweise ist das auf \"Nein\" gestellt. Bitte bearbeite deine wp-config.php und ändere bzw. füge die folgende Zeile oberhalb der abschliessenden \"require_once\"-Anweisung dazu:

      define('WP_CACHE', true);

      " + +#: wp-cache.php:1826 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "Fehler: WP_CACHE ist nicht aktiviert in deiner wp-config.php und ich kann sie nicht modifizieren." + +#: wp-cache.php:1827 +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "Bearbeite %s und füge folgende Zeile hinzu:
      define('WP_CACHE', true);
      Ansonsten wird WP-Cache nicht ausgeführt durch WordPress." + +#: wp-cache.php:1831 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the FAQ. The WP_CACHE line must be moved up." +msgstr "

      WP_CACHE-Konstante zu wp-config.php hinzugefügt

      Wenn diese Warnung wiederholt angezeigt wird, lese bitte zu Punkt 5 in den FAQ nach. Die WP_CACHE-Zeile muss nach oben verschoben werden.\"

      " + +#: wp-cache.php:1855 +msgid "Cache Contents" +msgstr "Cache-Inhalte" + +#: wp-cache.php:1858 +msgid "Object cache in use. No cache listing available." +msgstr "Objekt-Cache im Gebrauch. Cache-Listing steht nicht zur Verfügung." + +#: wp-cache.php:1882 +msgid "Deleting supercache file: %s
      " +msgstr "Supercache-Datei löschen: %s
      " + +#: wp-cache.php:1899 +msgid "Deleting wp-cache file: %s
      " +msgstr "Datei wp-cache löschen: %s
      " + +#: wp-cache.php:1964 +msgid "Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page." +msgstr "Cache-Statistiken werden nicht automatisch erzeugt. Du musst auf den Link hier unten klicken, um die Statistik für diesen Blog neu zu generieren." + +#: wp-cache.php:1965 +msgid "Regenerate cache stats" +msgstr "Regeneriere Cache-Statistik" + +#: wp-cache.php:1967 +msgid "Cache stats last generated: %s minutes ago." +msgstr "Cache-Statistik zuletzt generiert vor %s Minuten." + +#: wp-cache.php:1973 +msgid "WP-Cache" +msgstr "WP-Cache" + +#: wp-cache.php:1974 +#: wp-cache.php:1989 +msgid "%s Cached Pages" +msgstr "%s Seiten im Cache" + +#: wp-cache.php:1975 +#: wp-cache.php:1994 +msgid "%s Expired Pages" +msgstr "%s Expired-Pages im Cache" + +#: wp-cache.php:1988 +msgid "WP-Super-Cache" +msgstr "WP-Super-Cache" + +#: wp-cache.php:1998 +msgid "Fresh WP-Cached Files" +msgstr "Neue WP-Cache-Dateien" + +#: wp-cache.php:1999 +#: wp-cache.php:2015 +#: wp-cache.php:2031 +#: wp-cache.php:2047 +msgid "URI" +msgstr "URI" + +#: wp-cache.php:1999 +#: wp-cache.php:2015 +msgid "Key" +msgstr "Schlüssel" + +#: wp-cache.php:1999 +#: wp-cache.php:2015 +#: wp-cache.php:2031 +#: wp-cache.php:2047 +msgid "Age" +msgstr "Alter" + +#: wp-cache.php:1999 +#: wp-cache.php:2015 +#: wp-cache.php:2031 +#: wp-cache.php:2047 +msgid "Delete" +msgstr "Lösche" + +#: wp-cache.php:2014 +msgid "Stale WP-Cached Files" +msgstr "Abgelaufene WP-Cache Dateien" + +#: wp-cache.php:2030 +msgid "Fresh Super Cached Files" +msgstr "Neue Super-Cached Dateien" + +#: wp-cache.php:2046 +msgid "Stale Super Cached Files" +msgstr "Abgelaufene Super-Cached Dateien" + +#: wp-cache.php:2062 +msgid "Hide file list" +msgstr "Datei-Liste verbergen" + +#: wp-cache.php:2064 +msgid "Too many cached files, no listing possible." +msgstr "Zu viele Cache-Dateien, Auflistung nicht möglich." + +#: wp-cache.php:2066 +msgid "List all cached files" +msgstr "Alle Cache-Dateien auflisten" + +#: wp-cache.php:2072 +msgid "Garbage Collection
      Last GC was %s minutes ago
      " +msgstr "Garbage Collection
      Letzte \"Entmüllung\" war vor %s Minuten
      " + +#: wp-cache.php:2073 +msgid "Next GC in %s minutes" +msgstr "Nächste \"Entmüllung\" in %s Minuten" + +#: wp-cache.php:2076 +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "Abgelaufene Dateien sind Dateien die älter als %s Sekunden sind. Sie werden noch vom Plugin genutzt und in regelmässigen Abständen gelöscht." + +#: wp-cache.php:2087 +msgid "Delete Expired" +msgstr "Abgelaufene löschen" + +#: wp-cache.php:2105 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Lösche Super-Cache gecachede Dateien (öffnet in neuem Fenster)" + +#: wp-cache.php:2244 +msgid "%1$s is Digg proof thanks to caching by %2$s" +msgstr "%1$s ist \"schlag- und rüttelfest\" dank dem Caching von %2$s" + +#: wp-cache.php:2277 +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "WP-Super-Cache muss konfiguriert werden. Gehe zu den Einstellungen, um das Plugin zu aktivieren und zu konfigurieren." + +#: wp-cache.php:2283 +msgid "Settings" +msgstr "Einstellungen" + +#: wp-cache.php:2293 +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "WP-Super-Cache ist deaktiviert. Bitte gehe zur Seite der Plugin-Administration um Caching zu aktivieren." + +#: wp-cache.php:2296 +msgid "Warning! WP Super Cache caching broken! The script advanced-cache.php could not load wp-cache-phase1.php.

      Please edit %1$s/advanced-cache.php and make sure the path to %2$swp-cache-phase1.php is correct." +msgstr "Achtung! WP Super-Cache Caching abgebrochenn! Das Skript advanced-cache.php konnte wp-cache-phase1.php nicht aufrufen.

      Bitte bearbeite %1$s/advanced-cache.php und stelle sicher, daß der Pfad %2$swp-cache-phase1.php korrekt ist." + +#: wp-cache.php:2315 +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] Startseite mit Gzip komprimiert! Bitte den Cache leeren." + +#: wp-cache.php:2315 +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "Bitte gehe zu %s um den Cache zu leeren, da die Startseite deiner Website gerade heruntergeladen wird!" + +#: wp-cache.php:2318 +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] Startseite mit Gzip komprimiert! Cache geleert!" + +#: wp-cache.php:2318 +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "Der Cache deines Blogs wurde geleert, da die Startseite gerade runterlädt. Bitte gehe zu %s um sicherzustellen, dass der Cache bereinigt ist." + +#: wp-cache.php:2325 +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] Startseite ist nicht in Ordnung! Bitte den Cache leeren!" + +#: wp-cache.php:2325 +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "Bitte gehe zu %1$s um den Cache zu leeren, da deine Startseite nicht in Ordnung zu sein scheint und der Text fehlt, \"%2$s\"!" + +#: wp-cache.php:2328 +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] Startseite nicht in Ordnung! Cache geleert!" + +#: wp-cache.php:2328 +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "Der Cache deines Blogs wurde geleert, da der Text \"%2$s\" nicht auf der Startseite ist. Bitte gehe zu %1$s um sicherzustellen, dass der Cache bereinigt ist." + +#: wp-cache.php:2333 +msgid "[%s] Front page check!" +msgstr "[%s] Startseiten-Check!" + +#: wp-cache.php:2333 +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "WP-Super-Cache hat die Startseite deines Blogs überprüft. Bitte gehe zu %s, wenn Du die Funktion deaktivieren möchtest." + +#: wp-cache.php:2376 +msgid "Cannot update .htaccess" +msgstr "Kann .htaccess nicht aktualisieren" + +#: wp-cache.php:2376 +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "Die Datei %s.htaccess kann vom Webserver nicht aktualisiert werden. Bitte ändere das per CHMOD-Command oder FTP-Programm." + +#: wp-cache.php:2376 +msgid "Refresh this page when the file permissions have been modified." +msgstr "Lade diese Seite neu, wenn die Datei-Berechtigungen geändert wurden." + +#: wp-cache.php:2376 +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "Alternativ dazu kannst Du deine %s.htaccess manuell bearbeiten und folgenden Code einfügen (oberhalb aller WordPress-Einträge): " + +#: wp-cache.php:2380 +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "Um statische HTML-Dateien zu erstellen, benötigt dein Server die korrekten \"mod_rewrite rules\" in der Datei %s.htaccess." + +#: wp-cache.php:2381 +msgid "You can edit the file yourself add the following rules." +msgstr "Du kannst die Datei selbst bearbeiten und folgende Regeln hinzufügen." + +#: wp-cache.php:2382 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr " Stelle sicher dass sie oberhalb sämtlicher WordPress-Regeln stehen. " + +#: wp-cache.php:2390 +msgid "Update Mod_Rewrite Rules" +msgstr "Mod Rewrite Rules aktualisieren" + +#: wp-cache.php:2515 +msgid "[%1$s] Cache Preload Started" +msgstr "Cache-Preload gestartet" + +#: wp-cache.php:2517 +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] Beiträge von %2$d bis %3$d werden aktualisiert" + +#: wp-cache.php:2535 +msgid "[%1$s] Cache Preload Stopped" +msgstr "Cache-Preload abgestellt" + +#: wp-cache.php:2544 +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s] %2$d Beiträge aktualisiert" + +#: wp-cache.php:2544 +msgid "Refreshed the following posts:" +msgstr "Folgenende Beiträge aktualisiert: " + +#: wp-cache.php:2553 +msgid "Scheduling next preload refresh in %d minutes." +msgstr "Nächste \"Preload\"-Aktualisierung in %d Minuten eingeplant." + +#: wp-cache.php:2563 +msgid "[%s] Cache Preload Completed" +msgstr "[%s] Cache-Preload abgeschlossen!" + +#: wp-cache.php:2563 +msgid "Cleaning up old supercache files." +msgstr "Alte Supercache-Dateien bereinigen." + +#: wp-cache.php:2605 +msgid "[%s] Preload may have stalled." +msgstr "\"Preload\" evtl. unterbrochen." + +#: wp-cache.php:2605 +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"\"Preload\" wurde neu gestartet \n" +"%s" + +#: wp-cache.php:2648 +msgid "Supercache Uninstall Problems" +msgstr "Supercache Probleme beim Deinstallieren" + +#: wp-cache.php:2648 +msgid "" +"Dear User,\n" +"\n" +"WP Super Cache was removed from your blog but the mod_rewrite rules\n" +"in your .htaccess were not.\n" +"\n" +"Please edit the following file and remove the code\n" +"between 'BEGIN WPSuperCache' and 'END WPSuperCache'. Please backup the file first!\n" +"\n" +"%s\n" +"\n" +"Regards,\n" +"WP Super Cache Plugin\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" +msgstr "" +"Lieber Benutzer,\n" +"\n" +"WP Super Cache wurde von deinem Blog entfernt, aber die mod_rewrite rules\n" +"in deiner .htaccess nicht.\n" +"\n" +"Bitte bearbeite fogende Datei und lösche den Code\n" +"zwischen 'BEGIN WPSuperCache' und 'END WPSuperCache'. Und bitte erst die Datei sichern!\n" +"\n" +"%s\n" +"\n" +"Mit freundlichem Gruß,\n" +"WP Super Cache Plugin\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" + +#~ msgid "" +#~ "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on " +#~ "on the main site of this network." +#~ msgstr "" +#~ "Hinweis: WP-Super-Cache mod_rewrite rule Checks sind deaktiviert, " +#~ "insofern sie nicht auf der Hauptseite dieses Blog-" +#~ "Netzwerks laufen." +#~ msgid "Tester & Contents" +#~ msgstr "Teste & Cache" +#~ msgid "" +#~ "Logging to a file is easier but faces the problem that clearing the cache " +#~ "will clear the log file." +#~ msgstr "" +#~ "Das Protokoll in eine Datei zu schreiben ist einfacher, bringt aber das " +#~ "Problem mit sich, dass die Log-Datei beim Cache-Leeren ebenfalls entfernt " +#~ "wird." +#~ msgid "Logging Type" +#~ msgstr "Protokoll-Typ" +#~ msgid "Email" +#~ msgstr "E-Mail" +#~ msgid "file" +#~ msgstr "Datei" + diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-es_ES.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-es_ES.mo new file mode 100644 index 0000000000000000000000000000000000000000..4a7d41d62fd9df7843bf975ce8be35680d492733 GIT binary patch literal 46170 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\n" +"Language-Team: Omi \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Spanish\n" +"X-Poedit-Country: Spain\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: plugins/badbehaviour.php:45 +msgid "Bad Behaviour not found. Please check your install." +msgstr "No se encuentra Bad Behaviour. Por favor, revise su instalación." + +#: plugins/badbehaviour.php:47 +#: plugins/badbehaviour.php:66 +#: plugins/searchengine.php:61 +#: plugins/searchengine.php:76 +#: wp-cache.php:709 +msgid "Disable" +msgstr "Desactivar" + +#: plugins/badbehaviour.php:55 +#: plugins/searchengine.php:67 +msgid "disabled" +msgstr "desactivado" + +#: plugins/badbehaviour.php:57 +#: plugins/searchengine.php:69 +#: wp-cache.php:1052 +msgid "enabled" +msgstr "activado" + +#: plugins/badbehaviour.php:60 +#, php-format +msgid "Bad Behaviour support is %s" +msgstr "El soporte de Bad Behaviour está %s" + +#: plugins/badbehaviour.php:62 +#, php-format +msgid "(Only half-on caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr "(Sólo se soporta caché \"a medias\", se desactiva la compresión y requiere instalar Bad Behavior en \"%s/plugins/bad-behavior/\") " + +#: plugins/badbehaviour.php:64 +#: plugins/searchengine.php:74 +#: wp-cache.php:709 +msgid "Enable" +msgstr "Activar" + +#: plugins/badbehaviour.php:70 +#: wp-cache.php:786 +#: wp-cache.php:788 +msgid "Warning!" +msgstr "¡Atención!" + +#: plugins/searchengine.php:71 +#, php-format +msgid "No Adverts for Friends plugin is %s" +msgstr "El plugin No Adverts for Friends está %s" + +#: plugins/searchengine.php:72 +msgid "(requires friendsadverts.php too) " +msgstr "(Necesita también friendsadverts.php) " + +#: wp-cache.php:87 +#, php-format +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "Por favor, cree %s /wp-cache-config.php desde wp-super-cache/wp-cache-config-sample.php" + +#: wp-cache.php:170 +msgid "WP Super Cache Manager" +msgstr "Gestión de WP Super Cache" + +#: wp-cache.php:172 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "¡Atención, modo PHP Safe activo!" + +#: wp-cache.php:173 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "Podría experimentar problemas ejecutando este plugin con el modo PHP SAFE activo." + +#: wp-cache.php:175 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "Su servidor está configurado para comprobar el propietario de los scripts PHP antes de permitirles escribir y leer archivos." + +#: wp-cache.php:176 +#, php-format +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "Usted, o un administrador, debería ser capaz de hacerlo funcionar cambiando el propietario del grupo de los scripts para que coincidan con el del usuario web del servidor. El propietario del grupo del directorio %s/cache/ también deberá cambiarse. Revise la página sobre safe mode en el manual para obtener más información." + +#: wp-cache.php:178 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "Usted, o un administrador, deberán desactivar esto. Revise la página sobre safe mode en el manual para obtener más información. Desafortunadamente, esto no puede ser desactivado desde un fichero .htaccess sino que debe hacerse desde el fichero de configuración php.ini" + +#: wp-cache.php:189 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "El archivo de configuración ha cambiado, algunos valores pueden ser incorrectos. Recargue de nuevo la página desde el menú \"Opciones\" para reestablecerlos." + +#: wp-cache.php:195 +msgid "Cannot continue... fix previous problems and retry." +msgstr "No puedo continuar...solucione los problemas descritos y reintente." + +#: wp-cache.php:211 +#, php-format +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "¡Atención! Su hostname \"%s\" resuelve como %s" + +#: wp-cache.php:213 +#, php-format +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "Su servidor cree que su hostname resuelve como %s. Algunos servicios, como la recolección de basura de este plugin o la publicación diferida de WordPress, podrían no funcionar correctamente." + +#: wp-cache.php:214 +#: wp-cache.php:228 +#, php-format +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "Por favor, revise la entrada nº 16 de la sección Troubleshooting del fichero readme.txt" + +#: wp-cache.php:227 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "Desafortunadamente WordPress no puede localizar el fichero wp-cron.php. Este script es necesario para el funcionamiento de la función de recolección de basura que realiza este, plugin así como para la publicación diferida de WordPress y otras actividades críticas." + +#: wp-cache.php:239 +msgid "Mod rewrite may not be installed!" +msgstr "¡Mod rewrite puede no estar instalado!" + +#: wp-cache.php:240 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use half-on mode." +msgstr "Parece que mod_rewrite no está instalado. Algunas veces esto no es 100% preciso, especialmente si no está utilizando Apache. Por favor, compruebe que el módulo mod_rewrite se encuentra cargado. Es necesario para servir los ficheros estáticos del Super Cache. No obstante, debería ser capaz de poder usar el modo de caché \"a medias\"." + +#: wp-cache.php:245 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "Modo de Solo Lectura. La configuración no puede cambiarse." + +#: wp-cache.php:245 +msgid "Why your configuration may not be changed" +msgstr "¿Por qué no puede cambiarse su configuración?" + +#: wp-cache.php:245 +msgid "Why" +msgstr "¿Por qué?" + +#: wp-cache.php:247 +#, php-format +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "El archivo de configuración de WP Super Cache es %s/wp-cache-config.php y no puede modificarse. Dicho archivo debe tener permisos de escritura para que pueda ser modificado." + +#: wp-cache.php:248 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "La forma más sencilla es cambiar temporalmente los permisos utilizando el comando CHMOD de su cliente FTP. Asegúrese de que puede ser globalmente editado y todo debería ir bien." + +#: wp-cache.php:249 +msgid "Writeable:" +msgstr "Editable:" + +#: wp-cache.php:250 +msgid "Readonly:" +msgstr "Sólo lectura:" + +#: wp-cache.php:262 +#, php-format +msgid "Warning! %s is writeable!" +msgstr "¡Atención, %s es editable!" + +#: wp-cache.php:263 +#, php-format +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "Debería cambiar los permisos de %s y hacerlos más restrictivos. Utilice su cliente de FTP o el siguiente comando para resolver cosas:" + +#: wp-cache.php:354 +msgid "WP Super Cache Status" +msgstr "Estado WP Super Cache" + +#: wp-cache.php:357 +msgid "ON" +msgstr "ACTIVADO" + +#: wp-cache.php:357 +msgid "WP Cache and Super Cache enabled" +msgstr "WP Cache y Super Cache activos" + +#: wp-cache.php:358 +msgid "HALF ON" +msgstr "A MEDIAS" + +#: wp-cache.php:358 +msgid "Super Cache Disabled, only legacy WP-Cache caching." +msgstr "Super Cache desactivado, sólo caché WP-Cache." + +#: wp-cache.php:359 +msgid "OFF" +msgstr "DESACTIVADO" + +#: wp-cache.php:359 +msgid "WP Cache and Super Cache disabled" +msgstr "WP Cache y Super Cache desactivados" + +#: wp-cache.php:360 +msgid "Don’t cache pages for logged in users." +msgstr "No hacer caché de páginas para usuarios autentificados." + +#: wp-cache.php:361 +msgid "Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)" +msgstr "¡Dígale al mundo que su servidor está a prueba de Digg! (pone un mensaje en el pie de su blog)" + +#: wp-cache.php:362 +msgid "Clear all cache files when a post or page is published. (This may significantly slow down saving of posts.)" +msgstr "Limpiar la caché cuando se publique un artículo o página (esto puede ralentizar bastante el proceso de guardado)." + +#: wp-cache.php:363 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated. Recommended for very busy websites with lots of comments. Makes \"directly cached pages\" and \"Lockdown mode\" obsolete." +msgstr "Reconstruir caché. Sirve un fichero supercaché a los usuarios anónimos mientras que el nuevo está siendo generado. Recomendado para sitios muy activos con muchos comentarios. Hace que \"páginas directamente en caché\" y \"modo Confinamiento\" queden obsoletos." + +#: wp-cache.php:365 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "Bloquear ficheros toscamente. Normalmente no necesitará esto, pero podría serle de ayuda si su servidor tiene poca potencia. ¡Aviso, es muy poco probable, pero podría ocasionar que su servidor se bloquease!" + +#: wp-cache.php:367 +msgid "List the newest cached pages (may be expensive to run on busy sites, use with caution.)" +msgstr "Listar las nuevas páginas en caché (puede ser costoso de ejecutar en sitios muy activos, utilizar con precaución)." + +#: wp-cache.php:368 +msgid "Mobile device support." +msgstr "Soporte para dispositivos móviles." + +#: wp-cache.php:373 +msgid "Mobile rewrite rules detected" +msgstr "Reglas Mobile rewrite detectadas" + +#: wp-cache.php:374 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"Android|2.0\\ MMP|240x320|AvantGo|BlackBerry|Blazer|Cellphone\" and delete those." +msgstr "Para un mejor rendimiento debería activar \"Soporte para dispositivos móviles\" o borrar las reglas mobile rewrite rules de su archivo .htaccess. Localice las 2 líneas con el texto \"Android|2.0\\ MMP|240x320|AvantGo|BlackBerry|Blazer|Cellphone\" y elimínelas." + +#: wp-cache.php:374 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "Esto no tendrá repercusión sobre los usuarios normales pero los usuarios de móviles verán las páginas sin usar la caché." + +#: wp-cache.php:377 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to half-on mode. Here are your options (in order of difficulty):" +msgstr "El soporte para móviles requiere de reglas extra en su archivo .htaccess. También puede seleccionar el modo \"A medias\". Aquí se muestran sus opciones (en orden de dificultad):" + +#: wp-cache.php:378 +msgid "Set the plugin to half on mode and enable mobile support." +msgstr "Establecer este plugin en el modo \"A medias\" y activar el soporte para móviles." + +#: wp-cache.php:379 +#, php-format +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "Eliminar las reglas mod_rewrite del plugin en %s.htaccess que estén entre # BEGIN WPSuperCache y # END WPSuperCache y permitir que el plugin vuelva a generarlas recargando esta página." + +#: wp-cache.php:380 +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$ add this line: (do it twice, once for each section)" +msgstr "Añadir las reglas manualmente. Edite el fichero %s.htaccess y localice el bloque de código encerrado entre las líneas # BEGIN WPSuperCache y # END WPSuperCache. Hay dos secciones que parecen muy similares. Justo debajo de la línea %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$ añada esta otra línea: (deberá hacerlo dos veces, una para cada sección)" + +#: wp-cache.php:383 +msgid "Note:" +msgstr "Nota:" + +#: wp-cache.php:383 +#, php-format +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "Si desinstala este plugin asegúrese de que el directorio %s es editable por el servidor web para que los archivos advanced-cache.php y cache-config.php puedan eliminarse automáticamente (asegurarse de que esos archivos son editables es también una buena idea!)" + +#: wp-cache.php:384 +#, php-format +msgid "Uninstall using the uninstall script to remove files and directories created by the plugin. (Please see readme.txt for instructions on uninstalling this script.)" +msgstr "Desinstale utilizando el script de desinstalación para eliminar los archivos y directorios creados por el plugin. (Por favor, eche un vistazo al archivo readme.txt para obtener instrucciones sobre como desinstalar este script)" + +#: wp-cache.php:386 +msgid "Update Status" +msgstr "Actualizar Estado" + +#: wp-cache.php:393 +msgid "Required to serve compressed supercache files properly." +msgstr "Requerido para servir archivos de supercache correctamente." + +#: wp-cache.php:393 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "Requerido para establecer la información en las páginas de supercache. Los usuarios de IE7 verán páginas antiguas sin este módulo." + +#: wp-cache.php:393 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "Establece la fecha de caducidad en las páginas de supercache. Los visitantes puede que no vean las nuevas páginas al refrescar o que no puedan dejar comentarios sin este modulo." + +#: wp-cache.php:400 +msgid "Missing Apache Modules" +msgstr "Módulos de Apache Ausentes" + +#: wp-cache.php:401 +msgid "The following Apache modules are missing. The plugin will work in half-on mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "Faltan los siguientes módulos de Apache. El plugin trabajará en modo \"A Medias\" sin ellos. En el modo Supercache sus visitantes podrían ver páginas corruptas o contenido desactualizado." + +#: wp-cache.php:413 +msgid "Make WordPress Faster" +msgstr "Hace WordPress Veloz" + +#: wp-cache.php:415 +#, php-format +msgid "%1$s really makes your blog go faster. Make it go faster* by buying me an Amazon gift card! Make it out to \"%3$s\" for whatever amount you want. Every penny helps!" +msgstr "%1$s realmente consigue que su blog sea más veloz. Puede acelerarlo todavía más* comprándome una tarjeta regalo de Amazon! Hágalo para \"%3$s\" por la cantidad que quiera. Cada céntimo ayuda!" + +#: wp-cache.php:416 +#, php-format +msgid "If Amazon isn’t your thing, there’s also PayPal. Click the \"Donate\" button below or take a quick peek at my wishlist." +msgstr "Si Amazon no es su sitio preferido, también puede ayudarme a través de PayPal. Pinche sobre el botón \"Donate\" que está un poco más abajo o eche un rápido vistazo a mi lista de deseos." + +#: wp-cache.php:417 +msgid "Thanks in advance!" +msgstr "¡Gracias por adelantado!" + +#: wp-cache.php:418 +msgid "Ok, it won’t go any faster but you’ll make this plugin author very happy!" +msgstr "Ok, no conseguirá que vaya más rápido, ¡pero hará muy feliz al autor de este plugin!" + +#: wp-cache.php:426 +msgid "Don’t show me this again." +msgstr "No mostrar esto nuevamente." + +#: wp-cache.php:426 +msgid "Hide" +msgstr "Ocultar" + +#: wp-cache.php:429 +#, php-format +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "%1$s es mantenido y desarrollado por %2$s con la colaboración de muchos otros." + +#: wp-cache.php:430 +#, php-format +msgid "He blogs at %1$s, posts photos at %2$s and wishes he had more time to read and relax." +msgstr "El escribe en %1$s, publica fotos en %2$s y desearía tener más tiempo para leer y relajarse." + +#: wp-cache.php:431 +#, php-format +msgid "Please say hi to him on %s too!" +msgstr "Por favor, dígale hola también en %s!" + +#: wp-cache.php:440 +#, php-format +msgid "Cached pages since %1$s : %2$s" +msgstr "Páginas en caché desde %1$s : %2$s" + +#: wp-cache.php:441 +msgid "Newest Cached Pages:" +msgstr "Nuevas páginas en caché:" + +#: wp-cache.php:445 +#, php-format +msgid "Cached %s seconds ago" +msgstr "En caché desde hace %s segundos" + +#: wp-cache.php:448 +msgid "(may not always be accurate on busy sites)" +msgstr "(puede no ser siempre preciso en sitios muy concurridos)" + +#: wp-cache.php:469 +msgid "Accepted Filenames & Rejected URIs" +msgstr "Nombres de archivos aceptados y URIs rechazadas" + +#: wp-cache.php:494 +msgid "Cache Plugins" +msgstr "Caché de Plugins " + +#: wp-cache.php:505 +#: wp-cache.php:516 +msgid "Super Cache Compression" +msgstr "Compresión Super Caché" + +#: wp-cache.php:506 +msgid "Compression is enabled by default when in HALF ON mode." +msgstr "La compresión está activa por defecto cuando se ejecuta el modo A MEDIAS." + +#: wp-cache.php:518 +#: wp-cache.php:696 +msgid "Enabled" +msgstr "Activado" + +#: wp-cache.php:519 +#: wp-cache.php:696 +msgid "Disabled" +msgstr "Desactivado" + +#: wp-cache.php:520 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching this on and off clears the cache." +msgstr "La compresión está desactivada por defecto debido a que algunos servidores tienen problemas con los archivos comprimidos. Activar o desactivar esta opción limpiará la caché." + +#: wp-cache.php:523 +msgid "Super Cache compression is now disabled." +msgstr "La Compresión Super Caché se ha desactivado." + +#: wp-cache.php:525 +msgid "Super Cache compression is now enabled." +msgstr "La Compresión Super Caché se ha activado." + +#: wp-cache.php:527 +msgid "Update Compression" +msgstr "Actualizar compresión" + +#: wp-cache.php:534 +msgid "Mod Rewrite Rules" +msgstr "Reglas Mod Rewrite" + +#: wp-cache.php:581 +msgid "WordPress MU Detected" +msgstr "Se ha detectado WordPress MU" + +#: wp-cache.php:581 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "Desafortunadamente las reglas \"rewrite\" no pueden actualizarse de forma automática cuando se ejecuta WordPress MU. Por favir, abra su archivo .htaccess y añada las siguientes reglas mod_rewrite por debajo de otras reglas existentes en dicho fichero." + +#: wp-cache.php:583 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "¡Las reglas Mod Rewrite no pueden actualizarse!" + +#: wp-cache.php:584 +#, php-format +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "Debe tener marcadores BEGIN y END dentro de su fichero %s.htaccess para que funcione la actualización automática. Se parecen a lo siguiente y rodean a las reglas mod_rewrite principales de WordPress:" + +#: wp-cache.php:586 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "Recargue esta página después de que haya actualizado su fichero .htaccess" + +#: wp-cache.php:590 +msgid "Thank you for upgrading." +msgstr "Gracias por actualizar." + +#: wp-cache.php:590 +#, php-format +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "Las reglas mod_rewrite han cambiado desde que instaló este plugin. Desafortunadamente, deberá eliminar las antiguas reglas de supercache antes de que puedan instalarse las nuevas. Recargue esta página después de que haya editado su fichero .htaccess file. Si desea realizar una actualización manual, cambie la siguiente línea: %1$s para que quede como la siguiente: %2$s Los únicos cambios son que\"HTTP_COOKIE\" pasa a ser \"HTTP:Cookie\" y \"wordpressuser\" se convierte en \"wordpress\". Este es un cambio de WordPress 2.5 aunque sigue siendo compatible con versiones anteriores (si tiene valor para usarlas)" + +#: wp-cache.php:594 +msgid "Trailing slash check required." +msgstr "Comprobación de \"trailing slash\" (barra al final de una dirección) requerida" + +#: wp-cache.php:594 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "Parece que su blog tiene URLs que terminan con \"/\". Desafortunadamente, desde que instaló este plugin, se ha encontrado un fallo de contenido duplicado para las URLs que no terminan en \"/\" y de aquellas que sí lo hacen y que provoca que no se llame a la URL correcta. Para resolverlo, deberá editar su fichero .htaccess y añadir las dos siguientes reglas a los dos grupos de Super Caché:" + +#: wp-cache.php:596 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "Puede ver dónde van las reglas y examinar todas ellas pinchando sobre el enlace \"Ver reglas mod_rewrite\" que se muestra abajo." + +#: wp-cache.php:608 +msgid "Cannot update .htaccess" +msgstr "No se pudo actualizar el fichero .htaccess" + +#: wp-cache.php:608 +#, php-format +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "El fichero %s.htaccess no puede ser modificado por el servidor. Por favor, resuélvalo mediante el comando CHMOD de su cliente de FTP." + +#: wp-cache.php:608 +msgid "Refresh this page when the file permissions have been modified." +msgstr "Recargue esta página cuando los permisos hayan sido modificados." + +#: wp-cache.php:608 +#, php-format +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "Alternativamente, puede editar manualmente su fichero %s.htaccess y añadir el siguiente código (antes de cualquier regla de WordPress):" + +#: wp-cache.php:611 +#, php-format +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "Para servir archivos html estáticos, su servidor debe tener las reglas mod_rewrite correctas añadidas a un fichero llamado %s.htaccess" + +#: wp-cache.php:613 +msgid "You must edit the file yourself add the following rules." +msgstr "Deberá editar manualmente el fichero para añadir las siguientes reglas." + +#: wp-cache.php:615 +msgid "You can edit the file yourself add the following rules." +msgstr "Puede editar manualmente el archivo y añadir las siguientes reglas." + +#: wp-cache.php:617 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr " Asegúrese de que se muestran antes de cualquier regla de WordPress existente. " + +#: wp-cache.php:619 +#: wp-cache.php:646 +#, php-format +msgid "Rules must be added to %s too:" +msgstr "Las reglas deben añadirse también a %s:" + +#: wp-cache.php:624 +msgid "Update Mod_Rewrite Rules" +msgstr "Actualizar reglas Mod_Rewrite" + +#: wp-cache.php:633 +msgid "Mod Rewrite rules updated!" +msgstr "¡Las reglas Mod Rewrite se han actualizado!" + +#: wp-cache.php:634 +#, php-format +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "El fichero %s.htaccess ha sido actualizado con las reglas mod_rewrite necesarias. Por favor, verifique que son correctas. Deberían parecerse a lo siguiente:" + +#: wp-cache.php:636 +msgid "Mod Rewrite rules must be updated!" +msgstr "¡Las reglas Mod Rewrite deben actualizarse!" + +#: wp-cache.php:637 +#, php-format +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "Su fichero %s.htaccess no puede ser editado por el servidor y debe actualizarse con las reglas mod_rewrite necesarias. Las nuevas reglas van encima de las reglas normales de WordPress, como se muestra en el siguiente código:" + +#: wp-cache.php:642 +#, php-format +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "Se han detectado reglas mod rewrite de WP Super Cache en su fichero %s.htaccess.
      Pinche sobre el siguiente enlace para ver las líneas añadidas a dicho fichero. Si ha actualizado el plugin, asegúrese de que dichas reglas coinciden." + +#: wp-cache.php:643 +msgid "View Mod_Rewrite Rules" +msgstr "Ver reglas Mod_Rewrite" + +#: wp-cache.php:654 +#, php-format +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "Reglas de codificación Gzip creadas en %s.htaccess" + +#: wp-cache.php:661 +msgid "Fix Configuration" +msgstr "Arreglar configuración" + +#: wp-cache.php:664 +msgid "Restore Default Configuration" +msgstr "Volver a la configuración por defecto" + +#: wp-cache.php:672 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "La moderación de comentarios está activada. Su comentario podría tardar cierto tiempo en aparecer." + +#: wp-cache.php:696 +msgid "Lock Down:" +msgstr "Modo Confinamiento:" + +#: wp-cache.php:697 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "Prepare su servidor para un pico de tráfico no esperado activando el modo \"confinamiento\". Cuando está activo, los nuevos comentarios de un artículo no provocarán que se refresquen los archivos estáticos de la caché." + +#: wp-cache.php:698 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "Atención desarrolladores: hagan su plugin compatible con el modo \"confinamiento\" comprobando la constante \"WPLOCKDOWN\". El siguiente código hará que su plugin respete la configuración WPLOCKDOWN." + +#: wp-cache.php:700 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "Lo siento, mi blog está en modo confinamiento. Las actualizaciones aparecerán en breve." + +#: wp-cache.php:704 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "WordPress está en modo confinamiento. Los ficheros estáticos de Super Caché no se borrarán cuando se hagan nuevos comentarios." + +#: wp-cache.php:706 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "WordPress no está en modo confinamiento. Los nuevos comentarios refrescarán los ficheros estáticos de Super Caché con normalidad." + +#: wp-cache.php:712 +msgid "Lock Down" +msgstr "Confinamiento" + +#: wp-cache.php:720 +msgid "Directly Cached Files" +msgstr "Archivos directos en caché" + +#: wp-cache.php:778 +#, php-format +msgid "%s removed!" +msgstr "%s eliminado!" + +#: wp-cache.php:786 +#, php-format +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "Debe hacer que %s pueda editarse para activar esta opción. Como es un riesgo para la seguridad, asegúrese de volverlo a dejar como solo lectura después de que se haya generado la página." + +#: wp-cache.php:788 +#, php-format +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "%s es editable. Como es un riesgo para la seguridad, asegúrese de dejarlo como solo lectura después de que se haya generado la página." + +#: wp-cache.php:802 +msgid "Existing direct page" +msgstr "Página directa existente" + +#: wp-cache.php:802 +msgid "Delete cached file" +msgstr "Archivo de caché borrado" + +#: wp-cache.php:807 +msgid "Add direct page:" +msgstr "Añadir página directa:" + +#: wp-cache.php:809 +#, php-format +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "Los archivos directos a caché son archivos creados directamente fuera de %s donde reside su blog. Esta opción sólo es útil si esta experimentando problemas de mucho tráfico en un artículo o página concreta desde sitios del estilo a Digg o Menéame." + +#: wp-cache.php:811 +#, php-format +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "Por ejemplo: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." + +#: wp-cache.php:812 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "Deje el cuadro en blanco para eliminarla de la lista de páginas directas en caché y borrar así el fichero de caché." + +#: wp-cache.php:817 +msgid "Update Direct Pages" +msgstr "Actualizar páginas directas" + +#: wp-cache.php:857 +msgid "Expiry Time & Garbage Collection" +msgstr "Tiempo de caducidad y Recogida de basura" + +#: wp-cache.php:859 +msgid "Expire time:" +msgstr "Tiempo de caducidad:" + +#: wp-cache.php:860 +msgid "seconds" +msgstr "segundos" + +#: wp-cache.php:861 +msgid "Garbage Collection" +msgstr "Recolección de basura" + +#: wp-cache.php:861 +msgid "If expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above." +msgstr "Si el tiempo de caducidad es mayor a 1800 segundos (media hora), la recolección de basura se hará cada 10 minutos; en otro caso, se hará 10 segundos después del tiempo de caducidad indicado arriba." + +#: wp-cache.php:862 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 300 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. Aim to have less than 500 cached files if possible." +msgstr "Comprobar y eliminar archivos caducados es costoso, pero dejarlos ahí lo es más. En un sitio con mucho tráfico debería establecer el tiempo de caducidad a 300 segundos. Experimente con diferentes valores y visite regularmente esta página para comprobar cuantos ficheros caducados aparecen a diferentes horas del día. El objetivo está en tener menos de 500 archivos en caché siempre que sea posible." + +#: wp-cache.php:863 +msgid "Change Expiration" +msgstr "Cambiar caducidad" + +#: wp-cache.php:902 +msgid "Rejected User Agents" +msgstr "Agentes de usuario rechazados" + +#: wp-cache.php:903 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "Cadenas en la cabecera HTTP ’User Agent’ que previenen que WP-Cache almacene peticiones de robots de búsqueda. Tenga en cuenta que los archivos de Super Caché se siguen enviando a esos agentes si ya existen." + +#: wp-cache.php:910 +msgid "Save UA Strings" +msgstr "Grabar cadenas User Agent" + +#: wp-cache.php:933 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "No almacenar en caché los siguientes tipos de páginas. Revise el apartado Conditional Tags de la documentación para acceder a un completo argumento sobre cada uno de los tipos." + +#: wp-cache.php:936 +msgid "Single Posts" +msgstr "Artículos individuales" + +#: wp-cache.php:937 +msgid "Pages" +msgstr "Páginas" + +#: wp-cache.php:938 +msgid "Front Page" +msgstr "Página principal" + +#: wp-cache.php:939 +msgid "Home" +msgstr "Home" + +#: wp-cache.php:940 +msgid "Archives" +msgstr "Archivos" + +#: wp-cache.php:941 +msgid "Tags" +msgstr "Etiquetas (tags)" + +#: wp-cache.php:942 +msgid "Category" +msgstr "Categorías" + +#: wp-cache.php:943 +msgid "Feeds" +msgstr "Feeds" + +#: wp-cache.php:944 +msgid "Search Pages" +msgstr "Páginas de búsqueda" + +#: wp-cache.php:946 +#: wp-cache.php:1073 +msgid "Save" +msgstr "Grabar" + +#: wp-cache.php:963 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "Añada aquí las cadenas (no el nombre del fichero) que forzará que una página no entre en caché. Por ejemplo, si su URL incluye un año y no quiere que los artículos del último año entren en caché, bastará con especificar el año, por ejemplo:’/2004/’. WP-Cache buscará si esa cadena forma parte de la URI para, de ser así, no alojar dicha página en la caché." + +#: wp-cache.php:969 +msgid "Save Strings" +msgstr "Grabar cadenas" + +#: wp-cache.php:985 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "Añada aquí aquellos nombres de archivos que pueden ser almacenados en caché, incluso si coinciden con alguna de las subcadenas especificadas arriba." + +#: wp-cache.php:991 +msgid "Save Files" +msgstr "Grabar archivos" + +#: wp-cache.php:1035 +msgid "Debug Settings" +msgstr "Depurar opciones" + +#: wp-cache.php:1037 +msgid "Currently logging to: " +msgstr "Actualmente registrando datos (log) en:" + +#: wp-cache.php:1047 +msgid "Fix problems with the plugin by debugging it here. It can send you debug emails or log them to a file in your cache directory." +msgstr "Solucione problemas con el plugin depurándolos aquí. Podrá recibir emails de depuración o guardar los registros en un fichero de su directorio caché." + +#: wp-cache.php:1048 +msgid "Logging to a file is easier but faces the problem that clearing the cache will clear the log file." +msgstr "Guardar los registros en un fichero es más sencillo, pero limpiar la caché provocará que se borren dichos archivos de registro." + +#: wp-cache.php:1052 +msgid "Debugging" +msgstr "Modo depuración" + +#: wp-cache.php:1053 +msgid "Logging Type" +msgstr "Tipo de registro" + +#: wp-cache.php:1053 +msgid "Email" +msgstr "Email" + +#: wp-cache.php:1054 +msgid "file" +msgstr "archivo" + +#: wp-cache.php:1055 +msgid "IP Address" +msgstr "Dirección IP" + +#: wp-cache.php:1055 +#, php-format +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(depurar sólo peticiones desde esta dirección IP. Su IP es %s)" + +#: wp-cache.php:1056 +msgid "Log level" +msgstr "Nivel de registro" + +#: wp-cache.php:1062 +msgid "(1 = less, 5 = more, may cause severe server load.)" +msgstr "(1 = menor, 5 = mayor, puede provocar una gran carga al servidor)" + +#: wp-cache.php:1064 +msgid "Advanced" +msgstr "Avanzado" + +#: wp-cache.php:1064 +msgid "In very rare cases two problems may arise on some blogs:
      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "En algún caso bastante excepcional pueden ocurrir dos problemas en algunos blogs:
      1. La página principal puede empezar a descargarse como un archivo zip.
      2. Ocasionalmente, una página incorrecta se almacena en caché como si fuese la página principal si su blog utiliza una página principal estática y la estructura de enlaces permanentes es /%categoría%/%artículo%/.
      " + +#: wp-cache.php:1065 +#, php-format +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "Estoy seguro al 99% de que no son fallos de WP Super Cache y de que tan sólo ocurren en casos muy excepcionales, pero si esto le preocupa puede ejecutar un sencillo test cada 5 minutos para verificar que su sitio esta bien. Recibirá un correo en caso de problemas." + +#: wp-cache.php:1067 +msgid "Check front page every 5 minutes." +msgstr "Comprobar la página principal cada 5 minutos." + +#: wp-cache.php:1068 +msgid "Front page text" +msgstr "Texto página principal" + +#: wp-cache.php:1068 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "Texto a buscar en su página principal. Si se detecta que falta este texto, la caché se limpiará. Déjelo en blanco para desactivar esta opción" + +#: wp-cache.php:1069 +msgid "Clear cache on error." +msgstr "Limpiar la caché en caso de error." + +#: wp-cache.php:1070 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "Enviar un email al administrador del blog cuando se hagan comprobaciones (útil para pruebas)" + +#: wp-cache.php:1083 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "Error: la compresión GZIP está activada; debe desactivarla si quiere activar wp-cache." + +#: wp-cache.php:1131 +#: wp-cache.php:1293 +msgid "Warning" +msgstr "Aviso" + +#: wp-cache.php:1131 +msgid "GZIP compression is enabled in Wordpress, wp-cache will be bypassed until you disable gzip compression." +msgstr "La compresión GZIP está activa en WordPress, wp-cache se omitirá hasta que desactive dicha compresión." + +#: wp-cache.php:1189 +#: wp-cache.php:1194 +#: wp-cache.php:1226 +#: wp-cache.php:1231 +#: wp-cache.php:1237 +msgid "Error" +msgstr "Error" + +#: wp-cache.php:1189 +#, php-format +msgid "Your cache directory ($cache_path) did not exist and couldn’t be created by the web server. Check %s permissions." +msgstr "Si directorio caché ($cache_path) no existe y no puede ser creado por el servidor. Compruebe los permisos de %s." + +#: wp-cache.php:1194 +#, php-format +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "Su directorio caché (%1$s) o %2$s necesita tener permisos de escritura para que este plugin funcione. Verifíquelo bien." + +#: wp-cache.php:1226 +#, php-format +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "El archivo de configuración de WP-Cache (%s) está desactualizado y no puede editarse por el servidor. Por favor, bórrelo y recargue esta página." + +#: wp-cache.php:1231 +#, php-format +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "Falta el archivo de configuración y %1$s el directorio (%2$s) no puede editarse por el servidor. Compruebe sus permisos." + +#: wp-cache.php:1237 +#, php-format +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "El archivo de ejemplo de configuración WP-Cache (%s) no existe. Verifique su instalación." + +#: wp-cache.php:1293 +#, php-format +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "%s/advanced-cache.php no existe o no puede ser actualizado." + +#: wp-cache.php:1294 +msgid "1. If it already exists please delete the file first." +msgstr "1. Si existe, por favor, borre primero el fichero." + +#: wp-cache.php:1295 +#, php-format +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. Proporcione permisos de escritura a %1$s utilizando el comando CHMOD de su cliente de FTP. (chmod 777 %1$s) y recargue esta página. Esto sólo es una medida temporal: terminado el proceso deberá volver a dejarlo como de sólo lectura (cambiar de 777 a 755 en el comando anterior)" + +#: wp-cache.php:1296 +#, php-format +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. Recargue esta página para actualizar %s/advanced-cache.php" + +#: wp-cache.php:1297 +#, php-format +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "Si eso no funciona, asegúrese de que el archivo %s/advanced-cache.php no existe:" + +#: wp-cache.php:1298 +#, php-format +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. Abra el fichero %1$s$wp_cache_file en un editor de texto.
    • 2. Cambie el texto CACHEHOME por %2$s
    • 3. Guarde los cambios y salve el fichero en %3$s; luego recargue esta página.
    • " + +#: wp-cache.php:1318 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "Error: WP_CACHE no está activo en su fichero wp-config.php y no puedo modificarlo." + +#: wp-cache.php:1319 +#, php-format +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "Edite el fichero %s y añada la siguiente línea:
      define('WP_CACHE', true);
      En caso contrario, WP-Cache no será ejecutado por el núcleo de WordPress." + +#: wp-cache.php:1322 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the FAQ. The WP_CACHE line must be moved up." +msgstr "

      Constante WP_CACHE añadida al fichero wp-config.php

      Si sigue viendo este mensaje de aviso, revise por favor el punto 5 del FAQ. La línea WP_CACHE debe subirse sobre otras líneas." + +#: wp-cache.php:1343 +msgid "Cache Contents" +msgstr "Contenidos en caché" + +#: wp-cache.php:1362 +#, php-format +msgid "Deleting supercache file: %s
      " +msgstr "Borrando archivo supercache: %s
      " + +#: wp-cache.php:1379 +#, php-format +msgid "Deleting wp-cache file: %s
      " +msgstr "Borrando archivo wp-cache: %s
      " + +#: wp-cache.php:1443 +msgid "WP-Cache" +msgstr "WP-Cache" + +#: wp-cache.php:1444 +#: wp-cache.php:1457 +#, php-format +msgid "%s Cached Pages" +msgstr "%s Páginas en caché" + +#: wp-cache.php:1445 +#: wp-cache.php:1459 +#, php-format +msgid "%s Expired Pages" +msgstr "%s Páginas caducadas" + +#: wp-cache.php:1456 +msgid "WP-Super-Cache" +msgstr "WP-Super-Cache" + +#: wp-cache.php:1464 +msgid "Fresh WP-Cached Files" +msgstr "Archivos recientes en caché" + +#: wp-cache.php:1465 +#: wp-cache.php:1481 +#: wp-cache.php:1497 +#: wp-cache.php:1513 +msgid "URI" +msgstr "URI" + +#: wp-cache.php:1465 +#: wp-cache.php:1481 +msgid "Key" +msgstr "Clave" + +#: wp-cache.php:1465 +#: wp-cache.php:1481 +#: wp-cache.php:1497 +#: wp-cache.php:1513 +msgid "Age" +msgstr "Edad" + +#: wp-cache.php:1465 +#: wp-cache.php:1481 +#: wp-cache.php:1497 +#: wp-cache.php:1513 +msgid "Delete" +msgstr "Borrar" + +#: wp-cache.php:1480 +msgid "Stale WP-Cached Files" +msgstr "Archivos anticuados en caché" + +#: wp-cache.php:1496 +msgid "Fresh Super Cached Files" +msgstr "Archivos recientes en Super Caché" + +#: wp-cache.php:1512 +msgid "Stale Super Cached Files" +msgstr "Archivos anticuados en Super Caché" + +#: wp-cache.php:1528 +msgid "Hide file list" +msgstr "Ocultar lista de archivos" + +#: wp-cache.php:1530 +msgid "List all cached files" +msgstr "Mostrar archivos en caché" + +#: wp-cache.php:1536 +#, php-format +msgid "Garbage Collection
      Last GC was %s minutes ago
      " +msgstr "Recolección de Basura
      La última \"RdB\" se hizo hace %s minutos
      " + +#: wp-cache.php:1537 +#, php-format +msgid "Next GC in %s minutes" +msgstr "La siguiente \"RdB\" se hará en %s minutos" + +#: wp-cache.php:1540 +#, php-format +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "Los ficheros caducados son aquellos superiores a %s segundos. Todavía están en uso por el plugin y son borrados periódicamente." + +#: wp-cache.php:1543 +msgid "Delete Expired" +msgstr "Borrar caducados" + +#: wp-cache.php:1549 +#: wp-cache.php:1563 +#: wp-cache.php:1719 +msgid "Delete Cache" +msgstr "Borrar caché" + +#: wp-cache.php:1563 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Borrar archivos de Super Caché (se abrirá una nueva ventana)" + +#: wp-cache.php:1695 +#, php-format +msgid "%1$s is Digg proof thanks to caching by %2$s" +msgstr "%1$s está orgullosamente a prueba de Digg gracias a la caché que proporciona %2$s" + +#: wp-cache.php:1728 +#, php-format +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "WP Super Cache debe configurarse. Vaya a la página de administración para activar y configurar el plugin." + +#: wp-cache.php:1734 +msgid "Settings" +msgstr "Configuraciones" + +#: wp-cache.php:1744 +#, php-format +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "WP Super Cache está desactivado. Por favor, vaya a la página de administración del plugin para activar la caché." + +#: wp-cache.php:1763 +#, php-format +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] La página principal esta comprimida con Gzip! Debe limpiar la caché." + +#: wp-cache.php:1763 +#, php-format +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "Por favor, visite %s para limpiar la caché ya que la página principal de su sitio esta ahora descargándose!" + +#: wp-cache.php:1766 +#, php-format +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] La página principal esta comprimida con Gzip! Caché eliminada!" + +#: wp-cache.php:1766 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "La caché de su blog se ha limpiado ya que la página principal de su sitio se está descargando. Por favor, visite %s para comprobar que la caché se ha limpiado correctamente." + +#: wp-cache.php:1773 +#, php-format +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] La página principal esta comprimida con Gzip! Por favor, limpie la caché." + +#: wp-cache.php:1773 +#, php-format +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "Por favor, visite %1$s para limpiar la caché, ya que la página principal de su sitio no es correcta y falta el texto , \"%2$s\"!" + +#: wp-cache.php:1776 +#, php-format +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] La página principal no es correcta, caché eliminada!" + +#: wp-cache.php:1776 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "Se ha limpiado la caché de su blog debido a que la página principal de su sitio carece del texto \"%2$s\". Por favor, visite %1$s para comprobar que la caché se ha limpiado correctamente." + +#: wp-cache.php:1781 +#, php-format +msgid "[%s] Front page check!" +msgstr "[%s] Comprobar página principal!" + +#: wp-cache.php:1781 +#, php-format +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "WP Super Cache ha comprobado la página principal de su blog. Por favor, visite %s si quiere desactivar esto." + diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-fr_FR.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-fr_FR.mo new file mode 100644 index 0000000000000000000000000000000000000000..85ea858ae7925e54cab97775485aad0b4ff97fa7 GIT binary patch literal 61792 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

      #SmI{s9|fZF;OQ7fFXyNp35Q; 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 PWq~fTz!X{B$}aoAk4w<4 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-fr_FR.po b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-fr_FR.po new file mode 100644 index 0000000..9a07166 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-fr_FR.po @@ -0,0 +1,1713 @@ +msgid "" +msgstr "" +"Project-Id-Version: WP Super Cache fr\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-super-cache\n" +"POT-Creation-Date: 2010-06-16 10:25+0000\n" +"PO-Revision-Date: \n" +"Last-Translator: Maître Mô \n" +"Language-Team: Maître Mô \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: French\n" +"X-Poedit-Country: France\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: .\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" + +#@ wp-super-cache +#: plugins/badbehaviour.php:45 +msgid "Bad Behaviour not found. Please check your install." +msgstr "Bad Behaviour n'a pas été trouvé. Merci de vérifier votre installation." + +#@ wp-super-cache +#: plugins/awaitingmoderation.php:23 +#: plugins/awaitingmoderation.php:38 +#: plugins/badbehaviour.php:47 +#: plugins/badbehaviour.php:65 +#: plugins/domain-mapping.php:47 +#: plugins/domain-mapping.php:62 +#: plugins/searchengine.php:61 +#: plugins/searchengine.php:76 +#: wp-cache.php:1103 +msgid "Disable" +msgstr "Désactiver" + +#@ wp-super-cache +#: plugins/awaitingmoderation.php:29 +#: plugins/badbehaviour.php:55 +#: plugins/domain-mapping.php:53 +#: plugins/searchengine.php:67 +msgid "disabled" +msgstr "désactivé" + +#@ wp-super-cache +#: plugins/awaitingmoderation.php:31 +#: plugins/badbehaviour.php:57 +#: plugins/domain-mapping.php:55 +#: plugins/searchengine.php:69 +#: wp-cache.php:1449 +msgid "enabled" +msgstr "activé" + +#@ wp-super-cache +#: plugins/badbehaviour.php:60 +#, php-format +msgid "Bad Behaviour support is %s." +msgstr "Le support de Bad Behaviour est %s." + +#@ wp-super-cache +#: plugins/awaitingmoderation.php:36 +#: plugins/badbehaviour.php:63 +#: plugins/domain-mapping.php:60 +#: plugins/searchengine.php:74 +#: wp-cache.php:1103 +msgid "Enable" +msgstr "Activer" + +#@ wp-super-cache +#: plugins/badbehaviour.php:69 +#: wp-cache.php:1180 +#: wp-cache.php:1182 +msgid "Warning!" +msgstr "Attention!" + +#@ wp-super-cache +#: plugins/searchengine.php:71 +#, php-format +msgid "No Adverts for Friends plugin is %s." +msgstr "L'extension Pas de pub pour les amis est %s." + +#@ wp-super-cache +#: plugins/searchengine.php:72 +msgid "(requires friendsadverts.php too) " +msgstr "(nécessite également friendsadverts.php) " + +#@ wp-super-cache +#: wp-cache.php:87 +#, php-format +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "Merci de créer %s /wp-cache-config.php à partir de wp-super-cache/wp-cache-config-sample.php" + +#@ wp-super-cache +#: wp-cache.php:138 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "Attention ! Le Mode Sécurité PHP est activé !" + +#@ wp-super-cache +#: wp-cache.php:139 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "Vous pourriez rencontrer certains problèmes en exécutant cette extension, car le Mode de Sécurité PHP est activés." + +#@ wp-super-cache +#: wp-cache.php:143 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "Votre serveur est configuré pour vérifier le propriétaire des scripts PHP avant de les autoriser à lire et écrire les fichiers." + +#@ wp-super-cache +#: wp-cache.php:144 +#, php-format +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "Vous ou un administrateur pouvez être en mesure de le faire fonctionner en modifiant le groupe du propriétaire des scripts de l'extension pour le faire correspondre à celui de l'utilisateur du serveur web. Le groupe du propriétaire du répertoire de %s/cache/ doit également être modifié. Voir la page du manuel du Mode Sécurité pour plus de détails." + +#@ wp-super-cache +#: wp-cache.php:146 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "Vous ou un administrateur devez désactiver ceci. Voir la page du manuel du Mode Sécurité pour plus de détails. Ça ne peut malheureusement pas être désactivé dans un fichier .htaccess. Ça doit l'être dans le fichier de configuration php.ini." + +#@ wp-super-cache +#: wp-cache.php:152 +msgid "Permlink Structure Error" +msgstr "Erreur de Structure des PermaLiens" + +#@ default +#: wp-cache.php:153 +msgid "A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks." +msgstr "Une URL personnalisée ou une structure de permaliens est nécessaire pour que ce plugin fonctionne correctement. S’il vous plaît, aller sur la page Options permaliens pour configurer vos permaliens." + +#@ wp-super-cache +#: wp-cache.php:516 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "Le fichier de configuration a été modifié, certaines valeurs peuvent-être erronées. Rechargez la page depuis le menu \"Réglages\" pour les remettre à zéro." + +#@ wp-super-cache +#: wp-cache.php:195 +msgid "Cannot continue... fix previous problems and retry." +msgstr "Impossible de continuer... Résolvez les problèmes susmentionnés et réessayez." + +#@ wp-super-cache +#: wp-cache.php:165 +#, php-format +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "Attention ! Votre nom de domaine \"%s\" se traduit par %s" + +#@ wp-super-cache +#: wp-cache.php:166 +#, php-format +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "Votre serveur pense que votre nom de domaine se traduit en tant que %s. Certains services comme l'éboueur de cette extension, et la publication différée de WordPress, peuvent ne pas fonctionner correctement." + +#@ wp-super-cache +#: wp-cache.php:167 +#: wp-cache.php:181 +#, php-format +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "Veuillez lire l'entrée 16 de la section Troubleshooting (dysfonctionnements) du fichier readme.txt" + +#@ wp-super-cache +#: wp-cache.php:180 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "Malheureusement, WordPress n'arrive pas à trouver le fichier wp-cron.php. Ce script est requis pour un fonctionnement correct de l'éboueur de cette extension, ainsi d'ailleurs que de la publication différée de WordPress et d'autres fonctions critiques." + +#@ wp-super-cache +#: wp-cache.php:204 +msgid "Zlib Output Compression Enabled!" +msgstr "Compression Zlib Output activée !" + +#@ wp-super-cache +#: wp-cache.php:205 +msgid "PHP is compressing the data sent to the visitors of your site. Disabling this is recommended as the plugin caches the compressed output once instead of compressing the same page over and over again. Also see #21 in the Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "PHP compresse les données envoyées aux visiteurs de votre site. Il est recommandé de désactiver ceci car l'extension met en cache la sortie compressée une seule fois, au lieu de compresser la même page encore et encore. Voir également le #21 dans la section Dépannage. Voir cette page pour obtenir des instructions pour la modification de votre fichier php.ini." + +#@ wp-super-cache +#: wp-cache.php:209 +msgid "Mod rewrite may not be installed!" +msgstr "Le mode Réécriture ne doit pas être installé !" + +#@ wp-super-cache +#: wp-cache.php:215 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "Mode Lecture Seule. La configuration ne peut pas être modifiée." + +#@ wp-super-cache +#: wp-cache.php:216 +#, php-format +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "Le fichier de configuration de WP Super Cache est %s/wp-cache-config.php et ne peut pas être modifié. Ce fichier doit pouvoir être écrit par votre serveur web pour effectuer des modifications." + +#@ wp-super-cache +#: wp-cache.php:217 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "Un moyen simple de faire ceci est de modifier temporairement les permissions en utilisant la commande CHMOD, ou via votre client FTP. Assurez-vous que l'ensemble peut être écrit, et cela devrait fonctionner." + +#@ wp-super-cache +#: wp-cache.php:218 +msgid "Writeable:" +msgstr "Peut être écrit :" + +#@ wp-super-cache +#: wp-cache.php:219 +msgid "Readonly:" +msgstr "Lecture Seule :" + +#@ wp-super-cache +#: wp-cache.php:231 +#, php-format +msgid "Warning! %s is writeable!" +msgstr "Attention ! %s peut être écrit !" + +#@ wp-super-cache +#: wp-cache.php:232 +#, php-format +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "Vous devriez modifier les permissions sur %s et les rendre plus restrictives. Utilisez votre client FTP, ou la commande ci-dessous, pour résoudre ces choses :" + +#@ wp-super-cache +#: wp-cache.php:406 +msgid "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file." +msgstr "Attention ! Vous avez tenté d'activer la compression mais zlib.output_compression est activée. Voir le #21 dans la section Dépannage du fichier readme." + +#@ wp-super-cache +#: wp-cache.php:793 +msgid "Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)" +msgstr "Annoncez fièrement au Monde que votre serveur est compatible avec Digg ! (affiche un message dans le pied-de-page de votre blog)" + +#@ wp-super-cache +#: wp-cache.php:808 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "Verrouillage Majeur de fichier. Vous n'avez probablement pas besoin de ça, mais ça peut aider si votre serveur est peu puissant. Attention ! Peut bloquer votre serveur dans de très rares cas !" + +#@ wp-super-cache +#: wp-cache.php:803 +msgid "Mobile device support." +msgstr "Support des systèmes mobiles." + +#@ wp-super-cache +#: wp-cache.php:240 +msgid "Mobile rewrite rules detected" +msgstr "Règles de réécriture pour mobiles détectées" + +#@ wp-super-cache +#: wp-cache.php:241 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"2.0\\ MMP|240x320\" and delete those." +msgstr "Pour des performances optimales, vous devriez activer le \"Support des systèmes de mobiles\" ou supprimer les règles de réécriture pour mobiles dans votre .htaccess. Localisez les 2 lignes avec le texte \"2.0\\ MMP|240x320\" et supprimez-les." + +#@ wp-super-cache +#: wp-cache.php:241 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "Cela n'affectera pas les utilisateurs ordinaires, mais les utilisateurs de mobiles verront des pages non mises en cache." + +#@ wp-super-cache +#: wp-cache.php:247 +#: wp-cache.php:258 +msgid "Rewrite rules must be updated" +msgstr "Les règles de Réécriture doivent être mises à jour" + +#@ wp-super-cache +#: wp-cache.php:248 +#: wp-cache.php:259 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "Les règles de réécriture nécessitées par cette extension ont changé ou sont manquantes." + +#@ wp-super-cache +#: wp-cache.php:252 +#, php-format +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "Supprimez les règles de Réécriture de l'extension dans %s.htaccess situées entre # BEGIN WPSuperCache et # END WPSuperCache et laissez laissez l'extension les régénérer en rechargeant cette page." + +#@ wp-super-cache +#: wp-cache.php:253 +#, php-format +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ add these lines: (do it twice, once for each section)" +msgstr "Ajoutez les règles vous-même. Éditez %s.htaccess et trouvez le bloc de code situé entre les lignes # BEGIN WPSuperCache et # END WPSuperCache. Il existe deux sections, qui se ressemblent beaucoup. Juste en dessous de la ligne %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$, ajoutez ces lignes (faites-le deux fois, une par section) :" + +#@ wp-super-cache +#: wp-cache.php:811 +msgid "Use object cache to store cached files." +msgstr "Utilisez un objet mis en cache pour stocker les fichiers mis en cache." + +#@ wp-super-cache +#: wp-cache.php:811 +msgid "(Experimental)" +msgstr "(Expérimental)" + +#@ wp-super-cache +#: wp-cache.php:805 +msgid "Only refresh current page when comments made." +msgstr "Rafraîchir uniquement la page courante lorsqu'un commentaire est effectué." + +#@ wp-super-cache +#: wp-cache.php:818 +msgid "Note:" +msgstr "Note :" + +#@ wp-super-cache +#: wp-cache.php:820 +#, php-format +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "Si vous désinstallez cette extension, assurez-vous que le répertoire %s peut être écrit par le serveur Web, de façon que les fichiers advanced-cache.php et cache-config.php puissent être automatiquement détruits. (S'assurer que ces fichiers peuvent également être écrits est probablement une bonne idée !)" + +#@ wp-super-cache +#: wp-cache.php:821 +#, php-format +msgid "Please see the readme.txt for instructions on uninstalling this script. Look for the heading, \"How to uninstall WP Super Cache\"." +msgstr "Merci de lire le fichier readme.txt pour les instructions relatives à la désinstallation de ce script. Cherchez le titre \"How to uninstall WP Super Cache\"(\\\"Comment désinstaller WP Super Cache\\\" -en anglais)." + +#@ wp-super-cache +#: wp-cache.php:822 +#, php-format +msgid "Need help? Check the Super Cache readme file. It includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already have been answered." +msgstr "Besoin d'aide ? Lisez le fichier readme de Super Cache. Il inclut une documentation pour l'installation, une FAQ, et des conseils de dépannage. Le forum de support est également disponible. Il a peut-être déjà été répondu à votre question." + +#@ wp-super-cache +#: wp-cache.php:825 +#: wp-cache.php:872 +msgid "Update Status" +msgstr "Mettre à jour les Statuts" + +#@ wp-super-cache +#: wp-cache.php:535 +msgid "Cache Tester" +msgstr "Testeur du Cache" + +#@ wp-super-cache +#: wp-cache.php:536 +msgid "Test your cached website by clicking the test button below." +msgstr "Testez votre site web mis en cache en cliquant sur le bouton de test ci-dessous." + +#@ wp-super-cache +#: wp-cache.php:543 +#, php-format +msgid "Fetching %s to prime cache: " +msgstr "Récupération de %s pour la première mise en cache." + +#@ wp-super-cache +#: wp-cache.php:545 +#: wp-cache.php:552 +#: wp-cache.php:559 +msgid "OK" +msgstr "OK" + +#@ wp-super-cache +#: wp-cache.php:550 +#, php-format +msgid "Fetching first copy of %s: " +msgstr "Récupération de la première copie de %s :" + +#@ wp-super-cache +#: wp-cache.php:557 +#, php-format +msgid "Fetching second copy of %s: " +msgstr "Récupération de la deuxième copie de %s :" + +#@ wp-super-cache +#: wp-cache.php:589 +#, php-format +msgid "Page 1: %s" +msgstr "Page 1 : %s" + +#@ wp-super-cache +#: wp-cache.php:590 +#, php-format +msgid "Page 2: %s" +msgstr "Page 2 : %s" + +#@ wp-super-cache +#: wp-cache.php:591 +msgid "The timestamps on both pages match!" +msgstr "Les horodateurs des deux pages correspondent !" + +#@ wp-super-cache +#: wp-cache.php:593 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "Les pages ne correspondent pas ! Les horodateurs sont différents ou n'ont pas été trouvés !" + +#@ wp-super-cache +#: wp-cache.php:600 +msgid "Test Cache" +msgstr "Test du Cache" + +#@ wp-super-cache +#: wp-cache.php:625 +#: wp-cache.php:748 +msgid "Cancel Cache Preload" +msgstr "Annuler le Préchargement du Cache" + +#@ wp-super-cache +#: wp-cache.php:631 +msgid "Scheduled preloading of cache cancelled. If a job is currently running it will not shutdown until the current 100 pages are complete." +msgstr "Préchargement programmé du cache annulé. Si un travail est actuellement en cours, il ne s'arrêtera pas jusqu'à ce que les 100 pages en cours soit terminées." + +#@ wp-super-cache +#: wp-cache.php:642 +msgid "Scheduled preloading of cache cancelled." +msgstr "Préchargement programmé du cache annulé." + +#@ wp-super-cache +#: wp-cache.php:668 +#: wp-cache.php:746 +msgid "Preload Cache Now" +msgstr "Précharger le Cache Maintenant" + +#@ default +#: wp-cache.php:671 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "Préchargement programmé du cache dans 10 secondes." + +#@ wp-super-cache +#: wp-cache.php:675 +#, php-format +msgid "Scheduled preloading of cache in %d minutes" +msgstr "Préchargement programmé du cache dans %d minutes" + +#@ wp-super-cache +#: wp-cache.php:679 +msgid "This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now." +msgstr "Ceci mettra en cache tous les articles et pages publiés sur votre site. Ça créera des fichiers statiques SuperCache de façon que les visiteurs inconnus (y compris les robots) reçoivent une page mise en cache. Ce qui améliorera probablement votre classement Google, du fait qu'il utilise désormais la vitesse dans ses mesures pour classer les sites Web." + +#@ wp-super-cache +#: wp-cache.php:680 +msgid "Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "Le préchargement crée cependant un nombre important de fichiers. La mise en cache est effectuée des articles les plus récents au plus anciens, donc merci d'envisager de ne mettre en cache que les plus récents, si vous avez un nombre important (10.000 +) d'articles. Ceci est spécialement important pour les hébergements mutualisés." + +#@ wp-super-cache +#: wp-cache.php:685 +#, php-format +msgid "Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)" +msgstr "Rafraîchir les fichiers de préchargement du cache toutes les %s minutes. (0 pour désactiver, au minimum %d minutes.)" + +#@ wp-super-cache +#: wp-cache.php:698 +msgid "all" +msgstr "tous" + +#@ wp-super-cache +#: wp-cache.php:711 +#, php-format +msgid "Preload %s posts." +msgstr "Précharger %s articles." + +#@ wp-super-cache +#: wp-cache.php:721 +msgid "Send me status emails when files are refreshed." +msgstr "M'envoyer un mail d'état de statuts lorsque les fichiers sont rafraîchis." + +#@ default +#: wp-cache.php:726 +msgid "Many emails, 2 emails per 100 posts." +msgstr "De nombreux e-mails, 2 e-mails pour 100 commentaires." + +#@ default +#: wp-cache.php:729 +msgid "Medium, 1 email per 100 posts." +msgstr "Moyen, 1 e-mail pour 100 commentaires." + +#@ wp-super-cache +#: wp-cache.php:732 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "Moins de mails, 1 au début et 1 à la fin du préchargement de tous les articles." + +#@ wp-super-cache +#: wp-cache.php:743 +#, php-format +msgid "Currently caching from post %d to %d." +msgstr "Mise en cache actuelle des articles de %d à %d." + +#@ wp-super-cache +#: wp-cache.php:746 +msgid "Update Settings" +msgstr "Mettre à jour les Réglages" + +#@ wp-super-cache +#: wp-cache.php:266 +msgid "Required to serve compressed supercache files properly." +msgstr "Requis pour servir les fichier compressés Supercache proprement." + +#@ wp-super-cache +#: wp-cache.php:266 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "Requis pour attacher les informations de mise en cache aux pages SuperCache. Les utilisateurs d'IE7 ne verront que les anciennes pages sans ce module." + +#@ wp-super-cache +#: wp-cache.php:266 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "Règle la date d'expiration sur les pages mises en cache par Supercache. Les visiteurs ne pourront pas voir les nouvelles pages lorsqu'ils rafraîchiront, ou lorsqu'ils laisseront des commentaires, sans ce module." + +#@ wp-super-cache +#: wp-cache.php:273 +msgid "Missing Apache Modules" +msgstr "Modules Apache manquants" + +#@ wp-super-cache +#: wp-cache.php:881 +msgid "Make WordPress Faster" +msgstr "Accélérez WordPress" + +#@ wp-super-cache +#: wp-cache.php:882 +#, php-format +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "%1$s est maintenu et développé par %2$s avec les contributions de beaucoup d'autres personnes." + +#@ wp-super-cache +#: wp-cache.php:884 +#, php-format +msgid "Please say hi to him on %s too!" +msgstr "Merci de lui adresser aussi un petit \"salut !\" sur %s !" + +#@ wp-super-cache +#: wp-cache.php:892 +#, php-format +msgid "Cached pages since %1$s : %2$s" +msgstr "Pages mise en cache depuis %1$s : %2$s" + +#@ wp-super-cache +#: wp-cache.php:893 +msgid "Newest Cached Pages:" +msgstr "Plus Récentes Pages Mises en Cache :" + +#@ wp-super-cache +#: wp-cache.php:897 +#, php-format +msgid "Cached %s seconds ago" +msgstr "Mise en cache il y a %s secondes" + +#@ wp-super-cache +#: wp-cache.php:900 +msgid "(may not always be accurate on busy sites)" +msgstr "(peut ne pas être toujours exact sur des sites fort occupés)" + +#@ wp-super-cache +#: wp-cache.php:832 +msgid "Accepted Filenames & Rejected URIs" +msgstr "Noms de fichiers acceptés & URIs rejetées" + +#@ wp-super-cache +#: wp-cache.php:1090 +msgid "Enabled" +msgstr "Activé" + +#@ wp-super-cache +#: wp-cache.php:1090 +msgid "Disabled" +msgstr "Désactivé" + +#@ wp-super-cache +#: wp-cache.php:985 +msgid "Mod Rewrite Rules" +msgstr "Règles du Mode Réécriture" + +#@ wp-super-cache +#: wp-cache.php:991 +msgid "WordPress MU Detected" +msgstr "WordPress MU Détecté" + +#@ wp-super-cache +#: wp-cache.php:991 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "Malheureusement, les règles de réécriture ne peuvent pas être mises à jour automatiquement lorsque WordPress MU s'exécute. Merci d'ouvrir votre fichier .htaccess et d'y ajouter les règles de Mode Réécriture suivantes, au-dessus de toutes les autres règles de ce fichier." + +#@ wp-super-cache +#: wp-cache.php:993 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Les règles du Mode Réécriture ne peuvent pas être mises à jour !" + +#@ wp-super-cache +#: wp-cache.php:994 +#, php-format +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "Vous devez avoir les marqueurs BEGIN et END dans %s.htaccess pour que la mise à jour automatique fonctionne. Ils ressemblent à ceci, et entourent les règles principales du mode réécriture de WordPress :" + +#@ wp-super-cache +#: wp-cache.php:996 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "Rafraichissez cette page après avoir mis à jour votre fichier .htaccess." + +#@ wp-super-cache +#: wp-cache.php:1000 +msgid "Thank you for upgrading." +msgstr "Merci d'avoir effectué la mise à jour." + +#@ wp-super-cache +#: wp-cache.php:1000 +#, php-format +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "Les règles du Mode Réécriture ont changé depuis votre dernère installation de cette extension. Malheureusement, vous devez supprimer les anciennes règles de SuperCache avant que les nouvelles soient mises à jour. Rafraîchissez cette page après avoir édité votre fichier .htaccess. Si vous souhaitez mettre à jour manuellement, modifiez la ligne suivante : %1$s de façon qu'elle ressemble à ceci : %2$s. Les seuls changements sont \"HTTP_COOKIE\", devenant \"HTTP:Cookie\", et \"wordpressuser \", devenant \"wordpress\". C'est une modification de WordPress 2.5, mais il est rétrocompatible avec les anciennes versions, si vous êtes assez courageux pour utiliser celles-ci." + +#@ wp-super-cache +#: wp-cache.php:1004 +msgid "Trailing slash check required." +msgstr "Le slash final est requis." + +#@ wp-super-cache +#: wp-cache.php:1004 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "Il semble que votre blog possède des URLs qui se terminent par un \"/\". Malheureusement, depuis que vous avez installé cette extension, un bug de duplicate content a été découvert, dans lequel les URLs ne se terminant pas par un \"/\" servent le même contenu que celles finissant par le \"/\", et ne redirigent pas vers la bonne URL. Pour le résoudre, vous devez éditer votre fichier .htaccess et ajouter ces deux règles aux deux groupes de règles de Super Cache :" + +#@ wp-super-cache +#: wp-cache.php:1006 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "Vous pouvez aller regarder là où sont les règles et examiner les règles complètes en cliquant sur le lien \"Voir les règles du Mode Réécriture\" ci-dessous." + +#@ wp-super-cache +#: wp-cache.php:1020 +msgid "Mod Rewrite rules updated!" +msgstr "Règles du Mode Réécriture mises à jour !" + +#@ wp-super-cache +#: wp-cache.php:1021 +#, php-format +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "Le fichier %s.htaccess a été mis à jour avec les règles de Mode Réécriture nécessaires. Merci de vérifier qu'elles sont correctes. Elles devraient ressembler à ceci :" + +#@ wp-super-cache +#: wp-cache.php:1023 +msgid "Mod Rewrite rules must be updated!" +msgstr "Les règles du Mode Réécriture doivent être mises à jour !" + +#@ wp-super-cache +#: wp-cache.php:1024 +#, php-format +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "Votre fichier %s.htaccess ne peut pas être écrit par le serveur Web et doivent être mises à jour avec les règles du Mode Réécriture nécessaires. Les nouvelles règles se placent au-dessus des règles standard de WordPress comme montré dans le code suivant :" + +#@ wp-super-cache +#: wp-cache.php:1029 +#, php-format +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "Les règles du Mode Réécriture de WP Super Cache ont été détectées dans votre fichier %s.htaccess.
      Cliquez sur le lien ci-dessous pour voir les lignes ajoutées à ce fichier. Si vous avez mis à jour l'extension, assurez-vous que ces règles correspondent." + +#@ wp-super-cache +#: wp-cache.php:1032 +msgid "A difference between the rules in your .htaccess file and the plugin rewrite rules has been found. This could be simple whitespace differences but you should compare the rules in the file with those below as soon as possible. Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "Une différence entre les règles dans votre fichier .htaccess et celles de réécriture dans l'extension a été découverte. Il peut ne s'agir que d'une différence d'espace blanc, mais vous devriez comparer les règles du fichier avec celles ci-dessous aussi vite que possible. Cliquez sur le bouton ’Actualiser les Règles du Mode Réécriture’ pour mettre à jour les règles." + +#@ wp-super-cache +#: wp-cache.php:1035 +msgid "View Mod_Rewrite Rules" +msgstr "Voir les règles du Mode Réécriture" + +#@ wp-super-cache +#: wp-cache.php:1039 +#: wp-cache.php:2276 +#, php-format +msgid "Rules must be added to %s too:" +msgstr "Les règles. doivent également être ajoutées à %s :" + +#@ wp-super-cache +#: wp-cache.php:1047 +#, php-format +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "Règles d'encodage Gzip dans %s.htaccess créées. " + +#@ wp-super-cache +#: wp-cache.php:1054 +msgid "Fix Configuration" +msgstr "Correction de la Configuration" + +#@ wp-super-cache +#: wp-cache.php:1057 +msgid "Restore Default Configuration" +msgstr "Restaurer la Configuration par Défaut" + +#@ wp-super-cache +#: wp-cache.php:1065 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "La modération des commentaires est activée. Votre commentaire peut prendre un certain temps avant d'apparaître." + +#@ wp-super-cache +#: wp-cache.php:1090 +msgid "Lock Down:" +msgstr "Verrouillage :" + +#@ wp-super-cache +#: wp-cache.php:1091 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "Prépare votre serveur pour un pic de trafic attendu en activant le mode de verrouillage. Lorsqu'il est activé, les nouveaux commentaires sur un article ne rafraîchissent pas les fichiers statiques du cache." + +#@ wp-super-cache +#: wp-cache.php:1092 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "Développeurs : Rendez vos extensions compatibles avec le mode Verrouillage en vérifiant la constante \"WPLOCKDOWN\". Le code suivant vous assurera que votre extension respecte les réglages de WPLOCKDOWN." + +#@ wp-super-cache +#: wp-cache.php:1094 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "Désolé. Mon blog est verrouillé. Les mises à jours vont apparaître rapidement." + +#@ wp-super-cache +#: wp-cache.php:1098 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "WordPress est verrouillé. Les fichiers statiques Super Cache ne seront pas supprimés lorsque de nouveaux commentaires sont effectués." + +#@ wp-super-cache +#: wp-cache.php:1100 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "WordPress n'est pas verrouillé. Les nouveaux commentaires rafraîchiront normalement les fichier statiques Super Cache." + +#@ wp-super-cache +#: wp-cache.php:1106 +msgid "Lock Down" +msgstr "Verrouillage" + +#@ wp-super-cache +#: wp-cache.php:1114 +msgid "Directly Cached Files" +msgstr "Fichiers Directement Mis en Cache" + +#@ wp-super-cache +#: wp-cache.php:1172 +#, php-format +msgid "%s removed!" +msgstr "%s supprimé !" + +#@ wp-super-cache +#: wp-cache.php:1180 +#, php-format +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "Vous devez rendre %s apte à être écrit pour activer cette fonction. Comme il s'agit d'un risque de sécurité, veuillez le remettre en mode lecture seule après que votre page ait été générée." + +#@ wp-super-cache +#: wp-cache.php:1182 +#, php-format +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "%s peut être écrit. Merci de le remettre en mode lecture seule après que votre page ait été générée, dans la mesure où il s'agit d'un risque de sécurité." + +#@ wp-super-cache +#: wp-cache.php:1196 +msgid "Existing direct page" +msgstr "Page directe existante" + +#@ wp-super-cache +#: wp-cache.php:1196 +msgid "Delete cached file" +msgstr "Suppression de fichier mis en cache" + +#@ wp-super-cache +#: wp-cache.php:1201 +msgid "Add direct page:" +msgstr "Ajouter une page directe :" + +#@ wp-super-cache +#: wp-cache.php:1203 +#, php-format +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "Les fichiers directement mis en cache sont des fichiers créés directement à partir de %s, où se trouve votre blog. Cette fonction n'est utile que si vous vous attendez à un niveau de trafic majeur de Digg ou Slashdot sur un article ou une page." + +#@ wp-super-cache +#: wp-cache.php:1205 +#, php-format +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "Par exemple: pour mettre en cache %1$sabout/, vous entrez %1$sabout/ ou /about/. Le fichier de cache sera généré à la prochaine visite d'un utilisateur anonyme sur cette page." + +#@ wp-super-cache +#: wp-cache.php:1206 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "Laissez en blanc la zone de texte pour la supprimer de la liste des pages directes et supprimer le fichier mis en cache." + +#@ wp-super-cache +#: wp-cache.php:1211 +msgid "Update Direct Pages" +msgstr "Mettre à jour les Pages Directes" + +#@ wp-super-cache +#: wp-cache.php:1249 +msgid "Expiry Time & Garbage Collection" +msgstr "Date d'Expiration & Éboueur" + +#@ wp-super-cache +#: wp-cache.php:1251 +msgid "Expire time:" +msgstr "Date d'expiration :" + +#@ wp-super-cache +#: wp-cache.php:1252 +msgid "seconds" +msgstr "secondes" + +#@ wp-super-cache +#: wp-cache.php:1253 +msgid "Garbage Collection" +msgstr "Éboueur" + +#@ wp-super-cache +#: wp-cache.php:1255 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "Réglez le délai d'expiration à 0 secondes pour désactiver l'éboueur." + +#@ wp-super-cache +#: wp-cache.php:1256 +msgid "Change Expiration" +msgstr "Modifier le Délai d'Expiration" + +#@ wp-super-cache +#: wp-cache.php:1300 +msgid "Rejected User Agents" +msgstr "User Agents rejetés" + +#@ wp-super-cache +#: wp-cache.php:1301 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "Chaines de caractères dans l'en-tête HTTP ’User Agents’ qui empêchent WP-Cache de mette en cache les requêtes des robots, spiders et crawlers’. Notez que les fichiers mis en cache par SuperCache sont encore envoyés à ces agents s'ils existent toujours." + +#@ wp-super-cache +#: wp-cache.php:1308 +msgid "Save UA Strings" +msgstr "Sauvegarder les Listes d'User Agents" + +#@ wp-super-cache +#: wp-cache.php:1331 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "Ne pas mettre en cache les types de page suivants. Voir la documentation Marqueurs Conditionnelspour un exposé complet sur chaque type." + +#@ wp-super-cache +#: wp-cache.php:1334 +msgid "Single Posts" +msgstr "Articles Simples" + +#@ wp-super-cache +#: wp-cache.php:1335 +msgid "Pages" +msgstr "Pages" + +#@ wp-super-cache +#: wp-cache.php:1336 +msgid "Front Page" +msgstr "Page de Garde" + +#@ wp-super-cache +#: wp-cache.php:1337 +msgid "Home" +msgstr "Accueil" + +#@ wp-super-cache +#: wp-cache.php:1338 +msgid "Archives" +msgstr "Archives" + +#@ wp-super-cache +#: wp-cache.php:1339 +msgid "Tags" +msgstr "Tags" + +#@ wp-super-cache +#: wp-cache.php:1340 +msgid "Category" +msgstr "Catégories" + +#@ wp-super-cache +#: wp-cache.php:1341 +msgid "Feeds" +msgstr "Flux" + +#@ wp-super-cache +#: wp-cache.php:1342 +msgid "Search Pages" +msgstr "Page de Recherche" + +#@ default +#@ wp-super-cache +#: wp-cache.php:1344 +#: wp-cache.php:1472 +msgid "Save" +msgstr "Sauvegarder" + +#@ wp-super-cache +#: wp-cache.php:1361 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "Ajoutez ici les chaînes (pas un nom de fichier) qui forcent une page à ne pas être mise en cache. Par exemple, si vos URLs incluent l'année et que vous ne voulez pas mettre en cache les articles de l'année dernière, il suffit de préciser l'année, c-à-d ’/2004/’. WP-Cache recherchera si cette chaîne fait partie de l'URI et dans l'affirmative, ne mettra pas cette page en cache." + +#@ wp-super-cache +#: wp-cache.php:1367 +msgid "Save Strings" +msgstr "Sauvegarder les Chaînes" + +#@ wp-super-cache +#: wp-cache.php:1383 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "Ajouter ici les noms des fichiers qui peuvent être mis en cache, même s'ils correspondent à l'une des sous-chaînes rejetées spécifiées ci-dessus." + +#@ wp-super-cache +#: wp-cache.php:1389 +msgid "Save Files" +msgstr "Sauvegarder les Fichiers" + +#@ wp-super-cache +#: wp-cache.php:1434 +msgid "Currently logging to: " +msgstr "Actuellement connecté à :" + +#@ wp-super-cache +#: wp-cache.php:1444 +msgid "Fix problems with the plugin by debugging it here. It can send you debug emails or log them to a file in your cache directory." +msgstr "Résout les problèmes de l'extension en la déboguant ici. Peut vous adresser des mails de débogage ou les enregistrer dans un fichier de votre répertoire de cache." + +#@ wp-super-cache +#: wp-cache.php:1445 +msgid "Logging to a file is easier but faces the problem that clearing the cache will clear the log file." +msgstr "Se connecter à un fichier est plus facile, mais se heurte au problème qu'effacer le cache effacera le fichier des enregistrements." + +#@ wp-super-cache +#: wp-cache.php:1449 +msgid "Debugging" +msgstr "Débogage" + +#@ wp-super-cache +#: wp-cache.php:1450 +msgid "Logging Type" +msgstr "Type d'Enregistrement" + +#@ wp-super-cache +#: wp-cache.php:1450 +msgid "Email" +msgstr "Mail" + +#@ wp-super-cache +#: wp-cache.php:1451 +msgid "file" +msgstr "fichier" + +#@ wp-super-cache +#: wp-cache.php:1452 +msgid "IP Address" +msgstr "Adresse IP" + +#@ wp-super-cache +#: wp-cache.php:1452 +#, php-format +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(N'enregistrer que les requêtes de cette adresse IP. Votre IP est %s)" + +#@ wp-super-cache +#: wp-cache.php:1453 +msgid "Log level" +msgstr "Niveau d'enregistrement" + +#@ wp-super-cache +#: wp-cache.php:1459 +msgid "(1 = less, 5 = more, may cause severe server load.)" +msgstr "(1 = le plus bas, 5 = le plus haut, peut sévèrement surcharger le serveur.)" + +#@ wp-super-cache +#: wp-cache.php:799 +#: wp-cache.php:946 +#: wp-cache.php:1462 +msgid "Advanced" +msgstr "Avancé" + +#@ wp-super-cache +#: wp-cache.php:1462 +#, php-format +msgid "In very rare cases two problems may arise on some blogs:

      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "Dans de très rares cas, deux problèmes peuvent survenir sur certains blogs:
      1. La page de garde peut commencer à se télécharger comme un fichier zip.
      2. Une mauvaise page est parfois mise en cache en tant que page de garde si votre blog utilise une page de garde statique et que la structure des permaliens est /%category%/%postname%/.
      " + +#@ wp-super-cache +#: wp-cache.php:1463 +#, php-format +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "Je suis certain à 99% qu'il ne s''agit pas de bugs de WP Super Cache et qu'ils ne surviennent que très rarement, mais vous pouvez exécuter une vérification simple, une fois toutes les 5 minutes, pour vérifier que votre site est OK, si vous avez peur. Vous recevrez un mail s'il survient un problème." + +#@ wp-super-cache +#: wp-cache.php:1465 +msgid "Check front page every 5 minutes." +msgstr "Vérifier la page de garde toute les 5 minutes." + +#@ wp-super-cache +#: wp-cache.php:1466 +msgid "Front page text" +msgstr "Texte de la page de garde" + +#@ wp-super-cache +#: wp-cache.php:1466 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "Texte à rechercher sur votre page de garde. Si ce texte est manquant, le cache sera effacé. Laissez en blanc pour désactiver." + +#@ wp-super-cache +#: wp-cache.php:1467 +msgid "Clear cache on error." +msgstr "Effacer le cache en cas d'erreur." + +#@ wp-super-cache +#: wp-cache.php:1468 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "Envoi d'un mai à l'administrateur du blog lorsque les contrôles sont effectués. (Utile pour le test)" + +#@ wp-super-cache +#: wp-cache.php:1482 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "Erreur : la compression GZIP est activée, la désactiver si vous souhaitez activer wp-cache." + +#@ wp-super-cache +#: wp-cache.php:1529 +#: wp-cache.php:1691 +msgid "Warning" +msgstr "Attention" + +#@ wp-super-cache +#: wp-cache.php:1529 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "La compression GZIP est activée dans WordPress, wp-cache sera outrepassé jusqu'à ce que vous la désactiviez." + +#@ wp-super-cache +#: wp-cache.php:1587 +#: wp-cache.php:1592 +#: wp-cache.php:1624 +#: wp-cache.php:1629 +#: wp-cache.php:1635 +msgid "Error" +msgstr "Erreur" + +#@ wp-super-cache +#: wp-cache.php:1587 +#, php-format +msgid "Your cache directory ($cache_path) did not exist and couldn’t be created by the web server. Check %s permissions." +msgstr "Votre répertoire de cache ($cache_path) n'existe pas et n'a pas pu être créé par le serveur web. Vérifiez les permissions %s." + +#@ wp-super-cache +#: wp-cache.php:1592 +#, php-format +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "Votre répertoire de cache (%1$s) ou %2$s) doit pouvoir être écrit pour que cette extension fonctionne. Vérifiez doublement." + +#@ wp-super-cache +#: wp-cache.php:1624 +#, php-format +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "Votre fichier de configuration WP-Cache (%s) est obsolète et ne peut pas être écrit par le serveur Web. Veuillez le détruire et rafraîchir cette page." + +#@ wp-super-cache +#: wp-cache.php:1629 +#, php-format +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "Le fichier de configuration est manquant et le répertoire %1$s (%2$s) ne peut pas être écrit par le serveur Web. Vérifiez ses permissions." + +#@ wp-super-cache +#: wp-cache.php:1635 +#, php-format +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "Le fichier d'exemple de configuration de WP-Cache (%s) n'existe pas. Vérifiez votre installation." + +#@ wp-super-cache +#: wp-cache.php:1691 +#, php-format +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "%s/advanced-cache.php n'existe pas ou ne peut pas être mis à jour." + +#@ wp-super-cache +#: wp-cache.php:1692 +msgid "1. If it already exists please delete the file first." +msgstr "1. S'il existe déjà, veuillez supprimer le fichier d'abord." + +#@ wp-super-cache +#: wp-cache.php:1693 +#, php-format +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. Permettez à %1$s d'être écrit en utilisant la commande chmod via votre logiciel ftp ou serveur. (chmod 777 %1$s) et rafraîchissez cette page. Il ne s'agit que d'une mesure temporaire, et vous devrez le repasser en lecture seule ensuite. (Passez de 777 à 755 dans la commande précitée)" + +#@ wp-super-cache +#: wp-cache.php:1694 +#, php-format +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. Rafraîchissez cette page pour mettre à jour %s/advanced-cache.php" + +#@ wp-super-cache +#: wp-cache.php:1695 +#, php-format +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "Si ça ne fonctionnait pas, assurez vous que le fichier %s/advanced-cache.php n'existe pas :" + +#@ wp-super-cache +#: wp-cache.php:1696 +#, php-format +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. Ouvrez le fichier %1$s$wp_cache_file dans un éditeur de texte.
    • 2. Remplacez le texte CACHEHOME par %2$s
    • 3. Sauvegardez le fichier et copiez-le dans %3$s, puis rafraîchissez cette page.
    • " + +#@ wp-super-cache +#: wp-cache.php:1721 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "Erreur : WP_CACHE n'est pas activé dans votre fichier wp-config.php et je ne peux pas le modifier." + +#@ wp-super-cache +#: wp-cache.php:1726 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the FAQ. The WP_CACHE line must be moved up." +msgstr "

      Constante WP_CACHE ajoutée à wp-config.php

      Si vous continuez à voir s'afficher ce message d'avertissement, merci de lire le point 5 de laFAQ. La ligne WP_CACHE doit être déplacée." + +#@ wp-super-cache +#: wp-cache.php:1748 +msgid "Cache Contents" +msgstr "Contenus du Cache" + +#@ wp-super-cache +#: wp-cache.php:1751 +msgid "Object cache in use. No cache listing available." +msgstr "Objet du cache en cours d'utilisation. Pas de liste de cache disponible." + +#@ wp-super-cache +#: wp-cache.php:1775 +#, php-format +msgid "Deleting supercache file: %s
      " +msgstr "Suppression du fichier supercache : %s
      " + +#@ wp-super-cache +#: wp-cache.php:1792 +#, php-format +msgid "Deleting wp-cache file: %s
      " +msgstr "Suppression du fichier wp-cache : %s
      " + +#@ wp-super-cache +#: wp-cache.php:1857 +msgid "Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page." +msgstr "Les statistiques de mise en cache ne sont pas générées automatiquement. Vous devez cliquer sur le lien ci-dessous pour régénérer les statistiques sur cette page." + +#@ default +#: wp-cache.php:1858 +msgid "Regenerate cache stats" +msgstr "Regénérer les statistiques du cache" + +#@ wp-super-cache +#: wp-cache.php:1860 +#, php-format +msgid "Cache stats last generated: %s minutes ago." +msgstr "Dernière statistiques de mise en cache générées il y a %s minutes." + +#@ wp-super-cache +#: wp-cache.php:1866 +msgid "WP-Cache" +msgstr "WP-Cache" + +#@ wp-super-cache +#: wp-cache.php:1867 +#: wp-cache.php:1883 +#, php-format +msgid "%s Cached Pages" +msgstr "%s Pages Mises en Cache" + +#@ wp-super-cache +#: wp-cache.php:1868 +#: wp-cache.php:1888 +#, php-format +msgid "%s Expired Pages" +msgstr "%s Pages Expirées" + +#@ wp-super-cache +#: wp-cache.php:1882 +msgid "WP-Super-Cache" +msgstr "WP-Super-Cache" + +#@ wp-super-cache +#: wp-cache.php:1893 +msgid "Fresh WP-Cached Files" +msgstr "Fichiers Récemment Mis en Cache par WP-Cache" + +#@ wp-super-cache +#: wp-cache.php:1894 +#: wp-cache.php:1910 +#: wp-cache.php:1926 +#: wp-cache.php:1942 +msgid "URI" +msgstr "URI" + +#@ wp-super-cache +#: wp-cache.php:1894 +#: wp-cache.php:1910 +msgid "Key" +msgstr "Clé" + +#@ wp-super-cache +#: wp-cache.php:1894 +#: wp-cache.php:1910 +#: wp-cache.php:1926 +#: wp-cache.php:1942 +msgid "Age" +msgstr "Âge" + +#@ wp-super-cache +#: wp-cache.php:1894 +#: wp-cache.php:1910 +#: wp-cache.php:1926 +#: wp-cache.php:1942 +msgid "Delete" +msgstr "Supprimer" + +#@ wp-super-cache +#: wp-cache.php:1909 +msgid "Stale WP-Cached Files" +msgstr "Fichiers Périmés mis en cache par WP-Cache" + +#@ wp-super-cache +#: wp-cache.php:1925 +msgid "Fresh Super Cached Files" +msgstr "Fichiers Récemment Mis en Cache par Super Cache" + +#@ wp-super-cache +#: wp-cache.php:1941 +msgid "Stale Super Cached Files" +msgstr "Vieux Fichiers Mis en Cache par Super Cache" + +#@ wp-super-cache +#: wp-cache.php:1957 +msgid "Hide file list" +msgstr "Masquer la liste des fichiers" + +#@ wp-super-cache +#: wp-cache.php:1959 +msgid "Too many cached files, no listing possible." +msgstr "Trop de fichiers mis en cache, pas de liste possible." + +#@ wp-super-cache +#: wp-cache.php:1967 +#, php-format +msgid "Garbage Collection
      Last GC was %s minutes ago
      " +msgstr "Éboueur
      Le dernier éboueur est passé il y a %s minutes
      " + +#@ wp-super-cache +#: wp-cache.php:1968 +#, php-format +msgid "Next GC in %s minutes" +msgstr "Le prochain éboueur passera dans %s minutes" + +#@ wp-super-cache +#: wp-cache.php:1971 +#, php-format +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "Les fichiers périmés sont ceux remontant à plus de %s secondes. Ils sont encore utilisés par l'extension et sont détruits périodiquement." + +#@ wp-super-cache +#: wp-cache.php:1982 +msgid "Delete Expired" +msgstr "Supprimer les Fichiers Périmés " + +#@ wp-super-cache +#: wp-cache.php:1988 +#: wp-cache.php:2000 +#: wp-cache.php:2163 +msgid "Delete Cache" +msgstr "Supprimer le Cache" + +#@ wp-super-cache +#: wp-cache.php:2000 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Supprimer les fichiers mis en cache par Super Cache (s'ouvre dans une nouvelle fenêtre)" + +#@ wp-super-cache +#: wp-cache.php:2139 +#, php-format +msgid "%1$s is Digg proof thanks to caching by %2$s" +msgstr "%1$s est compatible avec Digg grâce à la mise en cache par %2$s" + +#@ default +#: wp-cache.php:2172 +#, php-format +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "WP Super Cache doit être configuré. Allez sur La page d’administration pour activer et configurer le plugin." + +#@ default +#: wp-cache.php:2178 +msgid "Settings" +msgstr "Options" + +#@ wp-super-cache +#: wp-cache.php:2188 +#, php-format +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "WP Super Cache est désactivé. Merci de vous rendre sur la page d'administration de l'extension pour activer la mise en cache." + +#@ wp-super-cache +#: wp-cache.php:2207 +#, php-format +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] La page de garde est \\\"gzipée\\\" ! Merci d'effacer le cache !" + +#@ wp-super-cache +#: wp-cache.php:2207 +#, php-format +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "Merci de visiter %s pour effacer le cache, car la page de garde de votre site est en cours de téléchargement !" + +#@ wp-super-cache +#: wp-cache.php:2210 +#, php-format +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] La page de garde est \\\"gzippée\\\" ! Cache effacé !" + +#@ wp-super-cache +#: wp-cache.php:2210 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "Le cache de votre blog a été effacé car la page de garde de votre site est en cours de téléchargement. Merci de visiter %s pour vérifier que le cache a bien été effacé." + +#@ wp-super-cache +#: wp-cache.php:2217 +#, php-format +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] La page de garde n'est pas correcte ! Merci d'effacer le cache !" + +#@ wp-super-cache +#: wp-cache.php:2217 +#, php-format +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "Merci de visiter %1$s pour effacer le cache, car la page de garde de votre site n'est pas correcte et il y manque le texte , \"%2$s\" !" + +#@ wp-super-cache +#: wp-cache.php:2220 +#, php-format +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] La page de garde n'est pas correcte ! Cache effacé !" + +#@ wp-super-cache +#: wp-cache.php:2220 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "Le cache de votre blog a été effacé parce qu'il manque le texte \"%2$s\" à la page de garde de votre site. Merci de visiter %1$s pour vérifier le bon effacement du cache." + +#@ wp-super-cache +#: wp-cache.php:2225 +#, php-format +msgid "[%s] Front page check!" +msgstr "[%s] Vérification de la Page de garde !" + +#@ wp-super-cache +#: wp-cache.php:2225 +#, php-format +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "WP Super Cache a vérifié la page de garde de votre blog. Merci de visiter %s si vous souhaitez désactiver ceci." + +#@ wp-super-cache +#: wp-cache.php:2268 +msgid "Cannot update .htaccess" +msgstr "Impossible de mettre à jour le fichier .htaccess" + +#@ wp-super-cache +#: wp-cache.php:2268 +#, php-format +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "Le fichier %s.htaccess ne peut pas être modifié par le serveur web. Merci de corriger ça en utilisant la commande chmod ou votre client ftp." + +#@ default +#: wp-cache.php:2268 +msgid "Refresh this page when the file permissions have been modified." +msgstr "Rafraîchissez cette page lorsque les autorisations de fichiers auront été modifiées." + +#@ wp-super-cache +#: wp-cache.php:2268 +#, php-format +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "Alternativement, vous pouvez éditer votre fichier %s.htaccess manuellement et y ajouter le code suivant (devant toute règle WordPress) :" + +#@ wp-super-cache +#: wp-cache.php:2272 +#, php-format +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "Pour servir les fichiers HTML statiques, votre serveur doit avoir les règles de mode de réécriture correctes ajoutées à un fichier nommé %s.htaccess" + +#@ wp-super-cache +#: wp-cache.php:2273 +msgid "You can edit the file yourself add the following rules." +msgstr "Vous pouvez éditer vous-même le fichier pour y ajouter les règles suivantes." + +#@ wp-super-cache +#: wp-cache.php:2274 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr "Assurez-vous qu'elles apparaissent avant les règles existantes WordPress. " + +#@ wp-super-cache +#: wp-cache.php:2282 +msgid "Update Mod_Rewrite Rules" +msgstr "Mettre à jour les Règles du Mode Réécriture" + +#@ wp-super-cache +#: wp-cache.php:2378 +#, php-format +msgid "[%1$s] Cache Preload Started" +msgstr "[%1$s] Préchargement du Cache Démarré" + +#@ wp-super-cache +#: wp-cache.php:2380 +#, php-format +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] Rafraîchissement des articles de %2$d à %3$d." + +#@ wp-super-cache +#: wp-cache.php:2391 +#, php-format +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s] %2$d articles rafraîchis" + +#@ wp-super-cache +#: wp-cache.php:2391 +msgid "Refreshed the following posts:" +msgstr "Rafraîchissement des articles suivants :" + +#@ wp-super-cache +#: wp-cache.php:2400 +#, php-format +msgid "Scheduling next preload refresh in %d minutes." +msgstr "Prochain rafraîchissement de préchargement programmé dans %d minutes." + +#@ wp-super-cache +#: wp-cache.php:2410 +#, php-format +msgid "[%s] Cache Preload Completed" +msgstr "[%s] Préchargement du Cache Terminé" + +#@ wp-super-cache +#: wp-cache.php:2410 +msgid "Cleaning up old supercache files." +msgstr "Nettoyage des anciens fichiers supercache." + +#@ default +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "Votre commentaire est en attente de modération." + +#@ wp-super-cache +#: plugins/awaitingmoderation.php:33 +#, php-format +msgid "Awaiting Moderation plugin is %s" +msgstr "L'extension Awaiting Moderation est %s" + +#@ wp-super-cache +#: plugins/awaitingmoderation.php:34 +msgid "(Remove the text \"Your comment is awaiting moderation.\" when someone leaves a moderated comment.) " +msgstr "(Supprime le texte \"Votre commentaire est en attente de modération.\" lorsque quelqu'un laisse un commentaire à modérer.)" + +#@ wp-super-cache +#: plugins/badbehaviour.php:61 +#, php-format +msgid "(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr "(Seule la mise en cache par héritage est prise en charge, la compression est désactivée ; nécessite Bad Behavior dans \"%s/plugins/bad-behavior/\")" + +#@ wp-super-cache +#: plugins/domain-mapping.php:57 +#, php-format +msgid "Domain Mapping support plugin is %s" +msgstr "Le support de l'extension Domain Mapping est %s" + +#@ wp-super-cache +#: plugins/domain-mapping.php:58 +msgid "(support for multiple domains on multisite websites) " +msgstr "(Prise en charge de plusieurs domaines sur les sites Web multisites)" + +#@ wp-super-cache +#: plugins/domain-mapping.php:72 +msgid "Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin." +msgstr "Extension Domain Mapping détectée ! Merci d'aller sur la page Extensions SuperCache et d'y activer l'extension assistant de Domain Mapping." + +#@ wp-super-cache +#: wp-cache.php:210 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use legacy or PHP modes." +msgstr "Il semble que le Mode Réécriture ne soit pas installé. Parfois, cette vérification n'est pas fiable à 100%, surtout si vous n'utilisez pas Apache. Merci de vérifier que le module mode réécriture est chargé. Il est nécessaire pour se servir des fichiers statiques Super Cache. Vous serez toujours en mesure d'utiliser des modes Héritage ou PHP." + +#@ wp-super-cache +#: wp-cache.php:249 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "Le support de mobiles requiert des règles supplémentaires dans votre fichier .htaccess, ou vous pouvez régler l'extension en Mode Héritage. Voici vos options (par ordre de difficulté) :" + +#@ wp-super-cache +#: wp-cache.php:250 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "Règle l'extension en Mode Héritage et active le support pour mobiles." + +#@ wp-super-cache +#: wp-cache.php:251 +#: wp-cache.php:260 +msgid "Scroll down the Advanced Settings page and click the Update Mod_Rewrite Rules button." +msgstr "Défilez jusqu'à la page Paramètres Avancés et cliquez sur le bouton Mise à Jour des Règles du Mode Réécriture." + +#@ wp-super-cache +#: wp-cache.php:274 +msgid "The following Apache modules are missing. The plugin will work in legacy mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "Les modules Apache suivants sont manquants. L'extension fonctionne sans eux en mode héritage. En mode complet SuperCache, vos visiteurs pourront cependant voir les pages endommagées ou du contenu non mis à jour." + +#@ wp-super-cache +#: wp-cache.php:494 +msgid "WP Super Cache Settings" +msgstr "Réglages WP Super Cache" + +#@ wp-super-cache +#: wp-cache.php:505 +msgid "Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced Settings Page by default." +msgstr "Avis : Le mode de mise en cache réécriture ou héritage est activé. Affichage de la page des Paramètres Avancés par défaut." + +#@ wp-super-cache +#: wp-cache.php:533 +#: wp-cache.php:607 +msgid "Caching must be enabled to use this feature" +msgstr "La mise en cache doit être activée pour utiliser cette fonctionnalité" + +#@ wp-super-cache +#: wp-cache.php:563 +msgid "One or more page requests failed:" +msgstr "Un ou plusieurs requête(s) de page a/ont échoué :" + +#@ wp-super-cache +#: wp-cache.php:582 +#: wp-cache.php:583 +#, php-format +msgid "Page %d: %d (%s)" +msgstr "Page% d:% d (% s)" + +#@ wp-super-cache +#: wp-cache.php:599 +msgid "Send non-secure (non https) request for homepage" +msgstr "Envoi d'une requête non-sécurisée ( non-https) pour la page d'accueil" + +#@ wp-super-cache +#: wp-cache.php:681 +msgid "In ’Preload Mode’ regular garbage collection will only clean out old legacy files for known users, not the preloaded supercache files. This is a recommended setting when the cache is preloaded." +msgstr "En \\\"Mode Préchargement\\\", la collecte régulière des poubelles ne nettoiera que les anciens fichiers héritage pour les utilisateurs connus, pas les fichiers préchargés SuperCache. Ce paramètre est recommandé lorsque le cache est préchargé." + +#@ wp-super-cache +#: wp-cache.php:718 +msgid "Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "mode de Préchargement (collecte des poubelles uniquement sur les fichiers cache héritage. Recommandé.)" + +#@ wp-super-cache +#: wp-cache.php:754 +msgid "Preloading of cache disabled. Please disable legacy page caching or talk to your host administrator." +msgstr "Le Préchargement du cache est désactivé. Merci de désactiver la mise en cache des pages par Héritage, ou parlez-en à l'administrateur de votre hébergement." + +#@ wp-super-cache +#: wp-cache.php:769 +#: wp-cache.php:854 +msgid "Caching" +msgstr "Mise en cache" + +#@ wp-super-cache +#: wp-cache.php:773 +msgid "Cache hits to this website for quick access." +msgstr "Mise en cache des connexions à ce site pour un accès rapide." + +#@ wp-super-cache +#: wp-cache.php:773 +#: wp-cache.php:774 +#: wp-cache.php:788 +#: wp-cache.php:791 +#: wp-cache.php:792 +#: wp-cache.php:857 +msgid "Recommended" +msgstr "Recommandé" + +#@ wp-super-cache +#: wp-cache.php:774 +msgid "Use mod_rewrite to serve cache files." +msgstr "Utiliser le Mode Réécriture pour servir les fichiers de cache." + +#@ wp-super-cache +#: wp-cache.php:775 +msgid "Use PHP to serve cache files." +msgstr "Utiliser le mode PHP pour servir les fichiers de cache." + +#@ wp-super-cache +#: wp-cache.php:776 +msgid "Legacy page caching." +msgstr "Mise en cache de page Héritée." + +#@ wp-super-cache +#: wp-cache.php:777 +msgid "Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should go with PHP caching." +msgstr "Le Mode Réécriture est le plus rapide, le Mode PHP est presque aussi rapide et plus facile à faire fonctionner, tandis que le mode Mise en Cache Héritée est plus lent encore, mais plus souple et plus facile à faire fonctionner. Les nouveaux utilisateurs devraient utiliser la mise en cache PHP." + +#@ wp-super-cache +#: wp-cache.php:783 +msgid "Miscellaneous" +msgstr "Divers" + +#@ wp-super-cache +#: wp-cache.php:788 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "Compresse les pages afin qu'elles soient servies plus rapidement aux visiteurs." + +#@ wp-super-cache +#: wp-cache.php:789 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching it on and off clears the cache." +msgstr "La compression est désactivée par défaut parce que certains hébergements ont des problèmes avec des fichiers compressés. Le mettre en marche/arrêt efface le cache." + +#@ wp-super-cache +#: wp-cache.php:791 +msgid "Don’t cache pages for known users." +msgstr "Ne pas mettre en cache les pages pour les utilisateurs connus." + +#@ wp-super-cache +#: wp-cache.php:792 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated." +msgstr "Reconstruction du cache. Sert un fichier SuperCache aux utilisateurs anonymes pendant qu'un nouveau fichier est généré." + +#@ wp-super-cache +#: wp-cache.php:804 +msgid "Clear all cache files when a post or page is published." +msgstr "Effacer tous les fichiers de cache quand un article ou une page est publié." + +#@ wp-super-cache +#: wp-cache.php:806 +msgid "List the newest cached pages on this page." +msgstr "Liste les pages les plus récemment mises en cache sur cette page." + +#@ wp-super-cache +#: wp-cache.php:857 +msgid "Caching On" +msgstr "Mise en cache Activée" + +#@ wp-super-cache +#: wp-cache.php:858 +msgid "Caching Off" +msgstr "Mise en cache désactivée" + +#@ wp-super-cache +#: wp-cache.php:859 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "Note : active la mise en cache PHP, la reconstruction du cache, et le support des mobiles" + +#@ wp-super-cache +#: wp-cache.php:869 +msgid "Notice: Supercache mod_rewrite rules detected. Cached files will be served using those rules. Edit the .htaccess file in the root of your install and remove the SuperCache rules." +msgstr "Avis : règles du mode réécriture SuperCache détectées. Les fichiers mis en cache seront servis à l'aide de ces règles. Editer le fichier .htaccess à la racine de votre installation et supprimer les règles SuperCache." + +#@ wp-super-cache +#: wp-cache.php:883 +#, php-format +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "Il blogue sur %1$s et poste des photos sur %2$s." + +#@ wp-super-cache +#: wp-cache.php:919 +msgid "Cache plugins are PHP scripts that live in a plugins folder inside the wp-super-cache folder. They are loaded when Supercache loads, much sooner than regular WordPress plugins." +msgstr "Les extensions de Cache sont des scripts PHP qui vivent dans un dossier d'extensions à l'intérieur du dossier wp-super-cache. Ils sont chargés lorsque SuperCache se charge, beaucoup plus tôt que les extensions WordPress classiques." + +#@ wp-super-cache +#: wp-cache.php:920 +msgid "This is strictly an advanced feature only and knowledge of both PHP and WordPress actions is required to create them." +msgstr "Il s'agit d'une fonctionnalité avancée seulement, au sens strict : la connaissance à la fois des actions PHP et de celles de WordPress est nécessaire pour la créer." + +#@ wp-super-cache +#: wp-cache.php:930 +msgid "Available Plugins" +msgstr "Extensions Disponibles" + +#@ wp-super-cache +#: wp-cache.php:946 +msgid "Tester & Contents" +msgstr "Testeur & Contenus" + +#@ wp-super-cache +#: wp-cache.php:946 +msgid "Preload" +msgstr "Préchargement" + +#@ wp-super-cache +#: wp-cache.php:946 +msgid "Plugins" +msgstr "Extensions" + +#@ wp-super-cache +#: wp-cache.php:946 +msgid "Debug" +msgstr "Débogage" + +#@ wp-super-cache +#: wp-cache.php:973 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "Avis : Les contrôles des règles du mode réécriture de WP Super Cache est désactivé, à moins qu'il ne s'exécute sur le site principal de ce réseau." + +#@ wp-super-cache +#: wp-cache.php:975 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on on the main site of this network." +msgstr "Avis : les contrôles des règles du mode réécriture de WP Super Cache sont désactivés, à moins qu'ils ne s'exécutent sur le site principal de ce réseau." + +#@ wp-super-cache +#: wp-cache.php:1253 +msgid "If the expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above." +msgstr "Si le délai d'expiration est supérieur à 1800 secondes (une demi-heure), la collecte des ordures sera effectuée toutes les 10 minutes ; sinon, elle s'effectuera 10 secondes après le délai d'expiration ci-dessus." + +#@ wp-super-cache +#: wp-cache.php:1254 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 300 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. If you are using legacy caching aim to have less than 500 cached files if possible. You can have many times more cached files when using mod_rewrite or PHP caching." +msgstr "La vérification et la suppression des fichiers périmés coûte cher, mais il coûte également cher de les laisser là. Sur un site très occupé, vous devriez définir le délai d'expiration à 300 secondes. Essayez avec différentes valeurs, et visitez cette page pour voir combien de fichiers expirés demeurent à différents moments de la journée. Si vous utilisez la mise en cache Héritée, ayez pour objectif d'avoir moins de 500 fichiers mis en cache, si possible. Vous pouvez avoir infiniment plus de fichiers mis en cache en utilisant les modes de mise en cache Réécriture ou PHP." + +#@ wp-super-cache +#: wp-cache.php:1719 +msgid "

      WP_CACHE constant set to false

      The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

      define('WP_CACHE', true);

      " +msgstr "

      Constante WP_CACHE réglée sur \\\"false\\\"

      La constante WP_CACHE est utilisée par WordPress pour charger le code qui fournit des pages mises en cache. Malheureusement, elle est réglée sur \\\"false\\\". Merci de modifier votre fichier wp-config.php, et d'y ajouter ou modifier la ligne suivante, au-dessus de la commande finale require_once :

      define('WP_CACHE', true);

      " + +#@ wp-super-cache +#: wp-cache.php:1722 +#, php-format +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "Éditez %s et ajoutez-y la ligne suivante:
      define('WP_CACHE', true);
      , sinon WP-Cache ne sera pas exécuté par le noyau WordPress." + +#@ wp-super-cache +#: wp-cache.php:1961 +msgid "List all cached files" +msgstr "Liste de tous les fichiers mis en cache" + +#@ wp-super-cache +#: wp-cache.php:2451 +#, php-format +msgid "[%s] Preload may have stalled." +msgstr "[%s] Le préchargement peut avoir décroché." + +#@ wp-super-cache +#: wp-cache.php:2451 +#, php-format +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"Le préchargement a été redémarré.\n" +"%s" + diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-it_IT.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-it_IT.mo new file mode 100644 index 0000000000000000000000000000000000000000..5fbdc93fbc5d34abdd004d3e7c1f2fe681591068 GIT binary patch literal 66758 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\n" +"Language-Team: Gianni Diurno | gidibao.net \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Italian\n" +"X-Poedit-Country: ITALY\n" +"X-Poedit-KeywordsList: __;_e\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-SearchPath-0: .\n" + +#: ossdl-cdn.php:105 +msgid "Your website probably uses lots of static files. Image, Javascript and CSS files are usually static files that could just as easily be served from another site or CDN. Therefore this plugin replaces any links in the wp-content and wp-includes directories (except for PHP files) on your site with the URL you provide below. That way you can either copy all the static content to a dedicated host or mirror the files to a CDN by origin pull." +msgstr "Probabilmente il tuo sito fa uso di molti file statici. I file immagine, Javascript e CSS sono generalmente dei file statici che potrebbero essere facilmente serviti da un altro sito o CDN. Quindi questo plugin sostituirà ogni link presente nelle cartelle wp-content e wp-includes (ad eccezione dei file PHP) del tuo sito con l'URL fornito qui sotto. In quel modo potrai copiare tutti i contenuti statici presso un host dedicato o fare un mirror dei file verso un CDN via origin pull." + +#: ossdl-cdn.php:106 +#, php-format +msgid "WARNING: Test some static urls e.g., %s to ensure your CDN service is fully working before saving changes." +msgstr "ATTENZIONE: Prova alcuni url statici ad esempio, %s prima di salvare le modifiche giusto per assicurarti che il tuo servizio CDN funzioni correttamente." + +#: ossdl-cdn.php:107 +msgid "You can define different CDN URLs for each site on a multsite network." +msgstr "Puoi definire dei differenti URL CDN per ogni sito di un network multi-sito." + +#: ossdl-cdn.php:134 +msgid "Save Changes" +msgstr "Salva le modifiche" + +#: ossdl-cdn.php:136 +msgid "CDN functionality provided by OSSDL CDN Off Linker by Mark Kubacki" +msgstr "La funzionalità CDN é fornita da OSSDL CDN Off Linker di Mark Kubacki" + +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "Il tuo commento é in attesa di moderazione." + +#: plugins/awaitingmoderation.php:32 +msgid "Awaiting Moderation" +msgstr "In attesa di moderazione" + +#: plugins/awaitingmoderation.php:34 +#: plugins/badbehaviour.php:63 +#: plugins/domain-mapping.php:60 +#: wp-cache.php:1164 +msgid "Enabled" +msgstr "Attivato" + +#: plugins/awaitingmoderation.php:35 +#: plugins/badbehaviour.php:64 +#: plugins/domain-mapping.php:61 +#: wp-cache.php:1164 +msgid "Disabled" +msgstr "Disattivato" + +#: plugins/awaitingmoderation.php:36 +msgid "Enables or disables plugin to Remove the text \"Your comment is awaiting moderation.\" when someone leaves a moderated comment." +msgstr "Attiva/disattiva il plugin per rimuove il testo \"Il tuo commento é in attesa di essere moderato.\" quando viene lasciato un commento da moderare." + +#: plugins/awaitingmoderation.php:40 +#: plugins/badbehaviour.php:69 +#: plugins/domain-mapping.php:66 +#: plugins/searchengine.php:69 +#: wp-cache.php:1523 +msgid "enabled" +msgstr "attivato" + +#: plugins/awaitingmoderation.php:42 +#: plugins/badbehaviour.php:71 +#: plugins/domain-mapping.php:68 +#: plugins/searchengine.php:67 +msgid "disabled" +msgstr "disattivato" + +#: plugins/awaitingmoderation.php:43 +#, php-format +msgid "Awaiting Moderation is now %s" +msgstr "Il plugin Awaiting Moderation é %s" + +#: plugins/awaitingmoderation.php:45 +#: plugins/badbehaviour.php:74 +#: plugins/domain-mapping.php:71 +msgid "Update" +msgstr "Aggiorna" + +#: plugins/badbehaviour.php:45 +msgid "Bad Behaviour not found. Please check your install." +msgstr "Non é stato trovato Bad Behaviour. Effettua una verifica." + +#: plugins/badbehaviour.php:61 +msgid "Bad Behavior" +msgstr "Bad Behavior" + +#: plugins/badbehaviour.php:66 +#, php-format +msgid "(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr "(utilizzare la sola cache parziale, non attivare la compressione ed installare Bad Behavior sotto \"%s/plugins/bad-behavior/\") " + +#: plugins/badbehaviour.php:72 +#, php-format +msgid "Bad Behavior support is now %s" +msgstr "Il supporto Bad Behaviour é %s." + +#: plugins/badbehaviour.php:81 +#: wp-cache.php:1254 +#: wp-cache.php:1256 +msgid "Warning!" +msgstr "Attenzione!" + +#: plugins/domain-mapping.php:58 +msgid "Domain Mapping" +msgstr "Informazioni autore" + +#: plugins/domain-mapping.php:63 +msgid "Provides support for Domain Mapping plugin to map multiple domains to a blog." +msgstr "Provvede il supporto per il plugin Domain Mapping per la mappatura dei domini multipli di un blog." + +#: plugins/domain-mapping.php:69 +#, php-format +msgid "Domain Mapping support is now %s" +msgstr "Il supporto Domain Mapping é %s" + +#: plugins/domain-mapping.php:83 +msgid "Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin." +msgstr "Il plugin Domain Mapping é stato rilevato! Vai alla pagina dei plugin di Supercache ed attiva il plugin di supporto a domain mapping." + +#: plugins/searchengine.php:61 +#: plugins/searchengine.php:76 +#: wp-cache.php:1177 +msgid "Disable" +msgstr "Disattiva" + +#: plugins/searchengine.php:71 +#, php-format +msgid "No Adverts for Friends plugin is %s." +msgstr "Il plugin No Adverts for Friends é %s." + +#: plugins/searchengine.php:72 +msgid "(requires friendsadverts.php too) " +msgstr "(é necessario anche friendsadverts.php) " + +#: plugins/searchengine.php:74 +#: wp-cache.php:1177 +msgid "Enable" +msgstr "Attiva" + +#: wp-cache.php:91 +#, php-format +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "Crea %s /wp-cache-config.php da wp-super-cache/wp-cache-config-sample.php" + +#: wp-cache.php:146 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "Attenzione! Il PHP Safe Mode é attivo!" + +#: wp-cache.php:147 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "Attivando questo plugin potresti andare incontro ad alcuni problemi poiché il SAFE MODE é attivo." + +#: wp-cache.php:151 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "Prima che sia possibile la lettura e la scrittura dei file, il tuo server richiede che venga effettuata una verifica circa il proprietario degli script PHP." + +#: wp-cache.php:152 +#, php-format +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "L'amministratore del sito ha la possibilità di cambiare il proprietario del gruppo che fa capo agli script di questo plugin facendo sì che esso coincida con l'utente web del server. Anche il proprietario del gruppo per la cartella %s/cache/ può essere cambiato. Per ulteriori informazioni, consulta la pagina del manuale safe mode." + +#: wp-cache.php:154 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "L'amministratore del sito ha la possibilità di disattivare questa funzione. Per ulteriori informazioni, consulta la pagina del manuale safe mode. La disattivazione non potrà avvenire via file .htaccess. L'operazione dovrà essere effettuata nel file di configurazione php.ini." + +#: wp-cache.php:160 +msgid "Permlink Structure Error" +msgstr "Errore struttura permalink" + +#: wp-cache.php:161 +msgid "A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks." +msgstr "Affinché il plugin possa funzionare correttamente sarà necessario un url personalizzato oppure la struttura del permalink. Vai alla pagina per le opzioni dei Permalink per configurare i tuoi permalink." + +#: wp-cache.php:173 +#, php-format +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "Attenzione! Il tuo hostname \"%s\" viene convertito in %s" + +#: wp-cache.php:174 +#, php-format +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "Il tuo server ritiene che il tuo hostname venga convertito in %s. Alcuni servizi quali ad esempio la garbage collection fornita da questo plugin e la pubblicazione programmata dei post di WordPress potrebbero non funzionare correttamente." + +#: wp-cache.php:175 +#: wp-cache.php:189 +#, php-format +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "Leggi il punto numero 16 nella sezione Troubleshooting del file readme.txt" + +#: wp-cache.php:188 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "WordPress non é in grado di trovare il file wp-cron.php. Questo script é necessario script per un corretto funzionamento della garbage collection fornita da questo plugin, per la pubblicazione programmata dei post di WordPress così come per tutte le altre attività di rilevante importanza." + +#: wp-cache.php:203 +msgid "Cannot continue... fix previous problems and retry." +msgstr "Non é possibile proseguire l'operazione. Correggi i problemi precedenti prima di riprovare." + +#: wp-cache.php:212 +msgid "Zlib Output Compression Enabled!" +msgstr "Compressione Zlib (output) attivata!" + +#: wp-cache.php:213 +msgid "PHP is compressing the data sent to the visitors of your site. Disabling this is recommended as the plugin caches the compressed output once instead of compressing the same page over and over again. Also see #21 in the Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "Il PHP sta comprimendo i dati inviati ai visitatori del tuo sito. E' preferibile disattivare questa opzione qualora il plugin comprimesse la cache per l'output al posto di comprimere più volte la stessa pagina.. Consultare la n.ro 21 della sezione Troubleshooting. Leggi questa pagina per le istruzioni sul come modificare il tuo php.ini." + +#: wp-cache.php:217 +msgid "Mod rewrite may not be installed!" +msgstr "Il Mod rewrite potrebbe non essere stato installato!" + +#: wp-cache.php:218 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use legacy or PHP modes." +msgstr "Pare che il mod_rewrite non sia installato. Considera che questa affermazione potrebbe non essere attendibile al 100%, specialmente qualora non venisse utilizzato Apache. Verifica che sia stato caricato il modulo mod_rewrite. Il modulo sarà necessario per potere servire i file statici di Super Cache. Avrai comunque ancora la possibilità di poter utilizzare la modalità parziale o PHP." + +#: wp-cache.php:223 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "Modalita di sola lettura. La configurazione non può essere modificata." + +#: wp-cache.php:224 +#, php-format +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "Il file di configurazione di WP Super Cache é %s/wp-cache-config.php e non può essere modificato. Affinché possa essere modicato, il file in questione deve essere scrivibile." + +#: wp-cache.php:225 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "Un modo semplice per compiere l'operazione é quello di modificare temporaneamente i permessi facendo uso del comando CHMOD oppure via il tuo client ftp. Assicurati che sia scrivibile affinché il tutto possa funzionare propriamente." + +#: wp-cache.php:226 +msgid "Writeable:" +msgstr "Scrivibile:" + +#: wp-cache.php:227 +msgid "Readonly:" +msgstr "Sola lettura:" + +#: wp-cache.php:239 +#, php-format +msgid "Warning! %s is writeable!" +msgstr "Attenzione! %s é scrivibile!" + +#: wp-cache.php:240 +#, php-format +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "E' necessario modificare i permessi per %s per renderli maggiormente restrittivi. Utilizza per la correzione il tuo client ftp oppure il seguente comando:" + +#: wp-cache.php:248 +msgid "Mobile rewrite rules detected" +msgstr "Sono state rilevate le regole Mobile rewrite" + +#: wp-cache.php:249 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"2.0\\ MMP|240x320\" and delete those." +msgstr "Per una migliore prestazione attivare il \"Supporto mobile device\" oppure cancellare le regole mobile rewrite presenti nel tuo file .htaccess. Cerca le 2 linee contenenti il testo \"2.0\\ MMP|240x320\" e cancellale." + +#: wp-cache.php:249 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "Questa operazione non avrà alcun effetto per gli utenti comuni mentre gli utenti via mobile non visualizzeranno le pagine nella cache." + +#: wp-cache.php:255 +#: wp-cache.php:266 +msgid "Rewrite rules must be updated" +msgstr "E' necessario aggiornare le regole Mod Rewrite!" + +#: wp-cache.php:256 +#: wp-cache.php:267 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "Le regole di scrittura richieste da questo plugin sono state modificate oppure non sono presenti. " + +#: wp-cache.php:257 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "Il supporto mobile necessita della aggiunta di alcune regole extra nel tuo file .htaccess oppure che tu imposti il plugin nella modalità parziale. Qui puoi trovare le opzioni disponibili (in ordine di difficoltà):" + +#: wp-cache.php:258 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "Imposta il plugin nella modalità parziale ed attiva il supporto mobile." + +#: wp-cache.php:259 +#: wp-cache.php:268 +msgid "Scroll down the Advanced Settings page and click the Update Mod_Rewrite Rules button." +msgstr "Vai al fondo della pagina delle impostazioni avanzate e clicca il pulsante Aggiorna le regole Mod_Rewrite." + +#: wp-cache.php:260 +#, php-format +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "Cancella le regole mod_rewrite del plugin in %s.htaccess presenti tra # BEGIN WPSuperCache e # END WPSuperCache quindi, permetti al plugin di rigenerarle al momento della ricarica di questa pagina." + +#: wp-cache.php:261 +#, php-format +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ add these lines: (do it twice, once for each section)" +msgstr "Aggiungi tu stesso le regole. Modifica il file %s.htaccess e trova il blocco del codice contenuto tra le linee # BEGIN WPSuperCache e # END WPSuperCache. Troverai due sezioni particolarmente simili tra loro. Proprio sotto la linea %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ aggiungi queste linee: (per due volte, una per ogni sezione)" + +#: wp-cache.php:274 +msgid "Required to serve compressed supercache files properly." +msgstr "E' necessario fornire correttamente i file compressi supercache." + +#: wp-cache.php:274 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "E' necessario impostare le informazioni cache per le pagine supercache. In assenza di questo modulo, gli utenti che utilizzano IE7 visualizzeranno le pagine non aggiornate." + +#: wp-cache.php:274 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "Imposta la data di scadenza per le pagine supercached. Senza questo modulo, i visitatori potrebbero non visualizzare le nuove pagine sebbene venga ricaricata la pagina oppure inviare dei commenti." + +#: wp-cache.php:281 +msgid "Missing Apache Modules" +msgstr "Moduli Apache mancanti" + +#: wp-cache.php:282 +msgid "The following Apache modules are missing. The plugin will work in legacy mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "Non sono presenti i seguenti moduli Apache. Senza di essi, il plugin funzionerà in modalità parziale. Qualora facessi uso della modalita Supercache attiva, i tuoi visitatori potrebbero visualizzare delle pagine non aggiornate e/o corrotte." + +#: wp-cache.php:433 +msgid "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file." +msgstr "Attenzione! hai provato ad attivare la compressione mentre la zlib.output_compression é attiva. Vai alla n.ro 21 della sezione Troubleshooting presente nel file readme." + +#: wp-cache.php:524 +msgid "WP Super Cache Settings" +msgstr "Impostazioni WP Super Cache" + +#: wp-cache.php:535 +msgid "Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced Settings Page by default." +msgstr "Avviso: Mod_rewrite o cache parziale attivi. Le impostazioni avanzate sono la pagina di avvio predefinita." + +#: wp-cache.php:546 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "La configurazione del file é stata modificata: alcuni valori potrebbero essere errati. Ricarica nuovamente la pagina dal menu delle \"Impostazioni\" per ripristinare." + +#: wp-cache.php:566 +#: wp-cache.php:640 +msgid "Caching must be enabled to use this feature" +msgstr "Attiva la cache per utilizzare questa funzione" + +#: wp-cache.php:568 +msgid "Cache Tester" +msgstr "Verifica cache" + +#: wp-cache.php:569 +msgid "Test your cached website by clicking the test button below." +msgstr "Verifica la cache del tuo sito cliccando sul pulsante qui sotto." + +#: wp-cache.php:576 +#, php-format +msgid "Fetching %s to prime cache: " +msgstr "Analisi %s cache di base: " + +#: wp-cache.php:578 +#: wp-cache.php:585 +#: wp-cache.php:592 +msgid "OK" +msgstr "OK" + +#: wp-cache.php:583 +#, php-format +msgid "Fetching first copy of %s: " +msgstr "Analisi prima copia di %s: " + +#: wp-cache.php:590 +#, php-format +msgid "Fetching second copy of %s: " +msgstr "Analisi seconda copia di %s: " + +#: wp-cache.php:596 +msgid "One or more page requests failed:" +msgstr "La richiesta di una o più pagine é fallita:" + +#: wp-cache.php:615 +#: wp-cache.php:616 +#, php-format +msgid "Page %d: %d (%s)" +msgstr "Pagina %d: %d (%s)" + +#: wp-cache.php:622 +#, php-format +msgid "Page 1: %s" +msgstr "Pagina 1: %s" + +#: wp-cache.php:623 +#, php-format +msgid "Page 2: %s" +msgstr "Pagina 2: %s" + +#: wp-cache.php:624 +msgid "The timestamps on both pages match!" +msgstr "La timestamp (data) delle due pagine coincide!" + +#: wp-cache.php:626 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "Le pagine non coincidono! La timestamp differisce oppure non é presente!" + +#: wp-cache.php:632 +msgid "Send non-secure (non https) request for homepage" +msgstr "Invia una richiesta non crittografata (non https) per la homepage" + +#: wp-cache.php:633 +msgid "Test Cache" +msgstr "Test cache" + +#: wp-cache.php:658 +#: wp-cache.php:789 +msgid "Cancel Cache Preload" +msgstr "Annulla pre-carica cache" + +#: wp-cache.php:666 +#: wp-cache.php:677 +msgid "Scheduled preloading of cache cancelled." +msgstr "Il pre-caricamento programmato della cache é stato annullato." + +#: wp-cache.php:703 +#: wp-cache.php:787 +msgid "Preload Cache Now" +msgstr "Pre-carica la cache adesso" + +#: wp-cache.php:707 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "Pre-caricamento programmato della cache tra 10 secondi." + +#: wp-cache.php:712 +#, php-format +msgid "Scheduled preloading of cache in %d minutes" +msgstr "Pre-caricamento programmato della cache tra %d minuti" + +#: wp-cache.php:716 +msgid "This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now." +msgstr "Questa operazione effettuerà la cache di ogni articolo e pagina pubblicati nel tuo sito. Verranno quindi creati dei file statici supercache in modo tale che i visitatori sconosciuti (bot compresi) visualizzeranno la pagina nella cache. Tutto questo potrebbe esserti utile per quanto concerne il ranking di Google nel caso in cui essi utilizzasero la velocità come metro di valutazione per il giudizio dei siti web." + +#: wp-cache.php:717 +msgid "Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "Il pre-caricamento crea comunque un gran numero di file. La cache verrà effettuata a partire dell'articolo più recente sino a giungere a quello più datato quindi, prendi in considerazione il fatto di effettuare la cache del più recente qualora avessi molti articoli (+ 10.000). Tutto ciò é particolarmente importante per gli hosting condivisi." + +#: wp-cache.php:718 +msgid "In ’Preload Mode’ regular garbage collection will only clean out old legacy files for known users, not the preloaded supercache files. This is a recommended setting when the cache is preloaded." +msgstr "Nella ’Modalità precarica’ la garbage collection verrà svuotata per i soli utenti conosciuti, non per i file supercache precaricati. Preferisci questa configurazione se la cache fosse pre-caricata." + +#: wp-cache.php:722 +#, php-format +msgid "Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)" +msgstr "Ricarica i file della cache pre-caricata ogni %s minuti. (0 per disattivare, minimo %d minuti.)" + +#: wp-cache.php:735 +msgid "all" +msgstr "tutto" + +#: wp-cache.php:748 +#, php-format +msgid "Preload %s posts." +msgstr "Pre-carica %s articoli." + +#: wp-cache.php:755 +msgid "Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "Modalità pre-carica (garbage collection solo per file cache parziale. Raccomandato.)" + +#: wp-cache.php:758 +msgid "Send me status emails when files are refreshed." +msgstr "Inviami una email di notifica alla ricarica dei file." + +#: wp-cache.php:763 +msgid "Many emails, 2 emails per 100 posts." +msgstr "Numerose email, 2 email ogni 100 articoli." + +#: wp-cache.php:766 +msgid "Medium, 1 email per 100 posts." +msgstr "Medio, 1 email ogni 100 articoli." + +#: wp-cache.php:769 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "Poche email, 1 all'avvio ed 1 al termine della operazione di precarica per tutti gli articoli." + +#: wp-cache.php:773 +#, php-format +msgid "Refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Ricarica della cache tra %d ore %d minuti e %d secondi." + +#: wp-cache.php:774 +#, php-format +msgid "Full refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Ricarica completa della cache tra %d ore %d minuti e %d secondi." + +#: wp-cache.php:780 +#, php-format +msgid "Currently caching from post %d to %d." +msgstr "Cache in corso dal post %d a %d." + +#: wp-cache.php:784 +#, php-format +msgid "Page last cached: %s" +msgstr "Ultima cache pagina: %s" + +#: wp-cache.php:787 +msgid "Update Settings" +msgstr "Aggiorna le impostazioni" + +#: wp-cache.php:795 +msgid "Preloading of cache disabled. Please disable legacy page caching or talk to your host administrator." +msgstr "La pre-carica della cache non é attiva. Disattiva la cache parziale oppure conferisci con l'amministratore del tuo host." + +#: wp-cache.php:810 +#: wp-cache.php:904 +msgid "Caching" +msgstr "Cache" + +#: wp-cache.php:814 +msgid "Cache hits to this website for quick access." +msgstr "Cache hit di questo sito per accesso rapido." + +#: wp-cache.php:814 +#: wp-cache.php:815 +#: wp-cache.php:832 +#: wp-cache.php:837 +#: wp-cache.php:840 +#: wp-cache.php:841 +#: wp-cache.php:907 +msgid "Recommended" +msgstr "Raccomandato" + +#: wp-cache.php:815 +msgid "Use mod_rewrite to serve cache files." +msgstr "Utilizza mod_rewrite per servire i file in cache." + +#: wp-cache.php:816 +msgid "Use PHP to serve cache files." +msgstr "Utilizza PHP per servire i file in cache." + +#: wp-cache.php:817 +msgid "Legacy page caching." +msgstr "Pagina cache parziale." + +#: wp-cache.php:818 +msgid "Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should use PHP caching." +msgstr "Il Mod_rewrite é il più veloce, il PHP é piuttosto veloce e semplice da fare funzionare mentre, nonstante la cache parziale sia la più lenta, essa é da ritenersi la più flessibile e semplice da fare funzionare. I nuovi utenti dovrebbero utilizzare la cache PHP." + +#: wp-cache.php:824 +msgid "Miscellaneous" +msgstr "Varie" + +#: wp-cache.php:830 +msgid "Warning! Compression is disabled as gzencode() function not found." +msgstr "Attenzione! La compressione non é attiva - non trovata la funzione gzencode()." + +#: wp-cache.php:832 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "Compressione delle pagine in modo che esse siano servite più rapidamente ai visitatori." + +#: wp-cache.php:833 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching it on and off clears the cache." +msgstr "La compressione é disattivata come predefinita poiché alcuni host riscontrano dei problemi con i file compressi. La commutazione attivo/non attivo svuoterà la cache." + +#: wp-cache.php:837 +msgid "304 Not Modified browser caching. Indicate when a page has not been modified since last requested." +msgstr "304 Not Modified browser caching. Indica quando una pagina non é stata modificata dalla sua ultima richiesta." + +#: wp-cache.php:838 +msgid "304 support is disabled by default because in the past GoDaddy had problems with some of the headers used." +msgstr "Il supporto 304 non é attivo (predefinita) poiché GoDaddy ha riscontrato dei problemi con alcuni header utilizzati." + +#: wp-cache.php:840 +msgid "Don’t cache pages for known users." +msgstr "Non servire pagine cache per gli utenti conosciuti." + +#: wp-cache.php:841 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated." +msgstr "Rigenerazione cache. Serve un file supercache agli utenti anonimi quando un nuovo file é stato generato." + +#: wp-cache.php:842 +msgid "Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)" +msgstr "Fai sapere a tutti che il tuo sito é a prova di Digg! (inserisce un messaggio nel footer del tuo blog)" + +#: wp-cache.php:848 +#: wp-cache.php:1016 +#: wp-cache.php:1536 +msgid "Advanced" +msgstr "Avanzato" + +#: wp-cache.php:852 +msgid "Mobile device support." +msgstr "Supporto " + +#: wp-cache.php:853 +msgid "Clear all cache files when a post or page is published." +msgstr "Svuota tutti i file di cache quando viene pubblicato un articolo o una pagina." + +#: wp-cache.php:854 +msgid "Only refresh current page when comments made." +msgstr "Ricarica la sola pagina in uso quando vengono effettuati dei commenti." + +#: wp-cache.php:855 +msgid "List the newest cached pages on this page." +msgstr "Elenca su questa pagina la lista delle nuove pagine cache." + +#: wp-cache.php:857 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "Blocco grezzo del file. Sebbene questa funzione non sia particolarmente necessaria potrebbe tornarti utile qualora il tuo server non avesse una potenza sufficiente. Attenzione! In alcuni casi molto rari potrebbe bloccare il tuo server!" + +#: wp-cache.php:859 +msgid "Late init. Display cached files after WordPress has loaded. Most useful in legacy mode." +msgstr "Late init. Mostra i file in cache dopo che WordPress é stato caricato. Utile nella modalità legacy." + +#: wp-cache.php:861 +msgid "Use object cache to store cached files." +msgstr "Utilizza l'oggetto cache per conservare i file in cache." + +#: wp-cache.php:861 +msgid "(Experimental)" +msgstr "(Sperimentale)" + +#: wp-cache.php:868 +msgid "Note:" +msgstr "Nota:" + +#: wp-cache.php:870 +#, php-format +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "Qualora desiderassi disinstallare questo plugin, assicurati che la cartella %s sia scrivibile in modo tale che i file advanced-cache.php e cache-config.php possano venire cancellati automaticamente. (l'accertarsi che anche questi due file siano scrivibile é probabilmente una buona idea!)" + +#: wp-cache.php:871 +#, php-format +msgid "Please see the readme.txt for instructions on uninstalling this script. Look for the heading, \"How to uninstall WP Super Cache\"." +msgstr "Leggi il readme.txt per le istruzioni su come disinstallare questo script. Vedi anche, \"Come disinstallare WP Super Cache\"." + +#: wp-cache.php:872 +#, php-format +msgid "Need help? Check the Super Cache readme file. It includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already have been answered." +msgstr "Serve aiuto? Leggi il file Super Cache readme. In esso sono contenute le info sulla installazione, le FAQ e numerosi suggerimenti. Puoi anche utilizzare il forum di supporto: qui potresti trovare una risposta alle tue domande." + +#: wp-cache.php:875 +#: wp-cache.php:922 +msgid "Update Status" +msgstr "Aggiorna lo stato" + +#: wp-cache.php:882 +msgid "Accepted Filenames & Rejected URIs" +msgstr "Nomi file consentiti e URL respinti" + +#: wp-cache.php:907 +msgid "Caching On" +msgstr "Cache attiva" + +#: wp-cache.php:908 +msgid "Caching Off" +msgstr "Cache non attiva" + +#: wp-cache.php:909 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "Nota: attiva cache PHP, rigenerazione cache e supporto mobile" + +#: wp-cache.php:919 +msgid "Notice: PHP caching enabled but Supercache mod_rewrite rules detected. Cached files will be served using those rules. If your site is working ok please ignore this message or you can edit the .htaccess file in the root of your install and remove the SuperCache rules." +msgstr "Avviso: la cache PHP é attiva ma sono state rilevate delle regole Supercache mod_rewrite. I file della cache saranno serviti utilizzando queste regole. Ignora questo messaggio qualora il tuo sito funzionasse correttamente oppure modifica il file .htaccess file allocato nella root della tua installazione e rimuovi le regole di SuperCache." + +#: wp-cache.php:924 +msgid "Recommended Links and Plugins" +msgstr "Link e plugin consigliati" + +#: wp-cache.php:925 +msgid "Caching is only one part of making a website faster. Here are some other plugins that will help:" +msgstr "La cache é solamente uno tra i modi per potere rendere un sito più veloce. Ecco alcuni plugin plugin utili:" + +#: wp-cache.php:926 +#, php-format +msgid "WP Minify reduces the number of files served by your web server by joining Javascript and CSS files together. Alternatively you can use WPSCMin, a Supercache plugin that minifies cached pages. It does not however join JS/CSS files together." +msgstr "WP Minify riduce il numero dei file serviti dal tuo web server unendo insieme i file Javascript e CSS. Come alternativa, potresti utilizzare WPSCMin, un plugin Supercache che rimpicciolisce le pagine cache (non unisce insieme i file JS/CSS)." + +#: wp-cache.php:927 +#, php-format +msgid "Yahoo! Yslow is an extension for the Firefox add-on Firebug. It analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. Also try the performance tools online at GTMetrix." +msgstr "Yahoo! Yslow é una estensione per Firebug (add-on per Firefox). Analizza le pagine web e suggerisce come migliorare le loro prestazioni basandosi su di una serie di regole per il miglioramento delle pagine web. Potresti anche provare il tool online a nome GTMetrix." + +#: wp-cache.php:928 +#, php-format +msgid "Use Google Libraries allows you to load some commonly used Javascript libraries from Google webservers. Ironically it may reduce your Yslow score." +msgstr "L'utilizzo delle Google Libraries ti permette di caricare le librerie Javascript di comune uso direttamente dai server di Google. Potrebbe ironicamente ridurre il tuo punteggio Yslow." + +#: wp-cache.php:929 +#, php-format +msgid "Advanced users only: Speed up your site with Caching and cache-control explains how to make your site more cacheable with .htaccess rules." +msgstr "Solo per utenti esperti: Speed up your site with Caching and cache-control spiega come rendere il tuo sito più cacheable grazie alle regole .htaccess." + +#: wp-cache.php:930 +#, php-format +msgid "Advanced users only: Install an object cache. Choose from Memcached, XCache, eAcccelerator and others." +msgstr "Solo per utenti esperti: Installa un object cache. Scegli tra Memcached, XCache, eAcccelerator ed altri." + +#: wp-cache.php:941 +msgid "Make WordPress Faster" +msgstr "Rendi più veloce WordPress" + +#: wp-cache.php:942 +#, php-format +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "Il plugin %1$s viene aggiornato e sviluppato da %2$s grazie anche al contributo di molte altre persone." + +#: wp-cache.php:943 +#, php-format +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "Il suo blog é %1$s e le sue foto le trovi %2$s." + +#: wp-cache.php:944 +#, php-format +msgid "Please say hi to him on %s too!" +msgstr "Mandagli un saluto su %s!" + +#: wp-cache.php:945 +msgid "Need Help?" +msgstr "Serve un aiuto?" + +#: wp-cache.php:947 +#, php-format +msgid "Installation Help" +msgstr "Info installazione" + +#: wp-cache.php:948 +#, php-format +msgid "Frequently Asked Questions" +msgstr "FAQ" + +#: wp-cache.php:949 +#, php-format +msgid "Support Forum" +msgstr "Forum di supporto" + +#: wp-cache.php:951 +msgid "Rate This Plugin!" +msgstr "Vota questo plugin!" + +#: wp-cache.php:952 +#, php-format +msgid "Please rate this plugin and tell me if it works for you or not. It really helps development." +msgstr "Vota questo plugin e dimmi se funziona oppure no. Il tuo feedback mi aiuterà nello sviluppo di questo progetto." + +#: wp-cache.php:961 +#, php-format +msgid "Cached pages since %1$s : %2$s" +msgstr "Pagine in cache da %1$s : %2$s" + +#: wp-cache.php:962 +msgid "Newest Cached Pages:" +msgstr "Pagine recenti nella cache:" + +#: wp-cache.php:966 +#, php-format +msgid "Cached %s seconds ago" +msgstr "Cache effettuata %s secondi fa" + +#: wp-cache.php:969 +msgid "(may not always be accurate on busy sites)" +msgstr "(il dato potrebbe essere non sempre accurato per quei siti ad alto traffico)" + +#: wp-cache.php:988 +msgid "Cache plugins are PHP scripts that live in a plugins folder inside the wp-super-cache folder. They are loaded when Supercache loads, much sooner than regular WordPress plugins." +msgstr "I plugin di cache sono degli scripts PHP che risiedono in una cartella a nome plugins allocata nella cartella wp-super-cache. Questi plugin saranno caricati al momento del caricamento di Supercache in un modo più rapido dei regolari plugin di WordPress." + +#: wp-cache.php:989 +msgid "This is strictly an advanced feature only and knowledge of both PHP and WordPress actions is required to create them." +msgstr "Questa é una funzione strettamente avanzata e necessita di una valida conoscenza sul come operare in ambito di PHP e WordPress." + +#: wp-cache.php:999 +msgid "Available Plugins" +msgstr "Plugin disponibili" + +#: wp-cache.php:1016 +msgid "Easy" +msgstr "Facile" + +#: wp-cache.php:1016 +msgid "CDN" +msgstr "CDN" + +#: wp-cache.php:1016 +msgid "Tester & Contents" +msgstr "Verifiche e contenuti" + +#: wp-cache.php:1016 +msgid "Preload" +msgstr "Pre-carica" + +#: wp-cache.php:1016 +msgid "Plugins" +msgstr "Plugins" + +#: wp-cache.php:1016 +msgid "Debug" +msgstr "Debug" + +#: wp-cache.php:1047 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "Avviso: la regola mod_rewrite per WP Super Cache non sarà attiva eccetto che per il sito principale di questo network." + +#: wp-cache.php:1049 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on on the main site of this network." +msgstr "Avviso: la regola mod_rewrite per WP Super Cache non sarà attiva eccetto che sul sito principale di questo network." + +#: wp-cache.php:1059 +msgid "Mod Rewrite Rules" +msgstr "Regole Mod Rewrite" + +#: wp-cache.php:1065 +msgid "WordPress MU Detected" +msgstr "E' stata rilevata una installazione WordPress MU" + +#: wp-cache.php:1065 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "Sfortunatamente, le rewrite rule non possono essere aggiornate in automatico quando WordPress MU é in funzione. Apri il tuo file .htaccess ed aggiungi le seguenti regole mod_rewrite in cima ad ogni altra regola presente nel file." + +#: wp-cache.php:1067 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Le regole Mod Rewrite non possono essere aggiornate!" + +#: wp-cache.php:1068 +#, php-format +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "Affinché l'aggiornamento automatico possa funzionare, sono necessari i marcatori BEGIN ed END nel file %s.htaccess. Sono simili a questa ed avvolgono le principali regole mod_rewrite di WordPress:" + +#: wp-cache.php:1070 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "Ricarica questa pagina una volta aggiornato il file .htaccess." + +#: wp-cache.php:1074 +msgid "Thank you for upgrading." +msgstr "Grazie per avere effettuato l'aggiornamento." + +#: wp-cache.php:1074 +#, php-format +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "Le regole mod_rewrite sono cambiate dalla tua ultima installazione di questo plugin. E' necessario che tu rimuova le regole supercache precedenti prima che le nuove siano aggiornate. Ricarica questa pagina una volta che avrai modificato il tuo file .htaccess. Qualora desiderassi effettuare un aggiornamento manuale, modifica la seguente linea: %1$s rendendola simile a questa: %2$s Le sole modifiche sono \"HTTP_COOKIE\" che diventa \"HTTP:Cookie\" e \"wordpressuser\" che va sostituito con \"wordpress\". Questa é una modifica relativa a WordPress 2.5 comunque, la sua validità é estesa anche alle versioni precedenti (qualora avessi il coraggio di utilizzarle)." + +#: wp-cache.php:1078 +msgid "Trailing slash check required." +msgstr "E' necessaria una verifica sullo slash di chiusura." + +#: wp-cache.php:1078 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "Pare che il tuo URL termini con uno \"/\". Dal momento in cui hai installato questo plugin, é stato rilevato un bug che duplica il contenuto laddove l'URL non termina con uno \"/\"; di fatto, vengono proposti gli stessi contenuti di quelli con lo \"/\" e non viene altresì effettuato un reindirizzamento all'URL appropriato. Per la correzione, sarà necessario modificare il tuo file .htaccess aggiungendo queste due regole ai due gruppi di regole di Super Cache:" + +#: wp-cache.php:1080 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "Puoi vedere dove posizionare ed esaminare nella loro completezza le regole cliccando il link qui sotto a nome \"Visualizza le regole Mod_Rewrite\"." + +#: wp-cache.php:1094 +msgid "Mod Rewrite rules updated!" +msgstr "Le regole Mod Rewrite sono state aggiornate!" + +#: wp-cache.php:1095 +#, php-format +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "Il file %s.htaccess é stato aggiornato con l'inserimento delle regole mod_rewrite necessarie. Verifica la loro correttezza. Ecco come dovrebbero essere:" + +#: wp-cache.php:1097 +msgid "Mod Rewrite rules must be updated!" +msgstr "E' necessario aggiornare le regole Mod Rewrite!" + +#: wp-cache.php:1098 +#, php-format +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "Il tuo file %s.htaccess non é scrivibile e deve essere aggiornato con le regole mod_rewrite necessarie. Le nuove regole andranno inserite al di sopra di quelle regolari di WordPress così come nel codice qui sotto:" + +#: wp-cache.php:1103 +#, php-format +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "Sono state rilevate le regole mod rewrite di WP Super Cache nel tuo file %s.htaccess.
      Clicca il seguente link per vedere le linee aggiunte a quel file. Nel caso in cui avessi aggiornato il plugin assicurati che esse coincidano." + +#: wp-cache.php:1106 +msgid "A difference between the rules in your .htaccess file and the plugin rewrite rules has been found. This could be simple whitespace differences but you should compare the rules in the file with those below as soon as possible. Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "E' stata rilevata una differenza tra le regole del tuo file .htaccess e quelle rewrite del plugin. Questo potrebbe dipendere anche da una sola spaziatura nel testo: effettua quanto prima una comparazione tra le regole presenti nel file con quelle qui sotto. Premi il pulsante ’Update Mod_Rewrite Rules’ per aggiornare." + +#: wp-cache.php:1109 +msgid "View Mod_Rewrite Rules" +msgstr "Visualizza le regole Mod_Rewrite" + +#: wp-cache.php:1113 +#: wp-cache.php:2350 +#, php-format +msgid "Rules must be added to %s too:" +msgstr "Le regole devono essere aggiunte anche a %s:" + +#: wp-cache.php:1121 +#, php-format +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "Sono state create nel file %s.htaccess le regole per la codifica Gzip." + +#: wp-cache.php:1128 +msgid "Fix Configuration" +msgstr "Correggi la configurazione" + +#: wp-cache.php:1131 +msgid "Restore Default Configuration" +msgstr "Ripristina la configurazione predefinita" + +#: wp-cache.php:1139 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "Moderazione dei commenti attiva. Il tuo commento non apparirà immediatamente." + +#: wp-cache.php:1164 +msgid "Lock Down:" +msgstr "Blocco di protezione:" + +#: wp-cache.php:1165 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "Proteggi il tuo server da un inatteso picco di traffico attivando il blocco. Quando il blocco é attivo, i nuovi commenti non ricaricheranno i file statici nella cache." + +#: wp-cache.php:1166 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "Sviluppatori: é possibile rendere compatibile il plugin con il blocco di protezione grazie alla costante \"WPLOCKDOWN\". Il seguente codice farà sì che il plugin sia in grado di sopperire alle impostazioni WPLOCKDOWN." + +#: wp-cache.php:1168 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "Il mio blog ha attivato un blocco di protezione. Gli aggiornamenti appariranno a breve" + +#: wp-cache.php:1172 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "WordPress ha un blocco di protezione. Quando verranno effettuati dei nuovi commenti, i file statici di Super Cache non saranno cancellati." + +#: wp-cache.php:1174 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "WordPress ha un blocco di protezione. I nuovi commenti rigenereranno come al solito i file statici di Super Cache." + +#: wp-cache.php:1180 +msgid "Lock Down" +msgstr "Blocco di protezione" + +#: wp-cache.php:1188 +msgid "Directly Cached Files" +msgstr "File cache diretta" + +#: wp-cache.php:1246 +#, php-format +msgid "%s removed!" +msgstr "%s rimosso!" + +#: wp-cache.php:1254 +#, php-format +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "E' necessario rendere scrivibile %s affinché questa opzione possa essere attivata. Per ragioni di sicurezza, rendi di sola lettura una volta che la pagina é stata generata." + +#: wp-cache.php:1256 +#, php-format +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "%s é scrivibile. Assicurati che essa sia di sola lettura una volta che la pagina verrà generata (limita i problemi di sicurezza)." + +#: wp-cache.php:1270 +msgid "Existing direct page" +msgstr "Pagina diretta esistente" + +#: wp-cache.php:1270 +msgid "Delete cached file" +msgstr "Cancella i file nella cache" + +#: wp-cache.php:1275 +msgid "Add direct page:" +msgstr "Aggiungi una pagina diretta:" + +#: wp-cache.php:1277 +#, php-format +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "I file di cache diretta sono dei file creati direttamente sotto %s ossia laddove il tuo blog risiede. Questa opzione é particolarmente utile qualora ti aspettassi un alto livello di traffico proveniente da Digg o Slashdot verso un articolo/pagina." + +#: wp-cache.php:1279 +#, php-format +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "Esempio: per la cache di %1$sabout/, sarà necessario che tu inserisca %1$sabout/ oppure /about/. Il file di cache verrà generato la prima volta che un utente anonimo visiterà quella pagina." + +#: wp-cache.php:1280 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "Svuota la casella di testo per rimuovere l'indirizzo dalla lista delle pagine dirette e cancellare dalla cache il file." + +#: wp-cache.php:1285 +msgid "Update Direct Pages" +msgstr "Aggiorna le pagine dirette" + +#: wp-cache.php:1323 +msgid "Expiry Time & Garbage Collection" +msgstr "Periodo scadenza e Garbage Collection" + +#: wp-cache.php:1325 +msgid "Expire time:" +msgstr "Periodo scadenza:" + +#: wp-cache.php:1326 +msgid "seconds" +msgstr "secondi" + +#: wp-cache.php:1327 +msgid "Garbage Collection" +msgstr "Garbage Collection" + +#: wp-cache.php:1327 +msgid "If the expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above." +msgstr "Qualora il periodo di scadenza fosse maggiore di 1800 secondi (mezz'ora), la garbage collection verrà effettuata ogni 10 minuti diversamente, l'operazione verrà effettuata 10 secondi dopo il periodo di scadenza indicato qui sopra." + +#: wp-cache.php:1328 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 300 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. If you are using legacy caching aim to have less than 500 cached files if possible. You can have many times more cached files when using mod_rewrite or PHP caching." +msgstr "La ricerca e la cancellazione dei file scaduti é particolarmente dispendiosa così come lo é il lasciarli lì scaduti. Qualora avessi un sito con un traffico rilevante, imposta il tempo di scadenza a 300 secondi. Effettua eventualmente più prove con valori differenti e controlla in questa pagina (più volte durante l'arco della giornata) il totale dei file scaduti presenti. Il numero ottimale dovrebbe essere inferiore a circa 500 file di cache (lmodalità parziale). Il numero dei file nella cachepotrà essere comunque superiore utilizzando mod_rewrite o PHP caching." + +#: wp-cache.php:1329 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "Imposta a 0 il tempo di scadenza per disattivare la garbage collection." + +#: wp-cache.php:1330 +msgid "Change Expiration" +msgstr "Modifica la scadenza" + +#: wp-cache.php:1374 +msgid "Rejected User Agents" +msgstr "User Agents " + +#: wp-cache.php:1375 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "Le stringhe presenti nella header HTTP degli ’User Agent’ che impediscono a WP-Cache di fornire i dati nella cache alle richieste da parte dei bot, degli spider e dei crawler. Nota che anche i file super cached saranno inviati a questi agent qualora esistessero." + +#: wp-cache.php:1382 +msgid "Save UA Strings" +msgstr "Salva le stringhe UA" + +#: wp-cache.php:1405 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "Non effettuare la cache per i tipi di pagine a seguire. Per maggiori informazioni, leggi la documentazione circa i tag condizionali." + +#: wp-cache.php:1408 +msgid "Single Posts" +msgstr "Articoli singoli" + +#: wp-cache.php:1409 +msgid "Pages" +msgstr "Pagine" + +#: wp-cache.php:1410 +msgid "Front Page" +msgstr "Pagina principale" + +#: wp-cache.php:1411 +msgid "Home" +msgstr "Home" + +#: wp-cache.php:1412 +msgid "Archives" +msgstr "Archivi" + +#: wp-cache.php:1413 +msgid "Tags" +msgstr "Tag" + +#: wp-cache.php:1414 +msgid "Category" +msgstr "Categoria" + +#: wp-cache.php:1415 +msgid "Feeds" +msgstr "Feed" + +#: wp-cache.php:1416 +msgid "Search Pages" +msgstr "Pagine ricerca" + +#: wp-cache.php:1418 +#: wp-cache.php:1546 +msgid "Save" +msgstr "Salva" + +#: wp-cache.php:1435 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "Aggiungi qui le stringhe (non il nome del file) per forzare il blocco della cache per quella data pagina. Ad esempio, se il tuo URL contenesse l'anno e tu non gradissi la cache per gli articoli pubblicati in quel dato periodo, sarà sufficiente specificare l'anno, ad es. ’/2004/’. WP-Cache effettuerà una ricerca in modo tale da verificare la presenza di quella stringa nell'URI quindi, la cache per quella pagina non verrà generata." + +#: wp-cache.php:1441 +msgid "Save Strings" +msgstr "Salva le stringhe" + +#: wp-cache.php:1457 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "Aggiungi qui i nomi dei file per i quali potrà essere effettuata la cache (anche in caso di corrispondenza con una delle stringhe specificate più sopra)." + +#: wp-cache.php:1463 +msgid "Save Files" +msgstr "Salva i file" + +#: wp-cache.php:1508 +msgid "Currently logging to: " +msgstr "Log attuale:" + +#: wp-cache.php:1518 +msgid "Fix problems with the plugin by debugging it here. It can send you debug emails or log them to a file in your cache directory." +msgstr "Correggi qui i problemi con il debugging del plugin. Potrai sceglie tra l'invio delle tue email di debug oppure consultare il registro contenuto in un file allocato nella cartella della cache." + +#: wp-cache.php:1519 +msgid "Logging to a file is easier but faces the problem that clearing the cache will clear the log file." +msgstr "Consultare il file di registro é semplice ma ricordati che, una volta svuotata la cache, verrà cancellato anche il file di registro." + +#: wp-cache.php:1523 +msgid "Debugging" +msgstr "Debugging" + +#: wp-cache.php:1524 +msgid "Logging Type" +msgstr "Tipo di logging" + +#: wp-cache.php:1524 +msgid "Email" +msgstr "Email" + +#: wp-cache.php:1525 +msgid "file" +msgstr "file" + +#: wp-cache.php:1526 +msgid "IP Address" +msgstr "Indirizzo IP" + +#: wp-cache.php:1526 +#, php-format +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(richieste per il registro provenienti da questo solo indirizzo IP. Il tuo IP é %s)" + +#: wp-cache.php:1527 +msgid "Log level" +msgstr "Livello log" + +#: wp-cache.php:1533 +msgid "(1 = less, 5 = more, may cause severe server load.)" +msgstr "(1 = minore, 5 = maggiore, può essere causa di un maggior carico sul server.)" + +#: wp-cache.php:1536 +msgid "In very rare cases two problems may arise on some blogs:
      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "In alcuni casi molto rari, é possibile che si verifichino in alcuni blog due problematiche:
      1. La front page potrebbe giungere come download di un file zip.
      2. La pagina errata può essere in certi casi custodita nella cache quale front page qualora il tuo blog facesse uso di una front page statica e la struttura del permalink fosse /%category%/%postname%/.
      " + +#: wp-cache.php:1537 +#, php-format +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "Sono certo al 99% che non si tratta di bug in WP Super Cache e questo problema può accadere in casi veramente molto rari. Puoi attivare comunque un controllo ogni 5 minuti in modo tale che sia possibile monitorare il tuo sito. In caso di problemi, ti verrà inviata una email." + +#: wp-cache.php:1539 +msgid "Check front page every 5 minutes." +msgstr "Controlla la front page ogni 5 minuti." + +#: wp-cache.php:1540 +msgid "Front page text" +msgstr "Testo front page" + +#: wp-cache.php:1540 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "il testo da cercare nella tua front page. La cache verrà svuotata in assenza del testo. Lascia vuoto per disattivare" + +#: wp-cache.php:1541 +msgid "Clear cache on error." +msgstr "Svuota la cache in caso di errore." + +#: wp-cache.php:1542 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "Invia una email di notifica all'aministratore del blog per l'avvenuto controllo. (utile per il testing) " + +#: wp-cache.php:1556 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "Errore: la compressione GZIP é attiva: disattivala qualora desiderassi attivare wp-cache." + +#: wp-cache.php:1603 +#: wp-cache.php:1765 +msgid "Warning" +msgstr "Attenzione" + +#: wp-cache.php:1603 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "La tua installazione di WordPress ha la compressione GZIP attiva: wp-cache non sarà disponibile sino a quando la compressione gzip non verrà disattivata." + +#: wp-cache.php:1661 +#: wp-cache.php:1666 +#: wp-cache.php:1698 +#: wp-cache.php:1703 +#: wp-cache.php:1709 +msgid "Error" +msgstr "Errore" + +#: wp-cache.php:1661 +#, php-format +msgid "Your cache directory ($cache_path) did not exist and couldn’t be created by the web server. Check %s permissions." +msgstr "La tua cartella per la cache ($cache_path) non esiste e non può essere creata nel server. Verifica i permessi %s." + +#: wp-cache.php:1666 +#, php-format +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "La tua cartella per la cache (%1$s) oppure %2$s é necessario renderla scrivibile affinché il plugin possa funzionare. Verifica con attenzione." + +#: wp-cache.php:1698 +#, php-format +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "Il tuo file di configurazione WP-Cache (%s) non é aggiornato e non é scrivibile. Cancellalo e ricarica questa pagina." + +#: wp-cache.php:1703 +#, php-format +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "Non é presente il file di configurazione e la cartella %1$s (%2$s) non é scrivibile. Verifica i suoi permessi." + +#: wp-cache.php:1709 +#, php-format +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "Il file campione per la configurazione di WP-Cache (%s) non esiste. Effettua una verifica." + +#: wp-cache.php:1765 +#, php-format +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "Il file %s/advanced-cache.php non esiste oppure non può essere aggiornato." + +#: wp-cache.php:1766 +msgid "1. If it already exists please delete the file first." +msgstr "1. Nel caso fosse già esistente, cancellalo." + +#: wp-cache.php:1767 +#, php-format +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. Rendi il file %1$s scrivibile utilizzando il comando chmod via ftp oppure grazie al software del server. (chmod 777 %1$s) e ricarica questa pagina. Questa é una misura temporanea: ad operazione compiuta, rendi il file di sola lettura. (modificando da 777 a 755 il comando precedente)" + +#: wp-cache.php:1768 +#, php-format +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. Ricarica questa pagina per aggiornare il file %s/advanced-cache.php" + +#: wp-cache.php:1769 +#, php-format +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "Nel caso in cui non funzionasse, accertati che il file %s/advanced-cache.php non esista:" + +#: wp-cache.php:1770 +#, php-format +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. Apri %1$s$wp_cache_file con un editor di testo.
    • 2. Modifica il testo da CACHEHOME a %2$s
    • 3. Salva il file e copialo in %3$s quindi, ricarica questa pagina.
    • " + +#: wp-cache.php:1793 +msgid "

      WP_CACHE constant set to false

      The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

      define('WP_CACHE', true);

      " +msgstr "

      Costante WP_CACHE impostata a false

      La costante WP_CACHE viene utilizzata da WordPress per caricare il codice necessario per servire le pagine in cache. Sfortunatamente, l'impostazione é a false. Modifica il tuo wp-config.php ed aggiungi o modifica la seguente linea al di sopra del comando require_once:

      define('WP_CACHE', true);

      " + +#: wp-cache.php:1795 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "Errore: WP_CACHE non é attivo nel tuo file wp-config.php ed il plugin non é in grado di modificarlo." + +#: wp-cache.php:1796 +#, php-format +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "Modifica %s aggiungendo la seguente linea:
      define('WP_CACHE', true);
      Diversamente, WP-Cache non verrà eseguito dal core di WordPress." + +#: wp-cache.php:1800 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the FAQ. The WP_CACHE line must be moved up." +msgstr "

      La costante WP_CACHE é stata aggiunta al file wp-config.php

      Nel caso in cui continuassi a visualizzare questo messaggio consulta il punto 5 delle FAQ. La riga WP_CACHE deve essere spostata." + +#: wp-cache.php:1822 +msgid "Cache Contents" +msgstr "Contenuti cache" + +#: wp-cache.php:1825 +msgid "Object cache in use. No cache listing available." +msgstr "Oggetto cache in uso. Nessun elenco cache disponibile." + +#: wp-cache.php:1849 +#, php-format +msgid "Deleting supercache file: %s
      " +msgstr "Sto cancellando il file supercache: %s
      " + +#: wp-cache.php:1866 +#, php-format +msgid "Deleting wp-cache file: %s
      " +msgstr "Sto cancellando il file wp-cache: %s
      " + +#: wp-cache.php:1931 +msgid "Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page." +msgstr "Le statistiche della cache non sono generate in automatico. E' necessario che tu prema il link qui sotto per potere rigenerare in questa pagina le statistiche." + +#: wp-cache.php:1932 +msgid "Regenerate cache stats" +msgstr "Rigenera statistiche della cache" + +#: wp-cache.php:1934 +#, php-format +msgid "Cache stats last generated: %s minutes ago." +msgstr "Ultima statistica cache generata: %s minuti fa." + +#: wp-cache.php:1940 +msgid "WP-Cache" +msgstr "WP-Cache" + +#: wp-cache.php:1941 +#: wp-cache.php:1957 +#, php-format +msgid "%s Cached Pages" +msgstr "%s pagine nella cache" + +#: wp-cache.php:1942 +#: wp-cache.php:1962 +#, php-format +msgid "%s Expired Pages" +msgstr "%s pagine scadute" + +#: wp-cache.php:1956 +msgid "WP-Super-Cache" +msgstr "WP-Super-Cache" + +#: wp-cache.php:1967 +msgid "Fresh WP-Cached Files" +msgstr "Aggiorna file WP-Cached" + +#: wp-cache.php:1968 +#: wp-cache.php:1984 +#: wp-cache.php:2000 +#: wp-cache.php:2016 +msgid "URI" +msgstr "URI" + +#: wp-cache.php:1968 +#: wp-cache.php:1984 +msgid "Key" +msgstr "Chiave" + +#: wp-cache.php:1968 +#: wp-cache.php:1984 +#: wp-cache.php:2000 +#: wp-cache.php:2016 +msgid "Age" +msgstr "Età" + +#: wp-cache.php:1968 +#: wp-cache.php:1984 +#: wp-cache.php:2000 +#: wp-cache.php:2016 +msgid "Delete" +msgstr "Cancella" + +#: wp-cache.php:1983 +msgid "Stale WP-Cached Files" +msgstr "Ordina i file WP-Cached" + +#: wp-cache.php:1999 +msgid "Fresh Super Cached Files" +msgstr "Aggiorna file Super Cached" + +#: wp-cache.php:2015 +msgid "Stale Super Cached Files" +msgstr "Scadenza file Super Cached" + +#: wp-cache.php:2031 +msgid "Hide file list" +msgstr "Nascondi la lista dei file" + +#: wp-cache.php:2033 +msgid "Too many cached files, no listing possible." +msgstr "Sono presenti troppi file cache: non é possibile mostrare l'elenco." + +#: wp-cache.php:2035 +msgid "List all cached files" +msgstr "Lista di tutti i file presenti nella cache" + +#: wp-cache.php:2041 +#, php-format +msgid "Garbage Collection
      Last GC was %s minutes ago
      " +msgstr "Garbage Collection
      L'ultima GC é stata effettuata %s minuti fa
      " + +#: wp-cache.php:2042 +#, php-format +msgid "Next GC in %s minutes" +msgstr "La prossima GC verrà effettuata tra %s minuti" + +#: wp-cache.php:2045 +#, php-format +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "I file scaduti sono file più vecchi di %s secondi. Sebbene questi file vengano comunque utilizzati dal plugin sappi che sono cancellati periodicamente." + +#: wp-cache.php:2056 +msgid "Delete Expired" +msgstr "Cancella la cache scaduta" + +#: wp-cache.php:2062 +#: wp-cache.php:2074 +#: wp-cache.php:2237 +msgid "Delete Cache" +msgstr "Cancella la cache" + +#: wp-cache.php:2074 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Cancella i file cache di Super Cache (apre in una nuova finestra)" + +#: wp-cache.php:2213 +#, php-format +msgid "%1$s is Digg proof thanks to caching by %2$s" +msgstr "%1$s é a prova di Digg grazie alla cache fornita da %2$s" + +#: wp-cache.php:2246 +#, php-format +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "E' necessario configurare WP Super Cache. Vai alla pagina di amministrazione per attivare e configurare il plugin." + +#: wp-cache.php:2252 +msgid "Settings" +msgstr "Impostazioni" + +#: wp-cache.php:2262 +#, php-format +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "WP Super Cache non é attivo. Vai alla pagina di amministrazione del plugin per attivare la funzione di caching." + +#: wp-cache.php:2281 +#, php-format +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] La front page é stata gzipped! Svuota la cache!" + +#: wp-cache.php:2281 +#, php-format +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "Visita %s per svuotare la cache!" + +#: wp-cache.php:2284 +#, php-format +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] La front page é stata gzipped! La cache é stata svuotata!" + +#: wp-cache.php:2284 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "La cache del blog é stata svuotata perché la front page del tuo sito é sotto downloading. Visita %1$s per controllare se la cache sia stata svuotata." + +#: wp-cache.php:2291 +#, php-format +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] La front page non é corretta! Svuota la cache!" + +#: wp-cache.php:2291 +#, php-format +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "Visita %1$s per svuotare la cache nel caso in cui la front page del tuo sito non fosse corretta e mancasse del testo, \"%2$s\"!" + +#: wp-cache.php:2294 +#, php-format +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] La front page non é corretta! La cache é stata svuotata!" + +#: wp-cache.php:2294 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "La cache del blog é stata svuotata perché manca il testo \"%2$s\" nella front page del tuo sito. Visita %1$s per controllare se la cache sia stata svuotata." + +#: wp-cache.php:2299 +#, php-format +msgid "[%s] Front page check!" +msgstr "[%s] Controllo Front page!" + +#: wp-cache.php:2299 +#, php-format +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "WP Super Cache ha controllato la front page del tuo blog. Visita %s qualora gradissi disattivare la funzione." + +#: wp-cache.php:2342 +msgid "Cannot update .htaccess" +msgstr "Non é possibile aggiornare il file .htaccess" + +#: wp-cache.php:2342 +#, php-format +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "Il file %s.htaccess non può essere modificato. Correggi utilizzando il comando chmod oppure il tuo client ftp." + +#: wp-cache.php:2342 +msgid "Refresh this page when the file permissions have been modified." +msgstr "Ricarica questa pagina una volta che i permessi per il file sono stati modificati." + +#: wp-cache.php:2342 +#, php-format +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "Come alternativa, puoi modificare manualmente il file %s.htaccess aggiungendo il seguente codice (prima di ogni regola WordPress):" + +#: wp-cache.php:2346 +#, php-format +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "Affinché il tuo server possa fornire dei file html statici é necessario che le regole mod_rewrite vengano aggiunte al file %s.htaccess" + +#: wp-cache.php:2347 +msgid "You can edit the file yourself add the following rules." +msgstr "Puoi modificare tu stesso il file aggiungendo le seguenti regole." + +#: wp-cache.php:2348 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr " Accertati che appaiano prima di ogni regola WordPress già presente. " + +#: wp-cache.php:2356 +msgid "Update Mod_Rewrite Rules" +msgstr "Aggiorna le regole Mod_Rewrite" + +#: wp-cache.php:2463 +#, php-format +msgid "[%1$s] Cache Preload Started" +msgstr "[%1$s] La pre-carica della cache ha avuto inizio" + +#: wp-cache.php:2465 +#, php-format +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] Ricarica articoli da %2$d a %3$d" + +#: wp-cache.php:2483 +#, php-format +msgid "[%1$s] Cache Preload Stopped" +msgstr "[%1$s] Pre-carica cache arrestata" + +#: wp-cache.php:2492 +#, php-format +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s] %2$d articoli sono stati ricaricati" + +#: wp-cache.php:2492 +msgid "Refreshed the following posts:" +msgstr "I seguenti post sono stati aggiornati:" + +#: wp-cache.php:2501 +#, php-format +msgid "Scheduling next preload refresh in %d minutes." +msgstr "Prossima ricarica programmata tra %d minuti." + +#: wp-cache.php:2511 +#, php-format +msgid "[%s] Cache Preload Completed" +msgstr "[%s] La pre-carica della cache é stata completata" + +#: wp-cache.php:2511 +msgid "Cleaning up old supercache files." +msgstr "Cancella i vecchi file supercache." + +#: wp-cache.php:2553 +#, php-format +msgid "[%s] Preload may have stalled." +msgstr "[%s] La pre-carica potrebbe avere dei problemi." + +#: wp-cache.php:2553 +#, php-format +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"La pre-carica é stata riavviata.\n" +"%s" + +#~ msgid "" +#~ "Scheduled preloading of cache cancelled. If a job is currently running it " +#~ "will not shutdown until the current 100 pages are complete." +#~ msgstr "" +#~ "Il pre-caricamento programmato della cache é stato annullato. Nel caso in " +#~ "cui l'operazione fosse in corso, essa non verrà terminata sino al " +#~ "completamento delle 100 pagine in uso." + +#~ msgid "(support for multiple domains on multisite websites) " +#~ msgstr "(supporto per domini multipli o siti multi sito)" + +#~ msgid "" +#~ "Scroll down this page and click the Update Mod_Rewrite Rules button." +#~ msgstr "" +#~ "Scorri verso il basso la pagina e premi il pulsante Update " +#~ "Mod_Rewrite Rules." + +#~ msgid "WP Super Cache Manager" +#~ msgstr "Gestione WP Super Cache" + +#~ msgid "Why your configuration may not be changed" +#~ msgstr "Perché la tua configurazione non può essere modificata" + +#~ msgid "Why" +#~ msgstr "Perché" + +#~ msgid "ON" +#~ msgstr "ATTIVO" + +#~ msgid "WP Cache and Super Cache enabled" +#~ msgstr "WP Cache e Super Cache sono attivi" + +#~ msgid "HALF ON" +#~ msgstr "PARZIALE" + +#~ msgid "Super Cache Disabled, only legacy WP-Cache caching." +#~ msgstr "Super Cache non attivo, WP-Cache attivo" + +#~ msgid "OFF" +#~ msgstr "NON ATTIVO" + +#~ msgid "WP Cache and Super Cache disabled" +#~ msgstr "WP Cache e Super Cache non sono attivi" + +#~ msgid "Don’t cache pages for logged in users." +#~ msgstr "Non effettuare la cache delle pagine per gli utenti collegati." + +#~ msgid "" +#~ "Cache rebuild. Serve a supercache file to anonymous users while a new " +#~ "file is being generated. Recommended for very busy websites with " +#~ "lots of comments. Makes \"directly cached pages\" and \"Lockdown mode\" " +#~ "obsolete." +#~ msgstr "" +#~ "Rigenerazione della cache. Proponi agli utenti anonimi un file di " +#~ "supercache quando un nuovo file sta per essere generato. L'attivazione di " +#~ "questa funzione é preferibile per quei siti ad alto traffico e " +#~ "con molti commenti. Questa opzione rende di fatto obsoleta la \"cache " +#~ "diretta pagine\" e la \"modalità Lockdown\"." + +#~ msgid "" +#~ "List the newest cached pages (may be expensive to run on busy sites, use " +#~ "with caution.)" +#~ msgstr "" +#~ "Lista delle nuove pagine nella cache (non indicato per i siti ad alto " +#~ "traffico - usare con cautela)" + +#~ msgid "" +#~ "Mobile device support using WordPress Mobile Edition." +#~ msgstr "" +#~ "Il supporto Mobile device fa uso del WordPress Mobile " +#~ "Edition." + +#~ msgid "" +#~ "Uninstall using the uninstall script to remove files and directories created by the " +#~ "plugin. (Please see readme." +#~ "txt for instructions on uninstalling this script.)" +#~ msgstr "" +#~ "Utilizzando lo script di disinstallazione verranno rimossi tutti i file e tutte le cartelle " +#~ "create dal plugin. (per maggiori informazioni sul come effettuare la " +#~ "disinstallazione, consulta il readme.txt.)" + +#~ msgid "" +#~ "%1$s really makes your blog go faster. Make it go faster* by " +#~ "buying me an Amazon gift card! Make it out to \"%3$s" +#~ "\" for whatever amount you want. Every penny helps!" +#~ msgstr "" +#~ "%1$s rende veramente più veloce il tuo blog. Rendilo più rapido* offrendomi una Amazon gift card! Partecipa a \"%" +#~ "3$s\" con un qualsiasi importo tu desideri offrire. Ogni centesimo é di " +#~ "aiuto!" + +#~ msgid "" +#~ "If Amazon isn’t your thing, there’s also PayPal. Click the " +#~ "\"Donate\" button below or take a quick peek at my wishlist." +#~ msgstr "" +#~ "Non ti piacesse Amazon, utilizza PayPal. Clicca sul pulsante \"Donazione" +#~ "\" qui sotto oppure fai un salto alla mia wishlist." + +#~ msgid "Thanks in advance!" +#~ msgstr "Un grazie anticipato!" + +#~ msgid "" +#~ "Ok, it won’t go any faster but you’ll make this plugin author " +#~ "very happy!" +#~ msgstr "" +#~ "Ok, considera che sebbene il tuo sito non sarà più veloce avrai almeno " +#~ "reso più felice l'autore di questo plugin!" + +#~ msgid "Don’t show me this again." +#~ msgstr "Non mostrarmelo più." + +#~ msgid "Hide" +#~ msgstr "Nascondi" + +#~ msgid "" +#~ "He blogs at %1$s, posts photos at %2$s and wishes he " +#~ "had more time to read and relax." +#~ msgstr "" +#~ "Oltre al tempo dedicato alla lettura ed al relax, Donncha cura il blog %1" +#~ "$s, pubblica le sue foto nel sito %2$s e riceve anche dei doni." + +#~ msgid "Super Cache Compression" +#~ msgstr "Compressione Super Cache" + +#~ msgid "Compression is enabled by default when in HALF ON mode." +#~ msgstr "" +#~ "La compressione viene attivata come predefinita quando é in uso la " +#~ "modalità PARZIALE." + +#~ msgid "Super Cache compression is now disabled." +#~ msgstr "La compressione Super Cache é stata disattivata." + +#~ msgid "Super Cache compression is now enabled." +#~ msgstr "La compressione Super Cache é stata attivata." + +#~ msgid "Update Compression" +#~ msgstr "Aggiorna la compressione" + +#~ msgid "You must edit the file yourself add the following rules." +#~ msgstr "" +#~ "E' necessario che tu modifichi il file aggiungendo le seguenti regole." + +#~ msgid "Debug Settings" +#~ msgstr "Impostazioni debug" diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-ja.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-ja.mo new file mode 100644 index 0000000000000000000000000000000000000000..098b6edcd728c31cae029a27d380f9db62b0424c GIT binary patch literal 79297 zcmb@P34B%eb>}Z>R+_Czvu_vK#E>8fa2z`r<6sOnwlT!uIL>17ke)!cq^Iaf#w2Mg z2^-shgH60I!3(jmiIEfUD`}HIkJUwA&rhIrh z@7{Ose>wX(|MS21M{j!hO$q-hGm_-pz~g^DN&cMg^WLhnNwV)fNwOIDAaEXV61WQZ z=JzJa8-Nwy8-bq#eik?iq={r4_{+e*2c8b>dtZ{A2s{9MJ@CiCyMg}z`~Yxwnj|L! zp9g*t_`iTB0oTk*lGibwZNSqwzOf}qHUPg5ycBrSaY@n&yc>8t@OOYI@Tb80fWOGe zH*x<{z}EwRb9RypasE%=pCq3Kt~nt|jsPD9p3d(#&q9cR8F&Z?X_9{dz83ga zkO%6M#u;b zfd3Bs1Mu?RMSlF#Q=L!V0#j-ntALtM2XH0uO)$wvfu9Cm3A_tf2evFpl3xMd3{*dF zJ>BW{KH%FqUJg8mel7vNg5w82nk26Qjsaf@d>SaceiJBs|29zg`%56GOnw4<6Y%{@ zljI=qBS6jXUxAP~X+0xJ9ssTfYTU0{mLx9#-vj&x@P|O*Z`YYVzFUA}9N!I8KWmmd z->wIy9RDHkQs6%UUkUbeY)x6IF_5s%cj|YAW$kdV}K(+IMb6kJS2fmBrRpGcBD0*%KR)Mzy zp9B6U@Tbq#e|rHu!|{x@NpczR z_;oHn*I$?<7jgZKK;h?afXjh1KJMc`3#jpY2KXA_H9+;hI~?By6#X9neg^nFQ22Zo zjlLK7QQ+%<>w#|t_6B$*@I4&g0lW$LG*Eb5{RzLn0&L-U8}OaL2Z6JI-v)jYI0@7^ z9=I5t1pEe2ypzxJ`3VCM!TY+0R-t}ql3VaQNpAUR3@U_6x zfa>oYU@Nc(D7@Vcd?UxNT<`tAEx;C_`fCNg9e5(J7kC~JR42~>-v@ldXOjdJC+)z8 zfmZ?hfhSh{{9fRzIR3W)U&f$?mze>+8z{WC0nY)h0{#$qE3gwd)R83j1OF8GS>OmK z?*#rBsCIs(>hrt-D0==HQ2On+fbRkRG4N#IKLKHtq^-;4Zxkpz{u)sI{~w^}`Cgb< zcs~iK`_2Jg3LFKhy}u3c=QsI%bAga5IUD$L;JrZM`vIWn`B*qU2$a117H|&mhd}Au zS9H5xUjS_5_!1yPNv;E`oqq(j17|P@(Q^TC1h@fsI`9zi6yWifxnBAVQ1^8KbzdF0 z2zVb*bo>!e{Qb|s9{^w1BH-U$Me*(N8_(ETj z>;YD5&iAi?_*Zj$2k;r-aoqg2m(efq^Bn(E-SPgpL39?!2Y|=vJn(`U$i|TC(ca4$ z2gl>Ub^QK!o84boc7@~Z*MOqi-vNIP_&S*X4}re`{8iv#;61GYMrbHCtv;{u@O z(FGJeeg*hC;4Yx(dlzsv@LAvqz`q2FFJALSw}UAVlqaVEVbSD1;CFzp{3T=x_Na;H!a`0EN$u0oH&IF|W}zU-A1S@a0_pJ%sp6z#lw-jpcmxK_A~G54pX%9{4oBKMEY-_uj9; zR~-L6@U)9b-<%I#9pw1`6+c!twLK`5b>2xB>XTfui>% zk0i-|18xAm7x;m%JAbVNevIQP@O_NqN#K5t|L7Y@vK_efQEU|O^^ZA!eG2#&9B%_I z0d9QU{geBFZ|C^w0KX4}B*|X`*8#VJRE_J8f$HxyPdYw61$+a?zYKf}@Jql`fqQ{} z{WAIjF6Q{Ro z0w{d9ewVoddw{P5zVSERzP}A9dHqMA+B@U7Ts~I=bzKkehrl{;CUDJfyMOs9;4F^6 z1=RQ_!ttN~j_dImzw7bg8-SYsp8~f5fByHppWVO@bG!%me&7#)(og>Z6uwXR9x({; zWZ+)`e+T#j;M3m^^6>kvPaXw|{=W~@c#Z-;2K;#@zXkXipw9mha5?Z_fvbS0|Dp5q zb->qf{59Y^!0Qu0_5XWxHURt!AX87){t+_I@97`IXTb0M33d(mI+#TG9s@~V=lC~) z?|&IO=SPmey?=pD;`jZ)R^Z~lMCSr81HhJW!{`={F9Uv%-+%F_>(7q@U&V0^SOabbJ_I}rR2;e+qK$F9@o(G@ ze%s$V-@g;6`Ta6*0dP0)lfZ8S|Bd_J_jf+dcmBlZKR>{a0$;;*Yk;$Wp9Jm&ei674 zIO`wW{#^_FIL8kG?*Y#EpGop%;C;ZYz>|OK?LHgeZvv0!{GS2m17(y?1S|k<2UdZd zjO!=BeH>r-Psl3A{|UTK*P*PR0v-g4E>|E7rvsk^z7hD(z*hoa{ckSEZvdXl@gktw z-v;ak{=)x8_W-{D{1EWZfFA(9@!uVu3cQHpF5n*E3qaBNlK=3y`j>#GaQrB68}M&{ z>bL%%KHtv+MgQ%bB(L^P5Q5v=|Y__o)~Fn{46fe&%~U7T3u z$A$>f-uZLz!fR)k-~5#~%&`2{@;A;fy?ih5Os;?BFU&A`KNolv$Nx@p?AN(}^vyF2 z|7X8thRM|t;Q9Ri+i#s=eDm(N%`m&U1~{MV*8yRbaJIKQqA9OC%($InP$>EueF=rcUq@%x$g(=X$F z{hS#Vw|;u=j0DzAW`1CX`A@I@;EV*-oBR#%4}ssFH^c1u?X5GCdpQ0h;9mi^;Jm#X zx^}`uCv!Z4kV<}@27VNH2q^tE`$V7b$AIFq9l$xjXMxfqhk(7n^FHMK{S5F^9KZP_ zzrF^P9@-P&g8@DYr2FJ~Ak#6OzZy7`&s#Y0d7%1(os2$wO(3o1PDO9g>La?5e<`1T z;R6Zn-!}e!lJD05<)iA~aSlwUiSB<8j?d@!^Z5QA9rInXqJIzYc`cvC;eMSvjSuLy zf6IZ=r=R0@-~T5cSRnZmAfz{699A(Mj7TT1;G=)D_*~3K zw0j$$k8xgf{SKc=KBIhw`NV%q_#M+@|HRKvhVKHW@{umrKh&VvHObDKxd-vKe|z|g z>M|L*f$u5b@ARMS@7MYJ#c(YCc^{vP!oBRd6qknJZBi(fY$M*seUHf;21N*y^zn|s&WkBg2 z{d<(p5kAlJS;$BK5HE{2^!+(L%k_nSv-y0_zM&Ji=A(Rm!to`1B-i@)AADwT{v1B~ z_cGubKB#7sZJj%l&r&`Y>VSWT`0V3zBA@@x2lbbH38;VH2fLwV&ntxqS5RYkUs!`BNS6?@B)Juy6RKT)&3zOM&`#dVoLRdk>#Z zJ|E|tblhqn>d5ro)f_*|`1gzaE}Iws9p%d<9RCCGSNN>rgPAt} zlCS3P&(|0J-QmD=@p$-tOMou}eu2+f-1`YW{~FE<$Tnl*6U?5)P1`wsflnKspYoZ< zNB99!~%t;&UmV z-w)?r2mCPi{TlGce9q?k--O>Hc(1;st16dO)B4arH67ek-I7-N`>U0KbVIeP#;Ho* zmb7|BcYUzCZ)18i5>aNC;7#wxAX)8$w6cMlX#FtW`9-Gh}4J=L~! zO;5E_uhIz9?H)`As+G=KUk?-R8mtbaTWUiCX+JG#IvcBf)q%>O2FOe{afbhuv|jBP zqPZ>UKzIEz8^J)ew|058a~8d~Z5pg}bOs&uj)!?cTnPGgFR|mSgwgg&0fsWe1K(%AAEnO$-)Hl_JdOFjdTJ5s5r<<8*bc^V| zz0!GkrLUvf*($VG+xj>4FK(~)E=fCU)q2`j8+01>;u%mLkuwYLf}dpKMzWcE}yRyuT>lfFLG z-(MR5k@M2d?z-sE$%K0Q#YE86=s!^X+z@1|r;97;rh#hLX)T)u2m2Sbw{PCOxotzG zvvostQ|0pR+CW=(tvWCO9ICgsEIFgnnVu1TS=?S(l6Lo{E#RTQXJ})0U%kC}XM4-s zG?}CMXyTQg&6O=8Q3}C^MCX*DY#6G8Ug%M0F2)!=wT*De=Z32F!N7pV3M<#7mCjDh zpe?;vT*C?2W47*_b}qG!O0BzhQ(Jeny|2~^t*Qfq^;SfzwQHce+SjQWg>T_Ury%nh ztkoF(g0^&Jm-x2QBhC#{Sx@_&t2?VbRpuck>+0^&pMm;dTe7gt#oOdGib6V6msslB zj!iJ4D1vBpa%P}5v~iQmLf2rwm?hA>Uh5j%Tp2)&<}8M*{JxVs(#%OZ`F}uLb zCSywzC-JSzj|*EmSnY)+Oa_ogsU3BV_`UzQQx+~b`P7~s1n6?6QY(onB#N@iI64u> zji?ZYvkZNM)M_l;a`H(hi4in6m<+BNs>kWgO-^h}FQ_(*PdB-orkdFFf|Q&%|3m5d zu+OSmXLnaOjJ#o>wi)z9W`{t1o!uQ`r_Gy?{)(#;X#*EG&Vg;e7YcM#)1FFQipW^3 z+Sz7Z1d$O-Wg>%O?5uWGhI%BmE|PJQYT>NfnQ-J5@YX3MjFk1F_@qSZwO*K8O1YYD zf^E>8P+whT!X^T?ELmZr=ojaRSit0VJ06U|Rp;Ivu8U6m7ML7shze znsilnAL`f?jNc=JfF>X6-2mx9t;DVFVqzA|nxyk6IneIX8jT=vg)xigm#tkJ?jEdd ztkUX0Te`FdW7G#?v58v@2WV@NEZ2^+ZD4DcF)|Hn9*hR6s{^L@(Fan0jIqK*HFnTy z916~4-h_?8+$e0SZI*7gA*Sc7ZErHB0`ckj;>xC4ZB}YHGpxum_F-HGt9_=@(P@UE z73lP?+7;53t#FABHw9(n0L6Xjr@kCEHV%j=?QSL0v8$ z%=xT!tE%`SS7^Qk4hd$eqt;oyqHQz2k(sr&+Q7zkQ%aD0{R+5a{hI1PZ?_pd8Z&jM zNgMX6SM>Lw$8Z{8L8jc{+RSt~GG_LB*OgiI0J5~qW#cA)Vd=9I*V(G_>F7l7k zY!XJt-XWADX5M@>wET1v6$>%Vu1ZfGs`&Iutz{@-Zl-+@>f9OTR?|}ADKP^$fP+l= zG>YDZeQ@aD5CSgoMieNt#ihOTu3bdI<&w-k)_K(-AnL9 zR`+Ae%v@qTj^EtB-gM7;ajiR@XrKy~{tCQKCW6bhxScz7Hy%l_*c!TBqK1t1&R)H0 zx!(^;t$D%*JCWUv314g8f#xkoM~bwg)^Es+cbypSvLDex4IYU#mMpFhVih)~^}#JY z)zex!YCW}qMY0R1{iPS2zw-RE7AnBAz2ds>6VHV4EJ0$;j~An1t!42F1Igq? zR$y&^6#*UU_fF-zy47D6yl=yeq5+97v+ZfBax5USVOtCG{oP>5UH1m_*v13DmpItq zCP0R?w&7BO7;je`P^)3mET}8ZXjQe>SgBJZombYvpU|{SYc~8)UD`q5)uV{5HegfK z#ABQo@w!~0!=hY6Ko_}X)jo?#a#F*(hK$9=^$n`e&gG1^64oOe>kFU$%TStxK!M?A!}gK)u;N2RB{;k_zahi^8ntUaq$91s zC$sC>RTsH3o|U(FF?zc)C`Vi&uJNwXx)_-ec&Cnn&*NXU)rJQ9hX&Udt_W&D{2g$J zXrkbcTeu*4;Oht{;2~nxn&l6OpUq@oy& zV5nnIvPD-R!0I%EX0|3eJeVm241!p=+_NQ9r5myM{6}GAtXAtc*S0n5M24+p$(q<_ z9Svt!SZ={siYD9!W z=&B9%b%rp?*i9y_j&CIC+@yfDzk;602S8{G@nGVZEfCd+-O2+}$2N+Posd9oAQ7`! zIgffxz7^4B4YvgnBCg`YKsK^g&XA-u}aA#}y@ z8Wk7;K1@RCJNFZSm2Ou0pT)^3>-ycLbC#}YY?@y4up^a>$BVJ|P*VP}T&&>8T+dbRz?S zKJ4gWtQHRHSGi^Ab~7HwrDrTZYvuW1&4M<=TvVlMGG4X({4<+fV`)J6$i#Uwlya4- zpcLV;v>@S}5?Q_7Jrx4VbKD1(T*sk=K4#DU!rANAty#2;Tw-_im(p36w0&TXWC%f7 zUl{`31M9z-g*EHRhHb2NuJ7*qA~sRX(_g9A*UxSH!13Aep%i_fM{L52(m9>Pa4_Fy z{GfRd0xhKgtqLc`fzK6vyQORKRF|EBlmg;;#@3>F?jJkC3Y3Y% zG37?MIAo$N+{$ql5^{&x$Tg>s>(0G;)7*0rUD%mu9HG9v0!rl*t??9NvUGEWp`*D_ zg7Q9?MYD6_{yy-JO)e%aO9v$2EmPY3T9S;CjbI7Zc*+lPhUd&zA%IjqrY*to)CZ5V z&rB^AlytSC=x)VwXx7XIzLbCq?cdqc+R@q9TI=d+l{Kyo5OS?vyY|fUQuVXCtBdT7 zPMeWz(tdAc;IcMrr>(Qfy{kA*&mG!O>A0+0_av@6mZ7TPyLvd3zg-;&2iQ1UPw>!^ zw2mBIF%o%WFyL8t=57kkZ7DhwAz5?w8qzw-5k>ickaA8)%{d9h3XqO-br59CQ4TW0 z1txYZ70{?cJy2;WzCzwbr%|W9L*i|$CygSKeK;%|hY-XL+q`a1AB>EH-G2%QWj#G(JlH>=c z#QdCW5E?z>u#BuF$`|E+xCNlW6Sv`kj zCH&5oS0KLfR4s$V_YKTxI^C@5CUUHcvJPTiBlz9sW7!1hxvN@{ugtZmTU4qE1&em# zPn|Ry8*(;nZEfK0iab-EC6A>o2grGC5t8hl;KXGfEawNS8*2kwk`T_@;+yNhWu}>k z?(jT>T$yET(n*m8XjE4SArfPCX2jA75@I+`GObFhG9gYVvv@fcL~d=-Ux~l4>g2&R z*y|OYK_>}4@)Qzv>pNTBF$)shI?KGk71k#?LDsT_OJyEToIgKurX?V70J7CCkBOtd zJ(ylz=^q}2!5*=cI44qvCk6t1#Q);U%HahP+PXNT*OxJn81i0C{ zC8U$|sRsrNQ6Yn+{m4k5RvQ%=VUn(Z-nfZ2tU%`qZqEaR>~0sXTjLp^ABMuF}Png zwn1B$*8)ytOkbJ@9bpC4giFDi7-dUv$fZhTNjm9>?`9)G1tT=(tZD5$HlXDjrhBY) zCR0mz-WU;MluSj0MS5S$jU0v*MbdLtgRrC{ZoDy)zGw0 z3oWIZ8K`Oh5V@h+SnCX`U-b)F{$#FjCOw)hsN(mi^NX@opEg&4a$J-q2+4ozKe#zV zq$zBM8HQCbSOv%xO(0Sg>nJiM79};xE(nz5!!P_)G zB|stbi2l?#i$ZK}?#!tP3h}-s**0@#@Hd;}n~i90E0klm#^qAa+z?VACrk}?PB2WL z&=}vGkmYOS8X`v;sI_lP*|TQOoL!$e^8(5XSp1#WIO#QJF=xIMpSJAZwS!8QrTnij z%r~v12jDm@9mIMQzb@9C#7l~lFntwu=o~6sSmpuIa@xq&ch)w~jdvBUjHfhx_XDPq zORW?Fo>IISBJG^LUpuWg+I>zN;sHTd+Z=X^^{pc43ZH$+O-Rlr?TP|92-s)xN zp1Jy>^IMeK!*5lBXq`IG7E~-gG!M+O}(HZ9baoM~Ag^zSma z!z<+0M%jDM5FZ9+XMMamgZ51!5!mFwFkfAUS_{>n*z`&g?#RMJ>&ePIkXdb4q1PbRi zbrWP6RY?6*wWLPflc#-XgcWa`55DwNyU6d8`czAnF@DqGhLGr-R#QX zmVTjD8EyUA7&dDtQx<)RV?rup{kjS!XbC1Ro=J7ag5=Ix$B-3Gx!sckY{n>MaS%;%7H1Y5uF#nUS90?gS2{4@TX0mn2esmMo+Xr|%RH!+Uh*8D zXZGA(YFTm_xsz}W`13YchF@N(Z%HgG7c)Rbr=)&P|q^yBL6_U?8kY?82$e08s)1(XWHjW*#N07g)if4Zzl3TP{`wn?w_D zL_$-EIj!7HZENun$|;jFP_%{QqeR@3MfO4iP(`b3{&!J&)+Z^AlL}U`T<|qR%$n5$ zDnUpZ7@d}7sslSlTR@{%cye3m;+VOOC*}V3QamHIX6uQb2l2HOd@VJuL5CEuWqGqK zytIW@SHy&pa#LBy)>q^`bK^vnv zNW4(b$qJ@rhcqDi-jc3USnR7DQ`a)N2vb3T+gmlY>0Au+eq0fMt%Cpv!dte9Tu#60 zT;i1;HqK2}kguupH-rt$06y(kVW~%ni_-i@^95lk*83soY>a>Yo6o!9N3t8GI3rnM z`Ho_ZoCqKAfy8#o9W+-P#+13WiY3L#@}Rla0_}>MIM~LFv8y_#8*xKhvI6Pbpqc?N ziu`)fl6X919s-NEtg3Cm;M3{lDiy$Ek|?*B?B)fXy?#-7c`$aJC1eyBQ50<2f*CCg zs}5mx4;E52M$5vs`JYZ#ty=TNg&&%K#fb~&x0nHN`ZGILEqw4{m1&V^;j@e79!Sv8 zV7rC1o{rya70IX%421$Hzd&V;(37p3TY=>XF)B zg6X&lk5qFQg)BLSj+0i&41l>Z-g5L@Hf+%n3Su`z3004&zz~V28$aLOU(}p!NfXgK zOBb=$gv6r!vX$myWDp$5w&ZMEqhjHaWRpd?5`9|&O#3(025bHUQ7)G%6K)6gLe zYy>u08IlXV=|?^?JMEx&S?K~x0Vo|C@ zMKU)qqzqnIEH>T3-AGD9LQz~w(#4l7nV|`#rCHJN2!$J%JVC;$7S1cFor`65q#R|y zWtyP|7c(ccqO4)8r)^6xWh_<6k|is{;-*UL^J&xQWh$C4?51!un&ce2KtFHAHd`$6 zF63003O1o&IF`{dJ-^_TJVBYx*;MK2LSl?t=gv!sk*(x}nx;^4l1-9~Sj66f`H`tv zo70Ttg9C}nPcZhMBEyJTF@yWbb}un)rpPNJmF#E!4#=vmn}-pt!_!q6B5`HK$?qu z2!-dqQ43|@+QoOmWiE^1DDuQAWq?9N3R;3z5+U1?^L*2n2LSHY>mZ-fUm(B3 zP-nug$z-R5TgDu;j_CsoviT;of(w!_7=?lQSv5y4RbF<`1R4PIFD*)+r^1{wQ8r2T zZ4qCol~$@NLFJRU%l0*{uvJ+iFs>Dm0Mi=zoES`v|qxdUkM6pQJ0$PVvpqF`>Caq;2#f`9ilxAkbnoEqVKwXh# z@?~#pC)8u6bKop!0VWKe%0RN`X$w_2Oo`lu8R7JTFuDAUj|%G^axuPG&9=17s|P<(S#47b+SEe3w#Zj#wJklLr3Pe{2qwgx zQpKe;+w)Z{p&eYOC-zkdzthuYwtz3@&hnlL8mKsza}gGr3gx@XYr5HRLn!wjgBy2< zl`@{%uf(1W8+l`a@L+eprL&9u5|gwniQI_)<9o@>IoG_|2If^+VFlIp(ka(uu1VM{ zX)BkuCAZR7_f=h{YpP?J>||KeS;R>~(6g3F@yBFelTz&D{MsNzo%R>gAUjttqIF*I zr9x>BGe#SPC_cb(Z`Amy@UusQh&dxrvCuk{LrHS5rG~|Lne4s=&rkRcRpu z3X3#g!Z6BKSr1RUH}+{|+8mv@L#UuR%mj+}%GyOV(OEW`o4Pf{5!lQS98|Nev6t6U=BOLc}K$Mk9dVQ9lR`?FiXo`CFEaxm4Ko#hXXz$ z`Jj;-rqnck7P#gn(nYM4Dnt=W=T4(x4IdZAnD<_ep-lji{dH4hQi2_ z?SgT`6P!a~K>jRaQ8`OXhV;;(DDnT)-R5F2uU72=3`xj;L?}`Rr#}1={D|{wo3m@O zM`w^{Q=~v>Ox;KJGh$Xv=QK&4Sl$G7DmYMKaYS4Gv!n-4tq6TfRGq^W_OgHv7Tv;O zUzJ^SyQj-Qsb$SFhd%@znv75;ylMr8Bm5B9@|jbTDcnH)oq zhL~dxxRPGW28e>dZL>(n6q#Bk>?HY(k+S`D)`{&Va+~1!IVl)&R$gJii0b`{=w-1( z9RYrc`7sd-S&0Vab$VDrv?amWA+d$)>U0xv6o(tW&HoUGM{_5X+C=FzFFqi-u!d;3 z6Wp6V)K#cL(rLv}gW3GSHM7z=M8v-RCVC}Iz^+$TBBb!7O!58(#7S0Fk8d49B_SbG zF)yhUDQTKra%--;!@+L8+t>KpsG zIL=BgkeM}40e2HSURo9dg)w#tHFz|^4dUKKe9I)L_}wc1334zxQRXlBe_Tb0_w~or zV_;qvNzeA9Kf)pmsoMFHyuisMnBmXfq29te4U!()bOR|aH*ZL+pk^)a7Yg&dw9x_t zv*cPEnC^ZU!Y>bDqH{>uSIurl6s*6zwgiFVc|Fvz#cFz&Qt@t`({UFW{&l*PYwV;w zAIFLUJqHy%B?($XwpXcH3^LmvX{>mkCrM17DSxI-07#W|NZx`}0rA($(PQFIp6;g1K8pb70xF z^y8|^r|{Ww0^$s@v`1Mm35p#*CvtIUO3n<39`bSHq<`lv5uD2+70GlG(}cnKlQj`@Kg zH}*r6*0}f{1Sfj*+IARM$u7(^U0fsc=M=%Gq>SNfc61Kr;%`n^bf-4daAt8e@UzII z8ut!VHuE5WY!h+}l@)Ho9@eHQyy!FJtmw-Yg#Z{Y4n{@;hZSK~x=N4Uf(*IpyfAa? zaSO-?_0|&={3Y7R<{0v?=1v5EC2j@6H!`V{G|O5jg{TCLwoiwhO6!!Df}6tbT6r4$ zXpQBOfaP9HFI%k#^o+IbYSryb%->j8f!L935}#-J?O;;dl688FpL#H%8|vRUV1bN& zXb7Yzb3F6>bnTYD4wf^*GbRE@TW<<6*#oYHgy3Q`k)^$r&ohIyC$=x^!B6u^1fSRo zO7J#WlQBi!S*29Kc7aiIs;3+EQ?cPey=IpATo%?W34KFmOJIYmm@@P-Gjq9>f=8!V z39D79fO!z+_xdEu@tLG2&kMNy;f7dy*ephlHD1P;nSYfz7`SI}xEL_Ae)%HvlofDr zW~BuhxVvchxT1yAHF86?erC>0pfX(K4-FHxa(*c#b`)k5*~M7M1H~+IC`YE*nqnM7 z7Q98~`mY|JHqjQ=jT^^h4)9AHm7zTnFLT}^#d2>rQcHoXzYzh51g z=qta>Sd1JQv-2#CuM7Et zN?}QJVcSV@)V}d83uLv?#-F9AfFf*@uvKiOGvE>osU+I z>_^{~@v+U-$(&ua@ z&%rjLn&4-q!C5FWIxUst)Y`E!4(|}HjE}<8=;RTH0qGj>l^Ly&D5&qt*R1N+13P61yVtXe1*XueKGggbD_U zH3r+-399oaAJOx97P*;D-D<1z_PEdV7-A`78MKDcAf)7Kze*t`wrM1u?e zMC*p5(Z~tn0Z9XomL$koL5EKn%Y z;_}_MVJ*~8*a&5WcxFXDe0ewWcU5x}P-1)j-C?&W*pDoX>9GaYtr$C6*tYi+7h03la$Mra!w1r zM)oKf^GvjoLZzCPP68dnvrdcrC?%>X7pJY{Pe|=_HHkUhjiC|uCgv45zMkhQ6itfq zo3)e#wCYfJ9}NQ1Og1j(yGppqv(iY)YBcwxV!EtUbm=@5S66eSthz9Bue5Kn(O65U zLNOE?JU;!f3CZnIh}l!a^Xe4~1chnMAowS)v4Wcg-)b^`1iFx5yn`UL}U-u2{^nSw1cP5c50Pu_a@Y3o$^_d1y43FjrtETlB}TMO;pQRq?5Q)|ejG5tUGA z?c?3}15*ds5M5;hZ8)!(!lVgF6+xOrFA8}wZpqfNO0lHx*~t>dM(MVsp(`jeWvygm zwtp_O*IIlHOyaw@#2aRl!BfcB2%U0l8oL0i4f0`*NUXJxOK+NOcHwFA#-;B56duBs zbG@w?8;M*K$Qea?V;(i<^!N}7Qr&NVoAcXYoJ@ zQ6ky2SdtWHM!q0!>ddpf`eG4GJoG0qB=Lz1*%vJ?Lcc72o|XTyti1m$l303e_f%N20h%FHl{e>3_apWyE=|Q*)h7;t+ z$6Z{kt$|trRMoSdt=|Ik)@wc5{HM0+Nl{^w{P)eLg|jqUN+}vG!?JJ5&oLiBIKc0V z)%g~+m6id`*R~p#ykoj>+!ZpH=c927nOlrlOzciO0Jwpoq}~e8(7H%3Wl&Amq67?} z&H7YQg;a(3LHS5!ysTJQHrStM#!d2e@RnGXv*Mks1SmF>RW?bcP10p5npiTEytb@+ zIY(dv)hc;%u|zY8%-W}=q3H)jakh!ruV_pwwwNX^Dt5cBMH|J!gPy!gRnBQ8SC5Nk zuZ^5Xd!l?a)8^R+oe?ujYnQHAp7IdJuqR}VCe_!G|~$babN zQDO2J(TXL77~CFN;q2Lx{`61Fl<*RY(%Uf%PweSnJ(!+^D681YS!fDMobcvXni!#6 zq*-D;dr#LK`5hZdOW2Bv)=h&Z#D972zq_e4=?`9i0kvbA4oTYzm&=NJfTh@+6n}?1t55 zZSk@Ma~#@{3^^rwWQt+ULOF$Smgvy-1~^!~XT~8!y|D%>pt0UoN6ofEkSaBw(zyD{ z9F>MKCoHSS=^7fKLH0OT*^1VKCn_OpiZAhB(E5y_`xu-0|LaDB&X-EflD?VMftM?d zg^feS4GrdH8WN=nwOfl@jBs94hLkH0?fEL3bSUjDWTp^ZOC5&dG}t$@2yluO5~{vN zu`&;k@VI}Al)c{h;n_*6BV?eS9xeCmlbsl$C zQ(ReQX2qFC(65 zN7lJn*;Dtn%xw)fJd9cbXz7J)+jlP5WL_*rg*OV^Vp4RBfym(~i~wpJ^l&XgYk)p|J*E78* z|1B!K_^i(uG{WPyqgz_pkf;HBg@`Ma>=ig-cxow4P%^Km>=2>oNZ(paMRB((gLr<2 z9L=d4GRtX2U%kwEw=o!((ig2gyqBrB`aYF;7`8$-#%wi~!E!BmVO!DFLcjD9u*{qO zWhC;lhU)&*)Z(2;JSM{3)k`J5Oia5O=nYOYQn0|M_jFYls&un?K`@EZcJhK@{H*Xh zaKS(|7G1HfB}c@}J$Hw^jGR?pwvGv5Ns#Ak_^sjDFq!b^$ux7SSLk8QwtguNuy~Z} zx)5X8;4-zNgf*0nQMYRd4Vo$QIuiR$o?w;KCo{7r5RgAI%^Z*v#wi|T(;2>=_MCZf zo(xlOw;qjQH`qx0IysWCLZe;GQk3k`q83qaU-EA#;r6)2q27Mthfiv!uJnT{dHLXK zTO0l08kT)ND9M_A;))ik`N+`@p4PJ7R(M;M6c$irO52i8@^trfwLRUPlCbTTtdsGN^#vMd zpLo2kr1x?U8mB$5!hc+m@98w*pEcz)3PL;T>3CLXY8gozN+*wfY0%!boatGOrq@d_ zgFwEN=1Z4P+eO5tB;O)-xXg=+07>*GlHh75VUxCs5>-Ohy0WvC!Y3`?EJ`n}@Z2=5 zg}1J%Z|v@DJ%j!Et?PJ@TyVl*mcpxR1}hsIN~344S-q}xnJfv-wVnxAFG?5AU$CHc z{=(LUC#DNdUUbsQi$3(>56+*zX#RXIZoPoVS*Yu9?acF71#Bfn+DCR2Cvj1F&gykb z&s{l>XCigihbR`Tlhu8u*)g=C+IDIG5^n6!r)=mR%(`Ec&iq8{nwrA5);J_4QR%OcYN_VGEhEC9cAcM= zu3371ets?1y`#F!`(Bg|4R+CaGCs0neB`0=(QC&?ZZG6v$43rK-g586!?*HfeCz)4 ztfakK8t; z<$Z^qy;~q+yPNDv0s)_$WW^KJ?sU z!mE!9I?%%KNY>%u8~03JbN$2%U`S0JdFWyK@*YLBk%M;rmS$9{rxU|F=wRa7?MH9h zJ3hiiAep~=((+3r$47Qf9K7nt{Uh*5DH~hhi3cX{cx>|KjIN;}COY{rG@#L4#bL1g7smbUjzjlv?FA{FE89Wqd2`0oYV=$`Y@|Z82WaQ#&p>GFRi$j10bjuj; z7$5zzXl?JDoOomx*XW&-6MKbY{nd4l;&EgB>-ATX05>BE@a67_=V1Eljy(RP=m}xz zW)#}q5?NLq@Gi!Q1AC6{`|{!2ujKpq)~}6^@*hcnou&$g5lubbWxap_$4_K|;n9gZ zA2|FJm+d@!>YytWGd`_ZfxHHTi(3>sQ2Ur*W=mSinuAm0=K~DDRq66Gns6Z9>bNrKQnNN zn1&gkjqWi-K}Z-DHsVUYj~W|20y&LaZ=bw#c;cG7?58O=mgKmklJ(|IMbqP>Mi8;C zaq{T%>KT-c-akHyj=q;}u}Y*lxDrh%zW5MbfwOm1t9eQeb^0rZA2jWd!egEO-qY5h`RcIhe8|2T@z-n!=PpgkIvw@a!#~V0>clwP=rwo$Ljk+All(OFDIT zR5%)f7;h9pf+HthuqV^uVCqXg$G6@*zV$&P*AvZ^2kI6UabwUZ7n#A8;Kb=<>X9KK zLAwv{MJ6RI*1IXbObv~VZ@t=h^+D77L8uEls8LTH9r@D4m!4(DEXVj;LE*58n|2+& zhi-RbcrjjvQT|&0Vt&Yzp-S?iv1HOH&!T0CnFU-9U3%ovhiH+(AAa~oyafdkQ!hsa z;dGdK5cfj?gzi?G#VyV6D5zgaCo|?g{@&eiIit}MWz(03j&Hri$n}Vc_M@Ua_6+75 z9)YKiT=O;K>HQPeJZQp|(MJ}}LgKalPEi{zWM>vee+bL?Wz(4VUQ>j-;|PqAO`N$F z?VAa^smokUMu!WwH5a^4?F~usBr@GHxMQUsoRU%yZ`1KRl!*AGH3~KBs!>8-7W)nUN zst@8x7;d?-q-hV}$w@|^qD|(UV`1W&uQJEUYj;c@cwAx;4DeWPHMQ`{TXW)jPeDne zVi7XrwvH9c9)-C^rjVx*UUu3ryg2KzBa#=0?jC?#3iXFkD0vTz*;!~$NxkCK2ygt& zCs?M)l-H?qxhyU@qzgIRPn*&j(aAadwlZ2J(MD6XRQV8C&0AGj|~~t0VSmyw`*T{KYT?r`WrkAkD!le?~;ya#^DF=7T`kKxp&DK%?aLlkS$;P}=nO}3;;%4|`5L2G*CLF^B` z@b{oGF3bcK`HyPD4Z2$HtzwNLW2!&24P^9q=>f-kRM}&hHViSd(#TVu{~MNGn!NP2 z!Td;}i7dNDj|^`$>*V8wVeU50v5>B@&zIs4@l*je_vq!~miH>Y@^y+7jLohaPF&p= zUjaLD;C9I=X!iUY3l3U{hWm)E4jei7{KR&YvcD*`=v5tg`2L9-i1KqI`O*bTWk za?d_9a*~z9PY^`lETU0Rs22YYk2FrToRT1br~dyXy#`hSA}`(BQ=5f59!d2OCe|Iy?>AaZoOLHT}cKTanX>I?JeGhXsDhRmIRmp7;aaqst zUSziznKaieh|!@J?r;YydN=Mz!M^evOZFzZKc)PFnM8}yOJ;UJ7i|; z@RR$F-mxu8eMyRnwG*B;_Qm{{_M+SIt=mKtcVh^5aK=XO8y`I=&cI8cmZh`Zax}|2rP$n^sd`HvQP;HW3(6$ zCVNmQRYH6`I8j)0tjo@c13M?KLW%F6*m2XL=kJVU_M`;EHy?WXv_=xwsNkf-kKKM` zn1C3~bFeVjO#R5mSo^cSRX3ee7F>KZbmuK#JoL56TfdZJE(Uxr0XO6FLGWwg z9J(bQ!T2|*DW+j|+r>n7bU(6RLTc&7zT!)s8O=JvX{st(lE2xv@s}yD_T_@2;9DvZ zj9zmLp^lxfaT}LjKbxdSY%ZttAs~)v0P}$z+fTBV97Vh`f~l2t5P0bCANtT6`x*( z7idXjsdv9ELruIN7HyzyqkCJBn%VX2emDGS;T^*vUxwe8;|%8urbkaB%&x}xOB^b{ z+I91byleQFB#;}URa_Qe8)zt=72%2Gm>?J==?ijE?f1#e8-2u{A%xb&A)C%mNT#9a z&Mem&wUY!dT4r2TXhx^_))- zz`-VGax={Q5dxEMIfyk^4d0UJI>pz>q0pjwnj;vayNlZaw@M zX$M1Uh;gtI7FdoPII6e{M{7qwu)@J0p3Y}M=tLsWd&A@{SRLl*1I{NhvCXVRK2BCW zzN)Ajh90}|$a7ndkw*_3rB)S+vhxXZza{PCZf6=atqSFFnb8T(KH%7g6cH8gi;`nb zyDnme&A?My`yONo zh6|!YQZO_~aybnlOBgcuq(6~{{mn9%S$>KcK)aV<(kFJo95)<#mYG^8Q3&NGu1BTr zV{v6-FUwRK91^!O8Q(f=R?4)f^g*5pbboSDVm;G2oYkNN>CA=})EDzGDrIfJeK%h{ z@$fAZ*W7|=Hx5R2+#1+5SHVbdUxNk|9S^+#H=-Gpbe49|5QcXi`Rc*R+wqgH6Rxjk zPz;TxK+ye@x9*#Gn#AaV$?Z2C-ba)R4^161nibC0z$fm0%yKzn-e%l;UwV-<{ zkS}Y%nG?031YjjlD~1$X6bQ$ZKrQ$(ZNmtTT>Vf$Ql>I;N?W_bqs1aQ+Re0ZC}%m= zo1x`Sx`jM0o$j4oP-x-~7GKIpm%EQ`xz?;7^ED-dGWn8`LAp^yHIwW(fe&{bdXDfW zl1&Sxx#Iz8d1me516NO8JKP}bz9;j)`mNINm1R5kHwgiw4DqUIk;qgbqno(nE5=|% z2n}O@fJMQ{n^_Tt1vK@!i4)cLAtpy2eDv^Rk0gg5-$@#s1(2gRe>o{x>gcBwNZHhH z1i{ztz#)Jp#n?2iutu8XEMhEK;Hh*@UJM2Xa{Cbr0eB|vxB><;ET{(D@0$~k=Hr?- z2BlY?P$M4rPOvEyVX>a1Xv1L2JS2^;Qaa-T27%AuY{mc{P_EGSv4&UpnH|LI zM)MB4JC$vxoAML3qO^Pwq?zt)$3{o6HwW_M*2qERQ%X56zA(i{eaZ0c6Hh5mSxkC0 z%p-)%G=Nzm2f5wQawTgIM{g%gexR|{X^Exzf7#}EE$Fji3@AaKI=3Q>#0y3aJ@v47 zLbk+&C?)|8-}bCl&9_oCgET+EUwlpTUXc6zB=;8g39FG}FL-P(+;RAEcq^EjMp_dT{AI^i#;ZDwc{pV3**qo7gLqFVP!Qp{$!16^sEhoGx}!c#7;0#g9F>B%9^lM zVJO7ZVevHfw;#(puKxutd|qozhxfyFd%gCo z!L*r^cH`m4o<8&}*Fbog_TbMS2qprAhc(|E;bnAb_Ow*WS4>$hXqYUC1dJ?_0N%~Z z$`voou>i6^IsC+Jw&a1egG6CgKOVl{`1e3qnOBct3(YhFl$82!VB|a(lXt>Ekx8$VMd{%;KaL)}CrZ5kzPANPZ$7L2J3*jk3Sgyo_ z`?CxHs-bYh=#`Ptku}z35J2f$nDxjv?mlwelZwivgm>6U5l&~6Lr_Fv2z!Br2qP=H zjT=D*j6ND~-ya*ad*w?MO`A8a9;Z}C9SHG;79y0^^BI91%f0Ib@MsxJzk{5Z6mjMO zU4&u$Hy0+ZDC*28H1@v_nWp6eQ}J!|KwxxtSABfu7u7uw*#1-$lOAIyx{t zzIO^e3a_}HFS{etfURS#e~xb@6y`s2kJTyZjZ9>UHAptE9eIo<5*gEpqzF!_g_30o zxtTG0AALxp$dW)6#*6E)O;ZnYn=jB(6O}z*h%zcy!KH43#74oE=roSfxaiRHH%%yv z#@tU;kphjfGwBD*<;=vPkM@r=ULj1%zWulgE6 zp!+e#_~wrGdII{)_1WRbm7B@KGXw;ZUkT~qz`H3uH3&=nwlyylq9N-rD{`nBV)z* zDD=Pp3M=&+| z;@fS-W4Gd}lGYfD?YcXHt5cwAlR7Z*P^5|Dh~cA0yxjR}yWL%Q#FTlD9i#HhHC?7V z8tiD{#;8NJlvCCkV9{d=aj8!sX!Rs0;L?0{#uTJoDuo1FVjhrIO~VxM&LaSDA=Zx5 zu&69`Ogx3@eW;jESR z7ek%N2T1HbHFKta3Vns zYT0%O@M|NJDP)?iBpK-yOPKaXiui(uipO{GR@0r-qwG&-&E%o_U{_Hv{t9SDDKg=%?4vfQnyl60BO#0mWtCK>bYu^yuyjry?n@|b30%wg4CsMk>BrnDBX8Cy zVQtQgAzu%R2tdiD4wdJ<<{_nfWxkOd_I!7D3Bqh~}pz8nU6?{e>igC7PzN zb7EPekmG5Fnz91Btq{!SyOG0!wwClgS@i$e5Cp`Z%8Ery4WU>--BXLwmW$S$w|d#R zXRf~J{FXFSMB!l-;~saig8LE7x`j1Gjn;@Ni@!{Cw+@Ss(8%&$4jg)h^2s|Uhbh3= zZT=}lw2WQu-k2*M&0AxhIhY4kL6=o(!vJ=ox#Gl9Or+}mu_D7;C$GXOFuR@m>sZ3= znL$OA88IRdtyqJ&6{ztuT&g@muJ#!MPTUUPGvc#?3@tuXmdVH# z=g0;|pJHS`b!wIebSH?B$U8ms%r%puwOKAynNFgZu?ja7yySawY=;u60#@_oEtzqQ zc3m?P&|Dhv+)zrvY`ozG}jU2v32E{!Q^M#fYzocMtx+ij`G%V+dRaeKLS z<6dm_BYrb%e+|R3^YDYuOzKOFyomvxdvfBMCt@B_S5E0|XN)ckIg!H?Pf9scChlA& z(KttJQ*t4e#GsLmDy#Ki<$^ObaXm46b}_`=YnBj2e!!Q6Y|^o0=~yMeHC`O5ZL*b~ z^?Lp{&+N?4u-$bd3QM(JXwGAmnuzs0pJL<@8&a|-x+cb!&4068RBoQ7D_C#cLmjD` zbpEo-u#{0R8+1)KxUU%s^JU6o^(?yi-VU#$F6$KrVi^`o{4t6~f99BzqUq5WS#Vlh z(ZdqA@EnKk!Jg`Ac=hHdnnj*`3XVNkbS_QQ!D|-z2`|M9T9&W@7ra3#Z+D6DWuA$j zxc&yMlq(QLKjo-u#$@OYE9Ry!WAfH7CoVav$}$lWCrn)+ES0&6cqN1_a#I(Cu+tt* zb&P7(4FhTWlETup4G6EHu)atftbog{)Q+rnEPFBv(`Vh(YD`dYnWd5NWOZmt%zNw* z5)e^uA3ku;;p?}B=vGKK*Bhr9-GHha9-X6r!eUv!6J9xd$M(5NlzVAPTkI?GL4l`2 zb`vhb-^IK1(mBZP8e>m6&bM?~_EXTb`y1nY4GAVvgq^mOY-TxWQ0jB^NiWXxHP%ee zwz#}!9{sLHLB$$n@=>S@bFC(!DQ0=(An!B7LmlH;pJa<>jQO+jL?|Tvp8GU3D=qw+NSPfZ~~4 zuGxMp>EL18u@Ai*Z{k1{rZn;OCKvm0v?p$ZOL80D0=6Ri`CXWSkv#ZiXvCr$^o+!* z1*0H3aAl)iL{3{4w$1-^x@y&$FE0Gh{3}jeI3LwZV+&KasIlmYwYTi)3yq?lP>e@_ zsa?h-=j_!WJd2(~De*?E7AKuw&Xoii3=bh5OWVB--5v|;_$iXfg|&ehOLQ4CuXg{D z2fs1#ygSIz;ZX5|Wy2^;zY8yKkK5033=}#_vRsAxf8jAWMHVPrl3V`5P)vZ}5rqsy zK4BEi&zeaO_H&A?$(yhp9kL@gnZ1rNmsDYA>N$0NV|`LU%l+D59SmDi@LeG9F^ypP z$3hm`l$w+U7_!=xSY(1r=d4RDBnvWS<@e&+?kpZO1hFyE=p|5P89hZ#@_W!HMLyr} ziP1tQrqEHc6VFqD2Qn-{%)FyF1s8da7m3j`*WhmwEVmuL6NR-qEHwp>kw7aFzer|F zVVfDp2fO`l1Q!wp9n14}%j_W~0W#n+P(NliiDvhuANk1abaI##+SmzwQeG5xm%C6C zu5$;A%ZP#g9^N+`C}@Vpg=FI3)}vPu>XJ;jmc4qV^=MRvTzIVe&bWcyo!9IkCf1Re z|E%tLyl7Drk7w?xhrE)^*jlz7o_4tM5sL{#CiVDr3?C~SBX225=&yO0iSvE&J}XSh+_U1kw9BnDE-glx-QTpiBpSNLNO4?AYa|E4^Vi)? zCyDSAx()l@f%((oed6769E$|qbM4lFbE6LyyX8!8}nJ-NT z?pKtT&YGKq4GZRl6bfEs>80Yb{S2-tsP8sM@}=-!@TCi-Zoci@m)*y=;O88uUh3scKHMZYe8T!*WMCSL8L#kHO#i`iLfhP2T(L)6r) zQEAc)#aySY!y&~in=TR-@{h%?c4S*kvyGe0d&|8#YhS!X&cqW!`3|FOXOl@n`)oZW zaU)L-p4~oMj~CRl#%D*5D^p|y1k7QI^I>>ZXK|62XeslK5R$TwANT=}k6YmEZ9cJf zP?%V<)DjX?lu1%rJcLk9bd$>{Ei-52jcg)T3!w@QOH_7rfGM{GKiq}EycYWJPs6Lf zu;9@x&Jd`^GNrd*{`}b~&(<*UaJy!mHH&xPlA|Vc3ftG&Uw<7sYVvC|njr~Y#G#9FLFgqmAcPTw z>SOv13_BJP=GchFx|FcVTqo?3@2(k(HK#k%mUe{*Q?z86e2p97V^-U=K`G(dj5iqi z9)CR0(W|c`ztOOYZhG8(tZBEv`6wSa{5VDiG(>f7tQO}KrZVLs+y8VP9x0oM(C91! zdzNII4D43;HRyv#8KFP!X}mHtj`X4O(HB@{2!n?VgSZfd40<$6SskORED&4X!d%eb z<;-Vn;98dv(ld2+z@D_TX=O?$eoqcrH0Q za@EAMPw;@~?m>9F7+VyCWE7QncX-NEbG=f|)Z}%3jwkazOQtMi;s-qAnF#{^c!B#N za;DQt9pfIcVT_Xfm{gs3l9x_JI&g z?lr!Q=~{JDXtYtY7VS%%c+z-LG{^L2!6+k&x*EmD!zVb+o3YH3NA>anq|0w02Hq}X+6Z_J1+Ko*IZEQI)ugu2Tltl zvxUaIgf#o@*i8i1_cr!*t>R&T@oi4oz?+|i<(d|N^Dxn-trV`GcKR>jUY{U;_0&>zl;!Du zcK66z$SZyIl!ajvS}h;@ZX;xgAmuqXVD_7K*2N9?ar=^F81IatrtL8u5M7HR!AjC- zN_1ol6Clr~;EQ`ZlY4GF@+|tJd0!2^WGS}dVq)gBOzjqnT-=fnd=8Whh@GMeCbmCl zVpo13z{rmDbTsq!i8~%K%VzV{$$V>@Qb;`1M6aq2j#-n3B!mY8$S0JcqnU$K#}GAS z!G^m^Y~m23J*b32?@>pAMzWNlvJrAD%?#%c5p>n!j}kQPN^%huiXz4GBQmsr7l6to zf9>R=aWt*9N&2K=qp>`DGq(Dor;BBeOi;c|4>ByM4XI-KqJ93_a|UsgM#~#1BM%j7 z5n}@BfQ=fz0(;A4kPfll(KLiMOI_jtjI4(Zd!|}Ml0Eh?-t5An=f(B!RYWlKi88)zu6t#8zZ9k1vQl>$`GX-X8LS zk2xDLg9zd~t)S`xqD^h)#=+6XFmp`D1&5$SlGW$p7b9{krBDArrI-gW|1GMY2Ik5A zRK}S(6CoP&K46Y8PK9x(hUjjKuW)lIieg>PQmiZ@?EU)WO-z9Qfn&A7932af1Wg;4 z7ibsCV-@#VhP>(0l=+AXH^|!HmS^ib@;W4pZr8EaVT8p!5TP=JM2yHlS=R1Y;gBIX zsGrEkL^g#moU$^Hbh8Nyp*QKd#OU_$9B&(lJO=O!2BDZ9L>_;oqdgN>Kch`6)2{m2 z6m_FD5_1AsU16j=Qs8}APL0;Ip$2=wNmiI0-6eZvEchY@Fg&nm^w>|3O!Y!5!rGKE z#{Gp1hk(IF3FhCKad@a|(=EKXuHE0c)qZKE-JZ$B%T0I)jKaz12bkIMhfbk6Mh+``!fVLL$J)^uU{m@B7ADZ zuild<9~uhdW3f(H6=<#V#&TXy3#OqSDS0+m)Kk5fqjBv3hXwA|{)(o0+iMXh93HhL zMe=ULNA?Zd{z4}56})eE2ipd(7%VuAAZQ&g%;P0*?wkQ62<W3tp66?e504>3}r9yEvtVLd(#ik z90DmPydhI>nXb^om9Mh|7^&Jk(C7V^avzy_F-wQrg91RBf)4QY+Ja?kwE5B|m>0C~ zy;I2rF-&1L8IvV0$fh$^euZu6+4S(}j>FrZn7nF-4J3}DuBqD=1QYZI)A8bCDCtwi z#4)NobS#eYWJ53rv{$~uklWB{!xd5vC_#8OtPeK!BHC@cPUcAuPGiD26s|1!D{qP| zEK}}@vA7<>R8FBajt1PhF-ITnpBQtKhj#%6F*sN(db~}4Wu`$otzj;SMqmn4Ax>6(7OoX%Nr=qU_pP^!LAJQr?Oz>+WK>SZE~=*n_Scbnrl zP4&w$!&YfxISXSGSACrTLgrqWz1}c8Wwk>()_saGUl~!tTyH>$-czGA39BWvt0#L} zK@=|dKl%y{91&4bZqs5BsFT0s!!f)=H4^4473*0KJx2)yQ&FHURme7&PeTY=NJ0VDjMb#J!NHz_dlA5)Y5Pz#AJ3XNV6R!}!qjbXs6F z^LQhVmLo4G0?ZV7;h0{aT&gk#v$$qYvjw2Bn66?{@CCGqE^A!LVU&!X6*Puk;1)tJ z->5-ue;BnvmIrpifrMv*XLaNu)>hDqw19TWN_s^=e=3_OV#)+;$gkxv#y&A??WCET zWQOS_?Qx4Q&}!`+YVEA)^|GzKmHvLLX1g4XYxBqSQR`t@yMuF8lzH0 z=f-vIvAFRT!SouLNJZ|CuN9FhC68hHkzp0RUc?rA0tVn{IzWVT_dS`yPJZ=GHiKL_ z%5!|tLa{08!P$;tsj{w>jAiz~%5f=(nH>9)(C zX_%_bNlcEjKA4kxv8)>ToT6dL-+96);bu<*#L&&GVgbpGB$Vl$KH!eR$6eNV3|ca~ z;8yoV+K-QL$kvv29ur6EOtEAM<8oRaCEbKciZNb%)=;_byigUQa5Y$DL)O-7lDJU0 zD+X?XzSEX`poI$$P>&BZKoeylv`AXoktib*(T^o6&BM$^wrd9E8=hs~s1h-0o;2N?94AeUVF!h;i6ZB3@E9?1HH2gQg@<1kC} zhC^u!6@jTR5fJn9oE3Z8zw5=O_bsAour-7CgQF+dc#C8 zW>^4=H8pnwQhcqx_b6VagOSC&u%n#HfyNy~KAs1(OO05MFI#svZIo-;1~+ zG&%5l(>d}M>aa6NVMGcI#oVCs4r}A?f+iu~3Vq6HxY$EM|8z3rs0v0@DNuY;QMAWR zrv9RO27gm}UQfdxBho7Cd>DLt$?rpdWDjAY(lGN4v$5rB%6$S4i}B%X1)#y#dnpmt z6c=1-Da_yZo=_HIWv24=j`7TDv2|WRm{naA?m6bVN5LwXRMMCSS|E4?6mu+met6?Bg0_WHkd??3AIULYUBlma?ehjmRP9Fo&UGD zbL)+>y27x3$`G{@D8g17(F>#^p@^ynQ6eQ(rB)T1#1muL*r^XiaAhZy1Y%M_4W?fy`c}HW^Gz=UB+pt=Q(MP8HU+dn$e}*1j_AwGY@DoL#1pW^?tz z{Oo8&O%>(g`fmf#C-`H=3z;?x5KgrYR28-$5N-97ygzfDl2hGgG4{xhQ)bN|CKKWP zk$vc|zo|kTfjb*-Q?Do*GKUukkfuOE5HPc3flOH852mW4v$5$rU%ib+zamA}<0Yy^ zVm3A(e|Go+Cyk#zF>`Wpd3}~+t(Vrg%Z+|59*7jPZ>`C`S4IH*lp{hD{2Y;bLSMVz zo_>Dm+~Cae@}hI1Z5$))bxENHX)Ps zn=lXWTDdN%Iwk`dG1iLoZdGRAN3-a$y+GMykKXjC4X~)_!$DLt8ct>$nKP=lump(F zm|-Yd*l_5a{cwvw%2UG=5O|S`shZ`D9*$Nuz+Gfu!&%H`Z_VdE6kg`@V8M9t-L5$#ZRLzjY&hb(5E`XN=Wl5%-7Qd{yK9@48O z?qxp7QL+vM|46l;jzn*OJ5At<6M8X)#Dy&ITRbS8SZ>pw{uhW$$F+vqcZ?uY*>%M! zcq707(&m#~T{(=dOpbB9R=fhsDZcJR<9@Px|0a{=mTFJ1yc45aXP-+Acb3sXBb`mD zHOSLSeWLTl*N;U3-Ehhsc;4B*c&^5enwgQ~#AAb*R3YLarZ2)xYS5Kmvb?_7F&4a* zGYD*G`B}>y)A=qeG8Phi`s7nj{pbfzSX$1%dGzG+^1}Q`-yrccL7N^OdoD4w>p;f1 zI)9h14by6tZWD{d79S|9i7|sEvD~Y+&G`28BfNwQIC$I7DYlC`9UYt_ab1-4CQSJtzx%ZG_O{ zJwJJnt^b2c7>99SFN}W=pHYdi1lT0Yti}GdzwYlLgK!NSe!@?CcrQb0HU?TLDmbuN z>4=4PiymBgm4McnC?Q!Cq5SL48$$an_iU{oUl`{ELq}OAA*kl0Y- zrUCoshhM$*dF4qe#z@F3mSl|Iew5)&Ri*SXlpP9Ghk3?93H2ls>P2=VGP$0Mq30Yo(L(I68!}9~ z(L!P%2#i#=)mc&69WdHgy8Gl$Fe+PLZhy9a=~d%N_mX1+JL6T%-!pX8Nhv9X)}7D_ zbyopsRPgslAz09WAGP3O)$cIMamYnwiA#%Q`GwY!0K2(?fnp|dh2;c7QTo>5YYM<( za$dGA-k3?|JoKAEwF(?2gn`FOH(L~F3$JScQ`aK9MfeiJS6;FN3QX*8U&X~$UMg<| zzn50g+)jtoHphkMmQ4BRg9$ebnY?e)f2Cl86jW(J(gCTYw3B$g+?24&_f$W$4yV>B zdX!c&$6AYQ?gSi!{SGu5)$NUd6svi($E4$DPz)62NLA$#HPgaL1C=;BHKCuB>wYWA zB6tzxH*TsXrWm$y#!JjHVuDuZ|@3S!O8N%OtfdW-=A$x`7!L=IrqY7 zNfGsf4-KI7wcxj5{}^&N^Fk}Bb|&u!X*>q@A-BU9OIfX)w3!KZ61S}!j6R3+pdUXS zu27pj_rRbtFCqd}QGRx1d118lz~Ia?qrvLAmH7*6gYlhn$fT|>&JLEA*9MEr!&!ql zS}64Jg=dDVqi+fBOuN+k=c&aJ-w%k2*DT3QUEX?F1JaDlh3uZ#w3y#B&)?HLu5 zD}Kv~h4O~M{3`8OA*^1TF2kaniXmJWKe z(DQaTnc5dV?s*i%r!!agE*WJZu$Yl_1xb+PI%nf5L`9kiC4e4o=o9BU?p=CSPXJA( zC18fNGS|SmBEp1pF(tTH-nl2%de^uE+gk(!Q1J(0v@mJn2@B~k)dT)yA%B;TksaR@ zxIjSO5z$NgP|yDkjx~TH+f|t+UlSvaz9UP*Kp6r2!&99mif=mw?*)%6m1n}Id%`!E|&C97PA185le(k z0cb8jvNIN{IwNh>6$NUX-BJA@u^}e0!Rh#E_sxWn_cs5Sg2^zZnsJ;R*#}$LTLr_} zSztIh?zsw41h}a_@@xcBHfdsY?C(WJo>ztOMY?MY)j^dtbQ;$T8yCqy>H)28dFkki zhOd-ANu0=G-jH00ZWHME;BeoXsJcu) zO>Gj#k!WJRWcWTv0^D3klbTyw;O#7u5C5H~1ly=>APPTtl& zEdV?}8m{3TSEpBp=SL4CdZS~H>A#XfK88!{!$sWY+{o!=MC_m)?Q?K2X~J4@O_d$Y z|Nprcy=xY`#7hvsL|Dm%)Z)&TSx5ml)=K?``hn*bsah{ zPIC-RQSdEVlb@=xRbZZn@BIpOe(eHK1abf#{iXqUk|;dIjH)SDvRZs^ggOMs!G38$CYb6N{nuBF`6dW=8Yqqb3M4`PeVhvpSxX05#ho zdsLXxRs7m54h46%am^Uh(Y05lr{6G}_O#%3cBx|bF_Ks{V-OGMsYMtmRbsYO-61MO zP+LvYpB8UY@1h{elS0gCcfCa-T>IUOk449Yyq>Ii10?>7K~Ns9?tP_a8FP3hGyn)4 z*eQ-0s5IHIo4g*hci&WTp7J6{I`z$_?u`rG?L7{WnLIagGWX#>8d&Bi-h$Y8! z0fl#hH~YI8p4uTdPB_hv&34kogs~muH*wGbEu?uEk%-q2xkDl~%tV6etpI4)jF-MN znaaNSVr?cMZEH?lqW+%w@K4OnfDFmFZKbTmZ<2f=lUxa;>qiLcs%^_lH1FIy4dw=8 z;7XW61wP;NB}&VHNu+y%s@9t8twPA#%_h$qtOvWhe@XB9;qX_((-yMx$H~*D2kK5U z`w^re74bHj)?8pEdPGpUrIi|}y3xA*a-vz2t|bu&yv18ZJrZ-^RW2qf8Rhq?4L?Iz zB!_@!*uKtea&f9EROIh<+f|+^l2H6McEZsZF!P#Ym+ZQ;qy?_uv>7Pb)j9x6uIJYM zt;^=N-5hBWasvL>3>C$Ppki~Bk=Gpu=j9DC@R5Co;zrGR}qn ze0F)Xdi<%C`MLR}9dQ&rG;aURmHVYu5c?7 z^2AvMV$par;g;HucA5uhpn~Rp>Sv4dX8|?j%|Yu#^vt?K`yjizG;NU2kXApJb^e8j zpjioZa3gxJ$!|q6q)WS&Uz)(%xE$ujVZ;`cu`S(kixqF1^nmtmXROn;(Jm|kJ3^c| zw2dT`xRd@I-bmzPmy^g|it8EmaoWD(>}{y@;NAhW zf2q<*^592%5B~qCuVO08tGaIgu(y@HAvUjnt=%}}!AER#N9-)yarey>L\n" +"Language-Team: ja \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: \n" +"X-Poedit-Language: Japanese\n" +"X-Poedit-Country: JAPAN\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: plugins/badbehaviour.php:47 +msgid "Bad Behaviour not found. Please check your install." +msgstr "Bad Behaviour が見つかりませんでした。インストールを確認してください。" + +#: plugins/badbehaviour.php:63 +msgid "Bad Behavior" +msgstr "Bad Behavior" + +#: plugins/badbehaviour.php:65 +#: plugins/awaitingmoderation.php:34 +#: plugins/domain-mapping.php:60 +#: wp-cache.php:1205 +msgid "Enabled" +msgstr "有効" + +#: plugins/badbehaviour.php:66 +#: plugins/awaitingmoderation.php:35 +#: plugins/domain-mapping.php:61 +#: wp-cache.php:1205 +msgid "Disabled" +msgstr "無効" + +#: plugins/badbehaviour.php:68 +msgid "(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr "(レガシーキャッシングのみサポートしています。圧縮が無効になっていて、\"%s/plugins/bad-behavior/\" に Bad Behavior が必要です)" + +#: plugins/badbehaviour.php:71 +#: plugins/awaitingmoderation.php:40 +#: plugins/searchengine.php:69 +#: plugins/domain-mapping.php:66 +#: wp-cache.php:1552 +msgid "enabled" +msgstr "使用中" + +#: plugins/badbehaviour.php:73 +#: plugins/awaitingmoderation.php:42 +#: plugins/searchengine.php:67 +#: plugins/domain-mapping.php:68 +msgid "disabled" +msgstr "停止中" + +#: plugins/badbehaviour.php:74 +msgid "Bad Behavior support is now %s" +msgstr "Bad Behavior のサポートは現在%sです。" + +#: plugins/badbehaviour.php:76 +#: plugins/awaitingmoderation.php:45 +#: plugins/domain-mapping.php:71 +msgid "Update" +msgstr "更新" + +#: plugins/badbehaviour.php:83 +#: wp-cache.php:1295 +#: wp-cache.php:1297 +msgid "Warning!" +msgstr "警告 !" + +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "あなたのコメントは管理者の承認待ちです。" + +#: plugins/awaitingmoderation.php:32 +msgid "Awaiting Moderation" +msgstr "承認待ち" + +#: plugins/awaitingmoderation.php:36 +msgid "Enables or disables plugin to Remove the text \"Your comment is awaiting moderation.\" when someone leaves a moderated comment." +msgstr "モデレートされたコメントが残されたときに表示されるテキスト \"あなたのコメントはモデレーション待ちです。\" を取り除くプラグインの有効化もしくは無効化。" + +#: plugins/awaitingmoderation.php:43 +msgid "Awaiting Moderation is now %s" +msgstr "承認待ちは%s件です。" + +#: plugins/searchengine.php:61 +#: plugins/searchengine.php:76 +#: wp-cache.php:1218 +msgid "Disable" +msgstr "停止する" + +#: plugins/searchengine.php:71 +msgid "No Adverts for Friends plugin is %s." +msgstr "No Adverts for Friends プラグインは%sです。" + +#: plugins/searchengine.php:72 +msgid "(requires friendsadverts.php too) " +msgstr "(friendsadverts.php も必要です) " + +#: plugins/searchengine.php:74 +#: wp-cache.php:1218 +msgid "Enable" +msgstr "使用する" + +#: plugins/domain-mapping.php:58 +msgid "Domain Mapping" +msgstr "ドメインマッピング" + +#: plugins/domain-mapping.php:63 +msgid "Provides support for Domain Mapping plugin to map multiple domains to a blog." +msgstr "ドメインマッピングをサポートしてブログに複数のドメインをマップします。" + +#: plugins/domain-mapping.php:69 +msgid "Domain Mapping support is now %s" +msgstr "ドメインマッピングのサポートは現在%sです。" + +#: plugins/domain-mapping.php:83 +msgid "Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin." +msgstr "ドメインマッピングプラグインを検知しました ! Supercache プラグインの設定ページを開いてドメインマッピングのヘルパープラグインを有効化してください。" + +#: ossdl-cdn.php:146 +msgid "Your website probably uses lots of static files. Image, Javascript and CSS files are usually static files that could just as easily be served from another site or CDN. Therefore this plugin replaces any links in the wp-content and wp-includes directories (except for PHP files) on your site with the URL you provide below. That way you can either copy all the static content to a dedicated host or mirror the files to a CDN by origin pull." +msgstr "おそらく、あなたのサイトでもたくさんの静的ファイルを使用していると思います。画像、JavaScript、CSS のファイルは通常は静的なファイルで、別サイトもしくはCDN から提供させるようにするのはとても簡単です。そのため、このプラグインでは wp-contentwp-includes ディレクトリ内の PHP ファイルを除くすべてのリンクを以下で指定している URL に入れ替える機能があります。すべての静的コンテンツを専用サーバーにコピーするか、origin pull で CDN にファイルをミラーすることができます。" + +#: ossdl-cdn.php:147 +#: wp-cache.php:968 +msgid "The CDN Sync Tool plugin will help upload files to Amazon S3/Cloudfront if you would rather not depend on origin pull. See the plugin support forum if you have any queries about this plugin." +msgstr "origin pull に頼りたくない場合は、Amazon S3/Cloudfront へのファイルのアップロードをサポートする CDN Sync Tool プラグインが役に立つでしょう。このプラグインに関して質問がある場合はプラグインサポートフォーラムを参照してください。" + +#: ossdl-cdn.php:148 +msgid "WARNING: Test some static urls e.g., %s to ensure your CDN service is fully working before saving changes." +msgstr "注意: 変更を保存する前に静的な URL、%s などで CDN サービスが完全に動作していることを確認してください。" + +#: ossdl-cdn.php:149 +msgid "You can define different CDN URLs for each site on a multsite network." +msgstr "マルチサイトネットワーク上の場合は各サイトに別々の CDN URL を設定することができます。" + +#: ossdl-cdn.php:157 +msgid "Enable CDN Support" +msgstr "CDN サポートを有効化" + +#: ossdl-cdn.php:160 +msgid "Off-site URL" +msgstr "オフサイト URL" + +#: ossdl-cdn.php:163 +msgid "The new URL to be used in place of %1$s for rewriting. No trailing / please.
      Example: %2$s." +msgstr "%1$s の代わりに新しい URL がrewriteに使われます。最後の / は付けないようにしてください。
      例: %2$s。" + +#: ossdl-cdn.php:167 +msgid "Include directories" +msgstr "含めるディレクトリ" + +#: ossdl-cdn.php:170 +msgid "Directories to include in static file matching. Use a comma as the delimiter. Default is wp-content, wp-includes, which will be enforced if this field is left empty." +msgstr "静的ファイルマッチングに含むディレクトリです。コンマで区切ってください。デフォルトは wp-content, wp-includes で、この欄が空欄の場合は強制的にこのデフォルトが使用されます。" + +#: ossdl-cdn.php:174 +msgid "Exclude if substring" +msgstr "除外するサブストリング" + +#: ossdl-cdn.php:177 +msgid "Excludes something from being rewritten if one of the above strings is found in the match. Use a comma as the delimiter like this, .php, .flv, .do, and always include .php (default)." +msgstr "上記文字列にマッチするファイルはrewriteから除外されます。複数の場合は .php, .flv, .do のようにコンマで区切ってください。.php は常に含めてください。(デフォルト)" + +#: ossdl-cdn.php:181 +msgid "Additional CNAMES" +msgstr "追加 CNAME" + +#: ossdl-cdn.php:184 +msgid "These CNAMES will be used in place of %1$s for rewriting (in addition to the off-site URL above). Use a comma as the delimiter. For pages with a large number of static files, this can improve browser performance. CNAMEs may also need to be configured on your CDN.
      Example: %2$s" +msgstr "上記 CNAME は %1$s の代わりに (さらに上のオフサイト URL に加えて) rewriteで使用されます。複数の場合はコンマで区切ってください。静的ファイルが多数あるページの場合にブラウザーのパフォーマンスを改善できます。CNAME は CDN で設定する必要があるかもしれません。
      例: %2$s" + +#: ossdl-cdn.php:188 +msgid "Skip https URLs to avoid \"mixed content\" errors" +msgstr "\"mixed content\" エラーを避けるために https の URL をスキップする" + +#: ossdl-cdn.php:192 +msgid "Save Changes" +msgstr "変更を保存" + +#: ossdl-cdn.php:194 +msgid "CDN functionality provided by OSSDL CDN Off Linker by Mark Kubacki" +msgstr "CDN 機能は Mark KubackiOSSDL CDN Off Linker によって提供されています。" + +#: wp-cache.php:99 +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "wp-super-cache/wp-cache-config-sample.php から %s /wp-cache-config.php を作成してください。" + +#: wp-cache.php:162 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "警告 ! PHP セーフモードが有効になっています !" + +#: wp-cache.php:163 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "セーフモードが有効なため、このプラグインの動作に問題が発生するかもしれません。" + +#: wp-cache.php:167 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "お使いのサーバーではファイルの読み書きの許可の前に PHP スクリプトのオーナーを確認するように設定されています。" + +#: wp-cache.php:168 +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "あなたもしくは管理者が、このプラグインスクリプトのグループオーナーをウェブサーバーのユーザーと一致するように変更すれば動作するようになるかもしれません。%s/cache/ ディレクトリのグループオーナーは変更する必要があります。詳細は safe mode manual page を参照してください。" + +#: wp-cache.php:170 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "あなたもしくは管理者がこの機能を無効にする必要があります。詳細は safe mode manual page をご覧ください。残念ながら .htaccess ファイル内では無効にできません。php.ini 設定ファイルで無効にする必要があります。" + +#: wp-cache.php:176 +msgid "Permlink Structure Error" +msgstr "パーマリンク構造エラー" + +#: wp-cache.php:177 +msgid "A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks." +msgstr "このプラグインが正しく動作するためにはカスタムな URL (もしくはパーマリンク) 構造が必要です。パーマリンク設定画面を開いてパーマリンクを設定してください。" + +#: wp-cache.php:189 +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "警告 ! ホスト名 \"%s\" が %s に設定されています" + +#: wp-cache.php:190 +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "お使いのサーバーはホスト名が %s に設定されています。このプラグインのガーベージコレクションや WordPress の予約投稿などのサービスが正しく動作しないかもしれません。" + +#: wp-cache.php:191 +#: wp-cache.php:205 +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "readme.txt Troubleshooting section の 16 を参照してください" + +#: wp-cache.php:204 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "残念ながら WordPress が wp-cron.php ファイルを見つけられません。WordPress による予約投稿やその他の重要な活動だけでなく、このプラグインによるガベージコレクションの正常なオペレーションにもこのスクリプトが不可欠です。" + +#: wp-cache.php:219 +msgid "Cannot continue... fix previous problems and retry." +msgstr "継続できません…前の問題を修正して再度お試しください。" + +#: wp-cache.php:228 +msgid "Zlib Output Compression Enabled!" +msgstr "Zlib アウトプット圧縮を有効にしました !" + +#: wp-cache.php:229 +msgid "PHP is compressing the data sent to the visitors of your site. Disabling this is recommended as the plugin caches the compressed output once instead of compressing the same page over and over again. Also see #21 in the Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "PHP がサイト訪問者に送るデータを圧縮しています。このプラグインは同じページを何度も圧縮するのではなく、圧縮した出力をキャッシュするだけなので、この機能は無効にすることをおすすめします。また、トラブルシューティングの #21 も参考にしてください。 php.ini の修正については「実行時設定」の説明をご覧ください。" + +#: wp-cache.php:233 +msgid "Mod rewrite may not be installed!" +msgstr "Mod rewrite がインストールされていないようです !" + +#: wp-cache.php:234 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use legacy or PHP modes." +msgstr "mod_rewrite がインストールされていないようです。このチェックは、特に Apache を使用していない場合、100% 信用できないことがあります。mod_rewrite モジュールが読み込まれているかよく確認してください。このモジュールは Super Cache 静的ファイルの提供に不可欠です。ただし、レガシーもしくは PHP モードは使用できます。" + +#: wp-cache.php:239 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "読み込み専用モード。設定は変更できません。" + +#: wp-cache.php:240 +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "WP Super Cache 設定ファイルは %s/wp-cache-config.php で、変更できません。変更するにはこのファイルにウェブサーバーが書き込みできるようにする必要があります。" + +#: wp-cache.php:241 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "これを行なう簡単な方法としては、CHMOD コマンドや ftp クライントを使用して一時的に権限を変更する方法があります。グローバルに書き込み可能で問題ないことを確認してください。" + +#: wp-cache.php:242 +#: wp-cache.php:258 +msgid "This page explains how to change file permissions." +msgstr "ファイルパーミッションの変更はこのページを参考にしてください。" + +#: wp-cache.php:243 +msgid "Writeable:" +msgstr "書き込み可能:" + +#: wp-cache.php:244 +msgid "Readonly:" +msgstr "読込みのみ:" + +#: wp-cache.php:256 +msgid "Warning! %s is writeable!" +msgstr "警告 ! %s が書き込み可能になっています!" + +#: wp-cache.php:257 +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "%s の権限を変更して、より限定されたものにしてください。ftp クライアントもしくは次のコマンドを使用して修正してください:" + +#: wp-cache.php:267 +msgid "Mobile rewrite rules detected" +msgstr "モバイル用 rewrite ルールを検知しました" + +#: wp-cache.php:268 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"2.0\\ MMP|240x320\" and delete those." +msgstr "パフォーマンスを最大にするには \"モバイル機器サポート\"を使用するか、.htaccess の mobile rewrite ルールを削除してください。\"2.0\\ MMP|240x320\" の 2 行を探して削除してください。" + +#: wp-cache.php:268 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "この機能は通常のユーザーには何も影響ありませんが、モバイルユーザーにはキャッシュされたページを表示します。" + +#: wp-cache.php:274 +#: wp-cache.php:285 +msgid "Rewrite rules must be updated" +msgstr "Rewrite ルールを更新する必要があります" + +#: wp-cache.php:275 +#: wp-cache.php:286 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "このプラグインに必要な rewrite ルールが変更されたか無くなっています。" + +#: wp-cache.php:276 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "モバイルサポートには .htaccess ファイルにルールを追加する必要があります。もしくはプラグインをレガシーモードに設定します。次のオプションがあります (難しい順):" + +#: wp-cache.php:277 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "レガシーモードに設定し、モバイルサポートを使用します。" + +#: wp-cache.php:278 +#: wp-cache.php:287 +msgid "Scroll down the Advanced Settings page and click the Update Mod_Rewrite Rules button." +msgstr "詳細設定ページでスクロールダウンして Mod_Rewrite ルールを更新 ボタンをクリックしてください。" + +#: wp-cache.php:279 +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "%s.htaccess 内の # BEGIN WPSuperCache# END WPSuperCache で囲まれたこのプラグインの mod_rewrite ルールを削除して、ページを再読込みしてプラグインに再生成させてください。" + +#: wp-cache.php:280 +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ add these lines: (do it twice, once for each section)" +msgstr "自分でルールを追加する。%s.htaccess を開いて # BEGIN WPSuperCache# END WPSuperCache で囲まれているコードブロックを探します。とてもよく似ているセクションが 2 箇所あります。code>%%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ の下に次の行を追加します: (これを 2 回、各セクションで実施します)" + +#: wp-cache.php:293 +msgid "Required to serve compressed supercache files properly." +msgstr "正しく圧縮された supercache ファイルを提供する必要があります。" + +#: wp-cache.php:293 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "supercache のページでキャッシングの設定が必要です。IE7 ユーザーはこのモジュールがないと古いページを参照します。" + +#: wp-cache.php:293 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "supercached ページで有効期限を設定してください。このモジュールがないと、読者は再読込みしたりコメントを残しても新しいページを参照できないかもしれません。" + +#: wp-cache.php:300 +msgid "Missing Apache Modules" +msgstr "欠けている Apache モジュール" + +#: wp-cache.php:301 +msgid "The following Apache modules are missing. The plugin will work in legacy mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "次の Apache モジュールが見つかりません。これらのモジュールがなしの場合、レガシーモードで動作します。フル Supercache モードでは、閲覧者は壊れたページや古いデータを閲覧するかもしれません。" + +#: wp-cache.php:459 +msgid "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file." +msgstr "警告 ! 圧縮を有効にしようとしましたが、zlib.output_compression が有効になっています。readme ファイルのトラブルシューティング #21 を参照してください。" + +#: wp-cache.php:550 +msgid "WP Super Cache Settings" +msgstr "WP Super Cache 設定" + +#: wp-cache.php:561 +msgid "Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced Settings Page by default." +msgstr "お知らせ: Mod_rewrite もしくはレガシーキャッシングが有効になっています。詳細設定ページをデフォルトで表示します。" + +#: wp-cache.php:572 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "設定ファイルが変更され、いくつかの値が誤っています。\"設定\"メニューからページを再読込みしてリセットしてください。" + +#: wp-cache.php:597 +msgid "Caching must be enabled to use this feature" +msgstr "この機能を利用するにはキャッシングを有効にしてください。" + +#: wp-cache.php:615 +#: wp-cache.php:746 +msgid "Cancel Cache Preload" +msgstr "キャッシュプリロードをキャンセル" + +#: wp-cache.php:623 +#: wp-cache.php:634 +msgid "Scheduled preloading of cache cancelled." +msgstr "予定されていたキャッシュのプリロードがキャンセルされました。" + +#: wp-cache.php:660 +#: wp-cache.php:744 +msgid "Preload Cache Now" +msgstr "キャッシュプリロードをすぐに実行" + +#: wp-cache.php:664 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "10 秒後にキャッシュのプリロードを開始します。" + +#: wp-cache.php:669 +msgid "Scheduled preloading of cache in %d minutes" +msgstr "%d 分後にキャッシュのプリロードを開始します。" + +#: wp-cache.php:673 +msgid "This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now." +msgstr "この機能はこのサイトで公開されているすべての投稿と固定ページをキャッシュします。Super Cache の静的ファイルが生成されるので、訪問者 (botも含む) はキャッシュされたページを閲覧することになります。これにより、ウェブサイトの測定基準のひとつとして「速さ」を採用している Google ランキングの改善に役立つかもしれません。" + +#: wp-cache.php:674 +msgid "Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "プリロード機能は大量のファイルを生成します。キャッシュは新しい投稿から先に生成するので、投稿記事がたくさん (1万ページ以上) ある場合は新しい投稿記事だけをキャッシュするようにしてください。これは共有サーバーを使用しているときは特に重要です。" + +#: wp-cache.php:675 +msgid "In ’Preload Mode’ regular garbage collection will only clean out old legacy files for known users, not the preloaded supercache files. This is a recommended setting when the cache is preloaded." +msgstr "’プリロードモード’ では、定期ガーベージコレクションは既存ユーザー用の古いレガシーファイルのみ削除し、プリロードされた supercache ファイルは削除しません。これはキャッシュがプリロードされたときの推奨設定です。" + +#: wp-cache.php:679 +msgid "Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)" +msgstr "プリロードされたキャッシュファイルは %s 分毎にリフレッシュされます。(0 にすると無効、最小 %d 分)" + +#: wp-cache.php:692 +msgid "all" +msgstr "すべて" + +#: wp-cache.php:705 +msgid "Preload %s posts." +msgstr "%s 件の投稿をプリロード。" + +#: wp-cache.php:712 +msgid "Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "プリロードモード (レガシーなキャッシュファイルに対してのみガーベージコレクションを実行。推奨)" + +#: wp-cache.php:715 +msgid "Send me status emails when files are refreshed." +msgstr "ファイルリフレッシュ時にステータスメールを送信する。" + +#: wp-cache.php:720 +msgid "Many emails, 2 emails per 100 posts." +msgstr "メール多数。投稿数 100 につき 2 件のメール。" + +#: wp-cache.php:723 +msgid "Medium, 1 email per 100 posts." +msgstr "中くらいのメール数。投稿数 100 につき 1 件のメール。" + +#: wp-cache.php:726 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "メール少数。すべての投稿のプリロードの最初と最後に 1 件づつのメール。" + +#: wp-cache.php:730 +msgid "Refresh of cache in %d hours %d minutes and %d seconds." +msgstr "キャッシュのリフレッシュは %d 時間 %d 分 %d 秒後です。" + +#: wp-cache.php:731 +msgid "Full refresh of cache in %d hours %d minutes and %d seconds." +msgstr "キャッシュの完全リフレッシュは %d 時間 %d 分 %d 秒後です。" + +#: wp-cache.php:737 +msgid "Currently caching from post %d to %d." +msgstr "投稿 %d から %d のキャッシュを作成中" + +#: wp-cache.php:741 +msgid "Page last cached: %s" +msgstr "最後にキャッシュされたページ: %s" + +#: wp-cache.php:744 +msgid "Update Settings" +msgstr "設定を更新" + +#: wp-cache.php:752 +msgid "Preloading of cache disabled. Please disable legacy page caching or talk to your host administrator." +msgstr "キャッシュのプリロードは停止しています。レガシーなページキャッシングを無効にするかホスト管理者に伝えてください。" + +#: wp-cache.php:769 +#: wp-cache.php:865 +msgid "Caching" +msgstr "キャッシング" + +#: wp-cache.php:773 +msgid "Cache hits to this website for quick access." +msgstr "ヒットしたページをキャッシュし、素早くアクセスさせる。" + +#: wp-cache.php:773 +#: wp-cache.php:774 +#: wp-cache.php:791 +#: wp-cache.php:796 +#: wp-cache.php:799 +#: wp-cache.php:800 +#: wp-cache.php:813 +#: wp-cache.php:868 +msgid "Recommended" +msgstr "推奨" + +#: wp-cache.php:774 +msgid "Use mod_rewrite to serve cache files." +msgstr "キャッシュファイルの提供に mod_rewrite を利用する。" + +#: wp-cache.php:775 +msgid "Use PHP to serve cache files." +msgstr "キャッシュファイルの提供に PHP を利用する。" + +#: wp-cache.php:776 +msgid "Legacy page caching." +msgstr "レガシーなページキャッシング。" + +#: wp-cache.php:777 +msgid "Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should use PHP caching." +msgstr "Mod_rewrite が最速で、PHP はほぼ同じ速さで動作させるのがより簡単です。レガシーキャッシングは遅いですが、より柔軟で動作させるのが簡単です。新しいユーザーは PHP キャッシングを利用するようにしてください。" + +#: wp-cache.php:783 +msgid "Miscellaneous" +msgstr "その他" + +#: wp-cache.php:789 +msgid "Warning! Compression is disabled as gzencode() function not found." +msgstr "注意 ! gzencode() 関数が見つからないため圧縮は無効です。" + +#: wp-cache.php:791 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "ページを圧縮し、訪問者により速くページを供給する。" + +#: wp-cache.php:792 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching it on and off clears the cache." +msgstr "ホストによっては圧縮されたファイルで問題が発生する場合があるので、デフォルトでは無効にしています。この機能を有効にして無効にすると、キャッシュがクリアされます。" + +#: wp-cache.php:796 +msgid "304 Not Modified browser caching. Indicate when a page has not been modified since last requested." +msgstr "304 Not Modified ブラウザーキャッシング。最後にリクエストされてから変更がないことを示す。" + +#: wp-cache.php:797 +msgid "304 support is disabled by default because in the past GoDaddy had problems with some of the headers used." +msgstr "304 サポートはデフォルトでは無効にしています。過去に GoDaddy で問題が発生したことがあるためです。" + +#: wp-cache.php:799 +msgid "Don’t cache pages for known users." +msgstr "既知のユーザー向けにはページをキャッシュしない。" + +#: wp-cache.php:800 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated." +msgstr "キャッシュリビルド。新しいファイルの生成中にこのサイトの登録ユーザー以外のユーザーに supercache のファイルを供給する。" + +#: wp-cache.php:801 +msgid "Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)" +msgstr "使用しているサーバーが Digg に耐えられることを誇らしげに表示する (フッターにメッセージを表示する)" + +#: wp-cache.php:807 +#: wp-cache.php:1056 +#: wp-cache.php:1563 +msgid "Advanced" +msgstr "詳細" + +#: wp-cache.php:811 +msgid "Mobile device support." +msgstr "モバイル機器サポート" + +#: wp-cache.php:812 +msgid "Clear all cache files when a post or page is published." +msgstr "投稿や固定ページの公開時にすべてのキャッシュファイルを削除する。" + +#: wp-cache.php:813 +msgid "Extra homepage checks. (Very occasionally stops homepage caching)" +msgstr "追加のホームページチェック。(非常にまれにホームページのキャッシングを止めることがあります)" + +#: wp-cache.php:814 +msgid "Only refresh current page when comments made." +msgstr "コメントが投稿されたときに該当のページだけリフレッシュする。" + +#: wp-cache.php:815 +msgid "List the newest cached pages on this page." +msgstr "キャッシュされた最新のページを一覧表示する。" + +#: wp-cache.php:817 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "荒削りなファイルロック。おそらく必要ないですが、使用しているサーバーが非力な場合には役に立つかもしれません。警告 ! まれにですがサーバーを止めてしまうことがあります !" + +#: wp-cache.php:819 +msgid "Late init. Display cached files after WordPress has loaded. Most useful in legacy mode." +msgstr "遅延 init。WordPress が読み込んだ後にキャッシュされたファイルを表示します。レガシーモードで有益です。" + +#: wp-cache.php:821 +msgid "Use object cache to store cached files." +msgstr "キャッシュファイルの保存にオブジェクトキャッシュを使用する。" + +#: wp-cache.php:821 +msgid "(Experimental)" +msgstr "(実験的)" + +#: wp-cache.php:828 +msgid "Note:" +msgstr "メモ:" + +#: wp-cache.php:830 +msgid "Uninstall this plugin on the plugins page. It will automatically clean up after itself. If manual intervention is required then simple instructions are provided." +msgstr "アンインストールはプラグインページから行ないます。不要なものは自動的に除去されますが、もし手動での操作が必要な場合は簡単な説明が表示されます。" + +#: wp-cache.php:831 +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "このプラグインをアンインストールする場合、%s ディレクトリがウェブサーバーによる書き込みを許可していることを確認してください。許可してあれば advanced-cache.phpcache-config.php は自動的に削除されます。(これらのファイルも書き込み可能になっているかも確認したほうがいいかもしれません !)" + +#: wp-cache.php:832 +msgid "Please see the readme.txt for instructions on uninstalling this script. Look for the heading, \"How to uninstall WP Super Cache\"." +msgstr "アンインストールの説明は readme.txt の \"How to uninstall WP Super Cache\" を参照してください。" + +#: wp-cache.php:833 +msgid "Need help? Check the Super Cache readme file. It includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already have been answered." +msgstr "お困りですか ? Super Cache readme ファイルを読んでみてください。このファイルにはインストールのドキュメント、よくある質問とその答え、トラブルシューティングのヒントが含まれています。また、サポートフォーラム も利用可能です。あなたの問題の答がすでにあるかもしれません。" + +#: wp-cache.php:836 +#: wp-cache.php:883 +msgid "Update Status" +msgstr "ステータスを更新" + +#: wp-cache.php:843 +msgid "Accepted Filenames & Rejected URIs" +msgstr "受け付けるファイル名と除外する URI" + +#: wp-cache.php:868 +msgid "Caching On" +msgstr "キャッシング利用" + +#: wp-cache.php:869 +msgid "Caching Off" +msgstr "キャッシング停止" + +#: wp-cache.php:870 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "メモ: PHP キャッシング、キャッシュリビルド、モバイルサポートを有効化します。" + +#: wp-cache.php:880 +msgid "Notice: PHP caching enabled but Supercache mod_rewrite rules detected. Cached files will be served using those rules. If your site is working ok please ignore this message or you can edit the .htaccess file in the root of your install and remove the SuperCache rules." +msgstr "お知らせ: PHP キャッシングが有効化されていますが Supercache mod_rewrite ルールが検知されました。キャッシュされているファイルはこのルールを利用して提供されます。サイトの表示に問題がなければこのメッセージは無視してください。もし問題があれば、WordPress のルートにある .htaccess ファイルを開いて SuperCache のルールを取り除いてください。" + +#: wp-cache.php:885 +msgid "Cache Tester" +msgstr "キャッシュテスター" + +#: wp-cache.php:886 +msgid "Test your cached website by clicking the test button below." +msgstr "下のテストボタンをクリックするとキャッシュされたページをテストできます。" + +#: wp-cache.php:892 +msgid "Fetching %s to prime cache: " +msgstr "キャッシュを準備するために %s を取得: " + +#: wp-cache.php:894 +#: wp-cache.php:902 +#: wp-cache.php:910 +msgid "OK" +msgstr "OK" + +#: wp-cache.php:897 +msgid "Fetching first copy of %s: " +msgstr "%s の最初のコピーを取得中: " + +#: wp-cache.php:905 +msgid "Fetching second copy of %s: " +msgstr "%s の二つめのコピーを取得中: " + +#: wp-cache.php:913 +msgid "One or more page requests failed:" +msgstr "ページのリクエストに失敗しました:" + +#: wp-cache.php:932 +#: wp-cache.php:933 +msgid "Page %d: %d (%s)" +msgstr "ページ %d: %d (%s)" + +#: wp-cache.php:939 +msgid "Page 1: %s" +msgstr "ページ 1: %s" + +#: wp-cache.php:940 +msgid "Page 2: %s" +msgstr "ページ 2: %s" + +#: wp-cache.php:941 +msgid "The timestamps on both pages match!" +msgstr "両方のページのタイムスタンプがマッチしました !" + +#: wp-cache.php:943 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "ページがマッチしません ! タイムスタンプが違うか見つかりません !" + +#: wp-cache.php:950 +msgid "Send non-secure (non https) request for homepage" +msgstr "非セキュア (https ではない) なホームページへのリクエストを送信" + +#: wp-cache.php:951 +msgid "Test Cache" +msgstr "キャッシュをテスト" + +#: wp-cache.php:955 +msgid "Delete Cached Pages" +msgstr "キャッシュされているページの削除" + +#: wp-cache.php:956 +msgid "Cached pages are stored on your server as html and PHP files. If you need to delete them use the button below." +msgstr "キャシュされたページはお使いのサーバー上に html と PHP ファイルとして保存されます。キャッシュされたページを削除するには下のボタンをクリックしてください。" + +#: wp-cache.php:959 +#: wp-cache.php:2093 +#: wp-cache.php:2105 +#: wp-cache.php:2268 +msgid "Delete Cache" +msgstr "キャッシュを削除" + +#: wp-cache.php:963 +msgid "Recommended Links and Plugins" +msgstr "おすすめのリンクとプラグイン" + +#: wp-cache.php:964 +msgid "Caching is only one part of making a website faster. Here are some other plugins that will help:" +msgstr "キャッシングはウェブサイトを高速化する手段のひとつに過ぎません。役に立つ他のプラグインをご紹介します:" + +#: wp-cache.php:965 +msgid "WP Minify reduces the number of files served by your web server by joining Javascript and CSS files together. Alternatively you can use WPSCMin, a Supercache plugin that minifies cached pages. It does not however join JS/CSS files together." +msgstr "WP Minify は JavaScript と CSS ファイルを結合させることによりウェブサーバーから送信されるファイルの数を減らします。別の手段としては WPSCMin があります。これは Supercache のプラグインで、JS/CSS ファイルの結合は行ないませんが、キャッシュされたページを小さくします。" + +#: wp-cache.php:966 +msgid "Yahoo! Yslow is an extension for the Firefox add-on Firebug. It analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. Also try the performance tools online at GTMetrix." +msgstr "Yahoo! Yslow は Firefox のアドオンの Firebug の拡張機能です。これはウェブページを分析し、ハイパフォーマンスウェブページ用のルールセットをベースにパフォーマンス改善方法を提案します。また、オンラインのパフォーマンスツールの GTMetrix 試してみるといいでしょう。" + +#: wp-cache.php:967 +msgid "Use Google Libraries allows you to load some commonly used Javascript libraries from Google webservers. Ironically it may reduce your Yslow score." +msgstr "Use Google Libraries プラグインにより、一般的に利用されている JavaScript のライブラリのいくつかを Google のウェブサーバーから読み込むようにします。皮肉にも、これにより Yslow のスコアが下がることもあります。" + +#: wp-cache.php:969 +msgid "Advanced users only: Speed up your site with Caching and cache-control explains how to make your site more cacheable with .htaccess rules." +msgstr "上級者のみ: Speed up your site with Caching and cache-control (キャッシングと cache-control によるサイトのスピードアップ) では .htaccess ルールでサイトをよりキャッシュする方法を説明しています。" + +#: wp-cache.php:970 +msgid "Advanced users only: Install an object cache. Choose from Memcached, XCache, eAcccelerator and others." +msgstr "上級者のみ: オブジェクトキャッシュのインストール。MemcachedXCacheeAcccelerator、もしくは他から選択してください。" + +#: wp-cache.php:981 +msgid "Make WordPress Faster" +msgstr "WordPress を速くする" + +#: wp-cache.php:982 +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "%1$s は %2$s と他の多く方の貢献によってメンテナンスされ、開発されています。" + +#: wp-cache.php:983 +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "彼は %1$s でブログを書き、%2$s に写真を投稿しています。" + +#: wp-cache.php:984 +msgid "Please say hi to him on %s too!" +msgstr "%s でも彼に一言どうぞ !" + +#: wp-cache.php:985 +msgid "Need Help?" +msgstr "助けが必要ですか ?" + +#: wp-cache.php:987 +msgid "Installation Help" +msgstr "インストールのヘルプ" + +#: wp-cache.php:988 +msgid "Frequently Asked Questions" +msgstr "よくある質問と答え" + +#: wp-cache.php:989 +msgid "Support Forum" +msgstr "サポートフォーラム" + +#: wp-cache.php:991 +msgid "Rate This Plugin!" +msgstr "このプラグインをレーティングしてください !" + +#: wp-cache.php:992 +msgid "Please rate this plugin and tell me if it works for you or not. It really helps development." +msgstr "このプラグインをレーティングして、動作しているかどうかをお知らせください。開発に非常に役立ちます。" + +#: wp-cache.php:1001 +msgid "Cached pages since %1$s : %2$s" +msgstr "%1$s 以降のキャッシュページ : %2$s" + +#: wp-cache.php:1002 +msgid "Newest Cached Pages:" +msgstr "キャッシュされた最新のページ:" + +#: wp-cache.php:1006 +msgid "Cached %s seconds ago" +msgstr "%s 秒前にキャッシュされました" + +#: wp-cache.php:1009 +msgid "(may not always be accurate on busy sites)" +msgstr "(アクセスの多いサイトでは必ずしも正確ではないかもしれません)" + +#: wp-cache.php:1028 +msgid "Cache plugins are PHP scripts that live in a plugins folder inside the wp-super-cache folder. They are loaded when Supercache loads, much sooner than regular WordPress plugins." +msgstr "キャッシュプラグインは PHP のスクリプトで wp-super-cache フォルダ内の plugins フォルダ内にあります。これは Supercache の読み込み時に読み込まれ、通常の WordPress プラグインよりもかなり早い段階で読み込まれます。" + +#: wp-cache.php:1029 +msgid "This is strictly an advanced feature only and knowledge of both PHP and WordPress actions is required to create them." +msgstr "これは厳密に言えば拡張機能だけで、作成には PHP と WordPress アクションの両方の知識が必要です。" + +#: wp-cache.php:1039 +msgid "Available Plugins" +msgstr "利用可能なプラグイン" + +#: wp-cache.php:1056 +msgid "Easy" +msgstr "簡易" + +#: wp-cache.php:1056 +msgid "CDN" +msgstr "CDN" + +#: wp-cache.php:1056 +msgid "Contents" +msgstr "コンテンツ" + +#: wp-cache.php:1056 +msgid "Preload" +msgstr "プリロード" + +#: wp-cache.php:1056 +msgid "Plugins" +msgstr "プラグイン" + +#: wp-cache.php:1056 +msgid "Debug" +msgstr "デバッグ" + +#: wp-cache.php:1091 +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "お知らせ: WP Super Cache mod_rewrite ルールチェックは、このネットワークのメインサイトで動作していなければ無効です。" + +#: wp-cache.php:1100 +msgid "Mod Rewrite Rules" +msgstr "Mod Rewrite ルール" + +#: wp-cache.php:1106 +msgid "WordPress MU Detected" +msgstr "WordPress MU を検知しました" + +#: wp-cache.php:1106 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "残念ながら、WordPress MU が稼働中は rewrite ルールを自動的に更新できません。.htaccess を開いて次の mod_rewrite ルールをこのファイルの中の他のすべてのルールの上に追加してください。" + +#: wp-cache.php:1108 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Mod Rewrite ルールを更新できません !" + +#: wp-cache.php:1109 +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "自動更新を作動させるには BEGINEND マーカーが %s.htaccess 内に必ず必要です。これは次のようになっていて、WordPress のメインの mod_rewrite ルールを囲んでいます:" + +#: wp-cache.php:1111 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr " .htaccess ファイルを更新したら、このページを再読込みしてください。" + +#: wp-cache.php:1115 +msgid "Thank you for upgrading." +msgstr "アップグレードありがとうございます。" + +#: wp-cache.php:1115 +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "mod_rewrite ルールは最後にこのプラグインがインストールされてから変更されています。残念ながら、新しいルールを更新する前に古い supercache のルールを取り除く必要があります。.htaccess ファイルを編集したら、このページを再読込みしてください。もし手動でアップグレードしたいならば、次の行を変更してください: %1$s は次に似ています: %2$s 違いは \"HTTP_COOKIE\" が \"HTTP:Cookie\" になり、\"wordpressuser\" が \"wordpress\" になったことだけです。これは WordPress 2.5 での変更ですが、これ以前のバージョンとの後方互換性があります。もしそれほど古いバージョンを使用する勇気があればの話ですが。" + +#: wp-cache.php:1119 +msgid "Trailing slash check required." +msgstr "最後のスラッシュの確認が必要です。" + +#: wp-cache.php:1119 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "あなたのブログの URL は最後が \"/\" になっているようです。残念ながら、このプラグインをインストールした後に重複コンテンツのバグが見つかりました。\"/\" で終わっていない URL は \"/\" で終わっている URL を同じコンテンツとして提供し、正しい URL にリダイレクトしません。これを修正するには .htaccess ファイルを編集してこれら 2 つのルールを Super Cache ルールの 2 つのグループに追加する必要があります。" + +#: wp-cache.php:1121 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "下の \"mod_rewrite ルールを表示する\" リンクをクリックするとルールを参照して問題ないか確認することができます。" + +#: wp-cache.php:1135 +msgid "Mod Rewrite rules updated!" +msgstr "Mod Rewrite ルールを更新しました !" + +#: wp-cache.php:1136 +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "%s.htaccess が必要な mod_rewrite ルールで更新されました。正しく更新されたか確認してください。次のようになっているはずです:" + +#: wp-cache.php:1138 +msgid "Mod Rewrite rules must be updated!" +msgstr "Mod Rewrite ルールを更新する必要があります !" + +#: wp-cache.php:1139 +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "%s.htaccess はウェブサーバーによる書き込みができません。必要な mod_rewrite ルールで更新する必要があります。新しいルールは以下のコードのように通常の WordPress ルールの上に追加します:" + +#: wp-cache.php:1144 +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "WP Super Cache mod rewrite ルールが %s.htaccess ファイル内に検知されました。
      次のリンクをクリックしてこのファイルに追加された行を確認してください。プラグインをアップグレードをしたのなら、これらのルールがマッチしていることを確認してください。" + +#: wp-cache.php:1147 +msgid "A difference between the rules in your .htaccess file and the plugin rewrite rules has been found. This could be simple whitespace differences but you should compare the rules in the file with those below as soon as possible. Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "現在の .htaccess ファイルと、このプラグインの rewrite ルールに差異が見つかりました。この差異は単純にスペースの数の違いかもしれませんが、できるだけ早くこのファイル内のルールと以下を比較確認してください。’Mod_Rewrite ルールを更新’ をクリックするとこのルールを更新します。" + +#: wp-cache.php:1150 +msgid "View Mod_Rewrite Rules" +msgstr "Mod_Rewrite ルールを参照する" + +#: wp-cache.php:1154 +#: wp-cache.php:2384 +msgid "Rules must be added to %s too:" +msgstr "ルールは %s にも追加する必要があります:" + +#: wp-cache.php:1162 +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "Gzip エンコードルール %s.htaccess に作成されました。" + +#: wp-cache.php:1169 +msgid "Fix Configuration" +msgstr "設定の修正" + +#: wp-cache.php:1172 +msgid "Restore Default Configuration" +msgstr "デフォルト設定を復元" + +#: wp-cache.php:1180 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "コメントは承認待ちです。表示されるまでしばらく時間がかかるかもしれません。" + +#: wp-cache.php:1205 +msgid "Lock Down:" +msgstr "ロックダウン:" + +#: wp-cache.php:1206 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "ロックダウンを有効にすることにより、予想されるトラフィックの激増に対してサーバーが対処できるようにします。この機能が有効になると、新しいコメントが投稿されてもキャッシュされた静的ファイルは更新されません。" + +#: wp-cache.php:1207 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "開発者のみなさんへ: \"WPLOCKDOWN\" 定数をチェックすることにより、あなたのプラグインにロックダウンとの互換性を持たせることができます。次のコードにより、あなたのプラグインが WPLOCKDOWN 設置を考慮するようになります。" + +#: wp-cache.php:1209 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "すみませんが、このブログは一時的に停止中です。間もなく更新されます。" + +#: wp-cache.php:1213 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "WordPress はロックダウンされています。Super Cache の静的ファイルは新しいコメントが投稿されても削除されません。" + +#: wp-cache.php:1215 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "WordPress はロックダウンされていません。新しいコメントが投稿されると Super Cache の静的ファイルは通常通りにリフレッシュされます。" + +#: wp-cache.php:1221 +msgid "Lock Down" +msgstr "ロックダウン" + +#: wp-cache.php:1229 +msgid "Directly Cached Files" +msgstr "ダイレクトキャッシュファイル" + +#: wp-cache.php:1287 +msgid "%s removed!" +msgstr "%s 個を削除しました !" + +#: wp-cache.php:1295 +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "この機能を利用するには %s を書き込み可能にする必要があります。これにはセキュリティリスクを伴いますので、ページ生成後には読み込みのみにしてください。" + +#: wp-cache.php:1297 +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "%s を書き込み可能です。これにはセキュリティリスクを伴いますので、ページ生成後には読み込みのみにしてください。" + +#: wp-cache.php:1311 +msgid "Existing direct page" +msgstr "既存のダイレクトページ" + +#: wp-cache.php:1311 +msgid "Delete cached file" +msgstr "キャッシュファイルを削除" + +#: wp-cache.php:1316 +msgid "Add direct page:" +msgstr "ダイレクトページを追加:" + +#: wp-cache.php:1318 +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "ダイレクトキャッシュファイルはブログのある %s からダイレクトに生成されたファイルです。この機能は Digg やスラッシュドットなど巨大レベルのトラフィックがひとつの投稿やページに集中することが予想されるときだけ役に立ちます。" + +#: wp-cache.php:1320 +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "例: %1$sabout/ をキャッシュするには %1$sabout/ もしくは /about/ を入力します。このキャッシュファイルは次に該当のページに誰かが来た時に生成されます。" + +#: wp-cache.php:1321 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "ダイレクトページのこのリストから取り除くには、テキストボックスをブランクにしてキャッシュファイルを削除してください。" + +#: wp-cache.php:1326 +msgid "Update Direct Pages" +msgstr "ダイレクトページを更新" + +#: wp-cache.php:1364 +msgid "Expiry Time & Garbage Collection" +msgstr "有効時間とガーベージコレクション" + +#: wp-cache.php:1366 +msgid "Expire time:" +msgstr "有効時間:" + +#: wp-cache.php:1367 +msgid "seconds" +msgstr "秒" + +#: wp-cache.php:1368 +msgid "Garbage Collection" +msgstr "ガーベージコレクション" + +#: wp-cache.php:1368 +msgid "If the expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above." +msgstr "有効期限が 1800 秒 (30 分) 以上の場合、ガーベージコレクションは 10 分ごとに実行されます。それ以外の場合は期限切れ時間の 10 秒後に実行されます。" + +#: wp-cache.php:1369 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 300 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. If you are using legacy caching aim to have less than 500 cached files if possible. You can have many times more cached files when using mod_rewrite or PHP caching." +msgstr "期限切れファイルのチェックや削除はそれなりの負荷がかかりますが、そのまま残しておくのも負荷になります。アクセスがかなり多いサイトの場合、有効期限を 300 秒に設定するといいでしょう。いろいろな値でこのページを表示させ、時間帯によってどのくらいの期限切れファイルが残るのかを試してみるといいでしょう。レガシーキャッシュ機能を使用している場合は、できればキャッシュファイルの数は 500 以下になるようにしましょう。mod_rewrite や PHP キャッシングを利用している場合はその何倍ものキャッシュファイルを保持できます。" + +#: wp-cache.php:1370 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "ガーベージコレクションを無効にするには有効時間を 0 秒に設定してください。" + +#: wp-cache.php:1371 +msgid "Change Expiration" +msgstr "有効時間を変更" + +#: wp-cache.php:1415 +msgid "Rejected User Agents" +msgstr "除外するユーザーエージェント" + +#: wp-cache.php:1416 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "WP-Cache が bot、spider、クローラーのリクエストをキャッシュしないようにする HTTP ’User Agent’ ヘッダー内の文字列です。すでにキャッシュが存在する場合はこれらのエージェントに Super Cache のファイルが送信されます。" + +#: wp-cache.php:1423 +msgid "Save UA Strings" +msgstr "UA 文字列を保存" + +#: wp-cache.php:1446 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "次のページタイプはキャッシュしません。各タイプについての詳細は Conditional Tags を参照してください。" + +#: wp-cache.php:1449 +msgid "Single Posts" +msgstr "シングルページ" + +#: wp-cache.php:1450 +msgid "Pages" +msgstr "ページ" + +#: wp-cache.php:1451 +msgid "Front Page" +msgstr "フロントページ" + +#: wp-cache.php:1452 +msgid "Home" +msgstr "ホーム" + +#: wp-cache.php:1453 +msgid "Archives" +msgstr "アーカイブ" + +#: wp-cache.php:1454 +msgid "Tags" +msgstr "タグ" + +#: wp-cache.php:1455 +msgid "Category" +msgstr "カテゴリー" + +#: wp-cache.php:1456 +msgid "Feeds" +msgstr "フィード" + +#: wp-cache.php:1457 +msgid "Search Pages" +msgstr "検索ページ" + +#: wp-cache.php:1459 +#: wp-cache.php:1573 +msgid "Save" +msgstr "保存" + +#: wp-cache.php:1476 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "ここにキャッシュしないようにするページの文字列 (ファイル名ではなく) を追加します。例えば、URL に「西暦」を含んでいて昨年の投稿をキャッシュしたくない場合は西暦 ’/2004/’ だけを入力すれば十分です。WP-Chache は URI にその文字列が含まれているか検索し、含まれていた場合はそのページをキャッシュしません。" + +#: wp-cache.php:1482 +msgid "Save Strings" +msgstr "文字列を保存" + +#: wp-cache.php:1498 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "上で指定した除外文字列にマッチしてもキャッシュするファイル名をここに追加してください。" + +#: wp-cache.php:1504 +msgid "Save Files" +msgstr "ファイルを保存" + +#: wp-cache.php:1545 +msgid "Currently logging to: %s" +msgstr "現在ログ取得中: %s" + +#: wp-cache.php:1548 +msgid "Fix problems with the plugin by debugging it here. It can log them to a file in your cache directory." +msgstr "このデバッグ設定でプラグインの問題を修正します。キャッシュディレクトリのファイルにログを記録します。" + +#: wp-cache.php:1552 +msgid "Debugging" +msgstr "デバッグ" + +#: wp-cache.php:1553 +msgid "IP Address" +msgstr "IP アドレス" + +#: wp-cache.php:1553 +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(この IP アドレスからのリクエストだけを記録します。あなたの IP アドレスは %s です)" + +#: wp-cache.php:1554 +msgid "Log level" +msgstr "ログレベル" + +#: wp-cache.php:1560 +msgid "(1 = less, 5 = more, may cause severe server load.)" +msgstr "(1 = 小、5 = 大、大きなサーバーのロードを引き起こすかもしれません)" + +#: wp-cache.php:1563 +msgid "In very rare cases two problems may arise on some blogs:

      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "とてもまれなケースですが、2 つの問題が発生することがあります:
      1. フロントページが zip ファイルとしてダウンロードされることがある
      2. 静的なフロントページを使用していてパーマリンク構造が /%category%/%postname%/ の場合にフロントページとして誤ったページがキャッシュされてしまう
      " + +#: wp-cache.php:1564 +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "WP Super Cache のバグではないと 99% 思いますし、発生するのはごくごく稀ですが、もし心配なら 5 分ごとにサイトが問題ないか確認するよう簡単なチェックができます。もし問題が発生すればメールが届きます。" + +#: wp-cache.php:1566 +msgid "Check front page every 5 minutes." +msgstr "5 分ごとにフロントページをチェックする。" + +#: wp-cache.php:1567 +msgid "Front page text" +msgstr "フロントページテキスト" + +#: wp-cache.php:1567 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "フロントページで検索するテキスト。もしこのテキストがなければキャッシュがクリアされます。無効するにはブランクにしてください。" + +#: wp-cache.php:1568 +msgid "Clear cache on error." +msgstr "エラー発生時にキャッシュをクリアする。" + +#: wp-cache.php:1569 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "確認時にブログ管理者にメールを送る。(テスト時に有益)" + +#: wp-cache.php:1583 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "エラー: GZIP 圧縮が有効です。wp-cache を使用する場合は無効にしてください。" + +#: wp-cache.php:1630 +#: wp-cache.php:1796 +msgid "Warning" +msgstr "警告" + +#: wp-cache.php:1630 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "WordPress の GZIP 圧縮が有効です。GZIP 圧縮が無効にされるまで wp-cache はバイパスされます。" + +#: wp-cache.php:1692 +#: wp-cache.php:1697 +#: wp-cache.php:1729 +#: wp-cache.php:1734 +#: wp-cache.php:1740 +msgid "Error" +msgstr "エラー " + +#: wp-cache.php:1692 +msgid "Your cache directory ($cache_path) did not exist and couldn’t be created by the web server. Check %s permissions." +msgstr "キャッシュディレクトリ ($cache_path) がなく、ウェブサーバーによって作成することもできませんでした。%s のパーミッションを確認してください。" + +#: wp-cache.php:1697 +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "このプラグインを動作させるにはキャッシュディレクトリ (%1$s) もしくは %2$s に書き込める必要があります。よく確認してください。" + +#: wp-cache.php:1729 +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "WP-Cache 設定ファイル (%s) は古いもので、ウェブサーバーによる書き込みを許可していません。このファイルを削除してこのページを再読込みしてください。" + +#: wp-cache.php:1734 +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "設定ファイルが見つかりません。%1$s ディレクトリ (%2$s) がウェブサーバーによる書き込みを許可していません。パーミッションを確認してください。" + +#: wp-cache.php:1740 +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "WP-Cache の設定サンプルファイル (%s) がありません。インストールを確認してください。" + +#: wp-cache.php:1796 +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "%s/advanced-cache.php がないか、更新できません。" + +#: wp-cache.php:1797 +msgid "1. If it already exists please delete the file first." +msgstr "1. もしこのファイルがすでにあれば、まず最初にこのファイルを削除してください" + +#: wp-cache.php:1798 +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. ftp やサーバーソフトウェアで chmod コマンドを使用して %1$s を書き込み可能にし、(chmod 777 %1$s) このページを再読込みします。これは一時的な処置で、この後、読み込みのみに再度する必要があります。(前述のコマンドで 777 を 755 に変更します)" + +#: wp-cache.php:1799 +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. %s/advanced-cache.php を更新するためにこのページを再読込みします" + +#: wp-cache.php:1800 +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "もし動作しなければ %s/advanced-cache.php ファイルが存在するか確認してください:" + +#: wp-cache.php:1801 +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. テキストエディターで %1$s$wp_cache_file を開きます
    • 2. テキスト CACHEHOME%2$s に変更します
    • 3. ファイルを保存し、%3$s へコピーしてこのページを再読込みします
    • " + +#: wp-cache.php:1824 +msgid "

      WP_CACHE constant set to false

      The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

      define('WP_CACHE', true);

      " +msgstr "

      WP_CACHE 定数が false に設定されています

      WP_CACHE 定数はキャッシュされたページを提供するためのコードを読み込むために WordPress によって利用される定数です。残念ながらこの定数が false に設定されています。wp-config.php を開いて、最後の require_once コマンドの上に次の行を追加もしくは編集してください。

      define('WP_CACHE', true);

      " + +#: wp-cache.php:1826 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "エラー: wp-config.php ファイルの WP_CACHE が有効になっていません。このプラグインから修正はできません。" + +#: wp-cache.php:1827 +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "%s を編集して次の行を追加してください:
      define('WP_CACHE', true);
      追加しないと WordPress コアによる WP-Cache の実行ができません。" + +#: wp-cache.php:1831 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the FAQ. The WP_CACHE line must be moved up." +msgstr "

      WP_CACHE 定数の wp-config.php への追加

      もしこの警告メッセージが表示され続けるのなら、FAQ のポイント 5 を参照してください。WP_CACHE の行を上に上げる必要があります。" + +#: wp-cache.php:1855 +msgid "Cache Contents" +msgstr "キャッシュコンテンツ" + +#: wp-cache.php:1858 +msgid "Object cache in use. No cache listing available." +msgstr "オブジェクトキャッシュを使用中です。キャッシュリストはありません。" + +#: wp-cache.php:1882 +msgid "Deleting supercache file: %s
      " +msgstr "supercache ファイルを削除しています: %s
      " + +#: wp-cache.php:1899 +msgid "Deleting wp-cache file: %s
      " +msgstr "wp-cache ファイルを削除しています: %s
      " + +#: wp-cache.php:1964 +msgid "Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page." +msgstr "キャッシュ統計値は自動的には生成されません。再生成するには下のリンクをクリックしてください。" + +#: wp-cache.php:1965 +msgid "Regenerate cache stats" +msgstr "キャッシュ状況データを再生成" + +#: wp-cache.php:1967 +msgid "Cache stats last generated: %s minutes ago." +msgstr "キャッシュ統計値が最後に生成されたのは %s 分前です。" + +#: wp-cache.php:1973 +msgid "WP-Cache" +msgstr "WP-Cache" + +#: wp-cache.php:1974 +#: wp-cache.php:1989 +msgid "%s Cached Pages" +msgstr "キャッシュページ数: %s" + +#: wp-cache.php:1975 +#: wp-cache.php:1994 +msgid "%s Expired Pages" +msgstr "期限切れページ数: %s" + +#: wp-cache.php:1988 +msgid "WP-Super-Cache" +msgstr "WP-Super-Cache" + +#: wp-cache.php:1998 +msgid "Fresh WP-Cached Files" +msgstr "新しい WP-Cache ファイル" + +#: wp-cache.php:1999 +#: wp-cache.php:2015 +#: wp-cache.php:2031 +#: wp-cache.php:2047 +msgid "URI" +msgstr "URI" + +#: wp-cache.php:1999 +#: wp-cache.php:2015 +msgid "Key" +msgstr "キー" + +#: wp-cache.php:1999 +#: wp-cache.php:2015 +#: wp-cache.php:2031 +#: wp-cache.php:2047 +msgid "Age" +msgstr "経過時間" + +#: wp-cache.php:1999 +#: wp-cache.php:2015 +#: wp-cache.php:2031 +#: wp-cache.php:2047 +msgid "Delete" +msgstr "削除 " + +#: wp-cache.php:2014 +msgid "Stale WP-Cached Files" +msgstr "古い WP-Cache ファイル" + +#: wp-cache.php:2030 +msgid "Fresh Super Cached Files" +msgstr "新しい Super Cache ファイル" + +#: wp-cache.php:2046 +msgid "Stale Super Cached Files" +msgstr "古い Super Cache ファイル" + +#: wp-cache.php:2062 +msgid "Hide file list" +msgstr "ファイルリストを隠す" + +#: wp-cache.php:2064 +msgid "Too many cached files, no listing possible." +msgstr "キャッシュファイルが多すぎるため一覧表示できません。" + +#: wp-cache.php:2066 +msgid "List all cached files" +msgstr "すべてのキャッシュファイルを表示" + +#: wp-cache.php:2072 +msgid "Garbage Collection
      Last GC was %s minutes ago
      " +msgstr "ガーベージコレクション
      最後の GC は %s 分前です
      " + +#: wp-cache.php:2073 +msgid "Next GC in %s minutes" +msgstr "次の GC は %s 分後です" + +#: wp-cache.php:2076 +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "期限切れファイルとは %s 秒より古くなったファイルです。こうしたファイルはこのプラグインによってまだ使用されますが、定期的に削除されます。" + +#: wp-cache.php:2087 +msgid "Delete Expired" +msgstr "期限切れキャッシュを削除" + +#: wp-cache.php:2105 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Super Cache のキャッシュファイルを削除する (新しいウインドウで開きます)" + +#: wp-cache.php:2244 +msgid "%1$s is Digg proof thanks to caching by %2$s" +msgstr "%1$s は %2$s でキャッシングされているおかげで Digg に耐えられます" + +#: wp-cache.php:2277 +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "WP Super Cache の設定が必要です。管理ページを開いてこのプラグインの有効化と設定を行なってください。" + +#: wp-cache.php:2283 +msgid "Settings" +msgstr "設定" + +#: wp-cache.php:2293 +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "WP Super Cache は停止中です。プラグイン管理ページを開いてキャッシングを有効にしてください。" + +#: wp-cache.php:2296 +msgid "Warning! WP Super Cache caching broken! The script advanced-cache.php could not load wp-cache-phase1.php.

      Please edit %1$s/advanced-cache.php and make sure the path to %2$swp-cache-phase1.php is correct." +msgstr "Warning! WP Super Cache caching broken! The script advanced-cache.php could not load wp-cache-phase1.php.

      Please edit %1$s/advanced-cache.php and make sure the path to %2$swp-cache-phase1.php is correct." + +#: wp-cache.php:2315 +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] フロントページが gzip で圧縮されました ! キャッシュをクリアしてください !" + +#: wp-cache.php:2315 +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "フロントページがダウンロードされる状態なので、%s を開いてキャッシュをクリアしてください !" + +#: wp-cache.php:2318 +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] フロントページが gzip 圧縮されました ! キャッシュがクリアされました !" + +#: wp-cache.php:2318 +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "フロントページがダウンロードされる状態だったのでブログのキャッシュをクリアしました。%s を開いてキャッシュがクリアされたことを確認してください。" + +#: wp-cache.php:2325 +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] フロントページが不正です ! キャッシュをクリアしてください !" + +#: wp-cache.php:2325 +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "フロントページが不正でテキスト \"%2$s\" が見つからないので、%1$s を開いてキャッシュをクリアしてください !" + +#: wp-cache.php:2328 +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] フロントページが不正です ! キャッシュがクリアされました !" + +#: wp-cache.php:2328 +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "フロントページにテキスト \"%2$s\" が見つからなかったのでブログのキャッシュをクリアしました。%1$s を開いてキャッシュがクリアされたことを確認してください。" + +#: wp-cache.php:2333 +msgid "[%s] Front page check!" +msgstr "[%s] フロントページチェック !" + +#: wp-cache.php:2333 +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "WP Super Cache はあなたのブログのフロントページをチェックしました。この機能の使用を停止するには %s を開いてください。" + +#: wp-cache.php:2376 +msgid "Cannot update .htaccess" +msgstr ".htaccess を更新できません" + +#: wp-cache.php:2376 +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "%s.htaccessファイルがウェブサーバーによって変更できません。chmod コマンドや ftp クライアントで修正してください。" + +#: wp-cache.php:2376 +msgid "Refresh this page when the file permissions have been modified." +msgstr "ファイルのパーミッションを変更したらこのページを再読込みしてください。" + +#: wp-cache.php:2376 +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "もしくは、%s.htaccess ファイルを手動で編集して次のコードを追加してください (WordPress のルールの前に):" + +#: wp-cache.php:2380 +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "静的 html ファイルを利用できるようにするには、お使いのサーバーで %s.htaccess と呼ばれるファイルに正しい mod_rewrite ルールが追加されている必要があります。" + +#: wp-cache.php:2381 +msgid "You can edit the file yourself add the following rules." +msgstr "このファイルをご自分で編集して次のルールを追加できます。" + +#: wp-cache.php:2382 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr "かならず WordPress の既存のルールの前に入れてください。" + +#: wp-cache.php:2390 +msgid "Update Mod_Rewrite Rules" +msgstr "Mod_Rewrite ルールを更新" + +#: wp-cache.php:2515 +msgid "[%1$s] Cache Preload Started" +msgstr "[%1$s] キャッシュのプリロードが開始されました" + +#: wp-cache.php:2517 +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] %2$d から %3$d の投稿をリフレッシュ中" + +#: wp-cache.php:2535 +msgid "[%1$s] Cache Preload Stopped" +msgstr "[%1$s] キャッシュプリロード停止" + +#: wp-cache.php:2544 +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s] %2$d の投稿をリフレッシュ" + +#: wp-cache.php:2544 +msgid "Refreshed the following posts:" +msgstr "以下の投稿がリフレッシュされました:" + +#: wp-cache.php:2553 +msgid "Scheduling next preload refresh in %d minutes." +msgstr "次のプレロードリフレッシュは %d 分後の予定です。" + +#: wp-cache.php:2563 +msgid "[%s] Cache Preload Completed" +msgstr "[%s] キャッシュのプリロードを完了" + +#: wp-cache.php:2563 +msgid "Cleaning up old supercache files." +msgstr "古い supercache のファイルを片付けています。" + +#: wp-cache.php:2605 +msgid "[%s] Preload may have stalled." +msgstr "[%s] プリロードは停滞しています。" + +#: wp-cache.php:2605 +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"プリロードを再スタートしました。\n" +"%s" + +#: wp-cache.php:2648 +msgid "Supercache Uninstall Problems" +msgstr "Supercache アンインストール時の問題" + +#: wp-cache.php:2648 +msgid "" +"Dear User,\n" +"\n" +"WP Super Cache was removed from your blog but the mod_rewrite rules\n" +"in your .htaccess were not.\n" +"\n" +"Please edit the following file and remove the code\n" +"between 'BEGIN WPSuperCache' and 'END WPSuperCache'. Please backup the file first!\n" +"\n" +"%s\n" +"\n" +"Regards,\n" +"WP Super Cache Plugin\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" +msgstr "" +"ユーザー様へ\n" +"\n" +"あなたのブログから WP Super Cache が削除されましたが、mod_rewrite ルールは\n" +".htaccess から削除されていません。\n" +"\n" +"次のファイルを開いて 'BEGIN WPSuperCache' と 'END WPSuperCache' の\n" +"あいだのコードを取り除いてください。最初にこのファイルのバックアップを忘れずに !\n" +"\n" +"%s\n" +"\n" +"よろしくお願いします。\n" +"WP Super Cache プラグイン\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" + +#~ msgid "" +#~ "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on " +#~ "on the main site of this network." +#~ msgstr "" +#~ "お知らせ: WP Super Cache mod_rewrite ルールチェックは、このネットワークの" +#~ "メインサイトで動作していなければ無効です。" + +#~ msgid "Tester & Contents" +#~ msgstr "テスターとコンテンツ" + +#~ msgid "" +#~ "Logging to a file is easier but faces the problem that clearing the cache " +#~ "will clear the log file." +#~ msgstr "" +#~ "ファイルにログを記録する方が簡単ですが、キャッシュをクリアするとログファイ" +#~ "ルもクリアされてしまいます。" + +#~ msgid "Logging Type" +#~ msgstr "ログ形式" + +#~ msgid "Email" +#~ msgstr "メールアドレス" + +#~ msgid "file" +#~ msgstr "ファイル" + +#~ msgid "WP Super Cache Manager" +#~ msgstr "WP Super Cache 管理画面" + +#~ msgid "Why your configuration may not be changed" +#~ msgstr "なぜ設定を変更できないのか" + +#~ msgid "Why" +#~ msgstr "なぜ" + +#~ msgid "ON" +#~ msgstr "オン" + +#~ msgid "WP Cache and Super Cache enabled" +#~ msgstr "WP Cache と Super Cache を使用する" + +#~ msgid "HALF ON" +#~ msgstr "ハーフオン" + +#~ msgid "Super Cache Disabled, only legacy WP-Cache caching." +#~ msgstr "Super Cache は不使用、古い WP-Cache のキャッシュ機能のみ使用する" + +#~ msgid "OFF" +#~ msgstr "オフ" + +#~ msgid "WP Cache and Super Cache disabled" +#~ msgstr "WP Cache と Super Cache を使用しない" + +#~ msgid "" +#~ "Cache rebuild. Serve a supercache file to anonymous users while a new " +#~ "file is being generated. Recommended for very busy websites with " +#~ "lots of comments. Makes \"directly cached pages\" and \"Lockdown mode\" " +#~ "obsolete." +#~ msgstr "" +#~ "キャッシュリビルド。新しいファイルの生成中に supercache ファイルを匿名ユー" +#~ "ザーに提供します。とてもたくさんアクセスとたくさんのコメントがつ" +#~ "くサイトにおすすめします。\"ダイレクトキャッシュページ\"と \"ロックダウン" +#~ "モード\" はサポートされなくなります。" + +#~ msgid "" +#~ "List the newest cached pages (may be expensive to run on busy sites, use " +#~ "with caution.)" +#~ msgstr "" +#~ "新しくキャッシュされたページをリストアップする (アクセスの多いサイトの場合" +#~ "はさらに負荷が上がるかもしれません。注意して使用してください)" + +#~ msgid "" +#~ "%1$s really makes your blog go faster. Make it go faster* by " +#~ "buying me an Amazon gift card! Make it out to \"%3$s" +#~ "\" for whatever amount you want. Every penny helps!" +#~ msgstr "" +#~ "%1$s はブログを速くします。Amazon gift card を私に" +#~ "買ってくれたらもっと速く*なります。好きなだけ \"%3$s\" に送って" +#~ "ください ! どんな金額でも助かります !" + +#~ msgid "" +#~ "If Amazon isn’t your thing, there’s also PayPal. Click the " +#~ "\"Donate\" button below or take a quick peek at my wishlist." +#~ msgstr "" +#~ "もし Amazon がお気に召さないのなら、PayPal でお願いします。下の \"Donate" +#~ "\" ボタンをクリックするか、私のウィッシュリストをご覧く" +#~ "ださい。" + +#~ msgid "Thanks in advance!" +#~ msgstr "よろしくお願いします !" + +#~ msgid "" +#~ "Ok, it won’t go any faster but you’ll make this plugin author " +#~ "very happy!" +#~ msgstr "" +#~ "オーケー、特に速くはなりませんが、このプラグインの作者がとても幸せになりま" +#~ "す !" + +#~ msgid "Don’t show me this again." +#~ msgstr "このお知らせを表示させない。" + +#~ msgid "Hide" +#~ msgstr "隠す" + +#~ msgid "Super Cache Compression" +#~ msgstr "Super Cache 圧縮" + +#~ msgid "Compression is enabled by default when in HALF ON mode." +#~ msgstr "ハーフオン モードの場合、デフォルトで圧縮を使用します。" + +#~ msgid "Super Cache compression is now disabled." +#~ msgstr "Super Cache 圧縮の使用が停止されました。" + +#~ msgid "Super Cache compression is now enabled." +#~ msgstr "Super Cache 圧縮の使用が開始されました。" + +#~ msgid "Update Compression" +#~ msgstr "圧縮設定の更新" + +#~ msgid "Debug Settings" +#~ msgstr "デバッグ設定" + +#~ msgid "You must edit the file yourself add the following rules." +#~ msgstr "このファイルをご自分で編集して次のルールを追加する必要があります。" + +#~ msgid "" +#~ "Mobile device support using WordPress Mobile Edition." +#~ msgstr "" +#~ "WordPress Mobile Edition を使用したモバイル機器のサポー" +#~ "ト" + +#~ msgid "" +#~ "Uninstall using the uninstall script to remove files and directories created by the " +#~ "plugin. (Please see readme." +#~ "txt for instructions on uninstalling this script.)" +#~ msgstr "" +#~ "アンインストールスクリプトを使用してアンインストールすると、このプラグインによって作成されたファイ" +#~ "ルとディレクトリを削除します。(詳しくは readme.txt をご覧ください)" + +#~ msgid "" +#~ "He blogs at %1$s, posts photos at %2$s and wishes he " +#~ "had more time to read and relax." +#~ msgstr "" +#~ "彼は %1$s でブログして、%2$s で写真を投稿して、もっと本を読む時間とリラッ" +#~ "クスする時間を欲しがっています。" diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-lt_LT.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-lt_LT.mo new file mode 100644 index 0000000000000000000000000000000000000000..c8227ab93f39e4028fb39c4041be3bc1b18c9e30 GIT binary patch literal 57607 zcmch=3!G$US?7PaW4ML;9nN$zFcYS0E=fqz877&`C7C2M(_|(I0c1GcRo#82tE-B- z%%lT|AfuoNtPrwUxg?^1fCP!F$R!HSz=EKQitHjN?&|8IqJpmO;^P1Nd!F}w W8 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

      Je4|m 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-lt_LT.po b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-lt_LT.po new file mode 100644 index 0000000..8a94ee5 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-lt_LT.po @@ -0,0 +1,1555 @@ +# Translation of the WordPress plugin by . +# Copyright (C) 2010 +# This file is distributed under the same license as the package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: WP Super Cache\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-super-cache\n" +"POT-Creation-Date: 2010-09-27 13:58+0000\n" +"PO-Revision-Date: 2011-07-30 20:42+0200\n" +"Last-Translator: Natalija Strazdauskienė \n" +"Language-Team: Nata Strazda \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Lithuanian\n" +"X-Poedit-Country: LITHUANIA\n" + +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "Jūsų komentaras laukia patvirtinimo." + +#: plugins/awaitingmoderation.php:23 +#: plugins/awaitingmoderation.php:38 +#: plugins/badbehaviour.php:47 +#: plugins/badbehaviour.php:65 +#: plugins/domain-mapping.php:47 +#: plugins/domain-mapping.php:62 +#: plugins/searchengine.php:61 +#: plugins/searchengine.php:76 +#: wp-cache.php:1114 +msgid "Disable" +msgstr "Išjungti" + +#: plugins/awaitingmoderation.php:29 +#: plugins/badbehaviour.php:55 +#: plugins/domain-mapping.php:53 +#: plugins/searchengine.php:67 +msgid "disabled" +msgstr "išjungtas" + +#: plugins/awaitingmoderation.php:31 +#: plugins/badbehaviour.php:57 +#: plugins/domain-mapping.php:55 +#: plugins/searchengine.php:69 +#: wp-cache.php:1460 +msgid "enabled" +msgstr "įjungtas" + +#: plugins/awaitingmoderation.php:33 +#, php-format +msgid "Awaiting Moderation plugin is %s" +msgstr "Laukiamas patvirtinimo įskiepis yra %s" + +#: plugins/awaitingmoderation.php:34 +msgid "(Remove the text \"Your comment is awaiting moderation.\" when someone leaves a moderated comment.) " +msgstr "(Pašalinti tekstą \"Jūsų komentaras laukia patvirtinimo.\", kai kas nors palieka komentarą peržiūrai.)" + +#: plugins/awaitingmoderation.php:36 +#: plugins/badbehaviour.php:63 +#: plugins/domain-mapping.php:60 +#: plugins/searchengine.php:74 +#: wp-cache.php:1114 +msgid "Enable" +msgstr "Įjungti" + +#: plugins/badbehaviour.php:45 +msgid "Bad Behaviour not found. Please check your install." +msgstr "Bad Behaviour nerasta. Prašome patikrinti jūsų įdiegimą." + +#: plugins/badbehaviour.php:60 +#, php-format +msgid "Bad Behaviour support is %s." +msgstr "Bad Behaviour parama yra %s." + +#: plugins/badbehaviour.php:61 +#, php-format +msgid "(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr "(Šis įskiepis funkcionuos tik vidutinio talpinimo režimu, atjunkite suspaudimą ir įdiekite įskiepį Bad Behavior \"%s/plugins/blogas-elgesio/\")" + +#: plugins/badbehaviour.php:69 +#: wp-cache.php:1191 +#: wp-cache.php:1193 +msgid "Warning!" +msgstr "Dėmesio!" + +#: plugins/domain-mapping.php:57 +#, php-format +msgid "Domain Mapping support plugin is %s" +msgstr "Domain Mapping įskiepio palaikymas yra is %s" + +#: plugins/domain-mapping.php:58 +msgid "(support for multiple domains on multisite websites) " +msgstr "(palaiko daugybinius domenus ir daugybines svetaines)" + +#: plugins/domain-mapping.php:72 +msgid "Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin." +msgstr "Domain Mapping įskiepis aptiktas! Prašome grįžti į įskiepių Supercache puslapį ir įjungti domeno žemėlapių padėjėjo įskiepį." + +#: plugins/searchengine.php:71 +#, php-format +msgid "No Adverts for Friends plugin is %s." +msgstr "No Adverts for Friends įskiepis yra %s." + +#: plugins/searchengine.php:72 +msgid "(requires friendsadverts.php too) " +msgstr "(reikalingas friendsadverts.php taip pat) " + +#: wp-cache.php:87 +#, php-format +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "Prašome sukurti %s /wp-cache-config.php iš wp-super-cache/wp-cache-config-sample.php" + +#: wp-cache.php:138 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "Įspėjimas! PHP Saugus režymas įjungtas!" + +#: wp-cache.php:139 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "Jums gali kilti problemų naudojant šį įskiepį, nes Safe Mode yra įjungtas." + +#: wp-cache.php:143 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "Jūsų serveris patikrins PHP skriptų savininką, prieš leidžiant jiems skaityti ir rašyti failus." + +#: wp-cache.php:144 +#, php-format +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "Jūs arba administratorius galite padaryti jį dirbantį, keisdami įskiepio skriptų grupės savininką, kad atitiktų žiniatinklio serverio vartotoją. %s/cache/ katalogas taip pat turi būti pakeistas. Žiūrėti saugaus rėžimo puslapį dėl papildomos informacijos." + +#: wp-cache.php:146 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "Jūs arba administratorius turite atjungti tai. Žiūrėkite saugaus rėžimo puslapį dėl papildomos informacijos. Dėja, tai negali būti atjungta .htaccess faile. Tam reikia papildyti php.ini konfiguracijos failą." + +#: wp-cache.php:152 +msgid "Permlink Structure Error" +msgstr "Nuolatinės nuorodos struktūra" + +#: wp-cache.php:153 +msgid "A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks." +msgstr "Teisingui įskiepio darbui reikalingas korektiškas url ar pastovios nuorodos struktūros nustatymas.. Prašome eiti į Pastovių nuorodų puslapį, kad sukonfiguruoti pastovias nuorodas." + +#: wp-cache.php:165 +#, php-format +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "Įspėjimas! Jūsų prieglobos vardas \"%s\" atsako %s" + +#: wp-cache.php:166 +#, php-format +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "Jūsų serveris galvoja, jog jūsų prieglobos vardas pasikeitė į %s. Kai kurie servisai, kaip pavyzdžiui, šiukšlių surinkimas šiame įskiepyje ir WordPress planuojamuose žinutėse gali neveikti tinkamai." + +#: wp-cache.php:167 +#: wp-cache.php:181 +#, php-format +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "Prašau žiūrėti 16 eilutę problemų sekcijoje readme.txt" + +#: wp-cache.php:180 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "Dėja, WordPress negali rasti wp-cron.php failą. Šis skriptas reikalingas korektiškam šiukšlynės išvalymo operacijos rodymui šiam įskiepiui, WordPress reguliariose žinutėse bei kitose svarbiose vietose." + +#: wp-cache.php:195 +msgid "Cannot continue... fix previous problems and retry." +msgstr "Negalima tęsti...ištaisykite bųvusias problemas ir pabandykite iš naujo." + +#: wp-cache.php:204 +msgid "Zlib Output Compression Enabled!" +msgstr "Zlib Išėjimo suspaudimas įjungtas!" + +#: wp-cache.php:205 +msgid "PHP is compressing the data sent to the visitors of your site. Disabling this is recommended as the plugin caches the compressed output once instead of compressing the same page over and over again. Also see #21 in the Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "PHP naudoja duomenų suspaudimą dėl jūsų svetainės lankytojų puslapių atvaizdavimui. Šios parinkties atjungimas yra rekomenduojamas, kad išvengti daugkartinio puslapių suspaudimo su įskiepiu. Taipogi žiūrėkite #21 Problemų sekcijoje. Žiūrėkite šį puslapį, kad sekti instrukcijas modifikuotame jūsų php.ini." + +#: wp-cache.php:209 +msgid "Mod rewrite may not be installed!" +msgstr "Mod rewrite negali būti įdiegtas!" + +#: wp-cache.php:210 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use legacy or PHP modes." +msgstr "Įvyko klaida, susijusi su tuo, kad modulis mod_rewrite neegzistuoja arba nėra įdiegtas. Prašome patikrinti modulio mod_rewrite serverio konfiguracijoje. Modulis reikalingas korektiškam įskiepio darbui su statistiniais failais. Be prijungto mod_rewrite jūs galite naudoti tik režimus su PHP palaikymu arba vidutinį talpinimą." + +#: wp-cache.php:215 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "Tik skaitymo režimas. Konfigūracija negali būti pakeista." + +#: wp-cache.php:216 +#, php-format +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "Konfiguracijos įskiepio failas WP Super Cache %s/wp-cache-config.php negali būti pakeistas. Kad tęsti, jūs turite nustatyti rašymo teises." + +#: wp-cache.php:217 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "Paparsčiausias būdas tai išspręsti - pakeisti prieigos teises, naudojant CHMOD, per FTP-klientą. Pakanka nustatyti globalias teises rašymui." + +#: wp-cache.php:218 +msgid "Writeable:" +msgstr "Įrašomieji:" + +#: wp-cache.php:219 +msgid "Readonly:" +msgstr "Tik skaitymui:" + +#: wp-cache.php:231 +#, php-format +msgid "Warning! %s is writeable!" +msgstr "Įspėjimas! %s yra įrašomas!" + +#: wp-cache.php:232 +#, php-format +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "Jums reikia pakeisti teises %s, ir padaryti jį labiau ribojamu. Naudokite savo FTP klientą arba šią komandą:" + +#: wp-cache.php:240 +msgid "Mobile rewrite rules detected" +msgstr "Mobiliai perrašytų taisyklių pažeidimai" + +#: wp-cache.php:241 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"2.0\\ MMP|240x320\" and delete those." +msgstr "Geriausiu atvėju turėtumėte įjungti \"Mobiliojo prietaiso parama\" arba ištrinti .htaccess mobiliojo perrašymo taisykles. Ieškoti 2 eilutę su tekstu \"2.0\\MMP|240x320\" ir ištrinti." + +#: wp-cache.php:241 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "Tai nedaro jokios įtakos paprastiems vartotojams, tačiau mobiliojo ryšio vartotojai galės matyti netalpinamus puslapius." + +#: wp-cache.php:247 +#: wp-cache.php:258 +msgid "Rewrite rules must be updated" +msgstr "Perrašomos taisyklės turi būti atnaujinamos" + +#: wp-cache.php:248 +#: wp-cache.php:259 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "Šis įskiepis reikalauja perrašomų taisyklių pasikeitimą arba jų nėra." + +#: wp-cache.php:249 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "Mobilusis palaikymas reikalauja papildomų taisyklių jūsų .htaccess faile arba galite nustatyti įjungtu režimą. Čia yra jūsų parinktys (sudėtingumo tvarka):" + +#: wp-cache.php:250 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "Nustatykite vidutinio talpynimo režimu ir kad būtų mobiliojo ryšio palaikymas." + +#: wp-cache.php:251 +#: wp-cache.php:260 +msgid "Scroll down the Advanced Settings page and click the Update Mod_Rewrite Rules button." +msgstr "Slinkite žemyn puslapį Išplėstiniai nustatymai ir spustelėkite mygtuką Atnaujinti mod_rewrite taisykles." + +#: wp-cache.php:252 +#, php-format +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "Ištrinti įskiepio mod_rewrite taisykles %s.htaccess tarp # BEGIN WPSuperCache ir # END WPSuperCache ir tegul įskiepis regeneruoja juos kraunantis puslapiui." + +#: wp-cache.php:253 +#, php-format +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ add these lines: (do it twice, once for each section)" +msgstr "Pridėkite taisykles patys. Redaguoti %s.htaccess ir rasti kodo bloką tarp # BEGIN WPSuperCache ir # END WPSuperCache . Yra du skyriai, kurie atrodo labai panašiai. Tiesiog žemiau linijos %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ pridėkite šias eilutes: (tai padaryti du kartus, vieną kartą kiekviename skyriuje)" + +#: wp-cache.php:266 +msgid "Required to serve compressed supercache files properly." +msgstr "Reikalaujama tinkamai suspaustiems supercache failams." + +#: wp-cache.php:266 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "Privalo nustatyti talpyklos informaciją supercache puslapiuose. IE7 vartotojai be šio modulio matys senus puslapius." + +#: wp-cache.php:266 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "Nustatyti galiojimo supercached puslapių pabaigos datą. Lankytojai nematys naujų puslapių, kai jie atsinaujins ar palikti komentarus be šio modulio." + +#: wp-cache.php:273 +msgid "Missing Apache Modules" +msgstr "Trūksta Apache modulių" + +#: wp-cache.php:274 +msgid "The following Apache modules are missing. The plugin will work in legacy mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "Trūksta šių Apache modulių. Įskiepis dirbs vidutiniu režimu be jų. Pilnu Supercache režimu jūsų lankytojai gali pamatyti sugadintus puslapius ar pasibaigusios datos turinį." + +#: wp-cache.php:413 +msgid "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file." +msgstr "Įspėjimas! Jūs bandėte įjungti suspaudimą, bet zlib.output_compression zlib.output_compression yra įjungtas . Žr. #21 skyrių \"Problemų diagnostika\" readme failą." + +#: wp-cache.php:501 +msgid "WP Super Cache Settings" +msgstr "WP Super talpyklos nustatymai" + +#: wp-cache.php:512 +msgid "Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced Settings Page by default." +msgstr "Pranešimas: mod_rewrite arba vidutinės talpyklos įjungimas. Rodyti išplėstinius nustatymų puslapį pagal nutylėjimą." + +#: wp-cache.php:523 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "Konfigūracijos failas pakeistas, kai kurios reikšmės gali būti klaidingos. Pakraukite puslapį iš naujo iš \"Nustatymai \" meniu, kad tai ištaisyti." + +#: wp-cache.php:540 +#: wp-cache.php:614 +msgid "Caching must be enabled to use this feature" +msgstr "Talpykla turi būti įjungta jei norite naudoti šią funkciją" + +#: wp-cache.php:542 +msgid "Cache Tester" +msgstr "Talpyklos patikra" + +#: wp-cache.php:543 +msgid "Test your cached website by clicking the test button below." +msgstr "Pasitikrinkite savo išsaugotą svetainę, paspaudę žemiau esantį mygtuką testavimui." + +#: wp-cache.php:550 +#, php-format +msgid "Fetching %s to prime cache: " +msgstr "Patikra %s svarbiausios talpyklos:" + +#: wp-cache.php:552 +#: wp-cache.php:559 +#: wp-cache.php:566 +msgid "OK" +msgstr "OK" + +#: wp-cache.php:557 +#, php-format +msgid "Fetching first copy of %s: " +msgstr "Pirmosios kopijos %s patikra:" + +#: wp-cache.php:564 +#, php-format +msgid "Fetching second copy of %s: " +msgstr "Antrosios kopijos %s patikra:" + +#: wp-cache.php:570 +msgid "One or more page requests failed:" +msgstr "Viena ar daugiau puslapio užklausų nepavyko:" + +#: wp-cache.php:589 +#: wp-cache.php:590 +#, php-format +msgid "Page %d: %d (%s)" +msgstr "Puslapis %d:%d (%s)" + +#: wp-cache.php:596 +#, php-format +msgid "Page 1: %s" +msgstr "Puslapis 1: %s" + +#: wp-cache.php:597 +#, php-format +msgid "Page 2: %s" +msgstr "Puslapis 2: %s" + +#: wp-cache.php:598 +msgid "The timestamps on both pages match!" +msgstr "Laikini abiejų puslpių štampai sutampa!" + +#: wp-cache.php:600 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "Puslapiai nesutampa! Laikinas štampas skiriasi arba nebuvo rastas!" + +#: wp-cache.php:606 +msgid "Send non-secure (non https) request for homepage" +msgstr "Išsiųsti neapsaugotą (ne per https) užklausą pagrindiniam puslapiui" + +#: wp-cache.php:607 +msgid "Test Cache" +msgstr "Patikrinti" + +#: wp-cache.php:632 +#: wp-cache.php:755 +msgid "Cancel Cache Preload" +msgstr "Atšaukti bendrąją talpyklą" + +#: wp-cache.php:638 +msgid "Scheduled preloading of cache cancelled. If a job is currently running it will not shutdown until the current 100 pages are complete." +msgstr "Bendroji talpykla pagal tvarkaraštį atjungta. Jeigu darbas yra paleistas, jis nebus uždarytas tol, kol einamosios 100 puslapių nebus talpykloje." + +#: wp-cache.php:649 +msgid "Scheduled preloading of cache cancelled." +msgstr "Bendroji talpykla pagal tvarkaraštį atjungta." + +#: wp-cache.php:675 +#: wp-cache.php:753 +msgid "Preload Cache Now" +msgstr "Sukūrti bendrąją talpyklą dabar" + +#: wp-cache.php:678 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "Bendroji talpykla pradės darbą po 10 sek." + +#: wp-cache.php:682 +#, php-format +msgid "Scheduled preloading of cache in %d minutes" +msgstr "Bendroji talpykla pradės veikti po %d min" + +#: wp-cache.php:686 +msgid "This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now." +msgstr "Tai bus talpykloje po kiekvieno žinutės ir puslapio patalpinimo jūsų svetainėje. Ji sukurs supercache statinius failus, kad nežinomų lankytojų (įskaitant botų) lankys išsaugotą puslapį. Tai tikriausiai padės Google reitingavimui, nes jie kaip rodiklį naudoja greičio metriką, sprendžiant iš puslapio." + +#: wp-cache.php:687 +msgid "Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "Tačiau, naudojant šio tipo talpyklą sukūriama daug daugiau failų. Rekomenduojama naudoti tokį būdą, jei pas jus labai daug įrašų (10,000+) bloge. Ypač tai svarbu, jeigu jūs naudojatės virtualaus hostingo paslaugomis." + +#: wp-cache.php:688 +msgid "In ’Preload Mode’ regular garbage collection will only clean out old legacy files for known users, not the preloaded supercache files. This is a recommended setting when the cache is preloaded." +msgstr "Režime ’Bendro talpinimo’ planuotas šiukšlių išvalymas ištrins tik talpykloje esančius paprasto tipo įrašus (talpykla iš Super Cache nebus pašalintas). Tai yra rekomenduojama naudojimui." + +#: wp-cache.php:692 +#, php-format +msgid "Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)" +msgstr "Atnaujinti bendrą talpyklą kas %s min (įveskite 0, kad atjungti, minimalus min skaičius %d)." + +#: wp-cache.php:705 +msgid "all" +msgstr "visi" + +#: wp-cache.php:718 +#, php-format +msgid "Preload %s posts." +msgstr "Saugoti %s įrašus." + +#: wp-cache.php:725 +msgid "Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "Preliminarus režimas (šiukšlių išvalymas veikia ne pilnai, Rekomenduojama.)" + +#: wp-cache.php:728 +msgid "Send me status emails when files are refreshed." +msgstr "Siųsti man statusą elektroniniu paštu, kai failai yra atnaujinami." + +#: wp-cache.php:733 +msgid "Many emails, 2 emails per 100 posts." +msgstr "Daug laiškų, 2 laiškai į 100 žinučių." + +#: wp-cache.php:736 +msgid "Medium, 1 email per 100 posts." +msgstr "Vidutinis lygis: 1 email į 100 žinučių." + +#: wp-cache.php:739 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "Žemas lygis: 1 e-mail pradžioje ir 1 gale po visų žinučių apkrova." + +#: wp-cache.php:743 +#, php-format +msgid "Refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Talpyklos atnaujinimas po %d val %d min ir %d sek." + +#: wp-cache.php:744 +#, php-format +msgid "Full refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Pilnas saugyklos atnaujinimas:%d val %d min ir %d sekundžių." + +#: wp-cache.php:750 +#, php-format +msgid "Currently caching from post %d to %d." +msgstr "Šiuo metu saugoma iš %d į %d." + +#: wp-cache.php:753 +msgid "Update Settings" +msgstr "Atnaujinti nustatymus" + +#: wp-cache.php:761 +msgid "Preloading of cache disabled. Please disable legacy page caching or talk to your host administrator." +msgstr "Saugyklos prieškrova atjungta. Prašome įjungti pilną įskiepio darbą arba susisiekite su administratorium." + +#: wp-cache.php:776 +#: wp-cache.php:865 +msgid "Caching" +msgstr "Saugyklos statusas" + +#: wp-cache.php:780 +msgid "Cache hits to this website for quick access." +msgstr "Saugoti svetainės peržiūras greitai prieigai." + +#: wp-cache.php:780 +#: wp-cache.php:781 +#: wp-cache.php:795 +#: wp-cache.php:799 +#: wp-cache.php:802 +#: wp-cache.php:803 +#: wp-cache.php:868 +msgid "Recommended" +msgstr "Rekomenduojama" + +#: wp-cache.php:781 +msgid "Use mod_rewrite to serve cache files." +msgstr "Naudoti mod_rewrite talpyklos failų aptarnavimui." + +#: wp-cache.php:782 +msgid "Use PHP to serve cache files." +msgstr "Naudokite PHP talpyklos failų aptarnavimui." + +#: wp-cache.php:783 +msgid "Legacy page caching." +msgstr "Supaprastintas saugojimas." + +#: wp-cache.php:784 +msgid "Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should go with PHP caching." +msgstr "Naudojimas mod_rewrite padės paspartinti blogo darbą, negu PHP (nors šis variantas irgi ne toks lėtas). Šis režimas paprastesnis ir patogesnis, bet pradedančiajam geriau naudoti saugojamą PHP." + +#: wp-cache.php:790 +msgid "Miscellaneous" +msgstr "Įvairūs" + +#: wp-cache.php:795 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "Suspausti puslapius, kad paspartinti darbą." + +#: wp-cache.php:796 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching it on and off clears the cache." +msgstr "Suspaudimas yra išjungtas pagal nutylėjimą, nes kai kurie hostingai turi problemų su suspaustais failais. Perjungimas tarp įjungimo ir išjungimo išvalo talpyklą." + +#: wp-cache.php:799 +msgid "304 Not Modified browser caching. Indicate when a page has not been modified since last requested." +msgstr "304 Ne modifikuota naršyklės talpykla. Nurodoma, kai puslapis nebuvo pakeistas nuo paskutinio užklausimo." + +#: wp-cache.php:800 +msgid "304 support is disabled by default because in the past GoDaddy had problems with some of the headers used." +msgstr "304 palaikymas yra išjungtas pagal nutylėjimą, nes pastaruoju metu GoDaddy turėjo problemų su kai kuriom naudojamom antraštėm." + +#: wp-cache.php:802 +msgid "Don’t cache pages for known users." +msgstr "Negalima saugoti puslapių žinomiems vartotojams." + +#: wp-cache.php:803 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated." +msgstr "Talpykla atstatyta. Pateikti talpyklos failai anoniminiams vartotojams, kol naujas failas yra generuojamas." + +#: wp-cache.php:804 +msgid "Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)" +msgstr "Papasakoti visiems, kad naudojatės įskiepiu (pranešimas bus patalpintas blogo poraštėje)." + +#: wp-cache.php:810 +#: wp-cache.php:957 +#: wp-cache.php:1473 +msgid "Advanced" +msgstr "Išplėstinė" + +#: wp-cache.php:814 +msgid "Mobile device support." +msgstr "Mobiliojo prietaiso palaikymas." + +#: wp-cache.php:815 +msgid "Clear all cache files when a post or page is published." +msgstr "Išvalyti visus talpyklos failus, kai skelbiama žinutė ar puslapis." + +#: wp-cache.php:816 +msgid "Only refresh current page when comments made." +msgstr "Tik atnaujinti dabartinį puslapį, kai atsiranda nauji komentarai." + +#: wp-cache.php:817 +msgid "List the newest cached pages on this page." +msgstr "Sąrašas naujausių talpyklos puslapių šiame puslapyje." + +#: wp-cache.php:819 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "Failų blokiravimas. Jms tikriausiai nereikia, tačiau ji gali padėti, jei jūsų serveris yra silpnas. Įspėjimas! Gali sukelti jūsų serverio užrakinimą labai retais atvejais!" + +#: wp-cache.php:822 +msgid "Use object cache to store cached files." +msgstr "Naudokite objekto talpyklą talpyklos failams saugoti." + +#: wp-cache.php:822 +msgid "(Experimental)" +msgstr "(Eksperimentinis)" + +#: wp-cache.php:829 +msgid "Note:" +msgstr "Pastaba:" + +#: wp-cache.php:831 +#, php-format +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "Jeigu pašalinti šį įskiepį, įsitikinkite, kad katalogo %s yra įrašomi serveryje, todėl advanced-cache.php ir cache-config.php failai gali būti ištrinti automatiškai . (Įsitikinkite, kad tie failai yra įrašomi!)" + +#: wp-cache.php:832 +#, php-format +msgid "Please see the readme.txt for instructions on uninstalling this script. Look for the heading, \"How to uninstall WP Super Cache\"." +msgstr "Prašome žiūrėti readme.txt instrukcijas, kaip pašalinti šį scenarijų . Ieškoti pozicijoje, \"Kaip pašalinti WP Super Cache\"." + +#: wp-cache.php:833 +#, php-format +msgid "Need help? Check the Super Cache readme file. It includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already have been answered." +msgstr "Reikia pagalbos? Patikrinkite Super Cache failą readme . Jis apima įdiegimo dokumentaciją, DUK ir trikčių diagnostikos patarimų. Palaikymo forumas. Į jūsų klausimą galbūt jau buvo atsakyta." + +#: wp-cache.php:836 +#: wp-cache.php:883 +msgid "Update Status" +msgstr "Atnaujinti statusą" + +#: wp-cache.php:843 +msgid "Accepted Filenames & Rejected URIs" +msgstr "Priimami failų pavadinimai & Atmesti URI" + +#: wp-cache.php:868 +msgid "Caching On" +msgstr "Talpykla įjungta" + +#: wp-cache.php:869 +msgid "Caching Off" +msgstr "Talpykla išjungta" + +#: wp-cache.php:870 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "Pastaba: leidžia įjungti PHP talpinimą ir judriojo ryšio palaikymą" + +#: wp-cache.php:880 +msgid "Notice: Supercache mod_rewrite rules detected. Cached files will be served using those rules. Edit the .htaccess file in the root of your install and remove the SuperCache rules." +msgstr "Pastaba: Supercache mod_rewrite taisyklių aptikimas. Talpykliniai failai bus aptarnaujami naudojant šias taisykles. Redaguoti .htaccess failą jūsų pirminėje direktorijoje ir pašalinti SuperCache taisykles." + +#: wp-cache.php:892 +msgid "Make WordPress Faster" +msgstr "Padaryti WordPress spartesniu" + +#: wp-cache.php:893 +#, php-format +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "%1$s sukurtas ir palaikomas %2$s ir daugelis kitų." + +#: wp-cache.php:894 +#, php-format +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "Apsilankykite įskiepio autoriaus bloge %1$s ir publikuokite nuotraukas %2$s." + +#: wp-cache.php:895 +#, php-format +msgid "Please say hi to him on %s too!" +msgstr "Prašome aplankyti ir autoriaus %s!" + +#: wp-cache.php:903 +#, php-format +msgid "Cached pages since %1$s : %2$s" +msgstr "Puslapių talpykloje %1$s : %2$s" + +#: wp-cache.php:904 +msgid "Newest Cached Pages:" +msgstr "Nauji talpyklos puslapiai:" + +#: wp-cache.php:908 +#, php-format +msgid "Cached %s seconds ago" +msgstr "Įdėta į talpyklą prieš %s sek" + +#: wp-cache.php:911 +msgid "(may not always be accurate on busy sites)" +msgstr "(sąrašas nerekomenduojamas didelioms svetainėms)" + +#: wp-cache.php:930 +msgid "Cache plugins are PHP scripts that live in a plugins folder inside the wp-super-cache folder. They are loaded when Supercache loads, much sooner than regular WordPress plugins." +msgstr "Talpyklos įskiepiai yra PHP skriptai, kurie gyvena įskiepio aplanko viduje wp-super-cache aplanke. Jie pakraunami, kai pasikrauna Supercache, daug greičiau nei reguliarūs WordPress įskiepiai." + +#: wp-cache.php:931 +msgid "This is strictly an advanced feature only and knowledge of both PHP and WordPress actions is required to create them." +msgstr "Šiai parinkčiai naudoti reikalingi PHP ir WordPress žinios." + +#: wp-cache.php:941 +msgid "Available Plugins" +msgstr "Turimi įskiepiai" + +#: wp-cache.php:957 +msgid "Easy" +msgstr "Lengvas" + +#: wp-cache.php:957 +msgid "Tester & Contents" +msgstr "Testeris & Turinys" + +#: wp-cache.php:957 +msgid "Preload" +msgstr "Prieškrūvis" + +#: wp-cache.php:957 +msgid "Plugins" +msgstr "Įskiepiai" + +#: wp-cache.php:957 +msgid "Debug" +msgstr "Derinimas" + +#: wp-cache.php:984 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "Pastaba: taisylių WP Super Cache mod_rewrite tikrinimas atjungtas, kol nebus paleistas pagrindiniame bloge." + +#: wp-cache.php:986 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on on the main site of this network." +msgstr "Pastaba: Taisyklių WP Super Cache mod_rewrite tikrinimas atjungtas, kol nebus paleistas pagrindiniame bloge." + +#: wp-cache.php:996 +msgid "Mod Rewrite Rules" +msgstr "Mod Rewrite taisyklės" + +#: wp-cache.php:1002 +msgid "WordPress MU Detected" +msgstr "WordPress MU aptiktas" + +#: wp-cache.php:1002 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "Dėja, mod_rewrite negalima atnaujinti auto režimu WordPress MU. Jums teks rankiniu būdu tai atlikti: atidarykite failą .htaccess ir įterpkite sekančią taisyklę." + +#: wp-cache.php:1004 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Mod Rewrite taisyklės negali būti atnaujintos!" + +#: wp-cache.php:1005 +#, php-format +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "Korektiškam darbui jūsų %s.htaccess faile turi būti įrašyti BEGIN ir END. Tarp jų randasi pagrindinės WordPress mod_rewrite taisyklės, pvz.:" + +#: wp-cache.php:1007 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "Atnaujinkite puslapį po to, kai atredaguosite .htaccess failą." + +#: wp-cache.php:1011 +msgid "Thank you for upgrading." +msgstr "Dėkojame už modernizaciją." + +#: wp-cache.php:1011 +#, php-format +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "Po paskutinio įskiepio atnaujinimo mod_rewrite taisyklės buvo pakeistos. Dėja, jums teks rankiniu būdu pašalinti senas taisykles. Atnaujinkite puslapį, kai baigsite redagavimą .htaccess failo. Jeigu norite atnaujinti viską patys, tuomet pakeiskite sekančią eilutę: %1$s į šią: %2$s . Vienintelis skirtumas - tai pakeitimas \"HTTP_COOKIE\" į \"HTTP:Cookie\" ir \"wordpressuser\" į \"wordpress\". Šie pakeitimai susiję su nauja WordPress 2.5 versija. " + +#: wp-cache.php:1015 +msgid "Trailing slash check required." +msgstr "Reikalinga trailing slash patikra." + +#: wp-cache.php:1015 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "Rodos, visos jūsų blogo nuorodos baigiasi simboliu \"/\". Dėja, kai tik jūs įdiegėte įskiepį, suveikė funkcija, radusi nuorodų kopijas be \"/\" gale, ir dabar negali perkelti teisingu adresu. Problemą pašalinti padėsfailo .htaccess redagavimas ir 2 naujų taisyklių įterpimas prie pagrindinių Supercache įskiepio taisyklių:" + +#: wp-cache.php:1017 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "Kad pamatyti pilną veikiančių taisyklių sąrašą, paspauskite mygtuką \"Pažiūrėti mod_rewrite taisykles\"." + +#: wp-cache.php:1031 +msgid "Mod Rewrite rules updated!" +msgstr "Mod_rewrite taisyklės atnaujintos!" + +#: wp-cache.php:1032 +#, php-format +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "failas %s.htaccess buvo sėkmingai atnaujintas, reikalingos mod_rewrite taisyklės pridėtos. Prašome patikrinti jas. Jos turi atrodyti taip:" + +#: wp-cache.php:1034 +msgid "Mod Rewrite rules must be updated!" +msgstr "Taisyklės mod_rewrite turi būti atnaujintos!" + +#: wp-cache.php:1035 +#, php-format +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "Jūsų failas %s.htaccess nepasiekiamas įrašymui (serverio nustatymuose) ir negali būti atnaujintas auto režimu. Jūs turite rankiniu būdu pridėti naujas taisykles prie pagrindinių WordPress taip, kaip nurodyta žemiau:" + +#: wp-cache.php:1040 +#, php-format +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "Taisyklės mod_rewrite įskiepiui WP Super Cache buvo aptiktos faile %s.htaccess.
      Paspauskite mygtuką, kad peržiūrėti eilutes. Jeigu jūs ką tik atnaujinote įskiepį, patikrinkite visas taisykles." + +#: wp-cache.php:1043 +msgid "A difference between the rules in your .htaccess file and the plugin rewrite rules has been found. This could be simple whitespace differences but you should compare the rules in the file with those below as soon as possible. Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "Tarp taisyklių jūsų faile .htaccess ir taisyklių pačio įskiepio rasti nesutapimai. Tai gali būti papildomas simbolis eilutėje, bet jūs patys turite sulyginti originalias taisykles su savo kuo greičiau. Paspauskite mygtuką ’Atnaujinti Mod_Rewrite taisykles’, kad padaryti tai ato režimu." + +#: wp-cache.php:1046 +msgid "View Mod_Rewrite Rules" +msgstr "Žiūrėti mod_rewrite taisykles" + +#: wp-cache.php:1050 +#: wp-cache.php:2287 +#, php-format +msgid "Rules must be added to %s too:" +msgstr "Taisyklės taip pat bus įterptos į %s:" + +#: wp-cache.php:1058 +#, php-format +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "Gzip-suspaudimo taisyklės patalpintos į %s.htaccess." + +#: wp-cache.php:1065 +msgid "Fix Configuration" +msgstr "Nustatyti konfigūravimą" + +#: wp-cache.php:1068 +msgid "Restore Default Configuration" +msgstr "Atkurti numatytąją konfigūraciją." + +#: wp-cache.php:1076 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "Komentarų tikrinimas įjungtas. Po kiek laiko jūsų komentarai bus apublikuoti." + +#: wp-cache.php:1101 +msgid "Lock Down:" +msgstr "Uždaras režimas:" + +#: wp-cache.php:1101 +msgid "Disabled" +msgstr "Atjungta" + +#: wp-cache.php:1101 +msgid "Enabled" +msgstr "Įjungta" + +#: wp-cache.php:1102 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "Paruoškite savo blogą planuojamiems dideliems apsilankymų skaičiams, aktyvuojant šį režimą. Aktyvioje būsenoje naujų komentarų ir žinučių talpinimas neatnaujins talpykloje statinių failų." + +#: wp-cache.php:1103 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "Programuotojams: Padarykite savo įskiepį uždarytu režimu ir suderintu su mūsų įskiepiu, įterpus \"WPLOCKDOWN\". Žemiau esantis kodas padės jums adaptuoti įskiepį prie mūsų." + +#: wp-cache.php:1105 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "Atsiprašome. Mano blogas laikinai nedirba. Užeikite vėliau" + +#: wp-cache.php:1109 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "WordPress nenaudoja saugaus režimo. Nauji komentarai neatnaujina visus talpyklos elementus." + +#: wp-cache.php:1111 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "WordPress nenaudoja saugaus režimo. Nauji komentarai atnaujina visus talpyklos elementus." + +#: wp-cache.php:1117 +msgid "Lock Down" +msgstr "Uždaras režimas" + +#: wp-cache.php:1125 +msgid "Directly Cached Files" +msgstr "Tiesioginis failų saugojimas" + +#: wp-cache.php:1183 +#, php-format +msgid "%s removed!" +msgstr "%s pašalintas!" + +#: wp-cache.php:1191 +#, php-format +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "Jūs turite nustatyti teises į %s įrašomais, kad įjungti šią funkciją. Tačiau tai potenciali rizika. Po puslapio atnaujinimo grąžinkite teises." + +#: wp-cache.php:1193 +#, php-format +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "%s įrašomas. Prašome pakeisti teises į \"Ti skaitymui\" jūsų blogo saugumui." + +#: wp-cache.php:1207 +msgid "Existing direct page" +msgstr "Esamas tiesioginis puslapis" + +#: wp-cache.php:1207 +msgid "Delete cached file" +msgstr "Ištrinti talpyklos failą" + +#: wp-cache.php:1212 +msgid "Add direct page:" +msgstr "Pridėti tiesioginį puslapį:" + +#: wp-cache.php:1214 +#, php-format +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "Toks saugojimas sukuriamas tiesiogiai iš katalogo %s. Ši parinktis naudinga tuomet, kai laukiamas lankytojų antplūdis iš populeresnio blogo į jūsų blogo konkrečią žinutę ar puslapį." + +#: wp-cache.php:1216 +#, php-format +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "Pavyzdžiui: kad patalpinti puslapį %1$sabout/ į talpyklą, reikia įrašyti %1$sabout/ arba /about/. Puslapis bus išsaugotas iš karto, kai pirmą kartą jis aplankytas." + +#: wp-cache.php:1217 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "Kad pašalinti puslapį iš tokios talpyklos, išvalykite tekstinį laukelį ir pašalinkite talpyklą." + +#: wp-cache.php:1222 +msgid "Update Direct Pages" +msgstr "Atnaujinti puslapius" + +#: wp-cache.php:1260 +msgid "Expiry Time & Garbage Collection" +msgstr "Pasibaigęs laikas & Šiukšlių valymas" + +#: wp-cache.php:1262 +msgid "Expire time:" +msgstr "Baigiasi laikas:" + +#: wp-cache.php:1263 +msgid "seconds" +msgstr "sekundžių" + +#: wp-cache.php:1264 +msgid "Garbage Collection" +msgstr "Šiukšlių valymas" + +#: wp-cache.php:1264 +msgid "If the expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above." +msgstr "Jeigu taupyklos aktualumas daugiau nei 1800 sek (pusė valandos), tuomet šiukšlių šalinimas bus vykdomas kas 10 min." + +#: wp-cache.php:1265 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 300 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. If you are using legacy caching aim to have less than 500 cached files if possible. You can have many times more cached files when using mod_rewrite or PHP caching." +msgstr "Pasibaigusių failų tikrinimas ir šalinimas užtrunka, bet ir palikti tokius failus sistemoje neverta. Dideliuose bloguose reikia nurodyti \"gyvavimo laiką\" kiekvienos kopijos 300 sek. Jūs galite eksperimentuoti su nustatymais ir pažiūrėti, kiek pasibaigusių puslapių kopijų lieka talpykloje dienos metu. Optimalus tokių puslapių skaičius ne daugiau nei 500. Naudokite saugojimą su mod_rewrite arba PHP, Jūs galėsite padidinti saugomų puslapių skaičių." + +#: wp-cache.php:1266 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "Nustatyti galiojimo laiką į 0 sekundžių, kad išjungti šiukšlių surinkimą." + +#: wp-cache.php:1267 +msgid "Change Expiration" +msgstr "Keisti galiojimo pabaigą" + +#: wp-cache.php:1311 +msgid "Rejected User Agents" +msgstr "Atmesti botai" + +#: wp-cache.php:1312 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "Kad uždrausti įskiepiui saugoti paieškos ir kitų botų užklausas, įveskite jų pavadinimus į laukelį žemiau. Jeigu puslapio kopija jau egzistuoja Super Cache talpykloje, ji visvien bus nusiųsta botui." + +#: wp-cache.php:1319 +msgid "Save UA Strings" +msgstr "Išsaugoti nustatymus" + +#: wp-cache.php:1342 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "Ne saugoti tokių tipų puslapius. Palyginkite su Sąlyginiai tegai dokumentacija, kad sužinoti daugiau." + +#: wp-cache.php:1345 +msgid "Single Posts" +msgstr "Tik žinutės" + +#: wp-cache.php:1346 +msgid "Pages" +msgstr "Puslapiai" + +#: wp-cache.php:1347 +msgid "Front Page" +msgstr "Pagrindinis puslapis" + +#: wp-cache.php:1348 +msgid "Home" +msgstr "Pradinis puslapis" + +#: wp-cache.php:1349 +msgid "Archives" +msgstr "Archyvai" + +#: wp-cache.php:1350 +msgid "Tags" +msgstr "Žymos" + +#: wp-cache.php:1351 +msgid "Category" +msgstr "Kategorija" + +#: wp-cache.php:1352 +msgid "Feeds" +msgstr "Kanalai" + +#: wp-cache.php:1353 +msgid "Search Pages" +msgstr "Paieškos puslapiai" + +#: wp-cache.php:1355 +#: wp-cache.php:1483 +msgid "Save" +msgstr "Išsaugoti" + +#: wp-cache.php:1372 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "Laukelį žemiau galite užpildyti puslapių adresų fragmentais (arba puslapių grupėmis, pvz. archyvas už metus/mėnesį ir t.t.), kurie nebus saugojami. Įskiepis skanuos puslapių adresus ir ieškos fragmentus, nurodytus žemiau, prieš saugojimą." + +#: wp-cache.php:1378 +msgid "Save Strings" +msgstr "Išsaugoti uždraustus fragmentus" + +#: wp-cache.php:1394 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "Laukelį, esantį žemiau, jūs galite užpildyti failų vardais, kurie bus saugojami net tuo atveju, jei pavadinimuose bus draudžiami fragmentai." + +#: wp-cache.php:1400 +msgid "Save Files" +msgstr "Išsaugoti failus" + +#: wp-cache.php:1445 +msgid "Currently logging to: " +msgstr "Šiuo metu prisijungta prie:" + +#: wp-cache.php:1455 +msgid "Fix problems with the plugin by debugging it here. It can send you debug emails or log them to a file in your cache directory." +msgstr "Čia galite išspręsti kai kurias problemas, iškylusias darbo su įskiepiu metu, derinimo pagalba. Jūs galite įrašyti logus į failus, esančius talpyklos kataloge." + +#: wp-cache.php:1456 +msgid "Logging to a file is easier but faces the problem that clearing the cache will clear the log file." +msgstr "Gauti priėimą prie failo logo paprasta, tačiau išvalant talpyklą logas taip pat bus ištrintas." + +#: wp-cache.php:1460 +msgid "Debugging" +msgstr "Derinimas" + +#: wp-cache.php:1461 +msgid "Logging Type" +msgstr "Įėjimo būdas" + +#: wp-cache.php:1461 +msgid "Email" +msgstr "Email" + +#: wp-cache.php:1462 +msgid "file" +msgstr "failas" + +#: wp-cache.php:1463 +msgid "IP Address" +msgstr "IP adresas" + +#: wp-cache.php:1463 +#, php-format +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(tik logo užklausos iš šio IP. Jūsų IP - %s)" + +#: wp-cache.php:1464 +msgid "Log level" +msgstr "Logo lygis" + +#: wp-cache.php:1470 +msgid "(1 = less, 5 = more, may cause severe server load.)" +msgstr "(1 = mažiausias, 5 = didžiausias, gali sukelti per didelį krūvį serveriui)" + +#: wp-cache.php:1473 +msgid "In very rare cases two problems may arise on some blogs:

      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "Ypač retais atvėjais bloge gali iškilti dvi problemos:
      1. Vietoj pradinio puslapio vartotojai gali matyti siūlymą įkrauti su ja .zip archyvą
      2. Vietoj pradinio puslapio į talpyklą gali būti įdėtas visiškai kitas (tik tuo atvėju, jeigu blogas naudoja sekančią nuorodų struktūrą /%category%/%postname%/).
      " + +#: wp-cache.php:1474 +#, php-format +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "I’m 99% certain! Kalidos, kurios gali iškilti dirbant su WP Super Cache, nesusijusios su pačiu įskiepiu. Jos atsiranda retais atvėjais, bet jūs galite apsisaugoti, paleidžiant kas 5 min automatinį blogo tikrinimą. Atsiradus klaidai, jums apie tai bus pranešta per email." + +#: wp-cache.php:1476 +msgid "Check front page every 5 minutes." +msgstr "Patikrinkite pirmąjį puslapį kas 5 minutes." + +#: wp-cache.php:1477 +msgid "Front page text" +msgstr "Pirmo puslapio tekstas" + +#: wp-cache.php:1477 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "Įveskite tekstą, kurį ieškos įskiepis pagrindiniame puslapyje. Jeigu tekstas nebus rastas, tuomet talpykla automatiškai išsivalys. Palikite laukelį tuščią, kad atjungti šią parinktį." + +#: wp-cache.php:1478 +msgid "Clear cache on error." +msgstr "Valyti talpyklą klaidos metu." + +#: wp-cache.php:1479 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "Praneškite blogo administratoriui po patikrinimo (naudinga testuojant)." + +#: wp-cache.php:1493 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "Klaida: GZIP suspaudimas įjungtas, atjunkite jį, jeigu norite pajungti wp-cache." + +#: wp-cache.php:1540 +#: wp-cache.php:1702 +msgid "Warning" +msgstr "Dėmesio" + +#: wp-cache.php:1540 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "Suspaudimas GZIP įjungtas WordPress nustatymuose, įskiepis nedirbs tol, kol neatjungsite suspaudimą." + +#: wp-cache.php:1598 +#: wp-cache.php:1603 +#: wp-cache.php:1635 +#: wp-cache.php:1640 +#: wp-cache.php:1646 +msgid "Error" +msgstr "Klaida" + +#: wp-cache.php:1598 +#, php-format +msgid "Your cache directory ($cache_path) did not exist and couldn’t be created by the web server. Check %s permissions." +msgstr "Katalogas ($cache_path) neegzistuoja ir negali būti sukūrtas serveryje. Patikrinkite %s teises." + +#: wp-cache.php:1603 +#, php-format +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "Aplankas (%1$s) arba %2$s turi būti įrašomi, kad šis įskiepis veiktų. Pertikrinkite juos." + +#: wp-cache.php:1635 +#, php-format +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "Konfiguracijos WP-Cache failas (%s) negaliojantis ir negali būti įrašomas. Prašome pašalinti jį ir perkrauti puslapį." + +#: wp-cache.php:1640 +#, php-format +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "Konfiguracijos failas nerastas ir katalogas %1$s (%2$s) nėra įrašomas į serverį. Patikrinkite teises." + +#: wp-cache.php:1646 +#, php-format +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "Failas WP-Cache (%s) nerastas. Patikrinkite jūsų įdiegimą." + +#: wp-cache.php:1702 +#, php-format +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "%s/advanced-cache.php neegzistuoja arba negali būti atnaujintas." + +#: wp-cache.php:1703 +msgid "1. If it already exists please delete the file first." +msgstr "1. Jeigu jau egzistuoja, prašome pirmą pašalinti failą." + +#: wp-cache.php:1704 +#, php-format +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. Pakeiskite prieigos teises į %1$s, kad galima būtų šrašyti duomenis auto režimu (teisės turi būti: chmod 777 %1$s), patikrinkite teises ir atnaujinkite puslapį. Tai laikina taisyklė, po puslapio atnaujinimo teises reikės grąžinti į pradinius nustatymus (iš 777 į 755)." + +#: wp-cache.php:1705 +#, php-format +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. Atnaujinkite puslapį, failas %s/advanced-cache.php atsinaujins pats" + +#: wp-cache.php:1706 +#, php-format +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "Jei tai neveikia, įsitikinkite, kad failas %s/advanced-cache.php neegzistuoja:" + +#: wp-cache.php:1707 +#, php-format +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. Atverti \"%1$s$wp_cache_file teksto redaktoriumi.
    • 2. Keisti tekstą CACHEHOME%2$s
    • 3. Išsaugokite failą ir nukopijuokite jį į %3$s ir perkraukite šį puslapį.
    • " + +#: wp-cache.php:1730 +msgid "

      WP_CACHE constant set to false

      The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

      define('WP_CACHE', true);

      " +msgstr "

      WP_CACHE konstanta nustatyta į false

      WP_CACHE konstanta naudojama WordPress kodo įkelimui, kuris tarnauja puslapių talpyklai. Deja, tai klaidinga. Prašome redaguoti savo wp-config.php ir pridėti arba redaguoti šią eilutę virš galutinės require_once komandos:

      define('WP_CACHE', true);

      " + +#: wp-cache.php:1732 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "Klaida: WP_CACHE nėra įjungtas jūsų wp-config.php faile ir aš negalėjau jį pakeisti." + +#: wp-cache.php:1733 +#, php-format +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "Redaguoti %s ir pridėti šią eilutę:
      apibrėžti('WP_CACHE', true);
      Priešingu atveju, WP-cache negali būti vykdomas WordPress Core ." + +#: wp-cache.php:1737 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the FAQ. The WP_CACHE line must be moved up." +msgstr "

      WP_CACHE konstanta pridėta į wp-config.php

      Jei ir toliau matysite šį įspėjamąjį pranešimą, prašome žiūrėti 5 punkteDUK. WP_CACHE linija turi būti perkelta." + +#: wp-cache.php:1759 +msgid "Cache Contents" +msgstr "Talpyklos turiniai" + +#: wp-cache.php:1762 +msgid "Object cache in use. No cache listing available." +msgstr "Talpyklos objektas naudojamas. Talpyklos sąrašas nėpasiekiamas." + +#: wp-cache.php:1786 +#, php-format +msgid "Deleting supercache file: %s
      " +msgstr "Ištrinamas supercache failas: %s
      " + +#: wp-cache.php:1803 +#, php-format +msgid "Deleting wp-cache file: %s
      " +msgstr "Ištrynamas wp-cache failas: %s
      " + +#: wp-cache.php:1868 +msgid "Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page." +msgstr "Cache statistika nėra automatiškai sugeneruojama. Jūs turite paspausti nuorodą žemiau, kad šiame puslapyje regeneruotusi statistika." + +#: wp-cache.php:1869 +msgid "Regenerate cache stats" +msgstr "Atnaujinti talpyklos statistiką" + +#: wp-cache.php:1871 +#, php-format +msgid "Cache stats last generated: %s minutes ago." +msgstr "Talpyklos statistika sugeneruota: %s min atgal." + +#: wp-cache.php:1877 +msgid "WP-Cache" +msgstr "WP-Cache" + +#: wp-cache.php:1878 +#: wp-cache.php:1894 +#, php-format +msgid "%s Cached Pages" +msgstr "%s talpykliniai puslapiai" + +#: wp-cache.php:1879 +#: wp-cache.php:1899 +#, php-format +msgid "%s Expired Pages" +msgstr "%s pasibaigę puslapiai" + +#: wp-cache.php:1893 +msgid "WP-Super-Cache" +msgstr "WP-Super-Cache" + +#: wp-cache.php:1904 +msgid "Fresh WP-Cached Files" +msgstr "Šviežia WP-failų talpykla" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "URI" +msgstr "URI" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +msgid "Key" +msgstr "Raktas" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "Age" +msgstr "Amžius" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "Delete" +msgstr "Panaikinti" + +#: wp-cache.php:1920 +msgid "Stale WP-Cached Files" +msgstr "Pasenusi WP-failų talpykla" + +#: wp-cache.php:1936 +msgid "Fresh Super Cached Files" +msgstr "Šviežia Super failų talpykla" + +#: wp-cache.php:1952 +msgid "Stale Super Cached Files" +msgstr "Pasenusi Super failų talpykla" + +#: wp-cache.php:1968 +msgid "Hide file list" +msgstr "Slėpti failų sąrašą" + +#: wp-cache.php:1970 +msgid "Too many cached files, no listing possible." +msgstr "Per daug failų talpykloje, juos dėti į sąrašą nebegalima." + +#: wp-cache.php:1972 +msgid "List all cached files" +msgstr "Visų talpyklos failų sąrašas" + +#: wp-cache.php:1978 +#, php-format +msgid "Garbage Collection
      Last GC was %s minutes ago
      " +msgstr "Šiukšlių valymas
      Paskutinis šiukšlių valymas buvo prieš %s min
      " + +#: wp-cache.php:1979 +#, php-format +msgid "Next GC in %s minutes" +msgstr "Sekantis Šiukšlių valymas bus po %s min" + +#: wp-cache.php:1982 +#, php-format +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "Pasibaigęs failai - tai failai, senesni nei %s sekundžių. Jie vis dar naudojami įskiepio ir trinami periodiškai." + +#: wp-cache.php:1993 +msgid "Delete Expired" +msgstr "Ištrinti pasibaigusį" + +#: wp-cache.php:1999 +#: wp-cache.php:2011 +#: wp-cache.php:2174 +msgid "Delete Cache" +msgstr "Ištrinti talpyklą" + +#: wp-cache.php:2011 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Pašalinti Super Cache talpyklos failus (atsidarys naujam lange)" + +#: wp-cache.php:2150 +#, php-format +msgid "%1$s is Digg proof thanks to caching by %2$s" +msgstr "%1$s dėkingas įskiepiui %2$s už atliktą darbą" + +#: wp-cache.php:2183 +#, php-format +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "WP Super Cache turi būti sukonfiguruotas! Prašome apsilankyti įskiepio admino puslapyje." + +#: wp-cache.php:2189 +msgid "Settings" +msgstr "Nustatymai" + +#: wp-cache.php:2199 +#, php-format +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "WP Super Cache išjungtas. Prašome apsilankyti įskiepio admino puslapyje, kad įjungti talpinimą." + +#: wp-cache.php:2218 +#, php-format +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] Pradinis puslapis suspaustas! Išvalykite talpyklą!" + +#: wp-cache.php:2218 +#, php-format +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "Prašome apsilankyti %s, kad išvalyti talpyklą, nes jūsų svetainės pradinis puslapis dabar siunčiamas!" + +#: wp-cache.php:2221 +#, php-format +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] Pradinis puslapis buvo suspaustas! Talpykla išvalyta!" + +#: wp-cache.php:2221 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "Jūsų blogo talpykla buvo išvalyta, kadangi jūsų svetainės pradinis puslapis šiuo metu siunčiamas. Prašome apsilankyti %s, kad patikrinti, ar talpykla buvo išvalyta." + +#: wp-cache.php:2228 +#, php-format +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] Pradinis puslapis nėra korektiškas! Prašome išvalyti talpyklą!" + +#: wp-cache.php:2228 +#, php-format +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "Prašome apsilankyti %1$s, kad išvalyti talpyklą, nes jūsų svetainės pradinis puslapis nėra korektiškas ir trūksta teksto - \"%2$s\"!" + +#: wp-cache.php:2231 +#, php-format +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] Pradinis puslapis nėra korektiškas! Talpykla išvalyta!" + +#: wp-cache.php:2231 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "Jūsų blogo talpykla buvo išvalyta, kadangi jūsų blogo pradinis puslapis neturi teksto \"%2$s\"! Prašome aplanakyti %1$s, kad patikrinti, ar talpykla yra išvalyta." + +#: wp-cache.php:2236 +#, php-format +msgid "[%s] Front page check!" +msgstr "[%s] Pradinis puslapis patikrintas!" + +#: wp-cache.php:2236 +#, php-format +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "WP Super Cache patikrino jūsų pradinį dienoraščio puslapį. Prašome aplankyti %s, jeigu norite atjungti tai." + +#: wp-cache.php:2279 +msgid "Cannot update .htaccess" +msgstr "Negali atnaujinti .htaccess" + +#: wp-cache.php:2279 +#, php-format +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "Failas %s.htaccess negali būti atnaujintas automatiniu būdu. Prašome pataisyti jį, naudojant chmod komandą arba ftp klientą." + +#: wp-cache.php:2279 +msgid "Refresh this page when the file permissions have been modified." +msgstr "Atnaujinkite šį puslapį, kai failo prieigos teisės bus modifikuoti." + +#: wp-cache.php:2279 +#, php-format +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "Jūs taip pat galite redaguoti failą %s.htaccess rankiniu būdu ir asmeniškai įrašyti reikalingas taisykles (iki esančių ten WordPress taisyklių):" + +#: wp-cache.php:2283 +#, php-format +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "Kad įskiepis galėtų teisingai dirbti su statiniais html failais, jūs turite įrašyti į failą %s.htaccess įskiepio mod_rewrite taisykles" + +#: wp-cache.php:2284 +msgid "You can edit the file yourself add the following rules." +msgstr "Jūs galite redaguoti failą, savarankiškai pridedant sekančias taisykles." + +#: wp-cache.php:2285 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr "Įsitikinkite, kad jie eina prieš bet kurią WordPress egzistuojančią taisyklę. " + +#: wp-cache.php:2293 +msgid "Update Mod_Rewrite Rules" +msgstr "Atnaujinti mod_rewrite teises" + +#: wp-cache.php:2389 +#, php-format +msgid "[%1$s] Cache Preload Started" +msgstr "[%1$s] Bendrasis talpinimas prasidėjo" + +#: wp-cache.php:2391 +#, php-format +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] Atnaujinamos žinutės nuo %2$d iki %3$d" + +#: wp-cache.php:2402 +#, php-format +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s] %2$d žinučių atnaujinta" + +#: wp-cache.php:2402 +msgid "Refreshed the following posts:" +msgstr "Atnaujintos sekančios žinutęs:" + +#: wp-cache.php:2411 +#, php-format +msgid "Scheduling next preload refresh in %d minutes." +msgstr "Sekantis planinis bendros talpyklos atnaujinimas įvyks po:% d minučių." + +#: wp-cache.php:2421 +#, php-format +msgid "[%s] Cache Preload Completed" +msgstr "[%s] Talpyklos prieškrūvis baigtas" + +#: wp-cache.php:2421 +msgid "Cleaning up old supercache files." +msgstr "Valymas senų supercache failų." + +#: wp-cache.php:2462 +#, php-format +msgid "[%s] Preload may have stalled." +msgstr "[%s] Prieškrūvis gali būti vilkinamas." + +#: wp-cache.php:2462 +#, php-format +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"Išankstinė apkrova turi būti iš naujo paleista.\n" +"%s" + +#~ msgid "" +#~ "Scroll down this page and click the Update Mod_Rewrite Rules button." +#~ msgstr "" +#~ "Пролистайте страницу вних и нажмите кнопку Обновить правила " +#~ "Mod_Rewrite." + +#~ msgid "WP Super Cache Manager" +#~ msgstr "Управление плагином WP Super Cache" + +#~ msgid "Why your configuration may not be changed" +#~ msgstr "Почему конфигурации не могут быть изменены" + +#~ msgid "Why" +#~ msgstr "Почему" + +#~ msgid "ON" +#~ msgstr "ВКЛ" + +#~ msgid "WP Cache and Super Cache enabled" +#~ msgstr "Плагины WP Cache и Super Cache включены" + +#~ msgid "HALF ON" +#~ msgstr "РАБОТАЕТ НАПОЛОВИНУ" + +#~ msgid "Super Cache Disabled, only legacy WP-Cache caching." +#~ msgstr "Плагин Super Cache отключен, работает только кэшировани WP-Cache" + +#~ msgid "OFF" +#~ msgstr "ВЫКЛ" + +#~ msgid "WP Cache and Super Cache disabled" +#~ msgstr "Плагины WP Cache и Super Cache отключены" + +#~ msgid "" +#~ "Cache rebuild. Serve a supercache file to anonymous users while a new " +#~ "file is being generated. Recommended for very busy websites with " +#~ "lots of comments. Makes \"directly cached pages\" and \"Lockdown mode\" " +#~ "obsolete." +#~ msgstr "" +#~ "Восстановление кэша. При включенной опции, гости сайта будут получать " +#~ "старые страницы из плагина Super Cache, пока формируются новые. " +#~ "Рекомендуется использовать данную опцию только для очень " +#~ "посещаемых блогов, где много комментариев. После включения опции в " +#~ "настройках \"прямое кэширование страниц\" и \"закрытый режим\" нет нужды " +#~ "(они устаревают)" + +#~ msgid "" +#~ "List the newest cached pages (may be expensive to run on busy sites, use " +#~ "with caution.)" +#~ msgstr "" +#~ "Создавать список новых кэшированных страниц (использовать на свой страх и " +#~ "риск, может затормозить сайты с большим количеством посетителей)" + +#~ msgid "" +#~ "%1$s really makes your blog go faster. Make it go faster* by " +#~ "buying me an Amazon gift card! Make it out to \"%3$s" +#~ "\" for whatever amount you want. Every penny helps!" +#~ msgstr "" +#~ "%1$s действительно ускоряет Ваш блог. Вы можете сделать его еще " +#~ "быстрее*, купив мне подарочную карту сервиса " +#~ "Amazon! Можете выбрать \"%3$s\" любое значение, какое хотите. Каждая " +#~ "копейка поможет мне!" + +#~ msgid "" +#~ "If Amazon isn’t your thing, there’s also PayPal. Click the " +#~ "\"Donate\" button below or take a quick peek at my wishlist." +#~ msgstr "" +#~ "Если Вы не хотите иметь дело с Amazon , то можно сделать пожертвование " +#~ "через PayPal. Нажмите кнопку \"Пожертвовать\" или выберите подарок для " +#~ "меня из моего списка желаний." + +#~ msgid "Thanks in advance!" +#~ msgstr "Заранее благодарю!" + +#~ msgid "" +#~ "Ok, it won’t go any faster but you’ll make this plugin author " +#~ "very happy!" +#~ msgstr "" +#~ "Ладно, он не будет быстрее, но Вы все равно сделаете автора плагина очень " +#~ "счастливым!" + +#~ msgid "Don’t show me this again." +#~ msgstr "Не показывать больше это сообщение." + +#~ msgid "Hide" +#~ msgstr "Спрятать" + +#~ msgid "" +#~ "He blogs at %1$s and posts photos at %2$s. He would really appreciate a " +#~ "donation to encourage development of this plugin." +#~ "
      Even a penny will help." +#~ msgstr "" +#~ "Блог автора - %1$s, фотоблог - %2$s. Автор плагина будет благодарен любой " +#~ "поддержке от Вас.
      Даже копейка может помочь в " +#~ "его работе." + +#~ msgid "Super Cache Compression" +#~ msgstr "Сжатие кэша Super Cache" + +#~ msgid "Compression is enabled by default when in HALF ON mode." +#~ msgstr "" +#~ "Сжатие кэша отключено по умолчанию в режиме РАБОТАЕТ НАПОЛОВИНУ." + +#~ msgid "Super Cache compression is now disabled." +#~ msgstr "Сжатие кэша Super Cache теперь отключено." + +#~ msgid "Super Cache compression is now enabled." +#~ msgstr "Сжатие кэша Super Cache теперь включено." + +#~ msgid "Update Compression" +#~ msgstr "Обновить настройки сжатия" + +#~ msgid "Debug Settings" +#~ msgstr "Параметры отладки" + +#~ msgid "" +#~ "

      WP_CACHE constant in wp-config.php set to false

      The WP_CACHE " +#~ "constant is defined in your wp-config.php but must be set to true, not " +#~ "false for this plugin to work correctly.

      " +#~ msgstr "" +#~ "

      Значение для WP_CACHE в конфигурационном файле WordPrees wp-config." +#~ "php установлено на \"false\"

      Чтобы плагин заработал, значение " +#~ "WP_CACHE в wp-config.php нужно поставить на \"true\".

      " + +#~ msgid "You must edit the file yourself add the following rules." +#~ msgstr "" +#~ "Вы должны вручную отредактировать файл и добавить необходимые правила." diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-ro_RO.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-ro_RO.mo new file mode 100644 index 0000000000000000000000000000000000000000..c8cc535b4fa9022122e22c257402f08160b22980 GIT binary patch literal 59434 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-ro_RO.po b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-ro_RO.po new file mode 100644 index 0000000..8334e7f --- /dev/null +++ b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-ro_RO.po @@ -0,0 +1,1555 @@ +# Translation of the WordPress plugin by . +# Copyright (C) 2010 +# This file is distributed under the same license as the package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: WP Super Cache\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-super-cache\n" +"POT-Creation-Date: 2010-09-27 13:58+0000\n" +"PO-Revision-Date: 2011-06-13 18:44+0200\n" +"Last-Translator: Alexandr K.\n" +"Language-Team: Michail Bogdanov \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Romanian\n" +"X-Poedit-Country: MOLDOVA, REPUBLIC OF\n" + +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "Comentariul dvs. este în aşteptarea moderaţie." + +#: plugins/awaitingmoderation.php:23 +#: plugins/awaitingmoderation.php:38 +#: plugins/badbehaviour.php:47 +#: plugins/badbehaviour.php:65 +#: plugins/domain-mapping.php:47 +#: plugins/domain-mapping.php:62 +#: plugins/searchengine.php:61 +#: plugins/searchengine.php:76 +#: wp-cache.php:1114 +msgid "Disable" +msgstr "Off" + +#: plugins/awaitingmoderation.php:29 +#: plugins/badbehaviour.php:55 +#: plugins/domain-mapping.php:53 +#: plugins/searchengine.php:67 +msgid "disabled" +msgstr "off" + +#: plugins/awaitingmoderation.php:31 +#: plugins/badbehaviour.php:57 +#: plugins/domain-mapping.php:55 +#: plugins/searchengine.php:69 +#: wp-cache.php:1460 +msgid "enabled" +msgstr "activat" + +#: plugins/awaitingmoderation.php:33 +#, php-format +msgid "Awaiting Moderation plugin is %s" +msgstr "Aşteaptă moderarea plug-in este %s" + +#: plugins/awaitingmoderation.php:34 +msgid "(Remove the text \"Your comment is awaiting moderation.\" when someone leaves a moderated comment.) " +msgstr "(Scoateţi textul \"Comentariul dvs. este în aşteptarea moderaţie.\", atunci când cineva lasă un comentariu moderat.)" + +#: plugins/awaitingmoderation.php:36 +#: plugins/badbehaviour.php:63 +#: plugins/domain-mapping.php:60 +#: plugins/searchengine.php:74 +#: wp-cache.php:1114 +msgid "Enable" +msgstr "Activat" + +#: plugins/badbehaviour.php:45 +msgid "Bad Behaviour not found. Please check your install." +msgstr "Bad Comportamentul nu a fost găsită. Vă rugăm să verificaţi a vă instala." + +#: plugins/badbehaviour.php:60 +#, php-format +msgid "Bad Behaviour support is %s." +msgstr "Sprijin Bad Behaviour este %s." + +#: plugins/badbehaviour.php:61 +#, php-format +msgid "(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr "(Numai cache moştenire a sprijinit, de compresie cu handicap şi necesită Bad Behavior în \"%s/plugins/bad-behavior/\")" + +#: plugins/badbehaviour.php:69 +#: wp-cache.php:1191 +#: wp-cache.php:1193 +msgid "Warning!" +msgstr "Atenţie!" + +#: plugins/domain-mapping.php:57 +#, php-format +msgid "Domain Mapping support plugin is %s" +msgstr "Domeniu Mapping suport plug-in este %s" + +#: plugins/domain-mapping.php:58 +msgid "(support for multiple domains on multisite websites) " +msgstr "(suport pentru mai multe domenii pe site-uri multisite)" + +#: plugins/domain-mapping.php:72 +msgid "Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin." +msgstr "Domeniu Mapping plugin detectate Vă rugăm să mergeţi la pagina Supercache plugin-uri şi pentru a permite helper cartografiere domeniu plugin." + +#: plugins/searchengine.php:71 +#, php-format +msgid "No Adverts for Friends plugin is %s." +msgstr "Nu Anunţuri pentru prietenii plug-in este %s." + +#: plugins/searchengine.php:72 +msgid "(requires friendsadverts.php too) " +msgstr "(Necesită friendsadverts.php prea) " + +#: wp-cache.php:87 +#, php-format +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "Vă rugăm să creaţi %s /wp-cache-config.php din wp-super-cache/wp-cache-config-sample.php" + +#: wp-cache.php:138 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "Avertisment PHP Safe Mode Enabled!" + +#: wp-cache.php:139 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "Este posibil să apară probleme de funcţionare, deoarece acest plug-in Safe Mode este activat." + +#: wp-cache.php:143 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "Serverul este configurat pentru a verifica proprietarul de scripturi PHP înainte de a le permite să citească şi să scrie fişiere." + +#: wp-cache.php:144 +#, php-format +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "Ai sau un administrator ar putea să facem să funcţioneze prin schimbarea proprietar al grupului de plugin-ul script-uri pentru a se potrivi cel al utilizatorului server de web. Proprietar al grupului de %s/cache/ dosar trebuie să fie, de asemenea, schimbat. Se vedea modul de siguranţă pagina de manual pentru detalii suplimentare." + +#: wp-cache.php:146 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "Ai sau un administrator trebuie să dezactivaţi această. Consultaţi pagina de siguranţă modul manual pentru detalii suplimentare. Acest lucru nu poate fi dezactivat într-un fişier. htaccess, din păcate. Aceasta trebuie să fie în fişierul de configurare php.ini. " + +#: wp-cache.php:152 +msgid "Permlink Structure Error" +msgstr "Permlink Structura Error" + +#: wp-cache.php:153 +msgid "A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks." +msgstr "Un URL-ul personalizat sau structura Permalink este necesar pentru acest plug-in pentru a funcţiona corect. Vă rugăm să mergeţi la Permalinks pagina Opţiuni pentru a configura permalinks dumneavoastră." + +#: wp-cache.php:165 +#, php-format +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "Avertisment! Hostname \"%s\" rezolvă la %s" + +#: wp-cache.php:166 +#, php-format +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "Serverul crede hostname rezolvă la %s. Unele servicii, cum ar fi colectarea gunoiului de acest plugin, şi WordPress posturi programate să nu funcţioneze corect." + +#: wp-cache.php:167 +#: wp-cache.php:181 +#, php-format +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "Vă rugăm să consultaţi de intrare 16 în secţiunea Rezolvare Probleme de readme.txt" + +#: wp-cache.php:180 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "Din pacate WordPress nu poate găsi fişierul wp-cron.php Acest script este necesar pentru funcţionarea corectă de colectare a gunoiului de acest plug-in, WordPress posturi programate, precum şi alte activităţi critice." + +#: wp-cache.php:195 +msgid "Cannot continue... fix previous problems and retry." +msgstr "Nu se poate continua... rezolva problemele anterioare şi încercaţi din nou." + +#: wp-cache.php:204 +msgid "Zlib Output Compression Enabled!" +msgstr "Compresie de ieşire Zlib Enabled!" + +#: wp-cache.php:205 +msgid "PHP is compressing the data sent to the visitors of your site. Disabling this is recommended as the plugin caches the compressed output once instead of compressing the same page over and over again. Also see #21 in the Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "PHP este comprimarea datelor trimise de vizitatorii site-ului. Dezactivarea acest lucru este recomandat ca plugin-ul cache de ieşire comprimat o dată în loc de comprimare aceeaşi pagină de peste si peste din nou. Vedea, de asemenea #21 în secţiunea Depanare. Consultaţi această pagină pentru instrucţiuni referitoare la modificarea fişierul php.ini." + +#: wp-cache.php:209 +msgid "Mod rewrite may not be installed!" +msgstr "Mod rescrie nu poate fi instalat!" + +#: wp-cache.php:210 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use legacy or PHP modes." +msgstr "Se pare că mod_rewrite nu este instalat. Uneori, această verificare nu este 100% de încredere, mai ales dacă nu sunteţi folosind Apache. Vă rugăm să verificaţi că mod_rewrite modulul este încărcat. Este necesar pentru a servi fişiere statice Super Cache. Veţi fi în continuare posibilitatea de a utiliza moduri de moştenire sau PHP." + +#: wp-cache.php:215 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "Doar în citire Mode. Configurare nu poate fi schimbat." + +#: wp-cache.php:216 +#, php-format +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "WP Super Cache fişier de configurare este de %s/wp-cache-config.php şi nu pot fi modificate. Acest dosar trebuie să fie inscriptibile de către webserver să facă orice modificări." + +#: wp-cache.php:217 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "Un mod simplu de a face asta este de a schimba permisiunile utilizând comanda chmod temporar sau prin intermediul dvs. de client FTP. Asiguraţi-vă că la nivel global inscriptibile şi ar trebui să fie bine." + +#: wp-cache.php:218 +msgid "Writeable:" +msgstr "Inscriptibile:" + +#: wp-cache.php:219 +msgid "Readonly:" +msgstr "Readonly:" + +#: wp-cache.php:231 +#, php-format +msgid "Warning! %s is writeable!" +msgstr "Atenţie: %s este inscriptibile!" + +#: wp-cache.php:232 +#, php-format +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "Ar trebui să schimbaţi permisiunile pe% s şi să-l mai restrictive utilizarea clientului de FTP, sau următoarea comandă pentru a remedia lucrurile:" + +#: wp-cache.php:240 +msgid "Mobile rewrite rules detected" +msgstr "Mobile regulile de rescriere detectat" + +#: wp-cache.php:241 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"2.0\\ MMP|240x320\" and delete those." +msgstr "Pentru cele mai bune performanţe ar trebui să permită \"Mobile sprijin dispozitiv de\" sau şterge mobil rescrie regulile în dumneavoastră htaccess Uita-te pentru cele 2 linii cu textul \" 2.0\\MMP|240x320\" şi ştergeţi-le." + +#: wp-cache.php:241 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "Acest lucru va avea nici o afecta pe utilizatorii obişnuiţi, dar utilizatorii de telefonie mobilă vor vedea paginile uncached." + +#: wp-cache.php:247 +#: wp-cache.php:258 +msgid "Rewrite rules must be updated" +msgstr "Regulile de rescriere trebuie să fie actualizate" + +#: wp-cache.php:248 +#: wp-cache.php:259 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "Rescriere normele impuse de acest plugin-au schimbat sau lipsesc." + +#: wp-cache.php:249 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "Suport pentru dispozitive mobile necesită norme suplimentare în fişierul htaccess, sau puteţi seta modul de plug-in pentru moştenirea Aici sunt opţiunile dumneavoastră (în ordine de dificultate):" + +#: wp-cache.php:250 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "Setaţi plug-in pentru modul de moştenire şi pentru a permite suport mobil." + +#: wp-cache.php:251 +#: wp-cache.php:260 +msgid "Scroll down the Advanced Settings page and click the Update Mod_Rewrite Rules button." +msgstr "Derulaţi în jos pagina Setări avansate şi faceţi clic pe butonul Update mod_rewrite Reguli." + +#: wp-cache.php:252 +#, php-format +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "Şterge plugin mod_rewrite normele în %s.htaccess închise de către # BEGIN WPSuperCache şi # END WPSuperCache şi lăsaţi plugin-ul regenera le reîncărcaţi această pagină." + +#: wp-cache.php:253 +#, php-format +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ add these lines: (do it twice, once for each section)" +msgstr "Adăugaţi regulile de tine liniile. Editare %s.htaccess şi pentru a găsi bloc de cod închisă de # BEGIN WPSuperCache şi # END WPSuperCache. Există două secţiuni, care arata foarte similar linie. Doar sub %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ adăugaţi aceste linii: (o fac de două ori, o dată pentru fiecare secţiune) " + +#: wp-cache.php:266 +msgid "Required to serve compressed supercache files properly." +msgstr "Necesar pentru a servi fişiere comprimate supercache în mod corespunzător." + +#: wp-cache.php:266 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "Necesare pentru a seta informaţii cache de pe paginile supercache IE7 utilizatorii vor vedea paginile vechi, fără acest modul." + +#: wp-cache.php:266 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "Setaţi data de expirare de pe paginile supercached Vizitatorii nu pot vedea noi pagini atunci când reîmprospătare sau lăsaţi comentarii, fără acest modul." + +#: wp-cache.php:273 +msgid "Missing Apache Modules" +msgstr "Missing Module Apache" + +#: wp-cache.php:274 +msgid "The following Apache modules are missing. The plugin will work in legacy mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "Următoarele module Apache lipsesc plugin va. Lucra în modul de moştenire fără ele. În modul complet Supercache, vizitatorii dvs. pot vedea paginile corupt sau din data de conţinut cu toate acestea." + +#: wp-cache.php:413 +msgid "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file." +msgstr "Atenţie încercat! Puteţi să activaţi de compresie, dar zlib.output_compression este activată. Vedea în secţiunea Troubleshooting (#21) din fişierul readme." + +#: wp-cache.php:501 +msgid "WP Super Cache Settings" +msgstr "Setări WP Super Cache" + +#: wp-cache.php:512 +msgid "Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced Settings Page by default." +msgstr "Nota: mod_rewrite activat sau caching Legacy. Rezultate Advanced Settings Page implicit." + +#: wp-cache.php:523 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "Fişier de configurare schimbat, unele valori ar putea fi greşită Încărcaţi a doua pagină din nou. De la \"Settings\" meniu pentru a le reseta." + +#: wp-cache.php:540 +#: wp-cache.php:614 +msgid "Caching must be enabled to use this feature" +msgstr "Stocarea trebuie să fie activată pentru a utiliza această funcţie" + +#: wp-cache.php:542 +msgid "Cache Tester" +msgstr "Cache Tester" + +#: wp-cache.php:543 +msgid "Test your cached website by clicking the test button below." +msgstr "Testaţi-vă site-ul cache făcând clic pe butonul de test de mai jos." + +#: wp-cache.php:550 +#, php-format +msgid "Fetching %s to prime cache: " +msgstr "Se preiau %s la cache prim:" + +#: wp-cache.php:552 +#: wp-cache.php:559 +#: wp-cache.php:566 +msgid "OK" +msgstr "OK" + +#: wp-cache.php:557 +#, php-format +msgid "Fetching first copy of %s: " +msgstr "Exemplar preiau primul %s:" + +#: wp-cache.php:564 +#, php-format +msgid "Fetching second copy of %s: " +msgstr "Copie preiau doilea lui %s:" + +#: wp-cache.php:570 +msgid "One or more page requests failed:" +msgstr "Una sau mai multe cereri de start a eşuat:" + +#: wp-cache.php:589 +#: wp-cache.php:590 +#, php-format +msgid "Page %d: %d (%s)" +msgstr "Pagina %d: %d (%s)" + +#: wp-cache.php:596 +#, php-format +msgid "Page 1: %s" +msgstr "Pagina 1: %s" + +#: wp-cache.php:597 +#, php-format +msgid "Page 2: %s" +msgstr "Pagina 2: %s" + +#: wp-cache.php:598 +msgid "The timestamps on both pages match!" +msgstr "Marcajele de timp pe ambele pagini meci!" + +#: wp-cache.php:600 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "Paginile nu se potrivesc sau marcajele de timp diferă! Nu au fost găsit!" + +#: wp-cache.php:606 +msgid "Send non-secure (non https) request for homepage" +msgstr "Trimite non-sigură (https non) cererea pentru pagina de start" + +#: wp-cache.php:607 +msgid "Test Cache" +msgstr "Test Cache" + +#: wp-cache.php:632 +#: wp-cache.php:755 +msgid "Cancel Cache Preload" +msgstr "Cancel Cache preîncărcate" + +#: wp-cache.php:638 +msgid "Scheduled preloading of cache cancelled. If a job is currently running it will not shutdown until the current 100 pages are complete." +msgstr "Preîncărcându programate de cache anulat cazul în care un loc de muncă este în prezent rulează acesta nu va shutdown până când curentul 100 de pagini sunt complete." + +#: wp-cache.php:649 +msgid "Scheduled preloading of cache cancelled." +msgstr "Preîncărcându programate de cache anulate." + +#: wp-cache.php:675 +#: wp-cache.php:753 +msgid "Preload Cache Now" +msgstr "Preîncărcate Cache Now" + +#: wp-cache.php:678 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "Preîncărcându programate de cache în 10 secunde." + +#: wp-cache.php:682 +#, php-format +msgid "Scheduled preloading of cache in %d minutes" +msgstr "Preîncărcându programate de cache în %d minute" + +#: wp-cache.php:686 +msgid "This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now." +msgstr "Acest lucru va cache fiecare post publicat şi pe pagina site-ul dvs. Acesta va crea fişiere supercache statice astfel vizitatori necunoscut (inclusiv roboţi) va lovi o pagina din cache. Acest lucru va ajuta, probabil, rang dvs. Google ca le folosesc de viteză, ca metric atunci când judecă site-uri web acum." + +#: wp-cache.php:687 +msgid "Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "Preincarcarea creează o mulţime de fişiere cu toate acestea. Caching se face de la cel mai nou post la cea mai veche deci vă rugăm să ia în considerare numai caching mai nou, dacă aveţi o mulţime (10.000 +) de posturi. Acest lucru este important mai ales pe shared hosting." + +#: wp-cache.php:688 +msgid "In ’Preload Mode’ regular garbage collection will only clean out old legacy files for known users, not the preloaded supercache files. This is a recommended setting when the cache is preloaded." +msgstr "În ’General caching’ colectare a gunoiului regulat va curata doar la fişierele vechi moştenire pentru utilizatorii cunoscuţi nu, fişierele preîncărcate supercache. Aceasta este o setare recomandată atunci când memoria cache este preîncărcate." + +#: wp-cache.php:692 +#, php-format +msgid "Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)" +msgstr "Reîmprospătare cache preîncărcat fişiere minute la fiecare %s (0 dezactiva, minim %d minute.)" + +#: wp-cache.php:705 +msgid "all" +msgstr "toate" + +#: wp-cache.php:718 +#, php-format +msgid "Preload %s posts." +msgstr "Preîncărcate mesaje %s." + +#: wp-cache.php:725 +msgid "Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "Preîncărcate modul (de colectare a gunoiului numai pe fisiere cache moştenirea recomandate.)" + +#: wp-cache.php:728 +msgid "Send me status emails when files are refreshed." +msgstr "Trimite-mi email-uri de stare atunci când fişierele sunt actualizate." + +#: wp-cache.php:733 +msgid "Many emails, 2 emails per 100 posts." +msgstr "Multe e-mailuri, 2 email-uri la 100 de posturi." + +#: wp-cache.php:736 +msgid "Medium, 1 email per 100 posts." +msgstr "Medium, 1 e-mail la 100 de posturi." + +#: wp-cache.php:739 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "Mai e-mailuri, 1 la începutul şi 1 la sfârşitul preîncărcarea toate mesajele." + +#: wp-cache.php:743 +#, php-format +msgid "Refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Reîmprospătare de cache în %d ore %d minute şi %d secunde." + +#: wp-cache.php:744 +#, php-format +msgid "Full refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Refresh completă a memoriei cache în ore %d %d minute şi %d secunde." + +#: wp-cache.php:750 +#, php-format +msgid "Currently caching from post %d to %d." +msgstr "În prezent, caching de la post %d la %d." + +#: wp-cache.php:753 +msgid "Update Settings" +msgstr "Setări de update" + +#: wp-cache.php:761 +msgid "Preloading of cache disabled. Please disable legacy page caching or talk to your host administrator." +msgstr "Preincarcarea de cache cu handicap. Vă rugăm să dezactivaţi memorarea paginilor în cache moştenire sau vorbiti cu administratorul gazdă." + +#: wp-cache.php:776 +#: wp-cache.php:865 +msgid "Caching" +msgstr "Caching" + +#: wp-cache.php:780 +msgid "Cache hits to this website for quick access." +msgstr "Cache hit-uri la acest site pentru acces rapid." + +#: wp-cache.php:780 +#: wp-cache.php:781 +#: wp-cache.php:795 +#: wp-cache.php:799 +#: wp-cache.php:802 +#: wp-cache.php:803 +#: wp-cache.php:868 +msgid "Recommended" +msgstr "Recomandat" + +#: wp-cache.php:781 +msgid "Use mod_rewrite to serve cache files." +msgstr "Foloseste mod_rewrite pentru a servi fişiere cache." + +#: wp-cache.php:782 +msgid "Use PHP to serve cache files." +msgstr "Utilizarea PHP pentru a servi fişiere cache." + +#: wp-cache.php:783 +msgid "Legacy page caching." +msgstr "Legacy caching pagina." + +#: wp-cache.php:784 +msgid "Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should go with PHP caching." +msgstr "Mod_rewrite este cel mai rapid, PHP este aproape la fel de rapid şi mai uşor de lucru pentru a obţine, în timp ce caching moştenirea este mai lent din nou, dar este mai flexibilă şi, de asemenea, uşor pentru a obţine de lucru. Utilizatorii noi ar trebui să meargă cu caching PHP." + +#: wp-cache.php:790 +msgid "Miscellaneous" +msgstr "Diverse" + +#: wp-cache.php:795 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "Comprimare fişiere cache pentru a accelera de lucru." + +#: wp-cache.php:796 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching it on and off clears the cache." +msgstr "Compresia este dezactivată în mod implicit, deoarece unele gazdele au probleme cu fişiere comprimate. Pornirea-l pe şi în afara şterge memoria cache." + +#: wp-cache.php:799 +msgid "304 Not Modified browser caching. Indicate when a page has not been modified since last requested." +msgstr "304 Not Modified browser caching. Indice când o pagină nu a fost modificat de la ultima solicitate." + +#: wp-cache.php:800 +msgid "304 support is disabled by default because in the past GoDaddy had problems with some of the headers used." +msgstr "Sprijin pentru eroarea 304 este dezactivată în mod implicit (din cauza unei probleme de unele servicii)." + +#: wp-cache.php:802 +msgid "Don’t cache pages for known users." +msgstr "Nu paginile în cache pentru utilizatorii cunoscuţi." + +#: wp-cache.php:803 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated." +msgstr "Cache reconstrui servesc un fişier supercache. Utilizatorilor anonimi în timp ce un fişier nou este generat." + +#: wp-cache.php:804 +msgid "Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)" +msgstr "Spune cu mândrie lumea server-ul dvs. este dovada Digg! (Locuri un mesaj în subsol blog-ului dvs.)" + +#: wp-cache.php:810 +#: wp-cache.php:957 +#: wp-cache.php:1473 +msgid "Advanced" +msgstr "Advanced" + +#: wp-cache.php:814 +msgid "Mobile device support." +msgstr "Mobile sprijin dispozitiv." + +#: wp-cache.php:815 +msgid "Clear all cache files when a post or page is published." +msgstr "Ştergeţi toate fişierele cache atunci când un post sau pagină se publică." + +#: wp-cache.php:816 +msgid "Only refresh current page when comments made." +msgstr "Numai reincarca pagina curentă atunci când observaţiile făcute." + +#: wp-cache.php:817 +msgid "List the newest cached pages on this page." +msgstr "Lista de cele mai noi paginile stocate în cache de pe această pagină." + +#: wp-cache.php:819 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "Fişier de blocare grosier. Ai face, probabil, nu este necesar acest lucru, dar ar putea ajuta dacă serverul este underpowered Atenţie! Poate provoca server-ul dvs. pentru a bloca in cazuri foarte rare!" + +#: wp-cache.php:822 +msgid "Use object cache to store cached files." +msgstr "Utilizarea cache obiect pentru a stoca fişierele din cache." + +#: wp-cache.php:822 +msgid "(Experimental)" +msgstr "(Experimental)" + +#: wp-cache.php:829 +msgid "Note:" +msgstr "Notă:" + +#: wp-cache.php:831 +#, php-format +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "În cazul în dezinstalarea acest plug-in, asiguraţi-vă că %s dosar este inscriptibile de către serverul web astfel încât fişierele avansate-cache.php şi config.php cache-pot fi şterse în mod automat idee. (Asigurându-vă că aceste fişiere sunt inscriptibile prea este, probabil, un bun.)." + +#: wp-cache.php:832 +#, php-format +msgid "Please see the readme.txt for instructions on uninstalling this script. Look for the heading, \"How to uninstall WP Super Cache\"." +msgstr "Vă rugăm să citiţi readme.txt pentru instrucţiuni privind dezinstalarea acest script. Uita-te pentru rubrica, \"Cum să dezinstalaţi WP Super Cache\"." + +#: wp-cache.php:833 +#, php-format +msgid "Need help? Check the Super Cache readme file. It includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already have been answered." +msgstr "Aveti nevoie de ajutor? Verificaţi Super Cache fişier Readme. Acesta include documentaţia de instalare, o şi depanare sfaturi FAQ. forum de suport este de asemenea disponibil. întrebarea dvs. poate au fost deja răspuns." + +#: wp-cache.php:836 +#: wp-cache.php:883 +msgid "Update Status" +msgstr "Status Update" + +#: wp-cache.php:843 +msgid "Accepted Filenames & Rejected URIs" +msgstr "Nume de fişiere acceptate & URI respins" + +#: wp-cache.php:868 +msgid "Caching On" +msgstr "Cache On" + +#: wp-cache.php:869 +msgid "Caching Off" +msgstr "Cache Off" + +#: wp-cache.php:870 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "Notă: PHP permite caching, reconstrui cache, şi suport mobil" + +#: wp-cache.php:880 +msgid "Notice: Supercache mod_rewrite rules detected. Cached files will be served using those rules. Edit the .htaccess file in the root of your install and remove the SuperCache rules." +msgstr "Nota: Supercache mod_rewrite normele detectate fişierele din cache va fi servite cu aceste norme. Editaţi fişierul htaccess în rădăcina dvs. de a instala şi de a elimina normele SuperCache." + +#: wp-cache.php:892 +msgid "Make WordPress Faster" +msgstr "A face WordPress mai repede" + +#: wp-cache.php:893 +#, php-format +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "%1$s este menţinut şi dezvoltat de %2$s, cu contribuţii de la multe altele." + +#: wp-cache.php:894 +#, php-format +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "El a blog-uri la %1$s şi fotografii de mesaje de la %2$s." + +#: wp-cache.php:895 +#, php-format +msgid "Please say hi to him on %s too!" +msgstr "Vă rugăm să-l salut pe %s prea!" + +#: wp-cache.php:903 +#, php-format +msgid "Cached pages since %1$s : %2$s" +msgstr "Paginile stocate în cache de la %1$s : %2$s" + +#: wp-cache.php:904 +msgid "Newest Cached Pages:" +msgstr "Cele mai noi Pagini cache:" + +#: wp-cache.php:908 +#, php-format +msgid "Cached %s seconds ago" +msgstr "Cache %s secunde în urmă" + +#: wp-cache.php:911 +msgid "(may not always be accurate on busy sites)" +msgstr "(Pot să nu fie întotdeauna exacte pe site-urile ocupat)" + +#: wp-cache.php:930 +msgid "Cache plugins are PHP scripts that live in a plugins folder inside the wp-super-cache folder. They are loaded when Supercache loads, much sooner than regular WordPress plugins." +msgstr "Cache plugin-uri sunt scripturi PHP care trăiesc într-un folder plugin-uri în interiorul folderul wp-super-cache. Ele sunt încărcate atunci când încarcă Supercache, mult mai devreme decât regulate WordPress plugin-uri." + +#: wp-cache.php:931 +msgid "This is strictly an advanced feature only and knowledge of both PHP and WordPress actions is required to create them." +msgstr "Acest lucru este strict o funcţie avansată doar şi cunoştinţe atât de PHP şi acţiuni WordPress este obligată să le creeze." + +#: wp-cache.php:941 +msgid "Available Plugins" +msgstr "Plugin-uri disponibile" + +#: wp-cache.php:957 +msgid "Easy" +msgstr "Easy" + +#: wp-cache.php:957 +msgid "Tester & Contents" +msgstr "Tester & Continut" + +#: wp-cache.php:957 +msgid "Preload" +msgstr "Preîncărcate" + +#: wp-cache.php:957 +msgid "Plugins" +msgstr "Plugin-uri" + +#: wp-cache.php:957 +msgid "Debug" +msgstr "Debug" + +#: wp-cache.php:984 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "Nota: WP Super Cache mod_rewrite controale regulă cu handicap cu excepţia cazului în care rulează pe site-ul principal al acestei reţele." + +#: wp-cache.php:986 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on on the main site of this network." +msgstr "Nota: WP Super Cache mod_rewrite controale regulă cu handicap cu excepţia cazului în care rulează pe pe site-ul principal al acestei reţele." + +#: wp-cache.php:996 +msgid "Mod Rewrite Rules" +msgstr "Mod Reguli de rescriere" + +#: wp-cache.php:1002 +msgid "WordPress MU Detected" +msgstr "WordPress MU Detected" + +#: wp-cache.php:1002 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "Din păcate, rescrie regulile nu pot fi actualizate automat atunci când rulează WordPress UM. Vă rugăm să vă deschide htaccess şi. Se adaugă următoarele mod_rewrite regulile de mai sus a oricăror alte norme în acel fişier." + +#: wp-cache.php:1004 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Mod Regulile de rescriere nu poate fi actualizat!" + +#: wp-cache.php:1005 +#, php-format +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "Trebuie să aveţi şi END markeri incepe in %s.htaccess pentru auto update la locul de muncă. Acestea arata ca acest lucru şi surround principal WordPress mod_rewrite normele:" + +#: wp-cache.php:1007 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "Reîmprospătare această pagină atunci când aţi actualizat fişierul htaccess." + +#: wp-cache.php:1011 +msgid "Thank you for upgrading." +msgstr "Vă mulţumim pentru upgrade." + +#: wp-cache.php:1011 +#, php-format +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "Mod_rewrite normele modificate de la ultima ta instalat acest plug-in. Din păcate, trebuie să eliminaţi vechile reguli supercache înainte de cele noi sunt actualizate reîmprospăta această pagină. După ce aţi editat fişierul .htaccess. Dacă doriţi să faceţi upgrade manual, modificaţi următoarea linie: %1$s astfel se pare ca aceasta: %2$s. Singurele modificări sunt \"HTTP_COOKIE\"devine\"HTTP:Cookie\" şi \"wordpressuser\"devine\"WordPress\". Acesta este un WordPress 2.5. schimbare, dar este compatibil cu versiunile mai vechi daca esti destul de curajos să le folosească." + +#: wp-cache.php:1015 +msgid "Trailing slash check required." +msgstr "Trailing slash verifica necesare." + +#: wp-cache.php:1015 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "Se pare ca blog-ul dvs. are adresele URL care se termină cu o \"/\". Din păcate, din moment ce ai instalat acest plug-un duplicat bug conţinut a fost găsit în cazul în care nu adresele URL se termină într-o \"/\" sfârşitul servesc acelaşi conţinut ca şi cele cu \"/\" şi nu redirecţionare a URL-ul propriu Pentru a repara, trebuie să editaţi fişierul htaccess şi adăugaţi aceste două reguli pentru cele două grupe de reguli Super Cache:" + +#: wp-cache.php:1017 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "Puteţi vedea în cazul în care normele de du-te şi să examineze normele complet, făcând clic pe \"View mod_rewrite normele\" link-ul de mai jos." + +#: wp-cache.php:1031 +msgid "Mod Rewrite rules updated!" +msgstr "Mod Regulile de rescriere actualizate!" + +#: wp-cache.php:1032 +#, php-format +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "%s.htaccess a fost actualizat cu normele necesare mod_rewrite. Va rugam a verifica dacă sunt corecte ar trebui să arate acest lucru:" + +#: wp-cache.php:1034 +msgid "Mod Rewrite rules must be updated!" +msgstr "Mod Regulile de rescriere trebuie să fie actualizate!" + +#: wp-cache.php:1035 +#, php-format +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "%s.htaccess ta nu poate fi scris de serverul web şi trebuie să fie actualizate cu normele necesare mod_rewrite. Noile norme du-te mai presus de reguli WordPress regulate aşa cum se arată în codul de mai jos:" + +#: wp-cache.php:1040 +#, php-format +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "WP Super Cache mod regulile de rescriere au fost detectate în fişierul% s.htaccess.
      Faceţi clic pe link-ul următor pentru a vedea liniile de adăugat la acel fişier. Dacă aţi actualizat plugin-ul asiguraţi-vă că aceste reguli se potrivesc." + +#: wp-cache.php:1043 +msgid "A difference between the rules in your .htaccess file and the plugin rewrite rules has been found. This could be simple whitespace differences but you should compare the rules in the file with those below as soon as possible. Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "O diferenţă între normele în fişierul htaccess. Şi plugin-ul regulile de rescriere a fost găsit Acest lucru ar putea fi diferenţele de simplu, dar spaţiu. Ar trebui să comparaţi normele în dosarul cu cele de mai jos cât mai curând posibil. Faceţi clic pe ’Update normele Mod_Rewrite’, pentru a face acest lucru în mod automat." + +#: wp-cache.php:1046 +msgid "View Mod_Rewrite Rules" +msgstr "Vezi mod_rewrite Reguli" + +#: wp-cache.php:1050 +#: wp-cache.php:2287 +#, php-format +msgid "Rules must be added to %s too:" +msgstr "Regulile trebuie să fie adăugată la %s prea:" + +#: wp-cache.php:1058 +#, php-format +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "Gzip reguli de codare în %s.htacces creat." + +#: wp-cache.php:1065 +msgid "Fix Configuration" +msgstr "Fix de configurare" + +#: wp-cache.php:1068 +msgid "Restore Default Configuration" +msgstr "Restore de configurare implicite" + +#: wp-cache.php:1076 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "Este activată moderarea comentariilor. Comentariul dvs. poate lua ceva timp să apară." + +#: wp-cache.php:1101 +msgid "Lock Down:" +msgstr "Lock Down:" + +#: wp-cache.php:1101 +msgid "Disabled" +msgstr "Disabled" + +#: wp-cache.php:1101 +msgid "Enabled" +msgstr "Enabled" + +#: wp-cache.php:1102 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "Pregătiţi-server-ul dvs. pentru un vârf aşteptată a traficului prin activarea blocare în jos. Cand este activat, noi comentarii pe un post care nu va actualiza fişierele cache static." + +#: wp-cache.php:1103 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "Dezvoltatorii: Asiguraţi-vă plugin bloca compatibil prin verificarea \"WPLOCKDOWN\". Constanta urmatorul cod va asiguraţi-vă că plugin respectă setarea WPLOCKDOWN." + +#: wp-cache.php:1105 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "Imi pare rau. Blog-ul meu este blocat. Actualizări va apărea în scurt timp" + +#: wp-cache.php:1109 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "WordPress este blocat. Super fişiere statice Cache nu vor fi şterse atunci când noi comentarii sunt făcute." + +#: wp-cache.php:1111 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "WordPress nu este blocat în jos comentariile noi vor reîmprospăta Super Cache fişiere statice, ca de obicei." + +#: wp-cache.php:1117 +msgid "Lock Down" +msgstr "Lock Down" + +#: wp-cache.php:1125 +msgid "Directly Cached Files" +msgstr "Fişiere direct cache" + +#: wp-cache.php:1183 +#, php-format +msgid "%s removed!" +msgstr "%s eliminat!" + +#: wp-cache.php:1191 +#, php-format +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "Trebuie să facă %s writable pentru a activa această facilitate. Deoarece acesta este un risc de securitate vă rugăm să-l doar în citire după ce pagina este generat." + +#: wp-cache.php:1193 +#, php-format +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "%s este writable Vă rugăm să-l doar în citire după ce pagina este generat ca acesta este un risc de securitate." + +#: wp-cache.php:1207 +msgid "Existing direct page" +msgstr "Directe existente pagina" + +#: wp-cache.php:1207 +msgid "Delete cached file" +msgstr "Şterge cache file" + +#: wp-cache.php:1212 +msgid "Add direct page:" +msgstr "Adauga pagina direct:" + +#: wp-cache.php:1214 +#, php-format +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "Fişiere direct din cache sunt fişiere create direct de pe %s în cazul în care locuieşte blog-ul dvs. Această caracteristică este. Util numai dacă se asteapta la o Digg majore sau Slashdot nivel de trafic pentru un post sau pagină." + +#: wp-cache.php:1216 +#, php-format +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "De exemplu: pentru cache %1$sabout/ ar trebui să introduceţ %1$sabout/ or /about/. Cache la dosar va fi generat în următorii un timp anonim vizite că pagina utilizatorului." + +#: wp-cache.php:1217 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "Asiguraţi-casuta necompletat pentru a-l scoate din lista de pagini directe şi a şterge fişierul cache." + +#: wp-cache.php:1222 +msgid "Update Direct Pages" +msgstr "Update Pagini Direct" + +#: wp-cache.php:1260 +msgid "Expiry Time & Garbage Collection" +msgstr "Expirat pagina & Clar de moloz" + +#: wp-cache.php:1262 +msgid "Expire time:" +msgstr "Expirare timp:" + +#: wp-cache.php:1263 +msgid "seconds" +msgstr "secunde" + +#: wp-cache.php:1264 +msgid "Garbage Collection" +msgstr "Clar de moloz" + +#: wp-cache.php:1264 +msgid "If the expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above." +msgstr "În cazul în care ora de expirare este mai mare de 1800 secunde (o jumătate de oră), de colectare a gunoiului se va face la fiecare 10 minute, altfel se va întâmpla 10 secunde după ora de expirare de mai sus." + +#: wp-cache.php:1265 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 300 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. If you are using legacy caching aim to have less than 500 cached files if possible. You can have many times more cached files when using mod_rewrite or PHP caching." +msgstr "Verificarea şi ştergerea fişierelor expirat este scump, dar e scump lasandu-le acolo. Pe foarte ocupat un site care ar trebui să stabilească expirarea timp pentru 300 secunde. Experiment cu valori diferite şi să vizitaţi această pagină pentru a vedea modul în care a expirat mai multe fişiere rămân la diferite ori în timpul zilei. Dacă folosiţi caching scopul de moştenire să aibă mai puţin de 500 de fişiere cache, dacă este posibil. Puteţi avea fişiere de multe ori mai mult cache atunci când se utilizează mod_rewrite sau caching PHP." + +#: wp-cache.php:1266 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "Seta ora de expirare la 0 de secunde pentru a dezactiva colectare a gunoiului." + +#: wp-cache.php:1267 +msgid "Change Expiration" +msgstr "Schimbarea de expirare" + +#: wp-cache.php:1311 +msgid "Rejected User Agents" +msgstr "Respins de agenţi de utilizare" + +#: wp-cache.php:1312 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "Pentru a preveni plug-in pentru interogări cache-ul de la roboţii motoarelor de căutare şi altor roboţi în reţea, introduceţi numele acestora în caseta de mai jos (câte unul pe linie). În cazul în care o copie a paginii există deja în cache, Super Cache, acesta va fi trimis la bot." + +#: wp-cache.php:1319 +msgid "Save UA Strings" +msgstr "Salvaţi Strings UA" + +#: wp-cache.php:1342 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "Nu cache pagina de următoarele tipuri. Consultaţi Condiţionat Tag-uri documentaţia pentru o discuţie completă pentru fiecare tip." + +#: wp-cache.php:1345 +msgid "Single Posts" +msgstr "Posturi Single" + +#: wp-cache.php:1346 +msgid "Pages" +msgstr "Pagini" + +#: wp-cache.php:1347 +msgid "Front Page" +msgstr "Home" + +#: wp-cache.php:1348 +msgid "Home" +msgstr "Home" + +#: wp-cache.php:1349 +msgid "Archives" +msgstr "Arhivele" + +#: wp-cache.php:1350 +msgid "Tags" +msgstr "Tag-uri" + +#: wp-cache.php:1351 +msgid "Category" +msgstr "Categorie" + +#: wp-cache.php:1352 +msgid "Feeds" +msgstr "Feeds" + +#: wp-cache.php:1353 +msgid "Search Pages" +msgstr "Paginile de căutare" + +#: wp-cache.php:1355 +#: wp-cache.php:1483 +msgid "Save" +msgstr "Salvare" + +#: wp-cache.php:1372 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "Adăugaţi aici siruri de caractere (nu un nume de fisier) că forţele o pagină nu trebuie să fie în cache. De exemplu, dacă URL-urile includ an şi tu dont doriţi să cache posturi de anul trecut, este suficient să se precizeze an, adică ’/2011/’. WP-Cache va căuta în cazul în care şir este parte a URI şi, dacă acest lucru nu, se va cache acea pagină." + +#: wp-cache.php:1378 +msgid "Save Strings" +msgstr "Salvaţi Strings" + +#: wp-cache.php:1394 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "Adăugaţi aici acele numele de fişiere care pot fi memorate în cache, chiar dacă acestea se potrivesc unul dintre respins subşir specificate mai sus." + +#: wp-cache.php:1400 +msgid "Save Files" +msgstr "Salvaţi Files" + +#: wp-cache.php:1445 +msgid "Currently logging to: " +msgstr "În prezent, logare la:" + +#: wp-cache.php:1455 +msgid "Fix problems with the plugin by debugging it here. It can send you debug emails or log them to a file in your cache directory." +msgstr "Fix probleme cu plugin-ul de depanare-l aici poate trimite e-mailuri sau debug log-le într-un fişier în directorul cache-ul dumneavoastră." + +#: wp-cache.php:1456 +msgid "Logging to a file is easier but faces the problem that clearing the cache will clear the log file." +msgstr "Conectarea la un fişier este mai uşor, dar se confruntă cu problema că golirea memoriei cache va şterge fişierul jurnal." + +#: wp-cache.php:1460 +msgid "Debugging" +msgstr "Debugging" + +#: wp-cache.php:1461 +msgid "Logging Type" +msgstr "Logging Tipul" + +#: wp-cache.php:1461 +msgid "Email" +msgstr "Email" + +#: wp-cache.php:1462 +msgid "file" +msgstr "file" + +#: wp-cache.php:1463 +msgid "IP Address" +msgstr "Adresa IP" + +#: wp-cache.php:1463 +#, php-format +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(jurnal numai cereri de la această adresă IP. IP-ul tau este - %s)" + +#: wp-cache.php:1464 +msgid "Log level" +msgstr "Jurnal nivel" + +#: wp-cache.php:1470 +msgid "(1 = less, 5 = more, may cause severe server load.)" +msgstr "(1 = mai puţin, 5 = mai mult, poate provoca de încărcare server severe.)" + +#: wp-cache.php:1473 +msgid "In very rare cases two problems may arise on some blogs:
      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "În cazuri foarte rare pot apărea două probleme pe unele blog-uri:
      1. Pagina de faţă poate începe descărcarea ca un fişier zip.
      2. Pagina este greşit ocazional cache ca pagina de faţă dacă blog-ul dvs. foloseşte o pagină statică şi structura Permalink este /%category%/%postname%/.
      " + +#: wp-cache.php:1474 +#, php-format +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "I’m 99% certain that they aren’t Bug-uri în WP Super Cache şi ele se întâmplă numai în cazuri foarte rare, dar puteţi rula o verificare simplă o dată la fiecare 5 minute pentru a verifica dacă site-ul dvs. este ok, dacă sunteţi îngrijorat. Tu va fi trimisă în cazul în care există o problemă." + +#: wp-cache.php:1476 +msgid "Check front page every 5 minutes." +msgstr "Check prima pagina la fiecare 5 minute." + +#: wp-cache.php:1477 +msgid "Front page text" +msgstr "Prima pagină text" + +#: wp-cache.php:1477 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "Text pentru a căuta pe pagina dvs. Dacă acest text lipseşte cache va fi şters. Lăsaţi necompletat pentru a dezactiva." + +#: wp-cache.php:1478 +msgid "Clear cache on error." +msgstr "Clear cache la eroare." + +#: wp-cache.php:1479 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "Email blog-ul admin, atunci când controalele sunt efectuate. (util pentru testarea)" + +#: wp-cache.php:1493 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "Eroare: compresie gzip este activat, dezactivati-l dacă doriţi să activaţi wp-cache." + +#: wp-cache.php:1540 +#: wp-cache.php:1702 +msgid "Warning" +msgstr "Atenţie" + +#: wp-cache.php:1540 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "GZIP compresie este activată în WordPress, WP-cache vor fi ocolite până când compresie gzip dezactivaţi." + +#: wp-cache.php:1598 +#: wp-cache.php:1603 +#: wp-cache.php:1635 +#: wp-cache.php:1640 +#: wp-cache.php:1646 +msgid "Error" +msgstr "Eroare" + +#: wp-cache.php:1598 +#, php-format +msgid "Your cache directory ($cache_path) did not exist and couldn’t be created by the web server. Check %s permissions." +msgstr "Cache director ($ cache_path) nu există şi nu poate fi creat de către serverul de web. Verificarea %s permisiunilor." + +#: wp-cache.php:1603 +#, php-format +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "Cache dosar (%1$s) sau %2$s trebuie să fie writable pentru acest plugin pentru a lucra. Double-check." + +#: wp-cache.php:1635 +#, php-format +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "Your WP-Cache fişier de configurare (%s) este de actualitate şi nu poate fi scris de către server. Please Web ştergeţi-l şi a reîmprospăta această pagină." + +#: wp-cache.php:1640 +#, php-format +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "Fişier de configurare lipsă şi %1$s dosar (%2$s) nu poate fi scris de server. Check Web permisiunile sale." + +#: wp-cache.php:1646 +#, php-format +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "Exemplu de WP-Cache fişier de configurare (%s) nu exista. Va rugam sa verificati vă de instalare." + +#: wp-cache.php:1702 +#, php-format +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "%s/advanced-cache.php nu există sau nu pot fi actualizate." + +#: wp-cache.php:1703 +msgid "1. If it already exists please delete the file first." +msgstr "1. În cazul în care există deja vă rugăm să ştergeţi primul fişier." + +#: wp-cache.php:1704 +#, php-format +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. Asiguraţi %1$s scriere utilizând comanda chmod prin ftp sau software de tip server şi. (Chmod 777 %1$s) reîmprospăta această pagină. Aceasta este doar o măsură temporară şi va trebui să-l citesc numai ulterior din nou. (Schimbaţi 777-755 în comenzii precedente) " + +#: wp-cache.php:1705 +#, php-format +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. Refresh această pagină pentru a actualiza %s/avansat-cache.php" + +#: wp-cache.php:1706 +#, php-format +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "Dacă acest lucru nu funcţionează, asiguraţi-vă că %s/avansat-cache.php doar nu există:" + +#: wp-cache.php:1707 +#, php-format +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. Deschideţi fişierul %1$s$wp_cache_file într-un editor de text.
    • 2. Schimbaţi linia CACHEHOME pe %2$s
    • 3. Salvaţi fişierul şi copiaţi %3$s, apoi reîmprospătaţi pagina.
    • " + +#: wp-cache.php:1730 +msgid "

      WP_CACHE constant set to false

      The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

      define('WP_CACHE', true);

      " +msgstr "

      WP_CACHE opţiune nu este activată

      Această opţiune trebuie să fie activat pentru a WordPress poate lucra corect cu fişierul cache. In acest moment este dezactivat. Pentru a activa aceasta, deschideţi fişierul wp-config.php şi adăugaţi următoarea linie:

      define('WP_CACHE', true);

      " + +#: wp-cache.php:1732 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "Eroare: WP_CACHE Variabila nu fie activate în comun configuraţiile wp-config.php." + +#: wp-cache.php:1733 +#, php-format +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "Editare codul %s şi adăugaţi următoarele:
      define('WP_CACHE', true);
      . În caz contrar, WP-Cachenu va porni." + +#: wp-cache.php:1737 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the FAQ. The WP_CACHE line must be moved up." +msgstr "

      Parţial WP_CACHE adăugat la fişierul de configurare wp-config.php

      Dacă vedeţi în continuare acest mesaj, apoi verificaţi cu punctul 5 din FAQ (în limba engleză). Rând cu WP_CACHE ar trebui să fie plasat mai mare." + +#: wp-cache.php:1759 +msgid "Cache Contents" +msgstr "Cache Cuprins" + +#: wp-cache.php:1762 +msgid "Object cache in use. No cache listing available." +msgstr "Lista de caching disponibile." + +#: wp-cache.php:1786 +#, php-format +msgid "Deleting supercache file: %s
      " +msgstr "Ştergerea supercache fişier: %s
      " + +#: wp-cache.php:1803 +#, php-format +msgid "Deleting wp-cache file: %s
      " +msgstr "Ştergerea wp-cache fişier: %s
      " + +#: wp-cache.php:1868 +msgid "Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page." +msgstr "Cache statisticile nu sunt generate automat. Trebuie să faceţi clic pe link-ul de mai jos pentru a regenera statisticile de pe aceasta pagina." + +#: wp-cache.php:1869 +msgid "Regenerate cache stats" +msgstr "Stats Regenerare cache" + +#: wp-cache.php:1871 +#, php-format +msgid "Cache stats last generated: %s minutes ago." +msgstr "Cache statistici ultima generat: %s minute în urmă." + +#: wp-cache.php:1877 +msgid "WP-Cache" +msgstr "WP-Cache Status" + +#: wp-cache.php:1878 +#: wp-cache.php:1894 +#, php-format +msgid "%s Cached Pages" +msgstr "%s pagini cached" + +#: wp-cache.php:1879 +#: wp-cache.php:1899 +#, php-format +msgid "%s Expired Pages" +msgstr "%s pagini expirat" + +#: wp-cache.php:1893 +msgid "WP-Super-Cache" +msgstr "WP-Super-Cache" + +#: wp-cache.php:1904 +msgid "Fresh WP-Cached Files" +msgstr "Fresh Files WP-Cache" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "URI" +msgstr "URI" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +msgid "Key" +msgstr "Cheie" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "Age" +msgstr "Age" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "Delete" +msgstr "Delete" + +#: wp-cache.php:1920 +msgid "Stale WP-Cached Files" +msgstr "Viciat Files WP-Cache" + +#: wp-cache.php:1936 +msgid "Fresh Super Cached Files" +msgstr "Fresh Super fişierele din cache" + +#: wp-cache.php:1952 +msgid "Stale Super Cached Files" +msgstr "Viciat Super fişierele din cache" + +#: wp-cache.php:1968 +msgid "Hide file list" +msgstr "Ascunde listă de fişiere" + +#: wp-cache.php:1970 +msgid "Too many cached files, no listing possible." +msgstr "Prea multe fişiere cache, nici un anunţ este posibil." + +#: wp-cache.php:1972 +msgid "List all cached files" +msgstr "Lista toate fişierele din cache" + +#: wp-cache.php:1978 +#, php-format +msgid "Garbage Collection
      Last GC was %s minutes ago
      " +msgstr "Garbage Collection
      Ultima GC a fost %s minute în urmă
      " + +#: wp-cache.php:1979 +#, php-format +msgid "Next GC in %s minutes" +msgstr "Next GC în câteva minute %s" + +#: wp-cache.php:1982 +#, php-format +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "Expirate fişiere sunt fişierele mai vechi %s secunde. Ele sunt încă utilizate de către plugin-ul şi se elimină periodic." + +#: wp-cache.php:1993 +msgid "Delete Expired" +msgstr "Şterge expirat" + +#: wp-cache.php:1999 +#: wp-cache.php:2011 +#: wp-cache.php:2174 +msgid "Delete Cache" +msgstr "Delete Cache" + +#: wp-cache.php:2011 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Şterge Super Cache cache fişierele (se deschide într-o fereastră nouă)" + +#: wp-cache.php:2150 +#, php-format +msgid "%1$s is Digg proof thanks to caching by %2$s" +msgstr "%1$s să-i mulţumesc %2$s pentru munca lor" + +#: wp-cache.php:2183 +#, php-format +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "Plugin WP Super Cache ar trebui să fie configurat: Pentru a activa şi configura, du-te la pagina de management plug-in." + +#: wp-cache.php:2189 +msgid "Settings" +msgstr "Setări" + +#: wp-cache.php:2199 +#, php-format +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "Plugin WP Super Cache nu este activat. Pentru a activa aceasta, mergeţi la pagina de management plug-in." + +#: wp-cache.php:2218 +#, php-format +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] Home comprimate folosind gzip. Delete Cache!" + +#: wp-cache.php:2218 +#, php-format +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "Eroare!\" Vizita %s pentru a elimina cache!" + +#: wp-cache.php:2221 +#, php-format +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] Home comprimate folosind gzip. Cache eliminat!" + +#: wp-cache.php:2221 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "Cache tot blog-ul dvs. a fost eliminat, ca plugin-ul observat o eroare pe pagina principală (aceasta descărcări arhivă). Pentru a verifica cache-ul, vă rugăm să vizitaţi această strnitsu %s." + +#: wp-cache.php:2228 +#, php-format +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] Pagina Prima nu este corect. Vă rugăm să goliţi memoria cache!" + +#: wp-cache.php:2228 +#, php-format +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "A apărut o eroare pe pagina principală a blog-ul dvs. nu a fost detectat text cheie \"%2$s\". Pentru a corecta o greşeală, puteţi vizita această pagină %1$s şi clar manual memoria cache." + +#: wp-cache.php:2231 +#, php-format +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] Prima pagină este afişată cu o eroare! Cache eliminat!" + +#: wp-cache.php:2231 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "A apărut o eroare pe pagina principală a blog-ul dvs. nu a fost detectat text cheie \"%2$s\". Vizitaţi această pagină %1$s pentru a verifica cache." + +#: wp-cache.php:2236 +#, php-format +msgid "[%s] Front page check!" +msgstr "[%s] Prima pagina a verifica!" + +#: wp-cache.php:2236 +#, php-format +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "WP Super Cache a verificat prima pagină a blog-ul dvs. Vă rugăm să vizitaţi %s dacă doriţi să dezactivaţi acest lucru." + +#: wp-cache.php:2279 +msgid "Cannot update .htaccess" +msgstr "Nu se poate actualiza. Htaccess" + +#: wp-cache.php:2279 +#, php-format +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "Fişier %s.htaccess nu poate fi modificat de către Web Server. Vă rugăm să corectaţi acest lucru, folosind chmod sau comanda dvs. client FTP." + +#: wp-cache.php:2279 +msgid "Refresh this page when the file permissions have been modified." +msgstr "Reîmprospătare această pagină atunci când permisiunile pentru fisiere au fost modificate." + +#: wp-cache.php:2279 +#, php-format +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "Alternativ, puteţi edita %s.htaccess fişier manual şi adăugaţi următorul cod (înainte de orice reguli WordPress):" + +#: wp-cache.php:2283 +#, php-format +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "Pentru a servi statice HTML server de fişiere dvs. trebuie să aibă corect mod_rewrite normele adăugat într-un fişier numit %s.htaccess" + +#: wp-cache.php:2284 +msgid "You can edit the file yourself add the following rules." +msgstr "Aveţi posibilitatea să editaţi fişierul singur adăuga următoarele reguli." + +#: wp-cache.php:2285 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr "Asiguraţi-vă că ele apar înainte de orice reguli WordPress existent." + +#: wp-cache.php:2293 +msgid "Update Mod_Rewrite Rules" +msgstr "Update mod_rewrite reguli" + +#: wp-cache.php:2389 +#, php-format +msgid "[%1$s] Cache Preload Started" +msgstr "[%1$s] Cache preîncărcate începute" + +#: wp-cache.php:2391 +#, php-format +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] Refreshing mesajele de la %2$d la %3$d" + +#: wp-cache.php:2402 +#, php-format +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s] %2$d mesaje împrospătat" + +#: wp-cache.php:2402 +msgid "Refreshed the following posts:" +msgstr "Actualizat următoarele posturi:" + +#: wp-cache.php:2411 +#, php-format +msgid "Scheduling next preload refresh in %d minutes." +msgstr "Programarea minute refresh preload următoare în %d." + +#: wp-cache.php:2421 +#, php-format +msgid "[%s] Cache Preload Completed" +msgstr "[%s] Cache preîncărcate Completed" + +#: wp-cache.php:2421 +msgid "Cleaning up old supercache files." +msgstr "Curăţarea fişierele vechi supercache." + +#: wp-cache.php:2462 +#, php-format +msgid "[%s] Preload may have stalled." +msgstr "[%s] preîncărcate poate fi stagnat." + +#: wp-cache.php:2462 +#, php-format +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"Preîncărcate a fost repornit.\n" +"%s" + +#~ msgid "" +#~ "Scroll down this page and click the Update Mod_Rewrite Rules button." +#~ msgstr "" +#~ "Пролистайте страницу вних и нажмите кнопку Обновить правила " +#~ "Mod_Rewrite." + +#~ msgid "WP Super Cache Manager" +#~ msgstr "Управление плагином WP Super Cache" + +#~ msgid "Why your configuration may not be changed" +#~ msgstr "Почему конфигурации не могут быть изменены" + +#~ msgid "Why" +#~ msgstr "Почему" + +#~ msgid "ON" +#~ msgstr "ВКЛ" + +#~ msgid "WP Cache and Super Cache enabled" +#~ msgstr "Плагины WP Cache и Super Cache включены" + +#~ msgid "HALF ON" +#~ msgstr "РАБОТАЕТ НАПОЛОВИНУ" + +#~ msgid "Super Cache Disabled, only legacy WP-Cache caching." +#~ msgstr "Плагин Super Cache отключен, работает только кэшировани WP-Cache" + +#~ msgid "OFF" +#~ msgstr "ВЫКЛ" + +#~ msgid "WP Cache and Super Cache disabled" +#~ msgstr "Плагины WP Cache и Super Cache отключены" + +#~ msgid "" +#~ "Cache rebuild. Serve a supercache file to anonymous users while a new " +#~ "file is being generated. Recommended for very busy websites with " +#~ "lots of comments. Makes \"directly cached pages\" and \"Lockdown mode\" " +#~ "obsolete." +#~ msgstr "" +#~ "Восстановление кэша. При включенной опции, гости сайта будут получать " +#~ "старые страницы из плагина Super Cache, пока формируются новые. " +#~ "Рекомендуется использовать данную опцию только для очень " +#~ "посещаемых блогов, где много комментариев. После включения опции в " +#~ "настройках \"прямое кэширование страниц\" и \"закрытый режим\" нет нужды " +#~ "(они устаревают)" + +#~ msgid "" +#~ "List the newest cached pages (may be expensive to run on busy sites, use " +#~ "with caution.)" +#~ msgstr "" +#~ "Создавать список новых кэшированных страниц (использовать на свой страх и " +#~ "риск, может затормозить сайты с большим количеством посетителей)" + +#~ msgid "" +#~ "%1$s really makes your blog go faster. Make it go faster* by " +#~ "buying me an Amazon gift card! Make it out to \"%3$s" +#~ "\" for whatever amount you want. Every penny helps!" +#~ msgstr "" +#~ "%1$s действительно ускоряет Ваш блог. Вы можете сделать его еще " +#~ "быстрее*, купив мне подарочную карту сервиса " +#~ "Amazon! Можете выбрать \"%3$s\" любое значение, какое хотите. Каждая " +#~ "копейка поможет мне!" + +#~ msgid "" +#~ "If Amazon isn’t your thing, there’s also PayPal. Click the " +#~ "\"Donate\" button below or take a quick peek at my wishlist." +#~ msgstr "" +#~ "Если Вы не хотите иметь дело с Amazon , то можно сделать пожертвование " +#~ "через PayPal. Нажмите кнопку \"Пожертвовать\" или выберите подарок для " +#~ "меня из моего списка желаний." + +#~ msgid "Thanks in advance!" +#~ msgstr "Заранее благодарю!" + +#~ msgid "" +#~ "Ok, it won’t go any faster but you’ll make this plugin author " +#~ "very happy!" +#~ msgstr "" +#~ "Ладно, он не будет быстрее, но Вы все равно сделаете автора плагина очень " +#~ "счастливым!" + +#~ msgid "Don’t show me this again." +#~ msgstr "Не показывать больше это сообщение." + +#~ msgid "Hide" +#~ msgstr "Спрятать" + +#~ msgid "" +#~ "He blogs at %1$s and posts photos at %2$s. He would really appreciate a " +#~ "donation to encourage development of this plugin." +#~ "
      Even a penny will help." +#~ msgstr "" +#~ "Блог автора - %1$s, фотоблог - %2$s. Автор плагина будет благодарен любой " +#~ "поддержке от Вас.
      Даже копейка может помочь в " +#~ "его работе." + +#~ msgid "Super Cache Compression" +#~ msgstr "Сжатие кэша Super Cache" + +#~ msgid "Compression is enabled by default when in HALF ON mode." +#~ msgstr "" +#~ "Сжатие кэша отключено по умолчанию в режиме РАБОТАЕТ НАПОЛОВИНУ." + +#~ msgid "Super Cache compression is now disabled." +#~ msgstr "Сжатие кэша Super Cache теперь отключено." + +#~ msgid "Super Cache compression is now enabled." +#~ msgstr "Сжатие кэша Super Cache теперь включено." + +#~ msgid "Update Compression" +#~ msgstr "Обновить настройки сжатия" + +#~ msgid "Debug Settings" +#~ msgstr "Параметры отладки" + +#~ msgid "" +#~ "

      WP_CACHE constant in wp-config.php set to false

      The WP_CACHE " +#~ "constant is defined in your wp-config.php but must be set to true, not " +#~ "false for this plugin to work correctly.

      " +#~ msgstr "" +#~ "

      Значение для WP_CACHE в конфигурационном файле WordPrees wp-config." +#~ "php установлено на \"false\"

      Чтобы плагин заработал, значение " +#~ "WP_CACHE в wp-config.php нужно поставить на \"true\".

      " + +#~ msgid "You must edit the file yourself add the following rules." +#~ msgstr "" +#~ "Вы должны вручную отредактировать файл и добавить необходимые правила." diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-ru_RU.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-ru_RU.mo new file mode 100644 index 0000000000000000000000000000000000000000..c8b0cab86f23d7a10221c53822c0a9fd397c674d GIT binary patch literal 88791 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 ujsfGJwT}CnZsMKjKT#, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: WP Super Cache\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-super-cache\n" +"POT-Creation-Date: 2011-02-28 22:08:12+00:00\n" +"PO-Revision-Date: 2011-03-15 23:04+0300\n" +"Last-Translator: Elvis \n" +"Language-Team: Elvis \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Russian\n" +"X-Poedit-Country: RUSSIAN FEDERATION\n" + +#: ossdl-cdn.php:146 +msgid "Your website probably uses lots of static files. Image, Javascript and CSS files are usually static files that could just as easily be served from another site or CDN. Therefore this plugin replaces any links in the wp-content and wp-includes directories (except for PHP files) on your site with the URL you provide below. That way you can either copy all the static content to a dedicated host or mirror the files to a CDN by origin pull." +msgstr "Скорее всего, на Вашем блоге очень много статичных файлов: изображений, файлов JS и CSS. Для улучшения работы блога, стоит загружать данные файлы с другого сайта или CDN. Данный плагина позволит изменить ссылки на все статичные файлы в wp-content и wp-includes (кроме файлов .php) на указанные ниже. Вы также можете скопировать все статичные файлы на любой другой хост или создать их копии на CDN. Подробнее об этом узнайте тут (англ.)." + +#: ossdl-cdn.php:147 +#: wp-cache.php:968 +msgid "The CDN Sync Tool plugin will help upload files to Amazon S3/Cloudfront if you would rather not depend on origin pull. See the plugin support forum if you have any queries about this plugin." +msgstr "" + +#: ossdl-cdn.php:148 +msgid "WARNING: Test some static urls e.g., %s to ensure your CDN service is fully working before saving changes." +msgstr "ВНИМАНИЕ: Прежде всего, протестируйте адреса CDN, например: %s - чтобы убедиться в корректной работе серверов." + +#: ossdl-cdn.php:149 +msgid "You can define different CDN URLs for each site on a multsite network." +msgstr "Вы можете использовать различные адреса CDN для каждого блога (если у Вас мультиблог)." + +#: ossdl-cdn.php:157 +msgid "Enable CDN Support" +msgstr "Включить поддержку CDN" + +#: ossdl-cdn.php:160 +msgid "Off-site URL" +msgstr "Основной URL" + +#: ossdl-cdn.php:163 +msgid "The new URL to be used in place of %1$s for rewriting. No trailing / please.
      Example: %2$s." +msgstr "Новый адрес будет использован вместо старого %1$s. Не используйте символ / на конце адреса.
      Пример: %2$s." + +#: ossdl-cdn.php:167 +msgid "Include directories" +msgstr "Включить директории" + +#: ossdl-cdn.php:170 +msgid "Directories to include in static file matching. Use a comma as the delimiter. Default is wp-content, wp-includes, which will be enforced if this field is left empty." +msgstr "Включить следующие директории со статичными файлами для перезаписи при совпадении. Используйте запятую (,) для разделения. По умолчанию будут добавлены директории wp-content и wp-includes." + +#: ossdl-cdn.php:174 +msgid "Exclude if substring" +msgstr "Исключить форматы" + +#: ossdl-cdn.php:177 +msgid "Excludes something from being rewritten if one of the above strings is found in the match. Use a comma as the delimiter like this, .php, .flv, .do, and always include .php (default)." +msgstr "Исключить следующие форматы для перезаписи, если найдено совпадение. Используйте запятую (,) для разделения исключений, например: .php, .flv, .do - не забывайте включать .php (по умолчанию)." + +#: ossdl-cdn.php:181 +msgid "Additional CNAMES" +msgstr "Дополнительные CNAME (канонические имена)" + +#: ossdl-cdn.php:184 +msgid "These CNAMES will be used in place of %1$s for rewriting (in addition to the off-site URL above). Use a comma as the delimiter. For pages with a large number of static files, this can improve browser performance. CNAMEs may also need to be configured on your CDN.
      Example: %2$s" +msgstr "Эти записи CNAME будут использованы вместо %1$s (в дополнении к основному URL). Используйте запятую (,) для разделения записей. Для страниц с большим количеством статичных файлов данная опция может уменьшить время загрузки. Записи CNAME также могут быть использованы для конфигурации CDN.
      Пример: %2$s" + +#: ossdl-cdn.php:188 +msgid "Skip https URLs to avoid \"mixed content\" errors" +msgstr "Пропустить адреса типа https чтобы избежать ошибок, связанных с использование защищенных и незащищенных узлов" + +#: ossdl-cdn.php:192 +msgid "Save Changes" +msgstr "Сохранить все изменения" + +#: ossdl-cdn.php:194 +msgid "CDN functionality provided by OSSDL CDN Off Linker by Mark Kubacki" +msgstr "Данные настройки CDN предоставлены плагином OSSDL CDN Off Linker от Mark Kubacki" + +#: wp-cache.php:99 +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "Пожалуйста, создайте файл %s /wp-cache-config.php из wp-super-cache/wp-cache-config-sample.php" + +#: wp-cache.php:162 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "Внимание! Включен режим PHP Safe Mode!" + +#: wp-cache.php:163 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "При работе с плагином могут возникнуть проблемы, так как PHP Safe Mode включен на Вашем сервере." + +#: wp-cache.php:167 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "Ваш сервер настроен так, что проверяет владельца для всех PHP скриптов перед тем как разрешить им чтение или запись в файл." + +#: wp-cache.php:168 +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "Вы или Администратор можете исправить ошибки, изменив группу владельца скриптов плагина через настройки веб-сервера. Также нужно изменить владельца для папки %s/cache/. Для более подробной информации смотрите страницу помощи по режиму safe mode (на англ.)." + +#: wp-cache.php:170 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "Вы или Администратор должны отключить это. Для более подробной информации смотрите страницу помощи по режиму safe mode (на англ.). Данные настройки НЕ могут быть отключены через файл .htaccess, для решения проблемы нужно редактировать php.ini в настройках веб-сервера." + +#: wp-cache.php:176 +msgid "Permlink Structure Error" +msgstr "Ошибка структуры ссылок" + +#: wp-cache.php:177 +msgid "A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks." +msgstr "Для работы плагина необходима корректная настройка структуры ссылок. Чтобы настроить их, посетите страницу Постоянные ссылки." + +#: wp-cache.php:189 +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "Внимание! Ваше hostname \"%s\" преобразовано в %s" + +#: wp-cache.php:190 +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "Ваш веб-сервер решил, что hostname изменено на %s. Некоторые опции плагина (например, \"Очистка мусора\") и сам WordPress могут работать некорректно." + +#: wp-cache.php:191 +#: wp-cache.php:205 +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "Чтобы узнать больше, посетите раздел 16 в Описании проблем в файле readme.txt (на англ.)" + +#: wp-cache.php:204 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "К сожалению, файл wp-cron.php не был обнаружен. Этот скрипт необходим для корректной работы опциии \"Очистка мусора\" и самого WordPress." + +#: wp-cache.php:219 +msgid "Cannot continue... fix previous problems and retry." +msgstr "Невозможно продолжить... прежде чем повторить попытку, исправьте предыдущие ошибки." + +#: wp-cache.php:228 +msgid "Zlib Output Compression Enabled!" +msgstr "Сжатие Zlib Output включено!" + +#: wp-cache.php:229 +msgid "PHP is compressing the data sent to the visitors of your site. Disabling this is recommended as the plugin caches the compressed output once instead of compressing the same page over and over again. Also see #21 in the Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "PHP использует сжатие для сжатых страницы Вашего сайта. Отключение данной опции рекомендуется, чтобы избежать многократного сжатия страниц плагином. Узнать больше, посетив раздел 16 в \"Описание проблем\" в файле readme.txt (на англ.). Также ознакомьтесь с этой страницей (на англ.) по php.ini." + +#: wp-cache.php:233 +msgid "Mod rewrite may not be installed!" +msgstr "Кажется, модуль mod_rewrite не установлен!" + +#: wp-cache.php:234 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use legacy or PHP modes." +msgstr "Возникла ошибка, связанная с тем, что модуль mod_rewrite отсутствует или не установлен. Пожалуйста, проверьте наличие модуля mod_rewrite в конфигурациях сервера. Модуль необходим для корректной работы плагина с статичными файлами. Без подключенного mod_rewrite Вы можете использовать только режимы с поддержкой PHP или среднее кэширование." + +#: wp-cache.php:239 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "Режим \"только_чтение\". Настройки не могут быть изменены." + +#: wp-cache.php:240 +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "Конфигурационный файл плагина WP Super Cache %s/wp-cache-config.php не может быть изменен. Чтобы продолжить, Вы должны установить права на запись для файла." + +#: wp-cache.php:241 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "Самый простой способ исправить это - изменить права доступа, используя CHMOD, через FTP-клиент. Достаточно установить глобальные права на запись." + +#: wp-cache.php:242 +#: wp-cache.php:258 +msgid "This page explains how to change file permissions." +msgstr "Здесь (англ. статья) подробно описано как изменить права доступа к файлам на сервере." + +#: wp-cache.php:243 +msgid "Writeable:" +msgstr "Доступно для записи:" + +#: wp-cache.php:244 +msgid "Readonly:" +msgstr "Только чтение:" + +#: wp-cache.php:256 +msgid "Warning! %s is writeable!" +msgstr "Внимание! Папка %s доступна для записи!" + +#: wp-cache.php:257 +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "Вы должны изменить права на папку %s. Чтобы сделать это - воспользуйтесь FTP-клиентом или следующей командой:" + +#: wp-cache.php:267 +msgid "Mobile rewrite rules detected" +msgstr "Обнаружена поддержка мобильных устройств" + +#: wp-cache.php:268 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"2.0\\ MMP|240x320\" and delete those." +msgstr "Для более продуктивной работы сайта, Вам стоит включить опцию \"Поддержка мобильных устройств\" или удалить эту запись из правил в .htaccess. Найдите следующий текст (две строчки) \"2.0\\ MMP|240x320\" и удалите его." + +#: wp-cache.php:268 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "На Ваших обычных посетителях это никак не отразится, а вот использующие мобильные устройства для веб-серфинга не будут получать кэшированные страницы (если опция отключена)." + +#: wp-cache.php:274 +#: wp-cache.php:285 +msgid "Rewrite rules must be updated" +msgstr "Права на запись должны быть обновлены" + +#: wp-cache.php:275 +#: wp-cache.php:286 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "Необходимые для работы плагина права были изменены или отсуствуют." + +#: wp-cache.php:276 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "Поддержка блогом мобильных устройств требует присутствия особых правил в файле .htaccess, иначе Вы не сможете использовать эту опцию. Ниже представлены возможые способы (в порядке сложности):" + +#: wp-cache.php:277 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "Переведите плагин в режим среднего кэширования и включите поддержку мобмльных устройств." + +#: wp-cache.php:278 +#: wp-cache.php:287 +msgid "Scroll down the Advanced Settings page and click the Update Mod_Rewrite Rules button." +msgstr "Прокрутите страницу вниз и нажмите кнопку Обновить правила Mod_Rewrite." + +#: wp-cache.php:279 +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "Удалите все правила mod_rewrite из файла %s.htaccess, между # BEGIN WPSuperCache и # END WPSuperCache и обновите страницу (восстановление правил запустится автоматически)." + +#: wp-cache.php:280 +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ add these lines: (do it twice, once for each section)" +msgstr "Добавьте правила самостоятельно. Для этого откройте в редакторе файл %s.htaccess и найдите код между # BEGIN WPSuperCache и # END WPSuperCache. Вы увидите два похожих блока кода. Сразу после строки %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ добавьте следующее (таких строк две, добавьте код и после второй):" + +#: wp-cache.php:293 +msgid "Required to serve compressed supercache files properly." +msgstr "Необходимо для правильного сжатия файлов." + +#: wp-cache.php:293 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "Необходимо настроить кэширование на странице плагина. Пользователи браузера IE7 будут видеть необновленные страницы из кэша без поддержки данного модуля." + +#: wp-cache.php:293 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "Установите дату истечения актуальности страниц. Пользователи могут не увидеть новую версию кэшированной страницы без данного модуля." + +#: wp-cache.php:300 +msgid "Missing Apache Modules" +msgstr "Отсутствующие модули Apache" + +#: wp-cache.php:301 +msgid "The following Apache modules are missing. The plugin will work in legacy mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "Следующие модули Apache отсутствуют на Вашем сервере. Без них плагин сможет работать только в режиме среднего кэширования. В режиме с поддержкой Super Cache Ваши пользователи могут видеть поврежденные страницы или просроченные их копии." + +#: wp-cache.php:459 +msgid "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file." +msgstr "Внимание! Вы пытаетесь включить сжатие, но модуль zlib.output_compression отключен. Смотрите пункт номер 21 раздела \"Описание проблем\" в файле readme.txt (на англ.)" + +#: wp-cache.php:550 +msgid "WP Super Cache Settings" +msgstr "Настройки WP Super Cache" + +#: wp-cache.php:561 +msgid "Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced Settings Page by default." +msgstr "Важно: Mod_rewrite или Legacy caching отключены. По умолчанию будет загружаться страница \"Настройки\"." + +#: wp-cache.php:572 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "Файл конфигураций был изменен, некоторые настройки не соответствуют требованиям плагина. Посетите страницу \"Настройки\" чтобы исправить это." + +#: wp-cache.php:597 +msgid "Caching must be enabled to use this feature" +msgstr "Кэширование должно быть включено, если Вы хотите использовать данную опцию" + +#: wp-cache.php:615 +#: wp-cache.php:746 +msgid "Cancel Cache Preload" +msgstr "Отменить общее кэширование" + +#: wp-cache.php:623 +#: wp-cache.php:634 +msgid "Scheduled preloading of cache cancelled." +msgstr "Общее кэширование по расписанию отключено." + +#: wp-cache.php:660 +#: wp-cache.php:744 +msgid "Preload Cache Now" +msgstr "Создать общий кэш сейчас" + +#: wp-cache.php:664 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "Общее кэширование произойдет через 10 секунд." + +#: wp-cache.php:669 +msgid "Scheduled preloading of cache in %d minutes" +msgstr "Общее кэширование произойдет через %d минут" + +#: wp-cache.php:673 +msgid "This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now." +msgstr "При активации общего кэширования, будет создана копия для каждой записи и страницы Вашего блога. В этом режиме создаются статичные страницы, которые затем будут видеть \"неопознанные\" посетители (например, поисковые боты и другие). Это может помочь в улучшении уровня PR Google, так как в основе их алгоритма лежит и скорость отклика веб-сайта." + +#: wp-cache.php:674 +msgid "Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "Однако, при использовании данного вида кэша создается намного больше файлов. Рекомендуется использовать такой тип, если у Вас очень много записей (10 тысяч и более) на блоге. Особенно это важно, если Вы пользуетесь услугами виртуального хостинга." + +#: wp-cache.php:675 +msgid "In ’Preload Mode’ regular garbage collection will only clean out old legacy files for known users, not the preloaded supercache files. This is a recommended setting when the cache is preloaded." +msgstr "В режиме ’Общего кэширования’ запланированная очистка мусора будет удалять только кэш записей простого типа (кэш из Super Cache не будет удален). Данная настройка рекомендована для использования." + +#: wp-cache.php:679 +msgid "Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)" +msgstr "Обновлять общий кэш каждые %s минут (введите 0, чтобы отключить, минимальное допустимое кол-во минут %d)." + +#: wp-cache.php:692 +msgid "all" +msgstr "весь" + +#: wp-cache.php:705 +msgid "Preload %s posts." +msgstr "Кэшировать %s записи." + +#: wp-cache.php:712 +msgid "Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "Предварительный режим (очистка мусора работает не полностью, опция рекомендована к включению.)" + +#: wp-cache.php:715 +msgid "Send me status emails when files are refreshed." +msgstr "Отправлять мне сообщения с уведомлениями об обновлении кэша." + +#: wp-cache.php:720 +msgid "Many emails, 2 emails per 100 posts." +msgstr "Высокий уровень: 2 сообщения на 100 записей." + +#: wp-cache.php:723 +msgid "Medium, 1 email per 100 posts." +msgstr "Средний уровень: 1 сообщение на 100 записей." + +#: wp-cache.php:726 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "Низкий уровень: 1 e-mail в начале и 1 в конце кэширования." + +#: wp-cache.php:730 +msgid "Refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Обновление кэша через %d ч %d мин и %d сек." + +#: wp-cache.php:731 +msgid "Full refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Полное кэширование проихойдет через %d ч %d мин и %d сек." + +#: wp-cache.php:737 +msgid "Currently caching from post %d to %d." +msgstr "В данный моменты кэшируются записи с %d по %d." + +#: wp-cache.php:741 +msgid "Page last cached: %s" +msgstr "Последний раз страница была кэширована: %s" + +#: wp-cache.php:744 +msgid "Update Settings" +msgstr "Обновить настройки" + +#: wp-cache.php:752 +msgid "Preloading of cache disabled. Please disable legacy page caching or talk to your host administrator." +msgstr "Общее кэширование отключено. Пожалуйста, включите полный режим работы плагина или обратитесь к администратору сервера." + +#: wp-cache.php:769 +#: wp-cache.php:865 +msgid "Caching" +msgstr "Статус кэширования" + +#: wp-cache.php:773 +msgid "Cache hits to this website for quick access." +msgstr "Кэшировать сессии просмотров для быстрого доступа." + +#: wp-cache.php:773 +#: wp-cache.php:774 +#: wp-cache.php:791 +#: wp-cache.php:796 +#: wp-cache.php:799 +#: wp-cache.php:800 +#: wp-cache.php:813 +#: wp-cache.php:868 +msgid "Recommended" +msgstr "Рекомендовано" + +#: wp-cache.php:774 +msgid "Use mod_rewrite to serve cache files." +msgstr "Использовать mod_rewrite для обслуживания кэша." + +#: wp-cache.php:775 +msgid "Use PHP to serve cache files." +msgstr "Использовать PHP для обслуживания кэша." + +#: wp-cache.php:776 +msgid "Legacy page caching." +msgstr "Упрощенное кэширование." + +#: wp-cache.php:777 +msgid "Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should use PHP caching." +msgstr "Использование mod_rewrite поможет сделать работу блога быстрее, чем PHP (хотя и этот вариант тоже не такой медленный). Этот режим проще и удобнее, но начинающему пользователю лучше использовать кэширование PHP." + +#: wp-cache.php:783 +msgid "Miscellaneous" +msgstr "Разное" + +#: wp-cache.php:789 +msgid "Warning! Compression is disabled as gzencode() function not found." +msgstr "Внимание! Функция gzencode() не найдена, сжатие отключено." + +#: wp-cache.php:791 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "Сжимать файлы кэша чтобы ускорить работу." + +#: wp-cache.php:792 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching it on and off clears the cache." +msgstr "Сжатие кэша отключено по умолчанию, так как может некорректно работать на некоторых хостингах. Включение или Отключение данной опции автоматически чистит временный кэш." + +#: wp-cache.php:796 +msgid "304 Not Modified browser caching. Indicate when a page has not been modified since last requested." +msgstr "Ошибка 304. Данная ошибка возникает тогда, когда страница не была изменена со времени прошлого запроса." + +#: wp-cache.php:797 +msgid "304 support is disabled by default because in the past GoDaddy had problems with some of the headers used." +msgstr "Поддержка ошибки 304 отключена по умолчанию (из-за проблем некоторых сервисов)." + +#: wp-cache.php:799 +msgid "Don’t cache pages for known users." +msgstr "Не кэшировать страницы для известных пользователей." + +#: wp-cache.php:800 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated." +msgstr "Авто перестройка кэша. Гости блога увидят устаревшие версии страниц кэша пока новые будут генерироваться." + +#: wp-cache.php:801 +msgid "Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)" +msgstr "Рассказать всем, что Вы пользуетесь плагином WP Super Cache (сообщение будет размещено в \"подвале\" сайта)!" + +#: wp-cache.php:807 +#: wp-cache.php:1056 +#: wp-cache.php:1563 +msgid "Advanced" +msgstr "Настройки" + +#: wp-cache.php:811 +msgid "Mobile device support." +msgstr "Поддержка мобильных устройств" + +#: wp-cache.php:812 +msgid "Clear all cache files when a post or page is published." +msgstr "Очищать кэш когда новая запись или страница опубликована." + +#: wp-cache.php:813 +msgid "Extra homepage checks. (Very occasionally stops homepage caching)" +msgstr "Дополнительная сверка кэша (очень редко может нарушить работу кэширования)." + +#: wp-cache.php:814 +msgid "Only refresh current page when comments made." +msgstr "Обновлять страницу при добавлении нового комментария к ней" + +#: wp-cache.php:815 +msgid "List the newest cached pages on this page." +msgstr "Создать список страниц в кэше (выводится на этой странице)" + +#: wp-cache.php:817 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "Блокировка файлов. Вам скорее всего не понадобится данная опция, но она может решить проблему маломощных хостингов. Внимание! Включение опции, в редких случаях, может вызвать проблемы в работе блога!" + +#: wp-cache.php:819 +msgid "Late init. Display cached files after WordPress has loaded. Most useful in legacy mode." +msgstr "\"Поздняя\" инициализация. Плагин будет отображать кэшированные страницы после загрузки WordPress. Опция полезна при режиме совместимости." + +#: wp-cache.php:821 +msgid "Use object cache to store cached files." +msgstr "Использовать объекты кэша для хранения кэшированных файлов." + +#: wp-cache.php:821 +msgid "(Experimental)" +msgstr "(экспериментальные настройки)" + +#: wp-cache.php:828 +msgid "Note:" +msgstr "Важно:" + +#: wp-cache.php:830 +msgid "Uninstall this plugin on the plugins page. It will automatically clean up after itself. If manual intervention is required then simple instructions are provided." +msgstr "Удаляйте плагин только со специальной страницы. Все лишние файлы будут удалены автоматически (некоторые файлы нужно будет редактировать вручную)." + +#: wp-cache.php:831 +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "Деактивируя плагин, убедитесь что папка %s доступна для записи в настройках Вашего сервера, чтобы файлы плагина advanced-cache.php и cache-config.php были удалены в автоматическом режиме (также проверьте наличие прав на запись для этих двух файлов)." + +#: wp-cache.php:832 +msgid "Please see the readme.txt for instructions on uninstalling this script. Look for the heading, \"How to uninstall WP Super Cache\"." +msgstr "Для справки смотрите readme.txt (документ на англ.). Там Вы найдете полезную информацию по использованию и удалению плагина WP Super Cache." + +#: wp-cache.php:833 +msgid "Need help? Check the Super Cache readme file. It includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already have been answered." +msgstr "Все еще нужна помощь? Смотрите официальный ЧАВО по плагину Super Cache (англ.). Также, Вы можете задать свой вопрос на форумах тех. поддержки (англ.), или ознакомиться с проблемами других пользователей и предложенными им решениями." + +#: wp-cache.php:836 +#: wp-cache.php:883 +msgid "Update Status" +msgstr "Обновить" + +#: wp-cache.php:843 +msgid "Accepted Filenames & Rejected URIs" +msgstr "Допустимые имена & Запрещенные адреса" + +#: wp-cache.php:868 +msgid "Caching On" +msgstr "Кэширование включено" + +#: wp-cache.php:869 +msgid "Caching Off" +msgstr "Кэширование выключено" + +#: wp-cache.php:870 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "Важно: рекомендуется включить PHP кэширование, авто перестройку кэша и поддержку для мобильных устройств" + +#: wp-cache.php:880 +msgid "Notice: PHP caching enabled but Supercache mod_rewrite rules detected. Cached files will be served using those rules. If your site is working ok please ignore this message or you can edit the .htaccess file in the root of your install and remove the SuperCache rules." +msgstr "Внимание: Среди правил mod_rewrite обнаружены правила от Supercache. Для работы с кэшем будут использоваться они. Чтобы удалить эти правила, Вам нужно вручную отредактировать файл .htaccess." + +#: wp-cache.php:885 +msgid "Cache Tester" +msgstr "Проверка кэширования" + +#: wp-cache.php:886 +msgid "Test your cached website by clicking the test button below." +msgstr "Здесь можно проверить правильность кэширования страниц Вашего блога одним нажатием." + +#: wp-cache.php:892 +msgid "Fetching %s to prime cache: " +msgstr "Проверка страницы %s в кэше: " + +#: wp-cache.php:894 +#: wp-cache.php:902 +#: wp-cache.php:910 +msgid "OK" +msgstr "ЕСТЬ" + +#: wp-cache.php:897 +msgid "Fetching first copy of %s: " +msgstr "Проверка первой копии %s: " + +#: wp-cache.php:905 +msgid "Fetching second copy of %s: " +msgstr "Проверка второй копии %s: " + +#: wp-cache.php:913 +msgid "One or more page requests failed:" +msgstr "При работе с кэшем произошли ошибки:" + +#: wp-cache.php:932 +#: wp-cache.php:933 +msgid "Page %d: %d (%s)" +msgstr "Страница %d: %d (%s)" + +#: wp-cache.php:939 +msgid "Page 1: %s" +msgstr "Страница 1: %s" + +#: wp-cache.php:940 +msgid "Page 2: %s" +msgstr "Страница 2: %s" + +#: wp-cache.php:941 +msgid "The timestamps on both pages match!" +msgstr "Временные штампы обоих вариантов страницы совпадают!" + +#: wp-cache.php:943 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "Страницы не совпадают! Временной штамп отличается или не был найден!" + +#: wp-cache.php:950 +msgid "Send non-secure (non https) request for homepage" +msgstr "Отправить незащищенный (не по https) запрос для главной страницы" + +#: wp-cache.php:951 +msgid "Test Cache" +msgstr "Проверить" + +#: wp-cache.php:955 +msgid "Delete Cached Pages" +msgstr "Удалить страницы из кэша" + +#: wp-cache.php:956 +msgid "Cached pages are stored on your server as html and PHP files. If you need to delete them use the button below." +msgstr "Кэшированные страницы Вашего блога хранятся на сервере в виде .php и .html файлов. Чтобы удалить их, нажмите на кнопку ниже." + +#: wp-cache.php:959 +#: wp-cache.php:2093 +#: wp-cache.php:2105 +#: wp-cache.php:2268 +msgid "Delete Cache" +msgstr "Удалить весь кэш" + +#: wp-cache.php:963 +msgid "Recommended Links and Plugins" +msgstr "Рекомендованные для ускорения блога плагины и полезные материалы" + +#: wp-cache.php:964 +msgid "Caching is only one part of making a website faster. Here are some other plugins that will help:" +msgstr "Кэширование страниц - лишь первый шаг на пути ускорения блога! Ниже приведены пару советов по оптимизации Вашего блога:" + +#: wp-cache.php:965 +msgid "WP Minify reduces the number of files served by your web server by joining Javascript and CSS files together. Alternatively you can use WPSCMin, a Supercache plugin that minifies cached pages. It does not however join JS/CSS files together." +msgstr "Плагин WP Minify уменьшает нагрузку на сервер за счет объединения CSS и JS файлов. Также можно использовать и WPSCMin для уменьшени объема кэшированных страниц. Однако он не может объединять JS и CSS файлы." + +#: wp-cache.php:966 +msgid "Yahoo! Yslow is an extension for the Firefox add-on Firebug. It analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. Also try the performance tools online at GTMetrix." +msgstr "Дополнение Yahoo! Yslow прекрасно подойдет для владельцев браузера Firefox. Yslow успешно анализирует страницы Вашего блога и предлагает оптимальные решения для оптимизации и ускорения. Также стоит попробовать онлайн-утилиту GTMetrix." + +#: wp-cache.php:967 +msgid "Use Google Libraries allows you to load some commonly used Javascript libraries from Google webservers. Ironically it may reduce your Yslow score." +msgstr "Библиотека JS от Google позволит использовать оптимизированные файлы Javascript с сервера Google (некоторые плагины уже используют эти библиотеки)." + +#: wp-cache.php:969 +msgid "Advanced users only: Speed up your site with Caching and cache-control explains how to make your site more cacheable with .htaccess rules." +msgstr "Только для понимающих пользователей: Ускорьте свой блог, используя дополнительные возможности контроля кэша за счет правил .htaccess." + +#: wp-cache.php:970 +msgid "Advanced users only: Install an object cache. Choose from Memcached, XCache, eAcccelerator and others." +msgstr "Только для понимающих пользователей: Установите дополнительное кэшировани объектов, используя Memcached, XCache или eAcccelerator." + +#: wp-cache.php:981 +msgid "Make WordPress Faster" +msgstr "Сделай свой блог быстрее!" + +#: wp-cache.php:982 +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "Плагин %1$s создан и обновляется автором %2$s при поддержке многих других." + +#: wp-cache.php:983 +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "Посетите блог автора плагина %1$s и его фотоблог на %2$s." + +#: wp-cache.php:984 +msgid "Please say hi to him on %s too!" +msgstr "Пожалуйста, посетите %s автора!" + +#: wp-cache.php:985 +msgid "Need Help?" +msgstr "Нужна помощь?" + +#: wp-cache.php:987 +msgid "Installation Help" +msgstr "Помощь по установке (англ.)" + +#: wp-cache.php:988 +msgid "Frequently Asked Questions" +msgstr "ЧАВО (англ.)" + +#: wp-cache.php:989 +msgid "Support Forum" +msgstr "Форум поддержки (англ.)" + +#: wp-cache.php:991 +msgid "Rate This Plugin!" +msgstr "Оцените плагин!" + +#: wp-cache.php:992 +msgid "Please rate this plugin and tell me if it works for you or not. It really helps development." +msgstr "Пожалуйста, оцените этот плагин или расскажите о своей проблеме. Этим вы поможете развивать WP Super Cache дальше." + +#: wp-cache.php:1001 +msgid "Cached pages since %1$s : %2$s" +msgstr "Страниц в кэше с %1$s : %2$s" + +#: wp-cache.php:1002 +msgid "Newest Cached Pages:" +msgstr "Новое в кэше:" + +#: wp-cache.php:1006 +msgid "Cached %s seconds ago" +msgstr "Добавлено в кэш %s секунд назад" + +#: wp-cache.php:1009 +msgid "(may not always be accurate on busy sites)" +msgstr "(список не рекомендован для больших сайтов)" + +#: wp-cache.php:1028 +msgid "Cache plugins are PHP scripts that live in a plugins folder inside the wp-super-cache folder. They are loaded when Supercache loads, much sooner than regular WordPress plugins." +msgstr "Кэширование происходит за счет PHP файлов, хранящихся в папке плагина. Они загружаются при включении режима Supercache. Загрузка происходит намного чаще, чем для остальных плагинов WordPress." + +#: wp-cache.php:1029 +msgid "This is strictly an advanced feature only and knowledge of both PHP and WordPress actions is required to create them." +msgstr "Для использования данной опции нужно знать PHP, и свободно разбираться в устройстве WordPress." + +#: wp-cache.php:1039 +msgid "Available Plugins" +msgstr "Доступные плагины" + +#: wp-cache.php:1056 +msgid "Easy" +msgstr "Кэш" + +#: wp-cache.php:1056 +msgid "CDN" +msgstr "Настройка CDN" + +#: wp-cache.php:1056 +msgid "Contents" +msgstr "Состояние кэша" + +#: wp-cache.php:1056 +msgid "Preload" +msgstr "Общий кэш" + +#: wp-cache.php:1056 +msgid "Plugins" +msgstr "Плагины" + +#: wp-cache.php:1056 +msgid "Debug" +msgstr "Обслуживание" + +#: wp-cache.php:1091 +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "Внимание: проверка правил WP Super Cache mod_rewrite отключена для блогов сети пока не будет запущена на главном блоге." + +#: wp-cache.php:1100 +msgid "Mod Rewrite Rules" +msgstr "Модуль Mod Rewrite" + +#: wp-cache.php:1106 +msgid "WordPress MU Detected" +msgstr "Обнаружен WordPress MU!" + +#: wp-cache.php:1106 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "К сожалению, mod_rewrite невозможно обновить в автоматическом режиме в WordPress MU. Вам придется вручную сделать это: откройте файл .htaccess (расположен в корневой директории блога) и добавьте следующие правила в него." + +#: wp-cache.php:1108 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Mod Rewrite не может быть обновлен!" + +#: wp-cache.php:1109 +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "Для корректной работы в Вашем файле %s.htaccess должны быть прописаны маркеры BEGIN, и END. Между ними находятся основные правила WordPress mod_rewrite, пример:" + +#: wp-cache.php:1111 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "Обновите страницу когда закончите редактирование файла .htaccess." + +#: wp-cache.php:1115 +msgid "Thank you for upgrading." +msgstr "Спасибо за обновление." + +#: wp-cache.php:1115 +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "С момента последней установленной версии плагина правила mod_rewrite были изменены. К сожалению, Вам придется вручную удалить старые правила прежде чем новые заработают. Обновите эту страницу когда закончите редактировать файл .htaccess. Если Вы хотите полностью обновить все сами, то замените следующую строку: %1$s на эту: %2$s . Единственное отличие - это замена \"HTTP_COOKIE\" на \"HTTP:Cookie\" и \"wordpressuser\" на \"wordpress\". Эти перемены связаны с новой версией WordPress 2.5. Конечно Вы можете продолжать работать со старыми версиями, если хватит смелости ;)" + +#: wp-cache.php:1119 +msgid "Trailing slash check required." +msgstr "Требуется проверка ссылок на слеш (\"/\")." + +#: wp-cache.php:1119 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "Кажется, все ссылки Вашего блога заканчиваются символом \"/\". К сожалению, как только Вы установили данный плагин, сработала опция, обнаружившая копии ссылок без символа \"/\" на конце, и теперь она не может осуществить перенаправление на верный адрес. Чтобы это исправить это, Вы должны отредактировать файл .htaccess и добавить два новых правила к группе основных правил плагина Supercache:" + +#: wp-cache.php:1121 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "Чтобы посмотреть полный список работающих правил, нажмите кнопку \"Посмотреть правила mod_rewrite\"." + +#: wp-cache.php:1135 +msgid "Mod Rewrite rules updated!" +msgstr "Правила mod_rewrite обновлены!" + +#: wp-cache.php:1136 +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "Файл %s.htaccess был успешно обновлен, необходимые правила mod_rewrite были добавлены. Пожалуйста, проверьте их. Они должны выглядеть так:" + +#: wp-cache.php:1138 +msgid "Mod Rewrite rules must be updated!" +msgstr "Правила mod_rewrite должны быть обновлены!" + +#: wp-cache.php:1139 +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "Ваш файл %s.htaccess недоступен для записи (в настройках сервера) и не может быть обновлен в автоматическом режиме. Вы должны вручную добавить новые правила к основным так, как указано ниже:" + +#: wp-cache.php:1144 +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "Правила mod_rewrite для плагина WP Super Cache были обнаружены в файле %s.htaccess.
      Нажмите на соответствующую кнопку, чтобы посмотреть строчки. Если Вы только что обновили плагин, проверьте все правила." + +#: wp-cache.php:1147 +msgid "A difference between the rules in your .htaccess file and the plugin rewrite rules has been found. This could be simple whitespace differences but you should compare the rules in the file with those below as soon as possible. Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "Между правилами в Вашем файле .htaccess и правилами самого плагина обнаружены несоответствия. Это может быть просто лишний символ в строке, но Вы должны лично сравнить оригинальные правила со своими как можно скорее. Нажмите на кнопку ’Обновить правила Mod_Rewrite’, чтобы сделать это в автоматическом режиме." + +#: wp-cache.php:1150 +msgid "View Mod_Rewrite Rules" +msgstr "Посмотреть правила mod_rewrite" + +#: wp-cache.php:1154 +#: wp-cache.php:2384 +msgid "Rules must be added to %s too:" +msgstr "Правила должны быть также добавлены к %s:" + +#: wp-cache.php:1162 +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "Правила для Gzip-сжатия добавлены в файл %s.htaccess." + +#: wp-cache.php:1169 +msgid "Fix Configuration" +msgstr "Восстановить стандартные настройки" + +#: wp-cache.php:1172 +msgid "Restore Default Configuration" +msgstr "Восстановить настройки по умолчанию" + +#: wp-cache.php:1180 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "Проверка комментариев включена. Прежде чем Ваши комментарии будут опубликованы пройдет какое-то время." + +#: wp-cache.php:1205 +msgid "Lock Down:" +msgstr "Закрытый режим:" + +#: wp-cache.php:1205 +#: plugins/awaitingmoderation.php:35 +#: plugins/badbehaviour.php:66 +#: plugins/domain-mapping.php:61 +msgid "Disabled" +msgstr "Отключен" + +#: wp-cache.php:1205 +#: plugins/awaitingmoderation.php:34 +#: plugins/badbehaviour.php:65 +#: plugins/domain-mapping.php:60 +msgid "Enabled" +msgstr "Включен" + +#: wp-cache.php:1206 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "Подготовьте свой блог к запланированным всплескам посещаемости, активировав данный режим. В активном состоянии размещение новых комментариев и записей НЕ будет обновлять статичные файлы в кэше." + +#: wp-cache.php:1207 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "Разработчикам: сделайте свой собственный плагин закрытого режима совместимым с нашим, добавив переменную \"WPLOCKDOWN\". Приведенный ниже код поможет Вам адоптировать свой плагин к настройкам нашего Режима." + +#: wp-cache.php:1209 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "Извините, мой блог временно недоступен. Зайдите попозже..." + +#: wp-cache.php:1213 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "Ваш блог использует Закрытый режим. Новые комментарии не обновляют все статичные элементы кэша." + +#: wp-cache.php:1215 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "Ваш блог не использует Закрытый режим. Новые комментарии обновляют все статичные элементы кэша." + +#: wp-cache.php:1218 +#: plugins/searchengine.php:61 +#: plugins/searchengine.php:76 +msgid "Disable" +msgstr "Отключить" + +#: wp-cache.php:1218 +#: plugins/searchengine.php:74 +msgid "Enable" +msgstr "Включить" + +#: wp-cache.php:1221 +msgid "Lock Down" +msgstr "Закрытый режим" + +#: wp-cache.php:1229 +msgid "Directly Cached Files" +msgstr "Прямое кэширование страниц" + +#: wp-cache.php:1287 +msgid "%s removed!" +msgstr "%s удален!" + +#: wp-cache.php:1295 +#: wp-cache.php:1297 +#: plugins/badbehaviour.php:83 +msgid "Warning!" +msgstr "Внимание!" + +#: wp-cache.php:1295 +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "Вы должны разрешить запись для %s. Но так как это потенциальная уязвимость, после обновления страницы верните права на чтение." + +#: wp-cache.php:1297 +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "Директрия %s доступна для записи. Вам следует изменить ее права на \"Только чтение\"." + +#: wp-cache.php:1311 +msgid "Existing direct page" +msgstr "Страница существует" + +#: wp-cache.php:1311 +msgid "Delete cached file" +msgstr "Удалить файлы из кэша" + +#: wp-cache.php:1316 +msgid "Add direct page:" +msgstr "Добавить страницу в кэш:" + +#: wp-cache.php:1318 +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "Данный кэш создается прямо из папки, где находится Ваш блог (папка %s). Эта опция полезна только тогда, когда ожидается большой приток посетителей с более популярного ресурса на конкретную страницу или запись Вашего." + +#: wp-cache.php:1320 +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "Например: чтобы добавить в кэш страницу %1$sabout/, нужно прописать %1$sabout/ или /about/. Кэш для страницы будет создан сразу же после первого к ней обращения гостем." + +#: wp-cache.php:1321 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "Чтобы удалить страницу из такого кэша, очистите текстовое поле и удалите файлы кэша." + +#: wp-cache.php:1326 +msgid "Update Direct Pages" +msgstr "Обновить стрницы" + +#: wp-cache.php:1364 +msgid "Expiry Time & Garbage Collection" +msgstr "Просроченные страницы & Очистка мусора" + +#: wp-cache.php:1366 +msgid "Expire time:" +msgstr "Актуальность кэша:" + +#: wp-cache.php:1367 +msgid "seconds" +msgstr "секунд" + +#: wp-cache.php:1368 +msgid "Garbage Collection" +msgstr "Очистка мусора" + +#: wp-cache.php:1368 +msgid "If the expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above." +msgstr "Если время актуальности кэша более 1800 секунд (полчаса), то очистка мусора будет запускаться каждые 10 минут." + +#: wp-cache.php:1369 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 300 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. If you are using legacy caching aim to have less than 500 cached files if possible. You can have many times more cached files when using mod_rewrite or PHP caching." +msgstr "Поверка и удаление просроченных страниц кэша занимает время, но и оставлять такие файлы в системе не стоит. На больших блогах нужно выставлять \"время жизни\" каждой копии 300 секунд. Вы можете поэкспериментировать с настройкой и посмотреть, сколько просроченных копий остается в кэше в течение дня. Оптимальное число - не более 500. Используя mod_rewrite или PHP, Вы сможете увеличить количество кэшируемых страниц." + +#: wp-cache.php:1370 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "Установите значение 0 чтобы отключить Очистку мусора." + +#: wp-cache.php:1371 +msgid "Change Expiration" +msgstr "Изменить время жизни копии" + +#: wp-cache.php:1415 +msgid "Rejected User Agents" +msgstr "Поисковые и другие боты" + +#: wp-cache.php:1416 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "Чтобы запретить плагину кэшировать запросы от поисковых ботов и других сетевых роботов, введите их названия в поле ниже (по одному в строке). Если копия страницы уже существует в кэше Super Cache, то она все равно будет отправлена боту." + +#: wp-cache.php:1423 +msgid "Save UA Strings" +msgstr "Сохранить настройки" + +#: wp-cache.php:1446 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "Не кэшировать страницы следующих типов. Сверьтесь с Статьей Кодекса WP (англ.), чтобы узнать подробнее о типах страниц." + +#: wp-cache.php:1449 +msgid "Single Posts" +msgstr "Записи" + +#: wp-cache.php:1450 +msgid "Pages" +msgstr "Страницы" + +#: wp-cache.php:1451 +msgid "Front Page" +msgstr "Основная страница" + +#: wp-cache.php:1452 +msgid "Home" +msgstr "Домашняя страница" + +#: wp-cache.php:1453 +msgid "Archives" +msgstr "Архивы" + +#: wp-cache.php:1454 +msgid "Tags" +msgstr "Метки" + +#: wp-cache.php:1455 +msgid "Category" +msgstr "Рубрики" + +#: wp-cache.php:1456 +msgid "Feeds" +msgstr "Фиды" + +#: wp-cache.php:1457 +msgid "Search Pages" +msgstr "Страницы поиска" + +#: wp-cache.php:1459 +#: wp-cache.php:1573 +msgid "Save" +msgstr "Сохранить" + +#: wp-cache.php:1476 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "Поле ниже Вы также можете заполнить фрагментами адресов страниц (или групп страниц, например, архив за год/месяц и т.д.), которые не будут кэшироваться. Плагин будет сканировать адреса страниц на предмет наличая в них фрагментов, указанных ниже, перед кэшированием." + +#: wp-cache.php:1482 +msgid "Save Strings" +msgstr "Сохранить список запрещенных фрагментов" + +#: wp-cache.php:1498 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "Поле ниже Вы можете заполнить названиями файлов которые будут кэшированы, даже если в их названии есть запрещенных к кэшированию фрагменты." + +#: wp-cache.php:1504 +msgid "Save Files" +msgstr "Сохранить список файлов" + +#: wp-cache.php:1545 +msgid "Currently logging to: %s" +msgstr "Currently logging to: %s" + +#: wp-cache.php:1548 +msgid "Fix problems with the plugin by debugging it here. It can log them to a file in your cache directory." +msgstr "Здесь Вы можете решить некоторые проблемы, возникающие при работе с плагином, с помощью отладки. Вся служебная информацию (логи) будет записана в файлы директории кэша." + +#: wp-cache.php:1552 +msgid "Debugging" +msgstr "Отладка" + +#: wp-cache.php:1552 +#: plugins/awaitingmoderation.php:40 +#: plugins/badbehaviour.php:71 +#: plugins/searchengine.php:69 +#: plugins/domain-mapping.php:66 +msgid "enabled" +msgstr "включен" + +#: wp-cache.php:1553 +msgid "IP Address" +msgstr "Адрес IP" + +#: wp-cache.php:1553 +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(записывает обращения только с этого IP. Ваш IP - %s)" + +#: wp-cache.php:1554 +msgid "Log level" +msgstr "Уровень лога" + +#: wp-cache.php:1560 +msgid "(1 = less, 5 = more, may cause severe server load.)" +msgstr "(1 = наименьший, 5 = наибольший, может вызвать большую нагрузку на сервер)" + +#: wp-cache.php:1563 +msgid "In very rare cases two problems may arise on some blogs:
      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "В особо редких случаях на блоге могут случиться две проблемы:
      1. Вместо главной страницы пользователи будут видеть предложение загрузить .zip архив с ней
      2. Вместо главной страницы может быть добавлена в кэш совершенно другая (только в случае, если Ваш бог использует следующую структуру ссылок /%category%/%postname%/).
      " + +#: wp-cache.php:1564 +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "Ошибки, которые могут возникнуть при работе с WP Super Cache, не связаны с плагином. Они появляются лишь в редких случаях (и то из-за проблем с хостингом или другими плагинами), но Вы можете подстраховаться, запустив автоматическую сверку кэша каждые 5 минут. В случае ошибки, Вам будет отправлено сообщение." + +#: wp-cache.php:1566 +msgid "Check front page every 5 minutes." +msgstr "Проверять главную страницу каждые 5 минут." + +#: wp-cache.php:1567 +msgid "Front page text" +msgstr "Ключевой текст" + +#: wp-cache.php:1567 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "Введите текст который плагин будет искать на главной странице. Если текст не будет обнаружен, то кэш автоматически очистится. Оставьте поле пустым чтобы отключить опцию." + +#: wp-cache.php:1568 +msgid "Clear cache on error." +msgstr "Очищать кэш при ошибке." + +#: wp-cache.php:1569 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "Сообщить администратору блога по завершению проверки (полезно при тестировании на ошибки)." + +#: wp-cache.php:1583 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "Ошибка: сжатие GZIP включено, отключите его если хотите запустить wp-cache." + +#: wp-cache.php:1630 +#: wp-cache.php:1796 +msgid "Warning" +msgstr "Внимание" + +#: wp-cache.php:1630 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "Сжатие GZIP включено в настройках WordPress, плагин не будет работать до тех пор, пока Вы не отключите gzip." + +#: wp-cache.php:1692 +#: wp-cache.php:1697 +#: wp-cache.php:1729 +#: wp-cache.php:1734 +#: wp-cache.php:1740 +msgid "Error" +msgstr "Ошибка" + +#: wp-cache.php:1692 +msgid "Your cache directory (%1$s) did not exist and couldn’t be created by the web server. Check %1$s permissions." +msgstr "Папка для хранения кэша ($cache_path) не существует и не может быть создана в автоматическом режиме. Проверьте права доступа к %s." + +#: wp-cache.php:1697 +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "Папка (%1$s) или %2$s должна быть доступна для записи. Перепроверьте права доступа." + +#: wp-cache.php:1729 +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "Конфигурационный файл WP-Cache (%s) может быть недоступен для записи. Пожалуйста, удалите его вручную и обновите страницу." + +#: wp-cache.php:1734 +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "Конфигурационный файл отсутствует, а папка %1$s (%2$s) недоступна для записи. Проверьте права доступа." + +#: wp-cache.php:1740 +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "Файл WP-Cache (%s) не был найден. Проверьте, завершена ли установка плагина." + +#: wp-cache.php:1796 +msgid "%s/advanced-cache.php
      does not exist or cannot be updated." +msgstr "%s/advanced-cache.php не существует или не может быть обновлен в автоматическом режиме." + +#: wp-cache.php:1797 +msgid "1. If it already exists please delete the file first." +msgstr "1. Если он уже существует в папках Вашего блога, удалите его." + +#: wp-cache.php:1798 +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. Измените права доступа к %1$s, чтобы можно было записать данные в автоматическом режиме (права должны быть: chmod 777 %1$s), проверьте правильность заданных прав и обновите страницу. Это временное условие, после обновления страницы права доступа нужно вернуть на прежние (с 777 на 755)." + +#: wp-cache.php:1799 +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. Перезагрузите страницу, файл %s/advanced-cache.php обновится сам" + +#: wp-cache.php:1800 +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "Если это не сработало, убедитесь что файл %s/advanced-cache.php не существует:" + +#: wp-cache.php:1801 +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. Откройте файл %1$s$wp_cache_file в текстовом редакторе.
    • 2. Измените строчку CACHEHOME на %2$s
    • 3. Сохраните файл и скопируйте в %3$s, затем перезагрузите страницу.
    • " + +#: wp-cache.php:1824 +msgid "

      WP_CACHE constant set to false

      The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

      define('WP_CACHE', true);

      " +msgstr "

      Параметр WP_CACHE не активирован

      Данный параметр должен быть активирован для того, чтобы WordPress мог корректно работать с файлами кэша. В данный момент он отключен. Чтобы включить его, откройте файл wp-config.php и добавьте в него следующую строчку:

      define('WP_CACHE', true);

      " + +#: wp-cache.php:1826 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "Ошибка: Переменная WP_CACHE не была найдена в файле общих конфигураций wp-config.php." + +#: wp-cache.php:1827 +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "Отредактируйте код %s и добавьте следующую сточку:
      define('WP_CACHE', true);
      Иначе WP-Cache не сможет запуститься. " + +#: wp-cache.php:1831 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the FAQ. The WP_CACHE line must be moved up." +msgstr "

      Переменная WP_CACHE добавлена в файл конфигураций wp-config.php

      Если Вы до сих пор видите данное сообщение, то сверьтесь с пунктом 5 ЧАВО (на англ.). Строка с WP_CACHE должна быть размещена выше." + +#: wp-cache.php:1855 +msgid "Cache Contents" +msgstr "Состояние кэша" + +#: wp-cache.php:1858 +msgid "Object cache in use. No cache listing available." +msgstr "Список кэширования недоступен." + +#: wp-cache.php:1882 +msgid "Deleting supercache file: %s
      " +msgstr "Удаление файлов Super Cache: %s
      " + +#: wp-cache.php:1899 +msgid "Deleting wp-cache file: %s
      " +msgstr "Удаление файлов WP-Cache: %s
      " + +#: wp-cache.php:1964 +msgid "Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page." +msgstr "Статистика объектов в кэше НЕ создается автоматически. Чтобы обновить ее вручную нажмите на ссылку ниже." + +#: wp-cache.php:1965 +msgid "Regenerate cache stats" +msgstr "Обновить статистику кэша" + +#: wp-cache.php:1967 +msgid "Cache stats last generated: %s minutes ago." +msgstr "Статистика объектов в кэше последний раз создана: %s мин назад." + +#: wp-cache.php:1973 +msgid "WP-Cache" +msgstr "Состояние WP-Cache" + +#: wp-cache.php:1974 +#: wp-cache.php:1989 +msgid "%s Cached Pages" +msgstr "%s страниц в кэше" + +#: wp-cache.php:1975 +#: wp-cache.php:1994 +msgid "%s Expired Pages" +msgstr "%s страниц просрочено" + +#: wp-cache.php:1988 +msgid "WP-Super-Cache" +msgstr "Состояние WP-Super-Cache" + +#: wp-cache.php:1998 +msgid "Fresh WP-Cached Files" +msgstr "Новые файлы WP-Cache" + +#: wp-cache.php:1999 +#: wp-cache.php:2015 +#: wp-cache.php:2031 +#: wp-cache.php:2047 +msgid "URI" +msgstr "АДРЕС" + +#: wp-cache.php:1999 +#: wp-cache.php:2015 +msgid "Key" +msgstr "Ключ" + +#: wp-cache.php:1999 +#: wp-cache.php:2015 +#: wp-cache.php:2031 +#: wp-cache.php:2047 +msgid "Age" +msgstr "Возраст" + +#: wp-cache.php:1999 +#: wp-cache.php:2015 +#: wp-cache.php:2031 +#: wp-cache.php:2047 +msgid "Delete" +msgstr "Удалить" + +#: wp-cache.php:2014 +msgid "Stale WP-Cached Files" +msgstr "Старые файлы WP-Cache" + +#: wp-cache.php:2030 +msgid "Fresh Super Cached Files" +msgstr "Новые файлы Super Cache" + +#: wp-cache.php:2046 +msgid "Stale Super Cached Files" +msgstr "Старые файлы Super Cache" + +#: wp-cache.php:2062 +msgid "Hide file list" +msgstr "Убрать список" + +#: wp-cache.php:2064 +msgid "Too many cached files, no listing possible." +msgstr "Слишком много объектов в кэше, создание списка невозможно." + +#: wp-cache.php:2066 +msgid "List all cached files" +msgstr "Список кэшированных файлов" + +#: wp-cache.php:2072 +msgid "Garbage Collection
      Last GC was %s minutes ago
      " +msgstr "Очистка мусора
      Предыдущая очистка была %s минут назад
      " + +#: wp-cache.php:2073 +msgid "Next GC in %s minutes" +msgstr "Следующая очистка будет через %s минут" + +#: wp-cache.php:2076 +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "Просроченный кэш - это страницы, созданные более чем %s секунд назад. Не смотря на свой статус, они используются в общем кэше и периодически удаляются." + +#: wp-cache.php:2087 +msgid "Delete Expired" +msgstr "Удалить просроченный кэш" + +#: wp-cache.php:2105 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Удалить файлы Super Cache (в новом окне)" + +#: wp-cache.php:2244 +msgid "%1$s is Digg proof thanks to caching by %2$s" +msgstr "%1$s благодарен плагину %2$s за проделаннную работу" + +#: wp-cache.php:2277 +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "Плагин WP Super Cache должен быть настроен! Чтобы включить его и настроить, перейдите на страницу управления." + +#: wp-cache.php:2283 +msgid "Settings" +msgstr "Настройки" + +#: wp-cache.php:2293 +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "Плагин WP Super Cache не активирован! Чтобы включить его, перейдите на страницу управления." + +#: wp-cache.php:2296 +msgid "Warning! WP Super Cache caching broken! The script advanced-cache.php could not load wp-cache-phase1.php.

      Please edit %1$s/advanced-cache.php and make sure the path to %2$swp-cache-phase1.php is correct." +msgstr "ВНИМАНИЕ! Кэширование отключено, плагин поврежден! WP Super Cache не может загрузить скрипт wp-cache-phase1.php.

      Чтобы исправить ошибку, откройте файл %1$s/advanced-cache.php и проверьте строчку, указывающую на %2$swp-cache-phase1.php." + +#: wp-cache.php:2315 +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] Главная страница сжата с помощью gzipped! Удалите кэш!" + +#: wp-cache.php:2315 +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "Произошла ошибка! Посетите %s чтобы удалить кэш!" + +#: wp-cache.php:2318 +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] Главная страница сжата с помощью gzipped! Кэш удален!" + +#: wp-cache.php:2318 +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "Весь кэш для Вашего блога был очищен, так как плагин заметил ошибку на главной странице (она скачивалась архивом). Чтобы проверить кэш, посетите эту стрницу %s." + +#: wp-cache.php:2325 +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] Кэш главной страницы содержит ошибку! Удалите кэш!" + +#: wp-cache.php:2325 +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "Произошла ошибка, на главной странице Вашего блога не был обнаружен ключевой текст \"%2$s\"! Чтобы исправить ошибку, посетите эту страницу %1$s и вручную очистие кэш." + +#: wp-cache.php:2328 +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] Главная страница отображается с ошибкой! Кэш удален!" + +#: wp-cache.php:2328 +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "Произошла ошибка, на главной странице Вашего блога не был обнаружен ключевой текст \"%2$s\"! Посетите эту страницу %1$s чтобы проверить кэш." + +#: wp-cache.php:2333 +msgid "[%s] Front page check!" +msgstr "[%s] Главная страница проверена!" + +#: wp-cache.php:2333 +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "Плагин WP Super Cache только что проверил главную страницу Вашего блога на предмет ошибок. Чтобы отключить уведомления и проверку посетите эту страницу %s." + +#: wp-cache.php:2376 +msgid "Cannot update .htaccess" +msgstr "Не могу обновить файл .htaccess" + +#: wp-cache.php:2376 +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "Файл %s.htaccess не может быть обновлен в автоматическом режиме. Чтобы исправить это задайте необходимые для записи права доступа к нему." + +#: wp-cache.php:2376 +msgid "Refresh this page when the file permissions have been modified." +msgstr "Обновите страницу когда необходимые права доступа будут заданы." + +#: wp-cache.php:2376 +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "Вы также можете отредактировать файл %s.htaccess вручную и лично добавить необходимые правила:" + +#: wp-cache.php:2380 +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "Чтобы плагин мог правильно работать со статичными html файлами, Вы должны добавить в файл %s.htaccess правила модуля mod_rewrite" + +#: wp-cache.php:2381 +msgid "You can edit the file yourself add the following rules." +msgstr "Вы можете вручную отредактировать файл и добавить необходимые правила." + +#: wp-cache.php:2382 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr " Убедитесь что они идут перед всеми уже существующими в документе правилами WordPress. " + +#: wp-cache.php:2390 +msgid "Update Mod_Rewrite Rules" +msgstr "Обновить правила mod_rewrite" + +#: wp-cache.php:2515 +msgid "[%1$s] Cache Preload Started" +msgstr "[%1$s] Общее кэширование началось" + +#: wp-cache.php:2517 +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] Обновление кэша записей с %2$d по %3$d" + +#: wp-cache.php:2535 +msgid "[%1$s] Cache Preload Stopped" +msgstr "[%1$s] Общее кэширование остановлено" + +#: wp-cache.php:2544 +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s] %2$d кэш записей обновлен" + +#: wp-cache.php:2544 +msgid "Refreshed the following posts:" +msgstr "Следующие записи обновлены:" + +#: wp-cache.php:2553 +msgid "Scheduling next preload refresh in %d minutes." +msgstr "Следующее запланированное обновление общего кэша через %d минут." + +#: wp-cache.php:2563 +msgid "[%s] Cache Preload Completed" +msgstr "[%s] Общее кэширование завершено" + +#: wp-cache.php:2563 +msgid "Cleaning up old supercache files." +msgstr "Удалять старые файлы из кэша Super Cache." + +#: wp-cache.php:2605 +msgid "[%s] Preload may have stalled." +msgstr "[%s] Общее кэширование могло быть прервано." + +#: wp-cache.php:2605 +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"Общее кэширование было перезапущено.\n" +"%s" + +#: wp-cache.php:2648 +msgid "Supercache Uninstall Problems" +msgstr "Проблемы при удалении плагина" + +#: wp-cache.php:2648 +msgid "" +"Dear User,\n" +"\n" +"WP Super Cache was removed from your blog but the mod_rewrite rules\n" +"in your .htaccess were not.\n" +"\n" +"Please edit the following file and remove the code\n" +"between 'BEGIN WPSuperCache' and 'END WPSuperCache'. Please backup the file first!\n" +"\n" +"%s\n" +"\n" +"Regards,\n" +"WP Super Cache Plugin\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" +msgstr "" +"Уважаемый пользователь,\n" +"\n" +"плагин WP Super Cache был успешно удален с Вашего блога, но правила mod_rewrite\n" +"в файле .htaccess не были приведены в исходное состояние.\n" +"\n" +"Пожалуйста, отредактируйте даный файл вручную, используя текстовый редактор,\n" +"удалив строчки между 'BEGIN WPSuperCache' и 'END WPSuperCache'. Но сначала создайте резервную копию файла!\n" +"\n" +"%s\n" +"\n" +"Успехов,\n" +"WP Super Cache Plugin\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" + +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "Ваш комментарий ожидает подтверждения." + +#: plugins/awaitingmoderation.php:32 +msgid "Awaiting Moderation" +msgstr "Плагин \"Awaiting Moderation\"" + +#: plugins/awaitingmoderation.php:36 +msgid "Enables or disables plugin to Remove the text \"Your comment is awaiting moderation.\" when someone leaves a moderated comment." +msgstr "Включите или выключите плагин, чтобы убрать надпись \"Ваш комментарий ожидает проверки\" когда кто-то размещает комментарий к записи." + +#: plugins/awaitingmoderation.php:42 +#: plugins/badbehaviour.php:73 +#: plugins/searchengine.php:67 +#: plugins/domain-mapping.php:68 +msgid "disabled" +msgstr "отключен" + +#: plugins/awaitingmoderation.php:43 +msgid "Awaiting Moderation is now %s" +msgstr "Плагин \"Awaiting Moderation\" сейчас %s" + +#: plugins/awaitingmoderation.php:45 +#: plugins/badbehaviour.php:76 +#: plugins/domain-mapping.php:71 +msgid "Update" +msgstr "Обновить" + +#: plugins/badbehaviour.php:47 +msgid "Bad Behaviour not found. Please check your install." +msgstr "Плагин \"Bad Behaviour\" не был найден. Проверьте, завершили ли Вы его установку." + +#: plugins/badbehaviour.php:63 +msgid "Bad Behavior" +msgstr "Плагин \"Bad Behaviour\" " + +#: plugins/badbehaviour.php:68 +msgid "(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr " (данный плагин может работать только в режиме среднего кэширования, отключите сжатие и установите плагин \"Bad Behavior\" в \"%s/plugins/bad-behavior/\") " + +#: plugins/badbehaviour.php:74 +msgid "Bad Behavior support is now %s" +msgstr "Статус плагина \"Bad Behaviour\": %s. " + +#: plugins/searchengine.php:71 +msgid "No Adverts for Friends plugin is %s." +msgstr "Статус плагина \"No Adverts for Friends\": %s." + +#: plugins/searchengine.php:72 +msgid "(requires friendsadverts.php too) " +msgstr "(требуется установка friendsadverts.php) " + +#: plugins/domain-mapping.php:58 +msgid "Domain Mapping" +msgstr "Плагин \"МультиБлог\"" + +#: plugins/domain-mapping.php:63 +msgid "Provides support for Domain Mapping plugin to map multiple domains to a blog." +msgstr "Помогите улучшить плагин \"Domain Mapping\"!" + +#: plugins/domain-mapping.php:69 +msgid "Domain Mapping support is now %s" +msgstr "Статус плагина \"Domain Mapping\": %s. " + +#: plugins/domain-mapping.php:83 +msgid "Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin." +msgstr "Обнаружен плагин \"Domain Mapping\"! Чтобы облегчить и ускорить его работу, Вам нужно включить поддержку мультиблогов в настройках." + +#~ msgid "" +#~ "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on " +#~ "on the main site of this network." +#~ msgstr "" +#~ "Внимание: Проверка правил WP Super Cache mod_rewrite отключена для блогов " +#~ "сети пока не будет запущена на главном блоге." + +#~ msgid "Tester & Contents" +#~ msgstr "Проверка" + +#~ msgid "" +#~ "Logging to a file is easier but faces the problem that clearing the cache " +#~ "will clear the log file." +#~ msgstr "" +#~ "Получить доступ к файлу лога просто, но при очистке кэша лог также будет " +#~ "удален." + +#~ msgid "Logging Type" +#~ msgstr "Тип входа" + +#~ msgid "Email" +#~ msgstr "Email" + +#~ msgid "file" +#~ msgstr "файл" + +#~ msgid "(support for multiple domains on multisite websites) " +#~ msgstr "(поддержка для MU - сервиса блогов)" + +#~ msgid "" +#~ "Scheduled preloading of cache cancelled. If a job is currently running it " +#~ "will not shutdown until the current 100 pages are complete." +#~ msgstr "" +#~ "Общее кэширование по расписанию отключено. Если служба сейчас запущена, " +#~ "она не будет завершена пока текущие 100 страниц не кэшированы." + +#~ msgid "" +#~ "Scroll down this page and click the Update Mod_Rewrite Rules button." +#~ msgstr "" +#~ "Пролистайте страницу вних и нажмите кнопку Обновить правила " +#~ "Mod_Rewrite." + +#~ msgid "WP Super Cache Manager" +#~ msgstr "Управление плагином WP Super Cache" + +#~ msgid "Why your configuration may not be changed" +#~ msgstr "Почему конфигурации не могут быть изменены" + +#~ msgid "Why" +#~ msgstr "Почему" + +#~ msgid "ON" +#~ msgstr "ВКЛ" + +#~ msgid "WP Cache and Super Cache enabled" +#~ msgstr "Плагины WP Cache и Super Cache включены" + +#~ msgid "HALF ON" +#~ msgstr "РАБОТАЕТ НАПОЛОВИНУ" + +#~ msgid "Super Cache Disabled, only legacy WP-Cache caching." +#~ msgstr "Плагин Super Cache отключен, работает только кэшировани WP-Cache" + +#~ msgid "OFF" +#~ msgstr "ВЫКЛ" + +#~ msgid "WP Cache and Super Cache disabled" +#~ msgstr "Плагины WP Cache и Super Cache отключены" + +#~ msgid "" +#~ "Cache rebuild. Serve a supercache file to anonymous users while a new " +#~ "file is being generated. Recommended for very busy websites with " +#~ "lots of comments. Makes \"directly cached pages\" and \"Lockdown mode\" " +#~ "obsolete." +#~ msgstr "" +#~ "Восстановление кэша. При включенной опции, гости сайта будут получать " +#~ "старые страницы из плагина Super Cache, пока формируются новые. " +#~ "Рекомендуется использовать данную опцию только для очень " +#~ "посещаемых блогов, где много комментариев. После включения опции в " +#~ "настройках \"прямое кэширование страниц\" и \"закрытый режим\" нет нужды " +#~ "(они устаревают)" + +#~ msgid "" +#~ "List the newest cached pages (may be expensive to run on busy sites, use " +#~ "with caution.)" +#~ msgstr "" +#~ "Создавать список новых кэшированных страниц (использовать на свой страх и " +#~ "риск, может затормозить сайты с большим количеством посетителей)" + +#~ msgid "" +#~ "%1$s really makes your blog go faster. Make it go faster* by " +#~ "buying me an Amazon gift card! Make it out to \"%3$s" +#~ "\" for whatever amount you want. Every penny helps!" +#~ msgstr "" +#~ "%1$s действительно ускоряет Ваш блог. Вы можете сделать его еще " +#~ "быстрее*, купив мне подарочную карту сервиса " +#~ "Amazon! Можете выбрать \"%3$s\" любое значение, какое хотите. Каждая " +#~ "копейка поможет мне!" + +#~ msgid "" +#~ "If Amazon isn’t your thing, there’s also PayPal. Click the " +#~ "\"Donate\" button below or take a quick peek at my wishlist." +#~ msgstr "" +#~ "Если Вы не хотите иметь дело с Amazon , то можно сделать пожертвование " +#~ "через PayPal. Нажмите кнопку \"Пожертвовать\" или выберите подарок для " +#~ "меня из моего списка желаний." + +#~ msgid "Thanks in advance!" +#~ msgstr "Заранее благодарю!" + +#~ msgid "" +#~ "Ok, it won’t go any faster but you’ll make this plugin author " +#~ "very happy!" +#~ msgstr "" +#~ "Ладно, он не будет быстрее, но Вы все равно сделаете автора плагина очень " +#~ "счастливым!" + +#~ msgid "Don’t show me this again." +#~ msgstr "Не показывать больше это сообщение." + +#~ msgid "Hide" +#~ msgstr "Спрятать" + +#~ msgid "" +#~ "He blogs at %1$s and posts photos at %2$s. He would really appreciate a " +#~ "donation to encourage development of this plugin." +#~ "
      Even a penny will help." +#~ msgstr "" +#~ "Блог автора - %1$s, фотоблог - %2$s. Автор плагина будет благодарен любой " +#~ "поддержке от Вас.
      Даже копейка может помочь в " +#~ "его работе." + +#~ msgid "Super Cache Compression" +#~ msgstr "Сжатие кэша Super Cache" + +#~ msgid "Compression is enabled by default when in HALF ON mode." +#~ msgstr "" +#~ "Сжатие кэша отключено по умолчанию в режиме РАБОТАЕТ НАПОЛОВИНУ." + +#~ msgid "Super Cache compression is now disabled." +#~ msgstr "Сжатие кэша Super Cache теперь отключено." + +#~ msgid "Super Cache compression is now enabled." +#~ msgstr "Сжатие кэша Super Cache теперь включено." + +#~ msgid "Update Compression" +#~ msgstr "Обновить настройки сжатия" + +#~ msgid "Debug Settings" +#~ msgstr "Параметры отладки" + +#~ msgid "" +#~ "

      WP_CACHE constant in wp-config.php set to false

      The WP_CACHE " +#~ "constant is defined in your wp-config.php but must be set to true, not " +#~ "false for this plugin to work correctly.

      " +#~ msgstr "" +#~ "

      Значение для WP_CACHE в конфигурационном файле WordPrees wp-config." +#~ "php установлено на \"false\"

      Чтобы плагин заработал, значение " +#~ "WP_CACHE в wp-config.php нужно поставить на \"true\".

      " + +#~ msgid "You must edit the file yourself add the following rules." +#~ msgstr "" +#~ "Вы должны вручную отредактировать файл и добавить необходимые правила." diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-sr_RS.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-sr_RS.mo new file mode 100644 index 0000000000000000000000000000000000000000..a3682c7513b93dd99b1c690f5554646034a99bdd GIT binary patch literal 84853 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

      }a&w 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\n" +"Language-Team: Anja Skrba \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Language: Srpski / Serbian\n" +"X-Generator: Poedit 1.5.5\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: ossdl-cdn.php:151 +msgid "" +"Your website probably uses lots of static files. Image, Javascript and CSS " +"files are usually static files that could just as easily be served from " +"another site or CDN. Therefore this plugin replaces any links in the " +"wp-content and wp-includes directories (except for " +"PHP files) on your site with the URL you provide below. That way you can " +"either copy all the static content to a dedicated host or mirror the files " +"to a CDN by origin pull." +msgstr "" +"Vaš web sajt verovatno koristi dosta statičnih fajlova. Slikovni, Javascript " +"i CSS fajlovi su obično statični fajlovi koji lako mogu da se "" +"povlače" sa drugog sajta, ili CDN-a. Iz tog razloga ovaj WordPress " +"dodatak zamenjuje sve linkove u wp-content i wp-includes direktorijumima (izuzev PHP fajlova) vašeg sajta, URL-om koji dajete " +"dole. Na taj način možete, ili kopirati sav statičan sadržaj na poseban " +"hosting server, ili "preslikati" (mirror) fajlove na CDN, pomoću origin pull-a." + +#: ossdl-cdn.php:152 wp-cache.php:1167 +msgid "" +"The CDN Sync Tool plugin will help upload files to " +"Amazon S3/Cloudfront if you would rather not depend on origin pull. See the " +"plugin support forum if you have any queries about this " +"plugin." +msgstr "" +"Dodatak CDN Sync Tool će vam pomoći da prenesete " +"fajlove na Amazon S3/Cloudfront, ako radije ne biste da zavisite od origin " +"pull-a. Pogledajte forum za podršku dodatku, ako imate " +"bilo kakvih pitanja u vezi sa ovim dodatkom." + +#: ossdl-cdn.php:153 +msgid "" +"WARNING: Test some static urls e.g., " +"%s to ensure your CDN service is fully working before saving changes." +msgstr "" +"UPOZORENJE: Pre nego snimite izmene, " +"isprobajte nekoliko statičnih url-ova, npr. %s , da budete sigurni da vaš " +"CDN servis radi u potpunosti." + +#: ossdl-cdn.php:154 +msgid "You can define different CDN URLs for each site on a multsite network." +msgstr "" +"Možete definisati različite CDN URL-ove za svaki sajt iz mreže višestrukih " +"sajtova." + +#: ossdl-cdn.php:162 +msgid "Enable CDN Support" +msgstr "Uključiti CDN podršku" + +#: ossdl-cdn.php:165 +msgid "Off-site URL" +msgstr "Spoljašnji URL" + +#: ossdl-cdn.php:168 +msgid "" +"The new URL to be used in place of %1$s for rewriting. No trailing / please.
      Example: %2$s." +msgstr "" +"Novi URL koji će se koristiti umesto %1$s, za ponovno upisivanje. Bez " +"prateće /, molim vas. Primer: %2$s." + +#: ossdl-cdn.php:172 +msgid "Include directories" +msgstr "Uključiti direktorijume" + +#: ossdl-cdn.php:175 +msgid "" +"Directories to include in static file matching. Use a comma as the " +"delimiter. Default is wp-content, wp-includes, which will be " +"enforced if this field is left empty." +msgstr "" +"Direktorijumi koje treba uključiti pri statičkom upoređivanju fajlova. " +"Koristite zapetu kao razdvajač. Podrazumevani su wp-content, wp-" +"includes, koji će se uključiti ako se ovo polje ostavi prazno." + +#: ossdl-cdn.php:179 +msgid "Exclude if substring" +msgstr "Isključiti ako je pod-niz" + +#: ossdl-cdn.php:182 +msgid "" +"Excludes something from being rewritten if one of the above strings is found " +"in the match. Use a comma as the delimiter like this, .php, .flv, .do, and always include .php (default)." +msgstr "" +"Isključuje nešto da ne bude presnimljeno, ako se jedan od gornjih stringova " +"pronađe među rezultatima koji se podudaraju. Upotrebite zapetu kao " +"razdvajač, ovako: .php, .flv, .do, i uvek uključite .php (podrazumevano)." + +#: ossdl-cdn.php:186 +msgid "Additional CNAMES" +msgstr "Dodatni CNAME zapisi" + +#: ossdl-cdn.php:189 +msgid "" +"These CNAMES will " +"be used in place of %1$s for rewriting (in addition to the off-site URL " +"above). Use a comma as the delimiter. For pages with a large number of " +"static files, this can improve browser performance. CNAMEs may also need to " +"be configured on your CDN.
      Example: %2$s" +msgstr "" +"Ovi CNAME zapisi " +"će se koristiti umesto %1$s, za ponovno upisivanje (uz gornji spoljašnji " +"URL). Koristite zapetu kao razdvajač. Za strane sa velikim brojem statičkih " +"fajlova, ovo može poboljšati performanse pregledača. Takođe, možda treba " +"konfigurisati CNAME zapise na vašem CDN-u.
      Primer: %2$s" + +#: ossdl-cdn.php:193 +msgid "Skip https URLs to avoid \"mixed content\" errors" +msgstr "" +"Preskočiti https URL-ove, da se izbegnu \"pomešani sadržaj (mixed content)\" " +"greške" + +#: ossdl-cdn.php:197 +msgid "Save Changes" +msgstr "Snimiti izmene" + +#: ossdl-cdn.php:199 +msgid "" +"CDN functionality provided by OSSDL CDN Off Linker by Mark Kubacki" +msgstr "" +"CDN funkcionalnost koju daje OSSDL CDN Off Linker od Mark Kubacki-a" + +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "Vaš komentar čeka moderaciju." + +#: plugins/awaitingmoderation.php:32 +msgid "Awaiting Moderation" +msgstr "Čekanje na moderaciju" + +#: plugins/awaitingmoderation.php:34 plugins/badbehaviour.php:65 +#: plugins/domain-mapping.php:75 plugins/jetpack.php:27 +#: plugins/searchengine.php:69 plugins/wptouch.php:22 wp-cache.php:1405 +msgid "Enabled" +msgstr "Uključeno" + +#: plugins/awaitingmoderation.php:35 plugins/badbehaviour.php:66 +#: plugins/domain-mapping.php:76 plugins/jetpack.php:28 +#: plugins/searchengine.php:70 plugins/wptouch.php:23 wp-cache.php:1405 +msgid "Disabled" +msgstr "Isključeno" + +#: plugins/awaitingmoderation.php:36 +msgid "" +"Enables or disables plugin to Remove the text \"Your comment is awaiting " +"moderation.\" when someone leaves a moderated comment." +msgstr "" +"Uključuje ili isključuje dodatak za uklanjanje teksta \"Vaš komentar čeka " +"moderaciju (Your comment is awaiting moderation).\", kada neko ostavi " +"moderisani komentar." + +#: plugins/awaitingmoderation.php:40 plugins/badbehaviour.php:71 +#: plugins/domain-mapping.php:81 plugins/jetpack.php:33 +#: plugins/searchengine.php:75 plugins/wptouch.php:28 wp-cache.php:1866 +#: wp-cache.php:1868 +msgid "enabled" +msgstr "uključeno" + +#: plugins/awaitingmoderation.php:42 plugins/badbehaviour.php:73 +#: plugins/domain-mapping.php:83 plugins/jetpack.php:35 +#: plugins/searchengine.php:77 plugins/wptouch.php:30 +msgid "disabled" +msgstr "isključeno" + +#: plugins/awaitingmoderation.php:43 +msgid "Awaiting Moderation is now %s" +msgstr "Čekanje na moderaciju je sada %s" + +#: plugins/awaitingmoderation.php:45 plugins/badbehaviour.php:76 +#: plugins/domain-mapping.php:86 plugins/jetpack.php:38 +#: plugins/searchengine.php:80 plugins/wptouch.php:33 +msgid "Update" +msgstr "Ažurirati" + +#: plugins/badbehaviour.php:47 +msgid "Bad Behaviour not found. Please check your install." +msgstr "Bad Behaviour nije pronađen. Molim vas, proverite vašu instalaciju." + +#: plugins/badbehaviour.php:63 +msgid "Bad Behavior" +msgstr "Bad Behaviour (nepristojno ponašanje)" + +#: plugins/badbehaviour.php:68 +msgid "" +"(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-" +"behavior/\") " +msgstr "" +"(Podržano je samo nasleđeno keširanje, kompresija je isključena, i traži se " +"Bad Behaviour u " +"direktorijumu \"%s/plugins/bad-behavior/\") " + +#: plugins/badbehaviour.php:74 +msgid "Bad Behavior support is now %s" +msgstr "Podrška za Bad Behaviour je sada %s" + +#: plugins/badbehaviour.php:83 wp-cache.php:1495 wp-cache.php:1500 +msgid "Warning!" +msgstr "Upozorenje!" + +#: plugins/domain-mapping.php:73 +msgid "Domain Mapping" +msgstr "Domain Mapping (mapiranje domena)" + +#: plugins/domain-mapping.php:78 +msgid "" +"Provides support for Domain Mapping plugin to map multiple domains to a " +"blog." +msgstr "" +"Obezbeđuje podršku za Domain Mapping dodatak, za uparivanje " +"(mapiranje) više domena sa blogom." + +#: plugins/domain-mapping.php:84 +msgid "Domain Mapping support is now %s" +msgstr "Podrška za Domain Mapping je sada %s" + +#: plugins/domain-mapping.php:98 +msgid "" +"Domain Mapping plugin detected! Please go to the Supercache plugins page and " +"enable the domain mapping helper plugin." +msgstr "" +"Pronađen je dodatak Domain Mapping! Molim vas, idite na stranu Supercache " +"dodataka i uključite pomoćni dodatak za mapiranje domena." + +#: plugins/jetpack.php:25 +msgid "Jetpack Mobile Theme" +msgstr "Jetpack tema za mobilne uređaje" + +#: plugins/jetpack.php:30 +msgid "" +"Provides support for the Jetpack mobile theme and plugin. PHP caching mode and mobile " +"support will be enabled too." +msgstr "" +"Obezbeđuje podršku za Jetpack temu, i dodatak, za mobilne uređaje." + +#: plugins/jetpack.php:36 +msgid "Jetpack Mobile Theme support is now %s" +msgstr "Podrška za Jetpack temu za mobilne uređaje je sada %s" + +#: plugins/multisite.php:13 +msgid "Cached" +msgstr "Keširano" + +#: plugins/multisite.php:31 wp-cache.php:1418 +msgid "Enable" +msgstr "Uključiti" + +#: plugins/multisite.php:33 plugins/searchengine.php:61 wp-cache.php:1418 +msgid "Disable" +msgstr "Isključiti" + +#: plugins/multisite.php:39 +msgid "Caching has been disabled on this blog on the Network Admin Sites page." +msgstr "" +"Keširanje na ovom blogu je isključeno na strani za mrežnu administraciju " +"sajtova (Network Admin Sites)" + +#: plugins/searchengine.php:67 +msgid "No Adverts for Friends" +msgstr "No Adverts for Friends (bez reklama za prijatelje)" + +#: plugins/searchengine.php:72 +msgid "" +"Provides support for No Adverts for Friends." +msgstr "" +"Obezbeđuje podršku za No Adverts for Friends." + +#: plugins/searchengine.php:78 +msgid "No Adverts for Friends support is now %s" +msgstr "Podrška za No Adverts for Friends je sada %s" + +#: plugins/wptouch.php:20 +msgid "WPTouch" +msgstr "WPTouch" + +#: plugins/wptouch.php:25 +msgid "" +"Provides support for WPTouch mobile theme and plugin." +msgstr "" +"Obezbeđuje podršku za WPTouch temu, i dodatak, za mobilne uređaje" + +#: plugins/wptouch.php:31 +msgid "WPTouch support is now %s" +msgstr "Podrška za WPTouch je sada %s" + +#: plugins/wptouch.php:45 +msgid "" +"WPTouch plugin detected! Please go to the Supercache plugins page and enable " +"the WPTouch helper plugin." +msgstr "" +"Pronađen je dodatak WPTouch! Molim vas, idite na stranu Supercache dodataka " +"i uključite pomoćni dodatak za WPTouch." + +#: wp-cache-phase2.php:1257 +msgid "Cache expiry cron job failed. Job will run again in 10 seconds." +msgstr "" +"Cron zadatak za istek keša nije uspeo. Zadatak će se ponovo pokrenuti za 10 " +"sekundi." + +#: wp-cache-phase2.php:1261 +msgid "" +"Cache expiry cron job took more than 30 seconds. You should probably run the " +"garbage collector more often." +msgstr "" +"Cron zadatku za istek keša je trebalo više od 30 sekundi. Verovatno bi " +"trebalo da češće pokrećete sakupljač smeća." + +#: wp-cache-phase2.php:1270 +msgid "[%1$s] WP Super Cache GC Report" +msgstr "[%1$s] WP Super Cache izveštaj o sakupljanju smeća (GC Report)" + +#: wp-cache.php:99 +msgid "" +"Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-" +"sample.php" +msgstr "" +"Molim vas, napravite fajl %s /wp-cache-config.php iz fajla wp-super-cache/wp-" +"cache-config-sample.php" + +#: wp-cache.php:165 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "Upozorenje! Uključen je PHP siguran način rada (safe mode)!" + +#: wp-cache.php:166 +msgid "" +"You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "" +"Možete imati problema pri radu sa ovim dodatkom, jer je uključen SIGURAN MOD " +"(safe mode)." + +#: wp-cache.php:170 +msgid "" +"Your server is set up to check the owner of PHP scripts before allowing them " +"to read and write files." +msgstr "" +"Vaš server je podešen tako da proverava vlasnika PHP skripti, pre nego im " +"dozvoli da čitaju i upisuju podatke u fajlove." + +#: wp-cache.php:171 +msgid "" +"You or an administrator may be able to make it work by changing the group " +"owner of the plugin scripts to match that of the web server user. The group " +"owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further " +"details." +msgstr "" +"Vi, ili administrator, možda možete učiniti da proradi, menjanjući grupnog " +"vlasnika skripti tako da se poklopi sa korisnikom web servera. Grupni " +"vlasnik direktorijuma %s/cache/ takođe mora da se promeni. Za još detalja " +"pogledajte stranu sa uputstvom " +"za siguran mod." + +#: wp-cache.php:173 +msgid "" +"You or an administrator must disable this. See the safe mode manual page for further details. This " +"cannot be disabled in a .htaccess file unfortunately. It must be done in the " +"php.ini config file." +msgstr "" +"Vi, ili administrator, morate isključiti ovo. Za dalje informacije " +"pogledajte stranu sa uputstvom " +"za siguran mod. Na žalost, ovo se ne može isključiti u fajlu .htaccess. " +"To se mora uraditi u konfiguracionom fajlu php.ini." + +#: wp-cache.php:179 +msgid "Permlink Structure Error" +msgstr "Greška permalink strukture" + +#: wp-cache.php:180 +msgid "" +"A custom url or permalink structure is required for this plugin to work " +"correctly. Please go to the Permalinks " +"Options Page to configure your permalinks." +msgstr "" +"Da bi ovaj dodatak pravilno radio, potreban je prilagođeni url, ili " +"prilagođena permalink struktura. Molim vas, idite na Stranu sa opcijama vezanim za permalinkove (Permalinks " +"Options Page), da konfigurišete vaše permalinkove." + +#: wp-cache.php:192 +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "Upozorenje! Vaše host ime \"%s\" ukazuje na %s" + +#: wp-cache.php:193 +msgid "" +"Your server thinks your hostname resolves to %s. Some services such as " +"garbage collection by this plugin, and WordPress scheduled posts may not " +"operate correctly." +msgstr "" +"Vaš server \"misli\" da vaše host ime ukazuje na %s. Neki servisi, poput " +"sakupljanja smeća od strane ovog dodatka, i WordPress zakazanih objava, " +"možda ne funkcionišu ispravno." + +#: wp-cache.php:194 wp-cache.php:208 +msgid "" +"Please see entry 16 in the Troubleshooting section of the " +"readme.txt" +msgstr "" +"Molim vas, pogledajte stavku 16 u Troubleshooting section " +"(Sekciji o otklanjanju problema) readme.txt fajla" + +#: wp-cache.php:207 +msgid "" +"Unfortunately WordPress cannot find the file wp-cron.php. This script is " +"required for the the correct operation of garbage collection by this plugin, " +"WordPress scheduled posts as well as other critical activities." +msgstr "" +"Na žalost, WordPress ne može da pronađe fajl wp-cron.php. Ova skripta je " +"potrebna za pravilno funkcionisanje sakupljanja smeća od strane ovog " +"dodatka, WordPress zakazanih objava, i drugih kritičnih aktivnosti." + +#: wp-cache.php:221 +msgid "Cannot continue... fix previous problems and retry." +msgstr "" +"Nije moguće nastaviti... otklonite prethodne probleme i pokušajte ponovo." + +#: wp-cache.php:230 +msgid "Zlib Output Compression Enabled!" +msgstr "Zlib izlazna kompresija je uključena!" + +#: wp-cache.php:231 +msgid "" +"PHP is compressing the data sent to the visitors of your site. Disabling " +"this is recommended as the plugin caches the compressed output once instead " +"of compressing the same page over and over again. Also see #21 in the " +"Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "" +"PHP komprimuje podatke koji se šalju posetiocima vašeg sajta. Isključivanje " +"ovoga se preporučuje, jer dodatak kešira komprimovani izlaz jednom, umesto " +"komprimovanja iste strane iznova i iznova. Takođe pogledajte #21 u sekciji o " +"otklanjanju problema (Troubleshooting section). Pogledajte ovu stranu za instrukcije o " +"modifikovanju vašeg php.ini fajla." + +#: wp-cache.php:235 +msgid "Mod rewrite may not be installed!" +msgstr "Mod rewrite možda nije instaliran!" + +#: wp-cache.php:236 +msgid "" +"It appears that mod_rewrite is not installed. Sometimes this check isn’" +"t 100% reliable, especially if you are not using Apache. Please verify that " +"the mod_rewrite module is loaded. It is required for serving Super Cache " +"static files. You will still be able to use legacy or PHP modes." +msgstr "" +"Izgleda da mod_rewrite nije instaliran. Ponekad ova provera nije 100% " +"pouzdana, posebno ako ne koristite Apache. Molim vas, potvrdite da je učitan " +"modul mod_rewrite. On je potreban za serviranje Super Cache statičnih " +"fajlova. I dalje ćete moći da koristite zastarele ili PHP modove." + +#: wp-cache.php:242 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "Mod u kome je moguć samo pregled. Konfiguracija ne može da se menja." + +#: wp-cache.php:243 +msgid "" +"The WP Super Cache configuration file is %s/wp-cache-config.php " +"and cannot be modified. That file must be writeable by the webserver to make " +"any changes." +msgstr "" +"WP Super Cache konfiguracioni fajl je %s/wp-cache-config.php, i " +"ne može se menjati. U taj fajl mora da bude omogućen upis podataka od strane " +"web servera, da bi se pravile bilo kakve izmene." + +#: wp-cache.php:244 +msgid "" +"A simple way of doing that is by changing the permissions temporarily using " +"the CHMOD command or through your ftp client. Make sure it’s globally " +"writeable and it should be fine." +msgstr "" +"Jednostavan način da se to uradi je privremeno menjanje dozvola, koristeći " +"naredbu CHMOD, ili preko vašeg ftp klijenta. Postarajte se da u njega " +"globalno bude omogućen upis podataka, i trebalo bi sve da bude u redu." + +#: wp-cache.php:245 wp-cache.php:294 +msgid "" +"This page explains how to change file permissions." +msgstr "" +"Ova strana objašnjava kako promeniti dozvole za fajlove." + +#: wp-cache.php:246 +msgid "Writeable:" +msgstr "Moguć upis podataka:" + +#: wp-cache.php:247 +msgid "Readonly:" +msgstr "Moguć samo pregled:" + +#: wp-cache.php:265 +msgid "Warning! Garbage collection is not scheduled!" +msgstr "Upozorenje! Sakupljanje smeća nije zakazano!" + +#: wp-cache.php:266 +msgid "" +"Garbage collection by this plugin clears out expired and old cached pages on " +"a regular basis. Use this form to enable it." +msgstr "" +"Sakupljanje smeća od strane ovog dodatka redovno briše istekle i stare " +"keširane strane. Upotrebite ovaj obrazac da ga " +"uključite." + +#: wp-cache.php:271 wp-cache.php:299 wp-cache.php:369 +msgid "Dismiss" +msgstr "Odbaciti" + +#: wp-cache.php:292 +msgid "Warning! %s is writeable!" +msgstr "Pažnja! u %s je moguć upis podataka!" + +#: wp-cache.php:293 +msgid "" +"You should change the permissions on %s and make it more restrictive. Use " +"your ftp client, or the following command to fix things:" +msgstr "" +"Trebalo bi da na %s promenite dozvole, i učinite ih restriktivnijim. Da " +"popravite stvari, upotrebite vaš ftp klijent, ili sledeću naredbu:" + +#: wp-cache.php:311 +msgid "Mobile rewrite rules detected" +msgstr "Otkrivena su mobilna pravila za ponovni upis" + +#: wp-cache.php:312 +msgid "" +"For best performance you should enable \"Mobile device support\" or delete " +"the mobile rewrite rules in your .htaccess. Look for the 2 lines with the " +"text \"2.0\\ MMP|240x320\" and delete those." +msgstr "" +"Za najbolje performanse treba da uključite \"Podršku za mobilne uređaje " +"(Mobile device support)\", ili da obrišete mobilna pravila za ponovni upis u " +"vašem fajlu .htaccess. Potražite 2 linije sa tekstom \"2.0\\ MMP|240x320\", " +"i obrišite ih." + +#: wp-cache.php:312 +msgid "" +"This will have no affect on ordinary users but mobile users will see " +"uncached pages." +msgstr "" +"Ovo se neće odraziti na obične korisnike, ali mobilni korisnici će videti " +"nekeširane strane." + +#: wp-cache.php:318 wp-cache.php:329 +msgid "Rewrite rules must be updated" +msgstr "Pravila za ponovni upis moraju da se ažuriraju" + +#: wp-cache.php:319 wp-cache.php:330 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "" +"Pravila za ponovni upis, koja zahteva ovaj dodatak, su izmenjena, ili " +"nedostaju." + +#: wp-cache.php:320 +msgid "" +"Mobile support requires extra rules in your .htaccess file, or you can set " +"the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "" +"Podrška za mobilne uređaje zahteva dodatna pravila u vašem fajlu .htaccess, " +"ili možete podesiti dodatak na zastareli mod (legacy mode). Evo vaših opcija " +"(poređanih po težini):" + +#: wp-cache.php:321 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "" +"Podesite dodatak na zastareli mod i uključite podršku za mobilne uređaje." + +#: wp-cache.php:322 wp-cache.php:331 +msgid "" +"Scroll down the Advanced Settings page and click the Update " +"Mod_Rewrite Rules button." +msgstr "" +"Skrolujte na dole, na strani sa naprednim podešenjima (Advanced Settings), i " +"kliknite na dugme Ažurirati mod_rewrite pravila (Update Mod_Rewrite " +"Rules)." + +#: wp-cache.php:323 +msgid "" +"Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN " +"WPSuperCache and # END WPSuperCache and let the plugin " +"regenerate them by reloading this page." +msgstr "" +"U %s.htaccess fajlu obrišite mod_rewrite pravila dodatka, smeštena između " +"# BEGIN WPSuperCache i # END WPSuperCache, i " +"pustite da ih dodatak opet generiše, učitavajući ponovo ovu stranu." + +#: wp-cache.php:324 +msgid "" +"Add the rules yourself. Edit %s.htaccess and find the block of code enclosed " +"by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line " +"%%{HTTP:Cookie} !^.*(comment_author_|%s|wp-postpass_).*$ add " +"these lines: (do it twice, once for each section)" +msgstr "" +"Sami dodajte pravila. Otvorite fajl %s.htaccess u uređivaču, i pronađite " +"blok koda koji se nalazi između linija # BEGIN WPSuperCache i " +"# END WPSuperCache. Tu se nalaze dve sekcije koje izgledaju " +"vrlo slično. Odmah ispod linije %%{HTTP:Cookie} !^.*(comment_author_|" +"%s|wp-postpass_).*$ dodajte ove linije: (uradite to dva puta - za " +"svaku sekciju)" + +#: wp-cache.php:337 +msgid "Required to serve compressed supercache files properly." +msgstr "Potrebno da se pravilno serviraju komprimovani supercache fajlovi." + +#: wp-cache.php:337 +msgid "" +"Required to set caching information on supercache pages. IE7 users will see " +"old pages without this module." +msgstr "" +"Potrebno da bi se na supercache stranama postavile informacije o keširanju. " +"Korisnici IE7 će videti stare strane, bez ovog modula." + +#: wp-cache.php:337 +msgid "" +"Set the expiry date on supercached pages. Visitors may not see new pages " +"when they refresh or leave comments without this module." +msgstr "" +"odešavanje datuma isteka na superkeširanim stranama. Posetioci mogu da ne " +"vide nove strane kada osvežavaju sadržaj u pregledaču ili ostavljaju " +"komentare, bez ovog modula." + +#: wp-cache.php:344 +msgid "Missing Apache Modules" +msgstr "Nedostaju Apache moduli " + +#: wp-cache.php:345 +msgid "" +"The following Apache modules are missing. The plugin will work in legacy " +"mode without them. In full Supercache mode, your visitors may see corrupted " +"pages or out of date content however." +msgstr "" +"Nedostaju sledeći Apache moduli. Bez njih će ovaj dodatak raditi u " +"zastarelom modu. Međutim, u punom Supercache modu, vaši posetioci mogu da " +"vide nepotpune strane, ili sadržaj koji više nije važeći." + +#: wp-cache.php:363 +msgid ".htaccess file may need to be moved" +msgstr ".htaccess fajl možda treba da se premesti" + +#: wp-cache.php:364 +msgid "" +"It appears you have WordPress installed in a sub directory as described here. Unfortunately WordPress writes to the .htaccess in the install " +"directory, not where your site is served from.
      When you update the " +"rewrite rules in this plugin you will have to copy the file to where your " +"site is hosted. This will be fixed in the future." +msgstr "" +"Izgleda da vam je WordPress instaliran u pod-folderu, kao što je opisano
      ovde. Na žalost, WordPress upisuje podatke u .htaccess fajl u instalacionom " +"direktorijumu, a ne tamo odakle se vaš sajt servira.
      Kada ažurirate " +"pravila za ponovni upis u ovom dodatku, moraćete da kopirate ovaj fajl na " +"lokaciju na kojoj se hostuje vaš sajt. Ovo će u budućnosti biti rešeno." + +#: wp-cache.php:597 +msgid "" +"Warning! You attempted to enable compression but zlib." +"output_compression is enabled. See #21 in the Troubleshooting section " +"of the readme file." +msgstr "" +"Upozorenje! Pokušali ste da uključite kompresiju, ali je " +"zlib.output_compression uključeno. Pogledajte #21 u sekciji o " +"otklanjanju problema (Troubleshooting section), readme fajla." + +#: wp-cache.php:693 +msgid "WP Super Cache Settings" +msgstr "WP Super Cache podešenja" + +#: wp-cache.php:707 +msgid "" +"Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced " +"Settings Page by default." +msgstr "" +"Obratite pažnju: Uključeni su Mod_rewrite, ili zastarelo keširanje " +"(Legacy caching). Podrazumevano je prikazivanje strane sa naprednim " +"podešenjima (Advanced Settings)." + +#: wp-cache.php:718 +msgid "" +"Configuration file changed, some values might be wrong. Load the page again " +"from the \"Settings\" menu to reset them." +msgstr "" +"Konfiguracioni fajl je izmenjen, neke vrednosti bi mogle biti pogrešne. " +"Učitajte stranu ponovo, iz menija \"Podešenja (Settings\", da ih resetujete." + +#: wp-cache.php:750 +msgid "Caching must be enabled to use this feature" +msgstr "Da bi se koristilo ovo svojstvo, keširanje mora da bude uključeno" + +#: wp-cache.php:768 wp-cache.php:908 +msgid "Cancel Cache Preload" +msgstr "Otkazati učitavanje keša unapred" + +#: wp-cache.php:776 +msgid "" +"Scheduled preloading of cache almost cancelled. It may take up to a minute " +"for it to cancel completely." +msgstr "" +"Zakazano učitavanje keša unapred je skoro otkazano. Može potrajati još " +"najviše minut dok se ono potpuno otkaže." + +#: wp-cache.php:787 +msgid "Scheduled preloading of cache cancelled." +msgstr "Zakazano učitavanje keša unapred je otkazano." + +#: wp-cache.php:819 wp-cache.php:906 +msgid "Preload Cache Now" +msgstr "Učitati keš unapred sada" + +#: wp-cache.php:823 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "Zakazano učitavanje keša unapred za 10 sekundi." + +#: wp-cache.php:828 +msgid "Scheduled preloading of cache in %d minutes" +msgstr "Zakazano učitavanje keša unapred za %d minuta" + +#: wp-cache.php:832 +msgid "" +"This will cache every published post and page on your site. It will create " +"supercache static files so unknown visitors (including bots) will hit a " +"cached page. This will probably help your Google ranking as they are using " +"speed as a metric when judging websites now." +msgstr "" +"Ovo će keširati svaku objavljenu objavu, ili stranu, na vašem sajtu. " +"Napraviće superkeš statične fajlove, tako da će nepoznati posetioci " +"(uključujući i botove) pogoditi keširanu stranu. Ovo će vam verovatno pomoći " +"kod Google rangiranja, pošto oni sada koriste brzinu kao meru, kada sude o " +"web sajtovima." + +#: wp-cache.php:833 +msgid "" +"Preloading creates lots of files however. Caching is done from the newest " +"post to the oldest so please consider only caching the newest if you have " +"lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "" +"Međutim, učitavanje unapred kreira dosta fajlova. Keširanje se radi od " +"najnovije do najstarije objave, tako da, molim vas, ako imate mnogo " +"(10,000+) objava, razmislite o tome da keširate samo one najnovije. Ovo je " +"naročito važno kod deljenog hostinga." + +#: wp-cache.php:834 +msgid "" +"In ’Preload Mode’ regular garbage collection will only clean out " +"old legacy files for known users, not the preloaded supercache files. This " +"is a recommended setting when the cache is preloaded." +msgstr "" +"U ’Modu za učitavanje unapred (Preload Mode&)#8217; redovno " +"sakupljanje smeća će očistiti samo stare zaostale (legacy) fajlove, za " +"poznate korisnike., a ne unapred učitane superkeš fajlove. Ovo je " +"podrazumevano podešenje, onda kada se keš učitava unapred." + +#: wp-cache.php:838 +msgid "" +"Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d " +"minutes.)" +msgstr "" +"Osvežavati unapred učitane keš fajlove svakih %s minuta. (0 za " +"isključivanje, najmanje %d minuta.)" + +#: wp-cache.php:851 +msgid "all" +msgstr "sve" + +#: wp-cache.php:864 +msgid "Preload %s posts." +msgstr "Unapred učitati %s objava." + +#: wp-cache.php:871 +msgid "" +"Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "" +"Mod za učitavanje unapred (Preload mode) (sakupljanje smeća samo nad " +"zastarelim keš fajlovima. Preporučeno.)" + +#: wp-cache.php:874 +msgid "Preload tags, categories and other taxonomies." +msgstr "Unapred učitati oznake (tags), kategorije i druge taksonomije." + +#: wp-cache.php:877 +msgid "Send me status emails when files are refreshed." +msgstr "Slati mi e-mailove kada se fajlovi osvežavaju." + +#: wp-cache.php:882 +msgid "Many emails, 2 emails per 100 posts." +msgstr "Mnogo e-mailova, 2 e-maila na 100 objava." + +#: wp-cache.php:885 +msgid "Medium, 1 email per 100 posts." +msgstr "Srednje, 1 e-mail na 100 objava." + +#: wp-cache.php:888 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "" +"Manje e-mailova, 1 na početku i 1 na kraju prethodnog učitavanja svih objava." + +#: wp-cache.php:892 +msgid "Refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Osvežavanje keša za %d časova, %d minuta i %d sekundi." + +#: wp-cache.php:893 +msgid "Full refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Potpuno osvežavanje keša za %d časova, %d minuta i %d sekundi." + +#: wp-cache.php:899 +msgid "Currently caching from post %d to %d." +msgstr "Trenutno se keširaju objave od %d do %d." + +#: wp-cache.php:903 +msgid "Page last cached: %s" +msgstr "Poslednja keširana strana: %s" + +#: wp-cache.php:906 +msgid "Update Settings" +msgstr "Ažurirati podešenja" + +#: wp-cache.php:914 +msgid "" +"Preloading of cache disabled. Please disable legacy page caching or talk to " +"your host administrator." +msgstr "" +"Isključeno je učitavanje keša unapred. Molim vas, isključite keširanje " +"zastarelih strana, ili razgovarajte sa vašim hosting administratorom." + +#: wp-cache.php:931 wp-cache.php:1043 +msgid "Caching" +msgstr "Keširanje" + +#: wp-cache.php:935 +msgid "Cache hits to this website for quick access." +msgstr "Keš pogoci na ovom web sajtu, za brzi pristup." + +#: wp-cache.php:935 wp-cache.php:936 wp-cache.php:953 wp-cache.php:962 +#: wp-cache.php:969 wp-cache.php:972 wp-cache.php:990 wp-cache.php:1046 +msgid "Recommended" +msgstr "Preporučeno" + +#: wp-cache.php:936 +msgid "Use mod_rewrite to serve cache files." +msgstr "Koristiti mod_rewrite za serviranje keš fajlova." + +#: wp-cache.php:937 +msgid "Use PHP to serve cache files." +msgstr "Koristiti PHP za serviranje keš fajlova." + +#: wp-cache.php:938 +msgid "Legacy page caching." +msgstr "Staro keširanje strana (legacy page caching)." + +#: wp-cache.php:939 +msgid "" +"Mod_rewrite is fastest, PHP is almost as fast and easier to get working, " +"while legacy caching is slower again, but more flexible and also easy to get " +"working. New users should use PHP caching." +msgstr "" +"Mod_rewrite je najbrži, PHP je skoro isto tako brz, a jednostavniji za " +"stavljanje u rad, dok je, opet, staro keširanje (legacy caching) sporije, " +"ali je fleksibilnije i, takođe, jednostavnije za stavljanje u rad. Novi " +"korisnici bi trebalo da koriste PHP keširanje." + +#: wp-cache.php:945 +msgid "Miscellaneous" +msgstr "Razno" + +#: wp-cache.php:951 +msgid "Warning! Compression is disabled as gzencode() function not found." +msgstr "" +"Upozorenje! Kompresija je isključena, jer nije pronađena funkcija gzencode()." + +#: wp-cache.php:953 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "Komprimovati strane, tako da se brže serviraju posetiocima." + +#: wp-cache.php:954 +msgid "" +"Compression is disabled by default because some hosts have problems with " +"compressed files. Switching it on and off clears the cache." +msgstr "" +"Kompresija je u startu isključena, jer neki hostinzi imaju problema sa " +"komprimovanim fajlovima. Njeno uključivanje i isključivanje brišu keš." + +#: wp-cache.php:962 +msgid "" +"304 Not Modified browser caching. Indicate when a page has not been modified " +"since last requested." +msgstr "" +"304 Ne modifikovano (Not Modified) keširanje od strane pregledača. Ukazuje " +"kada strana nije izmenjena od poslednjeg zahteva." + +#: wp-cache.php:965 +msgid "" +"Warning! 304 browser caching is only supported when not using mod_rewrite " +"caching." +msgstr "" +"Upozorenje! 304 keširanje od strane pregledača je podržano samo kada se ne " +"koristi mod_rewrite keširanje." + +#: wp-cache.php:967 +msgid "" +"304 support is disabled by default because some hosts have had problems with " +"the headers used in the past." +msgstr "" +"Podrška za 304 je u startu isključena, jer neki hostinzi imaju problema sa " +"zaglavljima korišćenim u prošlosti." + +#: wp-cache.php:969 +msgid "" +"Don’t cache pages for known users." +msgstr "" +"Ne keširati strane za poznate korisnike." + +#: wp-cache.php:970 +msgid "Don’t cache pages with GET parameters. (?x=y at the end of a url)" +msgstr "Ne keširati strane sa GETparametrima. (?x=y, na kraju url-a)" + +#: wp-cache.php:971 +msgid "" +"Make known users anonymous so they’re served supercached static files." +msgstr "" +"Učiniti poznate korisnike anonimnim, tako da im se serviraju superkeširani " +"statički fajlovi." + +#: wp-cache.php:972 +msgid "" +"Cache rebuild. Serve a supercache file to anonymous users while a new file " +"is being generated." +msgstr "" +"Ponovna izgradnja keša. Servirati anonimnim korisnicima superkeširani fajl, " +"dok se generiše novi fajl." + +#: wp-cache.php:973 +msgid "" +"Proudly tell the world your server is
      Stephen Fry proof! " +"(places a message in your blog’s footer)" +msgstr "" +"Ponosno recite svetu da je vaš server Stephen Fry proof! " +"(postavlja poruku u podnožju vašeg bloga)" + +#: wp-cache.php:979 wp-cache.php:1256 wp-cache.php:1875 +msgid "Advanced" +msgstr "Napredno" + +#: wp-cache.php:983 +msgid "" +"Enable dynamic caching (mfunc, mclude, dynamic-cached-content). See the FAQ for " +"further details.)" +msgstr "" +"Uključiti dinamičko keširanje (mfunc, mclude, dynamic-cached-content). " +"Pogledajte često postavljana pitanja (FAQ) za više detalja.)" + +#: wp-cache.php:984 +msgid "" +"Mobile device support. (External plugin or theme required. See the FAQ for " +"further details.)" +msgstr "" +"Podrška za mobilne uređaje. (Potreban je spoljni dodatak, ili tema. " +"Pogledajte često postavljana pitanja (FAQ) za više detalja.)" + +#: wp-cache.php:986 +msgid "Mobile Browsers" +msgstr "Mobilni pregledači" + +#: wp-cache.php:986 +msgid "Mobile Prefixes" +msgstr "Mobilni prefiksi" + +#: wp-cache.php:988 +msgid "" +"Remove UTF8/blog charset support from .htaccess file. Only necessary if you " +"see odd characters or punctuation looks incorrect. Requires rewrite rules " +"update." +msgstr "" +"Ukloniti UTF8/blog karakter-set podršku iz .htaccess fajla. Potrebno je samo " +"ako vidite neobične karaktere, ili interpunkcija izgleda nepravilno. Zahteva " +"ažuriranje pravila ponovnog upisa (rewrite rules)." + +#: wp-cache.php:989 +msgid "Clear all cache files when a post or page is published or updated." +msgstr "" +"Obrisati sve keš fajlove, onda kada se objava ili strana objavi ili ažurira." + +#: wp-cache.php:990 +msgid "Extra homepage checks. (Very occasionally stops homepage caching)" +msgstr "" +"Dodatne provere početne strane. (Veoma retko zaustavlja keširanje početne " +"strane)" + +#: wp-cache.php:991 +msgid "Only refresh current page when comments made." +msgstr "Osvežiti aktuelnu stranu samo kada se ostave komentari." + +#: wp-cache.php:992 +msgid "List the newest cached pages on this page." +msgstr "Prikazati listu poslednjih keširanih strana na ovoj strani." + +#: wp-cache.php:994 +msgid "" +"Coarse file locking. You probably don’t need this but it may help if " +"your server is underpowered. Warning! May cause your server to lock up " +"in very rare cases!" +msgstr "" +"Grubo zaključavanje fajlova. Ovo vam verovatno ne treba, ali može pomoći ako " +"je vaš server slabijih mogućnosti. Upozorenje! U vrlo retkim slučajevima " +"može izazvati zaključavanje servera!" + +#: wp-cache.php:996 +msgid "" +"Late init. Display cached files after WordPress has loaded. Most useful in " +"legacy mode." +msgstr "" +"Kasna inicijalizacija. Prikazuje keširane fajlove nakon što se učita " +"WordPress. Najkorisnije u starom modu (legacy mode)." + +#: wp-cache.php:998 +msgid "Use object cache to store cached files." +msgstr "Koristiti objektni keš (object cache) za čuvaje keširanih fajlova." + +#: wp-cache.php:998 +msgid "(Experimental)" +msgstr "(Eksperimentalno)" + +#: wp-cache.php:1000 +msgid "DO NOT CACHE PAGE secret key: %s" +msgstr "NE KEŠIRATI STRANU tajni ključ: %s" + +#: wp-cache.php:1006 +msgid "Note:" +msgstr "Napomena:" + +#: wp-cache.php:1008 +msgid "" +"Uninstall this plugin on the plugins page. It will automatically clean up " +"after itself. If manual intervention is required then simple instructions " +"are provided." +msgstr "" +"De-instalirati ovaj dodatak na strani sa dodacima (plugins). On će " +"automatski počistiti za sobom. Ako je potrebna manuelna intervencija, " +"obezbedeđene su jednostavne instrukcije." + +#: wp-cache.php:1009 +msgid "" +"If uninstalling this plugin, make sure the directory %s is " +"writeable by the webserver so the files advanced-cache.php and " +"cache-config.php can be deleted automatically. (Making sure those " +"files are writeable too is probably a good idea!)" +msgstr "" +"Ako de-instalirate ovaj dodatak, postarajte se da u direktorijum %s " +"bude omogućen upis od strane web servera, tako da fajlovi advanced-cache." +"php i cache-config.php mogu automatski da budu obrisani. " +"(Osiguravanje da i u ove fajlove bude moguć upis je verovatno dobra ideja!)" + +#: wp-cache.php:1010 +msgid "" +"Please see the readme.txt for " +"instructions on uninstalling this script. Look for the heading, \"How to " +"uninstall WP Super Cache\"." +msgstr "" +"Molim vas, pogledajte readme.txt fajl, za instrukcije o de-instaliranju ove skripte. otražite naslov \"How " +"to uninstall WP Super Cache (Kako de-instalirati WP Super Cache)\"." + +#: wp-cache.php:1011 +msgid "" +"Need help? Check the Super Cache readme file. It " +"includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already " +"have been answered." +msgstr "" +"Treba vam pomoć? Pogledajte Super Cache readme fajl. On " +"uključuje instalacionu dokumentaciju, često postavljana pitanja (FAQ) i " +"savete za otklanjanje problema. Takođe je dostupan i forum " +"za podršku. Na vaše pitanje je možda već odgovoreno." + +#: wp-cache.php:1014 wp-cache.php:1061 +msgid "Update Status" +msgstr "Ažurirati status" + +#: wp-cache.php:1021 +msgid "Accepted Filenames & Rejected URIs" +msgstr "Prihvaćena imena fajlova i odbačeni URI-ji" + +#: wp-cache.php:1046 +msgid "Caching On" +msgstr "Keširanje uključeno" + +#: wp-cache.php:1047 +msgid "Caching Off" +msgstr "Keširanje isključeno" + +#: wp-cache.php:1048 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "" +"Napomena: uključuje PHP keširanje, ponovnu izgradnju keša i podršku za " +"mobilne uređaje" + +#: wp-cache.php:1058 +msgid "" +"Notice: PHP caching enabled but Supercache mod_rewrite rules detected. " +"Cached files will be served using those rules. If your site is working ok " +"please ignore this message or you can edit the .htaccess file in the root of " +"your install and remove the SuperCache rules." +msgstr "" +"Obratite pažnju: Uključeno je PHP keširanje, ali su pronađena Supercache " +"mod_rewrite pravila za ponovni upis. Keširani fajlovi će biti servirani " +"koristeći ta pravila. Ako vaš sajt dobro funkcioniše, molim vas, ignorišite " +"ovu poruku, ili možete urediti .htaccess fajl u osnovnom direktorijumu vaše " +"instalacije i ukloniti SuperCache pravila." + +#: wp-cache.php:1063 +msgid "Cache Tester" +msgstr "Proverivač keša" + +#: wp-cache.php:1064 +msgid "Test your cached website by clicking the test button below." +msgstr "Proverite svoj keširani web sajt, klikom na donje dugme za proveru." + +#: wp-cache.php:1070 +msgid "Fetching %s to prime cache: " +msgstr "Preuzimanje %s u primarni keš:" + +#: wp-cache.php:1072 wp-cache.php:1081 wp-cache.php:1093 +msgid "OK" +msgstr "U redu" + +#: wp-cache.php:1075 +msgid "Fetching first copy of %s: " +msgstr "Preuzimanje prve kopije %s:" + +#: wp-cache.php:1084 wp-cache.php:1095 +msgid "FAILED" +msgstr "NIJE USPELO" + +#: wp-cache.php:1087 +msgid "Fetching second copy of %s: " +msgstr "Preuzimanje druge kopije %s:" + +#: wp-cache.php:1099 +msgid "One or more page requests failed:" +msgstr "Jedan ili više zahteva za stranu nije uspelo:" + +#: wp-cache.php:1118 wp-cache.php:1119 +msgid "Page %d: %d (%s)" +msgstr "Strana %d: %d (%s)" + +#: wp-cache.php:1125 +msgid "Page 1: %s" +msgstr "Strana 1: %s" + +#: wp-cache.php:1126 +msgid "Page 2: %s" +msgstr "Strana 2: %s" + +#: wp-cache.php:1127 +msgid "The timestamps on both pages match!" +msgstr "Vremenske oznake (timestamps) na obe strane se podudaraju!" + +#: wp-cache.php:1129 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "" +"Strane se ne podudaraju! Vremenske oznake (timestamps) se razlikuju, ili " +"nisu pronađene!" + +#: wp-cache.php:1130 +msgid "Things you can do:" +msgstr "Stvari koje možete uraditi:" + +#: wp-cache.php:1131 +msgid "" +"Load your homepage in a logged out browser, check the timestamp at the end " +"of the html source. Load the page again and compare the timestamp. Caching " +"is working if the timestamps match." +msgstr "" +"Učitajte vašu početnu stranu u odjavljen pregledač i proverite vremensku " +"oznaku na kraju html izvornog koda. Učitajte istu stranu ponovo, i uporedite " +"vremensku oznaku. Keširanje funkcioniše ako se vremenske oznake podudaraju." + +#: wp-cache.php:1132 +msgid "" +"Enable logging on the Debug page here. That should help you track down the " +"problem." +msgstr "" +"Omogućiti prijavu na strani za otklanjanje programskih grešaka (Debugging " +"page), ovde. To bi trebalo da vam pomogne da pronađete problem." + +#: wp-cache.php:1133 +msgid "" +"You should check Page 1 and Page 2 above for errors. Your local server " +"configuration may not allow your website to access itself." +msgstr "" +"Trebalo bi da proverite ima li grešaka na strani 1 i strani 2, gore. " +"Konfiguracija vašeg lokalnog servera možda ne dozvoljava vašem web sajtu da " +"pristupa sam sebi." + +#: wp-cache.php:1141 +msgid "Send non-secure (non https) request for homepage" +msgstr "Slati neobezbeđene (koji nisu https) zahteve za početnu stranu" + +#: wp-cache.php:1142 +msgid "Test Cache" +msgstr "Proveriti keš" + +#: wp-cache.php:1146 +msgid "Delete Cached Pages" +msgstr "Obrisati keširane strane" + +#: wp-cache.php:1147 +msgid "" +"Cached pages are stored on your server as html and PHP files. If you need to " +"delete them use the button below." +msgstr "" +"Keširane strane se čuvaju na vašem serveru, kao html i PHP fajlovi. Ako " +"morate da ih obrišete, upotrebite donje dugme." + +#: wp-cache.php:1150 wp-cache.php:2416 wp-cache.php:2435 wp-cache.php:2606 +#: wp-cache.php:3141 +msgid "Delete Cache" +msgstr "Obrisati keš" + +#: wp-cache.php:1157 wp-cache.php:2422 +msgid "Delete Cache On All Blogs" +msgstr "Obrisati keš na svim blogovima" + +#: wp-cache.php:1162 +msgid "Recommended Links and Plugins" +msgstr "Preporučeni linkovi i dodaci" + +#: wp-cache.php:1163 +msgid "" +"Caching is only one part of making a website faster. Here are some other " +"plugins that will help:" +msgstr "" +"Keširanje je samo jedan deo ubrzavanja web sajta. Evo i nekih drugih " +"dodataka koji će pomoći:" + +#: wp-cache.php:1164 +msgid "" +"WPSCMin, a Supercache plugin that minifies cached pages " +"by removing whitespaces and extra characters " +msgstr "" +"WPSCMin, Supercache dodatak koji minimizira keširane " +"strane, uklanjajući prazan prostor i višak karaktera" + +#: wp-cache.php:1165 +msgid "" +"Yahoo! Yslow is an extension for the Firefox add-on " +"Firebug. It analyzes web pages and suggests ways to improve their " +"performance based on a set of rules for high performance web pages. Also try " +"the performance tools online at GTMetrix." +msgstr "" +"Yahoo! Yslow je proširenje za Firefox nadgradnju, " +"Firebug. Ono analizira web strane i predlaže načine za unapređivanje " +"njihovih performansi, prema pravilima za web strane visokih performansi. " +"Takođe probajte onlajn alate za performanse, na GTMetrix." + +#: wp-cache.php:1166 +msgid "" +"Use Google Libraries allows you to load some commonly " +"used Javascript libraries from Google webservers. Ironically it may reduce " +"your Yslow score." +msgstr "" +"Use Google Libraries vam omogućava da učitate neke često " +"korišćene Javascript biblioteke sa Google web servera. Ironija je što to " +"može umanjiti vaš Yslow rezultat." + +#: wp-cache.php:1168 +msgid "" +"Advanced users only: Speed up your site with " +"Caching and cache-control explains how to make your site more cacheable " +"with .htaccess rules." +msgstr "" +"Samo za napredne korisnike: Speed up your " +"site with Caching and cache-control (Ubrzajte vaš sajt pomoću keširanja i " +"kontrole keša) objašnjava kako da vaš sajt učinite pogodnijim za " +"keširanje, pomoću .htaccess pravila." + +#: wp-cache.php:1169 +msgid "" +"Advanced users only: Install an object cache. Choose from " +"Memcached, XCache, eAcccelerator and others." +msgstr "" +"Samo za napredne korisnike: Instalirajte neki objektni keš. " +"Odaberite između Memcached, XCache, eAcccelerator i drugih." + +#: wp-cache.php:1170 +msgid "" +"Cron View is a useful plugin to use when trying to debug " +"garbage collection and preload problems." +msgstr "" +"Cron View je koristan dodatak, za korišćenje onda kada " +"pokušavate da otklonite programske greške koje prave probleme sa uklanjanjem " +"smeća i učitavanjem unapred." + +#: wp-cache.php:1181 +msgid "Make WordPress Faster" +msgstr "Učinite WordPress bržim" + +#: wp-cache.php:1182 +msgid "" +"%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "%1$s je održavan i razvijen od strane %2$s, uz doprinos mnogih drugih." + +#: wp-cache.php:1183 +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "On bloguje na %1$s i objavljuje fotografije na %2$s." + +#: wp-cache.php:1184 +msgid "Please say hi to him on %s too!" +msgstr "Molim vas, pozdravite i njega, na %s!" + +#: wp-cache.php:1185 +msgid "Need Help?" +msgstr "Treba vam pomoć?" + +#: wp-cache.php:1187 +msgid "" +"Use the debug system in the Debug tab above. It will tell you what the " +"plugin is doing." +msgstr "" +"Koristite sistem za otklanjanje grešaka u gornjoj kartici Otklanjanje " +"grešaka (Debug). On će vam reći šta dodatak radi." + +#: wp-cache.php:1188 +msgid "Installation Help" +msgstr "Pomoć oko instalacije" + +#: wp-cache.php:1189 +msgid "Frequently Asked Questions" +msgstr "Često postavljana pitanja (FAQ)" + +#: wp-cache.php:1190 +msgid "Support Forum" +msgstr "forum za podršku" + +#: wp-cache.php:1191 +msgid "Development Version" +msgstr "razvojna verzija" + +#: wp-cache.php:1193 +msgid "Rate This Plugin!" +msgstr "Ocenite ovaj dodatak!" + +#: wp-cache.php:1194 +msgid "" +"Please rate this plugin and tell me if it works for you " +"or not. It really helps development." +msgstr "" +"Molim vas, ocenite ovaj dodatak i recite mi da li, u " +"vašem slučaju, funkcioniše, ili ne. Ovo stvarno pomaže razvoju." + +#: wp-cache.php:1203 +msgid "Cached pages since %1$s : %2$s" +msgstr "Keširano strana, od %1$s : %2$s" + +#: wp-cache.php:1204 +msgid "Newest Cached Pages:" +msgstr "Najnovije keširane strane:" + +#: wp-cache.php:1208 +msgid "Cached %s seconds ago" +msgstr "Keširano pre %s sekundi" + +#: wp-cache.php:1211 +msgid "(may not always be accurate on busy sites)" +msgstr "(može biti neprecizno kod opterećenih sajtova)" + +#: wp-cache.php:1227 +msgid "" +"Cache plugins are PHP scripts that live in a plugins folder inside the wp-" +"super-cache folder. They are loaded when Supercache loads, much sooner than " +"regular WordPress plugins." +msgstr "" +"Keš dodaci su PHP skripte koje se nalaze u folderu sa dodacima (plugins), " +"unutar wp-super-cache foldera. One se učitavaju kada se učitava Supercache, " +"mnogo pre nego obični WordPress dodaci." + +#: wp-cache.php:1228 +msgid "" +"This is strictly an advanced feature only and knowledge of both PHP and " +"WordPress actions is required to create them." +msgstr "" +"Ovo je, striktno, samo jedno napredno svojstvo, i potrebno je poznavanje i " +"PHP i WordPress akcija, da bi se ona kreirala." + +#: wp-cache.php:1229 +msgid "" +"Warning! Due to the way WordPress upgrades plugins the " +"plugins you upload to wp-super-cache/plugins/ will be deleted when you " +"upgrade WP Super Cache. You can avoid this by loading the plugins from " +"elsewhere. Set $wp_cache_plugins_dir to the new location in " +"wp-config.php and WP Super Cache will look there instead.
      More info " +"available in the developer documentation." +msgstr "" +"Upozorenje! Zbog načina na koji WordPress unapređuje " +"dodatke, dodaci koje prenesete u wp-super-cache/plugins/ će biti obrisani " +"kada unapredite WP Super Cache. Ovo možete izbeći učitavanjem dodataka sa " +"neke druge lokacije. U fajlu wp-config.php podesite " +"$wp_cache_plugins_dir na novu lokaciju, i WP Super Cache će tražiti " +"tu, umesto na staroj lokaciji.
      Više informacija je dostupno u dokumentaciji za " +"programere." + +#: wp-cache.php:1239 +msgid "Available Plugins" +msgstr "Raspoloživi dodaci" + +#: wp-cache.php:1256 +msgid "Easy" +msgstr "Jednostavno" + +#: wp-cache.php:1256 +msgid "CDN" +msgstr "CDN" + +#: wp-cache.php:1256 +msgid "Contents" +msgstr "Sadržaji" + +#: wp-cache.php:1256 +msgid "Preload" +msgstr "Učitavanje unapred" + +#: wp-cache.php:1256 +msgid "Plugins" +msgstr "Dodaci" + +#: wp-cache.php:1256 +msgid "Debug" +msgstr "Otklanjanje programskih grešaka" + +#: wp-cache.php:1291 +msgid "" +"Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "" +"Obratite pažnju: Provere WP Super Cache mod_rewrite pravila su iksljučene, " +"osim ako vam glavni sajt radi na ovoj mreži." + +#: wp-cache.php:1300 +msgid "Mod Rewrite Rules" +msgstr "Mod Rewrite pravila" + +#: wp-cache.php:1306 +msgid "WordPress MU Detected" +msgstr "Pronađen je WordPress MU" + +#: wp-cache.php:1306 +msgid "" +"Unfortunately the rewrite rules cannot be updated automatically when running " +"WordPress MU. Please open your .htaccess and add the following mod_rewrite " +"rules above any other rules in that file." +msgstr "" +"Na žalost, pravila za ponovni upis ne mogu da se ažuriraju automatski, kada " +"se koristi WordPress MU. Molim vas, otvorite .htaccess i dodajte sledeća " +"mod_rewrite pravila, iznad svih drugih pravila u tom fajlu." + +#: wp-cache.php:1308 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Mod Rewrite pravila ne mogu da se ažuriraju!" + +#: wp-cache.php:1309 +msgid "" +"You must have BEGIN and END markers in %s." +"htaccess for the auto update to work. They look like this and surround the " +"main WordPress mod_rewrite rules:" +msgstr "" +"Da bi automatsko ažuriranje funkcionisalo, morate imati BEGIN i END markere u %s.htaccess fajlu. Oni izgledaju " +"ovako, i okružuju glavna WordPress mod_rewrite pravila:" + +#: wp-cache.php:1311 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "Kada ažurirate vaš .htaccess fajl, osvežite ovu stranu." + +#: wp-cache.php:1315 +msgid "Thank you for upgrading." +msgstr "Hvala vam za unapređivanje." + +#: wp-cache.php:1315 +msgid "" +"The mod_rewrite rules changed since you last installed this plugin. " +"Unfortunately you must remove the old supercache rules before the new ones " +"are updated. Refresh this page when you have edited your .htaccess file. If " +"you wish to manually upgrade, change the following line: %1$s so it looks " +"like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" " +"and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change " +"but it’s backwards compatible with older versions if you’re " +"brave enough to use them." +msgstr "" +"Mod_rewrite pravila su se promenila od kada ste poslednji put instalirali " +"ovaj dodatak. Na žalost, morate ukloniti stara superkeš pravila pre nego se " +"nova ažuriraju. Kada završite uređivanje vašeg .htaccess fajla, osvežite ovu " +"stranu. Ako želite da uradite manuelno unapređivanje, izmenite sledeću " +"liniju: %1$s, da izgleda ovako: %2$s Jedine izmene su to što \"HTTP_COOKIE\" " +"postaje \"HTTP:Cookie\" i \"wordpressuser\" postaje \"wordpress\". Ovo je " +"WordPress 2.5 izmena, ali ona je komaptibilna unazad sa starijim verzijama, " +"ako ste dovoljno hrabri da ih koristite." + +#: wp-cache.php:1319 +msgid "Trailing slash check required." +msgstr "Potrebna je provera prateće kose crte." + +#: wp-cache.php:1319 +msgid "" +"It looks like your blog has URLs that end with a \"/\". Unfortunately since " +"you installed this plugin a duplicate content bug has been found where URLs " +"not ending in a \"/\" end serve the same content as those with the \"/\" and " +"do not redirect to the proper URL. To fix, you must edit your .htaccess file " +"and add these two rules to the two groups of Super Cache rules:" +msgstr "" +"Izgleda da vaš blog ima URL-ove koji završavaju sa \"/\". Na žalost, pošto " +"ste instalirali ovaj dodatak, programska greška sa dupliranim sadržajem se " +"pojavljuje tamo gde URL-ovi ne završavaju sa \"/\", i servira se isti " +"sadržaj kao za one sa \"/\", a ne vrši se usmeravanje na odgovarajući URL. " +"Da popravite ovo, morate urediti vaš .htaccess fajl, i dodati ova pravila " +"dvema grupama Super Cache pravila:" + +#: wp-cache.php:1321 +msgid "" +"You can see where the rules go and examine the complete rules by clicking " +"the \"View mod_rewrite rules\" link below." +msgstr "" +"Možete videti gde pravila idu, i ispitati kompletna pravila, klikom na donji " +"link \"Pregledati mod_rewrite pravila (View mod_rewrite rules)\"." + +#: wp-cache.php:1335 +msgid "Mod Rewrite rules updated!" +msgstr "Mod Rewrite pravila su ažurirana!" + +#: wp-cache.php:1336 +msgid "" +"%s.htaccess has been updated with the necessary mod_rewrite rules. Please " +"verify they are correct. They should look like this:" +msgstr "" +"%s.htaccess je dopunjen sa neophodnim mod_rewrite pravilima. Molim vas, " +"potvrdite da su ona ispravna. Trebalo bi da ovako izgledaju:" + +#: wp-cache.php:1338 +msgid "Mod Rewrite rules must be updated!" +msgstr "Mod Rewrite pravila moraju da budu ažurirana!" + +#: wp-cache.php:1339 +msgid "" +"Your %s.htaccess is not writable by the webserver and must be updated with " +"the necessary mod_rewrite rules. The new rules go above the regular " +"WordPress rules as shown in the code below:" +msgstr "" +"U vaš %s.htaccess fajl nije omogućen upis podataka od strane web servera, a " +"on se mora ažurirati sa neophodnim mod_rewrite pravilima. Nova pravila " +"dolaze iznad uobičajenih WordPress pravila, kao što je prikazano u donjem " +"kodu:" + +#: wp-cache.php:1344 +msgid "" +"WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have " +"upgraded the plugin make sure these rules match." +msgstr "" +"U vašem %s.htaccess fajlu su pronađena WP Super Cache mod rewrite pravila." +"
      Kliknite na sledeći link da vidite linije koje su dodate u taj fajl. " +"Ako ste unapredili dodatak, postarajte se da se ova pravila poklapaju." + +#: wp-cache.php:1347 +msgid "" +"A difference between the rules in your .htaccess file and the plugin rewrite " +"rules has been found. This could be simple whitespace differences but you " +"should compare the rules in the file with those below as soon as possible. " +"Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "" +"Pronađena je razlika između pravila u vašem .htaccess fajlu i pravila " +"dodatka, za ponovni upis. Ovo može biti jednostavno razlika u praznom " +"prostoru, ali bi što pre trebalo da uporedite pravila u fajlu sa ovim " +"donjim. Da ažurirate pravila, kliknite na dugme ’Ažurirati Mod_Rewrite " +"pravila (Update Mod_Rewrite Rules)’." + +#: wp-cache.php:1349 +msgid "View Mod_Rewrite Rules" +msgstr "Pregledati Mod_Rewrite pravila" + +#: wp-cache.php:1355 wp-cache.php:2722 +msgid "Rules must be added to %s too:" +msgstr "Pravila se takođe moraju dodati u %s:" + +#: wp-cache.php:1362 +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "U %s.htaccess fajlu su kreirana pravila za Gzip kodiranje." + +#: wp-cache.php:1369 +msgid "Fix Configuration" +msgstr "Popraviti konfiguraciju" + +#: wp-cache.php:1372 +msgid "Restore Default Configuration" +msgstr "Vratiti podrazumevanu konfiguraciju" + +#: wp-cache.php:1380 +msgid "" +"Comment moderation is enabled. Your comment may take some time to appear." +msgstr "" +"Uključena je moderacija komentara. Vašem komentaru može biti potrebno " +"određeno vreme da se pojavi." + +#: wp-cache.php:1405 +msgid "Lock Down:" +msgstr "Zaključati:" + +#: wp-cache.php:1406 +msgid "" +"Prepare your server for an expected spike in traffic by enabling the lock " +"down. When this is enabled, new comments on a post will not refresh the " +"cached static files." +msgstr "" +"Pripremite vaš server za neočekivani saobraćajni špic, omogućivši " +"zaključavanje. Kada je ono uključeno, novi komentari na objave neće " +"osvežavati keširane statičke fajlove." + +#: wp-cache.php:1407 +msgid "" +"Developers: Make your plugin lock down compatible by checking the " +"\"WPLOCKDOWN\" constant. The following code will make sure your plugin " +"respects the WPLOCKDOWN setting." +msgstr "" +"Programeri: Učinite vaš dodatak kompatibilnim sa zaključavanjem, čekiravši " +"\"WPLOCKDOWN\" konstantu. Sledeći kod će se postarati da vaš dodatak poštuje " +"WPLOCKDOWN podešenje." + +#: wp-cache.php:1409 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "" +"Žao mi je. Moj blog je zaključan. Ispravke/dopune će se pojaviti uskoro" + +#: wp-cache.php:1413 +msgid "" +"WordPress is locked down. Super Cache static files will not be deleted when " +"new comments are made." +msgstr "" +"WordPress je zaključan. Super Cache statički fajlovi se neće brisati kada se " +"postave novi komentari." + +#: wp-cache.php:1415 +msgid "" +"WordPress is not locked down. New comments will refresh Super Cache static " +"files as normal." +msgstr "" +"WordPress nije zaključan. Novi komentari će osvežavati Super Cache statičke " +"fajlove, kao i obično." + +#: wp-cache.php:1421 +msgid "Lock Down" +msgstr "Zaključati" + +#: wp-cache.php:1429 +msgid "Directly Cached Files" +msgstr "Direktno keširani fajlovi" + +#: wp-cache.php:1487 +msgid "%s removed!" +msgstr "%s uklonjeno!" + +#: wp-cache.php:1495 +msgid "" +"You must make %s writable to enable this feature. As this is a security risk " +"please make it readonly after your page is generated." +msgstr "" +"Morate omogućiti upis podataka u %s, da biste omogućili ovo svojstvo. Pošto " +"je to sigurnosni rizik, molim vas da ponovo onemogućite upis podataka u " +"fajl, nakon što se vaša strana generiše." + +#: wp-cache.php:1500 +msgid "" +"%s is writable. Please make it readonly after your page is generated as this " +"is a security risk." +msgstr "" +"U %s je moguć upis podataka. Molim vas, onemogućite upis podataka u ovaj " +"fajl, nakon što se generiše vaša strana, jer je to sigurnosni rizik." + +#: wp-cache.php:1515 +msgid "Existing direct page" +msgstr "Postojeća direktna strana" + +#: wp-cache.php:1515 +msgid "Delete cached file" +msgstr "Obrisati keširani fajl" + +#: wp-cache.php:1520 +msgid "Add direct page:" +msgstr "Dodati direktnu stranu:" + +#: wp-cache.php:1522 +msgid "" +"Directly cached files are files created directly off %s where your blog " +"lives. This feature is only useful if you are expecting a major Digg or " +"Slashdot level of traffic to one post or page." +msgstr "" +"Direktno keširani fajlovi se kreiraju direktno iz %s, gde se nalazi vaš " +"blog. Ovo svojstvo je korisno samo ako očekujete značajan nivo Digg ili " +"Slashdot saobraćaja ka jednoj objavi, ili strani." + +#: wp-cache.php:1524 +msgid "" +"For example: to cache %1$sabout/, you would enter %1$sabout/ or /" +"about/. The cached file will be generated the next time an anonymous user " +"visits that page." +msgstr "" +"Na primer: da keširate %1$sabout/, unećete %1$sabout/ ili /about/. " +"Keširani fajl će se generisati sledeći put kada anonimni posetilac poseti tu " +"stranu." + +#: wp-cache.php:1525 +msgid "" +"Make the textbox blank to remove it from the list of direct pages and delete " +"the cached file." +msgstr "" +"Ispraznite tekstualno polje, da ga uklonite sa liste direktnih strana, i " +"obrišete keširani fajl." + +#: wp-cache.php:1530 +msgid "Update Direct Pages" +msgstr "Ažurirati direktne strane" + +#: wp-cache.php:1558 +msgctxt "timezone date format" +msgid "Y-m-d G:i:s" +msgstr "Y-m-d (G-m-d) G:i:s" + +#: wp-cache.php:1620 +msgid "Expiry Time & Garbage Collection" +msgstr "Vreme isteka i sakupljanje smeća" + +#: wp-cache.php:1622 +msgid "" +"UTC time is %s" +msgstr "" +"UTC (usklađeno univerzalno vreme)" +" vreme je %s" + +#: wp-cache.php:1625 +msgid "Local time is %1$s" +msgstr "Lokalno vreme je %1$s" + +#: wp-cache.php:1629 +msgid "Next scheduled garbage collection will be at %s UTC" +msgstr "Sledeće zakazano sakupljanje smeća će biti u %s UTC" + +#: wp-cache.php:1633 +msgid "" +"Warning! PRELOAD MODE activated. Supercache files will not " +"be deleted regardless of age." +msgstr "" +"Upozorenje! PRELOAD MODE (mod za učitavanje unapred) je " +"aktiviran. Superkeš fajlovi se neće brisati, nevezano za starost." + +#: wp-cache.php:1650 +msgid "Cache Timeout" +msgstr "Vreme isteka keša" + +#: wp-cache.php:1651 wp-cache.php:1654 +msgid "seconds" +msgstr "sekundi" + +#: wp-cache.php:1652 +msgid "" +"How long should cached pages remain fresh? Set to 0 to disable garbage " +"collection. A good starting point is 3600 seconds." +msgstr "" +"Koliko dugo keširane strane treba da ostanu sveže? Da isključite sakupljanje " +"smeća, postavite vrednost 0. Dobra polazna tačka je 3600 sekundi." + +#: wp-cache.php:1653 +msgid "Scheduler" +msgstr "Planer" + +#: wp-cache.php:1653 +msgid "Timer:" +msgstr "Tajmer:" + +#: wp-cache.php:1654 +msgid "Check for stale cached files every interval seconds." +msgstr "" +"Tražiti keširane fajlove koji se ne koriste, svakih interval " +"sekundi." + +#: wp-cache.php:1655 +msgid "Clock:" +msgstr "Sat:" + +#: wp-cache.php:1656 +msgid "HH:MM" +msgstr "HH:MM" + +#: wp-cache.php:1656 +msgid "" +"Check for stale cached files at this time (UTC) or starting " +"at this time every interval below." +msgstr "" +"Tražiti keširane fajlove koji se ne koriste u ovo vreme (UTC), ili, počevši od ovog vremena, svakih interval nadalje." + +#: wp-cache.php:1658 +msgid "Interval:" +msgstr "Interval:" + +#: wp-cache.php:1664 +msgid "Notification Emails" +msgstr "E-mailovi sa obaveštenjima" + +#: wp-cache.php:1665 +msgid "Email me when the garbage collection runs." +msgstr "Obavestiti me e-mailom kada se pokrene sakupljanje smeća." + +#: wp-cache.php:1667 +msgid "Garbage Collection" +msgstr "Sakupljanje smeća" + +#: wp-cache.php:1668 +msgid "" +"Garbage collection is the simple act of throwing out your garbage. " +"For this plugin that would be old or stale cached files that may be " +"out of date. New cached files are described as fresh." +msgstr "" +"Sakupljanje smeća je jednostavno čin izbacivanja vašeg smeća. Za " +"ovaj dodatak, to bi bili stari, ili nekorišćeni keširani fajlovi " +"koji bi mogli biti zastareli. Novi keširani fajlovi se nazivaju svežim." + +#: wp-cache.php:1669 +msgid "" +"Cached files are fresh for a limited length of time. You can set that time " +"in the Cache Timeout text box on this page." +msgstr "" +"Keširani fajlovi ostaju sveži ograničeno vreme. To vreme možete podesiti u " +"tekstualnom polju Vreme isteka keša (Cache Timeout), na ovoj strani." + +#: wp-cache.php:1670 +msgid "" +"Stale cached files are not removed as soon as they become stale. They have " +"to be removed by the garbage collecter. That is why you have to tell the " +"plugin when the garbage collector should run." +msgstr "" +"Keširani fajlovi koji se ne koriste, ne uklanjaju se čim postanu \"ustajali" +"\". Njih mora da ukloni sakupljač smeća. Zato morate reći dodatku kada " +"sakupljač smeća treba da se pokrene." + +#: wp-cache.php:1671 +msgid "" +"Use the Timer or Clock schedulers to define when the " +"garbage collector should run." +msgstr "" +"Koristite planere Tajmer (Timer) ili Sat (Clock), da " +"definišete kada sakupljač smeća treba da se pokrene." + +#: wp-cache.php:1672 +msgid "" +"The Timer scheduler tells the plugin to run the garbage collector " +"at regular intervals. When one garbage collection is done, the next run is " +"scheduled." +msgstr "" +"Tajmer (Timer) planer govori dodatku da pokreće sakupljač smeća u " +"pravilnim intervalima. Kada jedan sakupljač smeća završi sa radom, zakazuje " +"se sledeće pokretanje." + +#: wp-cache.php:1673 +msgid "" +"Or, the Clock scheduler allows the garbage collection to run at " +"specific times. If set to run hourly or twicedaily the garbage collector " +"will be first scheduled for the time you enter here. It will then run again " +"at the indicated interval. If set to run daily it will run once a day at the " +"time specified." +msgstr "" +"Ili, Sat (Clock) planer, koji omogućava da se sakupljač smeća " +"pokreće u određeno vreme. Ako je podešen da radi na svaki sat, ili dva puta " +"na dan, pokretanje sakupljača smeća će prvo biti zakazano u vreme koje " +"unesete ovde. Nakon toga će biti pokretan u navedenim intervalima. Ako je " +"podešen da se pokreće jednom dnevno, on će se pokretati jednom dnevno - u " +"navedeno vreme." + +#: wp-cache.php:1675 +msgid "" +"There are no best garbage collection settings but here are a few scenarios. " +"Garbage collection is separate to other actions that clear our cached files " +"like leaving a comment or publishing a post." +msgstr "" +"Ne postoje najbolja podešenja za sakupljanje smeća, ali evo nekoliko " +"scenarija. Sakupljanje smeća je odvojeno od drugih akcija koje brišu " +"keširane fajlove, kao što je ostavljanje komentara, ili objavljivanje objave." + +#: wp-cache.php:1677 +msgid "" +"Sites that want to serve lots of newly generated data should set the " +"Cache Timeout to 60 and use the Timer scheduler set to 90 " +"seconds." +msgstr "" +"Sajtovi koji žele da pruže dosta novo generisanih podataka, treba da podese " +"Vreme isteka keša (Cache Timeout) na 60, i da koriste Tajmer " +"(Timer), podešen na 90 sekundi." + +#: wp-cache.php:1678 +msgid "" +"Sites with widgets and rss feeds in their sidebar should probably use a " +"timeout of 3600 seconds and set the timer to 600 seconds. Stale files will " +"be caught within 10 minutes of going stale." +msgstr "" +"Sajtovi sa vidžetima i sa rss tokovima u svojoj bočnoj traci, verovatno " +"treba da koriste vreme isteka od 3600 sekundi, i da podese tajmer na 600 " +"sekundi. Fajlovi koji se ne koriste će se uhvatiti u roku od 10 minuta, od " +"kako postanu \"ustajali\"." + +#: wp-cache.php:1679 +msgid "" +"Sites with lots of static content, no widgets or rss feeds in their sidebar " +"can use a timeout of 86400 seconds or even more and set the timer to " +"something equally long." +msgstr "" +"Sajtovi sa dosta statičkog sadržaja, bez vidžeta i rss tokova u svojoj " +"bočnoj traci, mogu da koriste vreme isteka od 86400 sekundi, pa čak i više, " +"i da podese tajmer na neko podjednako dugo vreme." + +#: wp-cache.php:1680 +msgid "" +"Sites where an external data source updates at a particular time every day " +"should set the timeout to 86400 seconds and use the Clock scheduler set " +"appropriately." +msgstr "" +"Sajtovi čiji se neki spoljni izvor podataka ažurira svakog dana u isto " +"vreme, treba da podese vreme isteka na 86400 sekundi, i da koriste Sat " +"(Clock) planer u skladu sa tim." + +#: wp-cache.php:1682 +msgid "" +"Checking for and deleting expired files is expensive, but it’s " +"expensive leaving them there too. On a very busy site you should set the " +"expiry time to 600 seconds. Experiment with different values and " +"visit this page to see how many expired files remain at different times " +"during the day. If you are using legacy caching aim to have less than 500 " +"cached files if possible. You can have many times more cached files when " +"using mod_rewrite or PHP caching." +msgstr "" +"Traženje i brisanje isteklih fajlova je skupo, ali je takođe skupo " +"ostavljati ih gde jesu. Na veoma posećenom sajtu, trebalo bi da podesite " +"vreme isteka na 600 sekundi. Eksperimentišite sa različitim " +"vrednostima i posećujte ovu stranu, da vidite koliko isteklih fajlova ostaje " +"u različito vreme, tokom dana. Ako koristite staro keširanje (legacy " +"caching), ciljajte na to da imate manje od 500 keširanih fajlova, ako je to " +"moguće. Kada koristite mod_rewrite ili PHP keširanje, možete imati mnogo " +"više keširanih fajlova." + +#: wp-cache.php:1683 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "Da isključite sakupljanje smeća, podesite vreme isteka na 0 sekundi." + +#: wp-cache.php:1684 +msgid "Change Expiration" +msgstr "Izmeniti isticanje" + +#: wp-cache.php:1728 +msgid "Rejected User Agents" +msgstr "Odbačeni korisnički agenti" + +#: wp-cache.php:1729 +msgid "" +"Strings in the HTTP ’User Agent’ header that prevent WP-Cache " +"from caching bot, spiders, and crawlers’ requests. Note that super " +"cached files are still sent to these agents if they already exists." +msgstr "" +"Stringovi u HTTP ’User Agent’ zaglavlju, koji sprečavaju WP-" +"Cache da kešira zahteve botova, tragača (spiders) i pretraživača (crawlers). " +"Imajte na umu da se superkeširani fajlovi i dalje šalju ovim agentima, ako " +"već postoje." + +#: wp-cache.php:1736 +msgid "Save UA Strings" +msgstr "Sačuvati UA stringove" + +#: wp-cache.php:1759 +msgid "" +"Do not cache the following page types. See the Conditional Tags documentation for a " +"complete discussion on each type." +msgstr "" +"Ne keširati sledeće tipove strana. Pogledajte dokumentaciju o Uslovnim tagovima " +"(Conditional Tags), za kompletnu diskusiju o svakom tipu." + +#: wp-cache.php:1762 +msgid "Single Posts" +msgstr "Pojedinačne objave" + +#: wp-cache.php:1763 +msgid "Pages" +msgstr "Strane" + +#: wp-cache.php:1764 +msgid "Front Page" +msgstr "Prva strana" + +#: wp-cache.php:1765 +msgid "Home" +msgstr "Početna strana" + +#: wp-cache.php:1766 +msgid "Archives" +msgstr "Arhive" + +#: wp-cache.php:1767 +msgid "Tags" +msgstr "Oznake (tags)" + +#: wp-cache.php:1768 +msgid "Category" +msgstr "Kategorija" + +#: wp-cache.php:1769 +msgid "Feeds" +msgstr "Izvori podataka (feeds)" + +#: wp-cache.php:1770 +msgid "Search Pages" +msgstr "Strane za pretragu" + +#: wp-cache.php:1771 +msgid "Author Pages" +msgstr "Strane o autorima" + +#: wp-cache.php:1773 wp-cache.php:1885 +msgid "Save" +msgstr "Sačuvati" + +#: wp-cache.php:1790 +msgid "" +"Add here strings (not a filename) that forces a page not to be cached. For " +"example, if your URLs include year and you dont want to cache last year " +"posts, it’s enough to specify the year, i.e. ’/2004/’. WP-" +"Cache will search if that string is part of the URI and if so, it will not " +"cache that page." +msgstr "" +"Ovde dodajte stringove (ne ime fajla), koji forsiraju da strana ne bude " +"keširana. Na primer, ako vaši URL-ovi uključuju godinu, a ne želite da " +"keširate prošlogodišnje objave, dovoljno je navesti godinu, npr. " +"’/2004/’. WP-Cache će tražiti da li je taj string deo URI-ja, i " +"ako jeste, neće keširati tu stranu." + +#: wp-cache.php:1796 +msgid "Save Strings" +msgstr "Sačuvati stringove" + +#: wp-cache.php:1812 +msgid "" +"Add here those filenames that can be cached, even if they match one of the " +"rejected substring specified above." +msgstr "" +"Ovde dodajte imena fajlova koji mogu da se keširaju, čak i ako sadrže neki " +"od gornjih stringova za odbacivanje." + +#: wp-cache.php:1818 +msgid "Save Files" +msgstr "Sačuvati fajlove" + +#: wp-cache.php:1859 +msgid "Currently logging to: %s" +msgstr "Trenutno se prijavljuje na: %s" + +#: wp-cache.php:1862 +msgid "" +"Fix problems with the plugin by debugging it here. It can log them to a file " +"in your cache directory." +msgstr "" +"Rešava probleme sa dodatkom, otklanjajući ovde programske greške. Može " +"napraviti dnevnički zapis o njima u vašem keš direktorijumu." + +#: wp-cache.php:1866 +msgid "Debugging" +msgstr "Otklanjanje programskih grešaka" + +#: wp-cache.php:1867 +msgid "IP Address" +msgstr "IP adrese" + +#: wp-cache.php:1867 +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(zahtevi za logove samo sa ove IP adrese. Vaša IP adresa je %s)" + +#: wp-cache.php:1868 +msgid "Cache Status Messages" +msgstr "Poruke o statusu keša" + +#: wp-cache.php:1869 +msgid "Display comments at the end of every page like this:" +msgstr "Prikazivati komentare na kraju svake strane, ovako:" + +#: wp-cache.php:1875 +msgid "" +"In very rare cases two problems may arise on some blogs:

      1. The front " +"page may start downloading as a zip file.
      2. The wrong page is " +"occasionally cached as the front page if your blog uses a static front page " +"and the permalink structure is /%category%/%postname%/.
      " +msgstr "" +"U veoma retkim slučajevima, na nekim blogovima se mogu pojaviti dva problema:" +"
      1. Prva strana može da počne da se preuzima kao zip fajl.
      2. " +"Povremeno se kao prva strana kešira pogrešna strana, ako vaš blog koristi " +"statičnu prvu stranu, a permalink struktura teme je /%category%/%postname" +"%/.
      " + +#: wp-cache.php:1876 +msgid "" +"I’m 99% certain that they aren’t bugs in WP Super Cache and they " +"only happen in very rare cases but you can run a simple check once every 5 " +"minutes to verify that your site is ok if you’re worried. You will be " +"emailed if there is a problem." +msgstr "" +"99% sam siguran da to nisu programske greške u WP Super Cache-u, i do njih " +"dolazi samo u veoma retkim slučajevima, ali možete pokrenuti jednostavnu " +"proveru svakih 5 minuta, da potvrdite da je vaš sajt u redu, ako ste " +"zabrinuti. Biće vam poslat e-mail ako bude problema." + +#: wp-cache.php:1878 +msgid "Check front page every 5 minutes." +msgstr "Proveravati prvu stranu svakih 5 minuta." + +#: wp-cache.php:1879 +msgid "Front page text" +msgstr "Tekst prve strane" + +#: wp-cache.php:1879 +msgid "" +"Text to search for on your front page. If this text is missing the cache " +"will be cleared. Leave blank to disable." +msgstr "" +"Tekst za traženje na prvoj strani. Ako ovaj tekst nedostaje, keš će biti " +"obrisa. Da isključite, ostavite prazno." + +#: wp-cache.php:1880 +msgid "Clear cache on error." +msgstr "Obrisati keš u slučaju greške." + +#: wp-cache.php:1881 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "" +"Poslati e-amil administratoru bloga, kada se urade provere. (korisno za " +"proveru)" + +#: wp-cache.php:1895 +msgid "" +"Error: GZIP compression is enabled, disable it if you want to enable wp-" +"cache." +msgstr "" +"Greška: GZIP kompresija je uključena, isključite je ako hoćete da uključite " +"wp-cache." + +#: wp-cache.php:1945 wp-cache.php:2086 wp-cache.php:2122 +msgid "Warning" +msgstr "Upozorenje" + +#: wp-cache.php:1945 +msgid "" +"GZIP compression is enabled in WordPress, wp-cache will be bypassed until " +"you disable gzip compression." +msgstr "" +"GZIP kompresija je uključena u WordPress-u, wp-cache će biti zaobilažen dok " +"ne isključite gzip kompresiju." + +#: wp-cache.php:2007 wp-cache.php:2012 wp-cache.php:2045 wp-cache.php:2050 +#: wp-cache.php:2056 +msgid "Error" +msgstr "Greška" + +#: wp-cache.php:2007 +msgid "" +"Your cache directory (%1$s) did not exist and couldn’" +"t be created by the web server. Check %1$s permissions." +msgstr "" +"Vaš keš direktorijum (%1$s) ne postoji, i nije mogao da " +"bude kreiran od strane web servera. Proverite %1$-ove dozvole." + +#: wp-cache.php:2012 +msgid "" +"Your cache directory (%1$s) or %2$s need " +"to be writable for this plugin to work. Double-check it." +msgstr "" +"Upis u vaš keš direktorijum (%1$s), ili %2$s, mora da bude omogućen da bi ovaj dodatak funkcionisao. Proverite ga " +"dva puta." + +#: wp-cache.php:2045 +msgid "" +"Your WP-Cache config file (%s) is out of date and not " +"writable by the Web server.Please delete it and refresh this page." +msgstr "" +"Vaš WP-Cache konfiguracioni fajl (%s) je star i web server " +"ne može da vrši upis u njega. Molim vas, obrišite ga i osvežite ovu stranu." + +#: wp-cache.php:2050 +msgid "" +"Configuration file missing and %1$s directory (%2$s) is " +"not writable by the Web server.Check its permissions." +msgstr "" +"Konfiguracioni fajl nedostaje, a u %1$-ov direktorijum (%2$s) nije moguć upis podataka od strane web servera. Proverite njegove " +"dozvole." + +#: wp-cache.php:2056 +msgid "" +"Sample WP-Cache config file (%s) does not exist.Verify you " +"installation." +msgstr "" +"WP-Cache konfiguracioni fajl - primer (%s) ne postoji. " +"Proverite vašu instalaciju." + +#: wp-cache.php:2086 +msgid "Could not update %s!
      WPCACHEHOME must be set in config file." +msgstr "" +"%s nije mogao da se ažurira! WPCACHEHOME mora da se podesi u " +"konfiguracionom fajlu." + +#: wp-cache.php:2122 +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "%s/advanced-cache.php ne postoji i ne može da se ažurira." + +#: wp-cache.php:2123 +msgid "1. If it already exists please delete the file first." +msgstr "1. Ako već postoji, molim vas da ga prvo obrišete." + +#: wp-cache.php:2124 +msgid "" +"2. Make %1$s writable using the chmod command through your ftp or server " +"software. (chmod 777 %1$s) and refresh this page. This is only a " +"temporary measure and you’ll have to make it read only afterwards " +"again. (Change 777 to 755 in the previous command)" +msgstr "" +"2. Omogućite upis podataka u %s-e, koristeći naredbu chmod, preko vašeg ftp, " +"ili serverskog softvera. (chmod 777 %1$s) i osvežite ovu stranu. " +"Ovo je samo privremena mera, i moraćete posle da opet onemogućite upis u " +"njega. (U prethodnoj naredbi promenite 777 u 755)" + +#: wp-cache.php:2125 +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. Osvežite ovu stranu da ažurirate %s/advanced-cache.php" + +#: wp-cache.php:2126 +msgid "" +"If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "" +"Ako to ne funkcioniše, proverite da li fajl %s/advanced-cache.php " +"postoji:" + +#: wp-cache.php:2127 +msgid "" +"
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change " +"the text CACHEHOME to %2$s
    • 3. Save the file and " +"copy it to %3$s and refresh this page.
    • " +msgstr "" +"
    • 1. Otvorite fajl %1$s$wp_cache_file u nekom uređivaču teksta.
    • 2. Izmenite tekst CACHEHOME u %2$s
    • 3. " +"Sačuvajte fajl i kopirajte ga u %3$s, a zatim osvežite ovu stranu." + +#: wp-cache.php:2150 +msgid "" +"

      WP_CACHE constant set to false

      The WP_CACHE constant is used by " +"WordPress to load the code that serves cached pages. Unfortunately it is set " +"to false. Please edit your wp-config.php and add or edit the following line " +"above the final require_once command:

      define('WP_CACHE', " +"true);

      " +msgstr "" +"

      WP_CACHE konstanta je podešena na vrednost false

      WP_CACHE " +"konstantu WordPress koristi da učita kod koji servira keširane strane. Na " +"žalost, ona je podešena na vrednost false. Molim vas, uredite vaš wp-config." +"php fajl i dodajte ili uredite sledeće linije, iznad završne naredbe " +"require_once:

      define('WP_CACHE', true);

      " + +#: wp-cache.php:2152 +msgid "" +"Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "" +"Greška: WP_CACHE nije uključen u vašem wp-config.php fajlu, i ne mogu da ga izmenim." + +#: wp-cache.php:2153 +msgid "" +"Edit %s and add the following line:
      define" +"('WP_CACHE', true);
      Otherwise, WP-Cache will not be " +"executed by WordPress core. " +msgstr "" +"Uredite %s i dodajte sledeću liniju:
      define" +"('WP_CACHE', true);
      U suprotnom, WP-Cache se neće " +"izvršiti od strane WordPress jezgra. " + +#: wp-cache.php:2157 +msgid "" +"

      WP_CACHE constant added to wp-config.php

      If you continue to see " +"this warning message please see point 5 of the Troubleshooting Guide. The " +"WP_CACHE line must be moved up." +msgstr "" +"

      WP_CACHE konstanta je dodata u wp-config.php

      Ako i dalje budete " +"videli ovu poruku sa upozorenjem, molim vas, pogledajte tačku 5 Vodiča za " +"otklanjanje problema (Troubleshooting Guide). WP_CACHE linija se mora " +"pomeriti na gore." + +#: wp-cache.php:2185 +msgid "Cache Contents" +msgstr "Sadržaj keša" + +#: wp-cache.php:2188 +msgid "Object cache in use. No cache listing available." +msgstr "U upotrebi je objektni keš. Nije dostupan listing keša." + +#: wp-cache.php:2212 +msgid "Deleting supercache file: %s
      " +msgstr "Brisanje superkeš fajla: %s
      " + +#: wp-cache.php:2229 +msgid "Deleting wp-cache file: %s
      " +msgstr "Brisanje wp-cache fajla: %s
      " + +#: wp-cache.php:2294 +msgid "" +"Cache stats are not automatically generated. You must click the link below " +"to regenerate the stats on this page." +msgstr "" +"Statistike keša se ne generišu automatski. Morate kliknuti na donji link da " +"na ovoj strani generišete statistike." + +#: wp-cache.php:2295 +msgid "Regenerate cache stats" +msgstr "Ponovo generisati statistike keša" + +#: wp-cache.php:2297 +msgid "Cache stats last generated: %s minutes ago." +msgstr "Poslednje generisanje statistika keša: pre %s minuta." + +#: wp-cache.php:2303 +msgid "WP-Cache" +msgstr "WP-Cache" + +#: wp-cache.php:2304 wp-cache.php:2319 +msgid "%s Cached Pages" +msgstr "%s keširanih strana" + +#: wp-cache.php:2305 wp-cache.php:2324 +msgid "%s Expired Pages" +msgstr "%s isteklih strana" + +#: wp-cache.php:2318 +msgid "WP-Super-Cache" +msgstr "WP-Super-Cache" + +#: wp-cache.php:2328 +msgid "Fresh WP-Cached Files" +msgstr "Sveži WP-Cache fajlovi" + +#: wp-cache.php:2329 wp-cache.php:2345 wp-cache.php:2361 wp-cache.php:2377 +msgid "URI" +msgstr "URI" + +#: wp-cache.php:2329 wp-cache.php:2345 +msgid "Key" +msgstr "Ključ" + +#: wp-cache.php:2329 wp-cache.php:2345 wp-cache.php:2361 wp-cache.php:2377 +msgid "Age" +msgstr "Starost" + +#: wp-cache.php:2329 wp-cache.php:2345 wp-cache.php:2361 wp-cache.php:2377 +msgid "Delete" +msgstr "Obrisati" + +#: wp-cache.php:2344 +msgid "Stale WP-Cached Files" +msgstr "WP-keširani fajlovi koji se ne koriste" + +#: wp-cache.php:2360 +msgid "Fresh Super Cached Files" +msgstr "Sveži superkeširani fajlovi" + +#: wp-cache.php:2376 +msgid "Stale Super Cached Files" +msgstr "Superkeširani fajlovi koji se ne koriste" + +#: wp-cache.php:2392 +msgid "Hide file list" +msgstr "Sakriti listu fajlova" + +#: wp-cache.php:2394 +msgid "Too many cached files, no listing possible." +msgstr "Previše keširanih fajlova, nije moguć prikaz liste" + +#: wp-cache.php:2396 +msgid "List all cached files" +msgstr "Prikazati listu svih keširanih fajlova" + +#: wp-cache.php:2399 +msgid "" +"Expired files are files older than %s seconds. They are still used by the " +"plugin and are deleted periodically." +msgstr "" +"Istekli fajlovi su stariji od %s sekundi. Oni se i dalje koriste od strane " +"dodatka, i brišu se periodično." + +#: wp-cache.php:2410 +msgid "Delete Expired" +msgstr "Obrisati isteklo" + +#: wp-cache.php:2435 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Obrisati Super Cache keširane fajlove (otvara se u novom prozoru)" + +#: wp-cache.php:2582 +msgid "%1$s is Stephen Fry proof thanks to caching by %2$s" +msgstr "" +"%1$s je Stephen Fry proveren (Stephen Fry proof), zahvaljujući keširanju od " +"strane %2$s" + +#: wp-cache.php:2615 +msgid "" +"WP Super Cache must be configured. Go to the admin page " +"to enable and configure the plugin." +msgstr "" +"WP Super Cache mora biti konfigurisan. Idite na stranu za " +"administraciju, da uključite i konfigurišete ovaj dodatak." + +#: wp-cache.php:2621 +msgid "Settings" +msgstr "Podešavanja" + +#: wp-cache.php:2631 +msgid "" +"WP Super Cache is disabled. Please go to the plugin admin " +"page to enable caching." +msgstr "" +"WP Super Cache je isključen. Molim vas, idite na stranu za " +"administraciju dodataka, da omogućite keširanje." + +#: wp-cache.php:2634 +msgid "" +"Warning! WP Super Cache caching broken! The script advanced-cache.php could " +"not load wp-cache-phase1.php.

      Please edit %1$s/advanced-cache.php " +"and make sure the path to %2$swp-cache-phase1.php is correct." +msgstr "" +"Upozorenje! WP Super Cache keširanje je neispravno! Skriptin fajl advanced-" +"cache.php nije mogao da učita wp-cache-phase1.php.

      Molim vas, " +"uredite %1$s/advanced-cache.php fajl i postarajte se da putanja ka %2$swp-" +"cache-phase1.php fajlu bude ispravna." + +#: wp-cache.php:2653 +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] Prva strana je gzip-ovana! Molim vas, obrišite keš!" + +#: wp-cache.php:2653 +msgid "" +"Please visit %s to clear the cache as the front page of your site is now " +"downloading!" +msgstr "" +"Molim vas, posetite %s da obrišete keš, pošto se prva strana vašeg sajta " +"sada preuzima." + +#: wp-cache.php:2656 +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] Prva strana je gzip-ovana! Keš je obrisan!" + +#: wp-cache.php:2656 +msgid "" +"The cache on your blog has been cleared because the front page of your site " +"is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "" +"Keš na vašem blogu je obrisan, pošto se prva strana vašeg sajta sada " +"preuzima. Molim vas, posetite %s, da potvrdite da je keš obrisan." + +#: wp-cache.php:2663 +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] Prva strana nije ispravna! Molim vas, obrišite keš!" + +#: wp-cache.php:2663 +msgid "" +"Please visit %1$s to clear the cache as the front page of your site is not " +"correct and missing the text, \"%2$s\"!" +msgstr "" +"Molim vas, posetite %1$s da obrišete keš, pošto prva strana vašeg sajta nije " +"ispravna, i nedostaje joj tekst, \"%2$s\"!" + +#: wp-cache.php:2666 +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] Prva strana nije ispravna! Keš je obrisan!" + +#: wp-cache.php:2666 +msgid "" +"The cache on your blog has been cleared because the front page of your site " +"is missing the text \"%2$s\". Please visit %1$s to verify the cache has been " +"cleared." +msgstr "" +"Keš na vašem blogu je obrisan, pošto na prvoj strani vašeg sajta nedostaje " +"tekst \"%2$s\". Molim vas, posetite %1$s, da potvrdite da je keš obrisan." + +#: wp-cache.php:2671 +msgid "[%s] Front page check!" +msgstr "[%s] Provera prve strane!" + +#: wp-cache.php:2671 +msgid "" +"WP Super Cache has checked the front page of your blog. Please visit %s if " +"you would like to disable this." +msgstr "" +"WP Super Cache je proverio prvu stranu vašeg bloga. Molim vas, posetite %s, " +"ako želite da ovo isključite." + +#: wp-cache.php:2714 +msgid "Cannot update .htaccess" +msgstr "Fajl .htaccess ne može da se ažurira" + +#: wp-cache.php:2714 +msgid "" +"The file %s.htaccess cannot be modified by the web server. " +"Please correct this using the chmod command or your ftp client." +msgstr "" +"Fajl %s.htaccess nije mogao da bude izmenjen od strane web " +"servera. Molim vas, ispravite ovo, koristeći naredbu chmod, ili vaš ftp " +"klijent." + +#: wp-cache.php:2714 +msgid "Refresh this page when the file permissions have been modified." +msgstr "Osvežiti ovu stranu kada se dozvole fajla izmene." + +#: wp-cache.php:2714 +msgid "" +"Alternatively, you can edit your %s.htaccess file manually and " +"add the following code (before any WordPress rules):" +msgstr "" +"Alternativno, možete manuelno urediti vaš fajl %s.htaccess, i " +"dodati sledeći kod (pre bilo kakvih WordPress pravila):" + +#: wp-cache.php:2718 +msgid "" +"To serve static html files your server must have the correct mod_rewrite " +"rules added to a file called %s.htaccess" +msgstr "" +"Da bi servirao statičke html fajlove, vaš server mora imati ispravna " +"mod_rewrite pravila, dodata u fajl pod nazivom %s.htaccess" + +#: wp-cache.php:2719 +msgid "You can edit the file yourself add the following rules." +msgstr "Možete sami urediti fajl, dodajte sledeća pravila." + +#: wp-cache.php:2720 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr "" +"Postarajte se da se ona pojave pre bilo kakvih postojećih WordPress pravila." + +#: wp-cache.php:2728 +msgid "Update Mod_Rewrite Rules" +msgstr "Ažurirati Mod_Rewrite pravila" + +#: wp-cache.php:2891 +msgid "[%1$s] Cache Preload Started" +msgstr "[%1$s] Učitavanje keša unapred je počelo" + +#: wp-cache.php:2921 +msgid "[%1$s] Refreshing %2$s taxonomy from %3$d to %4$d" +msgstr "[%1$s] Osvežavanje %2$s taksonomije od %3$d do %4$d" + +#: wp-cache.php:2967 +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] Osvežavanje objava od %2$d do %3$d" + +#: wp-cache.php:2988 +msgid "[%1$s] Cache Preload Stopped" +msgstr "[%1$s] Učitavanje keša unapred je zaustavljeno" + +#: wp-cache.php:2998 +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s] %2$d objava je osveženo" + +#: wp-cache.php:2998 +msgid "Refreshed the following posts:" +msgstr "Osvežene su sledeće objave:" + +#: wp-cache.php:3008 +msgid "Scheduling next preload refresh in %d minutes." +msgstr "Sledeće osvežavanje učitavanja unapred se zakazuje za %d minuta" + +#: wp-cache.php:3019 +msgid "[%s] Cache Preload Completed" +msgstr "[%s] Učitavanje keša unapred je završeno" + +#: wp-cache.php:3019 +msgid "Cleaning up old supercache files." +msgstr "Brisanje starih superkeš fajlova." + +#: wp-cache.php:3062 +msgid "[%s] Preload may have stalled." +msgstr "[%s] Učitavanje unapred je možda zastalo." + +#: wp-cache.php:3062 +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"Učitavanje unapred je ponovo započeto.\n" +"%s" + +#: wp-cache.php:3105 +msgid "Supercache Uninstall Problems" +msgstr "Problemi sa de-instaliranjem Supercache-a" + +#: wp-cache.php:3105 +msgid "" +"Dear User,\n" +"\n" +"WP Super Cache was removed from your blog but the mod_rewrite rules\n" +"in your .htaccess were not.\n" +"\n" +"Please edit the following file and remove the code\n" +"between 'BEGIN WPSuperCache' and 'END WPSuperCache'. Please backup the file " +"first!\n" +"\n" +"%s\n" +"\n" +"Regards,\n" +"WP Super Cache Plugin\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" +msgstr "" +"Dragi korisniče,\n" +"\n" +"WP Super Cache je uklonjen sa vašeg bloga, ali mod_rewrite pravila\n" +"u vašem .htaccess nisu.\n" +"\n" +"Molim vas, uredite sledeći fajl i uklonite kod\n" +"između 'BEGIN WPSuperCache' i 'END WPSuperCache'. Molim vas, prvo napravite " +"backup kopiju fajla!\n" +"\n" +"%s\n" +"\n" +"Sa poštovanjem,\n" +"WP Super Cache dodatak\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" + +#: wp-cache.php:3142 +msgid "Delete cache of the current page" +msgstr "Obrisati keš aktuelne strane" diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-sv_SE.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-sv_SE.mo new file mode 100644 index 0000000000000000000000000000000000000000..22715f9f5823972e90d0a36f50fa2050f83c2ef4 GIT binary patch literal 57046 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\n" +"Language-Team: Faffe \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Swedish\n" +"X-Poedit-Country: SWEDEN\n" +"X-Poedit-SourceCharset: utf-8\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "Din kommentar väntar på moderering." + +#: plugins/awaitingmoderation.php:23 +#: plugins/awaitingmoderation.php:38 +#: plugins/badbehaviour.php:47 +#: plugins/badbehaviour.php:65 +#: plugins/domain-mapping.php:47 +#: plugins/domain-mapping.php:62 +#: plugins/searchengine.php:61 +#: plugins/searchengine.php:76 +#: wp-cache.php:1114 +msgid "Disable" +msgstr "Inaktivera" + +#: plugins/awaitingmoderation.php:29 +#: plugins/badbehaviour.php:55 +#: plugins/domain-mapping.php:53 +#: plugins/searchengine.php:67 +msgid "disabled" +msgstr "inaktiverad" + +#: plugins/awaitingmoderation.php:31 +#: plugins/badbehaviour.php:57 +#: plugins/domain-mapping.php:55 +#: plugins/searchengine.php:69 +#: wp-cache.php:1460 +msgid "enabled" +msgstr "aktiverad" + +#: plugins/awaitingmoderation.php:33 +#, php-format +msgid "Awaiting Moderation plugin is %s" +msgstr "Tillägget Awaiting Moderation är %s" + +#: plugins/awaitingmoderation.php:34 +msgid "(Remove the text \"Your comment is awaiting moderation.\" when someone leaves a moderated comment.) " +msgstr "(Ta bort texten \"Din kommentar väntar på moderering.\" när någon lämnar en modererad kommentar.)" + +#: plugins/awaitingmoderation.php:36 +#: plugins/badbehaviour.php:63 +#: plugins/domain-mapping.php:60 +#: plugins/searchengine.php:74 +#: wp-cache.php:1114 +msgid "Enable" +msgstr "Aktivera" + +#: plugins/badbehaviour.php:45 +msgid "Bad Behaviour not found. Please check your install." +msgstr "Bad Behaviour hittades inte. Var vänlig kontrollera din installation." + +#: plugins/badbehaviour.php:60 +#, php-format +msgid "Bad Behaviour support is %s." +msgstr "Bad Behaviour-stöd är %s." + +#: plugins/badbehaviour.php:61 +#, php-format +msgid "(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr "(endast föråldrad cache stöds, inaktiverad kompression och kräver Bad Behavior i \"%s/plugins/bad-behavior/\")" + +#: plugins/badbehaviour.php:69 +#: wp-cache.php:1191 +#: wp-cache.php:1193 +msgid "Warning!" +msgstr "Varning!" + +#: plugins/domain-mapping.php:57 +#, php-format +msgid "Domain Mapping support plugin is %s" +msgstr "Domain Mapping-tilläget är %s" + +#: plugins/domain-mapping.php:58 +msgid "(support for multiple domains on multisite websites) " +msgstr "(stöd för flera domäner på flera webbplatser)" + +#: plugins/domain-mapping.php:72 +msgid "Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin." +msgstr "Domain Mapping-tillägget detekterat! Var vänlig gå till Supercache-tilläggets sida och aktivera domain mapping hjälp-tillägget." + +#: plugins/searchengine.php:71 +#, php-format +msgid "No Adverts for Friends plugin is %s." +msgstr "No Adverts for Friends-tillägget är %s" + +#: plugins/searchengine.php:72 +msgid "(requires friendsadverts.php too) " +msgstr "(kräver friendsadverts.php också) " + +#: wp-cache.php:87 +#, php-format +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "Var vänlig skapa %s /wp-cache-config.php från wp-super-cache/wp-cache-config-sample.php" + +#: wp-cache.php:138 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "Varning! PHP Safe Mode aktiverat!" + +#: wp-cache.php:139 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "Du kan uppleva problem när du använder det här tillägget eftersom SAFE MODE är aktiverat." + +#: wp-cache.php:143 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "Din server är inställd för att kontrollera ägaren av PHP-skript innan den tillåter dom att läsa och skriva filer." + +#: wp-cache.php:144 +#, php-format +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "Du eller en administratör kan få det att fungera genom att ändra grupp-ägaren av pluginskripten till att passa webserver användaren. Gruppägaren av mappen %s/cache/ måste också ändras. Läs safe mode manualsidan för mer information." + +#: wp-cache.php:146 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "Du eller en administratör måste inaktivera det här. Läs safe mode manualsidan för mer information. Det här kan tyvärr inte inaktiveras i en .htaccess fil. Det måste göras i konfigurationsfilen php.ini." + +#: wp-cache.php:152 +msgid "Permlink Structure Error" +msgstr "Fel på permalänkstrukturen" + +#: wp-cache.php:153 +msgid "A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks." +msgstr "En anpassad url- eller permalänkstruktur behövs för att detta tillägg ska fungera korrekt. Var vänlig gå till Inställningssidan för Permalänkar och ställ in dina permalänkar." + +#: wp-cache.php:165 +#, php-format +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "Varning! Ditt värdnamn \"%s\" löses upp till %s" + +#: wp-cache.php:166 +#, php-format +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "Din server tror ditt värdnamn löses upp till %s. En del tjänster som upprensningen av det här tillägget, och Wordpress schemalagda inlägg kanske inte fungerar korrekt." + +#: wp-cache.php:167 +#: wp-cache.php:181 +#, php-format +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "Var vänlig läs inlägg 16 i Felsökningsdelen av readme.txt" + +#: wp-cache.php:180 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "Tyvärr kan inte WordPress hitta filen wp-cron.php. Det här skriptet krävs för att upprensningen av det här tillägget ska fungera korrekt, WordPress schemalagda inlägg såväl som andra kritiska aktiviteter." + +#: wp-cache.php:195 +msgid "Cannot continue... fix previous problems and retry." +msgstr "Kan inte fortsätta... rätta till tidigare problem och försök igen." + +#: wp-cache.php:204 +msgid "Zlib Output Compression Enabled!" +msgstr "Zlib utdatakomprimering aktiverad!" + +#: wp-cache.php:205 +msgid "PHP is compressing the data sent to the visitors of your site. Disabling this is recommended as the plugin caches the compressed output once instead of compressing the same page over and over again. Also see #21 in the Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "PHP komprimerar datat som sänds till besökare på din webbsida. Det rekommenderas att stänga av det eftersom tillägget sparar det komprimerade utdatat en gång i stället för att komprimera samma sida om och om igen. Se också #21 på felsökningssidan. Se denna sida för instruktioner hur du ändrar din php.ini." + +#: wp-cache.php:209 +msgid "Mod rewrite may not be installed!" +msgstr "Mod rewrite kanske inte är installerat!" + +#: wp-cache.php:210 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use legacy or PHP modes." +msgstr "Det verkar som att mod_rewrite inte är installerat. Ibland är inte den här kontrollen 100% tillförlitlig, speciellt om du inte använder Apache. Var vänlig kontrollera att mod_rewrite-modulen laddas. Det är nödvändigt för att skapa Super Cache statiska filer. Du kan fortfarande använda föråldrade och PHP-lägena." + +#: wp-cache.php:215 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "Skrivskyddat läge. Konfigurationen kan inte ändras." + +#: wp-cache.php:216 +#, php-format +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "WP Super Cache-konfigurationsfilen är %s/wp-cache-config.php och kan inte ändras. Den filen måste vara skrivbar av web-servern för att kunna göra några ändringar." + +#: wp-cache.php:217 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "Ett enkelt sätt att göra detta är att ändra rättigheterna tillfälligt genom att använda CHMOD kommandot eller genom din ftp-klient. Kontrolllera att den är globalt skrivbar och det ska gå bra." + +#: wp-cache.php:218 +msgid "Writeable:" +msgstr "Skrivbar:" + +#: wp-cache.php:219 +msgid "Readonly:" +msgstr "Skrivskyddad:" + +#: wp-cache.php:231 +#, php-format +msgid "Warning! %s is writeable!" +msgstr "Varning! %s är skrivbar!" + +#: wp-cache.php:232 +#, php-format +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "Du bör ändra rättigheterna på %s och göra dom mer restriktiva. Använd din ftp-klient, eller följande kommando för att rätta till:" + +#: wp-cache.php:240 +msgid "Mobile rewrite rules detected" +msgstr "Mobila omskrivningsregler hittade" + +#: wp-cache.php:241 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"2.0\\ MMP|240x320\" and delete those." +msgstr "För bästa prestanda ska du aktivera \"Stöd för mobila enheter\" eller radera de mobila omskrivningsreglerna i din .htaccess. Leta efter de 2 raderna med texten \"2.0\\ MMP|240x320\" och radera dessa. " + +#: wp-cache.php:241 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "Det här har ingen påverkan på vanliga användare men mobila användare kommer se ocachade sidor." + +#: wp-cache.php:247 +#: wp-cache.php:258 +msgid "Rewrite rules must be updated" +msgstr "Mod Rewrite regler måste uppdateras" + +#: wp-cache.php:248 +#: wp-cache.php:259 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "Rewrite-reglerna som krävs för detta tillägg har ändrats eller saknas." + +#: wp-cache.php:249 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "Mobilt stöd kräver extra regler i din .htaccess fil, eller så kan du ställa in tillägget på föråldrat läge. Här är dina valmöjligheter (sorterat efter svårighetsgrad):" + +#: wp-cache.php:250 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "Ställ in tillägget på föråldrat läge och aktivera mobilt stöd." + +#: wp-cache.php:251 +#: wp-cache.php:260 +msgid "Scroll down the Advanced Settings page and click the Update Mod_Rewrite Rules button." +msgstr "Skrolla ner till de avancerade inställningarna och klicka på knappen Uppdatera Mod_Rewrite Reglerna." + +#: wp-cache.php:252 +#, php-format +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "Radera tilläggets mod_rewrite regler i %s.htaccess omslutet av # BEGIN WPSuperCache och # END WPSuperCache och låt tillägget återskapa dom genom att ladda om den här sidan." + +#: wp-cache.php:253 +#, php-format +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ add these lines: (do it twice, once for each section)" +msgstr "Lägg till reglerna själv. Redigera %s.htaccess och hitta blocket med kod som omsluts av raderna # BEGIN WPSuperCache och # END WPSuperCache. Det är två delar som ser väldigt lika ut. Precis nedanför raden %%{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$ lägg till den här raden: (gör det två gånger, en för varje del)" + +#: wp-cache.php:266 +msgid "Required to serve compressed supercache files properly." +msgstr "Krävs för att visa komprimerade supercache filer korrekt." + +#: wp-cache.php:266 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "Krävs för att ställa in cacheinformation på supercache sidor. IE7 användare kommer se gamla sidor utan den här modulen." + +#: wp-cache.php:266 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "Ställ in utgångsdatum på supercachade sidor. Besökare kanske inte ser nya sidor när dom laddar om eller lämnar en kommentar utan den här modulen." + +#: wp-cache.php:273 +msgid "Missing Apache Modules" +msgstr "Saknade Apachemoduler" + +#: wp-cache.php:274 +msgid "The following Apache modules are missing. The plugin will work in legacy mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "Följande Apache moduler saknas. Tillägget fungerar i föråldrat läge utan dessa. I fullt Supercache läge kan dina besökare dock se förvanskade sidor eller gammalt innehåll." + +#: wp-cache.php:413 +msgid "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file." +msgstr "Varning! Du försökte aktivera komprimering men zlib.output_compression är aktiverad. Se #21 i felsökningssektionen i readme-filen." + +#: wp-cache.php:501 +msgid "WP Super Cache Settings" +msgstr "WP Super Cache-inställningar" + +#: wp-cache.php:512 +msgid "Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced Settings Page by default." +msgstr "Observera: Mod_rewrite eller föråldrar cachning aktiverad. Visar avancerade inställningar som standard." + +#: wp-cache.php:523 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "Konfigurationsfil ändrad, några värden kan vara fel. Ladda sidan igen från \"Inställningar\"-menyn för att återställa dom." + +#: wp-cache.php:540 +#: wp-cache.php:614 +msgid "Caching must be enabled to use this feature" +msgstr "Cachning måste vara aktiverad för att använda den här funktionen" + +#: wp-cache.php:542 +msgid "Cache Tester" +msgstr "Cachetestare" + +#: wp-cache.php:543 +msgid "Test your cached website by clicking the test button below." +msgstr "Testa din cachade websida genom att genom att klicka på testknappen nedan." + +#: wp-cache.php:550 +#, php-format +msgid "Fetching %s to prime cache: " +msgstr "Hämtar %s till den primära cachen:" + +#: wp-cache.php:552 +#: wp-cache.php:559 +#: wp-cache.php:566 +msgid "OK" +msgstr "OK" + +#: wp-cache.php:557 +#, php-format +msgid "Fetching first copy of %s: " +msgstr "Hämtar första kopian av %s:" + +#: wp-cache.php:564 +#, php-format +msgid "Fetching second copy of %s: " +msgstr "Hämtar en andra kopia av %s:" + +#: wp-cache.php:570 +msgid "One or more page requests failed:" +msgstr "En eller flera sidförfrågningar misslyckades:" + +#: wp-cache.php:589 +#: wp-cache.php:590 +#, php-format +msgid "Page %d: %d (%s)" +msgstr "Sida %d: %d (%s):" + +#: wp-cache.php:596 +#, php-format +msgid "Page 1: %s" +msgstr "Sida 1: %s" + +#: wp-cache.php:597 +#, php-format +msgid "Page 2: %s" +msgstr "Sida 2: %s" + +#: wp-cache.php:598 +msgid "The timestamps on both pages match!" +msgstr "Tidsstämplarna på sidorna matchar!" + +#: wp-cache.php:600 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "Sidorna matchar inte! Tidsstämplarna är olika eller hittades inte!" + +#: wp-cache.php:606 +msgid "Send non-secure (non https) request for homepage" +msgstr "Skicka osäker (icke https) förfrågan om hemsida" + +#: wp-cache.php:607 +msgid "Test Cache" +msgstr "Testa Cache" + +#: wp-cache.php:632 +#: wp-cache.php:755 +msgid "Cancel Cache Preload" +msgstr "Avbryt cache-förladdning" + +#: wp-cache.php:638 +msgid "Scheduled preloading of cache cancelled. If a job is currently running it will not shutdown until the current 100 pages are complete." +msgstr "Schemalagd förladdning av cachen avbruten. Om ett jobb för tillfället körs kommer det inte att stängas av förrän de nuvarande 100 sidorna är färdiga." + +#: wp-cache.php:649 +msgid "Scheduled preloading of cache cancelled." +msgstr "Schemalagd förladdning av cachen avbruten." + +#: wp-cache.php:675 +#: wp-cache.php:753 +msgid "Preload Cache Now" +msgstr "Förladda cache nu" + +#: wp-cache.php:678 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "Schemalagd förladdning av cachen om 10 sekunder." + +#: wp-cache.php:682 +#, php-format +msgid "Scheduled preloading of cache in %d minutes" +msgstr "Schemalagd förladdning av cachen om %d minuter." + +#: wp-cache.php:686 +msgid "This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now." +msgstr "Det här kommer att cacha varje publicerat inlägg och sida på din webbplats. Det kommer att skapa statiska supercachefiler så att okända besökare (inklusive bottar) kommer att träffa en cachad sida. Det kommer antagligen att hjälpa din Google-rankning eftersom de numera använder hastighet som ett mätvärde när det bedömer webbplatser." + +#: wp-cache.php:687 +msgid "Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "Förladdning skapar massor med filer. Cachning görs från det nyaste inlägget till det äldsta, så fundera på att bara cacha de nyaste om du har massor (10000+) inlägg. Det är särskilt viktigt med en delad webbserver." + +#: wp-cache.php:688 +msgid "In ’Preload Mode’ regular garbage collection will only clean out old legacy files for known users, not the preloaded supercache files. This is a recommended setting when the cache is preloaded." +msgstr "I ’Förladdningsläge’ kommer upprensningen bara ta bort gamla filer för kända användare, inte de förladdade supercachefilerna. Det är en rekommenderad inställning när cachen är förladdad." + +#: wp-cache.php:692 +#, php-format +msgid "Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)" +msgstr "Uppdatera förladdade cachefiler var %s minut. (0 för att stänga av, minst %d minuter.)" + +#: wp-cache.php:705 +msgid "all" +msgstr "alla" + +#: wp-cache.php:718 +#, php-format +msgid "Preload %s posts." +msgstr "Förladda %s inlägg." + +#: wp-cache.php:725 +msgid "Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "Förladdningsläge (upprensning av endast gamla filer. Rekommenderat.)" + +#: wp-cache.php:728 +msgid "Send me status emails when files are refreshed." +msgstr "Skicka status-epost till mig när filerna uppdateras." + +#: wp-cache.php:733 +msgid "Many emails, 2 emails per 100 posts." +msgstr "Mycket e-post, 2 brev per 100 inlägg." + +#: wp-cache.php:736 +msgid "Medium, 1 email per 100 posts." +msgstr "Mellan, 1 brev per 100 inlägg." + +#: wp-cache.php:739 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "Mindre e-post, 1 i början och 1 i slutet av förladdning av alla inlägg." + +#: wp-cache.php:743 +#, php-format +msgid "Refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Uppdatering av cache om %d timmar %d minuter och %d sekunder." + +#: wp-cache.php:744 +#, php-format +msgid "Full refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Fullständig uppdatering om %d timmar %d minuter och %d sekunder." + +#: wp-cache.php:750 +#, php-format +msgid "Currently caching from post %d to %d." +msgstr "För närvarande cachas från inlägg %d till %d." + +#: wp-cache.php:753 +msgid "Update Settings" +msgstr "Uppdatera inställningar" + +#: wp-cache.php:761 +msgid "Preloading of cache disabled. Please disable legacy page caching or talk to your host administrator." +msgstr "Förladdning av cache är avaktiverat. Var vänlig avaktivera föråldrat läge eller prata med din serveradministratör." + +#: wp-cache.php:776 +#: wp-cache.php:865 +msgid "Caching" +msgstr "Cachning" + +#: wp-cache.php:780 +msgid "Cache hits to this website for quick access." +msgstr "Cacheträffar för den här webbplatsen för snabb åtkomst." + +#: wp-cache.php:780 +#: wp-cache.php:781 +#: wp-cache.php:795 +#: wp-cache.php:799 +#: wp-cache.php:802 +#: wp-cache.php:803 +#: wp-cache.php:868 +msgid "Recommended" +msgstr "Rekommenderat" + +#: wp-cache.php:781 +msgid "Use mod_rewrite to serve cache files." +msgstr "Använd mod_rewrite för att serva cachefiler." + +#: wp-cache.php:782 +msgid "Use PHP to serve cache files." +msgstr "Använd PHP för att presentera cachade filer." + +#: wp-cache.php:783 +msgid "Legacy page caching." +msgstr "Föråldrad sidcaching" + +#: wp-cache.php:784 +msgid "Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should go with PHP caching." +msgstr "Mod_rewrite är det snabbaste, PHP är nästan lika snabbt och enklare att få igång, medans föråldrat läge är långsammare, men mer flexibelt och också enkelt att få igång. Nya användare bör starta med PHP-caching." + +#: wp-cache.php:790 +msgid "Miscellaneous" +msgstr "Diverse" + +#: wp-cache.php:795 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "Komprimera sidor så att de presenteras snabbare för besökare." + +#: wp-cache.php:796 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching it on and off clears the cache." +msgstr "Komprimering är inaktiverat som standard för vissa värdar har problem med komprimerade filer. Att sätta på eller stänga av det här rensar cachen." + +#: wp-cache.php:799 +msgid "304 Not Modified browser caching. Indicate when a page has not been modified since last requested." +msgstr "304 Not Modified webbläsarcaching. Indikerar när en sida inte har modifierats sedan den senast hämtades." + +#: wp-cache.php:800 +msgid "304 support is disabled by default because in the past GoDaddy had problems with some of the headers used." +msgstr "304-stöd är avstängt som standard eftersom GoDaddy förut har haft problem med några av sidhuvudena som använts." + +#: wp-cache.php:802 +msgid "Don’t cache pages for known users." +msgstr "Cacha inte sidor för kända användare." + +#: wp-cache.php:803 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated." +msgstr "Cacheombyggning. Presentera en supercachefil till anonyma användare medan en ny fil genereras." + +#: wp-cache.php:804 +msgid "Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)" +msgstr "Berätta stolt för världen att din server är Diggsäker! (placerar ett meddelande i din bloggs sidfot)" + +#: wp-cache.php:810 +#: wp-cache.php:957 +#: wp-cache.php:1473 +msgid "Advanced" +msgstr "Avancerat" + +#: wp-cache.php:814 +msgid "Mobile device support." +msgstr "Stöd för mobila enheter." + +#: wp-cache.php:815 +msgid "Clear all cache files when a post or page is published." +msgstr "Rensa alla cachefiler när ett inlägg eller sida publiceras." + +#: wp-cache.php:816 +msgid "Only refresh current page when comments made." +msgstr "Uppdatera endast aktuell sida när en kommentar läggs in." + +#: wp-cache.php:817 +msgid "List the newest cached pages on this page." +msgstr "Lista de senast cachade sidorna på den här sidan." + +#: wp-cache.php:819 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "Enkel fillåsning. Du behöver antagligen inte det här men det kan hjälpa om din server är överbelastad. Varning! Kan göra så att din server låser sig i unika fall!" + +#: wp-cache.php:822 +msgid "Use object cache to store cached files." +msgstr "Använd objektcache för att lagra cachade filer." + +#: wp-cache.php:822 +msgid "(Experimental)" +msgstr "(Experimentellt)" + +#: wp-cache.php:829 +msgid "Note:" +msgstr "Notera:" + +#: wp-cache.php:831 +#, php-format +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "Om du avinstallerar det här tillägget, kontrollera att katalogen %s är skrivbar av webservern så att filerna advanced-cache.php och cache-config.php kan raderas automatiskt. (Att kontrollera att dessa filer är skrivbara är antagligen också en bra idé) " + +#: wp-cache.php:832 +#, php-format +msgid "Please see the readme.txt for instructions on uninstalling this script. Look for the heading, \"How to uninstall WP Super Cache\"." +msgstr "Se readme.txt för instruktioner om hur man avinstallerar detta script. Leta efter rubriken \"How to uninstall WP Super Cache\"." + +#: wp-cache.php:833 +#, php-format +msgid "Need help? Check the Super Cache readme file. It includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already have been answered." +msgstr "Behöver du hjälp? Kolla Super Cache readme-filen. Den innehåller installationsdokumentation, en FAQ och felsökningstips. Supportforumet finns också. Din fråga kanske redan har besvarats." + +#: wp-cache.php:836 +#: wp-cache.php:883 +msgid "Update Status" +msgstr "Uppdatera Status" + +#: wp-cache.php:843 +msgid "Accepted Filenames & Rejected URIs" +msgstr "Accepterade filnamn & Avvisade URI:er" + +#: wp-cache.php:868 +msgid "Caching On" +msgstr "Cachning på" + +#: wp-cache.php:869 +msgid "Caching Off" +msgstr "Cachning av" + +#: wp-cache.php:870 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "Observera: aktiverar PHP-cachning, cacheombyggnad och stöd för mobila enheter" + +#: wp-cache.php:880 +msgid "Notice: Supercache mod_rewrite rules detected. Cached files will be served using those rules. Edit the .htaccess file in the root of your install and remove the SuperCache rules." +msgstr "Observera: Supercache mod_rewrite-regler detekterades. Cachade filer kommer att presenteras med de reglerna. Redigera .htaccess-filen i roten för din installation och ta bort Supercachereglerna." + +#: wp-cache.php:892 +msgid "Make WordPress Faster" +msgstr "Gör WordPress snabbare" + +#: wp-cache.php:893 +#, php-format +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "%1$s underhålls och är utvecklat av %2$s med stöd från många andra." + +#: wp-cache.php:894 +#, php-format +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "Han bloggar på %1$s och lägger ut bilder på %2$s." + +#: wp-cache.php:895 +#, php-format +msgid "Please say hi to him on %s too!" +msgstr "Var vänlig säg hej till honom på %s också!" + +#: wp-cache.php:903 +#, php-format +msgid "Cached pages since %1$s : %2$s" +msgstr "Cachade sidor sedan %1$s : %2$s" + +#: wp-cache.php:904 +msgid "Newest Cached Pages:" +msgstr "Senast cachade sidor:" + +#: wp-cache.php:908 +#, php-format +msgid "Cached %s seconds ago" +msgstr "Cachades för %s sekunder sedan" + +#: wp-cache.php:911 +msgid "(may not always be accurate on busy sites)" +msgstr "(kanske inte alltid är helt korrekt på upptagna sidor)" + +#: wp-cache.php:930 +msgid "Cache plugins are PHP scripts that live in a plugins folder inside the wp-super-cache folder. They are loaded when Supercache loads, much sooner than regular WordPress plugins." +msgstr "Cachetillägg är PHP-script som finns i en tilläggsmapp i wp-super-cache-mappen. De laddas när Supercache laddas, mycket tidigare än vanliga WordPresstillägg." + +#: wp-cache.php:931 +msgid "This is strictly an advanced feature only and knowledge of both PHP and WordPress actions is required to create them." +msgstr "Detta är en avancerad funktion och kunskap om både PHP och WordPress agerande behövs för att skapa dem." + +#: wp-cache.php:941 +msgid "Available Plugins" +msgstr "Tillgängliga tillägg" + +#: wp-cache.php:957 +msgid "Easy" +msgstr "Enkel" + +#: wp-cache.php:957 +msgid "Tester & Contents" +msgstr "Testare & innehåll" + +#: wp-cache.php:957 +msgid "Preload" +msgstr "Förladda" + +#: wp-cache.php:957 +msgid "Plugins" +msgstr "Tillägg" + +#: wp-cache.php:957 +msgid "Debug" +msgstr "Debug" + +#: wp-cache.php:984 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "Observera: WP Super Cache mod_rewrite regelkontroller är avstängda när du inte kör på huvudsidan i nätverket." + +#: wp-cache.php:986 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on on the main site of this network." +msgstr "Observera: WP Super Cache mod_rewrite regelkontroller är avstängda när du inte kör på huvudsidan i nätverket." + +#: wp-cache.php:996 +msgid "Mod Rewrite Rules" +msgstr "Mod Rewrite regler" + +#: wp-cache.php:1002 +msgid "WordPress MU Detected" +msgstr "WordPress MU detekterat" + +#: wp-cache.php:1002 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "Tyvärr kan inte omskrivningsreglerna uppdateras automatiskt när WordPress MU körs. Var vänlig öppna din .htaccess och lägg till följande mod_rewrite regel över alla andra regler i den filen." + +#: wp-cache.php:1004 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Mod Rewrite reglerna kan inte uppdateras!" + +#: wp-cache.php:1005 +#, php-format +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "Du måste ha BEGIN och END markeringar i %s.htaccess för att automatisk uppdatering ska fungera. Dom ser ut såhär om omger de huvudsakliga WordPress mod_rewrite reglerna:" + +#: wp-cache.php:1007 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "Uppdatera den här sidan när du har uppdaterat din .htaccess fil." + +#: wp-cache.php:1011 +msgid "Thank you for upgrading." +msgstr "Tack för att du uppgraderat." + +#: wp-cache.php:1011 +#, php-format +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "Mod_rewrite reglerna har ändrats sedan du senast installerade det här tillägget. Tyvärr måste du ta bort de gamla supercache reglerna innan de nya är uppdaterade. Uppdatera den här sidan när du har redigerat din .htaccess fil. Om du vill uppgradera manuellt, ändra följande rad: %1$s så den ser ut såhär: %2$s De enda ändringarna är \"HTTP_COOKIE\" blir \"HTTP:Cookie\" och \"wordpressuser\" blir \"wordpress\". Det här är en WordPress 2.5 ändring men det är bakåt kompatibelt med äldre versioner om du är modig nog att använda dem." + +#: wp-cache.php:1015 +msgid "Trailing slash check required." +msgstr "Efterföljande slash kontroll krävs." + +#: wp-cache.php:1015 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "Det verkar som att din blogg har URL:er som slutar med en \"/\". Tyvärr eftersom du har installerat det här tillägget har en dubbelt-innehåll-bugg hittats där URL:er som inte slutar med \"/\" visar samma innehåll som dom med \"/\" och vidarebefordrar inte till rätt URL. För att laga, måste du redigera din .htaccess fil och lägga till de här två reglerna till de två grupperna med Super Cache regler:" + +#: wp-cache.php:1017 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "Du kan se var reglerna går och utforska de kompletta reglerna genom att klicka \"Visa mod_rewrite regler\" länken nedan." + +#: wp-cache.php:1031 +msgid "Mod Rewrite rules updated!" +msgstr "Mod Rewrite regler uppdaterade!" + +#: wp-cache.php:1032 +#, php-format +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "%s.htaccess har uppdaterats med dom nödvändiga mod_rewrite reglerna. Var vänlig kontrollera att dom är rätt. Dom ska se ut såhär:" + +#: wp-cache.php:1034 +msgid "Mod Rewrite rules must be updated!" +msgstr "Mod Rewrite regler måste uppdateras!" + +#: wp-cache.php:1035 +#, php-format +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "Din %s.htaccess är inte skrivbar av webservern och måste uppdateras med dom nödvändiga mod_rewrite reglerna. Dom nya reglerna ska finnas över dom vanliga WordPress reglerna som i koden nedan:" + +#: wp-cache.php:1040 +#, php-format +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "WP Super Cache mod rewrite regler hittades i din %s.htaccess fil.
      Klicka på följande länk för att se raderna som lagts till i den filen. Om du har uppgraderat tillägget kontrollera att reglerna överensstämmer." + +#: wp-cache.php:1043 +msgid "A difference between the rules in your .htaccess file and the plugin rewrite rules has been found. This could be simple whitespace differences but you should compare the rules in the file with those below as soon as possible. Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "En skillnad mellan reglerna i din .htaccess-fil och tilläggets omskrivningsregler har hittats. Det kan bero på enkla blankstegsfel men du bör kontrollera reglerna i filen mot de nedan snarast. Clicka på ’Uppdatera Mod_Rewrite-reglerna’-knappen för att uppdaterna reglerna." + +#: wp-cache.php:1046 +msgid "View Mod_Rewrite Rules" +msgstr "Visa Mod_Rewrite regler" + +#: wp-cache.php:1050 +#: wp-cache.php:2287 +#, php-format +msgid "Rules must be added to %s too:" +msgstr "Regler måste läggas till i %s också:" + +#: wp-cache.php:1058 +#, php-format +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "Gzip-kodningsregler i %s.htaccess skapade." + +#: wp-cache.php:1065 +msgid "Fix Configuration" +msgstr "Laga konfiguration" + +#: wp-cache.php:1068 +msgid "Restore Default Configuration" +msgstr "Återställ standardinställningar" + +#: wp-cache.php:1076 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "Kommentarsmoderering är aktiverad. Dina kommentarer kan ta ett tag innan de visas." + +#: wp-cache.php:1101 +msgid "Lock Down:" +msgstr "Lock Down:" + +#: wp-cache.php:1101 +msgid "Disabled" +msgstr "Inaktiverad" + +#: wp-cache.php:1101 +msgid "Enabled" +msgstr "Aktiverad" + +#: wp-cache.php:1102 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "Förbered din server för en förmodad topp i trafiken genom att aktivera Lock Down. När denna är aktiverad kommer nya kommentarer till ett inlägg inte uppdatera dom cachade statiska filerna." + +#: wp-cache.php:1103 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "Utvecklare: Gör ditt tillägg Lock Down kompatibelt genom att kontrollera \"WPLOCKDOWN\" konstanten. Följande kod gör att ditt tillägg respekterar WPLOCKDOWN inställningen." + +#: wp-cache.php:1105 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "Tyvärr. Min blogg är låst. Uppdateringar kommer snart att synas" + +#: wp-cache.php:1109 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "WordPress är låst. Super Cache statiska filer kommer inte raderas när nya kommentarer är gjorda." + +#: wp-cache.php:1111 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "WordPress är inte låst. Nya kommentarer kommer uppdatera Super Cache statiska filer som vanligt." + +#: wp-cache.php:1117 +msgid "Lock Down" +msgstr "Lock Down" + +#: wp-cache.php:1125 +msgid "Directly Cached Files" +msgstr "Direkt cachade filer" + +#: wp-cache.php:1183 +#, php-format +msgid "%s removed!" +msgstr "%s borttaget!" + +#: wp-cache.php:1191 +#, php-format +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "Du måste göra %s skrivbar för att aktivera den här funktionen. Eftersom det här är en säkerhetsrisk, gör den skrivskyddad efter att din sida är genererad." + +#: wp-cache.php:1193 +#, php-format +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "%s är skrivbar. Var vänlig gör den skrivskyddad efter att din sida är genererad eftersom det här är en säkerhetsrisk." + +#: wp-cache.php:1207 +msgid "Existing direct page" +msgstr "Existerande direkta sidor" + +#: wp-cache.php:1207 +msgid "Delete cached file" +msgstr "Radera cachade filer" + +#: wp-cache.php:1212 +msgid "Add direct page:" +msgstr "Lägg till direkt sida:" + +#: wp-cache.php:1214 +#, php-format +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "Direkt cachade filer är filer skapade direkt från %s där din blogg bor. Den här funktionen är bara användbar om du förväntar en stor Digg eller Slashdot höjning av trafik till ett inlägg eller en sida." + +#: wp-cache.php:1216 +#, php-format +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "Som exempel: för att cacha %1$sabout/, ska du skriva %1$sabout/ eller /about/. Den cachade filen kommer genereras nästa gång en anonym användare besöker den sidan." + +#: wp-cache.php:1217 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "Töm textboxen för att radera den från listan över direkta sidor och radera den cachade filen." + +#: wp-cache.php:1222 +msgid "Update Direct Pages" +msgstr "Uppdatera direkta sidor" + +#: wp-cache.php:1260 +msgid "Expiry Time & Garbage Collection" +msgstr "Utgångs tid & upprensning" + +#: wp-cache.php:1262 +msgid "Expire time:" +msgstr "Utgångstid:" + +#: wp-cache.php:1263 +msgid "seconds" +msgstr "sekunder" + +#: wp-cache.php:1264 +msgid "Garbage Collection" +msgstr "Upprensning" + +#: wp-cache.php:1264 +msgid "If the expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above." +msgstr "Om utgångstiden är mer än 1800 sekunder (en halvtimme), kommer upprensning köras var 10:e minut, annars kommer den köras 10 sekunder efter utgångstiden ovan." + +#: wp-cache.php:1265 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 300 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. If you are using legacy caching aim to have less than 500 cached files if possible. You can have many times more cached files when using mod_rewrite or PHP caching." +msgstr "Att leta efter och radera utgångna filer är kostsamt, men det är kostsamt att lämna dom där också. På en väldigt upptagen sida bör du ställa utgångstiden till 300 sekunder. Experimentera med olika värden och besök den här sidan för att se hur många utgångna filer som finns kvar vid olika tidpunkter under dagen. Om du använder förlådrad caching , sikta på att ha färre än 500 cachade sidor om möjligt. Du kan ha många gånger fler cachade filer när du använder mod_rewrite eller PHP-caching." + +#: wp-cache.php:1266 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "Sätt utgångstiden till 0 sekunder för att stänga av upprensning." + +#: wp-cache.php:1267 +msgid "Change Expiration" +msgstr "Ändra utgång" + +#: wp-cache.php:1311 +msgid "Rejected User Agents" +msgstr "Avvisade User Agents" + +#: wp-cache.php:1312 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "Strängar i ’User Agent’ huvudet som förhindrar WP-Cache från cachande robotar, spindlar och crawlers’ förfrågningar. Notera att super cachade filer skickas fortfarande till dessa agenter om dom redan existerar." + +#: wp-cache.php:1319 +msgid "Save UA Strings" +msgstr "Spara UA strängar" + +#: wp-cache.php:1342 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "Cacha inte följande sidtyper. Läs Conditional Tags dokumenten för en komplett diskussion av varje typ." + +#: wp-cache.php:1345 +msgid "Single Posts" +msgstr "Enstaka inlägg" + +#: wp-cache.php:1346 +msgid "Pages" +msgstr "Sidor" + +#: wp-cache.php:1347 +msgid "Front Page" +msgstr "Framsida" + +#: wp-cache.php:1348 +msgid "Home" +msgstr "Hem" + +#: wp-cache.php:1349 +msgid "Archives" +msgstr "Arkiv" + +#: wp-cache.php:1350 +msgid "Tags" +msgstr "Etiketter" + +#: wp-cache.php:1351 +msgid "Category" +msgstr "Kategori" + +#: wp-cache.php:1352 +msgid "Feeds" +msgstr "Flöden" + +#: wp-cache.php:1353 +msgid "Search Pages" +msgstr "Söksidor" + +#: wp-cache.php:1355 +#: wp-cache.php:1483 +msgid "Save" +msgstr "Spara" + +#: wp-cache.php:1372 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "Lägg till strängar (inte ett filnamn) som tvingar en sida att inte vara cachad. Som exempel, om dina URL:er innehåller år och du vill inte cacha föregående års inlägg, räcker det med att specifiera året, e.x. ’/2004/’. WP-Cache kommer kontrollera om den strängen är en del URI:n och isåfall, inte cacha den sidan." + +#: wp-cache.php:1378 +msgid "Save Strings" +msgstr "Spara strängar" + +#: wp-cache.php:1394 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "Lägg till de filnamn som kan bli cachade, även om de matchar en av de avvisade strängarna angivna ovan." + +#: wp-cache.php:1400 +msgid "Save Files" +msgstr "Spara filer" + +#: wp-cache.php:1445 +msgid "Currently logging to: " +msgstr "Loggar just nu till:" + +#: wp-cache.php:1455 +msgid "Fix problems with the plugin by debugging it here. It can send you debug emails or log them to a file in your cache directory." +msgstr "Rätta till problem med tillägget genom att felsöka det här. Det kan skicka dig felsöknings e-mail eller logga dom till en fil i din cache katalog." + +#: wp-cache.php:1456 +msgid "Logging to a file is easier but faces the problem that clearing the cache will clear the log file." +msgstr "Logga till en fil är lättare men stöter på problemet att rensas cachen så rensas logg-filen." + +#: wp-cache.php:1460 +msgid "Debugging" +msgstr "Felsökning" + +#: wp-cache.php:1461 +msgid "Logging Type" +msgstr "Loggnings sätt" + +#: wp-cache.php:1461 +msgid "Email" +msgstr "E-mail" + +#: wp-cache.php:1462 +msgid "file" +msgstr "fil" + +#: wp-cache.php:1463 +msgid "IP Address" +msgstr "IP Adress" + +#: wp-cache.php:1463 +#, php-format +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(logga bara förfrågningar från den här IP adressen. Din IP är %s)" + +#: wp-cache.php:1464 +msgid "Log level" +msgstr "Logg nivå" + +#: wp-cache.php:1470 +msgid "(1 = less, 5 = more, may cause severe server load.)" +msgstr "(1 = mindre, 5 = mer, kan orsaka tyngre server belastning.) " + +#: wp-cache.php:1473 +msgid "In very rare cases two problems may arise on some blogs:

      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "I väldigt ovanliga fall kan två problem dyka upp på vissa bloggar:
      1. Framsidan kan börja laddas ner som en zip fil.
      2. Fel sida blir ibland cachad som framsidan om din blogg använder en statisk framsida och permalänk strukturen är /%category%/%postname%/.
      " + +#: wp-cache.php:1474 +#, php-format +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "Jag är 99% säker på att det inte är några buggar i WP Super Cache och dom händer bara i undantagsfall men du kan köra en enkel kontroll var 5:e minut för att kontrollera att din sida är ok om du är orolig. Du kommer få ett e-mail om det är några problem." + +#: wp-cache.php:1476 +msgid "Check front page every 5 minutes." +msgstr "Kontrollera framsidan var 5:e minut." + +#: wp-cache.php:1477 +msgid "Front page text" +msgstr "Framsides text" + +#: wp-cache.php:1477 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "Text att leta efter på din framsida. Om den här texten fattas kommer cachen att rensas. Lämna tomt för att inaktivera." + +#: wp-cache.php:1478 +msgid "Clear cache on error." +msgstr "Rensa cache vid fel." + +#: wp-cache.php:1479 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "Skicka e-mail till blogg administratören när kontroller görs. (användbart för testning)" + +#: wp-cache.php:1493 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "Fel: GZIP komprimering är aktiverad, inaktivera det om du vill aktivera wp-cache." + +#: wp-cache.php:1540 +#: wp-cache.php:1702 +msgid "Warning" +msgstr "Varning" + +#: wp-cache.php:1540 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "GZIP-komprimering är aktiverat i WordPress, wp-cache kommer bli kringgått tills du har inaktiverat gzip-komprimering." + +#: wp-cache.php:1598 +#: wp-cache.php:1603 +#: wp-cache.php:1635 +#: wp-cache.php:1640 +#: wp-cache.php:1646 +msgid "Error" +msgstr "Fel" + +#: wp-cache.php:1598 +#, php-format +msgid "Your cache directory ($cache_path) did not exist and couldn’t be created by the web server. Check %s permissions." +msgstr "Din cache katalog ($cache_path) fanns inte och kunde inte skapas av web servern. Kontrollera %s rättigheter." + +#: wp-cache.php:1603 +#, php-format +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "Din cache katalog (%1$s) eller %2$s måste vara skrivbar för att det här tillägget ska fungera. Dubbel-kontrollera det." + +#: wp-cache.php:1635 +#, php-format +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "Din WP-Cache konfigurations fil (%s) är för gammal och inte skrivbar av web servern. Var vänlig radera den och uppdatera den här sidan." + +#: wp-cache.php:1640 +#, php-format +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "Konfigurations fil saknas och %1$s katalogen (%2$s) är inte skrivbar av web servern. Kontrollera dess rättigheter." + +#: wp-cache.php:1646 +#, php-format +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "Exempel WP-Cache konfigurations fil (%s) finns inte. Kontrollera din installation." + +#: wp-cache.php:1702 +#, php-format +msgid "%s/advanced-cache.php
      does not exist or cannot be updated." +msgstr "%s/advanced-cache.php finns inte eller kan inte uppdateras." + +#: wp-cache.php:1703 +msgid "1. If it already exists please delete the file first." +msgstr "1. Om den redan finns var vänlig radera filen först." + +#: wp-cache.php:1704 +#, php-format +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. Gör %1$s skrivbar genom att använda chmod kommandot genom din ftp eller server programvara. (chmod 777 %1$s) och uppdatera den här sidan. Det här är endast en tillfällig åtgärd och du måste göra den read only igen efteråt. (Ändra 777 till 755 i det föregående kommandot)" + +#: wp-cache.php:1705 +#, php-format +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. Ladda om den här sidan för att uppdatera %s/advanced-cache.php" + +#: wp-cache.php:1706 +#, php-format +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "Om det inte fungerar, kontrollera att filen %s/advanced-cache.php inte finns:" + +#: wp-cache.php:1707 +#, php-format +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. Öppna %1$s$wp_cache_file i en text redigerare.
    • 2. Ändra texten CACHEHOME till %2$s
    • 3. Spara filen och kopiera den till %3$s och ladda om den här sidan.
    • " + +#: wp-cache.php:1730 +msgid "

      WP_CACHE constant set to false

      The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

      define('WP_CACHE', true);

      " +msgstr "

      WP_CACHE-konstanten är sat till falskt

      WP_CACHE-konstanten används av WordPress för att ladda koden som presenteras cachade sidor. Tyvärr är den satt till falskt. Var vänlig redigera din wp-config.php och lägg till eller redigera följande rad ovanför det sista require_once-kommandot:

      define('WP_CACHE', true);

      " + +#: wp-cache.php:1732 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "Fel: WP_CACHE är inte aktiverad i din wp-config.php fil och jag kunde inte ändra den." + +#: wp-cache.php:1733 +#, php-format +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "Redigera %s och lägg till följande rad:
      define('WP_CACHE', true);
      Annars kommer inte WP-Cache köras av WordPresskärnan." + +#: wp-cache.php:1737 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the FAQ. The WP_CACHE line must be moved up." +msgstr "

      WP_CACHE konstant tillagd i wp-config.php

      Om du fortsätter att se det här varningsmeddelandetvar vänlig läs punkt 5 i FAQ. WP_CACHE raden måste flyttas upp." + +#: wp-cache.php:1759 +msgid "Cache Contents" +msgstr "Cache innehåll" + +#: wp-cache.php:1762 +msgid "Object cache in use. No cache listing available." +msgstr "Objektcache används. Ingen cachelistning möjlig." + +#: wp-cache.php:1786 +#, php-format +msgid "Deleting supercache file: %s
      " +msgstr "Raderar supercache filen: %s
      " + +#: wp-cache.php:1803 +#, php-format +msgid "Deleting wp-cache file: %s
      " +msgstr "Raderar wp-cache filen: %s
      " + +#: wp-cache.php:1868 +msgid "Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page." +msgstr "Cachestatistik genereras inte automatiskt. Du måste klicka på länken nedan för att generera statistiken på den här sidan." + +#: wp-cache.php:1869 +msgid "Regenerate cache stats" +msgstr "Regenerera cachestatistik" + +#: wp-cache.php:1871 +#, php-format +msgid "Cache stats last generated: %s minutes ago." +msgstr "Cachestatistik genererades senast för %s minuter sedan." + +#: wp-cache.php:1877 +msgid "WP-Cache" +msgstr "WP-Cache" + +#: wp-cache.php:1878 +#: wp-cache.php:1894 +#, php-format +msgid "%s Cached Pages" +msgstr "%s Cachade sidor" + +#: wp-cache.php:1879 +#: wp-cache.php:1899 +#, php-format +msgid "%s Expired Pages" +msgstr "%s Utgågna sidor" + +#: wp-cache.php:1893 +msgid "WP-Super-Cache" +msgstr "WP-Super-Cache" + +#: wp-cache.php:1904 +msgid "Fresh WP-Cached Files" +msgstr "Färska WP-Cachade filer" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "URI" +msgstr "URI" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +msgid "Key" +msgstr "Nyckel" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "Age" +msgstr "Ålder" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "Delete" +msgstr "Radera" + +#: wp-cache.php:1920 +msgid "Stale WP-Cached Files" +msgstr "Gamla WP-Cachade filer" + +#: wp-cache.php:1936 +msgid "Fresh Super Cached Files" +msgstr "Färska Super Cachade filer" + +#: wp-cache.php:1952 +msgid "Stale Super Cached Files" +msgstr "Gamla Super Cachade filer" + +#: wp-cache.php:1968 +msgid "Hide file list" +msgstr "Dölj fil-lista" + +#: wp-cache.php:1970 +msgid "Too many cached files, no listing possible." +msgstr "För många cachade filer, listning ej möjlig." + +#: wp-cache.php:1972 +msgid "List all cached files" +msgstr "Lista alla cachade filer" + +#: wp-cache.php:1978 +#, php-format +msgid "Garbage Collection
      Last GC was %s minutes ago
      " +msgstr "Garbage Collection
      Senaste GC gjordes %s minuter sedan
      " + +#: wp-cache.php:1979 +#, php-format +msgid "Next GC in %s minutes" +msgstr "Nästa GC om %s minuter" + +#: wp-cache.php:1982 +#, php-format +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "Utgångna filer är filer äldre än %s sekunder. Dom används fortfarande av tillägget och raderas periodvis." + +#: wp-cache.php:1993 +msgid "Delete Expired" +msgstr "Radera utgångna" + +#: wp-cache.php:1999 +#: wp-cache.php:2011 +#: wp-cache.php:2174 +msgid "Delete Cache" +msgstr "Radera Cache" + +#: wp-cache.php:2011 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Radera Super Cache cachade filer (öppnas i nytt fönster)" + +#: wp-cache.php:2150 +#, php-format +msgid "%1$s is Digg proof thanks to caching by %2$s" +msgstr "%1$s är Digg säker tack vare cachning av %2$s" + +#: wp-cache.php:2183 +#, php-format +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "WP Super Cache måste ställas in. Gå till administrations sidan för att aktivera och konfigurera tillägget." + +#: wp-cache.php:2189 +msgid "Settings" +msgstr "Inställningar" + +#: wp-cache.php:2199 +#, php-format +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "WP Super Cache är inaktiverat. Var vänlig gå till tilläggets administrations sida för att aktivera cachning." + +#: wp-cache.php:2218 +#, php-format +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] Fram sidan är gzippad! Var vänlig rensa cachen!" + +#: wp-cache.php:2218 +#, php-format +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "Var vänlig gå till %s för att rensa cachen eftersom framsidan av din sida nu laddas ner!" + +#: wp-cache.php:2221 +#, php-format +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] Framsidan är gzippad! Cachen rensad!" + +#: wp-cache.php:2221 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "Cachen till din blogg har rensats för framsidan av din sida laddas nu ner. Var vänlig gå till %s för att bekräfta att cachen har rensats." + +#: wp-cache.php:2228 +#, php-format +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] Framsidan är inte rätt! Var vänlig rensa cachen!" + +#: wp-cache.php:2228 +#, php-format +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "Var vänlig gå till %1$s för att rensa cachen eftersom framsidan på din sida inte är rätt och saknar texten, \"%2$s\"!" + +#: wp-cache.php:2231 +#, php-format +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] Framsidan är inte rätt! Cachen är rensad!" + +#: wp-cache.php:2231 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "Cachen till din blogg har rensats för framsidan på din sida saknar texten \"%2$s\". Var vänlig gå till %1$s för att bekräfta att cachen har rensats." + +#: wp-cache.php:2236 +#, php-format +msgid "[%s] Front page check!" +msgstr "[%s] Framsida kontrollerad!" + +#: wp-cache.php:2236 +#, php-format +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "WP Super Cache har kontrollerat framsidan på din blogg. Var vänlig gå till %s om du vill inaktivera detta." + +#: wp-cache.php:2279 +msgid "Cannot update .htaccess" +msgstr "Kan inte uppdatera .htaccess" + +#: wp-cache.php:2279 +#, php-format +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "Filen %s.htaccess kan inte ändras av webservern. Var vänlig rätta till detta genom att använda chmod kommandot eller din ftp klient." + +#: wp-cache.php:2279 +msgid "Refresh this page when the file permissions have been modified." +msgstr "Uppdatera den här sidan när filrättigheterna har ändrats." + +#: wp-cache.php:2279 +#, php-format +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "Alternativt, du kan redigera din %s.htaccess fil manuellt och lägga till följande kod (före alla WordPress regler):" + +#: wp-cache.php:2283 +#, php-format +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "För att visa statiska html filer måste din server ha korrekta mod_rewrite regler tillagda i en fil som heter %s.htaccess" + +#: wp-cache.php:2284 +msgid "You can edit the file yourself add the following rules." +msgstr "Du kan redigera filen själv och lägga till följande regler." + +#: wp-cache.php:2285 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr "Kontrollera att de syns före alla existerande WordPress regler." + +#: wp-cache.php:2293 +msgid "Update Mod_Rewrite Rules" +msgstr "Uppdatera Mod_Rewrite Reglerna" + +#: wp-cache.php:2389 +#, php-format +msgid "[%1$s] Cache Preload Started" +msgstr "[%1$s] Cacheförladdning startad" + +#: wp-cache.php:2391 +#, php-format +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] Uppdaterar inlägg från %2$d till %3$d" + +#: wp-cache.php:2402 +#, php-format +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s] %2$d inlägg uppdaterade" + +#: wp-cache.php:2402 +msgid "Refreshed the following posts:" +msgstr "Uppdaterade följande inlägg:" + +#: wp-cache.php:2411 +#, php-format +msgid "Scheduling next preload refresh in %d minutes." +msgstr "Schemalägger nästa uppdatering av förladdning om %d minuter." + +#: wp-cache.php:2421 +#, php-format +msgid "[%s] Cache Preload Completed" +msgstr "[%s] cacheförladdning färdig." + +#: wp-cache.php:2421 +msgid "Cleaning up old supercache files." +msgstr "Rensar upp gamla supercachefiler." + +#: wp-cache.php:2462 +#, php-format +msgid "[%s] Preload may have stalled." +msgstr "[%s] Förladdning kan ha hängt sig." + +#: wp-cache.php:2462 +#, php-format +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"Förladdning har startats om.\n" +"%s" + +#~ msgid "WP Super Cache Manager" +#~ msgstr "WP Super Cache Manager" + +#~ msgid "Why your configuration may not be changed" +#~ msgstr "Varför din konfiguration inte kan ändras" + +#~ msgid "Why" +#~ msgstr "Varför" + +#~ msgid "ON" +#~ msgstr "PÅ" + +#~ msgid "WP Cache and Super Cache enabled" +#~ msgstr "WP Cache och Super Cache aktiverat" + +#~ msgid "HALF ON" +#~ msgstr "HALV PÅ" + +#~ msgid "Super Cache Disabled, only legacy WP-Cache caching." +#~ msgstr "Super Cache inaktiverad, endast ärvd WP-Cache cachning." + +#~ msgid "OFF" +#~ msgstr "AV" + +#~ msgid "WP Cache and Super Cache disabled" +#~ msgstr "WP Cache och Super Cache inaktiverat" + +#~ msgid "Don’t cache pages for logged in users." +#~ msgstr "Cacha inte sidor för inloggade användare." + +#~ msgid "" +#~ "Cache rebuild. Serve a supercache file to anonymous users while a new " +#~ "file is being generated. Recommended for very busy websites with " +#~ "lots of comments. Makes \"directly cached pages\" and \"Lockdown mode\" " +#~ "obsolete." +#~ msgstr "" +#~ "Återbygg cache. Visa en supercachad fil till anonyma användare medan en " +#~ "ny fil genereras. Rekommenderas för väldigt upptagna hemsidor " +#~ "med många kommentarer. Gör \"direkt cachade sidor\" och \"Lockdown mode\" " +#~ "förlegade." + +#~ msgid "" +#~ "List the newest cached pages (may be expensive to run on busy sites, use " +#~ "with caution.)" +#~ msgstr "" +#~ "Visa de nyast cachade sidorna (kan vara tungt att köra på belastade " +#~ "sidor, använd med försiktighet.)" + +#~ msgid "" +#~ "Uninstall using the uninstall script to remove files and directories created by the " +#~ "plugin. (Please see readme." +#~ "txt for instructions on uninstalling this script.)" +#~ msgstr "" +#~ "Avinstallera genom att använda avinstallations skriptet för att ta bort filer och kataloger " +#~ "skapade av tillägget. (Var vänlig läs readme.txt för instruktioner om hur du avinstallerar det " +#~ "här skriptet.)" + +#~ msgid "" +#~ "%1$s really makes your blog go faster. Make it go faster* by " +#~ "buying me an Amazon gift card! Make it out to \"%3$s" +#~ "\" for whatever amount you want. Every penny helps!" +#~ msgstr "" +#~ "%1$s gör verkligen din blogg snabbare. Gör den ännu snabbare * " +#~ "genom att köpa mig ett Amazon presentkort! Ställ ut " +#~ "det till \"%3$s\" på vilken summa du vill. Varje penny hjälper!" + +#~ msgid "" +#~ "If Amazon isn’t your thing, there’s also PayPal. Click the " +#~ "\"Donate\" button below or take a quick peek at my wishlist." +#~ msgstr "" +#~ "Om Amazon inte är din grej, finns det även PayPal. Klicka på \"Donate\" " +#~ "knappen nedan eller ta en snabb titt på min önskelista." + +#~ msgid "Thanks in advance!" +#~ msgstr "Tack på förhand!" + +#~ msgid "" +#~ "Ok, it won’t go any faster but you’ll make this plugin author " +#~ "very happy!" +#~ msgstr "" +#~ "Ok, det kommer inte gå ännu snabbare, men du kommer göra det här " +#~ "tilläggets skapare väldigt glad!" + +#~ msgid "Don’t show me this again." +#~ msgstr "Visa mig inte det här igen." + +#~ msgid "Hide" +#~ msgstr "Dölj" + +#~ msgid "" +#~ "He blogs at %1$s, posts photos at %2$s and wishes he " +#~ "had more time to read and relax." +#~ msgstr "" +#~ "Han bloggar på %1$s, postar bilder på %2$s och önskar han hade mer tid att läsa och koppla av." + +#~ msgid "Super Cache Compression" +#~ msgstr "Super Cache komprimering" + +#~ msgid "Compression is enabled by default when in HALF ON mode." +#~ msgstr "Komprimering är aktiverat som standard i HALV PÅ läge." + +#~ msgid "Super Cache compression is now disabled." +#~ msgstr "Super Cache komprimering är nu inaktiverat." + +#~ msgid "Super Cache compression is now enabled." +#~ msgstr "Super Cache komprimering är nu aktiverat." + +#~ msgid "Update Compression" +#~ msgstr "Updatera komprimering" + +#~ msgid "You must edit the file yourself add the following rules." +#~ msgstr "Du måste redigera filen själv och lägga till följande regler." + +#~ msgid "Debug Settings" +#~ msgstr "Felsöknings inställningar" diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-tr_TR.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-tr_TR.mo new file mode 100644 index 0000000000000000000000000000000000000000..32522843f32cf907791bcd6ec30c742a396f1077 GIT binary patch literal 70771 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

      E@2Gw_%6G z(<^@k)?_@-NJx6QM2uZTpCYR-b-@)g)ifwhN84R~zNgyKCl+lrgX-en^ghUTS{xX` z0;wp-w1btL!&2A?Jv6fV@;mQ)c=V;yKe8+o3R&L4BiFO3&%3VYZ_i;!a^82_^-KJ^ zIx~3Jsxqc%$+J8J!NtRb{O{$ss?C+`F&B{2DGBF_8eqn_U{_XaCM>ixk23>`;b@%_d_O5;ObckBB}gf|7=M^=A}uqRk&bh9)E| z8wOIR22h0-(9kkHKc2 zqQK<0Pfw>mJ^Su7fWJ(~Xp>m&zYe{W0KD-S(KDBckbBd$>x?Za&+gRd`*7OOJGG}& zV7Za0mCI8*;XFD0{>PtNaFJ!qpd?N7+xI5_fxggAurA_isI?&cwDhI}ZDc}a`J$Xs zu77P;MXjGeQ~}~1+@cB*UB1r)++0|~oHy)st7tHqM8qbHM6~TDCi#Kq3G2*VUNZ3n zLLaFJiIVsC?U#!ND{}T89Eb3L}}BFSV^RAAAoY&Yo|x?PFPv} zw=B1^+Lo`2{xW5no>Y7r<>hO3&TV>lO{RQ}i+R*Vt6N7H zxzzgB<%Hr&?paHA)2u&i%5(5as8(KK9uonc@akwxTa!#(Fiv4xrCUhxc?4$*`C7HI>3Pn0 zPO=22?9DAk_XCzH4;wFmZDE3vijj;&+$MY{RlM}*Qx9s!rZr*bUcgk2ZlnXB`BxPd zb{pgOJ4#X6RVqD#4N<8MU$6sGy-w&%UX~{?SEA;M<1#2U42h(?`xXKC1^Kx(Pw34LVNe@@S?zp5O6)Pqb>NRcr8tPphl#MCZBXSM{U=&7wjb{O|R z<|1I&O~TT#E}s40r7>HTlCpeKIEuZxAWVPEMGqA8a2(MkDC!o$1bs|_AbP>jnsvxlxUsE|kXMVr zgyPsZ8Er6n!dDccM`F<>n4>d;rMm+eh^L5jI?|z6kgKU^msq#X-4rk}dNg-FCiNw& zEFul;Rn0^#)LUG8BZ_HL7w^i%t6L*4q=lc$F|P`ZxhoKZf%7kp znDwXq0msa5c=9jEn=_l8tmee8?Eb*8+KZ}jg-i1QIQ`%e_9B zm4k#>N$i}67}iBCE=!pyBoScvW{j3ehBuR+#vL@>xl4pIl21pX7xT9PI`P_4L$+eE zjbWSh?kjpAn^6pb`SKdnXGI5HdD9)hPY1c_qN;X3di2i7LkntLE+oAqAE>>X^AWEWVgMN-r>`q+uMb6aBjAn-Qw|=Uo3vu zzB<0xUha;c-Q5sfIQ|9bbNp(1xBB?;)42i(xIe#{KYxLXYQ;gDeaeUZD)9J5e4r>Z z5jP>h8W|wHdwuhQ`UmWA-eGz+w8x9t{JW&mA2L8M3iXS$ooxq;P0G(r#_}mlV6edx zG~!yK@x7NJ`SI&P;`dkvd8Nk_2;kJ!2O5UAc}PNWBhx%M4+e0lABz-oi3>wnqyT#R zW>z0jez~Uk3vo4G6X$fzocxstfzBjQ(Rhw|;D&_3Y2>mA*|7k6*}HX6YBT$P!;S7q zt=NxPJiNFO+K6>~@bN^wpGNcyEHq{u1p!P_?zm6!JrOfk-hO^FF|m5RQ}I|dtq A@Bjb+ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-tr_TR.po b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-tr_TR.po new file mode 100644 index 0000000..8f68a60 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-tr_TR.po @@ -0,0 +1,1617 @@ +msgid "" +msgstr "" +"Project-Id-Version: WP Super Cache\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-super-cache\n" +"POT-Creation-Date: 2011-01-05 14:52:03+00:00\n" +"PO-Revision-Date: \n" +"Last-Translator: Baris Unver \n" +"Language-Team: Baris Unver \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Turkish\n" +"X-Poedit-Country: TURKEY\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: ossdl-cdn.php:133 +msgid "Your website probably uses lots of static files. Image, Javascript and CSS files are usually static files that could just as easily be served from another site or CDN. Therefore this plugin replaces any links in the wp-content and wp-includes directories (except for PHP files) on your site with the URL you provide below. That way you can either copy all the static content to a dedicated host or mirror the files to a CDN by origin pull." +msgstr "Siteniz muhtemelen çok fazla statik dosya kullanıyordur. Görsel, JavaScript ve CSS dosyaları genellikle başka bir siteden veya bir CDN sisteminden kolayca sunabileceğiniz statik dosyalardır. Bu yüzden bu eklenti wp-content ve wp-includes dizinleri içerisindeki (PHP dosyaları haricindeki) tüm bağlantıları, aşağıda belirleyeceğiniz URL üzerinden sunacaktır. Bu şekilde tüm statik dosyalarınız sanal sunucunuza veya satın aldığınız CDN sistemine \"origin pull\" tekniğiyle aktarılacaktır." + +#: ossdl-cdn.php:134 +#: wp-cache.php:965 +msgid "The CDN Sync Tool plugin will help upload files to Amazon S3/Cloudfront if you would rather not depend on origin pull. See the plugin support forum if you have any queries about this plugin." +msgstr "CDN Eşleme Aracı eklentisi, eğer \"origin pull\" yöntemini istemezseniz Amazon S3/Cloudfront sistemlerine dosyaları otomatik olarak yükleyecektir. Yardıma ihtiyacınız olursa, eklenti destek forumunu kullanabilirsiniz (İngilizcedir)." + +#: ossdl-cdn.php:135 +msgid "WARNING: Test some static urls e.g., %s to ensure your CDN service is fully working before saving changes." +msgstr "UYARI: CDN hizmetinizin düzgün şekilde çalışıp çalışmadığını, %s gibi statik dosyaları önce bir test ederek anlayabilirsiniz." + +#: ossdl-cdn.php:136 +msgid "You can define different CDN URLs for each site on a multsite network." +msgstr "Çok siteli bir yapıya sahipseniz, her site için farklı CDN adresleri verebilirsiniz." + +#: ossdl-cdn.php:144 +msgid "Enable CDN Support" +msgstr "CDN Desteğini Etkinleştir" + +#: ossdl-cdn.php:147 +msgid "Off-site URL" +msgstr "Site dışı URL" + +#: ossdl-cdn.php:150 +msgid "The new URL to be used in place of %1$s for rewriting. No trailing / please.
      Example: %2$s." +msgstr "Yeniden yazım için %1$s yerine kullanılacak yeni adres. Adresin sonuna taksim (/ karakteri) koymayın lütfen..
      Örnek: %2$s." + +#: ossdl-cdn.php:154 +msgid "Include directories" +msgstr "Dizinleri dahil et" + +#: ossdl-cdn.php:157 +msgid "Directories to include in static file matching. Use a comma as the delimiter. Default is wp-content, wp-includes, which will be enforced if this field is left empty." +msgstr "Statik dosya eşlemesinde kullanılacak dizinler. Dizinleri virgüllerle ayırabilirsiniz. Varsayılan wp-content, wp-includes şeklindedir, kutu boş bırakılırsa bunlar kullanılacaktır." + +#: ossdl-cdn.php:161 +msgid "Exclude if substring" +msgstr "Hariç tutulacaklar" + +#: ossdl-cdn.php:164 +msgid "Excludes something from being rewritten if one of the above strings is found in the match. Use a comma as the delimiter like this, .php, .flv, .do, and always include .php (default)." +msgstr "Hariç tutulacak dosyaların uzantılarını buraya girin ve uzantıları virgülle ayırın. (örn. .php, .flv, .do) .php her zaman olmalıdır (ve varsayılandır)." + +#: ossdl-cdn.php:168 +msgid "Additional CNAMES" +msgstr "Ek CNAME'ler" + +#: ossdl-cdn.php:171 +msgid "These CNAMES will be used in place of %1$s for rewriting (in addition to the off-site URL above). Use a comma as the delimiter. For pages with a large number of static files, this can improve browser performance. CNAMEs may also need to be configured on your CDN.
      Example: %2$s" +msgstr "Bu CNAME'ler, yeniden yazım için %1$s yerine kullanılacaktır (yukarıda belirlediğiniz site dışı adrese ek olarak). Virgülle ayırın. Fazlaca statik dosyaya sahip sayfalar için bu seçenek tarayıcı performansını artırabilir. CNAME'lerin bazen CDN hizmetiniz için de ayarlanması gerekebilir.
      Example: %2$s" + +#: ossdl-cdn.php:176 +msgid "Save Changes" +msgstr "Değişiklikleri Kaydet" + +#: ossdl-cdn.php:178 +msgid "CDN functionality provided by OSSDL CDN Off Linker by Mark Kubacki" +msgstr "CDN kullanımı, Mark Kubacki tarafından yazılan OSSDL CDN Off Linker ile sağlanmaktadır" + +#: wp-cache.php:99 +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "Lütfen wp-super-cache/wp-cache-config-sample.php dosyasından %s /wp-cache-config.php dosyasını oluşturun." + +#: wp-cache.php:162 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "Uyarı! PHP Güvenli Mod (Safe Mode) Etkin!" + +#: wp-cache.php:163 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "SAFE MODE açık olduğu için bu eklentiyi kullanırken sorunlarla karşılaşabilirsiniz." + +#: wp-cache.php:167 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "Sunucunuz, dosya okuma/yazma işlemlerine izin verilmeden önce PHP betiğinin sahibini kontrol edecek şekilde ayarlanmış." + +#: wp-cache.php:168 +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "Siz veya bir yönetici, eklenti betiklerini çalıştıran kullanıcıyı sunucu kullanıcısıyla aynı yaparak sorunu çözebilirsiniz. %s/cache/ dizininin grup sahibi de aynı şekilde değişmelidir. Güvenli Mod yardım sayfasına bakarak ayrıntılı bilgi edinebilirsiniz." + +#: wp-cache.php:170 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "Siz veya başka bir yönetici bunu etkisizleştirmeli. \"güvenli mod\" bilgilendirme sayfasına gidip ayrıntılı bilgi alabilirsiniz. Ne yazık ki, bu ayar .htaccess ile etkisizleştirilemez; php.ini ayar dosyasının düzenlenmesi gerekiyor." + +#: wp-cache.php:176 +msgid "Permlink Structure Error" +msgstr "Kalıcı Bağlantı Yapısı Hatası" + +#: wp-cache.php:177 +msgid "A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks." +msgstr "Bu eklentinin çalışabilmesi için özel bir adres sisteminin ayarlı olması gerekiyor. Kalıcı Bağlantı Ayarları sayfasına gidip adres sisteminizi ayarlamalısınız." + +#: wp-cache.php:189 +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "Warning! Your hostname \"%s\" resolves to %s" + +#: wp-cache.php:190 +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "Sunucunuz, hostname'inizin %s şeklinde çözümlendiğini sanıyor. Bu eklentinin çöp toplama gibi bazı işlevleri (ve WordPress'in yazı zamanlama işlevi) bu şekilde düzgün çalışmayabilir." + +#: wp-cache.php:191 +#: wp-cache.php:205 +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "Lütfen readme.txt dosyasında, hata çözme bölümündeki 16. girdiyi okuyun." + +#: wp-cache.php:204 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "Ne yazık ki WordPress, wp-cron.php dosyasını bulamadı. Bu dosya, çöp toplama, yazı zamanlama gibi işlevleri yerine getirmesi için şarttır." + +#: wp-cache.php:219 +msgid "Cannot continue... fix previous problems and retry." +msgstr "Devam edilemiyor... önceki sorunları çözün ve tekrar deneyin." + +#: wp-cache.php:228 +msgid "Zlib Output Compression Enabled!" +msgstr "Zlib Çıktı Sıkıştırma Etkin!" + +#: wp-cache.php:229 +msgid "PHP is compressing the data sent to the visitors of your site. Disabling this is recommended as the plugin caches the compressed output once instead of compressing the same page over and over again. Also see #21 in the Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "PHP, ziyaretçilerinizin gördüğü verileri sıkıştırıyor. Bunu devre dışı bırakmak, eklentinin önbelleğe aldığı sayfaların tekrar tekrar sıkıştırılmaması için tavsiye edilir. (Hata Giderme bölümünde 21. maddeyi okuyun.) PHP.ini dosyanızı düzenleme yönergeleri için bu sayfayı okuyun." + +#: wp-cache.php:233 +msgid "Mod rewrite may not be installed!" +msgstr "Mod rewrite yüklenmemiş olabilir!" + +#: wp-cache.php:234 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use legacy or PHP modes." +msgstr "Mod_rewrite yüklü değil gibi gözüküyor. Bazen bu kontrol kesin değildir, özellikle Apache kullanmıyorsanız. Lütfen mümkünse mod_rewrite'ın yüklü olup olmadığını doğrulayın. Eklentinin önbellek dosyalarını sunabilmesi için bu özelliğin bulunması şarttır ama yoksa, eski tarz önbelleklemeyi veya PHP ile önbelleklemeyi de kullanabilirsiniz." + +#: wp-cache.php:239 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "Salt Okunur Mod. Ayarlar değiştirilemez." + +#: wp-cache.php:240 +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "WP Super Cache ayar dosyası %s/wp-cache-config.php düzenlenemiyor. Düzenleme yapılabilmesi için dosyanın sunucu tarafından yazılabilir olması gerekiyor." + +#: wp-cache.php:241 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "Bunu yapmanın basit bir yolu, dosyanın CHMOD izinlerini kısa bir süreliğine değiştirmektir. CHMOD 777 yapmanız yeterlidir ama sonrasında işlemi geri almayı, izinleri eski haline getirmeyi unutmayın." + +#: wp-cache.php:242 +msgid "Writeable:" +msgstr "Yazılabilir:" + +#: wp-cache.php:243 +msgid "Readonly:" +msgstr "Salt Okunur:" + +#: wp-cache.php:255 +msgid "Warning! %s is writeable!" +msgstr "Uyarı! %s yazılabilir!" + +#: wp-cache.php:256 +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "%s izinlerini düzenlemeli ve daha kısıtlayıcı hale getirmelisiniz. FTP istemcinizi kullanın veya aşağıdaki komutu uygulayın:" + +#: wp-cache.php:264 +msgid "Mobile rewrite rules detected" +msgstr "Tespit edilen mobil yeniden yazım kuralları (rewrite rules)" + +#: wp-cache.php:265 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"2.0\\ MMP|240x320\" and delete those." +msgstr "En iyi performans için \"Mobil cihaz desteği\"ni etkinleştirin veya .htaccess dosyasındaki mobil cihazlarla ilgili satırları kaldırın. Bunu yapmak için \"2.0\\ MMP|240x320\" ile başlayan iki satırı silmeniz yeterlidir." + +#: wp-cache.php:265 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "Normal ziyaretçilere bir etkisi olmayacaktır ama mobil kullanıcılar önbelleklenmemiş sayfaları göreceklerdir." + +#: wp-cache.php:271 +#: wp-cache.php:282 +msgid "Rewrite rules must be updated" +msgstr "Mod_Rewrite kuralları güncellenmeli" + +#: wp-cache.php:272 +#: wp-cache.php:283 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "Bu eklentinin ihtiyaç duyduğum yeniden yazım kuralları değişmiş veya yok olmuş." + +#: wp-cache.php:273 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "Mobil cihaz desteği, .htaccess dosyanıza fazladan kural eklenmesini gerektirir. Veya eski tarz önbelleklemeyi kullanabilirsiniz. Seçenekleriniz (zorluk sırasına göre) şunlar:" + +#: wp-cache.php:274 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "Eklentiyi Eski Tarz moduna getirin ve mobil cihaz desteğini aktifleştirin." + +#: wp-cache.php:275 +#: wp-cache.php:284 +msgid "Scroll down the Advanced Settings page and click the Update Mod_Rewrite Rules button." +msgstr "Gelişmiş Ayarlar sayfasında aşağılara doğru gidin ve Mod_Rewrite Kurallarını Güncelle düğmesine tıkayın." + +#: wp-cache.php:276 +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "%s.htaccess dosyanızda, # BEGIN WPSuperCache ile # END WPSuperCache arasındaki satırları (bu iki satır da dahil olmak üzere) silerek eklentinin ürettiği mod_rewrite kurallarını silebilirsiniz. Sayfayı yenilediğinizde eklenti yenisini üretecektir." + +#: wp-cache.php:277 +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ add these lines: (do it twice, once for each section)" +msgstr "Kuralları kendiniz ekleyin. %s.htaccess dosyasını düzenlemek için açın ve # BEGIN WPSuperCache ile # END WPSuperCache arasındaki satırları bulun. Birbirine çok benzeyen iki bölüm olacaktır. %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ satırının hemen altına şu satırları ekleyin: (iki bölüm için de birer defa yapmayı unutmayın)" + +#: wp-cache.php:290 +msgid "Required to serve compressed supercache files properly." +msgstr "Sıkıştırılmış supercache dosyalarını sunabilmek için gereklidir." + +#: wp-cache.php:290 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "Super Cache ile önbelleklenmiş sayfalarda, önbellekleme bilgilerinin girilmesi için gereklidir. IE7 kullanıcıları bu olmadan, önbelleğe alınmamış sayfaları görüntülemeye devam ederler." + +#: wp-cache.php:290 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "Super Cache ile önbelleklenmiş sayfalarda son kullanma tarihini belirleyin. Bu modül olmadan ziyaretçiler, sayfayı yenilediklerinde veya yorum bıraktıklarında yeni sayfayı göremeyebilirler." + +#: wp-cache.php:297 +msgid "Missing Apache Modules" +msgstr "Kayıp Apache Modülleri" + +#: wp-cache.php:298 +msgid "The following Apache modules are missing. The plugin will work in legacy mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "Aşağıdaki Apache modülleri eksik. Onlar olmadan eklenti eski tarz önbelleklemeyle çalışacaktır. Super Cache modunda ziyaretçileriniz, eski içerikle veya bozuk veriyle karşılaşabilir." + +#: wp-cache.php:456 +msgid "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file." +msgstr "Dikkat! Sıkıştırmayı etkinleştirmek istediniz fakat zlib.output_compression etkin durumda. Beni Oku dosyasının 'Hata Giderme' sayfasında 21 numaralı maddeye göz atın." + +#: wp-cache.php:547 +msgid "WP Super Cache Settings" +msgstr "WP Super Cache Ayarları" + +#: wp-cache.php:558 +msgid "Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced Settings Page by default." +msgstr "Not: Mod_rewrite veya eski tarz önbellekleme etkin. Varsayılan olarak Gelişmiş Ayarlar görüntüleniyor." + +#: wp-cache.php:569 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "Ayarların bulunduğu dosya değiştirildi, bazı değerler yanlış olabilir. \"Ayarlar\" menüsünden sayfayı tekrar yükleyip ayarları sıfırlayın." + +#: wp-cache.php:594 +msgid "Caching must be enabled to use this feature" +msgstr "Bu özelliği kullanabilmeniz için önbellekleme etkin olmalıdır." + +#: wp-cache.php:612 +#: wp-cache.php:743 +msgid "Cancel Cache Preload" +msgstr "Önbellek Önyüklemesi'ni Devre Dışı Bırak" + +#: wp-cache.php:620 +#: wp-cache.php:631 +msgid "Scheduled preloading of cache cancelled." +msgstr "Önbellek önyüklemesinin zamanlanması iptal edildi." + +#: wp-cache.php:657 +#: wp-cache.php:741 +msgid "Preload Cache Now" +msgstr "Önbellek Önyüklemesi'ni Şimdi Çalıştır" + +#: wp-cache.php:661 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "Önbellek önyüklemesinin zamanlanması 10 saniye içinde başlıyor." + +#: wp-cache.php:666 +msgid "Scheduled preloading of cache in %d minutes" +msgstr "Önbellek önyüklemesinin zamanlanması %d dakika içinde başlıyor" + +#: wp-cache.php:670 +msgid "This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now." +msgstr "Bu, site içerisindeki tüm yazı ve sayfaları tek tek önbelleğe alacaktır ve (botlar da dahil olmak üzere) ziyaretçiler bu oluşturulmuş Super Cache'li sayfaları görecektir. Google'daki sıralamanızı yükseltme açısından hız da önemli olduğu için bu seçenek faydalı olabilir." + +#: wp-cache.php:671 +msgid "Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "Yalnız önyükleme çok sayıda dosya oluşturur. Önbellekleme de en yeni yazıdan en eskisine kadar yapılır, dolayısıyla lütfen çok fazla (10 binden fazla) yazınız varsa yalnızca en yeni yazıları önyüklemeye alın. Paylaşımlı hosting'lerde bu özellikle önemlidir." + +#: wp-cache.php:672 +msgid "In ’Preload Mode’ regular garbage collection will only clean out old legacy files for known users, not the preloaded supercache files. This is a recommended setting when the cache is preloaded." +msgstr "Önyükleme Modu'nda düzenli çöp toplama yalnızca bilinen kullanıcılar için eski önbellek dosyalarını temizlemede kullanılır, Super Cache'li dosyalar etkilenmez. Önbellek önyüklemesi yapıldığında bu seçeneğin etkinleştirilmesi önerilir." + +#: wp-cache.php:676 +msgid "Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)" +msgstr "Önyüklenmiş önbelleği her %s dakikada bir yenile. (0 devre dışı bırakır, en az %d dakika yazılmalıdır.)" + +#: wp-cache.php:689 +msgid "all" +msgstr "tümü" + +#: wp-cache.php:702 +msgid "Preload %s posts." +msgstr "%s yazıyı önyüklemeye al." + +#: wp-cache.php:709 +msgid "Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "Önyükleme modu (çöp toplama yalnızca eski tarz önbelleklemede. Önerilir.)" + +#: wp-cache.php:712 +msgid "Send me status emails when files are refreshed." +msgstr "Dosyalar yenilendiğinde bana durum e-postaları gönder." + +#: wp-cache.php:717 +msgid "Many emails, 2 emails per 100 posts." +msgstr "Çok: 100 yazı önyüklemesi başına 2 e-posta." + +#: wp-cache.php:720 +msgid "Medium, 1 email per 100 posts." +msgstr "Orta: 100 yazı önyüklemesi başına bir e-posta." + +#: wp-cache.php:723 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "Az: Önyüklemenin başında ve sonunda 1'er e-posta." + +#: wp-cache.php:727 +msgid "Refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Önbellek %d saat, %d dakika ve %d saniye sonra yenilenecek." + +#: wp-cache.php:728 +msgid "Full refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Önbelleğin tamamı %d saat, %d dakika ve %d saniye sonra yenilenecek." + +#: wp-cache.php:734 +msgid "Currently caching from post %d to %d." +msgstr "Şu anda %d ile %d arasındaki yazılar önbelleğe alınıyor." + +#: wp-cache.php:738 +msgid "Page last cached: %s" +msgstr "Son önbelleğe alınan sayfa: %s" + +#: wp-cache.php:741 +msgid "Update Settings" +msgstr "Ayarları Güncelle" + +#: wp-cache.php:749 +msgid "Preloading of cache disabled. Please disable legacy page caching or talk to your host administrator." +msgstr "Önbellek önyüklemesi devre dışı. Lütfen eski tarz önbellekleme seçeneğini etkisizleştirin veya barındırıcı firmanızla görüşün." + +#: wp-cache.php:766 +#: wp-cache.php:862 +msgid "Caching" +msgstr "Önbellekleme" + +#: wp-cache.php:770 +msgid "Cache hits to this website for quick access." +msgstr "Bu siteye gelen ziyaretleri, daha hızlı erişim için önbelleğe alın." + +#: wp-cache.php:770 +#: wp-cache.php:771 +#: wp-cache.php:788 +#: wp-cache.php:793 +#: wp-cache.php:796 +#: wp-cache.php:797 +#: wp-cache.php:810 +#: wp-cache.php:865 +msgid "Recommended" +msgstr "Önerilen" + +#: wp-cache.php:771 +msgid "Use mod_rewrite to serve cache files." +msgstr "Önbellek dosyalarını sunmak için mod_rewrite kullan." + +#: wp-cache.php:772 +msgid "Use PHP to serve cache files." +msgstr "Önbellek dosyalarını sunmak için PHP kullan." + +#: wp-cache.php:773 +msgid "Legacy page caching." +msgstr "Eski tarz sayfa önbellekleme" + +#: wp-cache.php:774 +msgid "Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should use PHP caching." +msgstr "Mod_rewrite en hızlısıdır. PHP önbellekleme de çok hızlıdır ve kullanımı kolaydır. Eski tarz önbellekleme daha yavaştır ama daha esnektir ve bunun da kullanımı kolaydır. Yeni kullanıcılar PHP önbelleklemeyi denemelidir." + +#: wp-cache.php:780 +msgid "Miscellaneous" +msgstr "Diğer" + +#: wp-cache.php:786 +msgid "Warning! Compression is disabled as gzencode() function not found." +msgstr "Uyarı! Sıkıştırma devre dışı ve gzencode() fonksiyonu bulunamadı." + +#: wp-cache.php:788 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "Sayfalar daha hızlı yüklensin diye sayfaları sıkıştır." + +#: wp-cache.php:789 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching it on and off clears the cache." +msgstr "Sıkıştırma varsayılan olarak devre dışıdır çünkü bazı barındırıcılar (hosting firmaları) sıkıştırılmış dosyalarla sorun yaşarlar. Bu özelliği açmak veya kapamak önbelleği temizler." + +#: wp-cache.php:793 +msgid "304 Not Modified browser caching. Indicate when a page has not been modified since last requested." +msgstr "304 Not Modified tarayıcı önbelleklemesi. Son gösterimden beri sayfada bir değişiklik olmadıysa belirtir." + +#: wp-cache.php:794 +msgid "304 support is disabled by default because in the past GoDaddy had problems with some of the headers used." +msgstr "304 desteği varsayılan olarak devre dışıdır çünkü geçmişte GoDaddy, kullanılan header'larla ilgili sorun çıkarıyordu." + +#: wp-cache.php:796 +msgid "Don’t cache pages for known users." +msgstr "Giriş yapmış kullanıcılar veya düzenli yorumcular için sayfaların önbellekleme." + +#: wp-cache.php:797 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated." +msgstr "Önbellek yenileme. Yeni bir önbellek dosyası oluşturulurken ziyaretçilere eskisi gösterilir." + +# Digg is not commonly used in our language, thus it's irrevelant to translate the "Digg-proof" expression. I translated this entry as "Tell your visitors that how durable this blog is!" (Baris Unver, translator.) +#: wp-cache.php:798 +msgid "Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)" +msgstr "Ziyaretçilerinize bu blog'un ne kadar dayanıklı olduğunu duyurun! (blog'un footer kısmına bir mesaj eklenir.)" + +#: wp-cache.php:804 +#: wp-cache.php:1053 +#: wp-cache.php:1559 +msgid "Advanced" +msgstr "Gelişmiş" + +#: wp-cache.php:808 +msgid "Mobile device support." +msgstr "Mobil aygıt desteği." + +#: wp-cache.php:809 +msgid "Clear all cache files when a post or page is published." +msgstr "Bir yazı veya sayfa yayınlandığında önbelleği temizle." + +#: wp-cache.php:810 +msgid "Extra homepage checks. (Very occasionally stops homepage caching)" +msgstr "Fazladan anasayfa kontrolü. (Sık sık anasayfa önbelleklenmesi durur.)" + +#: wp-cache.php:811 +msgid "Only refresh current page when comments made." +msgstr "Sadece yorum yapıldığında sayfayı güncelle." + +#: wp-cache.php:812 +msgid "List the newest cached pages on this page." +msgstr "Bu sayfada son önbelleklenen sayfaları listele." + +#: wp-cache.php:814 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "Kabaca dosya kilitleme. Muhtemelen buna ihtiyacınız olmayacaktır ama eğer sunucunuz güçsüzse yardımcı olabilir. UYARI: Çok nadir de olsa sunucunuzu kilitleyebilir!" + +#: wp-cache.php:816 +msgid "Late init. Display cached files after WordPress has loaded. Most useful in legacy mode." +msgstr "Geç başlatma: WordPress yüklendikten sonra önbellek dosyalarını gösterme. Eski tarz önbelleklemede çok işe yarar." + +#: wp-cache.php:818 +msgid "Use object cache to store cached files." +msgstr "Önbellek dosyalarını depolamak için \"object cache\"yi kullan." + +#: wp-cache.php:818 +msgid "(Experimental)" +msgstr "(Deneysel)" + +#: wp-cache.php:825 +msgid "Note:" +msgstr "Not:" + +#: wp-cache.php:827 +msgid "Uninstall this plugin on the plugins page. It will automatically clean up after itself. If manual intervention is required then simple instructions are provided." +msgstr "Bu eklentiyi kaldır: Otomatik olarak kendi artıklarını temizler. Eğer elle müdahale gerektirirse, basit bir yönerge ile yol gösterir." + +#: wp-cache.php:828 +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "Bu eklentiyi kaldırıyorsanız, %sadvanced-cache.php ve cache-config.php dosyaları otomatik olarak kaldırılabilsin. (O dosyaların da yazılabilirliğini kontrol etmek de iyi olur!)" + +#: wp-cache.php:829 +msgid "Please see the readme.txt for instructions on uninstalling this script. Look for the heading, \"How to uninstall WP Super Cache\"." +msgstr "Lütfen eklentiyi kaldırmak için readme.txt dosyasındaki yönergelere başvurun. \"How to uninstall WP Super Cache\" bölümünü arayın." + +#: wp-cache.php:830 +msgid "Need help? Check the Super Cache readme file. It includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already have been answered." +msgstr "Yardıma ihtiyacınız mı var? Super Cache BeniOku dosyasını inceleyin. Bu belge; eklentiyi yüklemek için gerekli dokümantasyonu, Sık Sorulan Sorular'ı ve Hata Anlama ipuçlarını içerir. Yardım forumu (İngilizce) de mevcuttur, burada sorununuzun çözümünü bulabilirsiniz." + +#: wp-cache.php:833 +#: wp-cache.php:880 +msgid "Update Status" +msgstr "Durumu Güncelle" + +#: wp-cache.php:840 +msgid "Accepted Filenames & Rejected URIs" +msgstr "Kabul Edilecek Dosyalar & Reddedilecek Adresler" + +#: wp-cache.php:865 +msgid "Caching On" +msgstr "Önbellekleme Açık" + +#: wp-cache.php:866 +msgid "Caching Off" +msgstr "Önbellekleme Kapalı" + +#: wp-cache.php:867 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "Not: PHP önbelleklemeyi, önbelleğin yenilemeyi ve mobil tarayıcı desteğini etkinleştirir" + +#: wp-cache.php:877 +msgid "Notice: PHP caching enabled but Supercache mod_rewrite rules detected. Cached files will be served using those rules. If your site is working ok please ignore this message or you can edit the .htaccess file in the root of your install and remove the SuperCache rules." +msgstr "Not: PHP önbellekleme aktif durumda ama Super Cache için var olan mod_rewrite kuralları mevcut ve önbelleklenen sayfalar bu kurallara göre sunulacak. Eğer siteniz düzgün çalışıyorsa bu mesajı dikkate almanıza gerek yok ama .htaccess dosyasından Super Cache önbelleklemeyi sağlayan kuralları kaldırmanızda fayda var." + +#: wp-cache.php:882 +msgid "Cache Tester" +msgstr "Önbellek Testi" + +#: wp-cache.php:883 +msgid "Test your cached website by clicking the test button below." +msgstr "Önbelleklenmiş sitenizi aşağıdaki test düğmesine basarak sınayın." + +#: wp-cache.php:889 +msgid "Fetching %s to prime cache: " +msgstr "Fetching %s to prime cache: " + +#: wp-cache.php:891 +#: wp-cache.php:899 +#: wp-cache.php:907 +msgid "OK" +msgstr "Tamam" + +#: wp-cache.php:894 +msgid "Fetching first copy of %s: " +msgstr "%s dosyasının ilk kopyası alınıyor:" + +#: wp-cache.php:902 +msgid "Fetching second copy of %s: " +msgstr "%s dosyasının ikinci kopyası alınıyor:" + +#: wp-cache.php:910 +msgid "One or more page requests failed:" +msgstr "Bir veya birden fazla sayfa sorgusu başarısız:" + +#: wp-cache.php:929 +#: wp-cache.php:930 +msgid "Page %d: %d (%s)" +msgstr "Sayfa %d: %d (%s)" + +#: wp-cache.php:936 +msgid "Page 1: %s" +msgstr "Sayfa 1: %s" + +#: wp-cache.php:937 +msgid "Page 2: %s" +msgstr "Sayfa 2: %s" + +#: wp-cache.php:938 +msgid "The timestamps on both pages match!" +msgstr "İki sayfanın zaman damgaları uyuşuyor!" + +#: wp-cache.php:940 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "Sayfalar birbirini tutmuyor! Zaman damgaları birbirinden farklı veya bulunamadı!" + +#: wp-cache.php:947 +msgid "Send non-secure (non https) request for homepage" +msgstr "Güvenliksiz (https'siz) anasayfa sorgusu gönder" + +#: wp-cache.php:948 +msgid "Test Cache" +msgstr "Önbelleği Test Et" + +#: wp-cache.php:952 +msgid "Delete Cached Pages" +msgstr "Önbelleğe Alınan Sayfaları Sil" + +#: wp-cache.php:953 +msgid "Cached pages are stored on your server as html and PHP files. If you need to delete them use the button below." +msgstr "Önbelleklenen sayfalar, sunucunuzda HTML ve PHP sayfaları halinde depolanır. Bunları silmek isterseniz aşağıdaki düğmeye tıklayın." + +#: wp-cache.php:956 +#: wp-cache.php:2089 +#: wp-cache.php:2101 +#: wp-cache.php:2264 +msgid "Delete Cache" +msgstr "Önbelleği Temizle" + +#: wp-cache.php:960 +msgid "Recommended Links and Plugins" +msgstr "Tavsiye Edilen Bağlantılar ve Eklentiler" + +#: wp-cache.php:961 +msgid "Caching is only one part of making a website faster. Here are some other plugins that will help:" +msgstr "Önbellekleme, bir siteyi hızlandırmak için atılan adımlardan yalnızca bir tanesidir. Sitenizi hızlandırmaya yardımcı olacak başka eklentiler de mevcuttur:" + +#: wp-cache.php:962 +msgid "WP Minify reduces the number of files served by your web server by joining Javascript and CSS files together. Alternatively you can use WPSCMin, a Supercache plugin that minifies cached pages. It does not however join JS/CSS files together." +msgstr "WP Minify, CSS ve JavaScript dosyalarını birleştirerek sitenize yapılan HTTP sorgularını azaltır. Alternatif olarak, önbelleklenen sayfaları sıkıştıran bir Super Cache eklentisi olan WPSCMin'i kullanabilirsiniz. Ama bu eklenti JS ve CSS dosyalarını birleştirmez." + +#: wp-cache.php:963 +msgid "Yahoo! Yslow is an extension for the Firefox add-on Firebug. It analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. Also try the performance tools online at GTMetrix." +msgstr "Yahoo! Yslow, Firefox'un Firebug eklentisinin bir alt eklentisidir. Sayfaları analiz etmeye yarar ve yüksek performanslı sayfalarda kullanılan bazı kurallara dayanarak sitenizi hızlandırmak için öneriler sunar. Alternatif olarak, YSlow testi de içeren GTMetrix performans araçlarını deneyebilirsiniz." + +#: wp-cache.php:964 +msgid "Use Google Libraries allows you to load some commonly used Javascript libraries from Google webservers. Ironically it may reduce your Yslow score." +msgstr "Google Kütüphanelerini kullanarak sık kullanılan JavaScript kütüphanelerini oradan yükletebilirsiniz. İlginçtir, bu YSlow skorunuzu düşürebilir." + +#: wp-cache.php:966 +msgid "Advanced users only: Speed up your site with Caching and cache-control explains how to make your site more cacheable with .htaccess rules." +msgstr "Yalnızca ileri düzey kullanıcılar için: \"Speed up your site with Caching and cache-control\" isimli belge (İngilizce), sitenizin önbelleklenme sürecini geliştirmek için .htaccess önerileri barındırıyor." + +#: wp-cache.php:967 +msgid "Advanced users only: Install an object cache. Choose from Memcached, XCache, eAcccelerator and others." +msgstr "Yalnızca ileri düzey kullanıcılar için: Bir obje önbellekleme yöntemi kullanın. Memcached, XCache, eAcccelerator ve benzeri örnekler mevcuttur." + +#: wp-cache.php:978 +msgid "Make WordPress Faster" +msgstr "WordPress'i hızlandır!" + +#: wp-cache.php:979 +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "%1$s, %2$s tarafından geliştirilmiştir ve diğer birçok kullanıcının katkısıyla hala gelişmektedir." + +#: wp-cache.php:980 +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "Blogu %1$s ve fotoğrafları %2$s adreslerindedir." + +#: wp-cache.php:981 +msgid "Please say hi to him on %s too!" +msgstr "%s adresinden bi' selam çakmayı da unutmayın!" + +#: wp-cache.php:982 +msgid "Need Help?" +msgstr "Yardıma mı İhtiyacınız Var?" + +#: wp-cache.php:984 +msgid "Installation Help" +msgstr "Kurulum Yardımı" + +#: wp-cache.php:985 +msgid "Frequently Asked Questions" +msgstr "Sık Sorulan Sorular" + +#: wp-cache.php:986 +msgid "Support Forum" +msgstr "Destek Forumu" + +#: wp-cache.php:988 +msgid "Rate This Plugin!" +msgstr "Bu Eklentiyi Derecelendirin!" + +#: wp-cache.php:989 +msgid "Please rate this plugin and tell me if it works for you or not. It really helps development." +msgstr "Lütfen eklentinin işinize yarayıp yaramadığını derecelendirin. Eklentinin gelişimine katkıda bulunmuş olacaksınız." + +#: wp-cache.php:998 +msgid "Cached pages since %1$s : %2$s" +msgstr "%1$s 'den/'dan beri önbelleklenen sayfalar: %2$s" + +#: wp-cache.php:999 +msgid "Newest Cached Pages:" +msgstr "Son Önbelleklenen Sayfalar:" + +#: wp-cache.php:1003 +msgid "Cached %s seconds ago" +msgstr "%s saniye önce önbelleklendi" + +#: wp-cache.php:1006 +msgid "(may not always be accurate on busy sites)" +msgstr "(çok ziyaret edilen sitelerde tam olarak doğru olmayabilir)" + +#: wp-cache.php:1025 +msgid "Cache plugins are PHP scripts that live in a plugins folder inside the wp-super-cache folder. They are loaded when Supercache loads, much sooner than regular WordPress plugins." +msgstr "Bu eklentiler, WP Super Cache eklenti dizininin içerisinde bir başka eklentiler klasöründe bulunan PHP betikleridir. Etkinleştirildiğinde, WP Super Cache yüklendikten hemen sonra yüklenirler." + +#: wp-cache.php:1026 +msgid "This is strictly an advanced feature only and knowledge of both PHP and WordPress actions is required to create them." +msgstr "Bu ileri düzey bir özelliktir ve PHP ile WordPress konusunda engin bilgi ve tecrübeye sahip kişiler tarafından yaratılmalıdır." + +#: wp-cache.php:1036 +msgid "Available Plugins" +msgstr "Mevcut Eklentiler" + +#: wp-cache.php:1053 +msgid "Easy" +msgstr "Kolay" + +#: wp-cache.php:1053 +msgid "CDN" +msgstr "CDN" + +#: wp-cache.php:1053 +msgid "Contents" +msgstr "İçerik" + +#: wp-cache.php:1053 +msgid "Preload" +msgstr "Önyükleme" + +#: wp-cache.php:1053 +msgid "Plugins" +msgstr "Eklentiler" + +#: wp-cache.php:1053 +msgid "Debug" +msgstr "Hata Ayıklama" + +#: wp-cache.php:1084 +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "Not: WP Super Cache mod_rewrite kural kontrolleri, blog ağının ana sitesi haricinde devre dışıdır." + +#: wp-cache.php:1086 +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on on the main site of this network." +msgstr "Not: WP Super Cache mod_rewrite kural kontrolleri, blog ağının ana sitesi haricinde devre dışıdır." + +#: wp-cache.php:1096 +msgid "Mod Rewrite Rules" +msgstr "Mod_Rewrite Kuralları" + +#: wp-cache.php:1102 +msgid "WordPress MU Detected" +msgstr "WordPress MU Saptandı" + +#: wp-cache.php:1102 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "Ne yazık ki, WordPress MU ile çalışırken mod_rewrite kuralları otomatik olarak güncellenememektedir. Lütfen .htaccess dosyanızı açın ve aşağıdaki mod_rewrite kurallarını, diğer kuralların üstüne yerleştirin." + +#: wp-cache.php:1104 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Mod_Rewrite kuralları güncellenemiyor!" + +#: wp-cache.php:1105 +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "Kuralların otomatik olarak güncellenebilmesi için %s.htaccess dosyası içerisindeki kurallar BEGIN ve END yorum satırlarının arasında bulunmalıdır. Aşağıdaki gibi gözükürler ve WordPress'in kendi mod_rewrite kurallarının üstündedirler:" + +#: wp-cache.php:1107 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr ".htaccess dosyanızı güncelledikten sonra bu sayfayı yenileyin." + +#: wp-cache.php:1111 +msgid "Thank you for upgrading." +msgstr "Yükselttiğiniz için teşekkürler." + +#: wp-cache.php:1111 +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "Eklentiyi yüklediğinizden beri mod_rewrite kuralları değişti. Yenilerinin konabilmesi için öncekileri kaldırmanız gerekiyor. .htaccess dosyanızı düzenledikten sonra bu sayfayı yenileyin. Elle düzenlemek isterseniz, şu satırı şu şekilde değiştirin: %1$s ki şu şekilde gözüksün: %2$s Yapılan değişiklikler şöyle: \"HTTP_COOKIE\" yerine \"HTTP:Cookie\" yazılıyor ve \"wordpressuser\" yerine de \"wordpress\" geliyor. Bu WordPress 2.5 ile ilgili bir değişikliktir ama kendinizi cesur hissediyorsanız önceki sürümlerle de uyumludur." + +#: wp-cache.php:1115 +msgid "Trailing slash check required." +msgstr "Son taksim (/ karakteri) kontrolü gerekli." + +#: wp-cache.php:1115 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "Anlaşılan blog sayfalarınızın adreslerinin sonu \"/\" ile bitiyor (buna son taksim denir). Maalesef siz bu eklentiyi yükledikten sonra WordPress içerisinde, \"/\" ile bitmeyen adreslerin \"/\" ile biten sayfalara yönlenmediği bir bug bulundu. Bunu düzeltmek için, .htaccess dosyanızı açıp aşağıdaki kuralları, orada iki grup halinde bulunan Super Cache kurallarına eklemelisiniz:" + +#: wp-cache.php:1117 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "Kuralların nereye konacağını ve tüm kuralları, aşağıdaki \"mod_rewrite kurallarını görüntüle\" düğmesine tıklayarak görebilirsiniz." + +#: wp-cache.php:1131 +msgid "Mod Rewrite rules updated!" +msgstr "Mod_Rewrite kuralları güncellendi!" + +#: wp-cache.php:1132 +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "%s.htaccess dosyası, uygun mod_rewrite kuralları eklenecek şekilde düzenlendi. Lütfen aşağıdakiyle karşılaştırıp doğru olduğunu kontrol edin:" + +#: wp-cache.php:1134 +msgid "Mod Rewrite rules must be updated!" +msgstr "Mod_Rewrite kuralları güncellenmeli!" + +#: wp-cache.php:1135 +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "%s.htaccess dosyanız sunucunuz tarafından düzenlenemiyor ama gerekli mod_rewrite kurallarının düzenlenmesi şart. Dosya içerisindeki normal WordPress kurallarının üstüne yazılması gereken kodlar şu şekilde:" + +#: wp-cache.php:1140 +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "%s.htaccess dosyanızda WP Super Cache'nin mod_rewrite kuralları saptandı.
      Aşağıdaki bağlantıya tıklayarak dosyaya hangi satırların eklendiğini görüntüleyebilirsiniz. Eğer eklentinin sürümünü güncellediyseniz, bu kuralların eklenip eklenmediğini kontrol etmelisiniz." + +#: wp-cache.php:1143 +msgid "A difference between the rules in your .htaccess file and the plugin rewrite rules has been found. This could be simple whitespace differences but you should compare the rules in the file with those below as soon as possible. Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "Eklentinin yazmış olması gereken ile .htaccess dosyanızda var olan mod_rewrite kurallarının birbirinden farklı olduğu saptandı. Arada boşluk veya boş satır farkları da olsa, dosyada yazılı kurallarla olması gereken kuralları karşılaştırmanızı öneririz. \"Mod_rewrite Kurallarını Güncelle\" düğmesine tıklayıp kuralları güncelleyebilirsiniz." + +#: wp-cache.php:1146 +msgid "View Mod_Rewrite Rules" +msgstr "Mod_Rewrite Kurallarını Görüntüle" + +#: wp-cache.php:1150 +#: wp-cache.php:2380 +msgid "Rules must be added to %s too:" +msgstr "Kurallar %s dosyasına da eklenmeli:" + +#: wp-cache.php:1158 +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "%s.htaccess dosyasında gzip'leme kuralları oluşturuldu." + +#: wp-cache.php:1165 +msgid "Fix Configuration" +msgstr "Ayarları Düzelt" + +#: wp-cache.php:1168 +msgid "Restore Default Configuration" +msgstr "Varsayılan Ayarları Geri Yükle" + +#: wp-cache.php:1176 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "Yorum onaylama sistemi etkin; yorumunuzun yayınlanması biraz zaman alabilir." + +#: wp-cache.php:1201 +msgid "Lock Down:" +msgstr "Tecrit:" + +#: wp-cache.php:1201 +#: plugins/awaitingmoderation.php:35 +#: plugins/badbehaviour.php:66 +#: plugins/domain-mapping.php:61 +msgid "Disabled" +msgstr "Etkisiz" + +#: wp-cache.php:1201 +#: plugins/awaitingmoderation.php:34 +#: plugins/badbehaviour.php:65 +#: plugins/domain-mapping.php:60 +msgid "Enabled" +msgstr "Etkin" + +#: wp-cache.php:1202 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "Büyük ziyaretçi akınları için tecrit modunu etkinleştirebilirsiniz. Etkinleştirildiğinde; yeni yorum girilse bile sayfa, önbellekli haliyle sunulur yani yeni yorumlar gözükmez, önbellekteki sabit dosya görüntülenir." + +#: wp-cache.php:1203 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "Eklenti Geliştiricilerine: Eklentinizin tecrit moduyla uyum sağlaması için \"WPLOCKDOWN\" sabitini inceleyin. Aşağıdaki kodu eklentinize eklediğinizde eklentiniz WPLOCKDOWN ayarlarıyla uyumlu davranacaktır." + +#: wp-cache.php:1205 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "Üzgünüm; blog'umu kilit altına aldım. Güncellemeler sonra görüntülenebilecek." + +#: wp-cache.php:1209 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "Blog'unuz tecrit moduna alındı. Yeni yorumlar gelse bile yalnızca Super Cache'nin önbellekli sayfaları görüntülenecek." + +#: wp-cache.php:1211 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "Blog'unuz tecrit modunda değil. Yeni yorumlar her zamanki gibi Super Cache önbellek dosyalarını yenileyecek." + +#: wp-cache.php:1214 +#: plugins/searchengine.php:61 +#: plugins/searchengine.php:76 +msgid "Disable" +msgstr "Etksizileştir" + +#: wp-cache.php:1214 +#: plugins/searchengine.php:74 +msgid "Enable" +msgstr "Etkinleştir" + +#: wp-cache.php:1217 +msgid "Lock Down" +msgstr "Tecrit" + +#: wp-cache.php:1225 +msgid "Directly Cached Files" +msgstr "Direkt Önbelleklenen Dosyalar" + +#: wp-cache.php:1283 +msgid "%s removed!" +msgstr "%s kaldırıldı!" + +#: wp-cache.php:1291 +#: wp-cache.php:1293 +#: plugins/badbehaviour.php:83 +msgid "Warning!" +msgstr "Uyarı!" + +#: wp-cache.php:1291 +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "Bu ayarı etkinleştirebilmeniz için %s yazılabilir olmalı. Güvenlik açısından sayfanız oluşturulduğunda lütfen yazma ayarlarını geri alın." + +#: wp-cache.php:1293 +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "%s yazılabilir durumda. Güvenlik açısından sayfanız oluşturulduktan sonra yazılabilirlik ayarlarını geri almanız önerilir." + +#: wp-cache.php:1307 +msgid "Existing direct page" +msgstr "Var olan direkt sayfa" + +#: wp-cache.php:1307 +msgid "Delete cached file" +msgstr "Önbellekli dosyayı sil" + +#: wp-cache.php:1312 +msgid "Add direct page:" +msgstr "Direkt sayfa ekle:" + +#: wp-cache.php:1314 +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "Direkt olarak önbelleklenen dosyalar %s dizininden, blogunuzun yaşadığı yerden yaratılmıştır. Bu özellik sadece bir anda çok yüksek trafik almayı beklediğiniz zamanlarda işe yarar. (örn. Ekşi Sözlük, İnci Sözlük gibi yerlerden gelen toplu ziyaretler)" + +#: wp-cache.php:1316 +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "Örnek: %1$sabout/ sayfasını önbelleklemek için, %1$shakkinda/ veya /hakkinda/ yazmalısınız. Sayfa, bir sonraki ziyaretçinin ziyaretinde önbelleğe alınacaktır." + +#: wp-cache.php:1317 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "Direkt sayfaları silmek ve önbelleği boşaltmak için metin kutusunu boş bırakın." + +#: wp-cache.php:1322 +msgid "Update Direct Pages" +msgstr "Direkt Sayfaları Güncelle" + +#: wp-cache.php:1360 +msgid "Expiry Time & Garbage Collection" +msgstr "Zaman Aşımı & Çöp Toplama" + +#: wp-cache.php:1362 +msgid "Expire time:" +msgstr "Önbelleklenen dosyaların zaman aşımı:" + +#: wp-cache.php:1363 +msgid "seconds" +msgstr "saniye" + +#: wp-cache.php:1364 +msgid "Garbage Collection" +msgstr "Çöp Toplama" + +#: wp-cache.php:1364 +msgid "If the expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above." +msgstr "Zaman aşımını 1800 saniyeden (yarım saat) fazla olacak şekilde ayarladıysanız, çöp toplama 10 dakikada bir yapılır. Yarım saatten daha az ise, zaman aşımı süresinden 10 saniye sonra yapılır." + +#: wp-cache.php:1365 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 300 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. If you are using legacy caching aim to have less than 500 cached files if possible. You can have many times more cached files when using mod_rewrite or PHP caching." +msgstr "Süresi dolmuş önbellek sayfalarının silinmesi sunucuyu biraz yorar ama silinmemesi de yorar. Kalabalık bir sitede 300 saniye değeri uygundur. Farklı farklı süreleri test edip, süresi dolan sayfaların ne kadar durduğunu görebilirsiniz. Eski tarz önbelleklemeyi kullanıyorsanız, 500 önbellek sayfasını aşmamaya dikkat edin. PHP veya mod_rewrite ile önbellekleme yapıyorsanız, birkaç kat daha fazla dosya olmasının bir önemi yoktur." + +#: wp-cache.php:1366 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "Çöp toplamayı devre dışı bırakmak için bitiş süresini 0 yapın." + +#: wp-cache.php:1367 +msgid "Change Expiration" +msgstr "Zaman Aşımını Değiştir" + +#: wp-cache.php:1411 +msgid "Rejected User Agents" +msgstr "Reddedilecek Kullanıcı Temsilcisi (User Agent)" + +#: wp-cache.php:1412 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." + +#: wp-cache.php:1419 +msgid "Save UA Strings" +msgstr "KT Dizgilerini Kaydet" + +#: wp-cache.php:1442 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "Aşağıdaki sayfa türlerini hiçbir zaman önbellekleme. (Koşul Etiketleri (İngilizce) sayfasını ziyaret ederek tüm sayfa türleri hakkında bilgi edinebilirsiniz.)" + +#: wp-cache.php:1445 +msgid "Single Posts" +msgstr "Tekil yazı sayfaları" + +#: wp-cache.php:1446 +msgid "Pages" +msgstr "Sayfalar" + +#: wp-cache.php:1447 +msgid "Front Page" +msgstr "Ön Sayfa" + +#: wp-cache.php:1448 +msgid "Home" +msgstr "Anasayfa" + +#: wp-cache.php:1449 +msgid "Archives" +msgstr "Arşivler" + +#: wp-cache.php:1450 +msgid "Tags" +msgstr "Etiketler" + +#: wp-cache.php:1451 +msgid "Category" +msgstr "Kategori sayfaları" + +#: wp-cache.php:1452 +msgid "Feeds" +msgstr "Beslemeler" + +#: wp-cache.php:1453 +msgid "Search Pages" +msgstr "Arama sayfaları" + +#: wp-cache.php:1455 +#: wp-cache.php:1569 +msgid "Save" +msgstr "Kaydet" + +#: wp-cache.php:1472 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "Buraya, içeren sayfaları önbelleğe alınmamasını sağlayacak metinler (dosyalar DEĞİL) ekleyin. Örneğin, kalıcı bağlantı yapınızda yıl değişkeni kullandıysanız (yani yazı adreslerinizde yıllar varsa) ve geçen yılın yazılarını önbelleğe almak istemiyorsanız, örneğin '2004' yazmanız yeterli olacaktır. Eklenti, adresin içerisinde bu metinlerin varlığını kontrol edecek ve varsa o sayfayı önbelleğe almayacaktır." + +#: wp-cache.php:1478 +msgid "Save Strings" +msgstr "Dizgileri Kaydet" + +#: wp-cache.php:1494 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "Yukarıda belirtilen kurallara uysa da önbelleklenebilmesi için buraya dosya isimleri ekleyebilirsiniz." + +#: wp-cache.php:1500 +msgid "Save Files" +msgstr "Dosyaları kaydet" + +#: wp-cache.php:1541 +msgid "Currently logging to: %s" +msgstr "Şuraya kayıt yapılıyor: %s" + +#: wp-cache.php:1544 +msgid "Fix problems with the plugin by debugging it here. It can log them to a file in your cache directory." +msgstr "Eklentiyle ilgili sorunları, hata ayıklama modunu açarak buraya kaydettirebilirsiniz. Önbellek dizininizde oluşturulacak bir dosyaya kayıt yapılacaktır." + +#: wp-cache.php:1548 +msgid "Debugging" +msgstr "Hata Ayıklama" + +#: wp-cache.php:1548 +#: plugins/awaitingmoderation.php:40 +#: plugins/badbehaviour.php:71 +#: plugins/searchengine.php:69 +#: plugins/domain-mapping.php:66 +msgid "enabled" +msgstr "etkin" + +#: wp-cache.php:1549 +msgid "IP Address" +msgstr "IP Adresi" + +#: wp-cache.php:1549 +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(yalnızca bu IP adresinden yapılan raporlama isteklerini kabul et. Şu anki IP adresiniz %s)" + +#: wp-cache.php:1550 +msgid "Log level" +msgstr "Raporlama aşaması" + +#: wp-cache.php:1556 +msgid "(1 = less, 5 = more, may cause severe server load.)" +msgstr "(1 = hafif, 5 = ağır - sunucuya yük bindirebilir)" + +#: wp-cache.php:1559 +msgid "In very rare cases two problems may arise on some blogs:

      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "Çok nadir durumlarda, bloglarda iki farklı problem baş gösterebiliyor:
      1. Anasayfanın bir zip dosyası halinde inebilir.
      2. Anasayfa olarak sabit bir sayfa göstermeyi seçtiyseniz ve kalıcı bağlantı yapınız /%category%/%postname%/ şeklindeyse, anasayfa diye başka bir sayfa önbelleklenebilir.
      " + +#: wp-cache.php:1560 +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "WP Super Cache eklentisinde hata bulunmadığından aşağı yukarı eminim, varsa da çok nadir durumlarda görülüyordur ama bu konuda endişeleriniz varsa 5 dakikada bir kontrol edip sitenizin çalışır durumda olduğunu görebilirsiniz. Bir sorun çıkarsa size e-posta yollanacaktır." + +#: wp-cache.php:1562 +msgid "Check front page every 5 minutes." +msgstr "5 dakikada bir ön sayfayı kontrol edin." + +#: wp-cache.php:1563 +msgid "Front page text" +msgstr "Ön sayfa yazısı" + +#: wp-cache.php:1563 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "Anasayfanızda aranacak metin - eğer bu metin anasayfada bulunamazsa önbellek temizlenir. Devre dışı bırakmak için boş bırakın." + +#: wp-cache.php:1564 +msgid "Clear cache on error." +msgstr "Bir hatayla karşılaşıldığında önbelleği temizle." + +#: wp-cache.php:1565 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "Kontroller yapıldığında blog sahibine e-posta gönder. (test etmek için yararlı bir özellik)" + +#: wp-cache.php:1579 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "Hata: GZIP sıkıştırması etkin; wp-cache'i kullanabilmek için lütfen bu ayarı etkisizleştirin." + +#: wp-cache.php:1626 +#: wp-cache.php:1792 +msgid "Warning" +msgstr "Uyarı" + +#: wp-cache.php:1626 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "GZIP sıkıştırması WordPress için etkin durumda, onu etkisizleştirene kadar wp-cache atlanacak." + +#: wp-cache.php:1688 +#: wp-cache.php:1693 +#: wp-cache.php:1725 +#: wp-cache.php:1730 +#: wp-cache.php:1736 +msgid "Error" +msgstr "Hata" + +#: wp-cache.php:1688 +msgid "Your cache directory ($cache_path) did not exist and couldn’t be created by the web server. Check %s permissions." +msgstr "Önbellek dizininiz ($cache_path) bulunamadı ve sunucu tarafından da oluşturulamadı. %s dosya izinlerini kontrol edin." + +#: wp-cache.php:1693 +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "Önbellek dizininiz (%1$s) veya %2$s, eklentinin çalışabilmesi için yazılabilir olmalıdır. Lütfen tekrar kontrol edin." + +#: wp-cache.php:1725 +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "WP-Cache ayar dosyanız (%s) çok eski ve yenisi de sunucu tarafından oluşturulamıyor. Lütfen dosyayı silip bu sayfayı yenileyin." + +#: wp-cache.php:1730 +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "Ayar dosyası bulunamıyor ve %1$s dizini (%2$s) sunucu tarafından yazılamıyor. Lütfen izinleri kontrol edin." + +#: wp-cache.php:1736 +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "Örnek WP-Cache ayar dosyası (%s) yerinde yok. Lütfen yüklemenizi gözden geçirin." + +#: wp-cache.php:1792 +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "%s/advanced-cache.php bulunamadı veya güncellenemiyor." + +#: wp-cache.php:1793 +msgid "1. If it already exists please delete the file first." +msgstr "1. Eğer hala varsa lütfen ilk satırı silin." + +#: wp-cache.php:1794 +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. %1$s dizinini, FTP veya sunucu yazılımınızla yazılabilir hale getirin (chmod 777 %1$s) ve sayfayı yenileyin. Bu yalnızca geçici bir işlem; sonrasında ayarı geri almanız gerekecek (bu sefer 777 yerine 755 ile chmod'layın)" + +#: wp-cache.php:1795 +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. %s/advanced-cache.php dosyasını güncellemek için bu sayfayı yenileyin." + +#: wp-cache.php:1796 +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "Eğer bu çalışmazsa, %s/advanced-cache.php dosyasının var olmadığından emin olun:" + +#: wp-cache.php:1797 +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. %1$s$wp_cache_file dosyasını bir düzenleyicide açın.
    • 2. CACHEHOME metnini %2$s ile değiştirin.
    • 3. Dosyayı kaydedin ve %3$s dizinine aktarın; sonra sayfayı yenileyin.
    • " + +#: wp-cache.php:1820 +msgid "

      WP_CACHE constant set to false

      The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

      define('WP_CACHE', true);

      " +msgstr "

      WP_CACHE sabiti 'false' değerinde

      WP_CACHE sabiti, önbelleklenmiş dosyaları sunmak için gerekli kodun sağlanıp sağlanmayacağına karar verir. Ne yazık ki bu şu anda 'false' konumunda. Lütfen wp-config.php dosyanızı açın ve require_once diye başlayan son satırdan hemen önce bu kodu ekleyin (veya bu kodun bir benzeri varsa onu bu şekilde düzenleyin) :

      define('WP_CACHE', true);

      " + +#: wp-cache.php:1822 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "Hata: WP_CACHE, wp-config.php dosyanızda etkin değil ve ben dosyayı düzenleyemiyorum." + +#: wp-cache.php:1823 +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "%s kodunu düzenleyin ve şu satırı ekleyin:
      define('WP_CACHE', true);
      Bu olmadan, WP-Cache çalışmayacaktır." + +#: wp-cache.php:1827 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the FAQ. The WP_CACHE line must be moved up." +msgstr "

      WP_CACHE sabiti, wp-config.php dosyasına eklendi

      Bu uyarı mesajını görmeye devam ederseniz lütfen FAQ sayfasındaki 5. maddeye bakın. WP_CACHE ile ilgili satır yukarı kaymış olmalı." + +#: wp-cache.php:1851 +msgid "Cache Contents" +msgstr "Önbellek İçeriği" + +#: wp-cache.php:1854 +msgid "Object cache in use. No cache listing available." +msgstr "Nesne önbellekleme devrede, listelenecek önbellek yok." + +#: wp-cache.php:1878 +msgid "Deleting supercache file: %s
      " +msgstr "Şu supercache dosyası siliniyor: %s
      " + +#: wp-cache.php:1895 +msgid "Deleting wp-cache file: %s
      " +msgstr "Şu wp-cache dosyası siliniyor: %s
      " + +#: wp-cache.php:1960 +msgid "Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page." +msgstr "Önbellek istatistikleri otomatik olarak üretilmez. Aşağıdaki bağlantıya tıklayarak istatistikleri bu sayfaya yeniden yüklemelisiniz." + +#: wp-cache.php:1961 +msgid "Regenerate cache stats" +msgstr "Önbellek istatistiklerini güncelle" + +#: wp-cache.php:1963 +msgid "Cache stats last generated: %s minutes ago." +msgstr "Önbellek istatistiklerinin son güncellenişi: %s dakika önce." + +#: wp-cache.php:1969 +msgid "WP-Cache" +msgstr "WP-Cache" + +#: wp-cache.php:1970 +#: wp-cache.php:1985 +msgid "%s Cached Pages" +msgstr "%s Önbellekli Dosya" + +#: wp-cache.php:1971 +#: wp-cache.php:1990 +msgid "%s Expired Pages" +msgstr "%s Süresi Dolmuş Sayfa" + +#: wp-cache.php:1984 +msgid "WP-Super-Cache" +msgstr "WP-Super-Cache" + +#: wp-cache.php:1994 +msgid "Fresh WP-Cached Files" +msgstr "Yeni Önbellekli Dosyalar" + +#: wp-cache.php:1995 +#: wp-cache.php:2011 +#: wp-cache.php:2027 +#: wp-cache.php:2043 +msgid "URI" +msgstr "Adres" + +#: wp-cache.php:1995 +#: wp-cache.php:2011 +msgid "Key" +msgstr "Anahtar" + +#: wp-cache.php:1995 +#: wp-cache.php:2011 +#: wp-cache.php:2027 +#: wp-cache.php:2043 +msgid "Age" +msgstr "Yaş" + +#: wp-cache.php:1995 +#: wp-cache.php:2011 +#: wp-cache.php:2027 +#: wp-cache.php:2043 +msgid "Delete" +msgstr "Sil" + +#: wp-cache.php:2010 +msgid "Stale WP-Cached Files" +msgstr "Süresi Dolmuş Önbellekli Dosyalar" + +#: wp-cache.php:2026 +msgid "Fresh Super Cached Files" +msgstr "Yeni Süper-Önbellekli Dosyalar" + +#: wp-cache.php:2042 +msgid "Stale Super Cached Files" +msgstr "Süresi Dolmuş Süper-Önbellekli Dosyalar" + +#: wp-cache.php:2058 +msgid "Hide file list" +msgstr "Dosya listesini gizle" + +#: wp-cache.php:2060 +msgid "Too many cached files, no listing possible." +msgstr "Çok fazla önbelleklenen sayfa var, listeleme yapılamaz." + +#: wp-cache.php:2062 +msgid "List all cached files" +msgstr "Önbelleğe alınmış tüm dosyaları göster" + +#: wp-cache.php:2068 +msgid "Garbage Collection
      Last GC was %s minutes ago
      " +msgstr "Çöp Toplama
      Son çöp toplama %s dakika önce yapıldı
      " + +#: wp-cache.php:2069 +msgid "Next GC in %s minutes" +msgstr "Sonraki çöp toplama %s dakika sonra" + +#: wp-cache.php:2072 +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "Zaman aşımına uğrayan sayfalar %s saniyeden daha eski. Hala eklenti tarafından kullanılıyorlar ve düzenli aralıklarla siliniyor." + +#: wp-cache.php:2083 +msgid "Delete Expired" +msgstr "Süresi Dolan Önbelleği Temizle" + +#: wp-cache.php:2101 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Super Cache ile önbelleklenmiş dosyaları silin (yeni pencerede açılır)" + +#: wp-cache.php:2240 +msgid "%1$s is Digg proof thanks to caching by %2$s" +msgstr "%1$s, %2$s eklentisi sayesinde dağ gibi sağlam!" + +#: wp-cache.php:2273 +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "WP Super Cache ayarları yapılmamış. Ayarlar sayfasına gidip ayarlarını yapmalısınız." + +#: wp-cache.php:2279 +msgid "Settings" +msgstr "Ayarlar" + +#: wp-cache.php:2289 +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "WP Super Cache pasif durumda. Önbelleklemeye devam etmek için lütfen ayarlar sayfasına gidip etkinleştirin." + +#: wp-cache.php:2292 +msgid "Warning! WP Super Cache caching broken! The script advanced-cache.php could not load wp-cache-phase1.php.

      Please edit %1$s/advanced-cache.php and make sure the path to %2$swp-cache-phase1.php is correct." +msgstr "Uyarı! WP Super Cache önbellekleme bozuk! advanced-cache.php betiği wp-cache-phase1.php dosyasını yükleyemiyor.

      Lütfen %1$s/advanced-cache.php dosyasını düzenleyin ve %2$swp-cache-phase1.php yolunun doğru olduğundan emin olun." + +#: wp-cache.php:2311 +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] Ön sayfa gzip'lendi, lütfen önbelleği boşaltın!" + +#: wp-cache.php:2311 +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "Lütfen sitenizin indirdiği önbellekli ön sayfayı temizlemek için şurayı ziyaret edin: %s" + +#: wp-cache.php:2314 +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] Ön sayfa gzip'lendi, Önbellek Temizlendi!" + +#: wp-cache.php:2314 +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "Sitenizin anasayfası şu anda indirildiği için önbelleğiniz temizlendi. Lütfen önbelleğin temizlendiğini doğrulamak için %s sayfasını ziyaret edin." + +#: wp-cache.php:2321 +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] Ön sayfa doğru değil! Lütfen önbelleği temizleyin!" + +#: wp-cache.php:2321 +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "Lütfen %1$s sayfasına gidip önbelleğinizi temizleyin çünkü ön sayfanız doğru değil ve \"%2$s\" metni gözükmüyor!" + +#: wp-cache.php:2324 +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] Ön sayfa doğru değil! Önbellek Temizlendi!" + +#: wp-cache.php:2324 +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "Önbelleğiniz temizlendi çünkü ana sayfanızda \"%2$s\" metni bulunmuyor. Lütfen %1$s sayfasını ziyaret edip önbelleğin temizlendiğini doğrulayın." + +#: wp-cache.php:2329 +msgid "[%s] Front page check!" +msgstr "[%s] Ön sayfa kontrolü!" + +#: wp-cache.php:2329 +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "WP Super Cache anasayfanızı kontrol etti. Bu özelliği devre dışı bırakmak için lütfen %s ziyaret edin." + +#: wp-cache.php:2372 +msgid "Cannot update .htaccess" +msgstr ".htaccess güncellenemiyor" + +#: wp-cache.php:2372 +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "%s.htaccess dosyası sunucu tarafından düzenlenemiyor. Lütfen bu hatayı, chmod kullanarak FTP istemcinizle düzeltin." + +#: wp-cache.php:2372 +msgid "Refresh this page when the file permissions have been modified." +msgstr "İzinleri düzenledikten sonra bu sayfayı yenileyin." + +#: wp-cache.php:2372 +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "Veya, %s.htaccess dosyanızı, dosyaya aşağıdaki kodları ekleyerek düzenleyin (en sona yeni bir satır açıp eklein):" + +#: wp-cache.php:2376 +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "Statik HTML dosyalarını sunabilmek için sunucunuzda doğru mod_rewrite kurallarının bulunması ve %s.htaccess adlı bir dosyanın olması gerekiyor." + +#: wp-cache.php:2377 +msgid "You can edit the file yourself add the following rules." +msgstr "Dosyayı kendiniz düzenleyebilir ve aşağıdaki kuralları ekleyebilirsiniz." + +#: wp-cache.php:2378 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr "WordPress'in oluşturduğu kuralların üstünde durmasına dikkat edin." + +#: wp-cache.php:2386 +msgid "Update Mod_Rewrite Rules" +msgstr "Mod_Rewrite Kurallarını Güncelle" + +#: wp-cache.php:2511 +msgid "[%1$s] Cache Preload Started" +msgstr "[%1$s] Önbellek Önyükleme Başladı" + +#: wp-cache.php:2513 +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] %2$d ile %3$d arasındaki yazılar güncelleniyor" + +#: wp-cache.php:2531 +msgid "[%1$s] Cache Preload Stopped" +msgstr "[%1$s] Önbellek Önyüklemesi Durduruldu" + +#: wp-cache.php:2540 +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s] %2$d yazı güncellendi" + +#: wp-cache.php:2540 +msgid "Refreshed the following posts:" +msgstr "Şu yazılar yenilendi:" + +#: wp-cache.php:2549 +msgid "Scheduling next preload refresh in %d minutes." +msgstr "Yeniden önyükleme %d dakika içinde yapılacak." + +#: wp-cache.php:2559 +msgid "[%s] Cache Preload Completed" +msgstr "[%s] Önbellek Önyüklemesi Tamamlandı" + +#: wp-cache.php:2559 +msgid "Cleaning up old supercache files." +msgstr "Eski supercache dosyaları temizleniyor." + +#: wp-cache.php:2601 +msgid "[%s] Preload may have stalled." +msgstr "[%s] Önyükleme takılı kalmış olabilir." + +#: wp-cache.php:2601 +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"Önyükleme yeniden başlatıldı.\n" +"%s" + +#: wp-cache.php:2644 +msgid "Supercache Uninstall Problems" +msgstr "Super Cache Kaldırma Sorunları" + +#: wp-cache.php:2644 +msgid "" +"Dear User,\n" +"\n" +"WP Super Cache was removed from your blog but the mod_rewrite rules\n" +"in your .htaccess were not.\n" +"\n" +"Please edit the following file and remove the code\n" +"between 'BEGIN WPSuperCache' and 'END WPSuperCache'. Please backup the file first!\n" +"\n" +"%s\n" +"\n" +"Regards,\n" +"WP Super Cache Plugin\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" +msgstr "" +"Değerli Kullanıcı,\n" +"\n" +"WP Super Cache blogunuzdan kaldırıldı fakat .htaccess dosyanızdaki mod_rewrite kuralları silinmedi.\n" +"\n" +"Lütfen aşağıdaki dosyayı düzenleyerek 'BEGIN WPSuperCache' ile 'END WPSuperCache' arasındaki kodları temizleyin. Yedek almayı unutmayın!\n" +"\n" +"%s\n" +"\n" +"Saygılar,\n" +"WP Super Cache Eklentisi\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" + +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "Yorumunuz onay bekliyor." + +#: plugins/awaitingmoderation.php:32 +msgid "Awaiting Moderation" +msgstr "Onay Kuyruğunda" + +#: plugins/awaitingmoderation.php:36 +msgid "Enables or disables plugin to Remove the text \"Your comment is awaiting moderation.\" when someone leaves a moderated comment." +msgstr "Bir yorum gönderildiğinde, \"Yorumunuz onay kuyruğuna alındı.\" yazısını yorumun içinden kaldıran eklentiyi açıp kapatır." + +#: plugins/awaitingmoderation.php:42 +#: plugins/badbehaviour.php:73 +#: plugins/searchengine.php:67 +#: plugins/domain-mapping.php:68 +msgid "disabled" +msgstr "ektisizleştirilmiş" + +#: plugins/awaitingmoderation.php:43 +msgid "Awaiting Moderation is now %s" +msgstr "Onay Kuyruğu Eklentisi %s" + +#: plugins/awaitingmoderation.php:45 +#: plugins/badbehaviour.php:76 +#: plugins/domain-mapping.php:71 +msgid "Update" +msgstr "Güncelle" + +#: plugins/badbehaviour.php:47 +msgid "Bad Behaviour not found. Please check your install." +msgstr "Bad Behaviour eklentisi bulunamadı. Lütfen tekrar kontrol edin." + +#: plugins/badbehaviour.php:63 +msgid "Bad Behavior" +msgstr "Bad Behaviour" + +#: plugins/badbehaviour.php:68 +msgid "(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr "(Sadece eski tarz önbellekleme desteklenir, sıkıştırma etkin değildir ve \"%s/plugins/bad-behavior/\" dizininde Bad Behavior olması gerekir)" + +#: plugins/badbehaviour.php:74 +msgid "Bad Behavior support is now %s" +msgstr "Bad Behaviour desteği %s" + +#: plugins/searchengine.php:71 +msgid "No Adverts for Friends plugin is %s." +msgstr "No Adverts for Friends eklentisi %s" + +#: plugins/searchengine.php:72 +msgid "(requires friendsadverts.php too) " +msgstr "(friendsadverts.php gerekir) " + +#: plugins/domain-mapping.php:58 +msgid "Domain Mapping" +msgstr "Alan Adı Haritalama" + +#: plugins/domain-mapping.php:63 +msgid "Provides support for Domain Mapping plugin to map multiple domains to a blog." +msgstr "Alan Adı Haritalama eklentisini destekler." + +#: plugins/domain-mapping.php:69 +msgid "Domain Mapping support is now %s" +msgstr "Alan Adı Haritalama desteği %s" + +#: plugins/domain-mapping.php:83 +msgid "Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin." +msgstr "Alan Adı Haritalama eklentisi tespit edildi! Lütfen WP Super Cache eklenti ayarları sayfasına gidip ilgili eklentiyi etkinleştirin." + +#~ msgid "(support for multiple domains on multisite websites) " +#~ msgstr "(çoklu sitelerde birden fazla alan adı kullanımına olanak sağlar)" + +#~ msgid "Tester & Contents" +#~ msgstr "Testçi & İçerik" + +#~ msgid "" +#~ "Logging to a file is easier but faces the problem that clearing the cache " +#~ "will clear the log file." +#~ msgstr "" +#~ "Dosyaya raporlama daha kolaydır ama önbellek temizlendiğinde dosya da " +#~ "temizlenecektir." + +#~ msgid "Logging Type" +#~ msgstr "Raporlama Türü" + +#~ msgid "Email" +#~ msgstr "E-posta" + +#~ msgid "file" +#~ msgstr "dosya" + +#~ msgid "WP Super Cache Manager" +#~ msgstr "WP Super Cache Yönetimi" + +#~ msgid "Why your configuration may not be changed" +#~ msgstr "Ayarlarınız niye değişmemiş olabilir" + +#~ msgid "Why" +#~ msgstr "Neden" + +#~ msgid "ON" +#~ msgstr "AÇIK" + +#~ msgid "WP Cache and Super Cache enabled" +#~ msgstr "WP Cache ve Super Cache etkin" + +#~ msgid "HALF ON" +#~ msgstr "YARI-AÇIK" + +#~ msgid "Super Cache Disabled, only legacy WP-Cache caching." +#~ msgstr "Super Cache devre dışı, yalnızca WP-Cache önbelleklemesi çalışıyor." + +#~ msgid "OFF" +#~ msgstr "KAPALI" + +#~ msgid "WP Cache and Super Cache disabled" +#~ msgstr "Hem WP Cache, hem Super Cache devre dışı." + +#~ msgid "" +#~ "List the newest cached pages (may be expensive to run on busy sites, use " +#~ "with caution.)" +#~ msgstr "" +#~ "En son önbelleklenmiş dosyaları görüntüle (Çok ziyaret edilen sitelerde " +#~ "bu seçenek sunucuyu yorabilir, dikkatle kullanın.)" + +#~ msgid "Thanks in advance!" +#~ msgstr "Şimdiden teşekkürler!" + +#~ msgid "" +#~ "Ok, it won’t go any faster but you’ll make this plugin author " +#~ "very happy!" +#~ msgstr "" +#~ "Tamam, hızlandırmayacak ama eklenti sahibini acayip mutlu edeceksiniz!" + +#~ msgid "Don’t show me this again." +#~ msgstr "Bunu bana bir daha gösterme." + +#~ msgid "Hide" +#~ msgstr "Sakla" + +#~ msgid "" +#~ "He blogs at %1$s, posts photos at %2$s and wishes he " +#~ "had more time to read and relax." +#~ msgstr "" +#~ "%1$s sitesinde blog yazar, %2$s adresinde fotoğraflarını yayınlar ve " +#~ "kitap okuyup rahatlamayı diler." + +#~ msgid "Super Cache Compression" +#~ msgstr "Super Cache Sıkıştırması" + +#~ msgid "Compression is enabled by default when in HALF ON mode." +#~ msgstr "" +#~ "YARI AÇIK mod etkin olduğunda sıkıştırma varsayılan olarak " +#~ "etkindir." + +#~ msgid "Super Cache compression is now disabled." +#~ msgstr "Super Cache sıkıştırması şu an etkisiz." + +#~ msgid "Super Cache compression is now enabled." +#~ msgstr "Super Cache sıkıştırması şu an etkin." + +#~ msgid "Update Compression" +#~ msgstr "Sıkıştırma Seçeneklerini Güncelle" + +#~ msgid "Debug Settings" +#~ msgstr "Hata Ayıklama Ayarları" + +#~ msgid "You must edit the file yourself add the following rules." +#~ msgstr "Dosyayı kendiniz düzenlemeli ve aşağıdaki kuralları eklemelisiniz." + +#~ msgid "" +#~ "Mobile device support using WordPress Mobile Edition." +#~ msgstr "" +#~ "WordPress Mobile Edition ile mobil aygıt desteği." diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-ua_UA.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-ua_UA.mo new file mode 100644 index 0000000000000000000000000000000000000000..2ba54ba808535778b27b038d52a7c224007c7971 GIT binary patch literal 75414 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, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: WP Super Cache\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-super-cache\n" +"POT-Creation-Date: 2010-09-27 13:58+0000\n" +"PO-Revision-Date: 2011-07-24 13:13+0200\n" +"Last-Translator: Alexandr \n" +"Language-Team: Alyona Lompar \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Ukrainian\n" +"X-Poedit-Country: UKRAINE\n" + +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "Ваш коментар очікує підтвердження." + +#: plugins/awaitingmoderation.php:23 +#: plugins/awaitingmoderation.php:38 +#: plugins/badbehaviour.php:47 +#: plugins/badbehaviour.php:65 +#: plugins/domain-mapping.php:47 +#: plugins/domain-mapping.php:62 +#: plugins/searchengine.php:61 +#: plugins/searchengine.php:76 +#: wp-cache.php:1114 +msgid "Disable" +msgstr "Відключити" + +#: plugins/awaitingmoderation.php:29 +#: plugins/badbehaviour.php:55 +#: plugins/domain-mapping.php:53 +#: plugins/searchengine.php:67 +msgid "disabled" +msgstr "Відключений" + +#: plugins/awaitingmoderation.php:31 +#: plugins/badbehaviour.php:57 +#: plugins/domain-mapping.php:55 +#: plugins/searchengine.php:69 +#: wp-cache.php:1460 +msgid "enabled" +msgstr "Включений" + +#: plugins/awaitingmoderation.php:33 +#, php-format +msgid "Awaiting Moderation plugin is %s" +msgstr "Статус плагіна \"Awaiting Moderation\": %s" + +#: plugins/awaitingmoderation.php:34 +msgid "(Remove the text \"Your comment is awaiting moderation.\" when someone leaves a moderated comment.) " +msgstr "(Прибирає текст \" Ваш коментар очікує перевірки\" коли хтось розміщує коментар до запису)" + +#: plugins/awaitingmoderation.php:36 +#: plugins/badbehaviour.php:63 +#: plugins/domain-mapping.php:60 +#: plugins/searchengine.php:74 +#: wp-cache.php:1114 +msgid "Enable" +msgstr "Включити" + +#: plugins/badbehaviour.php:45 +msgid "Bad Behaviour not found. Please check your install." +msgstr "Плагін \" Bad Behaviour\" не був знайдений. Перевірте, чи завершили Ви його встановлення." + +#: plugins/badbehaviour.php:60 +#, php-format +msgid "Bad Behaviour support is %s." +msgstr "Статус плагіна \" Bad Behaviour\": %s." + +#: plugins/badbehaviour.php:61 +#, php-format +msgid "(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr "(Даний плагін буде функціонувати лише в режимі середнього кешування, вимкніть стиск і встановіть плагін \"Bad Behavior\" в \"%s/ plugins/bad-behavior/ \") " + +#: plugins/badbehaviour.php:69 +#: wp-cache.php:1191 +#: wp-cache.php:1193 +msgid "Warning!" +msgstr "Увага!" + +#: plugins/domain-mapping.php:57 +#, php-format +msgid "Domain Mapping support plugin is %s" +msgstr "Статус плагіна \"Domain Mapping\": %s" + +#: plugins/domain-mapping.php:58 +msgid "(support for multiple domains on multisite websites) " +msgstr "(Підтримка для MU - сервісу блогів)" + +#: plugins/domain-mapping.php:72 +msgid "Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin." +msgstr "Виявлена ​​підтримка сервісу мультіблогов! Щоб полегшити і прискорити роботу плагіна, Вам потрібно включити підтримку мультіблогов в налаштуваннях." + +#: plugins/searchengine.php:71 +#, php-format +msgid "No Adverts for Friends plugin is %s." +msgstr "Статус плагіна \"No Adverts for Friends\": %s." + +#: plugins/searchengine.php:72 +msgid "(requires friendsadverts.php too) " +msgstr "(Вимагає установки friendsadverts.php)" + +#: wp-cache.php:87 +#, php-format +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "Будь ласка, створіть файл %s /wp-cache-config.php з wp-super-cache/wp-cache-config-sample.php" + +#: wp-cache.php:138 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "Увага! Включений режим PHP Safe Mode!" + +#: wp-cache.php:139 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "При роботі з плагіном можуть виникнути проблеми, тому що PHP Safe Mode включений на Вашому сервері." + +#: wp-cache.php:143 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "Ваш сервер налаштований так, що перевіряє власника для всіх PHP скриптів перед тим як дозволити їм читання або запис в файл." + +#: wp-cache.php:144 +#, php-format +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "Ви або Адміністратор можете виправити помилки, змінивши групу власника скриптів плагіна через налаштування веб-сервера. Також потрібно змінити власника для папки %s/cache/. Для більш детальної інформації дивіться сторінку допомоги по режиму safe mode (на англ.)." + +#: wp-cache.php:146 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "Ви або Адміністратор повинні відключити це. Для більш детальної інформації дивіться сторінку допомоги по режиму safe mode (на англ.). Ці налаштування НЕ можуть бути відключені через файл. htaccess, для вирішення проблеми потрібно редагувати php.ini в настройках веб-сервера." + +#: wp-cache.php:152 +msgid "Permlink Structure Error" +msgstr "Помилка структури посилань" + +#: wp-cache.php:153 +msgid "A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks." +msgstr "Для коректної роботи плагіна необхідна коректна настройка структури посилань. Щоб налаштувати їх, відвідайте сторінку Постійні посилання." + +#: wp-cache.php:165 +#, php-format +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "Увага! Ваше hostname \"%s\" перетворено у %s" + +#: wp-cache.php:166 +#, php-format +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "Ваш веб-сервер вирішив, що hostname змінено на %s. Деякі опції плагіна (наприклад, \"Очищення сміття\") і сам WordPress можуть працювати некоректно." + +#: wp-cache.php:167 +#: wp-cache.php:181 +#, php-format +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "Щоб дізнатися більше, відвідайте розділ 16 в Описі проблем у файлі readme.txt (на англ.)" + +#: wp-cache.php:180 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "На жаль, файл wp-cron.php не було виявлено. Цей скрипт необхідний для коректної роботи опцііі \"Очищення сміття\" і самого WordPress." + +#: wp-cache.php:195 +msgid "Cannot continue... fix previous problems and retry." +msgstr "Неможливо продовжити ... перш ніж повторити спробу, виправте попередні помилки." + +#: wp-cache.php:204 +msgid "Zlib Output Compression Enabled!" +msgstr "Стиснення Zlib Output включено!" + +#: wp-cache.php:205 +msgid "PHP is compressing the data sent to the visitors of your site. Disabling this is recommended as the plugin caches the compressed output once instead of compressing the same page over and over again. Also see #21 in the Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "PHP використовує стиснення для стислих сторінки Вашого сайту. Відключення даної опції рекомендується, щоб уникнути багаторазового стиснення сторінок плагіном. Дізнатися більше, відвідавши розділ 16 в \"Опис проблем\" у файлі readme.txt (на англ.). Також ознайомтеся з цієї сторінкою (на англ.) по php.ini." + +#: wp-cache.php:209 +msgid "Mod rewrite may not be installed!" +msgstr "Здається, модуль mod_rewrite не встановлено!" + +#: wp-cache.php:210 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use legacy or PHP modes." +msgstr "Виникла помилка, пов'язана з тим, що модуль mod_rewrite відсутній або не встановлений. Будь ласка, перевірте наявність модуля mod_rewrite в конфігураціях сервера. Модуль необхідний для коректної роботи плагіна з статичними файлами. Без підключеного mod_rewrite Ви можете використовувати тільки режими з підтримкою PHP або середню кешування." + +#: wp-cache.php:215 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "Режим \"только_чтеніе\". Настройки не можуть бути змінені." + +#: wp-cache.php:216 +#, php-format +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "Конфігураційний файл плагіна WP Super Cache %s/wp-cache-config.php не може бути змінений. Щоб продовжити, Ви повинні встановити права на запис для файлу." + +#: wp-cache.php:217 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "Найпростіший спосіб виправити це - змінити права доступу, використовуючи CHMOD, через FTP-клієнт. Досить встановити глобальні права на запис." + +#: wp-cache.php:218 +msgid "Writeable:" +msgstr "Доступно для запису:" + +#: wp-cache.php:219 +msgid "Readonly:" +msgstr "Тільки читання:" + +#: wp-cache.php:231 +#, php-format +msgid "Warning! %s is writeable!" +msgstr "Увага! Папка %s доступна для запису!" + +#: wp-cache.php:232 +#, php-format +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "Ви повинні змінити права на папку %s. Щоб зробити це - скористайтеся FTP-клієнтом або наступною командою:" + +#: wp-cache.php:240 +msgid "Mobile rewrite rules detected" +msgstr "Виявлена підтримка мобільних пристроїв" + +#: wp-cache.php:241 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"2.0\\ MMP|240x320\" and delete those." +msgstr "Для більш продуктивної роботи сайту, Вам варто включити опцію \"Підтримка мобільних пристроїв\" або видалити цей запис із правил ст. Htaccess. Знайдіть такий текст (дві строчки) \"2.0\\MMP|240x320\" і видаліть його." + +#: wp-cache.php:241 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "На Ваших звичайних відвідувачів це ніяк не відіб'ється, а ось використовують мобільні пристрої для веб-серфінгу не будуть отримувати кешовані сторінки (якщо опція відключена)." + +#: wp-cache.php:247 +#: wp-cache.php:258 +msgid "Rewrite rules must be updated" +msgstr "Права на запис повинні бути оновлені" + +#: wp-cache.php:248 +#: wp-cache.php:259 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "Необхідні для роботи плагіна права були змінені або відсутні." + +#: wp-cache.php:249 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "Підтримка блогом мобільних пристроїв вимагає присутності особливих правил у файлі. Htaccess, інакше Ви не зможете використовувати цю опцію. Нижче представлені можливий способи (в порядку складності):" + +#: wp-cache.php:250 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "Переведіть плагін в режим середнього кешування і активуйте мобільних пристроїв." + +#: wp-cache.php:251 +#: wp-cache.php:260 +msgid "Scroll down the Advanced Settings page and click the Update Mod_Rewrite Rules button." +msgstr "Прокрутіть сторінку вниз і натисніть кнопку Оновити правила Mod_Rewrite.." + +#: wp-cache.php:252 +#, php-format +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "Видаліть всі правила mod_rewrite з файлу %s.htaccess, між # BEGIN WPSuperCache і # END WPSuperCache і обновіть сторінку (відновлення правил запуститься автоматично)." + +#: wp-cache.php:253 +#, php-format +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ add these lines: (do it twice, once for each section)" +msgstr "Додайте правила самостійно. Для цього відкрийте в редакторі файл %s.htaccess і знайдіть код між # BEGIN WPSuperCache і # END WPSuperCache . Ви побачите два схожих блоки коду. Відразу після рядка %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ додайте наступне (таких рядків дві, додайте код і після другої):" + +#: wp-cache.php:266 +msgid "Required to serve compressed supercache files properly." +msgstr "Необхідно для правильного стиснення файлів." + +#: wp-cache.php:266 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "Необхідно налаштувати кешування на сторінці плагіна. Користувачі браузера IE7 будуть бачити неоновленою сторінки з кеша без підтримки даного модуля." + +#: wp-cache.php:266 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "Встановіть дату закінчення актуальності сторінок. Користувачі можуть не побачити нову версію кешовані сторінки без даного модуля." + +#: wp-cache.php:273 +msgid "Missing Apache Modules" +msgstr "Відсутні модулі Apache" + +#: wp-cache.php:274 +msgid "The following Apache modules are missing. The plugin will work in legacy mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "Наступні модулі Apache відсутні на Вашому сервері. Без них плагін зможе працювати тільки в режимі середнього кешування. У режимі з підтримкою Super Cache Ваші користувачі можуть бачити пошкоджені сторінки або прострочені їх копії." + +#: wp-cache.php:413 +msgid "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file." +msgstr "\"Увага! Ви намагаєтеся включити стиск, але модуль zlib.output_compression відключений. Дивіться пункт номер 21 розділу \"Опис проблем\" у файлі readme.txt (на англ.)" + +#: wp-cache.php:501 +msgid "WP Super Cache Settings" +msgstr "Установки WP Super Cache" + +#: wp-cache.php:512 +msgid "Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced Settings Page by default." +msgstr "Важливо: Mod_rewrite або Legacy caching відключені. Типово буде завантажуватися сторінка \"Настройки\"." + +#: wp-cache.php:523 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "Файл конфігурацій був змінений, деякі настройки не відповідають вимогам плагіна. Відвідайте сторінку \"Настройки\" щоб виправити це." + +#: wp-cache.php:540 +#: wp-cache.php:614 +msgid "Caching must be enabled to use this feature" +msgstr "Кешування повинно бути включено, якщо Ви хочете використовувати дану опцію" + +#: wp-cache.php:542 +msgid "Cache Tester" +msgstr "Перевірка кешування" + +#: wp-cache.php:543 +msgid "Test your cached website by clicking the test button below." +msgstr "Перевірте налаштування кешування свого блога натисканням однієї кнопки." + +#: wp-cache.php:550 +#, php-format +msgid "Fetching %s to prime cache: " +msgstr "Перевірка сторінки %s в кеші:" + +#: wp-cache.php:552 +#: wp-cache.php:559 +#: wp-cache.php:566 +msgid "OK" +msgstr "Є" + +#: wp-cache.php:557 +#, php-format +msgid "Fetching first copy of %s: " +msgstr "Перевірка першої копії %s:" + +#: wp-cache.php:564 +#, php-format +msgid "Fetching second copy of %s: " +msgstr "Перевірка другої копії %s:" + +#: wp-cache.php:570 +msgid "One or more page requests failed:" +msgstr "При роботі з кешем сталися помилки:" + +#: wp-cache.php:589 +#: wp-cache.php:590 +#, php-format +msgid "Page %d: %d (%s)" +msgstr "Сторінка %d: %d (%s)" + +#: wp-cache.php:596 +#, php-format +msgid "Page 1: %s" +msgstr "Сторінка 1: %s" + +#: wp-cache.php:597 +#, php-format +msgid "Page 2: %s" +msgstr "Сторінка 2 :%s" + +#: wp-cache.php:598 +msgid "The timestamps on both pages match!" +msgstr "Тимчасові штампи обох варіантів сторінки збігаються!" + +#: wp-cache.php:600 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "Сторінки не збігаються! Тимчасової штамп відрізняється або не було знайдено!" + +#: wp-cache.php:606 +msgid "Send non-secure (non https) request for homepage" +msgstr "Відправити незахищений (не по https) запит для головної сторінки" + +#: wp-cache.php:607 +msgid "Test Cache" +msgstr "Перевірити" + +#: wp-cache.php:632 +#: wp-cache.php:755 +msgid "Cancel Cache Preload" +msgstr "Скасувати загальне кешування" + +#: wp-cache.php:638 +msgid "Scheduled preloading of cache cancelled. If a job is currently running it will not shutdown until the current 100 pages are complete." +msgstr "Загальне кешування за розкладом відключено. Якщо служба зараз запущена, вона не буде завершена поки поточні 100 сторінок Не кешувати." + +#: wp-cache.php:649 +msgid "Scheduled preloading of cache cancelled." +msgstr "Загальне кешування за розкладом відключено." + +#: wp-cache.php:675 +#: wp-cache.php:753 +msgid "Preload Cache Now" +msgstr "Створити загальний кеш зараз" + +#: wp-cache.php:678 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "Загальне кешування відбудеться через 10 секунд." + +#: wp-cache.php:682 +#, php-format +msgid "Scheduled preloading of cache in %d minutes" +msgstr "Загальне кешування відбудеться через %d хвилин" + +#: wp-cache.php:686 +msgid "This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now." +msgstr "При активації загального кешування, буде створено копію для кожного запису і сторінки Вашого блогу. В цьому режимі створюються статичні сторінки, які потім будуть бачити \"непізнані\" відвідувачі (наприклад, пошукові боти та інші). Це може допомогти в поліпшенні рівня PR Google, так як в основі їх алгоритму лежить і швидкість відгуку веб-сайту." + +#: wp-cache.php:687 +msgid "Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "Проте, при використанні даного виду кешу створюється набагато більше файлів. Рекомендується використовувати такий тип, якщо у Вас дуже багато записів (10 тисяч і більше) на блозі. Особливо це важливо, якщо Ви користуєтеся послугами віртуального хостингу." + +#: wp-cache.php:688 +msgid "In ’Preload Mode’ regular garbage collection will only clean out old legacy files for known users, not the preloaded supercache files. This is a recommended setting when the cache is preloaded." +msgstr "В режимі ’Загальних кешування’ запланована очистка сміття буде видаляти тільки кеш записів простого типу (кеш з Super Cache не буде вилучено). Дана настройка рекомендована для використання." + +#: wp-cache.php:692 +#, php-format +msgid "Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)" +msgstr "Оновлювати загальний кеш кожні %s хвилин (введіть 0, щоб відключити, мінімальний допустимий кількість хвилин %d)." + +#: wp-cache.php:705 +msgid "all" +msgstr "Весь" + +#: wp-cache.php:718 +#, php-format +msgid "Preload %s posts." +msgstr "Кешувати %s записи." + +#: wp-cache.php:725 +msgid "Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "Попередній режим (очищення сміття працює не повністю, опція рекомендована до включення.)" + +#: wp-cache.php:728 +msgid "Send me status emails when files are refreshed." +msgstr "Відправляти мені повідомлення з повідомленнями про оновлення кешу." + +#: wp-cache.php:733 +msgid "Many emails, 2 emails per 100 posts." +msgstr "Високий рівень: 2 повідомлення на 100 записів." + +#: wp-cache.php:736 +msgid "Medium, 1 email per 100 posts." +msgstr "Середній рівень: 1 повідомлення на 100 записів." + +#: wp-cache.php:739 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "Низький рівень: 1 e-mail на початку і 1 в кінці кешування." + +#: wp-cache.php:743 +#, php-format +msgid "Refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Оновлення кешу через %d ч %d хв і %d сек." + +#: wp-cache.php:744 +#, php-format +msgid "Full refresh of cache in %d hours %d minutes and %d seconds." +msgstr "Повне кешування проіхойдет через %d ч %d хв і %d сек." + +#: wp-cache.php:750 +#, php-format +msgid "Currently caching from post %d to %d." +msgstr "В даний моменти кешуються записи з %d з %d." + +#: wp-cache.php:753 +msgid "Update Settings" +msgstr "Оновити настройки" + +#: wp-cache.php:761 +msgid "Preloading of cache disabled. Please disable legacy page caching or talk to your host administrator." +msgstr "Загальне кешування відключено. Будь повний режим роботи плагіна або зверніться до адміністратора сервера." + +#: wp-cache.php:776 +#: wp-cache.php:865 +msgid "Caching" +msgstr "Статус кешування" + +#: wp-cache.php:780 +msgid "Cache hits to this website for quick access." +msgstr "Кешувати хіти сайту для прискорення доступу." + +#: wp-cache.php:780 +#: wp-cache.php:781 +#: wp-cache.php:795 +#: wp-cache.php:799 +#: wp-cache.php:802 +#: wp-cache.php:803 +#: wp-cache.php:868 +msgid "Recommended" +msgstr "Рекомендовано" + +#: wp-cache.php:781 +msgid "Use mod_rewrite to serve cache files." +msgstr "Використовувати mod_rewrite для обслуговування кешу." + +#: wp-cache.php:782 +msgid "Use PHP to serve cache files." +msgstr "Використовувати PHP для обслуговування кешу." + +#: wp-cache.php:783 +msgid "Legacy page caching." +msgstr "Спрощене кешування." + +#: wp-cache.php:784 +msgid "Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should go with PHP caching." +msgstr "Використання mod_rewrite допоможе зробити роботу блога швидше, ніж PHP (хоча і цей варіант теж не такий повільний). Цей режим простіше і зручніше, але починаючому користувачеві краще використовувати кешування PHP." + +#: wp-cache.php:790 +msgid "Miscellaneous" +msgstr "Різне" + +#: wp-cache.php:795 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "Стискати файли кешу щоб прискорити роботу." + +#: wp-cache.php:796 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching it on and off clears the cache." +msgstr "Стиснення кешу вимкнено за замовчуванням, так як може некоректно працювати на деяких хостингах. Включення або Відключення даної опції автоматично чистить тимчасовий кеш." + +#: wp-cache.php:799 +msgid "304 Not Modified browser caching. Indicate when a page has not been modified since last requested." +msgstr "Помилка 304. Дана помилка виникає тоді, коли сторінка не була змінена з часу минулого запиту." + +#: wp-cache.php:800 +msgid "304 support is disabled by default because in the past GoDaddy had problems with some of the headers used." +msgstr "Підтримка помилки 304 відключена за замовчуванням (через проблеми деяких сервісів)." + +#: wp-cache.php:802 +msgid "Don’t cache pages for known users." +msgstr "Не кешувати сторінки для відомих користувачів." + +#: wp-cache.php:803 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated." +msgstr "Авто перебудова кеша. Гості блогу побачать застарілі версії сторінок кеша поки нові будуть генеруватися." + +#: wp-cache.php:804 +msgid "Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)" +msgstr "Розповісти усім, що Ви користуєтеся плагіном WP Super Cache (повідомлення буде розміщено в \"підвалі\" сайту)!" + +#: wp-cache.php:810 +#: wp-cache.php:957 +#: wp-cache.php:1473 +msgid "Advanced" +msgstr "Настройки" + +#: wp-cache.php:814 +msgid "Mobile device support." +msgstr "Підтримка мобільних пристроїв" + +#: wp-cache.php:815 +msgid "Clear all cache files when a post or page is published." +msgstr "Очищати кеш коли новий запис або сторінка опублікована." + +#: wp-cache.php:816 +msgid "Only refresh current page when comments made." +msgstr "Оновлювати сторінку при додаванні нового коментаря до неї" + +#: wp-cache.php:817 +msgid "List the newest cached pages on this page." +msgstr "Створити список сторінок в кеші (виводиться на цій сторінці)" + +#: wp-cache.php:819 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "Блокування файлів. Вам швидше за все не знадобиться ця опція, але вона може вирішити проблему малопотужних хостингів. Увага! Включення опції, в окремих випадках, може викликати проблеми в роботі блогу!" + +#: wp-cache.php:822 +msgid "Use object cache to store cached files." +msgstr "Використовувати об'єкти кеша для зберігання кешованих файлів." + +#: wp-cache.php:822 +msgid "(Experimental)" +msgstr "(Експериментальні установки)" + +#: wp-cache.php:829 +msgid "Note:" +msgstr "Важливо:" + +#: wp-cache.php:831 +#, php-format +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "Деактивувавши плагін, переконайтеся що папка %s доступна для запису в настройках Вашого сервера, щоб файли плагіна advanced-cache.php і cache-config.php були вилучені в автоматичному режимі (також перевірте наявність прав на запис для цих двох файлів)." + +#: wp-cache.php:832 +#, php-format +msgid "Please see the readme.txt for instructions on uninstalling this script. Look for the heading, \"How to uninstall WP Super Cache\"." +msgstr "Для довідки дивіться readme.txt (документ на англ.). Там Ви знайдете корисну інформацію щодо використання та видалення плагіна WP Super Cache. " + +#: wp-cache.php:833 +#, php-format +msgid "Need help? Check the Super Cache readme file. It includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already have been answered." +msgstr "Все ще потрібна допомога? Дивіться офіційний ЧАВО по плагіну Super Cache (англ.). Також, Ви можете задати своє питання на форумах тех. підтримки (англ.), або ознайомитися з проблемами інших користувачів і запропонованими їм рішеннями. " + +#: wp-cache.php:836 +#: wp-cache.php:883 +msgid "Update Status" +msgstr "Оновити" + +#: wp-cache.php:843 +msgid "Accepted Filenames & Rejected URIs" +msgstr "Допустимі імена & Заборонені адреси" + +#: wp-cache.php:868 +msgid "Caching On" +msgstr "Кешування включено" + +#: wp-cache.php:869 +msgid "Caching Off" +msgstr "Кешування вимкнено" + +#: wp-cache.php:870 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "Важливо: рекомендується включити PHP кешування, авто перебудову кешу і підтримку для мобільних пристроїв" + +#: wp-cache.php:880 +msgid "Notice: Supercache mod_rewrite rules detected. Cached files will be served using those rules. Edit the .htaccess file in the root of your install and remove the SuperCache rules." +msgstr "Увага: Серед правил mod_rewrite виявлені правила від Supercache. Для роботи з кешем будуть використані саме ці правила. Щоб видалити їх, Вам потрібно вручну відредагувати файл. Htaccess." + +#: wp-cache.php:892 +msgid "Make WordPress Faster" +msgstr "Зроби свій блог швидше!" + +#: wp-cache.php:893 +#, php-format +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "Додаток %1$s створений і оновлюється автором %2$s за підтримки багатьох інших." + +#: wp-cache.php:894 +#, php-format +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "Відвідайте блог автора плагіна %1$s та його фотоблог на %2$s." + +#: wp-cache.php:895 +#, php-format +msgid "Please say hi to him on %s too!" +msgstr "Будь ласка, відвідайте %s автора!" + +#: wp-cache.php:903 +#, php-format +msgid "Cached pages since %1$s : %2$s" +msgstr "Сторінок в кеші з %1$s: %2$s" + +#: wp-cache.php:904 +msgid "Newest Cached Pages:" +msgstr "Нове в кеші:" + +#: wp-cache.php:908 +#, php-format +msgid "Cached %s seconds ago" +msgstr "Написано в кеш %s секунд назад" + +#: wp-cache.php:911 +msgid "(may not always be accurate on busy sites)" +msgstr "(Список не рекомендований для великих сайтів)" + +#: wp-cache.php:930 +msgid "Cache plugins are PHP scripts that live in a plugins folder inside the wp-super-cache folder. They are loaded when Supercache loads, much sooner than regular WordPress plugins." +msgstr "Кешування відбувається за рахунок PHP файлів, що зберігаються в папці плагіна. Вони завантажуються при включенні режиму Supercache. Завантаження відбувається набагато частіше, ніж для решти плагінів WordPress." + +#: wp-cache.php:931 +msgid "This is strictly an advanced feature only and knowledge of both PHP and WordPress actions is required to create them." +msgstr "Для використання даної опції потрібно знати не тільки PHP, але і WordPress (не на початковому рівні)." + +#: wp-cache.php:941 +msgid "Available Plugins" +msgstr "Доступні плагіни" + +#: wp-cache.php:957 +msgid "Easy" +msgstr "Кеш" + +#: wp-cache.php:957 +msgid "Tester & Contents" +msgstr "Перевірка" + +#: wp-cache.php:957 +msgid "Preload" +msgstr "Загальний кеш" + +#: wp-cache.php:957 +msgid "Plugins" +msgstr "Додатки" + +#: wp-cache.php:957 +msgid "Debug" +msgstr "Обслуговування" + +#: wp-cache.php:984 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "Увага: Перевірка правил WP Super Cache mod_rewrite відключена для блогів мережі поки не буде запущена на головному блозі." + +#: wp-cache.php:986 +#, php-format +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on on the main site of this network." +msgstr "Увага: Перевірка правил WP Super Cache mod_rewrite відключена для блогів мережі поки не буде запущена на головному блозі." + +#: wp-cache.php:996 +msgid "Mod Rewrite Rules" +msgstr "Модуль Mod Rewrite" + +#: wp-cache.php:1002 +msgid "WordPress MU Detected" +msgstr "Виявлено WordPress MU!" + +#: wp-cache.php:1002 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "На жаль, mod_rewrite неможливо оновити в автоматичному режимі в WordPress MU. Вам доведеться вручну зробити це: відкрийте файл. Htaccess (розташований в кореневій директорії блога) і додайте наступні правила в нього." + +#: wp-cache.php:1004 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Mod Rewrite не може бути оновлений!" + +#: wp-cache.php:1005 +#, php-format +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "Для коректної роботи, у Вашому файлі %s.htaccess повинні бути прописані маркери BEGIN і END. Між ними знаходяться основні правила WordPress mod_rewrite, приклад:" + +#: wp-cache.php:1007 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "Оновлення сторінку коли закінчите редагування файлу.Htaccess." + +#: wp-cache.php:1011 +msgid "Thank you for upgrading." +msgstr "Спасибі за оновлення." + +#: wp-cache.php:1011 +#, php-format +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "З моменту останньої встановленої версії плагіна правила mod_rewrite були змінені. На жаль, Вам доведеться вручну видалити старі правила перш ніж нові зароблять. Оновлення цю сторінку коли закінчите редагувати файл.Htaccess. Якщо Ви хочете повністю оновити все самі, то замініть наступний рядок: %1$s на цю: %2$s. Єдина відмінність - це заміна \"HTTP_COOKIE\" на \"HTTP: Cookie\" і \"wordpressuser\" на \"wordpress\". Ці зміни пов'язані з новою версією WordPress 2.5 . Звичайно Ви можете продовжувати працювати зі старими версіями, якщо вистачить сміливості;) " + +#: wp-cache.php:1015 +msgid "Trailing slash check required." +msgstr "Необхідна перевірка trailing slash." + +#: wp-cache.php:1015 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "Здається, всі посилання Вашого блогу закінчуються символом \"/\". На жаль, як тільки Ви встановили даний плагін, спрацювала опція, що виявила копії посилань без символу \"/\" на кінці, і тепер вона не може здійснити перенаправлення на вірний адресу. Щоб це виправити це, Ви повинні відредагувати файл.htaccess і додати два нових правила до групи основних правил плагіна Supercache:" + +#: wp-cache.php:1017 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "Щоб подивитися повний список працюючих правил, натисніть кнопку нижче \"Переглянути правила mod_rewrite\"." + +#: wp-cache.php:1031 +msgid "Mod Rewrite rules updated!" +msgstr "Правила mod_rewrite оновлені!" + +#: wp-cache.php:1032 +#, php-format +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "Файл %s.htaccess був успішно оновлений, необхідні правила mod_rewrite були додані. Будь ласка, перевірте їх. Вони повинні виглядати так:" + +#: wp-cache.php:1034 +msgid "Mod Rewrite rules must be updated!" +msgstr "Правила mod_rewrite повинні бути оновлені!" + +#: wp-cache.php:1035 +#, php-format +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "Ваш файл %s.htaccess недоступний для запису (в настройках сервера) і не може бути оновлений в автоматичному режимі. Ви повинні вручну додати нові правила до основних правил WordPress так, як зазначено нижче:" + +#: wp-cache.php:1040 +#, php-format +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "Правила mod_rewrite для плагіна WP Super Cache були виявлені у файлі %s.htaccess.
      Натисніть на відповідну кнопку, щоб подивитися строчки. Якщо Ви тільки що оновили плагін, перевірте всі правила. " + +#: wp-cache.php:1043 +msgid "A difference between the rules in your .htaccess file and the plugin rewrite rules has been found. This could be simple whitespace differences but you should compare the rules in the file with those below as soon as possible. Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "Між правилами у Вашому файлі. Htaccess і правилами самого плагіна виявлені невідповідності. Це може бути просто зайвий символ у рядку, але Ви повинні особисто порівняти оригінальні правила зі своїми якомога швидше. Натисніть на кнопку ’Оновити правила Mod_Rewrite’, щоб зробити це в автоматичному режимі." + +#: wp-cache.php:1046 +msgid "View Mod_Rewrite Rules" +msgstr "Подивитися правила mod_rewrite" + +#: wp-cache.php:1050 +#: wp-cache.php:2287 +#, php-format +msgid "Rules must be added to %s too:" +msgstr "Правила повинні бути також додані до %s:" + +#: wp-cache.php:1058 +#, php-format +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "Правила для Gzip-стиснення додані в файл %s.htaccess." + +#: wp-cache.php:1065 +msgid "Fix Configuration" +msgstr "Відновити стандартні настройки" + +#: wp-cache.php:1068 +msgid "Restore Default Configuration" +msgstr "Відновити налаштування за замовчуванням" + +#: wp-cache.php:1076 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "Перевірка коментарів включена. Перш ніж Ваші коментарі будуть опубліковані пройде якийсь час." + +#: wp-cache.php:1101 +msgid "Lock Down:" +msgstr "Закритий режим:" + +#: wp-cache.php:1101 +msgid "Disabled" +msgstr "Вимкнуто" + +#: wp-cache.php:1101 +msgid "Enabled" +msgstr "Включений" + +#: wp-cache.php:1102 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "Підготуйте свій блог до запланованих сплесків відвідуваності, активувавши даний режим. В активному стані розміщення нових коментарів і записів НЕ буде оновлювати статичні файли в кеші." + +#: wp-cache.php:1103 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "Розробникам: Зробіть свій власний плагін закритого режиму сумісним з нашим, додавши змінну \"WPLOCKDOWN\". Наведений нижче код допоможе Вам адоптувати свій плагін до налаштувань нашого Режиму." + +#: wp-cache.php:1105 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "Вибачте, мій блог тимчасово недоступний. Зайдіть пізніше" + +#: wp-cache.php:1109 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "Ваш блог використовує Закритий режим. Нові коментарі не оновлюють всі статичні елементи кешу." + +#: wp-cache.php:1111 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "Ваш блог не використовує Закритий режим. Останні коментарі оновлюють всі статичні елементи кешу." + +#: wp-cache.php:1117 +msgid "Lock Down" +msgstr "Закритий режим" + +#: wp-cache.php:1125 +msgid "Directly Cached Files" +msgstr "Пряме кешування сторінок" + +#: wp-cache.php:1183 +#, php-format +msgid "%s removed!" +msgstr "%s знищений!" + +#: wp-cache.php:1191 +#, php-format +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "Ви повинні дозволити запис для %s. Але так як це потенційна уразливість, після оновлення сторінки поверніть права на читання." + +#: wp-cache.php:1193 +#, php-format +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "Діректрія %s доступна для запису. Вам слід змінити її права на \"Тільки читання\"." + +#: wp-cache.php:1207 +msgid "Existing direct page" +msgstr "Сторінка існує" + +#: wp-cache.php:1207 +msgid "Delete cached file" +msgstr "Видалити файли з кешу" + +#: wp-cache.php:1212 +msgid "Add direct page:" +msgstr "Додати сторінку в кеш:" + +#: wp-cache.php:1214 +#, php-format +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "Даний кеш створюється прямо з папки, де знаходиться Ваш блог (папка %s). Ця опція корисна тільки тоді, коли очікується великий приплив відвідувачів з більш популярного сайту на конкретну сторінку або запис Вашого." + +#: wp-cache.php:1216 +#, php-format +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "Наприклад: щоб додати в кеш сторінку%1$sabout/, потрібно прописати %1$sabout/ або /about/. Кеш для сторінки буде створено відразу ж після першого до неї звернення гостем." + +#: wp-cache.php:1217 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "Щоб видалити сторінку з такого кеша, очистіть текстове поле і видаліть файли кешу." + +#: wp-cache.php:1222 +msgid "Update Direct Pages" +msgstr "Оновити сторінки" + +#: wp-cache.php:1260 +msgid "Expiry Time & Garbage Collection" +msgstr "Прострочені сторінки & Очищення сміття" + +#: wp-cache.php:1262 +msgid "Expire time:" +msgstr "Актуальність кешу:" + +#: wp-cache.php:1263 +msgid "seconds" +msgstr "Секунд" + +#: wp-cache.php:1264 +msgid "Garbage Collection" +msgstr "Очищення сміття" + +#: wp-cache.php:1264 +msgid "If the expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above." +msgstr "Якщо час актуальності кешу більше 1800 секунд (півгодини), то очищення сміття буде запускатися кожні 10 хвилин." + +#: wp-cache.php:1265 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 300 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. If you are using legacy caching aim to have less than 500 cached files if possible. You can have many times more cached files when using mod_rewrite or PHP caching." +msgstr "Повірка та видалення прострочених сторінок кеша займає час, але й залишати такі файли в системі не варто. На великих блогах потрібно виставляти \"час життя\" кожної копії 300 секунд. Ви можете поекспериментувати з налаштуванням і подивитися, скільки прострочених копій сторінок залишається в кеші протягом дня. Оптимальне число таких сторінок не більше 500. Використовуючи кешування з mod_rewrite або PHP, Ви зможете збільшити кількість кешируємой сторінок." + +#: wp-cache.php:1266 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "Встановіть значення на 0, щоб відключити Очищення сміття." + +#: wp-cache.php:1267 +msgid "Change Expiration" +msgstr "Змінити час життя копії" + +#: wp-cache.php:1311 +msgid "Rejected User Agents" +msgstr "Пошукові та інші боти" + +#: wp-cache.php:1312 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "Щоб заборонити плагіну кешувати запити від пошукових ботів і інших мережевих роботів, введіть їх назви в поле нижче (по одному в рядку). Якщо копія сторінки вже існує в кеші Super Cache, то вона все одно буде відправлена боту." + +#: wp-cache.php:1319 +msgid "Save UA Strings" +msgstr "Зберегти налаштування" + +#: wp-cache.php:1342 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "Не кешувати сторінки наступних типів. Перевірте Статтею Кодексу WP (англ.), щоб дізнатися докладніше про типи сторінок." + +#: wp-cache.php:1345 +msgid "Single Posts" +msgstr "Записи" + +#: wp-cache.php:1346 +msgid "Pages" +msgstr "Сторінки" + +#: wp-cache.php:1347 +msgid "Front Page" +msgstr "Основна сторінка" + +#: wp-cache.php:1348 +msgid "Home" +msgstr "Домашня сторінка" + +#: wp-cache.php:1349 +msgid "Archives" +msgstr "Архіви" + +#: wp-cache.php:1350 +msgid "Tags" +msgstr "Мітки" + +#: wp-cache.php:1351 +msgid "Category" +msgstr "Рубрики" + +#: wp-cache.php:1352 +msgid "Feeds" +msgstr "Фіди" + +#: wp-cache.php:1353 +msgid "Search Pages" +msgstr "Сторінки пошуку" + +#: wp-cache.php:1355 +#: wp-cache.php:1483 +msgid "Save" +msgstr "Зберегти" + +#: wp-cache.php:1372 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "Поле нижче Ви також можете заповнити фрагментами адрес сторінок (або груп сторінок, наприклад, архів за рік/місяць і т.д.), які не будуть кешуватися. Плагін буде сканувати адреси сторінок на предмет наявності в них фрагментів, зазначених нижче, перед кешуванням. " + +#: wp-cache.php:1378 +msgid "Save Strings" +msgstr "Зберегти список заборонених фрагментів" + +#: wp-cache.php:1394 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "Поле нижче Ви можете заповнити назвами файлів які будуть кешованими, навіть якщо у їх назві є заборонених до кешуванню фрагменти." + +#: wp-cache.php:1400 +msgid "Save Files" +msgstr "Зберегти список файлів" + +#: wp-cache.php:1445 +msgid "Currently logging to: " +msgstr "Режим записаний на:" + +#: wp-cache.php:1455 +msgid "Fix problems with the plugin by debugging it here. It can send you debug emails or log them to a file in your cache directory." +msgstr "Тут можна вирішити деякі проблеми, що виникають при роботі з плагіном, за допомогою налагодження. Ви можете записувати службову інформацію (логи) у файли директорії кешу." + +#: wp-cache.php:1456 +msgid "Logging to a file is easier but faces the problem that clearing the cache will clear the log file." +msgstr "Отримати доступ до файлу лога просто, але при очищенні кешу лог також буде видалено." + +#: wp-cache.php:1460 +msgid "Debugging" +msgstr "Режим відлагодження" + +#: wp-cache.php:1461 +msgid "Logging Type" +msgstr "Тип входу" + +#: wp-cache.php:1461 +msgid "Email" +msgstr "Email" + +#: wp-cache.php:1462 +msgid "file" +msgstr "Файл" + +#: wp-cache.php:1463 +msgid "IP Address" +msgstr "Адреса IP" + +#: wp-cache.php:1463 +#, php-format +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(Записує звернення тільки з цього IP. Ваш IP - %s)" + +#: wp-cache.php:1464 +msgid "Log level" +msgstr "Рівень логу" + +#: wp-cache.php:1470 +msgid "(1 = less, 5 = more, may cause severe server load.)" +msgstr "(1 = найменший, 5 = найбільший, може викликати болше навантаження на сервер)" + +#: wp-cache.php:1473 +msgid "In very rare cases two problems may arise on some blogs:

      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "В особливо рідкісних випадках на блозі можуть статися дві проблеми:
      1. Замість головної сторінки користувачі будуть бачити пропозицію завантажити. Zip архів з нею
      2. Замість головної сторінки може бути додана в кеш зовсім інша (тільки у випадку, якщо Ваш бог використовує наступну структуру посилань /%category%/%postname%/).
      " + +#: wp-cache.php:1474 +#, php-format +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "II’m 99% certain! Помилки, які можуть виникнути при роботі з WP Super Cache, не пов'язані з самим плагіном. Вони виникають в окремих випадках, але Ви можете підстрахуватися, запустивши автоматичну перевірку блогу кожні 5 хвилин. У разі помилки, Вам буде надіслано повідомлення. " + +#: wp-cache.php:1476 +msgid "Check front page every 5 minutes." +msgstr "Перевіряти головну сторінку кожні 5 хвилин." + +#: wp-cache.php:1477 +msgid "Front page text" +msgstr "Ключовий текст" + +#: wp-cache.php:1477 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "Введіть текст який плагін буде шукати на головній сторінці. Якщо текст не буде виявлений, то кеш автоматично очиститься. Залиште поле порожнім щоб відключити опцію." + +#: wp-cache.php:1478 +msgid "Clear cache on error." +msgstr "Очищати кеш при помильці." + +#: wp-cache.php:1479 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "Повідомити адміністратора блогу по завершенню перевірки (корисно при тестуванні на помилки)." + +#: wp-cache.php:1493 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "Помилка: стиснення GZIP увімкнено, вимкніть його якщо хочете запустити wp-cache." + +#: wp-cache.php:1540 +#: wp-cache.php:1702 +msgid "Warning" +msgstr "Увага" + +#: wp-cache.php:1540 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "Стиснення GZIP включено в настройках WordPress, плагін не буде працювати до тих пір, поки Ви не відключите gzip." + +#: wp-cache.php:1598 +#: wp-cache.php:1603 +#: wp-cache.php:1635 +#: wp-cache.php:1640 +#: wp-cache.php:1646 +msgid "Error" +msgstr "Помилка" + +#: wp-cache.php:1598 +#, php-format +msgid "Your cache directory ($cache_path) did not exist and couldn’t be created by the web server. Check %s permissions." +msgstr "Папка ($ cache_path) не існує і не може бути створена в автоматичному режимі. Перевірте права доступу до %s." + +#: wp-cache.php:1603 +#, php-format +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "Папка (%1$s) або %2$s повинна бути доступна для запису. Перевірте права доступу." + +#: wp-cache.php:1635 +#, php-format +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "Конфігураційний файл WP-Cache (%s) може бути недійсний і недоступний для запису. Будь ласка, видаліть його вручну і обновіть сторінку." + +#: wp-cache.php:1640 +#, php-format +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "Конфігураційний файл відсутній, а папка %1$s (%2$s) недоступна для запису. Перевірте права доступу." + +#: wp-cache.php:1646 +#, php-format +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "Файл WP-Cache (%s) не був знайдений. Перевірте, завершили Ви установку плагіна." + +#: wp-cache.php:1702 +#, php-format +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "%s/advanced-cache.php не існує або не може бути оновлений в автоматичному режимі." + +#: wp-cache.php:1703 +msgid "1. If it already exists please delete the file first." +msgstr "1. Якщо він вже існує в папках Вашого блога, видаліть його." + +#: wp-cache.php:1704 +#, php-format +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. Змініть права доступу до %1$s, щоб можна було записати дані в автоматичному режимі (права повинні бути: chmod 777 %1$s) перевірте правильність заданих прав і обновіть сторінку. Це тимчасове умова, після оновлення сторінки права доступу потрібно повернути на колишні (з 777 на 755). " + +#: wp-cache.php:1705 +#, php-format +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. Оновлення сторінку, файл %s/advanced-cache.php оновиться сам" + +#: wp-cache.php:1706 +#, php-format +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "Якщо це не спрацювало, переконайтеся що %s/advanced-cache.php точно не існує:" + +#: wp-cache.php:1707 +#, php-format +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. Відкрийте файл %1$s$wp_cache_file в текстовому редакторі.
    • 2. Змініть рядок CACHEHOME на %2$s
    • 3. Збережіть файл і скопіюйте в %3$s, потім оновіть сторінку.
    • " + +#: wp-cache.php:1730 +msgid "

      WP_CACHE constant set to false

      The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

      define('WP_CACHE', true);

      " +msgstr "

      Параметр WP_CACHE не активований

      Даний параметр повинен бути активований для того, щоб WordPress міг коректно працювати з файлами кеша. В даний момент він відключений. Щоб включити його, відкрийте файл wp-config.php і додайте в нього наступний рядок:

      define('WP_CACHE', true);

      " + +#: wp-cache.php:1732 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "Помилка: Мінлива WP_CACHE не активована у файлі загальних конфігурацій wp-config.php." + +#: wp-cache.php:1733 +#, php-format +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "Відредагуйте код %s і додайте наступну строчку:
      define('WP_CACHE', true);
      Інакше, WP-Cache не зможе запуститися.." + +#: wp-cache.php:1737 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the FAQ. The WP_CACHE line must be moved up." +msgstr "

      Мінлива WP_CACHE добавлена в файл конфігурацій wp-config.php

      Якщо Ви досі бачите це повідомлення, то звіртеся з пунктом 5 ЧАВО (на англ.). Рядок із WP_CACHE повинна бути розміщена вище." + +#: wp-cache.php:1759 +msgid "Cache Contents" +msgstr "Стан кешу" + +#: wp-cache.php:1762 +msgid "Object cache in use. No cache listing available." +msgstr "Список кешування недоступний." + +#: wp-cache.php:1786 +#, php-format +msgid "Deleting supercache file: %s
      " +msgstr "Видалення файлів Super Cache:%s
      " + +#: wp-cache.php:1803 +#, php-format +msgid "Deleting wp-cache file: %s
      " +msgstr "Видалення файлів WP-Cache: %s
      " + +#: wp-cache.php:1868 +msgid "Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page." +msgstr "Статистика об'єктів в кеші НЕ створюється автоматично. Щоб оновити її вручну натисніть на посилання нижче." + +#: wp-cache.php:1869 +msgid "Regenerate cache stats" +msgstr "Оновити статистику кеша" + +#: wp-cache.php:1871 +#, php-format +msgid "Cache stats last generated: %s minutes ago." +msgstr "Статистика об'єктів в кеші останній раз створено: %s мин назад." + +#: wp-cache.php:1877 +msgid "WP-Cache" +msgstr "Стан WP-Cache" + +#: wp-cache.php:1878 +#: wp-cache.php:1894 +#, php-format +msgid "%s Cached Pages" +msgstr "%s сторінок в кеші" + +#: wp-cache.php:1879 +#: wp-cache.php:1899 +#, php-format +msgid "%s Expired Pages" +msgstr "%s сторінок прострочено" + +#: wp-cache.php:1893 +msgid "WP-Super-Cache" +msgstr "Стан WP-Super-Cache" + +#: wp-cache.php:1904 +msgid "Fresh WP-Cached Files" +msgstr "Нові файли WP-Cache" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "URI" +msgstr "АДРЕСА" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +msgid "Key" +msgstr "Ключ" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "Age" +msgstr "Вік" + +#: wp-cache.php:1905 +#: wp-cache.php:1921 +#: wp-cache.php:1937 +#: wp-cache.php:1953 +msgid "Delete" +msgstr "Видалити" + +#: wp-cache.php:1920 +msgid "Stale WP-Cached Files" +msgstr "Старі файли WP-Cache" + +#: wp-cache.php:1936 +msgid "Fresh Super Cached Files" +msgstr "Нові файли Super Cache" + +#: wp-cache.php:1952 +msgid "Stale Super Cached Files" +msgstr "Старі файли Super Cache" + +#: wp-cache.php:1968 +msgid "Hide file list" +msgstr "Прибрати список" + +#: wp-cache.php:1970 +msgid "Too many cached files, no listing possible." +msgstr "Надто багато об'єктів в кеші, створення списку неможливо." + +#: wp-cache.php:1972 +msgid "List all cached files" +msgstr "Список кешованих файлів" + +#: wp-cache.php:1978 +#, php-format +msgid "Garbage Collection
      Last GC was %s minutes ago
      " +msgstr "Очищення сміття
      Попереднє очищення було%s хвилин тому
      " + +#: wp-cache.php:1979 +#, php-format +msgid "Next GC in %s minutes" +msgstr "Наступне очищення буде через%s хвилин" + +#: wp-cache.php:1982 +#, php-format +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "Прострочений кеш - це сторінки, створені більш ніж %s секунд тому. Не дивлячись на свій статус, вони використовуються в загальному кеші і періодично видаляються." + +#: wp-cache.php:1993 +msgid "Delete Expired" +msgstr "Видалити прострочений кеш" + +#: wp-cache.php:1999 +#: wp-cache.php:2011 +#: wp-cache.php:2174 +msgid "Delete Cache" +msgstr "Видалити весь кеш" + +#: wp-cache.php:2011 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Видалити файли Super Cache (у новому вікні)" + +#: wp-cache.php:2150 +#, php-format +msgid "%1$s is Digg proof thanks to caching by %2$s" +msgstr "%1$s вдячний плагіну %2$s за проделаннную роботу" + +#: wp-cache.php:2183 +#, php-format +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "Додаток WP Super Cache повинен бути налаштований! Щоб активувати його і налаштувати, перейдіть на сторінку управління плагіном." + +#: wp-cache.php:2189 +msgid "Settings" +msgstr "Настройки" + +#: wp-cache.php:2199 +#, php-format +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "Додаток WP Super Cache не активовано. Щоб активувати його, перейдіть на сторінку управління плагіном." + +#: wp-cache.php:2218 +#, php-format +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] Головна сторінка стиснута за допомогою gzipped! Видаліть кеш!" + +#: wp-cache.php:2218 +#, php-format +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "Сталася помилка! Відвідайте %s щоб видалити кеш!" + +#: wp-cache.php:2221 +#, php-format +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] Головна сторінка стиснута за допомогою gzipped! Кеш знищений!" + +#: wp-cache.php:2221 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "Весь кеш для Вашого блогу був очищений, так як плагін помітив помилку на головній сторінці (вона Викачуємо архів). Для перевірки кеш, відвідайте цю стрніцу %s." + +#: wp-cache.php:2228 +#, php-format +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] Кеш головної сторінки містить помилку! Видаліть кеш!" + +#: wp-cache.php:2228 +#, php-format +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "Сталася помилка, на головній сторінці Вашого блогу не був виявлений ключовою текст \"%2$s\"! Щоб виправити помилку, відвідайте цю сторінку %1$s і уручну очистити кеш." + +#: wp-cache.php:2231 +#, php-format +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] Головна сторінка відображається з помилкою! Кеш знищений!" + +#: wp-cache.php:2231 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "Сталася помилка, на головній сторінці Вашого блогу не був виявлений ключовою текст \"%2$s\"! Відвідайте цю сторінку %1$s щоб перевірити кеш." + +#: wp-cache.php:2236 +#, php-format +msgid "[%s] Front page check!" +msgstr "[%s] Головна сторінка перевірена!" + +#: wp-cache.php:2236 +#, php-format +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "Додаток WP Super Cache щойно перевірив головну сторінку Вашого блогу на предмет помилок. Щоб відключити повідомлення та перевірку відвідайте цю сторінку %s." + +#: wp-cache.php:2279 +msgid "Cannot update .htaccess" +msgstr "Не можу оновити файл.Htaccess" + +#: wp-cache.php:2279 +#, php-format +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "Файл %s.htaccess не може бути оновлений в автоматичному режимі. Щоб виправити це задайте необхідні для запису права доступу до нього. " + +#: wp-cache.php:2279 +msgid "Refresh this page when the file permissions have been modified." +msgstr "Оновлення сторінку коли необхідні права доступу будуть задані." + +#: wp-cache.php:2279 +#, php-format +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "Ви також можете редагувати файл %s.htaccess вручну і особисто додати необхідні правила (до наявних там правил WordPress): " + +#: wp-cache.php:2283 +#, php-format +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "Щоб плагін міг правильно працювати з статичними html файлами, Ви повинні додати в файл %s.htaccess правила модуля mod_rewrite " + +#: wp-cache.php:2284 +msgid "You can edit the file yourself add the following rules." +msgstr "Ви можете вручну відредагувати файл і додати необхідні правила." + +#: wp-cache.php:2285 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr "Перевірте, що вони йдуть перед всіма вже існуючими в документі правилами WordPress." + +#: wp-cache.php:2293 +msgid "Update Mod_Rewrite Rules" +msgstr "Оновити правила mod_rewrite" + +#: wp-cache.php:2389 +#, php-format +msgid "[%1$s] Cache Preload Started" +msgstr "[%1$s] Загальне кешування почалося" + +#: wp-cache.php:2391 +#, php-format +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] Оновлення кеша записів з %2$d до %3$d" + +#: wp-cache.php:2402 +#, php-format +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s] %2$d кеш записів оновлений" + +#: wp-cache.php:2402 +msgid "Refreshed the following posts:" +msgstr "Наступні записи оновлені:" + +#: wp-cache.php:2411 +#, php-format +msgid "Scheduling next preload refresh in %d minutes." +msgstr "Наступне заплановане оновлення загального кешу через %d хвилин." + +#: wp-cache.php:2421 +#, php-format +msgid "[%s] Cache Preload Completed" +msgstr "[%s] Загальне кешування завершено" + +#: wp-cache.php:2421 +msgid "Cleaning up old supercache files." +msgstr "Видаляти старі файли з кешу Super Cache." + +#: wp-cache.php:2462 +#, php-format +msgid "[%s] Preload may have stalled." +msgstr "[%s] Загальнe кешування могло бути перервано." + +#: wp-cache.php:2462 +#, php-format +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"Загальне кешування було перезапущенe. \n" +"%s" + +#~ msgid "" +#~ "Scroll down this page and click the Update Mod_Rewrite Rules button." +#~ msgstr "" +#~ "Пролистайте страницу вних и нажмите кнопку Обновить правила " +#~ "Mod_Rewrite." + +#~ msgid "WP Super Cache Manager" +#~ msgstr "Управление плагином WP Super Cache" + +#~ msgid "Why your configuration may not be changed" +#~ msgstr "Почему конфигурации не могут быть изменены" + +#~ msgid "Why" +#~ msgstr "Почему" + +#~ msgid "ON" +#~ msgstr "ВКЛ" + +#~ msgid "WP Cache and Super Cache enabled" +#~ msgstr "Плагины WP Cache и Super Cache включены" + +#~ msgid "HALF ON" +#~ msgstr "РАБОТАЕТ НАПОЛОВИНУ" + +#~ msgid "Super Cache Disabled, only legacy WP-Cache caching." +#~ msgstr "Плагин Super Cache отключен, работает только кэшировани WP-Cache" + +#~ msgid "OFF" +#~ msgstr "ВЫКЛ" + +#~ msgid "WP Cache and Super Cache disabled" +#~ msgstr "Плагины WP Cache и Super Cache отключены" + +#~ msgid "" +#~ "Cache rebuild. Serve a supercache file to anonymous users while a new " +#~ "file is being generated. Recommended for very busy websites with " +#~ "lots of comments. Makes \"directly cached pages\" and \"Lockdown mode\" " +#~ "obsolete." +#~ msgstr "" +#~ "Восстановление кэша. При включенной опции, гости сайта будут получать " +#~ "старые страницы из плагина Super Cache, пока формируются новые. " +#~ "Рекомендуется использовать данную опцию только для очень " +#~ "посещаемых блогов, где много комментариев. После включения опции в " +#~ "настройках \"прямое кэширование страниц\" и \"закрытый режим\" нет нужды " +#~ "(они устаревают)" + +#~ msgid "" +#~ "List the newest cached pages (may be expensive to run on busy sites, use " +#~ "with caution.)" +#~ msgstr "" +#~ "Создавать список новых кэшированных страниц (использовать на свой страх и " +#~ "риск, может затормозить сайты с большим количеством посетителей)" + +#~ msgid "" +#~ "%1$s really makes your blog go faster. Make it go faster* by " +#~ "buying me an Amazon gift card! Make it out to \"%3$s" +#~ "\" for whatever amount you want. Every penny helps!" +#~ msgstr "" +#~ "%1$s действительно ускоряет Ваш блог. Вы можете сделать его еще " +#~ "быстрее*, купив мне подарочную карту сервиса " +#~ "Amazon! Можете выбрать \"%3$s\" любое значение, какое хотите. Каждая " +#~ "копейка поможет мне!" + +#~ msgid "" +#~ "If Amazon isn’t your thing, there’s also PayPal. Click the " +#~ "\"Donate\" button below or take a quick peek at my wishlist." +#~ msgstr "" +#~ "Если Вы не хотите иметь дело с Amazon , то можно сделать пожертвование " +#~ "через PayPal. Нажмите кнопку \"Пожертвовать\" или выберите подарок для " +#~ "меня из моего списка желаний." + +#~ msgid "Thanks in advance!" +#~ msgstr "Заранее благодарю!" + +#~ msgid "" +#~ "Ok, it won’t go any faster but you’ll make this plugin author " +#~ "very happy!" +#~ msgstr "" +#~ "Ладно, он не будет быстрее, но Вы все равно сделаете автора плагина очень " +#~ "счастливым!" + +#~ msgid "Don’t show me this again." +#~ msgstr "Не показывать больше это сообщение." + +#~ msgid "Hide" +#~ msgstr "Спрятать" + +#~ msgid "" +#~ "He blogs at %1$s and posts photos at %2$s. He would really appreciate a " +#~ "donation to encourage development of this plugin." +#~ "
      Even a penny will help." +#~ msgstr "" +#~ "Блог автора - %1$s, фотоблог - %2$s. Автор плагина будет благодарен любой " +#~ "поддержке от Вас.
      Даже копейка может помочь в " +#~ "его работе." + +#~ msgid "Super Cache Compression" +#~ msgstr "Сжатие кэша Super Cache" + +#~ msgid "Compression is enabled by default when in HALF ON mode." +#~ msgstr "" +#~ "Сжатие кэша отключено по умолчанию в режиме РАБОТАЕТ НАПОЛОВИНУ." + +#~ msgid "Super Cache compression is now disabled." +#~ msgstr "Сжатие кэша Super Cache теперь отключено." + +#~ msgid "Super Cache compression is now enabled." +#~ msgstr "Сжатие кэша Super Cache теперь включено." + +#~ msgid "Update Compression" +#~ msgstr "Обновить настройки сжатия" + +#~ msgid "Debug Settings" +#~ msgstr "Параметры отладки" + +#~ msgid "" +#~ "

      WP_CACHE constant in wp-config.php set to false

      The WP_CACHE " +#~ "constant is defined in your wp-config.php but must be set to true, not " +#~ "false for this plugin to work correctly.

      " +#~ msgstr "" +#~ "

      Значение для WP_CACHE в конфигурационном файле WordPrees wp-config." +#~ "php установлено на \"false\"

      Чтобы плагин заработал, значение " +#~ "WP_CACHE в wp-config.php нужно поставить на \"true\".

      " + +#~ msgid "You must edit the file yourself add the following rules." +#~ msgstr "" +#~ "Вы должны вручную отредактировать файл и добавить необходимые правила." diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-uk.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-uk.mo new file mode 100644 index 0000000000000000000000000000000000000000..5c87f64f66c77940c6c7b1b9862517c28bf94a77 GIT binary patch literal 58904 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-uk.po b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-uk.po new file mode 100644 index 0000000..f3aa77a --- /dev/null +++ b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-uk.po @@ -0,0 +1,1068 @@ +msgid "" +msgstr "" +"Project-Id-Version: wp-super-cache\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-super-cache\n" +"POT-Creation-Date: 2009-11-13 10:27+0000\n" +"PO-Revision-Date: \n" +"Last-Translator: Vitaly \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Ukrainian\n" +"X-Poedit-Country: UKRAINE\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: plugins/badbehaviour.php:45 +msgid "Bad Behaviour not found. Please check your install." +msgstr "ПОГАНУ ПОВЕДІНКУ не знайдено. Будь ласка, перевірте Вашу інсталяцію." + +#: plugins/badbehaviour.php:47 +#: plugins/badbehaviour.php:66 +#: plugins/searchengine.php:61 +#: plugins/searchengine.php:76 +#: wp-cache.php:709 +msgid "Disable" +msgstr "Вимкнути" + +#: plugins/badbehaviour.php:55 +#: plugins/searchengine.php:67 +msgid "disabled" +msgstr "вимкнено" + +#: plugins/badbehaviour.php:57 +#: plugins/searchengine.php:69 +#: wp-cache.php:1052 +msgid "enabled" +msgstr "ввімкнено" + +#: plugins/badbehaviour.php:60 +#, php-format +msgid "Bad Behaviour support is %s" +msgstr "Підтримку ПОГАНОЇ ПОВЕДІНКИ %s" + +#: plugins/badbehaviour.php:62 +#, php-format +msgid "(Only half-on caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr " (Підтримується тільки напів-кешування, стиснення ввимкнено та потребує ПОГАНУ ПОВЕДІНКУ у \"%s/plugins/bad-behavior/\") " + +#: plugins/badbehaviour.php:64 +#: plugins/searchengine.php:74 +#: wp-cache.php:709 +msgid "Enable" +msgstr "Ввімкнути" + +#: plugins/badbehaviour.php:70 +#: wp-cache.php:786 +#: wp-cache.php:788 +msgid "Warning!" +msgstr "Увага!" + +#: plugins/searchengine.php:71 +#, php-format +msgid "No Adverts for Friends plugin is %s" +msgstr "Плаґін Нема посилань для друзів %s" + +#: plugins/searchengine.php:72 +msgid "(requires friendsadverts.php too) " +msgstr "(необхідно також friendsadverts.php) " + +#: wp-cache.php:87 +#, php-format +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "Будь ласка, створіть %s /wp-cache-config.php з wp-super-cache/wp-cache-config-sample.php" + +#: wp-cache.php:170 +msgid "WP Super Cache Manager" +msgstr "Управління Вордпрес Супер Кешем" + +#: wp-cache.php:172 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "Увага! Ввімкнено PHP Безпечний Режим (Safe Mode)!" + +#: wp-cache.php:173 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "Ви можете відчувати проблеми у роботі плаґіну, тому що ввімкнено Безпечний Режим (Safe Mode)." + +#: wp-cache.php:175 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "Ваш сервер налаштований на перевірку власника PHP скриптів перед тим, як дозволити їм читати та писати файли." + +#: wp-cache.php:176 +#, php-format +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "Ви або Адміністратор можете виправити роботу, змінивши власника групи скриптів плаґіну. Необхідно також змінити власника групи папки %s/cache/. Додаткові деталі Ви можете переглянути на сторінці документації безпечного режиму." + +#: wp-cache.php:178 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "Ви або Адміністратор повинні вимкнути це. Додаткові деталі Ви можете переглянути на сторінці документації безпечного режиму. На жаль, це не можна вимкнути у фалі .htaccess. Це можна поправити у файлі налаштувань php.ini." + +#: wp-cache.php:189 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "Змінено файл налаштувань, деякі змінні можуть бути неправильними. Щоб обнулити їх, завантажте сторінку знову з розділу меню \"Налаштування\"." + +#: wp-cache.php:195 +msgid "Cannot continue... fix previous problems and retry." +msgstr "Продовження неможливе... виправте попередні проблеми та спробуйте знову." + +#: wp-cache.php:211 +#, php-format +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "Увага! Ваше ім’я хосту \"%s\" прікріплено до %s" + +#: wp-cache.php:213 +#, php-format +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "Ваш сервер думає, що ім’я хосту прікріплено до %s. Деякі служби, такі як збір сміття цим плаґіном та WordPress scheduled posts можуть працювати неправильно." + +#: wp-cache.php:214 +#: wp-cache.php:228 +#, php-format +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "Будь ласка, перегляньте пункт 16 у Розділі проблем у файлі readme.txt" + +#: wp-cache.php:227 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "Нажаль, Вордпрес не може знайти файл wp-cron.php. Скрипт потребує правильних дій збору сміття цим плаґіном, WordPress scheduled posts такий самий як і інші критичні дії." + +#: wp-cache.php:239 +msgid "Mod rewrite may not be installed!" +msgstr "Можливо Mod_rewrite не встановлено!" + +#: wp-cache.php:240 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use half-on mode." +msgstr "Здається, що mod_rewrite не встановлено. Іноді ця перевірка не є на 100% достовірною, особливо якщо Ви використовуєте не Apache. Будь ласка, переконайтесь у тому, що модуль mod_rewrite завантажено. Це необхідно для видачі статичних файлів Супер Кешу. Ви всерівно будете мати змогу використовувати режим напів-кешування." + +#: wp-cache.php:245 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "Режим лише читання. Налаштування не можливо змінити." + +#: wp-cache.php:245 +msgid "Why your configuration may not be changed" +msgstr "Чому Ваші налаштування не можливо змінити" + +#: wp-cache.php:245 +msgid "Why" +msgstr "Чому" + +#: wp-cache.php:247 +#, php-format +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "Вордпрес Супер Кеш файл з налаштуваннями: %s/wp-cache-config.php і не може бути відредагованим. Щоб внести зміни, цей файл повинен бути доступним для запису веб-сервером." + +#: wp-cache.php:248 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "Щоб це зробити, необхідно тимчасово змінити права доступу, використовуючи команду CHMOD або за допомогою вашого ftp-клієнту. Запевніться у тому, що є доступ для запису." + +#: wp-cache.php:249 +msgid "Writeable:" +msgstr "Доступне для запису:" + +#: wp-cache.php:250 +msgid "Readonly:" +msgstr "Доступне для читання:" + +#: wp-cache.php:262 +#, php-format +msgid "Warning! %s is writeable!" +msgstr "Увага! Папка %s доступна для запису!" + +#: wp-cache.php:263 +#, php-format +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "Вам необхідно змінити права доступу для папки %s та зробити їх більш обмеженими. Використовуйте Ваш ftp-клієнт або наступні команди, щоб це виправити:" + +#: wp-cache.php:354 +msgid "WP Super Cache Status" +msgstr "Статус Вордпрес Супер Кеш" + +#: wp-cache.php:357 +msgid "ON" +msgstr "Ввімкнено" + +#: wp-cache.php:357 +msgid "WP Cache and Super Cache enabled" +msgstr "Вордпрес Кеш та Вордпрес Супер Кеш ввімкнено" + +#: wp-cache.php:358 +msgid "HALF ON" +msgstr "Ввімкнено наполовину" + +#: wp-cache.php:358 +msgid "Super Cache Disabled, only legacy WP-Cache caching." +msgstr "Супер Кеш вимкнено, кешує лише Вордпрес Кеш." + +#: wp-cache.php:359 +msgid "OFF" +msgstr "Вимкнено" + +#: wp-cache.php:359 +msgid "WP Cache and Super Cache disabled" +msgstr "Вордпрес Кеш та Вордпрес Супер Кеш вимкнено" + +#: wp-cache.php:360 +msgid "Don’t cache pages for logged in users." +msgstr "Не кешувати сторінки для залогованих користувачів." + +#: wp-cache.php:361 +msgid "Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)" +msgstr "Скажіть гордо світу, що Ваш сервер підтверджено Діггом! (розмістити повідомлення у підвал Вашого сайту)" + +#: wp-cache.php:362 +msgid "Clear all cache files when a post or page is published. (This may significantly slow down saving of posts.)" +msgstr "Видалити всі закешовані файли, якщо стаття або сторінка оновилась. (Це може значно сповільнити збереження сторінок.)" + +#: wp-cache.php:363 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated. Recommended for very busy websites with lots of comments. Makes \"directly cached pages\" and \"Lockdown mode\" obsolete." +msgstr "Оновлення кешу. Видавати супер-кешований файл для анонімних користувачів, поки не згенерується новий файл. Рекомендовано для дуже завантажених сайтів з великою кількістю коментарів. Робить \"безпосередньо закешовані сторінки\" та \"Режим блокування\" непотрібними." + +#: wp-cache.php:365 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "Блокування великих файлів. Вам це напевне не потрібно, але це може допомогти, якщо у Вас не дуже потужний сервер. Увага! Може спричинити блокування Вашого сервера у рідких випадках! " + +#: wp-cache.php:367 +msgid "List the newest cached pages (may be expensive to run on busy sites, use with caution.)" +msgstr "Список найновіших закешованих сторінок (може довго виконуватися на завантажених сайтах, використовуйте з обережністю.)" + +#: wp-cache.php:368 +msgid "Mobile device support." +msgstr "Підтримка стільникових пристроїв." + +#: wp-cache.php:373 +msgid "Mobile rewrite rules detected" +msgstr "Знайдено правила rewrite для стільникових пристроїв" + +#: wp-cache.php:374 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"Android|2.0\\ MMP|240x320|AvantGo|BlackBerry|Blazer|Cellphone\" and delete those." +msgstr "Для кращої роботи Вам необхідно ввімкнути \"Підтримку стільникових пристроїв\" або видалити правило mod_rewrite для стільникових пристроїв у файлі .htaccess. Знайдіть дві стрічки з текстом \"Android|2.0\\ MMP|240x320|AvantGo|BlackBerry|Blazer|Cellphone\" та видаліть їх." + +#: wp-cache.php:374 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "Це не спричинить ніякого ефекту на звичайних користувачів, але стільникові користувачі побачать незакешовані сторінки." + +#: wp-cache.php:377 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to half-on mode. Here are your options (in order of difficulty):" +msgstr "Підтримка мобільних пристроїв потребує додаткових правил у Вашому .htaccess файлі або Ви можете налаштувати плаґін у режим напів-кешування. Ось Ваші налаштування (у порядку ускладнення):" + +#: wp-cache.php:378 +msgid "Set the plugin to half on mode and enable mobile support." +msgstr "Налаштувати плаґін у режим напів-кешування та ввімкнути підтримку стільникових пристроїв." + +#: wp-cache.php:379 +#, php-format +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "Видалити mod_rewrite правила плаґіну у %s.htaccess, що починається зі стрічки # BEGIN WPSuperCache та закінчується # END WPSuperCache та дозволити плаґіну перегенерувати їх за допомогою перезавантаження сторінки." + +#: wp-cache.php:380 +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$ add this line: (do it twice, once for each section)" +msgstr "Додати правила самостійно. Відредагуйте %s.htaccess та знайдіть фрагмент коду, що починається зі стрічки # BEGIN WPSuperCache та закінчується стрічкою # END WPSuperCache. Є два подібні між собою фрагменти коду. Одразу під стрічкою %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$ додайте цей код: (зробіть це двічі, тобто для кожного з фрагментів)" + +#: wp-cache.php:383 +msgid "Note:" +msgstr "Примітка:" + +#: wp-cache.php:383 +#, php-format +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "Якщо Ви деінсталюєте цей плаґін, переконайтесь, що папка %s є доступною для запису веб-сервером і файли advanced-cache.php та cache-config.php можуть бути видалені автоматично. (Переконайтесь, що ці файли доступні для запису також!)" + +#: wp-cache.php:384 +#, php-format +msgid "Uninstall using the uninstall script to remove files and directories created by the plugin. (Please see readme.txt for instructions on uninstalling this script.)" +msgstr "Деінсталювати, використовуючи скрипт деінсталяції, щоб видалити файли та папки, створені плаґіном. (Будь ласка, перегляньте readme.txt для порад по деінсталяції.)" + +#: wp-cache.php:386 +msgid "Update Status" +msgstr "Зберегти налаштування" + +#: wp-cache.php:393 +msgid "Required to serve compressed supercache files properly." +msgstr "Необхідне для того, щоб правильно видавати стиснуті супер-кешовані файли." + +#: wp-cache.php:393 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "Необхідне для того, щоб налаштувати інформацію щодо кешування на супер-кешованих сторінках. Без цього модуля користувачі ІЕ7 побачать старі сторінки." + +#: wp-cache.php:393 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "Встановити термін дії для супер-кешованих сторінок. Без цього модуля відвідувачі можливо не побачать нових сторінок коли вони оновлять сторінку або залишать коментар." + +#: wp-cache.php:400 +msgid "Missing Apache Modules" +msgstr "Невистачає модулів Apache" + +#: wp-cache.php:401 +msgid "The following Apache modules are missing. The plugin will work in half-on mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "Наступні Apache модулі відсутні. Без них плаґін буде працювати у режимі напів-кешування. У режимі повного супер-кешування Ваші відвідувачі можливо побачать зіпсовані сторінки або протермінований вміст сторінок." + +#: wp-cache.php:413 +msgid "Make WordPress Faster" +msgstr "Зробити Вордпрес швидшим" + +#: wp-cache.php:415 +#, php-format +msgid "%1$s really makes your blog go faster. Make it go faster* by buying me an Amazon gift card! Make it out to \"%3$s\" for whatever amount you want. Every penny helps!" +msgstr "%1$s справді робить Ваш сайт швидшим. Зробіть його ще швидшим*, купивши мені вітальну листівку на Амазоні! Зробити її у \"%3$s\" з будь-якою сумою. Кожна копійка допоможе!" + +#: wp-cache.php:416 +#, php-format +msgid "If Amazon isn’t your thing, there’s also PayPal. Click the \"Donate\" button below or take a quick peek at my wishlist." +msgstr "Якщо Амазон не для Вас, є також PayPal. Клікніть внизу на кнопку \"Пожертвувати\" або перегляньте список моїх побажань." + +#: wp-cache.php:417 +msgid "Thanks in advance!" +msgstr "Дякую!" + +#: wp-cache.php:418 +msgid "Ok, it won’t go any faster but you’ll make this plugin author very happy!" +msgstr "Ну добре, воно не запрацює швидше, але Ви зробите автора цього плаґіну дуже щасливим!" + +#: wp-cache.php:426 +msgid "Don’t show me this again." +msgstr "Не показувати мені цього знову." + +#: wp-cache.php:426 +msgid "Hide" +msgstr "Приховати" + +#: wp-cache.php:429 +#, php-format +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "%1$s підтримується та розроблено %2$s за сприянням багатьох інших розробників." + +#: wp-cache.php:430 +#, php-format +msgid "He blogs at %1$s, posts photos at %2$s and wishes he had more time to read and relax." +msgstr "Він має блог на %1$s, публікує фото на %2$s та якби він мав більше часу почитати та розслабитись." + +#: wp-cache.php:431 +#, php-format +msgid "Please say hi to him on %s too!" +msgstr "Сказати йому \"привіт\" у %s також!" + +#: wp-cache.php:440 +#, php-format +msgid "Cached pages since %1$s : %2$s" +msgstr "Сторінки закешовано з %1$s : %2$s" + +#: wp-cache.php:441 +msgid "Newest Cached Pages:" +msgstr "Новіші закешовані сторінки:" + +#: wp-cache.php:445 +#, php-format +msgid "Cached %s seconds ago" +msgstr "Закешовано %s секунд тому назад" + +#: wp-cache.php:448 +msgid "(may not always be accurate on busy sites)" +msgstr "(може бути не завжди точним на завантажених сайтах)" + +#: wp-cache.php:469 +msgid "Accepted Filenames & Rejected URIs" +msgstr "Прийняті імена файлів та відхилені URI-шляхи" + +#: wp-cache.php:494 +msgid "Cache Plugins" +msgstr "Плаґіни для Кешу" + +#: wp-cache.php:505 +#: wp-cache.php:516 +msgid "Super Cache Compression" +msgstr "Стиск Супер Кешу" + +#: wp-cache.php:506 +msgid "Compression is enabled by default when in HALF ON mode." +msgstr "У режимі Напів-Кешування стиск ввіммкнено за замовчуванням." + +#: wp-cache.php:518 +#: wp-cache.php:696 +msgid "Enabled" +msgstr "Ввімкнено" + +#: wp-cache.php:519 +#: wp-cache.php:696 +msgid "Disabled" +msgstr "Вимкнено" + +#: wp-cache.php:520 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching this on and off clears the cache." +msgstr "Стиск вимкнено за замовчуванням, тому що деякі хости мають проблеми зі стиснутими файлами. Вмикання та вимикання цього пункту призводить до очищення кешу." + +#: wp-cache.php:523 +msgid "Super Cache compression is now disabled." +msgstr "Стиск Супер Кешу вимкнено." + +#: wp-cache.php:525 +msgid "Super Cache compression is now enabled." +msgstr "Стиск Супер Кешу ввімкнено." + +#: wp-cache.php:527 +msgid "Update Compression" +msgstr "Оновити стиск" + +#: wp-cache.php:534 +msgid "Mod Rewrite Rules" +msgstr "Правила Mod Rewrite" + +#: wp-cache.php:581 +msgid "WordPress MU Detected" +msgstr "Виявлено Вордпрес МЮ" + +#: wp-cache.php:581 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "Нажаль, коли працює Вордпрес МЮ, правила rewrite не можуть бути оновлені автоматично. Будь ласка, відкрийте Ваш .htaccess файл та додайте наступні правила mod_rewrite з самого початку файлу." + +#: wp-cache.php:583 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Правила Mod Rewrite не можна оновити!" + +#: wp-cache.php:584 +#, php-format +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "Ви повинні мати маркери BEGIN та END у %s.htaccess файлі для того, щоб працювало автооновлення. Вони схожі на це та оточують головні mod_rewrite правила Вордпресу:" + +#: wp-cache.php:586 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "Оновіть цю сторінку коли Ви оновите Ваш .htaccess файл." + +#: wp-cache.php:590 +msgid "Thank you for upgrading." +msgstr "Дякую за оновлення" + +#: wp-cache.php:590 +#, php-format +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "Правила mod_rewrite змінилися з того часу, коли Ви інсталювали цей плаґін. На жаль, Ви повинні видалити старі правила для Супер Кешу перед тим, як додати нові. Оновіть цю сторінку, коли відредагуєте Ваш .htaccess файл. Якщо Ви бажаєте додати оновлення вручну, змініть наступну стрічку: %1$s щоб вона виглядала приблизно ось так: %2$s Необхідно внести наступні зміни: \"HTTP_COOKIE\" замінити на \"HTTP:Cookie\" та \"wordpressuser\" замінити на \"wordpress\". Це зміна для Вордпресу 2.5, але це зворотня сумісність зі старішими версіями, якщо Ви достатньо хоробрий, щоб їх використовувати." + +#: wp-cache.php:594 +msgid "Trailing slash check required." +msgstr "Необхідна перевірка першого слешу." + +#: wp-cache.php:594 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "Схоже на те, що Ваш сайт має URL-адреси, що закінчуються символом \"/\". На жаль, з того часу, як Ви інсталювали цей плаґін, виникла помилка дублювання вмісту, при якій URL-адреси, що не закінчуються символом \"/\" видають той самий вміст, що і сторінки з символом \"/\" у кінці та не перенаправляються на правильну URL-адресу. Щоб це виправити, Вам необхідно відредагувати Ваш .htaccess файл та додати ці два правила до двох груп правил Супер Кешу:" + +#: wp-cache.php:596 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "Ви можете побачити, де правила виконуються та дослідити повні правила, відвідавши посилання \"Переглянути правила mod_rewrite\", що розміщено нижче." + +#: wp-cache.php:608 +msgid "Cannot update .htaccess" +msgstr "Неможливо оновити .htaccess" + +#: wp-cache.php:608 +#, php-format +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "Файл %s.htaccess не може бути змінений веб-сервером. Будь ласка, виправте це, використовуючи команду CHMOD або Ваш FTP-клієнт." + +#: wp-cache.php:608 +msgid "Refresh this page when the file permissions have been modified." +msgstr "Оновіть цю сторінку, якщо права доступу файлу було змінено." + +#: wp-cache.php:608 +#, php-format +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "Крім того, Ви можете редагувати свій %s.htaccess файл вручну та додати наступний код (перед будь-якими правилами Вордпресу):" + +#: wp-cache.php:611 +#, php-format +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "Щоб видавати статичні HTML-файли сервер повинен мати правильні правила mod_rewrite, що додані у файл %s.htaccess" + +#: wp-cache.php:613 +msgid "You must edit the file yourself add the following rules." +msgstr "Ви повинні редагувати файл самостійно, додаючи наступні правила." + +#: wp-cache.php:615 +msgid "You can edit the file yourself add the following rules." +msgstr "Ви можете редагувати файл самостійно, додаючи наступні правила." + +#: wp-cache.php:617 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr "Переконайтеся, що вони розміщені перед будь-яким з існуючих правил Вордпресу." + +#: wp-cache.php:619 +#: wp-cache.php:646 +#, php-format +msgid "Rules must be added to %s too:" +msgstr "Правила необхідно додати до %s також:" + +#: wp-cache.php:624 +msgid "Update Mod_Rewrite Rules" +msgstr "Оновити правили Mod_Rewrite" + +#: wp-cache.php:633 +msgid "Mod Rewrite rules updated!" +msgstr "Правила Mod Rewrite оновлено!" + +#: wp-cache.php:634 +#, php-format +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "У %s.htaccess було додано необхідні правила mod_rewrite. Будь ласка, перевірте їх правильність. Вони повинні бути подібними на ці:" + +#: wp-cache.php:636 +msgid "Mod Rewrite rules must be updated!" +msgstr "Правила Mod Rewrite необхідно оновити!" + +#: wp-cache.php:637 +#, php-format +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "Ваш %s.htaccess недоступний для запису веб-сервером, і повинен бути оновлений необхідними правилами mod_rewrite. Нові правила розміщуються вище звичайних правил Вордпресу, як показано в коді нижче:" + +#: wp-cache.php:642 +#, php-format +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "Знайдено mod_rewrite правила Вордпрес Супер Кешу у Вашому %s.htaccess файлі.
      Відвідайте наступне посилання, щоб побачити додані у цей файл стрічки. Якщо Ви оновили плаґін, переконайтесь, що ці правила підходять." + +#: wp-cache.php:643 +msgid "View Mod_Rewrite Rules" +msgstr "Переглянути правила Mod_Rewrite" + +#: wp-cache.php:654 +#, php-format +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "Створено правила Gzip декодування у %s.htaccess." + +#: wp-cache.php:661 +msgid "Fix Configuration" +msgstr "Виправити налаштування" + +#: wp-cache.php:664 +msgid "Restore Default Configuration" +msgstr "Відновити налаштування за замовчуванням" + +#: wp-cache.php:672 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "Модерацію коментарів ввімкнено. Можливо знадобиться трохи часу, щоб Ваш коментар з’явився." + +#: wp-cache.php:696 +msgid "Lock Down:" +msgstr "Заблоковано:" + +#: wp-cache.php:697 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "Підготуйте свій сервер для очікуваного збільшення трафіка, дозволяючи блокування. Коли ця опція ввімкнена, нові коментарі не будуть оновлювати закешованих статичних файлів." + +#: wp-cache.php:698 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "Розробники: Зробіть Ваш плаґін сумісним для блокування, перевіривши константу \"WPLOCKDOWN\". Наступний код буде переконаний у тому, що Ваш плаґін перевіряє налаштування WPLOCKDOWN." + +#: wp-cache.php:700 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "Вибачте. Мій сайт заблоковано. Оновлення скоро з’являться" + +#: wp-cache.php:704 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "Вордпрес заблоковано. Статичні файли Супер Кешу не будуть видалені коли з’являться нові коментарі." + +#: wp-cache.php:706 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "Вордпрес не заблоковано. Нові коментарі будуть оновлювати статичні файли Супер Кешу у звичайному режимі." + +#: wp-cache.php:712 +msgid "Lock Down" +msgstr "режим блокування" + +#: wp-cache.php:720 +msgid "Directly Cached Files" +msgstr "Безпосередньо закешовані файли" + +#: wp-cache.php:778 +#, php-format +msgid "%s removed!" +msgstr "%s видалено!" + +#: wp-cache.php:786 +#, php-format +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "Ви повинні зробити %s доступною для запису для ввімкнення цієї функції. Оскільки це ризиковано, будь ласка, зробіть її знову доступною лише для читання після того, як Ваша сторінка згенерується." + +#: wp-cache.php:788 +#, php-format +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "Папка %s доступна для запису. Будь ласка, зробіть її доступною для читання після того, як сторінка згенерується, бо це небезпечно." + +#: wp-cache.php:802 +msgid "Existing direct page" +msgstr "Дана сторінка існує" + +#: wp-cache.php:802 +msgid "Delete cached file" +msgstr "Видалити закешований файл" + +#: wp-cache.php:807 +msgid "Add direct page:" +msgstr "Додати дану сторінку:" + +#: wp-cache.php:809 +#, php-format +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "Безпосередньо закешовані файли - це файли, створені безпосередньо у %s, де розміщено Ваш сайт. Ця опція корисна лише тоді, якщо Ви очікуєте значного збільшення трафіку з Діггу або Слешдоту на одну зі своїх статей або сторінок." + +#: wp-cache.php:811 +#, php-format +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "Наприклад: щоб закешувати %1$sabout/, Вам необхідно ввести %1$sabout/ або /about/. Закешований файл буде створено наступного разу коли анонімний користувач відвідає цю сторінку." + +#: wp-cache.php:812 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "Очистіть текстове поле, щоб знищити сторінку зі списку безпосередньо закешованих сторінок та видалити закешований файл." + +#: wp-cache.php:817 +msgid "Update Direct Pages" +msgstr "Оновити дані сторінки" + +#: wp-cache.php:857 +msgid "Expiry Time & Garbage Collection" +msgstr "Термін дії та збір сміття" + +#: wp-cache.php:859 +msgid "Expire time:" +msgstr "Час протермінування:" + +#: wp-cache.php:860 +msgid "seconds" +msgstr "секунд" + +#: wp-cache.php:861 +msgid "Garbage Collection" +msgstr "Збір Сміття" + +#: wp-cache.php:861 +msgid "If expiry time is more than 1800 seconds (half an hour), garbage collection will be done every 10 minutes, otherwise it will happen 10 seconds after the expiry time above." +msgstr "Якщо час протермінування більш ніж 1800 секунд (півгодини), тоді збір сміття буде здійснюватися кожні 10 хвилин, в іншому випадку це відбудеться через 10 секунд після закінчення часу, що зазначено вище." + +#: wp-cache.php:862 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 300 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. Aim to have less than 500 cached files if possible." +msgstr "Перевірка та видалення протермінованих файлів є ресурсоємкою процедурою, але залишати їх там було би неправильно. На дуже завантаженому сайті Ви повинні встановити термін дії на 300 секунд. Поекспериментуйте з різними значеннями та відвідайте цю сторінку, щоб дізнатися, скільки протермінованих файлів залишилося у різний час протягом дня. Прагніть до того, щоб залишилось менше ніж 500 закешованих файлів." + +#: wp-cache.php:863 +msgid "Change Expiration" +msgstr "Змінити термін дії" + +#: wp-cache.php:902 +msgid "Rejected User Agents" +msgstr "Відхилені броузери (боти)" + +#: wp-cache.php:903 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "Стрічки у HTTP-запитах для браузерів (ботів), що забороняють Вордпрес Кешу кешувати запити ботів та пошукових павуків. Зауважте, що супер-кешовані файли все ще видаються цим браузерам (ботам), якщо вони вже існують." + +#: wp-cache.php:910 +msgid "Save UA Strings" +msgstr "Зберегти назви ботів (пошукових павуків)" + +#: wp-cache.php:933 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "Не кешувати наступні типи сторінок. Відвідайте сторінку документації умовні теги для повного роз’яснення по кожному типу." + +#: wp-cache.php:936 +msgid "Single Posts" +msgstr "Одинарні статті" + +#: wp-cache.php:937 +msgid "Pages" +msgstr "Сторінки" + +#: wp-cache.php:938 +msgid "Front Page" +msgstr "Головна сторінка" + +#: wp-cache.php:939 +msgid "Home" +msgstr "Домашня сторінка" + +#: wp-cache.php:940 +msgid "Archives" +msgstr "Архіви" + +#: wp-cache.php:941 +msgid "Tags" +msgstr "Теги" + +#: wp-cache.php:942 +msgid "Category" +msgstr "Категорії" + +#: wp-cache.php:943 +msgid "Feeds" +msgstr "Фіди" + +#: wp-cache.php:944 +msgid "Search Pages" +msgstr "Сторінки пошуку" + +#: wp-cache.php:946 +#: wp-cache.php:1073 +msgid "Save" +msgstr "Зберегти" + +#: wp-cache.php:963 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "Додати стрічки (не і’мя файлу), що примушують сторінки не кешувати. Наприклад, якщо Ваші URL-адреси містять рік і Ви не хочете кешувати останній рік статей, тоді достатньо вказати рік, наприклад ’/2004/’. Вордпрес Кеш перевірить чи ця стрічка є частиною URI-шляху. Якщо так, тоді ця сторінка не буде закешованою." + +#: wp-cache.php:969 +msgid "Save Strings" +msgstr "Зберегти стрічки" + +#: wp-cache.php:985 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "Додайте сюди імена файлів, які можуть бути закешованими, навіть якщо вони відповідають одній з відхилених стрічок, зазначених вище." + +#: wp-cache.php:991 +msgid "Save Files" +msgstr "Зберегти файли" + +#: wp-cache.php:1035 +msgid "Debug Settings" +msgstr "Налаштування відлагодження" + +#: wp-cache.php:1037 +msgid "Currently logging to: " +msgstr "Зараз лог записується у: " + +#: wp-cache.php:1047 +msgid "Fix problems with the plugin by debugging it here. It can send you debug emails or log them to a file in your cache directory." +msgstr "Виправіть проблеми з плаґіном, відлагоджуючи його тут. Він може надсилати Вам відгоджувальні листи на електротронну скриньку або зберігати інформацію у лог-файл у каталозі кешу." + +#: wp-cache.php:1048 +msgid "Logging to a file is easier but faces the problem that clearing the cache will clear the log file." +msgstr "Ведення лог-файлу простіше, але виникає проблема - очищення кешу буде очищати лог-файл." + +#: wp-cache.php:1052 +msgid "Debugging" +msgstr "Відлагодження" + +#: wp-cache.php:1053 +msgid "Logging Type" +msgstr "Тип логу" + +#: wp-cache.php:1053 +msgid "Email" +msgstr "Електронна скринька" + +#: wp-cache.php:1054 +msgid "file" +msgstr "файл" + +#: wp-cache.php:1055 +msgid "IP Address" +msgstr "IP-адреса" + +#: wp-cache.php:1055 +#, php-format +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(з цієї IP-адреси лише лог запити. Ваша IP-адреса: %s)" + +#: wp-cache.php:1056 +msgid "Log level" +msgstr "Рівень логу" + +#: wp-cache.php:1062 +msgid "(1 = less, 5 = more, may cause severe server load.)" +msgstr "(1 = менше, 5 = більше, може викликати навантаження сервера.)" + +#: wp-cache.php:1064 +msgid "Advanced" +msgstr "Розширене" + +#: wp-cache.php:1064 +msgid "In very rare cases two problems may arise on some blogs:
      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "У дуже рідкісних випадках на деяких сайтах, можуть виникнути дві проблеми:
      1. Головна сторінка може почати завантажуватись як Zip-файл.
      2. Випадково кешується не та сторінка як головна, якщо Ваш сайт використовує наступну структуру постійних посилань /%category%/%postname%/.
      " + +#: wp-cache.php:1065 +#, php-format +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "На 99%c я впевнений, що ці помилки не стосуються плаґіну Вордпрес Супер Кеш і вони трапляються у дуже рідких випадках, але Ви можете провести просту перевірку кожних 5 хвилин, щоб запевнитися, що Ваш сайт функціонує добре. Якщо виникнуть якісь проблеми, Ви отримаєте електронне повідомлення." + +#: wp-cache.php:1067 +msgid "Check front page every 5 minutes." +msgstr "Перевіряти головну сторінку кожні 5 хвилин." + +#: wp-cache.php:1068 +msgid "Front page text" +msgstr "Текст головної сторінки" + +#: wp-cache.php:1068 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "Текст для пошуку на головній сторінці. Якщо цей текст відсутній, тоді кеш буде очищено. Залиште порожнім, щоб відключити." + +#: wp-cache.php:1069 +msgid "Clear cache on error." +msgstr "Очистити кеш при помилці." + +#: wp-cache.php:1070 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "Надіслати електронного листа адміністратору сайту, коли перевірку буде завершено. (корисно для тестування)" + +#: wp-cache.php:1083 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "Помилка: стиск GZIP ввімкнено. Якщо Ви хочете, щоб Вордпрес-Кеш працював, тоді вимкніть це." + +#: wp-cache.php:1131 +#: wp-cache.php:1293 +msgid "Warning" +msgstr "Увага" + +#: wp-cache.php:1131 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "Стиск GZIP ввімкнено у Вордпресі, Вордпрес-Кеш буде пропущено, поки Ви не відключите стиск GZIP." + +#: wp-cache.php:1189 +#: wp-cache.php:1194 +#: wp-cache.php:1226 +#: wp-cache.php:1231 +#: wp-cache.php:1237 +msgid "Error" +msgstr "Помилка" + +#: wp-cache.php:1189 +#, php-format +msgid "Your cache directory ($cache_path) did not exist and couldn’t be created by the web server. Check %s permissions." +msgstr "Ваш каталог кешу ($cache_path) не існує і не може бути створений веб-сервер. Перевірте %s права доступу." + +#: wp-cache.php:1194 +#, php-format +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "Ваш каталог кешу (%1$s) або %2$s повинен мати дозвіл на запис щоб плаґін запрацював. Двічі це перевірте." + +#: wp-cache.php:1226 +#, php-format +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "Ваш конфігураційний файл Вордпрес-Кешу (%s) застарів та не доступний для запису веб-сервером. Будь ласка, видаліть його та оновіть цю сторінку." + +#: wp-cache.php:1231 +#, php-format +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "Конфігураційний файл відсутній та папка %1$s (%2$s) не доступна для запису веб-сервером. Перевірте права доступу." + +#: wp-cache.php:1237 +#, php-format +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "Не знайдено зразку конфігураційного файлу Вордпрес Кешу (%s). Перевірте Вашу інсталяцію." + +#: wp-cache.php:1293 +#, php-format +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "%s/advanced-cache.php не існує або не може бути оновленим." + +#: wp-cache.php:1294 +msgid "1. If it already exists please delete the file first." +msgstr "1. Якщо це вже існує, будь ласка, видаліть спочатку файл." + +#: wp-cache.php:1295 +#, php-format +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. Зробіть %1$s доступною для запису, використовуючи команди CHMOD або Ваш ftp-клієнт. (chmod 777 %1$s) та оновіть цю сторінку. Це лише тимчасова поправка, і Вам необхідно зробити цю папку доступною для читання вкінці знову. (Змініть 777 на 755 у попередній команді)" + +#: wp-cache.php:1296 +#, php-format +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. Обновіть цю сторінку, щоб оновити %s/advanced-cache.php" + +#: wp-cache.php:1297 +#, php-format +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "Якщо це не працює, переконайтесь, що файл %s/advanced-cache.php не існує:" + +#: wp-cache.php:1298 +#, php-format +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. Вдкрийте %1$s$wp_cache_file у текстовому редакторі.
    • 2. Змініть текст CACHEHOME на %2$s
    • 3. Збережіть файл і скопіюйте його в %3$s та оновіть цю сторінку.
    • " + +#: wp-cache.php:1318 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "Помилка: WP_CACHE не ввімкнено у Вашому wp-config.php файлі і я не зміг відредагувати його." + +#: wp-cache.php:1319 +#, php-format +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "Відредагуйте код %s та додайте наступну стрічку:
      define('WP_CACHE', true);
      В іншому випадку Вордпрес-Кеш не виконається за допомогою ядра Вордпресу." + +#: wp-cache.php:1322 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the FAQ. The WP_CACHE line must be moved up." +msgstr "

      Константа WP_CACHE додана у файл wp-config.php

      Якщо Ви продовжуєте бачити це попередження, тоді дивіться пункт 5 у FAQ. Стрічка WP_CACHE повинна бути переміщена вгору." + +#: wp-cache.php:1343 +msgid "Cache Contents" +msgstr "Вміст Кешу" + +#: wp-cache.php:1362 +#, php-format +msgid "Deleting supercache file: %s
      " +msgstr "Видаляється супер-кешований файл: %s
      " + +#: wp-cache.php:1379 +#, php-format +msgid "Deleting wp-cache file: %s
      " +msgstr "Видаляється файл wp-cache: %s
      " + +#: wp-cache.php:1443 +msgid "WP-Cache" +msgstr "Вордпрес-Кеш" + +#: wp-cache.php:1444 +#: wp-cache.php:1457 +#, php-format +msgid "%s Cached Pages" +msgstr "%s закешованих сторінок" + +#: wp-cache.php:1445 +#: wp-cache.php:1459 +#, php-format +msgid "%s Expired Pages" +msgstr "%s протермінованих сторінок" + +#: wp-cache.php:1456 +msgid "WP-Super-Cache" +msgstr "Вордпрес-Супер-Кеш" + +#: wp-cache.php:1464 +msgid "Fresh WP-Cached Files" +msgstr "Свіжі Вордпрес-Закешовані файли" + +#: wp-cache.php:1465 +#: wp-cache.php:1481 +#: wp-cache.php:1497 +#: wp-cache.php:1513 +msgid "URI" +msgstr "URI-шлях" + +#: wp-cache.php:1465 +#: wp-cache.php:1481 +msgid "Key" +msgstr "Ключ" + +#: wp-cache.php:1465 +#: wp-cache.php:1481 +#: wp-cache.php:1497 +#: wp-cache.php:1513 +msgid "Age" +msgstr "Вік" + +#: wp-cache.php:1465 +#: wp-cache.php:1481 +#: wp-cache.php:1497 +#: wp-cache.php:1513 +msgid "Delete" +msgstr "Видалити" + +#: wp-cache.php:1480 +msgid "Stale WP-Cached Files" +msgstr "Протерміновані Вордпрес-Кешовані файли" + +#: wp-cache.php:1496 +msgid "Fresh Super Cached Files" +msgstr "Свіжі Супер Кешовані файли" + +#: wp-cache.php:1512 +msgid "Stale Super Cached Files" +msgstr "Протерміновані Супер Кешовані файли" + +#: wp-cache.php:1528 +msgid "Hide file list" +msgstr "Приховати список файлів" + +#: wp-cache.php:1530 +msgid "List all cached files" +msgstr "Список всіх закешованих файлів" + +#: wp-cache.php:1536 +#, php-format +msgid "Garbage Collection
      Last GC was %s minutes ago
      " +msgstr "Збір Сміття
      Останній Збір Сміття був %s хвилин тому
      " + +#: wp-cache.php:1537 +#, php-format +msgid "Next GC in %s minutes" +msgstr "Наступний збір сміття відбудеться через %s хвилин" + +#: wp-cache.php:1540 +#, php-format +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "Протерміновані файли - це файли, що старші за %s секунд. Вони все рівно використовуються плаґіном та видаляються періодично." + +#: wp-cache.php:1543 +msgid "Delete Expired" +msgstr "Видалити протерміноване" + +#: wp-cache.php:1549 +#: wp-cache.php:1563 +#: wp-cache.php:1719 +msgid "Delete Cache" +msgstr "Очистити кеш" + +#: wp-cache.php:1563 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "Видалити закешовані файли Супер Кешу (завантажиться у новому вікні)" + +#: wp-cache.php:1695 +#, php-format +msgid "%1$s is Digg proof thanks to caching by %2$s" +msgstr "%1$s підтверджено Діггом і закешовано за допомогою %2$s" + +#: wp-cache.php:1728 +#, php-format +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "Вордпрес Супер Кеш необхідно налаштувати. Перейдіть на сторінку адміністрування, щоб ввімкнути та налаштувати плаґін." + +#: wp-cache.php:1734 +msgid "Settings" +msgstr "Налаштування" + +#: wp-cache.php:1744 +#, php-format +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "Вордпрес Супер Кеш ввімкнено. Будь ласка, перейдіть на сторінку адміністрування плаґіну, щоб ввімкнути кешування." + +#: wp-cache.php:1763 +#, php-format +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] Головну сторінку стиснено gzipp-ом! Будь ласка, очистіть кеш!" + +#: wp-cache.php:1763 +#, php-format +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "Будь ласка, відвідайте %s, щоб очистити кеш, тому що головна сторінка Вашого сайту зараз завантажується!" + +#: wp-cache.php:1766 +#, php-format +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] Головну сторінку стиснено gzipp-ом! Кеш очищено!" + +#: wp-cache.php:1766 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "Кеш на Вашому сайті була очищено, тому що головна сторінка зараз завантажується. Будь ласка, відвідайте %s для перевірки того, що кеш було очищено." + +#: wp-cache.php:1773 +#, php-format +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] Головна сторінка не правильна! Будь ласка, очистіть кеш!" + +#: wp-cache.php:1773 +#, php-format +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "Відвідайте %1$s, щоб очистити кеш, тому що головна сторінка Вашого сайту неправильна та відсутній текст, \"%2$s\"!" + +#: wp-cache.php:1776 +#, php-format +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] Головна сторінка не правильна! Кеш очищено!" + +#: wp-cache.php:1776 +#, php-format +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "Кеш на Вашому сайті було очищено, тому що на головній сторінці відсутній текст \"%2$s\". Відвідайте %1$s для перевірки того, що кеш було очищено." + +#: wp-cache.php:1781 +#, php-format +msgid "[%s] Front page check!" +msgstr "[%s] Перевірка головної сторінки!" + +#: wp-cache.php:1781 +#, php-format +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "Вордпрес Супер Кеш перевірив головну сторінку Вашого сайту. Будь ласка, відвідайте %s, якщо Ви хочете це відключити." + diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-zh_CN.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-zh_CN.mo new file mode 100644 index 0000000000000000000000000000000000000000..663d97e98f74e240c0c194fe09ae43ecdc9b9945 GIT binary patch literal 68811 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-zh_CN.po b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-zh_CN.po new file mode 100644 index 0000000..1747e15 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-zh_CN.po @@ -0,0 +1,1753 @@ +# Copyright (C) 2012 +# This file is distributed under the same license as the package. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-super-cache\n" +"POT-Creation-Date: 2012-06-21 09:44:46+00:00\n" +"PO-Revision-Date: 2012-07-16 18:14+0800\n" +"Last-Translator: \n" +"Language-Team: Christopher Meng \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Chinese\n" +"X-Poedit-Country: CHINA\n" + +#: ossdl-cdn.php:151 +msgid "Your website probably uses lots of static files. Image, Javascript and CSS files are usually static files that could just as easily be served from another site or CDN. Therefore this plugin replaces any links in the wp-content and wp-includes directories (except for PHP files) on your site with the URL you provide below. That way you can either copy all the static content to a dedicated host or mirror the files to a CDN by origin pull." +msgstr "您的网站可能使用了大量的静态文件。图像,Javascript 和 CSS 文件通常都是可供其他站点或者 CDN 方便调用的静态文件。因此,本插件使用下方您提供的地址替换了站点的所有 wp-contentwp-includes 目录地址(PHP 文件除外) 。这样即可以使您复制所有静态内容到独立主机,又可以通过 文件自动传输到 CDN 功能 为文件做镜像到 CDN。" + +#: ossdl-cdn.php:152 +#: wp-cache.php:1071 +msgid "The CDN Sync Tool plugin will help upload files to Amazon S3/Cloudfront if you would rather not depend on origin pull. See the plugin support forum if you have any queries about this plugin." +msgstr "如果您不需要文件自动传输到 CDN 功能(origin pull),CDN Sync Tool 插件将会帮助有关文件上传至 Amazon S3/Cloudfront 。如果您有意见或者需求,请访问插件支持论坛。" + +#: ossdl-cdn.php:153 +msgid "WARNING: Test some static urls e.g., %s to ensure your CDN service is fully working before saving changes." +msgstr "警告: 请测试一些静态地址比如 %s 以便确保您的 CDN 服务在保存设置前正在工作。" + +#: ossdl-cdn.php:154 +msgid "You can define different CDN URLs for each site on a multsite network." +msgstr "您可以对多站点中的每个站点定义不同的 CDN 服务地址。" + +#: ossdl-cdn.php:162 +msgid "Enable CDN Support" +msgstr "开启 CDN 支持" + +#: ossdl-cdn.php:165 +msgid "Off-site URL" +msgstr "Off-site URL" + +#: ossdl-cdn.php:168 +msgid "The new URL to be used in place of %1$s for rewriting. No trailing / please.
      Example: %2$s." +msgstr "" + +#: ossdl-cdn.php:172 +msgid "Include directories" +msgstr "包含目录" + +#: ossdl-cdn.php:175 +msgid "Directories to include in static file matching. Use a comma as the delimiter. Default is wp-content, wp-includes, which will be enforced if this field is left empty." +msgstr "Directories to include in static file matching. Use a comma as the delimiter. Default is wp-content, wp-includes, which will be enforced if this field is left empty." + +#: ossdl-cdn.php:179 +msgid "Exclude if substring" +msgstr "如果是之前有则排除" + +#: ossdl-cdn.php:182 +msgid "Excludes something from being rewritten if one of the above strings is found in the match. Use a comma as the delimiter like this, .php, .flv, .do, and always include .php (default)." +msgstr "如果以上的字符串中有任何一个符合,那么将不会被写入至重写规则中。请使用半角逗号隔开,例如 .php, .flv, .do,,并且无论如何不要删去 .php (默认)。" + +#: ossdl-cdn.php:186 +msgid "Additional CNAMES" +msgstr "附加 CNAME 记录" + +#: ossdl-cdn.php:189 +msgid "These CNAMES will be used in place of %1$s for rewriting (in addition to the off-site URL above). Use a comma as the delimiter. For pages with a large number of static files, this can improve browser performance. CNAMEs may also need to be configured on your CDN.
      Example: %2$s" +msgstr "" + +#: ossdl-cdn.php:193 +msgid "Skip https URLs to avoid \"mixed content\" errors" +msgstr "忽略 https 地址以避免 \"mixed content\" 错误" + +#: ossdl-cdn.php:197 +msgid "Save Changes" +msgstr "保存修改" + +#: ossdl-cdn.php:199 +msgid "CDN functionality provided by OSSDL CDN Off Linker by Mark Kubacki" +msgstr "CDN 功能由 Mark Kubacki 编写的 OSSDL CDN Off Linker 插件提供。" + +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "您的评论正在等待审核。" + +#: plugins/awaitingmoderation.php:32 +msgid "Awaiting Moderation" +msgstr "Awaiting Moderation" + +#: plugins/awaitingmoderation.php:34 +#: plugins/badbehaviour.php:65 +#: plugins/domain-mapping.php:75 +#: plugins/searchengine.php:69 +#: plugins/wptouch.php:22 +#: wp-cache.php:1311 +msgid "Enabled" +msgstr "已启用" + +#: plugins/awaitingmoderation.php:35 +#: plugins/badbehaviour.php:66 +#: plugins/domain-mapping.php:76 +#: plugins/searchengine.php:70 +#: plugins/wptouch.php:23 +#: wp-cache.php:1311 +msgid "Disabled" +msgstr "已禁用" + +#: plugins/awaitingmoderation.php:36 +msgid "Enables or disables plugin to Remove the text \"Your comment is awaiting moderation.\" when someone leaves a moderated comment." +msgstr "启用或禁用该插件以便移除当新的待审核评论产生时的 \"您的评论正在等待审核。\" 提示。" + +#: plugins/awaitingmoderation.php:40 +#: plugins/badbehaviour.php:71 +#: plugins/domain-mapping.php:81 +#: plugins/searchengine.php:75 +#: plugins/wptouch.php:28 +#: wp-cache.php:1769 +#: wp-cache.php:1771 +msgid "enabled" +msgstr "已启用" + +#: plugins/awaitingmoderation.php:42 +#: plugins/badbehaviour.php:73 +#: plugins/domain-mapping.php:83 +#: plugins/searchengine.php:77 +#: plugins/wptouch.php:30 +msgid "disabled" +msgstr "已禁用" + +#: plugins/awaitingmoderation.php:43 +msgid "Awaiting Moderation is now %s" +msgstr "Awaiting Moderation %s" + +#: plugins/awaitingmoderation.php:45 +#: plugins/badbehaviour.php:76 +#: plugins/domain-mapping.php:86 +#: plugins/searchengine.php:80 +#: plugins/wptouch.php:33 +msgid "Update" +msgstr "更新" + +#: plugins/badbehaviour.php:47 +msgid "Bad Behaviour not found. Please check your install." +msgstr "没有找到 Bad Behavior 插件。请检查您的安装。" + +#: plugins/badbehaviour.php:63 +msgid "Bad Behavior" +msgstr "Bad Behavior" + +#: plugins/badbehaviour.php:68 +msgid "(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr "(仅支持传统模式,并且需要禁用压缩以及确保 Bad Behavior 插件在 \"%s/plugins/bad-behavior/\" 目录中) " + +#: plugins/badbehaviour.php:74 +msgid "Bad Behavior support is now %s" +msgstr "Bad Behavior 兼容%s" + +#: plugins/badbehaviour.php:83 +#: wp-cache.php:1401 +#: wp-cache.php:1406 +msgid "Warning!" +msgstr "警告!" + +#: plugins/domain-mapping.php:73 +msgid "Domain Mapping" +msgstr "Domain Mapping" + +#: plugins/domain-mapping.php:78 +msgid "Provides support for Domain Mapping plugin to map multiple domains to a blog." +msgstr "点击查看 Domain Mapping 插件对同主机多站点的支持。" + +#: plugins/domain-mapping.php:84 +msgid "Domain Mapping support is now %s" +msgstr "Domain Mapping 兼容%s" + +#: plugins/domain-mapping.php:98 +msgid "Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin." +msgstr "已检测到 Domain Mapping 插件!请前往本插件的设置首页启用 Domain Mapping 插件支持。" + +#: plugins/multisite.php:13 +msgid "Cached" +msgstr "已缓存" + +#: plugins/multisite.php:31 +#: wp-cache.php:1324 +msgid "Enable" +msgstr "启用" + +#: plugins/multisite.php:33 +#: plugins/searchengine.php:61 +#: wp-cache.php:1324 +msgid "Disable" +msgstr "禁用" + +#: plugins/multisite.php:39 +msgid "Caching has been disabled on this blog on the Network Admin Sites page." +msgstr "在该博客的站点网络管理页面上缓存功能已被禁用。" + +#: plugins/searchengine.php:67 +msgid "No Adverts for Friends" +msgstr "No Adverts for Friends" + +#: plugins/searchengine.php:72 +msgid "Provides support for No Adverts for Friends." +msgstr "点击查看 No Adverts for Friends 插件的支持。" + +#: plugins/searchengine.php:78 +msgid "No Adverts for Friends support is now %s" +msgstr "No Adverts for Friends 兼容%s" + +#: plugins/wptouch.php:20 +msgid "WPTouch" +msgstr "WPTouch" + +#: plugins/wptouch.php:25 +msgid "Provides support for WPTouch mobile theme and plugin." +msgstr "点击查看 WPTouch 的手机主题和插件本身的支持。" + +#: plugins/wptouch.php:31 +msgid "WPTouch support is now %s" +msgstr "WPTouch 兼容%s" + +#: plugins/wptouch.php:45 +msgid "WPTouch plugin detected! Please go to the Supercache plugins page and enable the WPTouch helper plugin." +msgstr "已检测到 WPTouch 插件!请前往插件设置首页启用 WPTouch 插件支持。" + +#: wp-cache-phase2.php:1209 +msgid "Cache expiry cron job failed. Job will run again in 10 seconds." +msgstr "清理到期缓存计划任务执行失败,将会在10秒后重试。" + +#: wp-cache-phase2.php:1213 +msgid "Cache expiry cron job took more than 30 seconds. You should probably run the garbage collector more often." +msgstr "缓存到期检查任务已经执行了不少于30秒。您可能需要更经常地运行垃圾回收期。" + +#: wp-cache-phase2.php:1222 +msgid "[%1$s] WP Super Cache GC Report" +msgstr "[%1$s] [%1$s] WP Super Cache 垃圾回收器报告" + +#: wp-cache.php:99 +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "请把 wp-super-cache/wp-cache-config-sample.php 改为 %s /wp-cache-config.php" + +#: wp-cache.php:162 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "警告!PHP 安全模式已启用!" + +#: wp-cache.php:163 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "由于启用了安全模式,在插件运行时您可能会遇到问题。" + +#: wp-cache.php:167 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "在 PHP 代码读取或者写入文件之前,您的服务器程序将会检查其属主。" + +#: wp-cache.php:168 +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "您或者管理员也许能通过修改插件的用户组属主为服务器软件用户来使得插件正常工作。%s/cache/ 目录的用户组属主同样需要修改。更多信息请访问 PHP 安全模式手册 页面。" + +#: wp-cache.php:170 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "您或者管理员必须禁用该功能。更多信息请访问 PHP 安全模式手册 。很遗憾这个操作不能在 .htaccess 文件中修改,您必须修改 php.ini 文件。" + +#: wp-cache.php:176 +msgid "Permlink Structure Error" +msgstr "固定链接结构出错" + +#: wp-cache.php:177 +msgid "A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks." +msgstr "本插件需要正确的自定义链接或者固定链接结构才能正常工作。请前往 固定链接设置 页面进行配置。" + +#: wp-cache.php:189 +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "警告!您的主机 \"%s\" 被解析至 %s" + +#: wp-cache.php:190 +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "您的服务器认为您的主机解析至 %s。有些服务比如垃圾回收器和定时发布功能将无法正常工作。" + +#: wp-cache.php:191 +#: wp-cache.php:205 +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "请查看 readme.txt 中 疑难问题解决部分 的第16号问题" + +#: wp-cache.php:204 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "很遗憾,找不到 wp-cron.php。该文件是垃圾回收器正常工作,WordPress 定时发布任务以及其他活动的关键。" + +#: wp-cache.php:218 +msgid "Cannot continue... fix previous problems and retry." +msgstr "无法继续... 清修复之前遇到的问题然后重试。" + +#: wp-cache.php:227 +msgid "Zlib Output Compression Enabled!" +msgstr "Zlib 输出压缩已启用!" + +#: wp-cache.php:228 +msgid "PHP is compressing the data sent to the visitors of your site. Disabling this is recommended as the plugin caches the compressed output once instead of compressing the same page over and over again. Also see #21 in the Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "PHP 正在压缩发送到来访者的数据。建议禁用该功能,因为本插件已经缓存了压缩后的输出数据而不是重复压缩多次它们。同时请查看 readme 文件的疑难问题解决部分的第21号问题。查看 这个页面 以了解配置 php.ini 的介绍。" + +#: wp-cache.php:232 +msgid "Mod rewrite may not be installed!" +msgstr "Mod rewrite 模块可能未安装!" + +#: wp-cache.php:233 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use legacy or PHP modes." +msgstr "貌似 mod_rewrite 模块尚未安装。也许情况并不是这样,尤其是当您不使用 Apache 作为服务器程序的时候。请检查 mod_rewrite 模块是否被加载。这对于 Super Cache 的静态文件的调用是必需的。不过您可以使用 PHP 缓存模式或者传统模式运行本插件。" + +#: wp-cache.php:239 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "只读模式。设置无法更改。" + +#: wp-cache.php:240 +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "WP Super Cache 的设置文件 %s/wp-cache-config.php 无法被变更。这个文件必须被设置为可被写入权限才能正常工作。" + +#: wp-cache.php:241 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "最简单的方法就是通过 ftp 客户端使用 CHMOD 命令临时修改文件权限。请确保文件全局可被写入,然后就可以了。" + +#: wp-cache.php:242 +#: wp-cache.php:258 +msgid "This page explains how to change file permissions." +msgstr "这个页面 讲述了如何修改文件权限。" + +#: wp-cache.php:243 +msgid "Writeable:" +msgstr "可写的:" + +#: wp-cache.php:244 +msgid "Readonly:" +msgstr "只读:" + +#: wp-cache.php:256 +msgid "Warning! %s is writeable!" +msgstr "警告! %s 可被写入!" + +#: wp-cache.php:257 +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "您应该通过 ftp 客户端或者以下命令更改 %s 的权限并确保它被严格限制:" + +#: wp-cache.php:267 +msgid "Mobile rewrite rules detected" +msgstr "检测到针对手机的重写规则" + +#: wp-cache.php:268 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"2.0\\ MMP|240x320\" and delete those." +msgstr "为了更好的访问体验,您应该启用 \"手机设备支持\" 或者删除 .htaccess. 文件中的手机重写规则。请查找 \"2.0\\ MMP|240x320\" 文本并删除它们。" + +#: wp-cache.php:268 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "这将不会影响电脑用户,但是手机用户将会访问未缓存的页面。" + +#: wp-cache.php:274 +#: wp-cache.php:285 +msgid "Rewrite rules must be updated" +msgstr "重写规则必须被更新" + +#: wp-cache.php:275 +#: wp-cache.php:286 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "插件需要的重写规则已被更改或者缺失。" + +#: wp-cache.php:276 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "若要对手机用户进行配置,需要额外添加规则到 .htaccess 文件中,或者您启用传统模式。这是您的选择(有些困难):" + +#: wp-cache.php:277 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "设置插件为传统模式并且启用手机支持。" + +#: wp-cache.php:278 +#: wp-cache.php:287 +msgid "Scroll down the Advanced Settings page and click the Update Mod_Rewrite Rules button." +msgstr "滚动查看高级选项卡,找到并点击 更新 Mod_Rewrite 规则 按钮。" + +#: wp-cache.php:279 +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "删除插件的 mod_rewrite 规则,它们是 %s.htaccess 文件中从 # BEGIN WPSuperCache 开始到 # END WPSuperCache 结束的代码块,随后请刷新本页来重建规则。" + +#: wp-cache.php:280 +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ add these lines: (do it twice, once for each section)" +msgstr "请自行添加规则。编辑 %s.htaccess 并找到从 # BEGIN WPSuperCache 开始到 # END WPSuperCache 结束的这部分代码。请注意有两部分很相似,请在 %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ 下方添加这些规则: (请执行该操作两次,每一部分一次)" + +#: wp-cache.php:293 +msgid "Required to serve compressed supercache files properly." +msgstr "这是必需的以便能够正确调用缓存文件。" + +#: wp-cache.php:293 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "该模块的作用是设定 supercache 页面的缓存信息。没有该模块,IE7用户将只会看见旧页面。" + +#: wp-cache.php:293 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "设定缓存文件的到期时间。没有该模块时,当来访者刷新或者留下评论时可能不会看到新页面。" + +#: wp-cache.php:300 +msgid "Missing Apache Modules" +msgstr "找不到 Apache 模块" + +#: wp-cache.php:301 +msgid "The following Apache modules are missing. The plugin will work in legacy mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "由于下列 Apache 模块的缺失,本插件只能运行于传统模式。如果强制在完整的运行模式下运行,来访者可能会浏览异常的页面。" + +#: wp-cache.php:502 +msgid "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file." +msgstr "警告!您尝试启用压缩但是 zlib.output_compression 参数已被启用。请查看 readme 文件的疑难问题解决部分的第21号解答。" + +#: wp-cache.php:598 +msgid "WP Super Cache Settings" +msgstr "WP Super Cache 设置" + +#: wp-cache.php:612 +msgid "Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced Settings Page by default." +msgstr "注意:由于 Mod_rewrite 模式或者传统模式已启用,默认将显示高级设置选项卡。" + +#: wp-cache.php:623 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "设置文件已变更,有些数值可能是错误的。请通过 \"设置\" 菜单重新加载。" + +#: wp-cache.php:655 +msgid "Caching must be enabled to use this feature" +msgstr "这项功能必须在启用缓存功能后方可使用。" + +#: wp-cache.php:673 +#: wp-cache.php:813 +msgid "Cancel Cache Preload" +msgstr "取消预加载缓存" + +#: wp-cache.php:681 +msgid "Scheduled preloading of cache almost cancelled. It may take up to a minute for it to cancel completely." +msgstr "预缓存计划任务马上就会被取消,这可能需要花费一点时间。" + +#: wp-cache.php:692 +msgid "Scheduled preloading of cache cancelled." +msgstr "预缓存计划任务已取消" + +#: wp-cache.php:724 +#: wp-cache.php:811 +msgid "Preload Cache Now" +msgstr "立即预加载缓存" + +#: wp-cache.php:728 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "预缓存任务在10秒后启动。" + +#: wp-cache.php:733 +msgid "Scheduled preloading of cache in %d minutes" +msgstr "预缓存任务在%d秒后启动。" + +#: wp-cache.php:737 +msgid "This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now." +msgstr "预缓存的功能是缓存所有已发布的页面和文章。它会创建 supercache 静态文件,这样的话,未知用户(包括搜索引擎蜘蛛)将会获得缓存后的页面。这将帮助您的站点的 Google PR 提升,因为 Google 会把网站的响应速度作为评判网站的标准。" + +#: wp-cache.php:738 +msgid "Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "预缓存将会创建大量新文件,并且会将所有文章进行缓存。如果您有10000篇以上文章,不建议您使用该功能,尤其是在共享主机上。" + +#: wp-cache.php:739 +msgid "In ’Preload Mode’ regular garbage collection will only clean out old legacy files for known users, not the preloaded supercache files. This is a recommended setting when the cache is preloaded." +msgstr "在预缓存模式下,垃圾回收器将只会对已知用户清理传统模式产生的旧文件,而不是预缓存的 supercache 文件。当缓存被预缓存时,本功能建议启用。" + +#: wp-cache.php:743 +msgid "Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)" +msgstr "每%s分钟刷新预缓存文件(设置为0则禁用,至少%d分钟。)" + +#: wp-cache.php:756 +msgid "all" +msgstr "全部" + +#: wp-cache.php:769 +msgid "Preload %s posts." +msgstr "预缓存 %s 篇文章。" + +#: wp-cache.php:776 +msgid "Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "预缓存模式(垃圾回收器只会在传统模式上生效。推荐。)" + +#: wp-cache.php:779 +msgid "Preload tags, categories and other taxonomies." +msgstr "预缓存标签,分类以及其他。" + +#: wp-cache.php:782 +msgid "Send me status emails when files are refreshed." +msgstr "当缓存文件刷新完毕后发送邮件通知。" + +#: wp-cache.php:787 +msgid "Many emails, 2 emails per 100 posts." +msgstr "大量邮件,每100篇文章发送2封邮件。" + +#: wp-cache.php:790 +msgid "Medium, 1 email per 100 posts." +msgstr "适量邮件,每100篇文章发送1封邮件。" + +#: wp-cache.php:793 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "少量邮件,缓存第一篇发送1封邮件,缓存结束时发送再1封邮件。" + +#: wp-cache.php:797 +msgid "Refresh of cache in %d hours %d minutes and %d seconds." +msgstr "缓存将会在 %d小时%d分%d秒后刷新。" + +#: wp-cache.php:798 +msgid "Full refresh of cache in %d hours %d minutes and %d seconds." +msgstr "缓存全部刷新将会在%d小时%d分%d秒后开始。" + +#: wp-cache.php:804 +msgid "Currently caching from post %d to %d." +msgstr "正在缓存文章 %d 到文章 %d。" + +#: wp-cache.php:808 +msgid "Page last cached: %s" +msgstr "页面最后缓存: %s" + +#: wp-cache.php:811 +msgid "Update Settings" +msgstr "更新设置" + +#: wp-cache.php:819 +msgid "Preloading of cache disabled. Please disable legacy page caching or talk to your host administrator." +msgstr "预缓存功能已禁用。请禁用传统模式或者与您的主机管理员联系。" + +#: wp-cache.php:836 +#: wp-cache.php:947 +msgid "Caching" +msgstr "缓存功能" + +#: wp-cache.php:840 +msgid "Cache hits to this website for quick access." +msgstr "启用缓存以便加快访问。" + +#: wp-cache.php:840 +#: wp-cache.php:841 +#: wp-cache.php:858 +#: wp-cache.php:867 +#: wp-cache.php:874 +#: wp-cache.php:877 +#: wp-cache.php:894 +#: wp-cache.php:950 +msgid "Recommended" +msgstr "推荐" + +#: wp-cache.php:841 +msgid "Use mod_rewrite to serve cache files." +msgstr "mod_rewrite 缓存模式。" + +#: wp-cache.php:842 +msgid "Use PHP to serve cache files." +msgstr "PHP 缓存模式。" + +#: wp-cache.php:843 +msgid "Legacy page caching." +msgstr "传统缓存模式。" + +#: wp-cache.php:844 +msgid "Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should use PHP caching." +msgstr "Mod_rewrite 方式最快;PHP 方式几乎与前者一样快并且容易部署;传统模式比它们稍慢,但是更灵活且部署简单。建议新用户使用 PHP 缓存模式。" + +#: wp-cache.php:850 +msgid "Miscellaneous" +msgstr "杂项" + +#: wp-cache.php:856 +msgid "Warning! Compression is disabled as gzencode() function not found." +msgstr "警告!由于未找到 gzencode() 函数,压缩已被禁用。" + +#: wp-cache.php:858 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "压缩页面以便让来访者更快浏览。" + +#: wp-cache.php:859 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching it on and off clears the cache." +msgstr "压缩默认已禁用,因为有些主机对压缩过的文件处理有问题。勾选或取消勾选该功能会清除缓存。" + +#: wp-cache.php:867 +msgid "304 Not Modified browser caching. Indicate when a page has not been modified since last requested." +msgstr "304 Not Modified 浏览器缓存。声明一个页面自从上一次被请求后还未被变更。" + +#: wp-cache.php:870 +msgid "Warning! 304 browser caching is only supported when not using mod_rewrite caching." +msgstr "警告!304浏览器缓存功能只有不使用 mod_rewrite 缓存模式时生效。" + +#: wp-cache.php:872 +msgid "304 support is disabled by default because in the past GoDaddy had problems with some of the headers used." +msgstr "304支持默认已禁用,因为 GoDaddy 对有些网页头部处理有问题。" + +#: wp-cache.php:874 +msgid "Don’t cache pages for known users." +msgstr "不要为已知用户缓存。" + +#: wp-cache.php:875 +msgid "Don’t cache pages with GET parameters. (?x=y at the end of a url)" +msgstr "不要为 GET 请求缓存。(地址结尾为?x=y)" + +#: wp-cache.php:876 +msgid "Make known users anonymous so they’re served supercached static files." +msgstr "让已知用户匿名使他们浏览的内容是缓存文件。" + +#: wp-cache.php:877 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated." +msgstr "缓存重建。当新缓存生成时调用缓存文件给匿名用户。" + +#: wp-cache.php:878 +msgid "Proudly tell the world your server is Stephen Fry proof! (places a message in your blog’s footer)" +msgstr "自豪地告诉世界Stephen Fry proof!(在您的博客底部显示一行感谢作者信息)" + +#: wp-cache.php:884 +#: wp-cache.php:1162 +#: wp-cache.php:1778 +msgid "Advanced" +msgstr "高级" + +#: wp-cache.php:888 +msgid "Mobile device support. (External plugin or theme required. See the FAQ for further details.)" +msgstr "移动设备支持。(需要第三方插件或主题,请访问 FAQ 页面以了解更多信息。)" + +#: wp-cache.php:890 +msgid "Mobile Browsers" +msgstr "手机浏览器" + +#: wp-cache.php:890 +msgid "Mobile Prefixes" +msgstr "手机号段" + +#: wp-cache.php:892 +msgid "Remove UTF8/blog charset support from .htaccess file. Only necessary if you see odd characters or punctuation looks incorrect. Requires rewrite rules update." +msgstr "移除 .htaccess 文件中的 UTF8/blog 字符集。这个功能只适用于当您发现文件中字符不正确时。本功能需要更新重写规则。" + +#: wp-cache.php:893 +msgid "Clear all cache files when a post or page is published or updated." +msgstr "当有新文章或页面的发布或更新时清除之前的缓存文件。" + +#: wp-cache.php:894 +msgid "Extra homepage checks. (Very occasionally stops homepage caching)" +msgstr "首页额外检查。 (极少数情况下会停止对首页的缓存)" + +#: wp-cache.php:895 +msgid "Only refresh current page when comments made." +msgstr "当某页面有新评论时,只刷新该页面的缓存。" + +#: wp-cache.php:896 +msgid "List the newest cached pages on this page." +msgstr "在该页列出所有最新的缓存页面。" + +#: wp-cache.php:898 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "粗略文件锁定。您可能不需要该功能,但是它对小型站点很有帮助。警告!某些情况下您的服务器会被锁住!" + +#: wp-cache.php:900 +msgid "Late init. Display cached files after WordPress has loaded. Most useful in legacy mode." +msgstr "延迟初始化。该功能是指在 WordPress 加载后显示已缓存的文件。在传统模式下很有用。" + +#: wp-cache.php:902 +msgid "Use object cache to store cached files." +msgstr "使用对象缓存系统来存储缓存文件。" + +#: wp-cache.php:902 +msgid "(Experimental)" +msgstr "(实验室功能)" + +#: wp-cache.php:904 +msgid "DO NOT CACHE PAGE secret key: %s" +msgstr "访问这个链接将不会显示缓存内容%s" + +#: wp-cache.php:910 +msgid "Note:" +msgstr "提示:" + +#: wp-cache.php:912 +msgid "Uninstall this plugin on the plugins page. It will automatically clean up after itself. If manual intervention is required then simple instructions are provided." +msgstr "请前往插件管理页面卸载本插件,插件会自动清除。如果需要您的手动操作,稍后会有提示。" + +#: wp-cache.php:913 +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "如果要卸载该插件,请确保 %s 目录可被服务器程序写入,这样的话 advanced-cache.phpcache-config.php 可被自动删除。(当然也请确保这两个文件可被写入!)" + +#: wp-cache.php:914 +msgid "Please see the readme.txt for instructions on uninstalling this script. Look for the heading, \"How to uninstall WP Super Cache\"." +msgstr "请查看 readme.txt 以了解卸载流程。请在文件中搜索 \"How to uninstall WP Super Cache\"以便快速浏览。" + +#: wp-cache.php:915 +msgid "Need help? Check the Super Cache readme file. It includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already have been answered." +msgstr "需要帮助?请查看 Super Cache 的 readme 文件。它包含了安装文档,常见问题解答以及某些故障排除提示。还有建议您查看论坛支持,您的问题也许已经被解答过了。" + +#: wp-cache.php:918 +#: wp-cache.php:965 +msgid "Update Status" +msgstr "更新" + +#: wp-cache.php:925 +msgid "Accepted Filenames & Rejected URIs" +msgstr "已被接受的文件名和拒绝的 URI" + +#: wp-cache.php:950 +msgid "Caching On" +msgstr "启用缓存功能" + +#: wp-cache.php:951 +msgid "Caching Off" +msgstr "禁用缓存功能" + +#: wp-cache.php:952 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "提示:将会启用 PHP 缓存模式,缓存重建和手机支持" + +#: wp-cache.php:962 +msgid "Notice: PHP caching enabled but Supercache mod_rewrite rules detected. Cached files will be served using those rules. If your site is working ok please ignore this message or you can edit the .htaccess file in the root of your install and remove the SuperCache rules." +msgstr "注意:PHP 缓存模式已启用,但是检测到遗留的 mod_rewrite 规则。已缓存的文件将会被这些规则调用。如果您的站点运行正常,请忽略本提示,否则请自行编辑 .htaccess 文件。" + +#: wp-cache.php:967 +msgid "Cache Tester" +msgstr "缓存测试" + +#: wp-cache.php:968 +msgid "Test your cached website by clicking the test button below." +msgstr "点击下面的测试按钮测试缓存效果。" + +#: wp-cache.php:974 +msgid "Fetching %s to prime cache: " +msgstr "正在抓取 %s 的初始缓存:" + +#: wp-cache.php:976 +#: wp-cache.php:985 +#: wp-cache.php:997 +msgid "OK" +msgstr "OK" + +#: wp-cache.php:979 +msgid "Fetching first copy of %s: " +msgstr "抓取 %s 的第一份缓存拷贝:" + +#: wp-cache.php:988 +#: wp-cache.php:999 +msgid "FAILED" +msgstr "失败" + +#: wp-cache.php:991 +msgid "Fetching second copy of %s: " +msgstr "抓取 %s 的第二份缓存拷贝:" + +#: wp-cache.php:1003 +msgid "One or more page requests failed:" +msgstr "1个或多个页面的请求失败:" + +#: wp-cache.php:1022 +#: wp-cache.php:1023 +msgid "Page %d: %d (%s)" +msgstr "页面 %d: %d (%s)" + +#: wp-cache.php:1029 +msgid "Page 1: %s" +msgstr "第一页: %s" + +#: wp-cache.php:1030 +msgid "Page 2: %s" +msgstr "第二页: %s" + +#: wp-cache.php:1031 +msgid "The timestamps on both pages match!" +msgstr "两个页面的时间戳相符!" + +#: wp-cache.php:1033 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "页面不相符!时间戳有差异或者不存在!" + +#: wp-cache.php:1034 +msgid "Things you can do:" +msgstr "您可以做的:" + +#: wp-cache.php:1035 +msgid "Load your homepage in a logged out browser, check the timestamp at the end of the html source. Load the page again and compare the timestamp. Caching is working if the timestamps match." +msgstr "它会在一个已经登出的浏览器环境中加载首页并检查 html 文件结尾的时间戳,然后再次加载页面并对比时间戳。如果时间戳相符则缓存正在工作。" + +#: wp-cache.php:1036 +msgid "Enable logging on the Debug page here. That should help you track down the problem." +msgstr "在这里启用调试页面的日志记录。这会帮助您跟踪问题。" + +#: wp-cache.php:1037 +msgid "You should check Page 1 and Page 2 above for errors. Your local server configuration may not allow your website to access itself." +msgstr "您应该在出错前检查页面1和页面2。您的本地服务器设置可能不允许您的网站读取。" + +#: wp-cache.php:1045 +msgid "Send non-secure (non https) request for homepage" +msgstr "发送不安全的(非 https) 首页请求" + +#: wp-cache.php:1046 +msgid "Test Cache" +msgstr "测试缓存" + +#: wp-cache.php:1050 +msgid "Delete Cached Pages" +msgstr "删除已缓存页面" + +#: wp-cache.php:1051 +msgid "Cached pages are stored on your server as html and PHP files. If you need to delete them use the button below." +msgstr "已缓存的页面以 html 页面或者 PHP 文件的形式存储在您的服务器上。如果您需要删除它们,请使用下方按钮来完成。" + +#: wp-cache.php:1054 +#: wp-cache.php:2316 +#: wp-cache.php:2335 +#: wp-cache.php:2506 +#: wp-cache.php:3030 +msgid "Delete Cache" +msgstr "删除缓存" + +#: wp-cache.php:1061 +#: wp-cache.php:2322 +msgid "Delete Cache On All Blogs" +msgstr "删除所有博客上的缓存" + +#: wp-cache.php:1066 +msgid "Recommended Links and Plugins" +msgstr "有用的链接和插件" + +#: wp-cache.php:1067 +msgid "Caching is only one part of making a website faster. Here are some other plugins that will help:" +msgstr "缓存只是让站点运行更快的一种方法,这里有一些其它插件提供类似功能:" + +#: wp-cache.php:1068 +msgid "WPSCMin, a Supercache plugin that minifies cached pages by removing whitespaces and extra characters " +msgstr "WPSCMin,一个可以通过移除空白部分和不必要的字符来缩小缓存页面大小的 Supercache 插件" + +#: wp-cache.php:1069 +msgid "Yahoo! Yslow is an extension for the Firefox add-on Firebug. It analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. Also try the performance tools online at GTMetrix." +msgstr "Yahoo! Yslow 是一款火狐浏览器扩展 Firebug 的插件。它会通过一组高性能网页来分析网页的表现并给您改善网页的建议。您也可以在线使用表现检查工具 GTMetrix。" + +#: wp-cache.php:1070 +msgid "Use Google Libraries allows you to load some commonly used Javascript libraries from Google webservers. Ironically it may reduce your Yslow score." +msgstr "使用 Google Libraries 允许您从 Google 的服务器加载某些流行 Javascript 库。不过这很荒谬,会降低您的 Yslow 评估分数。" + +#: wp-cache.php:1072 +msgid "Advanced users only: Speed up your site with Caching and cache-control explains how to make your site more cacheable with .htaccess rules." +msgstr "只允许高级用户: Speed up your site with Caching and cache-control 讲述了如何使您的网站通过 .htaccess 规则更容易被缓存。" + +#: wp-cache.php:1073 +msgid "Advanced users only: Install an object cache. Choose from Memcached, XCache, eAcccelerator and others." +msgstr "只允许高级用户: 安装对象缓存系统。您可以选择 MemcachedXCacheeAcccelerator 或更多。" + +#: wp-cache.php:1074 +msgid "Cron View is a useful plugin to use when trying to debug garbage collection and preload problems." +msgstr "Cron View 是一款调试垃圾回收器和预缓存问题的利器。" + +#: wp-cache.php:1085 +msgid "Make WordPress Faster" +msgstr "让 WordPress 更快" + +#: wp-cache.php:1086 +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "%1$s 由 %2$s 与众多贡献人员一同开发并维护。" + +#: wp-cache.php:1087 +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "他有一个博客 %1$s 并会把自己的照片放在 %2$s。" + +#: wp-cache.php:1088 +msgid "Please say hi to him on %s too!" +msgstr "欢迎您在 %s 上与他交流!" + +#: wp-cache.php:1089 +msgid "Need Help?" +msgstr "需要帮助?" + +#: wp-cache.php:1091 +msgid "Use the debug system in the Debug tab above. It will tell you what the plugin is doing." +msgstr "在调试选项卡中使用调试工具。这将会告诉您插件正在如何工作。" + +#: wp-cache.php:1092 +msgid "Installation Help" +msgstr "安装帮助" + +#: wp-cache.php:1093 +msgid "Frequently Asked Questions" +msgstr "常见问题解答" + +#: wp-cache.php:1094 +msgid "Support Forum" +msgstr "论坛支持" + +#: wp-cache.php:1096 +msgid "Rate This Plugin!" +msgstr "给插件评个分吧!" + +#: wp-cache.php:1097 +msgid "Please rate this plugin and tell me if it works for you or not. It really helps development." +msgstr "请 对这个插件评分 并告诉我您的需求。这对我们的开发真的十分有用。" + +#: wp-cache.php:1106 +msgid "Cached pages since %1$s : %2$s" +msgstr "从 %1$s 已缓存的页面:%2$s" + +#: wp-cache.php:1107 +msgid "Newest Cached Pages:" +msgstr "最新的已缓存页面:" + +#: wp-cache.php:1111 +msgid "Cached %s seconds ago" +msgstr "%s秒前已缓存" + +#: wp-cache.php:1114 +msgid "(may not always be accurate on busy sites)" +msgstr "(在某些繁忙的大型站点上可能会不准确)" + +#: wp-cache.php:1133 +msgid "Cache plugins are PHP scripts that live in a plugins folder inside the wp-super-cache folder. They are loaded when Supercache loads, much sooner than regular WordPress plugins." +msgstr "这些对第三方插件的兼容本质都是位于 wp-super-cache 目录内 plugins 子目录内的 PHP 文件,它们在 Supercache 运行时即被加载,比这些第三方插件本身被加载稍微提前。" + +#: wp-cache.php:1134 +msgid "This is strictly an advanced feature only and knowledge of both PHP and WordPress actions is required to create them." +msgstr "严格意义上讲这是一个高级功能,您必须十分了解 PHP 和 WordPress 才能正确使用。" + +#: wp-cache.php:1135 +msgid "Warning! Due to the way WordPress upgrades plugins the plugins you upload to wp-super-cache/plugins/ will be deleted when you upgrade WP Super Cache. You can avoid this by loading the plugins from elsewhere. Set $wp_cache_plugins_dir to the new location in wp-config.php and WP Super Cache will look there instead.
      More info available in the developer documentation." +msgstr "警告!由于 WordPress 升级插件的方法,您之前上传至 wp-super-cache/plugins/ 的插件将会在更新时被删除。您可以通过在其他地方加载的方式避免,即设置 wp-config.php 中的 $wp_cache_plugins_dir 路径,这样 WP Super Cache 就会从这里加载。
      更多信息请查阅 开发者文档。" + +#: wp-cache.php:1145 +msgid "Available Plugins" +msgstr "可用插件" + +#: wp-cache.php:1162 +msgid "Easy" +msgstr "通用" + +#: wp-cache.php:1162 +msgid "CDN" +msgstr "CDN" + +#: wp-cache.php:1162 +msgid "Contents" +msgstr "内容" + +#: wp-cache.php:1162 +msgid "Preload" +msgstr "预缓存" + +#: wp-cache.php:1162 +msgid "Plugins" +msgstr "插件兼容" + +#: wp-cache.php:1162 +msgid "Debug" +msgstr "调试" + +#: wp-cache.php:1197 +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "注意:除非运行在 主站点,WP Super Cache 的 mod_rewrite 规则检查功能将被禁用 。" + +#: wp-cache.php:1206 +msgid "Mod Rewrite Rules" +msgstr "Mod Rewrite 规则" + +#: wp-cache.php:1212 +msgid "WordPress MU Detected" +msgstr "已检测到 WordPress 多站点模式" + +#: wp-cache.php:1212 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "很遗憾,在 WordPress 多站点模式下无法自动更新重写规则。请打开您的 .htaccess 文件并在其最上方手动添加下列 mod_rewrite 规则。" + +#: wp-cache.php:1214 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "无法更新 Mod Rewrite 规则!" + +#: wp-cache.php:1215 +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "您必须确定在 %s.htaccess 文件中,有BEGINEND 标记以便程序能够自动更新规则。比如:" + +#: wp-cache.php:1217 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "当您更新完您的 .htaccess 文件时,请刷新本页。" + +#: wp-cache.php:1221 +msgid "Thank you for upgrading." +msgstr "感谢您的升级。" + +#: wp-cache.php:1221 +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "自从您上次安装本插件后,mod_rewrite 规则已变更。非常抱歉,您必须在新规则更新前移除旧版本 supercache 的规则。在您编辑完成 .htaccess 文件后请刷新本页。如果您想要手动升级,修改一下几行: %1$s 比方说是这样: %2$s 其实所有修改都是将 \"HTTP_COOKIE\" 变为 \"HTTP:Cookie\" 以及将 \"wordpressuser\" 变为 \"wordpress\"。这是 WordPress 2.5 的变化,但是它理论上和旧版本兼容。(如果您愿意尝试的话)" + +#: wp-cache.php:1225 +msgid "Trailing slash check required." +msgstr "需要结尾的斜杠检查。" + +#: wp-cache.php:1225 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "貌似您博客的地址结尾有 \"/\"。很遗憾,自从您安装本插件时,一个内容重复故障就已经被发现。地址结尾包含 \"/\" 和不包含 \"/\" 的页面都显示相同的内容,但没有跳转到正确的地址。要想修复该问题,您需要自行编辑您的 .htaccess 文件并把下面两条规则添加至两组 Super Cache 规则中:" + +#: wp-cache.php:1227 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "您可以查看规则时如何生效的并且点击 \"View mod_rewrite rules\" 链接来测试下方的所有规则。" + +#: wp-cache.php:1241 +msgid "Mod Rewrite rules updated!" +msgstr "Mod Rewrite 规则已更新!" + +#: wp-cache.php:1242 +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "%s.htaccess 已经被必需的 mod_rewrite 规则更新。请检查它们是否正确。它们应该看上去这样:" + +#: wp-cache.php:1244 +msgid "Mod Rewrite rules must be updated!" +msgstr "Mod Rewrite 规则必须被更新!" + +#: wp-cache.php:1245 +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "您的服务器的 %s.htaccess 文件不可被服务器程序写入,但是它需要正确的 mod_rewrite 规则:" + +#: wp-cache.php:1250 +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "WP Super Cache 的 mod rewrite 规则已存在于您的 %s.htaccess 文件中。
      点击下面链接查看新添加进去的内容。如果您已经升级了本插件,确保这些规则符合。" + +#: wp-cache.php:1253 +msgid "A difference between the rules in your .htaccess file and the plugin rewrite rules has been found. This could be simple whitespace differences but you should compare the rules in the file with those below as soon as possible. Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "您服务器上的 .htaccess 文件和插件存在不同的重写规则。也许这不重要,但是您应该尽快对比一下。点击’更新 Mod_Rewrite 规则’ 按钮更新这些规则。" + +#: wp-cache.php:1255 +msgid "View Mod_Rewrite Rules" +msgstr "查看 Mod_Rewrite 规则" + +#: wp-cache.php:1261 +#: wp-cache.php:2622 +msgid "Rules must be added to %s too:" +msgstr "规则必须也被添加至 %s :" + +#: wp-cache.php:1268 +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "Gzip 编码规则已经添加至 %s.htaccess 文件。" + +#: wp-cache.php:1275 +msgid "Fix Configuration" +msgstr "修复设置" + +#: wp-cache.php:1278 +msgid "Restore Default Configuration" +msgstr "恢复默认设置" + +#: wp-cache.php:1286 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "评论审核已启用。您的评论可能需要一段时间后才能被显示。" + +#: wp-cache.php:1311 +msgid "Lock Down:" +msgstr "锁定:" + +#: wp-cache.php:1312 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "如果您启用锁定,那么它将会为站点运行高峰时期做好准备。当这项功能启用时,新评论或文章将不会立即刷新至已缓存的静态文件。" + +#: wp-cache.php:1313 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "对开发者:为了使您自己的插件与锁定功能兼容,请检查 \"WPLOCKDOWN\" 常量。以下代码将会确保您的插件遵守 WPLOCKDOWN 设置。" + +#: wp-cache.php:1315 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "抱歉,本博客目前处于锁定中,稍后会进行更新。" + +#: wp-cache.php:1319 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "WordPress 已被锁定。当产生新评论时,Super Cache 的静态文件将不会被检测到。" + +#: wp-cache.php:1321 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "WordPress 没有被锁定。新的评论将会像往常一样刷新 Super Cache 的静态文件。" + +#: wp-cache.php:1327 +msgid "Lock Down" +msgstr "锁定" + +#: wp-cache.php:1335 +msgid "Directly Cached Files" +msgstr "直接缓存的文件" + +#: wp-cache.php:1393 +msgid "%s removed!" +msgstr "%s 已移除!" + +#: wp-cache.php:1401 +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "您必须将 %s 设置为可被写入才能使用此功能。由于该功能存在安全风险,请在页面生成后设置为只读权限。" + +#: wp-cache.php:1406 +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "%s 可被写入。由于存在安全风险,请在页面生成后设置为只读权限。" + +#: wp-cache.php:1421 +msgid "Existing direct page" +msgstr "已存在的跳转页面" + +#: wp-cache.php:1421 +msgid "Delete cached file" +msgstr "删除已缓存文件" + +#: wp-cache.php:1426 +msgid "Add direct page:" +msgstr "添加跳转页面:" + +#: wp-cache.php:1428 +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "" + +#: wp-cache.php:1430 +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "例如:为了缓存 %1$sabout/,您需要访问 %1$sabout/ 或 /about/。缓存文件将会在下次匿名用户来访时再次生成。" + +#: wp-cache.php:1431 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "如果文本框留空,将会移除直接页面列表中内容的并删除缓存文件。" + +#: wp-cache.php:1436 +msgid "Update Direct Pages" +msgstr "更新直接链接页面" + +#: wp-cache.php:1464 +msgctxt "timezone date format" +msgid "Y-m-d G:i:s" +msgstr "Y-m-d G:i:s" + +#: wp-cache.php:1523 +msgid "Expiry Time & Garbage Collection" +msgstr "到期时间和垃圾回收器" + +#: wp-cache.php:1525 +msgid "UTC time is %s" +msgstr "UTC时间是%s" + +#: wp-cache.php:1528 +msgid "Local time is %1$s" +msgstr "本地时间是 %1$s" + +#: wp-cache.php:1532 +msgid "Next scheduled garbage collection will be at %s UTC" +msgstr "下次垃圾收集计划任务将会在 %s UTC 开始" + +#: wp-cache.php:1536 +msgid "Warning! PRELOAD MODE activated. Supercache files will not be deleted regardless of age." +msgstr "警告!预缓存模式 已激活!Supercache 的缓存文件由于缓存的有效时间而不会被删除。" + +#: wp-cache.php:1553 +msgid "Cache Timeout" +msgstr "缓存超时时间" + +#: wp-cache.php:1554 +#: wp-cache.php:1557 +msgid "seconds" +msgstr "秒" + +#: wp-cache.php:1555 +msgid "How long should cached pages remain fresh? Set to 0 to disable garbage collection. A good starting point is 3600 seconds." +msgstr "哪些缓存页面是没有过期的?设置为0可以禁用垃圾回收器。建议数值为3600。" + +#: wp-cache.php:1556 +msgid "Scheduler" +msgstr "计划" + +#: wp-cache.php:1556 +msgid "Timer:" +msgstr "定时器:" + +#: wp-cache.php:1557 +msgid "Check for stale cached files every interval seconds." +msgstr "每隔 interval 秒定期检查过期的缓存文件。" + +#: wp-cache.php:1558 +msgid "Clock:" +msgstr "时间:" + +#: wp-cache.php:1559 +msgid "HH:MM" +msgstr "小时:分钟" + +#: wp-cache.php:1559 +msgid "Check for stale cached files at this time (UTC) or starting at this time every interval below." +msgstr "每当到了您设定的 (UTC) 时间或者任务间隔检查过期的缓存文件。" + +#: wp-cache.php:1561 +msgid "Interval:" +msgstr "任务间隔:" + +#: wp-cache.php:1567 +msgid "Notification Emails" +msgstr "邮件通知" + +#: wp-cache.php:1568 +msgid "Email me when the garbage collection runs." +msgstr "当垃圾回收器运行时发送邮件通知我。" + +#: wp-cache.php:1570 +msgid "Garbage Collection" +msgstr "垃圾回收器" + +#: wp-cache.php:1571 +msgid "Garbage collection is the simple act of throwing out your garbage. For this plugin that would be old or stale cached files that may be out of date. New cached files are described as fresh." +msgstr "垃圾回收器 是一个减少垃圾的工具。因为插件产生的缓存会随着时间推移而过期,因此新生成的缓存文件因此是新鲜的。" + +#: wp-cache.php:1572 +msgid "Cached files are fresh for a limited length of time. You can set that time in the Cache Timeout text box on this page." +msgstr "缓存都是有一定的新鲜时间的,您可以在本页的 缓存过期时间 文本框进行设置。" + +#: wp-cache.php:1573 +msgid "Stale cached files are not removed as soon as they become stale. They have to be removed by the garbage collecter. That is why you have to tell the plugin when the garbage collector should run." +msgstr "过期的缓存文件并会被立刻删除。它们会被垃圾回收器清除。这就是您需要对垃圾回收器进行配置的原因。" + +#: wp-cache.php:1574 +msgid "Use the Timer or Clock schedulers to define when the garbage collector should run." +msgstr "使用 定时器时钟 选项来设定垃圾回收器何时应该运行。" + +#: wp-cache.php:1575 +msgid "The Timer scheduler tells the plugin to run the garbage collector at regular intervals. When one garbage collection is done, the next run is scheduled." +msgstr "定时器 告诉插件间隔多久运行垃圾回收器。当一次回收完毕时,下次任务将会被设计划。" + +#: wp-cache.php:1576 +msgid "Or, the Clock scheduler allows the garbage collection to run at specific times. If set to run hourly or twicedaily the garbage collector will be first scheduled for the time you enter here. It will then run again at the indicated interval. If set to run daily it will run once a day at the time specified." +msgstr "或者,时钟允许垃圾回收器在特定时间时运行。如果您设置时间间隔为每小时或者一天两次,垃圾回收器将会按照您输入的设定运行。然后它将会按照已指定的时间间隔再次运行。如果设置为每天,它将会在每天特定时间运行,且一天内只有这一次。" + +#: wp-cache.php:1578 +msgid "There are no best garbage collection settings but here are a few scenarios. Garbage collection is separate to other actions that clear our cached files like leaving a comment or publishing a post." +msgstr "没有十分完美的垃圾回收器设置,不过它已被单独分离出来,这样清理缓存文件就像留下一条评论或者发布文章一样简单。" + +#: wp-cache.php:1580 +msgid "Sites that want to serve lots of newly generated data should set the Cache Timeout to 60 and use the Timer scheduler set to 90 seconds." +msgstr "有大量新数据产生的站点应该设置缓存超时时间为60并设置定时器时间为90秒。" + +#: wp-cache.php:1581 +msgid "Sites with widgets and rss feeds in their sidebar should probably use a timeout of 3600 seconds and set the timer to 600 seconds. Stale files will be caught within 10 minutes of going stale." +msgstr "在侧边栏有挂件和 rss 输出的站点应该设置超时时间为3600秒,并设置定时器为600秒。过期缓存将会在10分钟内随时被收集。" + +#: wp-cache.php:1582 +msgid "Sites with lots of static content, no widgets or rss feeds in their sidebar can use a timeout of 86400 seconds or even more and set the timer to something equally long." +msgstr "有大量静态内容且在侧边栏没有挂件和 rss 输出的站点,应该设置超时时间为86400秒或更长并设置定时器为一个很长的时间。" + +#: wp-cache.php:1583 +msgid "Sites where an external data source updates at a particular time every day should set the timeout to 86400 seconds and use the Clock scheduler set appropriately." +msgstr "每天有固定更新产生的站点应该设缓存超时时间为86400秒并正确设置时钟时间。" + +#: wp-cache.php:1585 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 600 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. If you are using legacy caching aim to have less than 500 cached files if possible. You can have many times more cached files when using mod_rewrite or PHP caching." +msgstr "检查并删除过期文件的确是一件很难做的事情,但是留着这些文件同样也是不必要的。在一个十分繁忙的站点上您应该设置到期时间为600秒。一天内可以在不同的时候设置不同的数值,访问本页来看看剩下多少到期的文件。如果您使用传统模式进行缓存,如果有可能的话,尽量保持500个以下文件。如果想缓存更多文件,请选择 PHP 模式或者 mod_rewrite 模式进行缓存。" + +#: wp-cache.php:1586 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "设置到期时间为0秒以便禁用垃圾回收器。" + +#: wp-cache.php:1587 +msgid "Change Expiration" +msgstr "修改过期设置" + +#: wp-cache.php:1631 +msgid "Rejected User Agents" +msgstr "已拒绝的用户代理(User Agent)" + +#: wp-cache.php:1632 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "" + +#: wp-cache.php:1639 +msgid "Save UA Strings" +msgstr "保存用户代理(UA)字段" + +#: wp-cache.php:1662 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "不要缓存例如下列格式的页面。请见 Conditional Tags 文档查看所有格式的具体说明。" + +#: wp-cache.php:1665 +msgid "Single Posts" +msgstr "单一文章" + +#: wp-cache.php:1666 +msgid "Pages" +msgstr "页面" + +#: wp-cache.php:1667 +msgid "Front Page" +msgstr "首页" + +#: wp-cache.php:1668 +msgid "Home" +msgstr "主页" + +#: wp-cache.php:1669 +msgid "Archives" +msgstr "存档" + +#: wp-cache.php:1670 +msgid "Tags" +msgstr "标签" + +#: wp-cache.php:1671 +msgid "Category" +msgstr "分类" + +#: wp-cache.php:1672 +msgid "Feeds" +msgstr "Feeds" + +#: wp-cache.php:1673 +msgid "Search Pages" +msgstr "搜索页面" + +#: wp-cache.php:1674 +msgid "Author Pages" +msgstr "作者页面" + +#: wp-cache.php:1676 +#: wp-cache.php:1788 +msgid "Save" +msgstr "保存" + +#: wp-cache.php:1693 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "在这里添加强制禁止缓存的页面的地址关键字。例如,如果您的地址包含年份并且您不想缓存上一年的文章,您可以直接填写 ’/2004/’。WP-Cache 将会搜索所有符合条件的页面并且不缓存它们。" + +#: wp-cache.php:1699 +msgid "Save Strings" +msgstr "保存" + +#: wp-cache.php:1715 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "添加想要被缓存的文件名,即使它们出现在上面的被拒绝列表里面。" + +#: wp-cache.php:1721 +msgid "Save Files" +msgstr "保存文件" + +#: wp-cache.php:1762 +msgid "Currently logging to: %s" +msgstr "当前登录至:%s" + +#: wp-cache.php:1765 +msgid "Fix problems with the plugin by debugging it here. It can log them to a file in your cache directory." +msgstr "通过在这里调试来修复故障,调试功能会在缓存文件目录下生成日志。" + +#: wp-cache.php:1769 +msgid "Debugging" +msgstr "调试中" + +#: wp-cache.php:1770 +msgid "IP Address" +msgstr "IP 地址" + +#: wp-cache.php:1770 +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(仅记录来自该 IP 的请求,您的 IP 是 %s)" + +#: wp-cache.php:1771 +msgid "Cache Status Messages" +msgstr "缓存状态消息" + +#: wp-cache.php:1772 +msgid "Display comments at the end of every page like this:" +msgstr "像这样的方式显示每页末尾的评论:" + +#: wp-cache.php:1778 +msgid "In very rare cases two problems may arise on some blogs:

      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "在某些情况下,有以下2个问题可能会发生:
      1. 加载首页时会变成 zip 档案下载。
      2. 如果您的博客使用静态首页,并且固定链接结构类似于 /%category%/%postname%/ ,某些错误的页面会被当做首页进行缓存。
      " + +#: wp-cache.php:1779 +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "我有 99% 的把握:这不是 WP Super Cache 的 Bug,这种情况只会在极其罕见的情况下发生。如果您仍然不放心,我建议您每5分钟做一次对站点的简单检查,以便验证站点是否运行正常。如果产生任何问题,您会收到系统发送的邮件通知。" + +#: wp-cache.php:1781 +msgid "Check front page every 5 minutes." +msgstr "每5分钟检查一次首页。" + +#: wp-cache.php:1782 +msgid "Front page text" +msgstr "首页文字" + +#: wp-cache.php:1782 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "这是您将要在首页寻找的文字。如果您找不到,缓存将会被清除。留空则禁用该功能。" + +#: wp-cache.php:1783 +msgid "Clear cache on error." +msgstr "即使出错也清除缓存。" + +#: wp-cache.php:1784 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "当有检查时发送邮件提醒站点管理员。(对测试十分有用)" + +#: wp-cache.php:1798 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "错误:GZIP 压缩已启用,如果您想启用 wp-cache 请禁用 gzip 压缩。" + +#: wp-cache.php:1845 +#: wp-cache.php:1986 +#: wp-cache.php:2022 +msgid "Warning" +msgstr "警告" + +#: wp-cache.php:1845 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "WordPress 已启用 GZIP 压缩,wp-cache 将会自动忽略直到您禁用 gzip 压缩。" + +#: wp-cache.php:1907 +#: wp-cache.php:1912 +#: wp-cache.php:1945 +#: wp-cache.php:1950 +#: wp-cache.php:1956 +msgid "Error" +msgstr "错误" + +#: wp-cache.php:1907 +msgid "Your cache directory (%1$s) did not exist and couldn’t be created by the web server. Check %1$s permissions." +msgstr "您的缓存目录 (%1$s) 不存在且 Web 服务器无法创建。请检查 %1$s 的权限设置。" + +#: wp-cache.php:1912 +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "您的缓存目录 (%1$s) 或者 %2$s需要被设置为可写入权限。请检查有关设置。" + +#: wp-cache.php:1945 +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "您的 WP-Cache 设置文件(%s) 已过期且不可被 Web 服务器读取。请删除该文件并刷新本页。" + +#: wp-cache.php:1950 +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." + +#: wp-cache.php:1956 +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "Sample WP-Cache 设置文件(%s) 不存在。请检查您的安装。" + +#: wp-cache.php:1986 +msgid "Could not update %s! WPCACHEHOME must be set in config file." +msgstr "无法更新 %s!必须设置 WPCACHEHOME。" + +#: wp-cache.php:2022 +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "%s/advanced-cache.php 不存在或者不可被更新。" + +#: wp-cache.php:2023 +msgid "1. If it already exists please delete the file first." +msgstr "1. 如果文件已经存在请先删除它们。" + +#: wp-cache.php:2024 +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. 将 %1$s 通过 chmod 或者 ftp 客户端设置为可被写入(chmod 777 %1$s) 并刷新本页。这只是一个临时的操作,您需要随后恢复该文件之前的只读权限。(将之前括号内的777改为755,并执行修改后的命令)" + +#: wp-cache.php:2025 +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. 刷新本页以便更新 %s/advanced-cache.php" + +#: wp-cache.php:2026 +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "如果不能工作,请确保文件 %s/advanced-cache.php 不存在:" + +#: wp-cache.php:2027 +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. 用文本编辑器打开 %1$s$wp_cache_file
    • 2. 修改从 CACHEHOME%2$s 的文字
    • 3. 保存并把文件复制到 %3$s 然后刷新本页。
    • " + +#: wp-cache.php:2050 +msgid "

      WP_CACHE constant set to false

      The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

      define('WP_CACHE', true);

      " +msgstr "" + +#: wp-cache.php:2052 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "错误:您的 wp-config.php 文件中 WP_CACHE 未被启用 并且插件无法变更。" + +#: wp-cache.php:2053 +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "编辑 %s 并添加如下内容:
      define('WP_CACHE', true);
      WP-Cache 将不会被执行
      。" + +#: wp-cache.php:2057 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the Troubleshooting Guide. The WP_CACHE line must be moved up." +msgstr "" + +#: wp-cache.php:2085 +msgid "Cache Contents" +msgstr "缓存内容" + +#: wp-cache.php:2088 +msgid "Object cache in use. No cache listing available." +msgstr "对象缓存正处于使用中。没有缓存列表可用。" + +#: wp-cache.php:2112 +msgid "Deleting supercache file: %s
      " +msgstr "正在删除 supercache 的相关文件: %s
      " + +#: wp-cache.php:2129 +msgid "Deleting wp-cache file: %s
      " +msgstr "正在删除 wp-cache 的相关文件: %s
      " + +#: wp-cache.php:2194 +msgid "Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page." +msgstr "缓存统计信息不是自动生成的,您需要点击下面的链接来重新生成。" + +#: wp-cache.php:2195 +msgid "Regenerate cache stats" +msgstr "重新生成缓存统计信息" + +#: wp-cache.php:2197 +msgid "Cache stats last generated: %s minutes ago." +msgstr "缓存统计已于 %s分钟前生成。" + +#: wp-cache.php:2203 +msgid "WP-Cache" +msgstr "WP-Cache" + +#: wp-cache.php:2204 +#: wp-cache.php:2219 +msgid "%s Cached Pages" +msgstr "%s 已缓存页面" + +#: wp-cache.php:2205 +#: wp-cache.php:2224 +msgid "%s Expired Pages" +msgstr "%s 已过期页面" + +#: wp-cache.php:2218 +msgid "WP-Super-Cache" +msgstr "WP-Super-Cache" + +#: wp-cache.php:2228 +msgid "Fresh WP-Cached Files" +msgstr "最新的 WP-Cached 文件" + +#: wp-cache.php:2229 +#: wp-cache.php:2245 +#: wp-cache.php:2261 +#: wp-cache.php:2277 +msgid "URI" +msgstr "URI" + +#: wp-cache.php:2229 +#: wp-cache.php:2245 +msgid "Key" +msgstr "密钥" + +#: wp-cache.php:2229 +#: wp-cache.php:2245 +#: wp-cache.php:2261 +#: wp-cache.php:2277 +msgid "Age" +msgstr "有效时间" + +#: wp-cache.php:2229 +#: wp-cache.php:2245 +#: wp-cache.php:2261 +#: wp-cache.php:2277 +msgid "Delete" +msgstr "删除" + +#: wp-cache.php:2244 +msgid "Stale WP-Cached Files" +msgstr "过期的 WP-Cached 文件" + +#: wp-cache.php:2260 +msgid "Fresh Super Cached Files" +msgstr "最新的 Super Cached 文件" + +#: wp-cache.php:2276 +msgid "Stale Super Cached Files" +msgstr "过期的 Super Cached 文件" + +#: wp-cache.php:2292 +msgid "Hide file list" +msgstr "隐藏文件列表" + +#: wp-cache.php:2294 +msgid "Too many cached files, no listing possible." +msgstr "缓存文件太多,没有列表可用。" + +#: wp-cache.php:2296 +msgid "List all cached files" +msgstr "列出所有已缓存的文件" + +#: wp-cache.php:2299 +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "到期文件是那些存在时间大于%s秒的文件。它们仍在被调用并会定期被删除。" + +#: wp-cache.php:2310 +msgid "Delete Expired" +msgstr "删除已过期文件" + +#: wp-cache.php:2335 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "删除 Super Cache 插件的缓存文件 (新窗口中打开)" + +#: wp-cache.php:2482 +msgid "%1$s is Stephen Fry proof thanks to caching by %2$s" +msgstr "%1$s is Stephen Fry proof thanks to caching by %2$s" + +#: wp-cache.php:2515 +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "WP Super Cache 需要设置。请前往 插件管理页面 设置。" + +#: wp-cache.php:2521 +msgid "Settings" +msgstr "设置" + +#: wp-cache.php:2531 +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "WP Super Cache 已禁用。请去 插件管理首页 开启缓存功能。" + +#: wp-cache.php:2534 +msgid "Warning! WP Super Cache caching broken! The script advanced-cache.php could not load wp-cache-phase1.php.

      Please edit %1$s/advanced-cache.php and make sure the path to %2$swp-cache-phase1.php is correct." +msgstr "警告!WP Super Cache 缓存功能损坏!advanced-cache.php 无法加载 wp-cache-phase1.php。

      请编辑 %1$s/advanced-cache.php 并确保 %2$swp-cache-phase1.php的路径是正确的。" + +#: wp-cache.php:2553 +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] 首页已经被 gzip 压缩!请清除缓存!" + +#: wp-cache.php:2553 +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "由于您的首页正在被加载,请自行访问 %s 以清除首页的缓存!" + +#: wp-cache.php:2556 +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] 首页已被 gzip 压缩!缓存已清除!" + +#: wp-cache.php:2556 +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "由于首页正在被加载,您的博客的所有缓存已被清除。请访问 %s 以检查缓存是否已被清除。" + +#: wp-cache.php:2563 +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] 首页不正确!请清除缓存!" + +#: wp-cache.php:2563 +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "请访问 %1$s 以清除您的站点的首页缓存,该缓存是错误的或者缺失文字 \"%2$s\"!" + +#: wp-cache.php:2566 +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] 首页不正确!缓存已清除!" + +#: wp-cache.php:2566 +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "由于首页缺失 \"%2$s\" ,所有缓存已被清除。请访问 %1$s 以检查缓存是否已被清除。" + +#: wp-cache.php:2571 +msgid "[%s] Front page check!" +msgstr "[%s] 首页检查!" + +#: wp-cache.php:2571 +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "WP Super Cache 已经检查您的博客的首页。如果您想禁用,请访问 %s 。" + +#: wp-cache.php:2614 +msgid "Cannot update .htaccess" +msgstr "无法更新 .htaccess 文件" + +#: wp-cache.php:2614 +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "%s.htaccess 文件无法被服务器变更。请使用 chmod 命令或 ftp 客户端来修正权限。" + +#: wp-cache.php:2614 +msgid "Refresh this page when the file permissions have been modified." +msgstr "当文件权限更改后请刷新本页。" + +#: wp-cache.php:2614 +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "另外,您还可以自行编辑您的 %s.htaccess 文件并添加以下代码 (在任何 WordPress 规则之前):" + +#: wp-cache.php:2618 +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "如果要使缓存页面生效,您的服务器必须要有包含正确的 mod_rewrite 规则的 %s.htaccess 文件" + +#: wp-cache.php:2619 +msgid "You can edit the file yourself add the following rules." +msgstr "您可以自行编辑该文件并添加下列规则。" + +#: wp-cache.php:2620 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr " 确保它们在已有的 WordPress 规则前。" + +#: wp-cache.php:2628 +msgid "Update Mod_Rewrite Rules" +msgstr "更新 Mod_Rewrite 规则" + +#: wp-cache.php:2780 +msgid "[%1$s] Cache Preload Started" +msgstr "[%1$s] 预缓存已开始" + +#: wp-cache.php:2810 +msgid "[%1$s] Refreshing %2$s taxonomy from %3$d to %4$d" +msgstr "[%1$s] 正在刷新 从 %3$d 到 %4$d 的 %2$s 分类法" + +#: wp-cache.php:2856 +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] 正在刷新从 %2$d 到 %3$d 的文章" + +#: wp-cache.php:2877 +msgid "[%1$s] Cache Preload Stopped" +msgstr "[%1$s] 预缓存已停止" + +#: wp-cache.php:2887 +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s] %2$d 篇文章已刷新" + +#: wp-cache.php:2887 +msgid "Refreshed the following posts:" +msgstr "以下文章已被刷新:" + +#: wp-cache.php:2897 +msgid "Scheduling next preload refresh in %d minutes." +msgstr "下次预缓存任务将在%d分后开始。" + +#: wp-cache.php:2908 +msgid "[%s] Cache Preload Completed" +msgstr "[%s] 预缓存完成" + +#: wp-cache.php:2908 +msgid "Cleaning up old supercache files." +msgstr "正在清理过期的 supercache 文件。" + +#: wp-cache.php:2951 +msgid "[%s] Preload may have stalled." +msgstr "[%s] 预缓存可能已失去响应。" + +#: wp-cache.php:2951 +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"预缓存已经重新启动。\n" +"%s" + +#: wp-cache.php:2994 +msgid "Supercache Uninstall Problems" +msgstr "Supercache 卸载问题" + +#: wp-cache.php:2994 +msgid "" +"Dear User,\n" +"\n" +"WP Super Cache was removed from your blog but the mod_rewrite rules\n" +"in your .htaccess were not.\n" +"\n" +"Please edit the following file and remove the code\n" +"between 'BEGIN WPSuperCache' and 'END WPSuperCache'. Please backup the file first!\n" +"\n" +"%s\n" +"\n" +"Regards,\n" +"WP Super Cache Plugin\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" +msgstr "" +"亲爱的用户,\n" +"\n" +"WP Super Cache 已在您的博客上被移除,但是被 mod_rewrite 调用的\n" +" .htaccess 文件中的重定向规则尚未被移除。\n" +"\n" +"请编辑下列文件并且移除\n" +"位于 'BEGIN WPSuperCache' 和 'END WPSuperCache' 之间的代码。请首先备份该文件以防不测!\n" +"\n" +"%s\n" +"\n" +"此致,\n" +"WP Super Cache 插件\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" + +#: wp-cache.php:3031 +msgid "Delete cache of the current page" +msgstr "删除当前页面的缓存" + diff --git a/wp-content/plugins/wp-super-cache/languages/wp-super-cache-zh_TW.mo b/wp-content/plugins/wp-super-cache/languages/wp-super-cache-zh_TW.mo new file mode 100644 index 0000000000000000000000000000000000000000..d198f08323eee1ea00f3bb24beaad069a5f5285c GIT binary patch literal 74884 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\n" +"Language-Team: privism \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Chinese\n" +"X-Poedit-Country: TAIWAN\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: ossdl-cdn.php:151 +msgid "Your website probably uses lots of static files. Image, Javascript and CSS files are usually static files that could just as easily be served from another site or CDN. Therefore this plugin replaces any links in the wp-content and wp-includes directories (except for PHP files) on your site with the URL you provide below. That way you can either copy all the static content to a dedicated host or mirror the files to a CDN by origin pull." +msgstr "你的網站可能使用了許多的靜態檔案。圖片、Javascript、CSS 檔案通常都是靜態檔案,可以很簡單地使用另一個站台或 CDN (內容傳遞網路)來服務。所以這個外掛會根據你下面所提供的 URL,取代你的網站中 wp-contentwp-includes 目錄下除了 PHP 檔案以外的任何連結。用這個方式,你可以把所有的靜態內容拷貝到一個專用的主機或或使用 origin pull 鏡射到 CDN 上。" + +#: ossdl-cdn.php:152 +#: wp-cache.php:1071 +msgid "The CDN Sync Tool plugin will help upload files to Amazon S3/Cloudfront if you would rather not depend on origin pull. See the plugin support forum if you have any queries about this plugin." +msgstr "如果你不希望依賴 origin pull,CDN Sync Tool 是一個幫助你上傳檔案到 Amazon S3/Cloudfront 的外掛。 如果你對此外掛有任何問題,請參見 外掛支援論壇。" + +#: ossdl-cdn.php:153 +msgid "WARNING: Test some static urls e.g., %s to ensure your CDN service is fully working before saving changes." +msgstr "警告: 請先測試一些固定的網址,例如%s。在儲存變更前,確定你的 CDN 服務完全正常。" + +#: ossdl-cdn.php:154 +msgid "You can define different CDN URLs for each site on a multsite network." +msgstr "你可以為多站台網路中的每個站台定義不同的 CDN URL。" + +#: ossdl-cdn.php:162 +msgid "Enable CDN Support" +msgstr "啟用 CDN 支援" + +#: ossdl-cdn.php:165 +msgid "Off-site URL" +msgstr "站外 URL" + +#: ossdl-cdn.php:168 +msgid "The new URL to be used in place of %1$s for rewriting. No trailing / please.
      Example: %2$s." +msgstr "這個新的 URL 在會重寫時用來取代 %1$s。請不要加上結尾的 /
      例: %2$s" + +#: ossdl-cdn.php:172 +msgid "Include directories" +msgstr "包含以下目錄" + +#: ossdl-cdn.php:175 +msgid "Directories to include in static file matching. Use a comma as the delimiter. Default is wp-content, wp-includes, which will be enforced if this field is left empty." +msgstr "靜態檔案比對包含的目錄。使用逗號作為分隔符號。預設為 wp-content, wp-includes ,當這個欄位空白時會強制套用。" + +#: ossdl-cdn.php:179 +msgid "Exclude if substring" +msgstr "若含有以下字串則排除" + +#: ossdl-cdn.php:182 +msgid "Excludes something from being rewritten if one of the above strings is found in the match. Use a comma as the delimiter like this, .php, .flv, .do, and always include .php (default)." +msgstr "若網址中包含以上的字串,則不會被重寫。使用逗號作為分隔符號,像這樣:.php, .flv, .do,並請永遠包含.php (預設值)。" + +#: ossdl-cdn.php:186 +msgid "Additional CNAMES" +msgstr "額外的正規名稱(CNAMES)" + +#: ossdl-cdn.php:189 +msgid "These CNAMES will be used in place of %1$s for rewriting (in addition to the off-site URL above). Use a comma as the delimiter. For pages with a large number of static files, this can improve browser performance. CNAMEs may also need to be configured on your CDN.
      Example: %2$s" +msgstr "這些 正規名稱記錄(CNAMES) 會在重寫時用來取代 %1$s (和上面的站外URL一起)。 使用逗號作為分隔符號。 在有大量靜態檔案的網頁中,這可以增進瀏覽器效能。 這些正規名稱可能也需要在你的 CDN 被設定。
      例: %2$s" + +#: ossdl-cdn.php:193 +msgid "Skip https URLs to avoid \"mixed content\" errors" +msgstr "跳過 https 網址以避免「混合的內容」錯誤" + +#: ossdl-cdn.php:197 +msgid "Save Changes" +msgstr "儲存變更" + +#: ossdl-cdn.php:199 +msgid "CDN functionality provided by OSSDL CDN Off Linker by Mark Kubacki" +msgstr "CDN 功能由OSSDL CDN Off Linker提供,作者為Mark Kubacki" + +#: plugins/awaitingmoderation.php:4 +msgid "Your comment is awaiting moderation." +msgstr "您的迴響正等待審核中。" + +#: plugins/awaitingmoderation.php:32 +msgid "Awaiting Moderation" +msgstr "Awaiting Moderation" + +#: plugins/awaitingmoderation.php:34 +#: plugins/badbehaviour.php:65 +#: plugins/domain-mapping.php:75 +#: plugins/searchengine.php:69 +#: plugins/wptouch.php:22 +#: wp-cache.php:1311 +msgid "Enabled" +msgstr "啟用" + +#: plugins/awaitingmoderation.php:35 +#: plugins/badbehaviour.php:66 +#: plugins/domain-mapping.php:76 +#: plugins/searchengine.php:70 +#: plugins/wptouch.php:23 +#: wp-cache.php:1311 +msgid "Disabled" +msgstr "停用" + +#: plugins/awaitingmoderation.php:36 +msgid "Enables or disables plugin to Remove the text \"Your comment is awaiting moderation.\" when someone leaves a moderated comment." +msgstr "啟動或關閉此外掛,決定當有人發佈需審核的迴響時,是否去除「您的迴響正等待審核中」字樣。" + +#: plugins/awaitingmoderation.php:40 +#: plugins/badbehaviour.php:71 +#: plugins/domain-mapping.php:81 +#: plugins/searchengine.php:75 +#: plugins/wptouch.php:28 +#: wp-cache.php:1769 +#: wp-cache.php:1771 +msgid "enabled" +msgstr "已啟用" + +#: plugins/awaitingmoderation.php:42 +#: plugins/badbehaviour.php:73 +#: plugins/domain-mapping.php:83 +#: plugins/searchengine.php:77 +#: plugins/wptouch.php:30 +msgid "disabled" +msgstr "已停用" + +#: plugins/awaitingmoderation.php:43 +msgid "Awaiting Moderation is now %s" +msgstr "Awaiting Moderation 外掛模組 %s" + +#: plugins/awaitingmoderation.php:45 +#: plugins/badbehaviour.php:76 +#: plugins/domain-mapping.php:86 +#: plugins/searchengine.php:80 +#: plugins/wptouch.php:33 +msgid "Update" +msgstr "更新" + +#: plugins/badbehaviour.php:47 +msgid "Bad Behaviour not found. Please check your install." +msgstr "找不到 Bad Behaviour。請檢查是否正確安裝。" + +#: plugins/badbehaviour.php:63 +msgid "Bad Behavior" +msgstr "Bad Behavior" + +#: plugins/badbehaviour.php:68 +msgid "(Only legacy caching supported, disabled compression and requires Bad Behavior in \"%s/plugins/bad-behavior/\") " +msgstr "(只支援傳統模式,停用壓縮,Bad Behavior 路徑必須為 \"%s/plugins/bad-behavior/\")" + +#: plugins/badbehaviour.php:74 +msgid "Bad Behavior support is now %s" +msgstr "Bad Behaviour 外掛模組 %s" + +#: plugins/badbehaviour.php:83 +#: wp-cache.php:1401 +#: wp-cache.php:1406 +msgid "Warning!" +msgstr "警告!" + +#: plugins/domain-mapping.php:73 +msgid "Domain Mapping" +msgstr "Domain Mapping" + +#: plugins/domain-mapping.php:78 +msgid "Provides support for Domain Mapping plugin to map multiple domains to a blog." +msgstr "Domain Mapping外掛支援,映射多個網域至一個 blog。" + +#: plugins/domain-mapping.php:84 +msgid "Domain Mapping support is now %s" +msgstr "Domain Mapping 外掛模組 %s" + +#: plugins/domain-mapping.php:98 +msgid "Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin." +msgstr "Domain Mapping 外掛模組已被偵測到!請到 Supercache 外掛頁面啟用 domain mapping 支援外掛。" + +#: plugins/multisite.php:13 +msgid "Cached" +msgstr "已快取" + +#: plugins/multisite.php:31 +#: wp-cache.php:1324 +msgid "Enable" +msgstr "啟用" + +#: plugins/multisite.php:33 +#: plugins/searchengine.php:61 +#: wp-cache.php:1324 +msgid "Disable" +msgstr "停用" + +#: plugins/multisite.php:39 +msgid "Caching has been disabled on this blog on the Network Admin Sites page." +msgstr "這個部落格的快取,已經在站台網路管理頁面中被關閉。" + +#: plugins/searchengine.php:67 +msgid "No Adverts for Friends" +msgstr "No Adverts for Friends" + +#: plugins/searchengine.php:72 +msgid "Provides support for No Adverts for Friends." +msgstr "No Adverts for Friends 外掛支援。" + +#: plugins/searchengine.php:78 +msgid "No Adverts for Friends support is now %s" +msgstr "No Adverts for Friends 支援 %s" + +#: plugins/wptouch.php:20 +msgid "WPTouch" +msgstr "WPTouch" + +#: plugins/wptouch.php:25 +msgid "Provides support for WPTouch mobile theme and plugin." +msgstr "WPTouch 行動裝置主題外掛支援。" + +#: plugins/wptouch.php:31 +msgid "WPTouch support is now %s" +msgstr "WPTouch 支援 %s" + +#: plugins/wptouch.php:45 +msgid "WPTouch plugin detected! Please go to the Supercache plugins page and enable the WPTouch helper plugin." +msgstr "WPTouch 外掛模組已被偵測到!請到 Supercache 外掛頁面啟用 WPTouch 支援外掛。" + +#: wp-cache-phase2.php:1209 +msgid "Cache expiry cron job failed. Job will run again in 10 seconds." +msgstr "執行清除過期快取的排程時失敗。將在十秒內再次執行。" + +#: wp-cache-phase2.php:1213 +msgid "Cache expiry cron job took more than 30 seconds. You should probably run the garbage collector more often." +msgstr "定時清除快取花費了超過三十秒以上的時間。你可能需要更常執行垃圾回收功能。" + +#: wp-cache-phase2.php:1222 +msgid "[%1$s] WP Super Cache GC Report" +msgstr "[%1$s] WP Super Cache 垃圾回收報告" + +#: wp-cache.php:99 +msgid "Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php" +msgstr "請以 wp-super-cache/wp-cache-config-sample.php 建立 %s /wp-cache-config.php" + +#: wp-cache.php:162 +msgid "Warning! PHP Safe Mode Enabled!" +msgstr "警告!PHP 安全模式已啟用!" + +#: wp-cache.php:163 +msgid "You may experience problems running this plugin because SAFE MODE is enabled." +msgstr "在安全模式下,你的外掛可能會遭遇錯誤。" + +#: wp-cache.php:167 +msgid "Your server is set up to check the owner of PHP scripts before allowing them to read and write files." +msgstr "你的伺服器設定為先檢查 PHP 程式擁有者才可以存取檔案。" + +#: wp-cache.php:168 +msgid "You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details." +msgstr "你或管理員可以透過變更外掛程式群組的所有者使其與伺服器使用者一致,進而讓其運作。%s/cache/ 目錄的所有者也必須變更。查看安全模式使用手冊以取得更多說明。" + +#: wp-cache.php:170 +msgid "You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file." +msgstr "你或管理員必須先停用此項目。查看安全模式使用手冊以取得更多說明。很抱歉,這無法在 .htaccess 檔案裡停用。它必須在 php.ini 設定檔中完成。" + +#: wp-cache.php:176 +msgid "Permlink Structure Error" +msgstr "固定網址結構錯誤" + +#: wp-cache.php:177 +msgid "A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks." +msgstr "外掛要正常運作,必須有自定 url 或固定網址。請到固定網址選項設定你的固定網址。" + +#: wp-cache.php:189 +msgid "Warning! Your hostname \"%s\" resolves to %s" +msgstr "警告!你的主機名稱 \"%s\" 解析到 %s" + +#: wp-cache.php:190 +msgid "Your server thinks your hostname resolves to %s. Some services such as garbage collection by this plugin, and WordPress scheduled posts may not operate correctly." +msgstr "你的伺服器認為你的主機名稱解析到 %s 。 WP Super Cache 外掛的某些服務,例如垃圾回收、WordPress 排程文章可能無法正常執行。" + +#: wp-cache.php:191 +#: wp-cache.php:205 +msgid "Please see entry 16 in the Troubleshooting section of the readme.txt" +msgstr "請參閱 readme.txt 第 16 項錯誤排除段落" + +#: wp-cache.php:204 +msgid "Unfortunately WordPress cannot find the file wp-cron.php. This script is required for the the correct operation of garbage collection by this plugin, WordPress scheduled posts as well as other critical activities." +msgstr "很抱歉,WordPress 找不到 wp-cron.php 檔案。必須要有這個程式才能正確執行垃圾回收、排程文章及其他重要活動。" + +#: wp-cache.php:218 +msgid "Cannot continue... fix previous problems and retry." +msgstr "無法繼續... 解決前述問題然後重試。" + +#: wp-cache.php:227 +msgid "Zlib Output Compression Enabled!" +msgstr "Zlib 輸出壓縮已被啟用!" + +#: wp-cache.php:228 +msgid "PHP is compressing the data sent to the visitors of your site. Disabling this is recommended as the plugin caches the compressed output once instead of compressing the same page over and over again. Also see #21 in the Troubleshooting section. See this page for instructions on modifying your php.ini." +msgstr "PHP頁面壓縮啟用中。建議將它關閉,因為外掛針對一個頁面只需要壓縮一次,而不需要反覆的壓縮。另請參見錯換排除段落第21條。 這邊有如何修改php.ini的說明。" + +#: wp-cache.php:232 +msgid "Mod rewrite may not be installed!" +msgstr "Mod rewrite 可能沒有安裝!" + +#: wp-cache.php:233 +msgid "It appears that mod_rewrite is not installed. Sometimes this check isn’t 100% reliable, especially if you are not using Apache. Please verify that the mod_rewrite module is loaded. It is required for serving Super Cache static files. You will still be able to use legacy or PHP modes." +msgstr "看來 mod_rewrite 沒有安裝。有時候這種檢查並非 100% 可信,特別是當你不是使用 Apache 時。請重新檢查 mod_rewrite 模組已經載入。執行 Super Cache 靜態檔案時必須要有它。但你仍然可以使用傳統或PHP快取模式。" + +#: wp-cache.php:239 +msgid "Read Only Mode. Configuration cannot be changed." +msgstr "唯讀模式。設定無法變更。" + +#: wp-cache.php:240 +msgid "The WP Super Cache configuration file is %s/wp-cache-config.php and cannot be modified. That file must be writeable by the webserver to make any changes." +msgstr "WP Super Cache 設定檔 %s/wp-cache-config.php 無法修改。該檔案必須允許從伺服器端進行寫入以進行設定變更。" + +#: wp-cache.php:241 +msgid "A simple way of doing that is by changing the permissions temporarily using the CHMOD command or through your ftp client. Make sure it’s globally writeable and it should be fine." +msgstr "最簡單的方式是使用 CHMOD 指令或透過 FTP 程式來變更權限。請確保它們正確並可以寫入。" + +#: wp-cache.php:242 +#: wp-cache.php:258 +msgid "This page explains how to change file permissions." +msgstr "這邊解釋如何變更檔案權限。" + +#: wp-cache.php:243 +msgid "Writeable:" +msgstr "可寫入:" + +#: wp-cache.php:244 +msgid "Readonly:" +msgstr "唯讀:" + +#: wp-cache.php:256 +msgid "Warning! %s is writeable!" +msgstr "警告!%s 可寫入!" + +#: wp-cache.php:257 +msgid "You should change the permissions on %s and make it more restrictive. Use your ftp client, or the following command to fix things:" +msgstr "你應該變更 %s 權限使其更加嚴密。使用你的FTP程式,或是按照以下指令來解決:" + +#: wp-cache.php:267 +msgid "Mobile rewrite rules detected" +msgstr "偵測到行動裝置重寫規則" + +#: wp-cache.php:268 +msgid "For best performance you should enable \"Mobile device support\" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text \"2.0\\ MMP|240x320\" and delete those." +msgstr "為了獲得最好的效能,你應該啟用\"行動裝置支援\",或從你的 .htaccess 刪除行動裝置重寫規則。尋找包含 \"2.0\\ MMP|240x320\" 字串的兩行並刪除它們。" + +#: wp-cache.php:268 +msgid "This will have no affect on ordinary users but mobile users will see uncached pages." +msgstr "這不會對一般使用者造成任何影響,但行動裝置使用者將會看到未快取的頁面。" + +#: wp-cache.php:274 +#: wp-cache.php:285 +msgid "Rewrite rules must be updated" +msgstr "Mod Rewrite 規則必須更新!" + +#: wp-cache.php:275 +#: wp-cache.php:286 +msgid "The rewrite rules required by this plugin have changed or are missing. " +msgstr "這個外掛所需的重寫規則已被變更或不存在。" + +#: wp-cache.php:276 +msgid "Mobile support requires extra rules in your .htaccess file, or you can set the plugin to legacy mode. Here are your options (in order of difficulty):" +msgstr "行動裝置支援必須在你的 .htaccess 檔案裡新增額外規則,或是你可以將外掛設定為傳統模式。這是你的選擇(依難易度排列):" + +#: wp-cache.php:277 +msgid "Set the plugin to legacy mode and enable mobile support." +msgstr "將外掛設為傳統模式並開啟行動裝置支援。" + +#: wp-cache.php:278 +#: wp-cache.php:287 +msgid "Scroll down the Advanced Settings page and click the Update Mod_Rewrite Rules button." +msgstr "捲動到進階選項頁面的下方並點擊更新 Mod_Rewrite 規則按鈕。" + +#: wp-cache.php:279 +msgid "Delete the plugin mod_rewrite rules in %s.htaccess enclosed by # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page." +msgstr "從 %s.htaccess 內刪除 # BEGIN WPSuperCache# END WPSuperCache 之間原始碼區段的 mod_rewrite 規則,之後重新載入本頁讓外掛再次產生規則。" + +#: wp-cache.php:280 +msgid "Add the rules yourself. Edit %s.htaccess and find the block of code enclosed by the lines # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$ add these lines: (do it twice, once for each section)" +msgstr "自行加入規則。編輯 %s.htaccess 並找到 # BEGIN WPSuperCache# END WPSuperCache 之間的原始碼區段。有兩個區段非常相似。緊接著 %%{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$ 的下方新增這幾行(要做兩次,一個區段一次):" + +#: wp-cache.php:293 +msgid "Required to serve compressed supercache files properly." +msgstr "需要此模組以正確提供 supercache 壓縮檔。" + +#: wp-cache.php:293 +msgid "Required to set caching information on supercache pages. IE7 users will see old pages without this module." +msgstr "需要此模組以設定在 supercache 頁面的快取資訊。若無此模組,IE7使用者將會看到舊頁面。" + +#: wp-cache.php:293 +msgid "Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module." +msgstr "設定 supercache 快取頁面過期時間。沒有這個模組,訪客在重新整理或留下迴響時可能看不到新頁面。" + +#: wp-cache.php:300 +msgid "Missing Apache Modules" +msgstr "Apache 模組遺失" + +#: wp-cache.php:301 +msgid "The following Apache modules are missing. The plugin will work in legacy mode without them. In full Supercache mode, your visitors may see corrupted pages or out of date content however." +msgstr "以下的 Apache 模組遺失。沒有它們外掛將在傳統模式下工作。若在完整的 Supercache 模式,你的訪客可能會看到損壞的網頁或是過時的內容。" + +#: wp-cache.php:502 +msgid "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file." +msgstr "警告! 你試著要開啟壓縮,但是 zlib.output_compression 已被啟用。 參見讀我檔案裡錯誤排除段落第21條。" + +#: wp-cache.php:598 +msgid "WP Super Cache Settings" +msgstr "WP Super Cache 狀態" + +#: wp-cache.php:612 +msgid "Notice: Mod_rewrite or Legacy caching enabled. Showing Advanced Settings Page by default." +msgstr "注意:Mod_rewrite 或傳統快取已被開啟。 預設顯示進階選項頁面。" + +#: wp-cache.php:623 +msgid "Configuration file changed, some values might be wrong. Load the page again from the \"Settings\" menu to reset them." +msgstr "設定檔已變更,某些數值可能錯誤。再次從\"設定\"選單讀取頁面以重設選項。" + +#: wp-cache.php:655 +msgid "Caching must be enabled to use this feature" +msgstr "必須啟用快取才能使用這個功能" + +#: wp-cache.php:673 +#: wp-cache.php:813 +msgid "Cancel Cache Preload" +msgstr "取消快取預先載入" + +#: wp-cache.php:681 +msgid "Scheduled preloading of cache almost cancelled. It may take up to a minute for it to cancel completely." +msgstr "預載快取排程即將取消。完全取消可能要花費至一分鐘。" + +#: wp-cache.php:692 +msgid "Scheduled preloading of cache cancelled." +msgstr "預載快取排程已被取消。" + +#: wp-cache.php:724 +#: wp-cache.php:811 +msgid "Preload Cache Now" +msgstr "馬上開始預先載入" + +#: wp-cache.php:728 +msgid "Scheduled preloading of cache in 10 seconds." +msgstr "預載快取將在十秒之後開始。" + +#: wp-cache.php:733 +msgid "Scheduled preloading of cache in %d minutes" +msgstr "下次預載快取排程時間:%d分鐘後" + +#: wp-cache.php:737 +msgid "This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now." +msgstr "這會快取你網站上所有已發布的文章和頁面。它會產生 supercache 靜態檔案,匿名訪客(包括機器人)會命中快取頁面。這有可能會對你的 Google 排名有幫助,因為他們也將網站速度納入衡量項目之一。" + +#: wp-cache.php:738 +msgid "Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting." +msgstr "不過預先載入會產生很多檔案。快取會從最新的文章開始做到最早的文章,所以當你有非常多 (10,000+) 文章的時候,可能只會有新文章被快取到。這在共享主機上特別重要。" + +#: wp-cache.php:739 +msgid "In ’Preload Mode’ regular garbage collection will only clean out old legacy files for known users, not the preloaded supercache files. This is a recommended setting when the cache is preloaded." +msgstr "在「預先載入」模式,通常的垃圾回收只會清除給已知使用者的傳統快取檔案,而不會清除預先載入的 supercache 檔案。這是預先載入的建議設定。" + +#: wp-cache.php:743 +msgid "Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)" +msgstr "每 %s 分鐘更新預載快取檔案。(0 關閉,最低 %d 分鐘。)" + +#: wp-cache.php:756 +msgid "all" +msgstr "所有" + +#: wp-cache.php:769 +msgid "Preload %s posts." +msgstr "預先載入 %s 篇文章。" + +#: wp-cache.php:776 +msgid "Preload mode (garbage collection only on legacy cache files. Recommended.)" +msgstr "預先載入模式(只對傳統模式快取做垃圾回收。建議選項。)" + +#: wp-cache.php:779 +msgid "Preload tags, categories and other taxonomies." +msgstr "預載標籤,類別,以及其它的分類。" + +#: wp-cache.php:782 +msgid "Send me status emails when files are refreshed." +msgstr "當檔案被更新的時候寄信給我。" + +#: wp-cache.php:787 +msgid "Many emails, 2 emails per 100 posts." +msgstr "很多信件,每一百篇文章二封信。" + +#: wp-cache.php:790 +msgid "Medium, 1 email per 100 posts." +msgstr "中等,每一百篇文章一封信。" + +#: wp-cache.php:793 +msgid "Less emails, 1 at the start and 1 at the end of preloading all posts." +msgstr "較少信件,開始的時候一封還有結束的時候一封。" + +#: wp-cache.php:797 +msgid "Refresh of cache in %d hours %d minutes and %d seconds." +msgstr "在%d小時%d分鐘%d秒之後更新快取。" + +#: wp-cache.php:798 +msgid "Full refresh of cache in %d hours %d minutes and %d seconds." +msgstr "完整更新快取,耗費了 %d 小時 %d 分鐘 %d 秒。" + +#: wp-cache.php:804 +msgid "Currently caching from post %d to %d." +msgstr "目前正在快取第 %d 到 %d 篇文章。" + +#: wp-cache.php:808 +msgid "Page last cached: %s" +msgstr "最新快取頁面: %s" + +#: wp-cache.php:811 +msgid "Update Settings" +msgstr "更新狀態" + +#: wp-cache.php:819 +msgid "Preloading of cache disabled. Please disable legacy page caching or talk to your host administrator." +msgstr "預先載入已被關閉。請關閉傳統模式或和主機管理員連絡。" + +#: wp-cache.php:836 +#: wp-cache.php:947 +msgid "Caching" +msgstr "快取" + +#: wp-cache.php:840 +msgid "Cache hits to this website for quick access." +msgstr "啟用快取以加速對本網站的存取" + +#: wp-cache.php:840 +#: wp-cache.php:841 +#: wp-cache.php:858 +#: wp-cache.php:867 +#: wp-cache.php:874 +#: wp-cache.php:877 +#: wp-cache.php:894 +#: wp-cache.php:950 +msgid "Recommended" +msgstr "建議選項" + +#: wp-cache.php:841 +msgid "Use mod_rewrite to serve cache files." +msgstr "使用 mod_rewrite 快取" + +#: wp-cache.php:842 +msgid "Use PHP to serve cache files." +msgstr "使用 PHP 快取" + +#: wp-cache.php:843 +msgid "Legacy page caching." +msgstr "傳統快取模式" + +#: wp-cache.php:844 +msgid "Mod_rewrite is fastest, PHP is almost as fast and easier to get working, while legacy caching is slower again, but more flexible and also easy to get working. New users should use PHP caching." +msgstr "Mod_rewrite 快取是最快的,PHP 快取幾乎一樣快且較容易上手;傳統模式較慢,但是有更多的彈性且同樣容易上手。新使用者應該使用 PHP 快取。" + +#: wp-cache.php:850 +msgid "Miscellaneous" +msgstr "雜項" + +#: wp-cache.php:856 +msgid "Warning! Compression is disabled as gzencode() function not found." +msgstr "警告!因為找不到 gzencode() 函式,壓縮已被停用。" + +#: wp-cache.php:858 +msgid "Compress pages so they’re served more quickly to visitors." +msgstr "壓縮網頁,讓訪客能更快速觀看" + +#: wp-cache.php:859 +msgid "Compression is disabled by default because some hosts have problems with compressed files. Switching it on and off clears the cache." +msgstr "壓縮預設為停用,因為某些主機在壓縮檔案時可能發生問題。啟用或停用這項功能會清除快取。" + +#: wp-cache.php:867 +msgid "304 Not Modified browser caching. Indicate when a page has not been modified since last requested." +msgstr "304 未修改支援。當一個頁面在上次被要求後沒有被更改的時候送出。" + +#: wp-cache.php:870 +msgid "Warning! 304 browser caching is only supported when not using mod_rewrite caching." +msgstr "警告! 304 瀏覽器快在不使用 mod_rewrite 快取時才能支援。" + +#: wp-cache.php:872 +msgid "304 support is disabled by default because in the past GoDaddy had problems with some of the headers used." +msgstr "304 支援預設為停用,因為過去GoDaddy在它使用的某些檔頭會產生問題。" + +#: wp-cache.php:874 +msgid "Don’t cache pages for known users." +msgstr "不要為已知使用者快取。" + +#: wp-cache.php:875 +msgid "Don’t cache pages with GET parameters. (?x=y at the end of a url)" +msgstr "不快取使用 GET 參數的頁面。(結尾有 ?x=y 的網址)" + +#: wp-cache.php:876 +msgid "Make known users anonymous so they’re served supercached static files." +msgstr "讓已知使用者匿名化,以靜態快取檔案服務他們。" + +#: wp-cache.php:877 +msgid "Cache rebuild. Serve a supercache file to anonymous users while a new file is being generated." +msgstr "重建快取。當新檔案重建的時候,提供 supercache 檔案給匿名使用者。" + +#: wp-cache.php:878 +msgid "Proudly tell the world your server is Stephen Fry proof! (places a message in your blog’s footer)" +msgstr "告訴全世界你的伺服器不怕 Stephen Fry (一個名人)攻擊!(在你的部落格底部放置一段訊息)" + +#: wp-cache.php:884 +#: wp-cache.php:1162 +#: wp-cache.php:1778 +msgid "Advanced" +msgstr "進階選項" + +#: wp-cache.php:888 +msgid "Mobile device support. (External plugin or theme required. See the FAQ for further details.)" +msgstr "行動裝置支援 (需要外掛或額外的主題來支援。 參見常見問答以獲得更多資訊。)" + +#: wp-cache.php:890 +msgid "Mobile Browsers" +msgstr "行動瀏覽器" + +#: wp-cache.php:890 +msgid "Mobile Prefixes" +msgstr "行動前置字串" + +#: wp-cache.php:892 +msgid "Remove UTF8/blog charset support from .htaccess file. Only necessary if you see odd characters or punctuation looks incorrect. Requires rewrite rules update." +msgstr "從 .htaccess 中移除 UTF8 字元集支援。只在你看到奇怪的字元或錯誤的標點時才需要。必須更新重寫規則。" + +#: wp-cache.php:893 +msgid "Clear all cache files when a post or page is published or updated." +msgstr "當發布或更新文章、網誌分頁時清除所有快取。" + +#: wp-cache.php:894 +msgid "Extra homepage checks. (Very occasionally stops homepage caching)" +msgstr "額外的首頁檢查(有很小的機會導致首頁快取停止)。" + +#: wp-cache.php:895 +msgid "Only refresh current page when comments made." +msgstr "當迴響發佈時,只更新目前頁面。" + +#: wp-cache.php:896 +msgid "List the newest cached pages on this page." +msgstr "在本頁列出最新的快取頁面。" + +#: wp-cache.php:898 +msgid "Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!" +msgstr "粗略檔案鎖定。你大概不會用到這個功能,但如果你的伺服器效能較差,開啟後可能會有所幫助。警告!可能在少數情況下鎖死你的伺服器!" + +#: wp-cache.php:900 +msgid "Late init. Display cached files after WordPress has loaded. Most useful in legacy mode." +msgstr "延遲初始化,在 WordPress 載入之後再顯示快取。通常使用在傳統模式。" + +#: wp-cache.php:902 +msgid "Use object cache to store cached files." +msgstr "使用 object 快取來儲存快取檔案。" + +#: wp-cache.php:902 +msgid "(Experimental)" +msgstr "(實驗選項)" + +#: wp-cache.php:904 +msgid "DO NOT CACHE PAGE secret key: %s" +msgstr "存取非快取頁面 密鑰: %s" + +#: wp-cache.php:910 +msgid "Note:" +msgstr "備註:" + +#: wp-cache.php:912 +msgid "Uninstall this plugin on the plugins page. It will automatically clean up after itself. If manual intervention is required then simple instructions are provided." +msgstr "請在外掛頁面反安裝此外掛。它將會在反安裝後將設定清除。如需手動介入,亦會提供簡單的指示。" + +#: wp-cache.php:913 +msgid "If uninstalling this plugin, make sure the directory %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)" +msgstr "如果移除這個外掛,請確認目錄 %s 為伺服器可以寫入,advanced-cache.phpcache-config.php 檔案會自動刪除。(確認這些檔案是可寫入的,也是個好主意!)" + +#: wp-cache.php:914 +msgid "Please see the readme.txt for instructions on uninstalling this script. Look for the heading, \"How to uninstall WP Super Cache\"." +msgstr "反安裝資訊請參見 readme.txt,尋找 \"How to uninstall WP Super Cache\" 標題。" + +#: wp-cache.php:915 +msgid "Need help? Check the Super Cache readme file. It includes installation documentation, a FAQ and Troubleshooting tips. The support forum is also available. Your question may already have been answered." +msgstr "需要幫助? 看看Super Cache 讀我檔案。 它包含了安裝資訊,常見問題及錯誤排除小技巧。另外在支援論壇上,你的問題可能也已經有人回答過了。" + +#: wp-cache.php:918 +#: wp-cache.php:965 +msgid "Update Status" +msgstr "更新狀態" + +#: wp-cache.php:925 +msgid "Accepted Filenames & Rejected URIs" +msgstr "接受的檔案名稱和拒絕的 URI" + +#: wp-cache.php:950 +msgid "Caching On" +msgstr "開啟快取" + +#: wp-cache.php:951 +msgid "Caching Off" +msgstr "關閉快取" + +#: wp-cache.php:952 +msgid "Note: enables PHP caching, cache rebuild, and mobile support" +msgstr "說明:啟用 PHP 快取,重建快取,以及行動裝置支援" + +#: wp-cache.php:962 +msgid "Notice: PHP caching enabled but Supercache mod_rewrite rules detected. Cached files will be served using those rules. If your site is working ok please ignore this message or you can edit the .htaccess file in the root of your install and remove the SuperCache rules." +msgstr "注意:PHP 快取已被啟用,但偵測到 Supercache mod_rewrite 規則。快取檔案會用這些規則來服務。如果你的網站動作正常,你可以忽略這個訊息,否則請編輯站台安裝根目錄下的 .htaccess 檔以移除 SuperCache 規則。" + +#: wp-cache.php:967 +msgid "Cache Tester" +msgstr "快取測試" + +#: wp-cache.php:968 +msgid "Test your cached website by clicking the test button below." +msgstr "請按下面的測試按鈕以測試你的網站快取。" + +#: wp-cache.php:974 +msgid "Fetching %s to prime cache: " +msgstr "抓取 %s 至主要快取:" + +#: wp-cache.php:976 +#: wp-cache.php:985 +#: wp-cache.php:997 +msgid "OK" +msgstr "完成" + +#: wp-cache.php:979 +msgid "Fetching first copy of %s: " +msgstr "抓取第一份%s:" + +#: wp-cache.php:988 +#: wp-cache.php:999 +msgid "FAILED" +msgstr "失敗" + +#: wp-cache.php:991 +msgid "Fetching second copy of %s: " +msgstr "抓取第二份%s:" + +#: wp-cache.php:1003 +msgid "One or more page requests failed:" +msgstr "一個或以上的頁面要求失敗:" + +#: wp-cache.php:1022 +#: wp-cache.php:1023 +msgid "Page %d: %d (%s)" +msgstr "頁面 %d: %d (%s)" + +#: wp-cache.php:1029 +msgid "Page 1: %s" +msgstr "頁面1: %s" + +#: wp-cache.php:1030 +msgid "Page 2: %s" +msgstr "頁面2: %s" + +#: wp-cache.php:1031 +msgid "The timestamps on both pages match!" +msgstr "頁面時間標籤相符!" + +#: wp-cache.php:1033 +msgid "The pages do not match! Timestamps differ or were not found!" +msgstr "無頁面時間標籤或標籤不相符!" + +#: wp-cache.php:1034 +msgid "Things you can do:" +msgstr "你可以做的事:" + +#: wp-cache.php:1035 +msgid "Load your homepage in a logged out browser, check the timestamp at the end of the html source. Load the page again and compare the timestamp. Caching is working if the timestamps match." +msgstr "在已登出的瀏覽器載入你的首頁,檢查html結尾的時間標籤,並再次載入頁面並比較時間標籤。快取如果有效時間標籤會是一致的。" + +#: wp-cache.php:1036 +msgid "Enable logging on the Debug page here. That should help you track down the problem." +msgstr "在本除錯頁面開啟記錄功能,應該可以幫助你找出問題所在。" + +#: wp-cache.php:1037 +msgid "You should check Page 1 and Page 2 above for errors. Your local server configuration may not allow your website to access itself." +msgstr "檢查上面第一頁及第二頁的錯誤。你的本機伺服器設定可能不允許你的網站存取自己本身。" + +#: wp-cache.php:1045 +msgid "Send non-secure (non https) request for homepage" +msgstr "以非加密 (非 https) 傳輸請求首頁" + +#: wp-cache.php:1046 +msgid "Test Cache" +msgstr "測試快取" + +#: wp-cache.php:1050 +msgid "Delete Cached Pages" +msgstr "刪除快取頁面" + +#: wp-cache.php:1051 +msgid "Cached pages are stored on your server as html and PHP files. If you need to delete them use the button below." +msgstr "快取頁面以 html 和 PHP 檔案的形式儲存在你的伺服器上。如果你需要刪除它們,請按下面的按鈕。" + +#: wp-cache.php:1054 +#: wp-cache.php:2316 +#: wp-cache.php:2335 +#: wp-cache.php:2506 +#: wp-cache.php:3030 +msgid "Delete Cache" +msgstr "刪除快取" + +#: wp-cache.php:1061 +#: wp-cache.php:2322 +msgid "Delete Cache On All Blogs" +msgstr "刪除所有部落格的快取頁面" + +#: wp-cache.php:1066 +msgid "Recommended Links and Plugins" +msgstr "建議連結及外掛" + +#: wp-cache.php:1067 +msgid "Caching is only one part of making a website faster. Here are some other plugins that will help:" +msgstr "快取只是讓網站變快的方法之一。這邊是一些其它有幫助的外掛:" + +#: wp-cache.php:1068 +msgid "WPSCMin, a Supercache plugin that minifies cached pages by removing whitespaces and extra characters " +msgstr "WPSCMin,一個 Supercache 的外掛,藉由移除多餘的空白和無用的字元將頁面最小化。" + +#: wp-cache.php:1069 +msgid "Yahoo! Yslow is an extension for the Firefox add-on Firebug. It analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. Also try the performance tools online at GTMetrix." +msgstr "Yahoo! Yslow 是 Firefox 附加元件 Firebug 的一個延伸套件。它可以分析你的網頁,並根據一些高效率網頁規則,建議你增加效能的方式。 你也可以試試一個線上效能分析工具 GTMetrix。" + +#: wp-cache.php:1070 +msgid "Use Google Libraries allows you to load some commonly used Javascript libraries from Google webservers. Ironically it may reduce your Yslow score." +msgstr "Use Google Libraries可以讓你從 Google 的伺服器上載入一些常用的 Javascript 函式庫。很諷刺的是它會降低你的 Yslow 分數。" + +#: wp-cache.php:1072 +msgid "Advanced users only: Speed up your site with Caching and cache-control explains how to make your site more cacheable with .htaccess rules." +msgstr "進階使用者專用: 使用快取及快取控制加速你的網站,解釋怎麼讓你的網站更適用 .htaccess 規則來進行快取。" + +#: wp-cache.php:1073 +msgid "Advanced users only: Install an object cache. Choose from Memcached, XCache, eAcccelerator and others." +msgstr "進階使用者專用: 安裝物件快取。 你可以從 MemcachedXCacheeAcccelerator 或其它的加速器中選擇一個。" + +#: wp-cache.php:1074 +msgid "Cron View is a useful plugin to use when trying to debug garbage collection and preload problems." +msgstr "Cron View 外掛,在你想要針對垃圾回收及預先載入問題除錯時相當有用。" + +#: wp-cache.php:1085 +msgid "Make WordPress Faster" +msgstr "讓 WordPress 更快速" + +#: wp-cache.php:1086 +msgid "%1$s is maintained and developed by %2$s with contributions from many others." +msgstr "%1$s由%2$s開發及維護,並得到許多人的幫助貢獻。" + +#: wp-cache.php:1087 +msgid "He blogs at %1$s and posts photos at %2$s." +msgstr "我的部落格在 %1$s,相簿在 %2$s。繁體中文翻譯問題請洽priv" + +#: wp-cache.php:1088 +msgid "Please say hi to him on %s too!" +msgstr "在%s上向我問好!" + +#: wp-cache.php:1089 +msgid "Need Help?" +msgstr "需要幫助?" + +#: wp-cache.php:1091 +msgid "Use the debug system in the Debug tab above. It will tell you what the plugin is doing." +msgstr "請使用上方除錯分頁的除錯系統,它會告訴你這個外掛的功能。" + +#: wp-cache.php:1092 +msgid "Installation Help" +msgstr "安裝指南" + +#: wp-cache.php:1093 +msgid "Frequently Asked Questions" +msgstr "常見問題" + +#: wp-cache.php:1094 +msgid "Support Forum" +msgstr "支援論壇" + +#: wp-cache.php:1096 +msgid "Rate This Plugin!" +msgstr "為這個外掛評分!" + +#: wp-cache.php:1097 +msgid "Please rate this plugin and tell me if it works for you or not. It really helps development." +msgstr "請為這個外掛評分,並告訴我它是否運作正常。這對開發非常有幫助。" + +#: wp-cache.php:1106 +msgid "Cached pages since %1$s : %2$s" +msgstr "快取頁面自 %1$s :%2$s" + +#: wp-cache.php:1107 +msgid "Newest Cached Pages:" +msgstr "最新的快取頁面:" + +#: wp-cache.php:1111 +msgid "Cached %s seconds ago" +msgstr "於 %s 秒前快取" + +#: wp-cache.php:1114 +msgid "(may not always be accurate on busy sites)" +msgstr "(在忙碌的網站上未必準確)" + +#: wp-cache.php:1133 +msgid "Cache plugins are PHP scripts that live in a plugins folder inside the wp-super-cache folder. They are loaded when Supercache loads, much sooner than regular WordPress plugins." +msgstr "快取外掛是 wp-super-cache 裡 plugin 資料夾中的一些 PHP 程式。它們在 Supercache 載入的時候就會被載入,比一般的 WordPress plugin 要早得多。" + +#: wp-cache.php:1134 +msgid "This is strictly an advanced feature only and knowledge of both PHP and WordPress actions is required to create them." +msgstr "這是一個非常進階的功能,只有對 PHP 和 Wordpress 動作都非常了解的人才能撰寫。" + +#: wp-cache.php:1135 +msgid "Warning! Due to the way WordPress upgrades plugins the plugins you upload to wp-super-cache/plugins/ will be deleted when you upgrade WP Super Cache. You can avoid this by loading the plugins from elsewhere. Set $wp_cache_plugins_dir to the new location in wp-config.php and WP Super Cache will look there instead.
      More info available in the developer documentation." +msgstr "警告! 肇因於 WordPress 升級外掛的方式,上傳至 wp-super-cache/plugins 的外掛在升級 WP Super Cache 將會被刪除。你可以把外掛放到別的地方以避免此一問題。在 wp-config.php 中設定 $wp_cache_plugins_dir 至新的位置,WP Super Cache 將會改用此一新位置。
      開發者文件中有更多的資訊。" + +#: wp-cache.php:1145 +msgid "Available Plugins" +msgstr "可使用的外掛" + +#: wp-cache.php:1162 +msgid "Easy" +msgstr "簡易模式" + +#: wp-cache.php:1162 +msgid "CDN" +msgstr "CDN" + +#: wp-cache.php:1162 +msgid "Contents" +msgstr "內容" + +#: wp-cache.php:1162 +msgid "Preload" +msgstr "預先載入" + +#: wp-cache.php:1162 +msgid "Plugins" +msgstr "外掛" + +#: wp-cache.php:1162 +msgid "Debug" +msgstr "除錯設定" + +#: wp-cache.php:1197 +msgid "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on the main site of this network." +msgstr "注意:除非在這個網路的主站上執行,WP Super Cache mod_rewrite 規則檢查會被關閉。s" + +#: wp-cache.php:1206 +msgid "Mod Rewrite Rules" +msgstr "Mod Rewrite 規則" + +#: wp-cache.php:1212 +msgid "WordPress MU Detected" +msgstr "偵測到 WordPress MU" + +#: wp-cache.php:1212 +msgid "Unfortunately the rewrite rules cannot be updated automatically when running WordPress MU. Please open your .htaccess and add the following mod_rewrite rules above any other rules in that file." +msgstr "抱歉,當執行 WordPress MU 時重寫規則無法自動更新。請開啟你的 .htaccess,並在上述檔案中任何位置加入下方的 mod_rewrite 規則。" + +#: wp-cache.php:1214 +msgid "Mod Rewrite rules cannot be updated!" +msgstr "Mod Rewrite 規則無法更新!" + +#: wp-cache.php:1215 +msgid "You must have BEGIN and END markers in %s.htaccess for the auto update to work. They look like this and surround the main WordPress mod_rewrite rules:" +msgstr "要讓它自動工作,你必須在 %s.htaccess 上有 BEGINEND 標記,它們看起來像這樣,圍繞 WordPress 的主要 mod_rewrite 規則:" + +#: wp-cache.php:1217 +msgid "Refresh this page when you have updated your .htaccess file." +msgstr "當你已更新你的 .htaccess 檔案後重新整理此頁。" + +#: wp-cache.php:1221 +msgid "Thank you for upgrading." +msgstr "感謝升級。" + +#: wp-cache.php:1221 +msgid "The mod_rewrite rules changed since you last installed this plugin. Unfortunately you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them." +msgstr "從你上次安裝此外掛,mod_rewrite 規則已經變更。在新的 supercache 規則更新前,你必須先刪除舊的 supercache 規則。在你修改你的 .htaccess 檔案後重新整理此頁。如果你希望手動更新,更改以下幾行:%1$s 使它看起來像這樣:%2$s ,唯一改變的地方是 \"HTTP_COOKIE\" 變成 \"HTTP:Cookie\" 以及 \"wordpressuser\" 變成 \"wordpress\"。這是 WordPress 2.5 的改變,但如果你敢使用,它與舊版本相容。" + +#: wp-cache.php:1225 +msgid "Trailing slash check required." +msgstr "尾端斜線的檢查是必須的。" + +#: wp-cache.php:1225 +msgid "It looks like your blog has URLs that end with a \"/\". Unfortunately since you installed this plugin a duplicate content bug has been found where URLs not ending in a \"/\" end serve the same content as those with the \"/\" and do not redirect to the proper URL. To fix, you must edit your .htaccess file and add these two rules to the two groups of Super Cache rules:" +msgstr "看起來你的部落格有以\"/\"結束的 URL。不幸地在你安裝這個外掛後,在URL不是以\"/\"結束的頁面,發現了一個重複內容的 bug,也就是相同的內容卻不是被指向正確的 URL。你必須修改你的 .htaccess 檔案以修復這個問題,在兩個 Super Cache 規則區段內新增下面兩個規則:" + +#: wp-cache.php:1227 +msgid "You can see where the rules go and examine the complete rules by clicking the \"View mod_rewrite rules\" link below." +msgstr "你可以看到規則去向,透過點選下方的「查看 mod_rewrite 規則」連結來看到完整的規則" + +#: wp-cache.php:1241 +msgid "Mod Rewrite rules updated!" +msgstr "Mod Rewrite 規則已更新!" + +#: wp-cache.php:1242 +msgid "%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:" +msgstr "%s.htaccess 已更新必要的 mod_rewrite 規則。請確保它們是正確的。它們應該像這樣:" + +#: wp-cache.php:1244 +msgid "Mod Rewrite rules must be updated!" +msgstr "Mod Rewrite 規則必須更新!" + +#: wp-cache.php:1245 +msgid "Your %s.htaccess is not writable by the webserver and must be updated with the necessary mod_rewrite rules. The new rules go above the regular WordPress rules as shown in the code below:" +msgstr "你的 %s.htaccess 無法由伺服器寫入,必須更新 mod_rewrite 規則。新的規則必須在一般的 WordPress 規則之上,如下面的原始碼所示:" + +#: wp-cache.php:1250 +msgid "WP Super Cache mod rewrite rules were detected in your %s.htaccess file.
      Click the following link to see the lines added to that file. If you have upgraded the plugin make sure these rules match." +msgstr "在你的 %s.htaccess 檔案中已經檢測到 WP Super Cache 重寫規則。
      點選以下連結,查看新增到該檔案的內容。如果你已經升級外掛,請確保與這些規則相同。" + +#: wp-cache.php:1253 +msgid "A difference between the rules in your .htaccess file and the plugin rewrite rules has been found. This could be simple whitespace differences but you should compare the rules in the file with those below as soon as possible. Click the ’Update Mod_Rewrite Rules’ button to update the rules." +msgstr "發現 .htaccess 的 rewrite 規則和外掛 rewrite 規則的不一致。有可能只是單純空白字元的差別,但是你應該立即比較以下的規則。 點擊「更新 Mod_Rewrite 規則」按鈕以更新規則。" + +#: wp-cache.php:1255 +msgid "View Mod_Rewrite Rules" +msgstr "查看 Mod_Rewrite 規則" + +#: wp-cache.php:1261 +#: wp-cache.php:2622 +msgid "Rules must be added to %s too:" +msgstr "也必須新增到 %s 的規則:" + +#: wp-cache.php:1268 +msgid "Gzip encoding rules in %s.htaccess created." +msgstr "%s.htaccess 內 gzip 規則建立。" + +#: wp-cache.php:1275 +msgid "Fix Configuration" +msgstr "修復設定" + +#: wp-cache.php:1278 +msgid "Restore Default Configuration" +msgstr "還原到預設選項" + +#: wp-cache.php:1286 +msgid "Comment moderation is enabled. Your comment may take some time to appear." +msgstr "迴響審核已啟用。您的迴響可能需要一些時間才會顯示。" + +#: wp-cache.php:1311 +msgid "Lock Down:" +msgstr "鎖定:" + +#: wp-cache.php:1312 +msgid "Prepare your server for an expected spike in traffic by enabling the lock down. When this is enabled, new comments on a post will not refresh the cached static files." +msgstr "如果你預測會有流量高峰到來時,可以啟用鎖定功能。當這個功能啟用時,在文章裡發佈新迴響將不會更新靜態快取檔案。" + +#: wp-cache.php:1313 +msgid "Developers: Make your plugin lock down compatible by checking the \"WPLOCKDOWN\" constant. The following code will make sure your plugin respects the WPLOCKDOWN setting." +msgstr "開發者:透過檢查 \"WPLOCKDOWN\",讓你的外掛與鎖定功能相容。下面的原始碼將確保你的外掛遵守 WPLOCKDOWN 設定。" + +#: wp-cache.php:1315 +msgid "Sorry. My blog is locked down. Updates will appear shortly" +msgstr "抱歉。我的部落格已經鎖定。將會在短時間後更新。" + +#: wp-cache.php:1319 +msgid "WordPress is locked down. Super Cache static files will not be deleted when new comments are made." +msgstr "WordPress 已鎖定。新的迴響產生時將不會刪除 Super Cache 靜態快取檔案。" + +#: wp-cache.php:1321 +msgid "WordPress is not locked down. New comments will refresh Super Cache static files as normal." +msgstr "WordPress 未鎖定。新的迴響產生時將會正常更新 Super Cache 靜態快取檔案。" + +#: wp-cache.php:1327 +msgid "Lock Down" +msgstr "鎖定" + +#: wp-cache.php:1335 +msgid "Directly Cached Files" +msgstr "直接快取檔案" + +#: wp-cache.php:1393 +msgid "%s removed!" +msgstr "%s 已移除!" + +#: wp-cache.php:1401 +msgid "You must make %s writable to enable this feature. As this is a security risk please make it readonly after your page is generated." +msgstr "啟用這項功能前必須確認 %s 是可寫入狀態。由於這牽涉到一個安全風險,請在你的網頁產生後把它設為唯讀。" + +#: wp-cache.php:1406 +msgid "%s is writable. Please make it readonly after your page is generated as this is a security risk." +msgstr "%s 可寫入。由於這牽涉到一個安全風險,請在你的網頁產生後把它設為唯讀。" + +#: wp-cache.php:1421 +msgid "Existing direct page" +msgstr "已存在的直接頁面" + +#: wp-cache.php:1421 +msgid "Delete cached file" +msgstr "刪除快取檔案" + +#: wp-cache.php:1426 +msgid "Add direct page:" +msgstr "新增直接頁面:" + +#: wp-cache.php:1428 +msgid "Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page." +msgstr "直接快取檔案是從你的部落格 %s 產生直接建立的檔案。這項功能只在你預測將會有從 Digg 或 Slashdot 大量流量進入某篇文章或頁面時才有用。" + +#: wp-cache.php:1430 +msgid "For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page." +msgstr "舉例來說:快取 %1$sabout/, 你應該輸入 %1$sabout/ 或 /about/ 。快取檔案將在下一個匿名使用者訪問該頁面時產生。" + +#: wp-cache.php:1431 +msgid "Make the textbox blank to remove it from the list of direct pages and delete the cached file." +msgstr "將輸入框清空,就能將它從直接頁面清單中移除並刪除快取檔案。" + +#: wp-cache.php:1436 +msgid "Update Direct Pages" +msgstr "更新直接頁面" + +#: wp-cache.php:1464 +msgctxt "timezone date format" +msgid "Y-m-d G:i:s" +msgstr "Y-m-d G:i:s" + +#: wp-cache.php:1523 +msgid "Expiry Time & Garbage Collection" +msgstr "過期時間與垃圾回收" + +#: wp-cache.php:1525 +msgid "UTC time is %s" +msgstr "UTC 時間是 %s" + +#: wp-cache.php:1528 +msgid "Local time is %1$s" +msgstr "本地時間是 %1$s" + +#: wp-cache.php:1532 +msgid "Next scheduled garbage collection will be at %s UTC" +msgstr "下次垃圾回收排程時間 %s UTC" + +#: wp-cache.php:1536 +msgid "Warning! PRELOAD MODE activated. Supercache files will not be deleted regardless of age." +msgstr "警告 預載模式 已被啟用。Supercache檔案將不會由於過期而被刪除。" + +#: wp-cache.php:1553 +msgid "Cache Timeout" +msgstr "快取逾時" + +#: wp-cache.php:1554 +#: wp-cache.php:1557 +msgid "seconds" +msgstr "秒" + +#: wp-cache.php:1555 +msgid "How long should cached pages remain fresh? Set to 0 to disable garbage collection. A good starting point is 3600 seconds." +msgstr "設定快取的有效期限。設定 0 以關閉垃圾回收功能。可以從 3600 秒先開始嘗試。" + +#: wp-cache.php:1556 +msgid "Scheduler" +msgstr "排程器" + +#: wp-cache.php:1556 +msgid "Timer:" +msgstr "計時:" + +#: wp-cache.php:1557 +msgid "Check for stale cached files every interval seconds." +msgstr "每隔幾秒檢查失效的快取檔案。" + +#: wp-cache.php:1558 +msgid "Clock:" +msgstr "時刻:" + +#: wp-cache.php:1559 +msgid "HH:MM" +msgstr "HH:MM (時:分)" + +#: wp-cache.php:1559 +msgid "Check for stale cached files at this time (UTC) or starting at this time every interval below." +msgstr "在下列時間 (UTC) 檢查失效快取,或從此時間開始每段間隔檢查。" + +#: wp-cache.php:1561 +msgid "Interval:" +msgstr "間隔:" + +#: wp-cache.php:1567 +msgid "Notification Emails" +msgstr "通知郵件" + +#: wp-cache.php:1568 +msgid "Email me when the garbage collection runs." +msgstr "在垃圾回收執行時寄 email 給我。" + +#: wp-cache.php:1570 +msgid "Garbage Collection" +msgstr "垃圾回收" + +#: wp-cache.php:1571 +msgid "Garbage collection is the simple act of throwing out your garbage. For this plugin that would be old or stale cached files that may be out of date. New cached files are described as fresh." +msgstr "垃圾回收就是將你的垃圾丟掉的簡單動作。以此外掛來說,垃圾就是指舊的或失效 (stale) 的檔案。新的快取檔案則稱為有效 (fresh) 快取。" + +#: wp-cache.php:1572 +msgid "Cached files are fresh for a limited length of time. You can set that time in the Cache Timeout text box on this page." +msgstr "快取檔案有一定限度的有效期限。你可以在本頁的快取逾時文字方塊設定這個期限。" + +#: wp-cache.php:1573 +msgid "Stale cached files are not removed as soon as they become stale. They have to be removed by the garbage collecter. That is why you have to tell the plugin when the garbage collector should run." +msgstr "失效的快取檔案並不會在失效的時候馬上就被移除。他們必須被垃圾回收機制移除。這就是為什麼你必須告訴外掛何時執行垃圾回收。" + +#: wp-cache.php:1574 +msgid "Use the Timer or Clock schedulers to define when the garbage collector should run." +msgstr "使用計時時刻來決定何時執行垃圾回收。" + +#: wp-cache.php:1575 +msgid "The Timer scheduler tells the plugin to run the garbage collector at regular intervals. When one garbage collection is done, the next run is scheduled." +msgstr "計時排程器以一定的時間間隔執行垃圾回收。當一次垃圾回收完成後,就會再度進行下一次的排程。" + +#: wp-cache.php:1576 +msgid "Or, the Clock scheduler allows the garbage collection to run at specific times. If set to run hourly or twicedaily the garbage collector will be first scheduled for the time you enter here. It will then run again at the indicated interval. If set to run daily it will run once a day at the time specified." +msgstr "而時刻排程器,可以讓外掛在指定的時刻執行垃圾回收。如果設定為每小時 (hourly) 或兩天一次 (twicedaily) 執行,垃圾回收會在你輸入的時刻第一次被執行,接下來會在設定的間隔時間後再執次行。如果設定為每日 (daily) 執行,那他會在每天你設定的時刻執行一次。" + +#: wp-cache.php:1578 +msgid "There are no best garbage collection settings but here are a few scenarios. Garbage collection is separate to other actions that clear our cached files like leaving a comment or publishing a post." +msgstr "並沒有最佳的垃圾回收設定,不過這裡列出幾個情境。垃圾回收和其它會造成清除快取的情形,例如留言和發佈文章,是有區別的。" + +#: wp-cache.php:1580 +msgid "Sites that want to serve lots of newly generated data should set the Cache Timeout to 60 and use the Timer scheduler set to 90 seconds." +msgstr "希望提供大量動態資料的站台,應該將快取逾時設定為 60 秒,並使用 90 秒的計時排程。" + +#: wp-cache.php:1581 +msgid "Sites with widgets and rss feeds in their sidebar should probably use a timeout of 3600 seconds and set the timer to 600 seconds. Stale files will be caught within 10 minutes of going stale." +msgstr "在邊欄有小工具及 rss 饋料的站台,也許應該設定 3600 的逾時,以及 600 秒的計時排程。失效的檔案會在失效十分鐘後被清除。" + +#: wp-cache.php:1582 +msgid "Sites with lots of static content, no widgets or rss feeds in their sidebar can use a timeout of 86400 seconds or even more and set the timer to something equally long." +msgstr "有大量靜態內容,邊欄沒有小工具及 rss 饋料的站台,可以使用 86400 或更長的逾時,並將計時排程設定為等長的時間。" + +#: wp-cache.php:1583 +msgid "Sites where an external data source updates at a particular time every day should set the timeout to 86400 seconds and use the Clock scheduler set appropriately." +msgstr "在每天固定時刻使用外部資料來源更新的站台,則應該將逾時設為86400秒,並將時刻排程設定在適當的時間。" + +#: wp-cache.php:1585 +msgid "Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site you should set the expiry time to 600 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day. If you are using legacy caching aim to have less than 500 cached files if possible. You can have many times more cached files when using mod_rewrite or PHP caching." +msgstr "檢查和刪除過期檔案代價高昂,但把這些檔案留在那裡也一樣。在非常忙碌的網站,你應該將過期時間設定為 600 秒。嘗試使用不同的數值,並注意這些頁面一天裡在不同時段產生多少過期檔案,如果使用傳統快取,可能的話盡量不要讓快取檔案數多於 500 個。若使用 mod_rewrite 或 PHP 快取,快取數量可以增加數倍。" + +#: wp-cache.php:1586 +msgid "Set the expiry time to 0 seconds to disable garbage collection." +msgstr "把過期時間設定為 0 以關閉垃圾回收功能" + +#: wp-cache.php:1587 +msgid "Change Expiration" +msgstr "變更過期時間" + +#: wp-cache.php:1631 +msgid "Rejected User Agents" +msgstr "被拒絕的使用者代理(User Agents)" + +#: wp-cache.php:1632 +msgid "Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists." +msgstr "HTTP User Agent;防止快取機器人、蜘蛛或抓取器對於 WP-Cache 的請求。請注意,如果快取檔案已經存在,仍然會發送給這些代理。" + +#: wp-cache.php:1639 +msgid "Save UA Strings" +msgstr "儲存 UA 字串" + +#: wp-cache.php:1662 +msgid "Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type." +msgstr "不快取以下頁面類型。查看條件標籤文件中對每個類型的完整探討。" + +#: wp-cache.php:1665 +msgid "Single Posts" +msgstr "單篇文章" + +#: wp-cache.php:1666 +msgid "Pages" +msgstr "網誌分頁" + +#: wp-cache.php:1667 +msgid "Front Page" +msgstr "首頁" + +#: wp-cache.php:1668 +msgid "Home" +msgstr "主頁" + +#: wp-cache.php:1669 +msgid "Archives" +msgstr "存檔" + +#: wp-cache.php:1670 +msgid "Tags" +msgstr "標籤" + +#: wp-cache.php:1671 +msgid "Category" +msgstr "分類" + +#: wp-cache.php:1672 +msgid "Feeds" +msgstr "訂閱" + +#: wp-cache.php:1673 +msgid "Search Pages" +msgstr "搜尋頁面" + +#: wp-cache.php:1674 +msgid "Author Pages" +msgstr "作者頁面" + +#: wp-cache.php:1676 +#: wp-cache.php:1788 +msgid "Save" +msgstr "儲存" + +#: wp-cache.php:1693 +msgid "Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page." +msgstr "在下方輸入框內新增字串(不是檔案名稱),控制不要被快取的頁面。舉例來說,如果你的 URL 中包含年份,但你不想快取去年的文章,那麼就指定年份,例如 ’/2004/’ 。WP-Cache 將會搜尋這個字串是否包含在URI之中,如果是的話則不會快取這個頁面。" + +#: wp-cache.php:1699 +msgid "Save Strings" +msgstr "儲存字串" + +#: wp-cache.php:1715 +msgid "Add here those filenames that can be cached, even if they match one of the rejected substring specified above." +msgstr "這是可以被快取的檔案名,即使它們與上方設定的拒絕字串相符時也仍將被快取。" + +#: wp-cache.php:1721 +msgid "Save Files" +msgstr "儲存檔案" + +#: wp-cache.php:1762 +msgid "Currently logging to: %s" +msgstr "正在記錄到:%s" + +#: wp-cache.php:1765 +msgid "Fix problems with the plugin by debugging it here. It can log them to a file in your cache directory." +msgstr "在這裡使用外掛除錯模式解決問題。它可以在你的快取目錄內產生紀錄檔。" + +#: wp-cache.php:1769 +msgid "Debugging" +msgstr "除錯" + +#: wp-cache.php:1770 +msgid "IP Address" +msgstr "IP位址" + +#: wp-cache.php:1770 +msgid "(only log requests from this IP address. Your IP is %s)" +msgstr "(僅記錄來自此IP位址的請求。你的 IP 是 %s)" + +#: wp-cache.php:1771 +msgid "Cache Status Messages" +msgstr "快取狀態訊息" + +#: wp-cache.php:1772 +msgid "Display comments at the end of every page like this:" +msgstr "顯在每頁的頁尾顯示像這樣的評論:" + +#: wp-cache.php:1778 +msgid "In very rare cases two problems may arise on some blogs:

      1. The front page may start downloading as a zip file.
      2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
      " +msgstr "在極少數的部落格可能會出現兩個問題:
      1. 在首頁可能會以一個 zip 檔案開始下載。
      2. 如果你的部落格使用一個靜態的首頁,或以 /%category%/%postname%/ 作為固定網址結架構的話,那麼錯誤的頁面有時候會被當成首頁被快取起來。
      " + +#: wp-cache.php:1779 +msgid "I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem." +msgstr "我有十足的把握肯定,它們不是 WP Super Cache 的錯誤。它只會發生在極少數的情況下,但如果你擔心的話,你可以每5分鐘進行一次簡單的檢查,以確保你的網站是正常的。如果有問題,你將會收到電子郵件。" + +#: wp-cache.php:1781 +msgid "Check front page every 5 minutes." +msgstr "每五分鐘檢查首頁" + +#: wp-cache.php:1782 +msgid "Front page text" +msgstr "首頁文字" + +#: wp-cache.php:1782 +msgid "Text to search for on your front page. If this text is missing the cache will be cleared. Leave blank to disable." +msgstr "在你的首頁裡要搜尋的文字。如果缺少這些文字時快取將被清除。保留空白停用這個功能。" + +#: wp-cache.php:1783 +msgid "Clear cache on error." +msgstr "清除快取時發生錯誤。" + +#: wp-cache.php:1784 +msgid "Email the blog admin when checks are made. (useful for testing)" +msgstr "當檢查時寄送電子郵件給網站管理員。(供測試用)" + +#: wp-cache.php:1798 +msgid "Error: GZIP compression is enabled, disable it if you want to enable wp-cache." +msgstr "錯誤:GZIP 壓縮已啟用,如果你想啟用 wp-cache,請停用它。" + +#: wp-cache.php:1845 +#: wp-cache.php:1986 +#: wp-cache.php:2022 +msgid "Warning" +msgstr "警告" + +#: wp-cache.php:1845 +msgid "GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression." +msgstr "在 WordPress 上 GZIP 壓縮已啟用,wp-cache 將被繞過,直到你停用 gzip 壓縮。" + +#: wp-cache.php:1907 +#: wp-cache.php:1912 +#: wp-cache.php:1945 +#: wp-cache.php:1950 +#: wp-cache.php:1956 +msgid "Error" +msgstr "錯誤" + +#: wp-cache.php:1907 +msgid "Your cache directory (%1$s) did not exist and couldn’t be created by the web server. Check %1$s permissions." +msgstr "你的快取目錄(%1$s)不存在,且無法從伺服器端建立。請檢查 %1$s 權限。" + +#: wp-cache.php:1912 +msgid "Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it." +msgstr "你的快取目錄(%1$s)或 %2$s 必須讓外掛可寫入才能正常運作。請重新檢查一次。" + +#: wp-cache.php:1945 +msgid "Your WP-Cache config file (%s) is out of date and not writable by the Web server.Please delete it and refresh this page." +msgstr "你的 WP-Cache 設定檔(%s)已經過期,且無法由伺服器端寫入,請刪除它並重新整理此頁面。" + +#: wp-cache.php:1950 +msgid "Configuration file missing and %1$s directory (%2$s) is not writable by the Web server.Check its permissions." +msgstr "設定檔遺失,%1$s 目錄(%2$s)也無法被伺服器寫入。請檢查權限。" + +#: wp-cache.php:1956 +msgid "Sample WP-Cache config file (%s) does not exist.Verify you installation." +msgstr "WP-Cache 設定檔範本(%s)不存在。請確認你的安裝。" + +#: wp-cache.php:1986 +msgid "Could not update %s! WPCACHEHOME must be set in config file." +msgstr "無法更新 %s! WPCACHEHOME 必須在設定檔中被設定。" + +#: wp-cache.php:2022 +msgid "%s/advanced-cache.php does not exist or cannot be updated." +msgstr "%s/advanced-cache.php 不存在或是無法更新。" + +#: wp-cache.php:2023 +msgid "1. If it already exists please delete the file first." +msgstr "1. 如果它已經存在,請先刪除。" + +#: wp-cache.php:2024 +msgid "2. Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)" +msgstr "2. 請使用你的FTP程式或伺服器軟體,以 chmod 指令使%1$s可寫入。(chmod 777 %1$s),並重新整理此頁面。這只是一個暫時的作法,你事後必須再把它變更為唯讀。(使用前面的指令,將權限從 777 變更為 755)" + +#: wp-cache.php:2025 +msgid "3. Refresh this page to update %s/advanced-cache.php" +msgstr "3. 重新整理此頁面以更新 %s/advanced-cache.php" + +#: wp-cache.php:2026 +msgid "If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:" +msgstr "如果無法運作,請確認 %s/advanced-cache.php 檔案不存在:" + +#: wp-cache.php:2027 +msgid "
    • 1. Open %1$s$wp_cache_file in a text editor.
    • 2. Change the text CACHEHOME to %2$s
    • 3. Save the file and copy it to %3$s and refresh this page.
    • " +msgstr "
    • 1. 以文字編輯器開啟 %1$s$wp_cache_file
    • 2. 將 CACHEHOME 變更為 %2$s
    • 3. 儲存檔案並複製為 %3$s,然後重新整理此頁面。
    • " + +#: wp-cache.php:2050 +msgid "

      WP_CACHE constant set to false

      The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

      define('WP_CACHE', true);

      " +msgstr "

      WP_CACHE 變數被設為 false

      WP_CACHE 變數被WordPress用來載入快取程式,可是它被設為 false(關閉)。請編輯你的 wp-config.php 檔並把以下的內容放在最後的 require_once 命令之前。

      define('WP_CACHE', true);

      " + +#: wp-cache.php:2052 +msgid "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it." +msgstr "錯誤:在你的 wp-config.php 檔案裡 WP_CACHE 是停用狀態,且無法修改。" + +#: wp-cache.php:2053 +msgid "Edit %s and add the following line:
      define('WP_CACHE', true);
      Otherwise, WP-Cache will not be executed by WordPress core. " +msgstr "編輯 %s 並加入以下原始碼:
      define('WP_CACHE', true);
      否則,WP-Cache 將無法被 WordPress 核心執行。" + +#: wp-cache.php:2057 +msgid "

      WP_CACHE constant added to wp-config.php

      If you continue to see this warning message please see point 5 of the Troubleshooting Guide. The WP_CACHE line must be moved up." +msgstr "

      WP_CACHE 不斷被新增到 wp-config.php

      如果你持續看到此警告訊息,請參閱 常見問答 第五點。WP_CACHE 原始碼必須往前移動。" + +#: wp-cache.php:2085 +msgid "Cache Contents" +msgstr "快取內容" + +#: wp-cache.php:2088 +msgid "Object cache in use. No cache listing available." +msgstr "正在使用 Object 快取。無法顯示快取清單。" + +#: wp-cache.php:2112 +msgid "Deleting supercache file: %s
      " +msgstr "刪除 supercache 檔案:%s
      " + +#: wp-cache.php:2129 +msgid "Deleting wp-cache file: %s
      " +msgstr "刪除 wp-cache 檔案:%s
      " + +#: wp-cache.php:2194 +msgid "Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page." +msgstr "快取統計不會自動產生,你必須點擊以下的連結,本頁的統計資料才會重新產生。" + +#: wp-cache.php:2195 +msgid "Regenerate cache stats" +msgstr "重新產生快取統計" + +#: wp-cache.php:2197 +msgid "Cache stats last generated: %s minutes ago." +msgstr "快取統計最後產生時間:%s分鐘以前。" + +#: wp-cache.php:2203 +msgid "WP-Cache" +msgstr "WP-Cache" + +#: wp-cache.php:2204 +#: wp-cache.php:2219 +msgid "%s Cached Pages" +msgstr "%s 個頁面已快取" + +#: wp-cache.php:2205 +#: wp-cache.php:2224 +msgid "%s Expired Pages" +msgstr "%s 個頁面已過期" + +#: wp-cache.php:2218 +msgid "WP-Super-Cache" +msgstr "WP-Super-Cache" + +#: wp-cache.php:2228 +msgid "Fresh WP-Cached Files" +msgstr "有效的 WP-Cached 檔案" + +#: wp-cache.php:2229 +#: wp-cache.php:2245 +#: wp-cache.php:2261 +#: wp-cache.php:2277 +msgid "URI" +msgstr "URI 網址" + +#: wp-cache.php:2229 +#: wp-cache.php:2245 +msgid "Key" +msgstr "關鍵字" + +#: wp-cache.php:2229 +#: wp-cache.php:2245 +#: wp-cache.php:2261 +#: wp-cache.php:2277 +msgid "Age" +msgstr "時間(秒)" + +#: wp-cache.php:2229 +#: wp-cache.php:2245 +#: wp-cache.php:2261 +#: wp-cache.php:2277 +msgid "Delete" +msgstr "刪除" + +#: wp-cache.php:2244 +msgid "Stale WP-Cached Files" +msgstr "失效的 WP-Cached 檔案" + +#: wp-cache.php:2260 +msgid "Fresh Super Cached Files" +msgstr "有效的 Super Cached 檔案" + +#: wp-cache.php:2276 +msgid "Stale Super Cached Files" +msgstr "失效的 Super Cached 檔案" + +#: wp-cache.php:2292 +msgid "Hide file list" +msgstr "隱藏檔案清單" + +#: wp-cache.php:2294 +msgid "Too many cached files, no listing possible." +msgstr "快取檔案過多,無法列出。" + +#: wp-cache.php:2296 +msgid "List all cached files" +msgstr "列出所有快取檔案" + +#: wp-cache.php:2299 +msgid "Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically." +msgstr "過期檔案是超過 %s 秒鐘的檔案。它們仍然會被外掛使用並會定期刪除。" + +#: wp-cache.php:2310 +msgid "Delete Expired" +msgstr "刪除過期檔案" + +#: wp-cache.php:2335 +msgid "Delete Super Cache cached files (opens in new window)" +msgstr "刪除 Super Cache 快取檔案(在新視窗打開)" + +#: wp-cache.php:2482 +msgid "%1$s is Stephen Fry proof thanks to caching by %2$s" +msgstr "%1$s 使用的快取程式為 %2$s" + +#: wp-cache.php:2515 +msgid "WP Super Cache must be configured. Go to the admin page to enable and configure the plugin." +msgstr "WP Super Cache 必須設定。請前往管理後台啟用和設定外掛。" + +#: wp-cache.php:2521 +msgid "Settings" +msgstr "設定" + +#: wp-cache.php:2531 +msgid "WP Super Cache is disabled. Please go to the plugin admin page to enable caching." +msgstr "WP Super Cache 停用。請前往 外掛管理員啟用快取。" + +#: wp-cache.php:2534 +msgid "Warning! WP Super Cache caching broken! The script advanced-cache.php could not load wp-cache-phase1.php.

      Please edit %1$s/advanced-cache.php and make sure the path to %2$swp-cache-phase1.php is correct." +msgstr "警告! WP Super Cache 快取毀損! advanced-cache.php 腳本無法載入 wp-cache-phase1.php。

      請編輯 %1$s/advanced-cache.php 並且確認指向 %2$swp-cache-phase1.php 的路徑是正確的。" + +#: wp-cache.php:2553 +msgid "[%s] Front page is gzipped! Please clear cache!" +msgstr "[%s] 首頁已使用 gzip 壓縮!請清除快取!" + +#: wp-cache.php:2553 +msgid "Please visit %s to clear the cache as the front page of your site is now downloading!" +msgstr "請前往 %s 清除快取,網站的首頁正在下載!" + +#: wp-cache.php:2556 +msgid "[%s] Front page is gzipped! Cache Cleared!" +msgstr "[%s] 首頁已使用 gzip 壓縮!快取已清除!" + +#: wp-cache.php:2556 +msgid "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared." +msgstr "你的部落格快取已被清除。因為你的部落格首頁正在下載,請前往 %s 確認快取已被清除。" + +#: wp-cache.php:2563 +msgid "[%s] Front page is not correct! Please clear cache!" +msgstr "[%s] 首頁不正確!請清除快取!" + +#: wp-cache.php:2563 +msgid "Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, \"%2$s\"!" +msgstr "請前往 %1$s 清除快取,部落格的首頁不正確,缺少文字 \"%2$s\"!" + +#: wp-cache.php:2566 +msgid "[%s] Front page is not correct! Cache Cleared!" +msgstr "[%s] 首頁不正確!快取已清除!" + +#: wp-cache.php:2566 +msgid "The cache on your blog has been cleared because the front page of your site is missing the text \"%2$s\". Please visit %1$s to verify the cache has been cleared." +msgstr "你的部落格已被清除快取,因為你的部落格首頁缺少文字 \"%2$s\"。請前往 %1$s 確認快取已被清除。" + +#: wp-cache.php:2571 +msgid "[%s] Front page check!" +msgstr "[%s] 首頁檢查!" + +#: wp-cache.php:2571 +msgid "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this." +msgstr "WP Super Cache 已檢查過你部落格的首頁。如果你想停用這項功能,請前往 %s 。" + +#: wp-cache.php:2614 +msgid "Cannot update .htaccess" +msgstr "無法更新 .htaccess" + +#: wp-cache.php:2614 +msgid "The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client." +msgstr "%s.htaccess 檔案無法被網頁伺服器更新。請使用 chmod 指令或透過 FTP 程式修正。" + +#: wp-cache.php:2614 +msgid "Refresh this page when the file permissions have been modified." +msgstr "在權限修改後請重新整理這個頁面。" + +#: wp-cache.php:2614 +msgid "Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):" +msgstr "或者,你可以手動編輯 %s.htaccess 檔案並加入以下原始碼(在任何 WordPress 規則前):" + +#: wp-cache.php:2618 +msgid "To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess" +msgstr "為了使用靜態的 HTML 檔案,你的伺服器上必須有正確的 mod_rewrite 規則,新增到一個名為 %s.htaccess 的檔案。" + +#: wp-cache.php:2619 +msgid "You can edit the file yourself add the following rules." +msgstr "你可以自行編輯並新增以下規則。" + +#: wp-cache.php:2620 +msgid " Make sure they appear before any existing WordPress rules. " +msgstr "確認它們出現在任何已存在的 WordPress 規則之前。" + +#: wp-cache.php:2628 +msgid "Update Mod_Rewrite Rules" +msgstr "更新 Mod_Rewrite 規則" + +#: wp-cache.php:2780 +msgid "[%1$s] Cache Preload Started" +msgstr "[%1$s] 快取預載已經開始" + +#: wp-cache.php:2810 +msgid "[%1$s] Refreshing %2$s taxonomy from %3$d to %4$d" +msgstr "[%1$s] 更新 %2$s 分類第%3$d 到 %4$d 篇文章" + +#: wp-cache.php:2856 +msgid "[%1$s] Refreshing posts from %2$d to %3$d" +msgstr "[%1$s] 更新第 %2$d 到第 %3$d 篇文章" + +#: wp-cache.php:2877 +msgid "[%1$s] Cache Preload Stopped" +msgstr "[%1$s] 快取預載已停止" + +#: wp-cache.php:2887 +msgid "[%1$s] %2$d posts refreshed" +msgstr "[%1$s]%2$d 篇文章已被更新" + +#: wp-cache.php:2887 +msgid "Refreshed the following posts:" +msgstr "已更新下列文章:" + +#: wp-cache.php:2897 +msgid "Scheduling next preload refresh in %d minutes." +msgstr "下次更新預載快取時間:%d分鐘後" + +#: wp-cache.php:2908 +msgid "[%s] Cache Preload Completed" +msgstr "[%s] 預載快取完成" + +#: wp-cache.php:2908 +msgid "Cleaning up old supercache files." +msgstr "清除舊的 supercache 檔案。" + +#: wp-cache.php:2951 +msgid "[%s] Preload may have stalled." +msgstr "[%s] 預先載入可能已經停止" + +#: wp-cache.php:2951 +msgid "" +"Preload has been restarted.\n" +"%s" +msgstr "" +"預先載入已經被重新啟動.\n" +"%s" + +#: wp-cache.php:2994 +msgid "Supercache Uninstall Problems" +msgstr "Supercache 反安裝問題" + +#: wp-cache.php:2994 +msgid "" +"Dear User,\n" +"\n" +"WP Super Cache was removed from your blog but the mod_rewrite rules\n" +"in your .htaccess were not.\n" +"\n" +"Please edit the following file and remove the code\n" +"between 'BEGIN WPSuperCache' and 'END WPSuperCache'. Please backup the file first!\n" +"\n" +"%s\n" +"\n" +"Regards,\n" +"WP Super Cache Plugin\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" +msgstr "" +"親愛的使用者,\n" +"\n" +"WP Super Cache 已從你的部落格被移除,但是 .htaccess 中的\n" +"mod_rewrite規則仍然存在。\n" +"\n" +"請編輯下列檔案並移除 'BEGIN WPSuperCache' 及 'END WPSupercache' 之間的原始碼。\n" +"請先備份這個檔案!\n" +"\n" +"%s\n" +"\n" +"WP Super Cache Plugin 敬上\n" +"http://wordpress.org/extend/plugins/wp-super-cache/" + +#: wp-cache.php:3031 +msgid "Delete cache of the current page" +msgstr "刪除目前頁面的快取" + +#~ msgid "" +#~ "WP Minify reduces the number of files served by your " +#~ "web server by joining Javascript and CSS files together. Alternatively " +#~ "you can use WPSCMin, a Supercache plugin that minifies " +#~ "cached pages. It does not however join JS/CSS files together." +#~ msgstr "" +#~ "WP Minify 合併Javascript及CSS檔案,以減少網頁伺服器需要" +#~ "服務的檔案數量。 或者你也可以使用 WPSCMin,一個減少快取" +#~ "面數量的 Supercache 外掛。(但它並不會合併JS/CSS檔案)" + +#~ msgid "Log level" +#~ msgstr "記錄等級" + +#~ msgid "(1 = less, 5 = more, may cause severe server load.)" +#~ msgstr "(1 = 低,5 = 更多,可能會導致嚴重的伺服器負載)" + +#~ msgid "" +#~ "Garbage Collection
      Last GC was %s " +#~ "minutes ago
      " +#~ msgstr "" +#~ "垃圾回收
      上次垃圾回收於 %s 分鐘前" +#~ "
      " + +#~ msgid "Next GC in %s minutes" +#~ msgstr "下次垃圾回收於 %s 分鐘後" + +#~ msgid "Current server time is: %s" +#~ msgstr "目前的伺服器時間為:%s" + +#~ msgid "" +#~ "(requires friendsadverts.php too) " +#~ msgstr "" +#~ "(必須有 friendsadverts.php)" + +#~ msgid "Mobile device support." +#~ msgstr "行動裝置支援。" + +#~ msgid "Expire time:" +#~ msgstr "過期時間:" + +#~ msgid "" +#~ "If the expiry time is more than 1800 seconds (half an hour), garbage " +#~ "collection will be done every 10 minutes, otherwise it will happen 10 " +#~ "seconds after the expiry time above." +#~ msgstr "" +#~ "如果過期時間大於1800秒(半個小時),垃圾回收會每10分鐘進行一次,否則就會在" +#~ "設定到期時間的10秒後進行清理。" + +#~ msgid "Tester & Contents" +#~ msgstr "測試及內容" + +#~ msgid "" +#~ "Notice: WP Super Cache mod_rewrite rule checks disabled unless running on " +#~ "on the main site of this network." +#~ msgstr "" +#~ "注意:除非在這個網路的主站上執行,WP Super Cache " +#~ "mod_rewrite規則檢查會被關閉。" + +#~ msgid "" +#~ "Logging to a file is easier but faces the problem that clearing the cache " +#~ "will clear the log file." +#~ msgstr "記錄到一個檔案更容易,但面臨的問題是清除快取將會清除記錄檔。" + +#~ msgid "Logging Type" +#~ msgstr "記錄種類" + +#~ msgid "Email" +#~ msgstr "電子郵件" + +#~ msgid "file" +#~ msgstr "檔案" + +#~ msgid "(support for multiple domains on multisite websites) " +#~ msgstr "(在多站台網站上,支援複數網域名稱)" diff --git a/wp-content/plugins/wp-super-cache/ossdl-cdn.php b/wp-content/plugins/wp-super-cache/ossdl-cdn.php new file mode 100644 index 0000000..fcbe858 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/ossdl-cdn.php @@ -0,0 +1,388 @@ + +

      +

      +

      ', + '', + '' + ); ?>

      +

      ', + '' + ); ?>

      ', + '', + '' + ); ?>

      ', + '', + '' + ); ?>

      '; // close wpsc-card + return; + } + ?> +

      +

      wp-content and wp-includes directories (except for PHP files) on your site with the URL you provide below. That way you can either copy all the static content to a dedicated host or mirror the files to a CDN by origin pull.', 'wp-super-cache' ); ?>

      +

      WARNING: Test some static urls e.g., %s to ensure your CDN service is fully working before saving changes.', 'wp-super-cache' ), '' . esc_html( $example_cdn_uri ) . '' ); ?>

      + + +

      WARNING: Your siteurl and homeurl are different. The plugin is using %s as the homepage URL of your site but if that is wrong please use the filter "ossdl_off_blog_url" to fix it.', 'wp-super-cache' ), '' . esc_html( $ossdl_off_blog_url ) . '' ); ?>

      + +

      +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + /> +
      +
      + / please.', 'wp-super-cache' ); ?> +
      +
      + / please.
      Example: %2$s.', 'wp-super-cache' ), esc_html( get_site_url() ), esc_html( $example_cdn_uri ) ); ?>
      +
      +
      + wp-content, wp-includes, which will be enforced if this field is left empty.', 'wp-super-cache' ); ?> +
      +
      + .php, .flv, .do, and always include .php (default).', 'wp-super-cache' ); ?> +
      +
      + CNAMES will be used in place of %1$s for rewriting (in addition to the off-site URL above). Use a comma as the delimiter. For pages with a large number of static files, this can improve browser performance. CNAMEs may also need to be configured on your CDN.
      Example: %2$s', 'wp-super-cache' ), esc_html( get_site_url() ), esc_html( $example_cnames ) ); ?>
      +
      + +

      +

      +

      + OSSDL CDN Off Linker' + ); + ?> +

      +
      + + array( 'href' => array() ) ); // Arguments for wp_kses to allow links. + +if ( isset( $wp_cache_front_page_checks ) == false ) { + $wp_cache_front_page_checks = true; +} +echo '
      '; +echo '
      '; +wp_nonce_field( 'wp-cache' ); +echo ''; +?> + + + + + + + + + + + + + + + + + + + + + +
      +
      + +
      +
      +
      +
      +
      + + + + here but are not officially supported.', 'wp-super-cache' ), + 'https://wordpress.org/documentation/article/nginx/#wp-super-cache-rules' + ), + array( + 'a' => array( + 'href' => array(), + ), + ) + ); + ?> + + +
      +
      +
      + +
      +
      +
      +

      +
      + + +
      + +
      +
      + + +
      + +
      +

      +
      + +
      +
      + ' . esc_html__( '304 support is disabled by default because some hosts have had problems with the headers used in the past.', 'wp-super-cache' ) . '
      '; ?> +
      + +
      +
      +
      + + + +
      + + +
      + +
      ' . __( 'Mobile Browsers', 'wp-super-cache' ) . '
      ' . esc_html( $wp_cache_mobile_browsers ) . "
      " . __( 'Mobile Prefixes', 'wp-super-cache' ) . "
      " . esc_html( $wp_cache_mobile_prefixes ) . "
      "; + } ?> +
      +
      + (" . __( "Recommended", "wp-super-cache" ) . ")"; ?>
      +
      +
      + +
      + +
      + DO NOT CACHE PAGE secret key: %s', 'wp-super-cache' ), trailingslashit( get_bloginfo( 'url' ) ) . "?donotcachepage={$cache_page_secret}", $cache_page_secret ); ?> +
      +
      +
      + + +

      +
        +
      1. +
      2. +
      3. +
      4. +
      5. + strlen( ABSPATH ) && ABSPATH == substr( $cache_path, 0, strlen( ABSPATH ) ) ) { + $msg = __( 'The plugin detected a bare directory index in your cache directory, which would let visitors see your cache files directly and might expose private posts.', 'wp-super-cache' ); + if ( ! $is_nginx && $super_cache_enabled && $wp_cache_mod_rewrite == 1 ) { + $msg .= ' ' . __( 'You are using expert mode to serve cache files so the plugin has added Options -Indexes to the .htaccess file in the cache directory to disable indexes. However, if that does not work, you should contact your system administrator or support and ask for them to be disabled, or use simple mode and move the cache outside of the web root.', 'wp-super-cache' ); + } else { + $msg .= ' ' . sprintf( __( 'index.html files have been added in key directories, but unless directory indexes are disabled, it is probably better to store the cache files outside of the web root of %s', 'wp-super-cache' ), ABSPATH ) . ''; + } + echo "
      6. $msg
      7. "; + } +?> + + +
      8. %s and update the mod_rewrite rules in the .htaccess file.', 'wp-super-cache' ), ABSPATH ); ?>
      9. + +
      +
      +
      +

      +
        +
      1. +
      2. %s is writeable by the webserver so the files advanced-cache.php and cache-config.php can be deleted automatically. (Making sure those files are writeable is probably a good idea!)', 'wp-super-cache' ), esc_attr( WP_CONTENT_DIR ) ); ?>
      3. +
      4. readme.txt for instructions on uninstalling this script. Look for the heading, "How to uninstall WP Super Cache".', 'wp-super-cache' ), plugins_url() ); ?>
      5. +
      6. + + the documentation. It includes installation documentation, a FAQ, and Troubleshooting tips. The support forum is also available. Your question may already have been answered.', + 'wp-super-cache' + ), + 'https://jetpack.com/support/wp-super-cache/', + 'https://wordpress.org/support/plugin/wp-super-cache/' + ), + $kses_allow_links + ); + ?> + +
      7. +
      8. +
      + +
      '; +wp_nonce_field( 'wp-cache' ); +?> + +
    + +
    +

    +

    .htaccess is modified. It should probably be in the same directory as your wp-config.php. This file has special rules that serve the cached files very quickly to visitors without ever executing PHP. The .htaccess file can be updated automatically, but if that fails, the rules will be displayed here and it can be edited by you. You will not need to update the rules unless a warning shows here.', 'wp-super-cache' ); ?>

    + + " . __( 'Thank you for upgrading.', 'wp-super-cache' ) . " " . sprintf( __( 'The mod_rewrite rules changed since you last installed this plugin. Unfortunately, you must remove the old supercache rules before the new ones are updated. Refresh this page when you have edited your .htaccess file. If you wish to manually upgrade, change the following line: %1$s so it looks like this: %2$s The only changes are "HTTP_COOKIE" becomes "HTTP:Cookie" and "wordpressuser" becomes "wordpress". This is a WordPress 2.5 change but it’s backwards compatible with older versions if you’re brave enough to use them.', 'wp-super-cache' ), '
    RewriteCond %{HTTP_COOKIE} !^.*wordpressuser.*$
    ', '
    RewriteCond %{HTTP:Cookie} !^.*wordpress.*$
    ' ) . "

    "; + } else { + + global $valid_nonce; + if ( ! isset( $_POST['updatehtaccess'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing + if ( $scrules == '' ) { + wpsc_update_htaccess_form( 0 ); // don't hide the update htaccess form + } else { + wpsc_update_htaccess_form(); + } + } elseif ( $valid_nonce && isset( $_POST[ 'updatehtaccess' ] ) ) { + if ( add_mod_rewrite_rules() ) { + echo "
    " . __( 'Mod Rewrite rules updated!', 'wp-super-cache' ) . "
    "; + echo "

    " . sprintf( __( '%s.htaccess has been updated with the necessary mod_rewrite rules. Please verify they are correct. They should look like this:', 'wp-super-cache' ), $home_path ) . "

    \n"; + } else { + global $update_mod_rewrite_rules_error; + echo "
    " . __( 'Mod Rewrite rules must be updated!', 'wp-super-cache' ) . "
    "; + echo "

    " . sprintf( __( 'The plugin could not update %1$s.htaccess file: %2$s.
    The new rules go above the regular WordPress rules as shown in the code below:', 'wp-super-cache' ), $home_path, "" . $update_mod_rewrite_rules_error . "" ) . "

    \n"; + } + echo "
    "; + echo "

    " . esc_html( $rules ) . "

    \n
    "; + } else { + ?> +

    Click the following link to see the lines added to that file. If you have upgraded the plugin, make sure these rules match.', 'wp-super-cache' ), $home_path ); ?>

    +

    "; + if ( $rules != $scrules ) + echo '
    ' . wp_text_diff( $scrules, $rules, array( 'title' => __( 'Rewrite Rules', 'wp-super-cache' ), 'title_left' => __( 'Current Rules', 'wp-super-cache' ), 'title_right' => __( 'New Rules', 'wp-super-cache' ) ) ) . "
    "; + echo "

    # BEGIN WPSuperCache\n" . esc_html( $rules ) . "# END WPSuperCache

    \n"; + echo "

    " . sprintf( __( 'Rules must be added to %s too:', 'wp-super-cache' ), WP_CONTENT_DIR . "/cache/.htaccess" ) . "

    "; + echo "
    # BEGIN supercache\n" . esc_html( $gziprules ) . "# END supercache

    "; + echo '
    '; + } + + } + ?> +
    +
    + +

    UTC time is %s', 'wp-super-cache' ), date_i18n( $timezone_format, false, 'gmt' ) ); ?>%1$s', 'wp-super-cache' ), date_i18n( $timezone_format ) ); ?>" . sprintf( __( 'Next scheduled garbage collection will be at %s UTC', 'wp-super-cache' ), date_i18n( $timezone_format, $next_gc, 'gmt' ) ) . "

    "; + + +if ( $wp_cache_preload_on ) + echo "

    " . __( 'Warning! PRELOAD MODE activated. Supercache files will not be deleted regardless of age.', 'wp-super-cache' ) . "

    "; + +echo ""; +echo '
    '; +echo ''; +echo ''; +echo ''; +echo "\n"; +echo "\n"; +echo ''; +echo ''; +echo "\n"; +echo "
    " . __( "seconds", 'wp-super-cache' ) . "
    " . __( 'How long should cached pages remain fresh? Set to 0 to disable garbage collection. A good starting point is 3600 seconds.', 'wp-super-cache' ) . "
    ' . esc_html__( 'Scheduler', 'wp-super-cache' ) . ''; +echo "'; +echo ''; +echo ""; +$schedules = wp_get_schedules(); +echo ""; +echo '
    " . esc_html__( 'seconds', 'wp-super-cache' ) . '
    ' . esc_html__( 'How often to check for stale cached files.', 'wp-super-cache' ) . '
    " . __( "HH:MM", 'wp-super-cache' ) . "
    " . __( 'Check for stale cached files at this time (UTC) or starting at this time every interval below.', 'wp-super-cache' ) . "

    " . __( 'Email me when the garbage collection runs.', 'wp-super-cache' ) . "
    \n"; +echo "
    " . __( 'Garbage Collection', 'wp-super-cache' ) . "
    "; +echo "
    1. " . __( 'Garbage collection is the simple act of throwing out your garbage. For this plugin that would be old or stale cached files that may be out of date. New cached files are described as fresh.', 'wp-super-cache' ) . "
    2. \n"; +echo "
    3. " . __( 'Cached files are fresh for a limited length of time. You can set that time in the Cache Timeout text box on this page.', 'wp-super-cache' ) . "
    4. \n"; +echo "
    5. " . __( 'Stale cached files are not removed as soon as they become stale. They have to be removed by the garbage collecter. That is why you have to tell the plugin when the garbage collector should run.', 'wp-super-cache' ) . "
    6. \n"; +echo "
    7. " . __( 'Use the Timer or Clock schedulers to define when the garbage collector should run.', 'wp-super-cache' ) . "
    8. \n"; +echo "
    9. " . __( 'The Timer scheduler tells the plugin to run the garbage collector at regular intervals. When one garbage collection is done, the next run is scheduled.', 'wp-super-cache' ) . "
    10. \n"; +echo "
    11. " . __( 'Or, the Clock scheduler allows the garbage collection to run at specific times. If set to run hourly or twice daily, the garbage collector will be first scheduled for the time you enter here. It will then run again at the indicated interval. If set to run daily, it will run once a day at the time specified.', 'wp-super-cache' ) . "
    12. \n"; +echo "
    "; +echo "

    " . __( 'There are no best garbage collection settings but here are a few scenarios. Garbage collection is separate to other actions that clear our cached files like leaving a comment or publishing a post.', 'wp-super-cache' ) . "

    \n"; +echo "
      "; +echo "
    1. " . __( 'Sites that want to serve lots of newly generated data should set the Cache Timeout to 60 and use the Timer scheduler set to 90 seconds.', 'wp-super-cache' ) . "
    2. \n"; +echo "
    3. " . __( 'Sites with widgets and rss feeds in their sidebar should probably use a timeout of 3600 seconds and set the timer to 600 seconds. Stale files will be caught within 10 minutes of going stale.', 'wp-super-cache' ) . "
    4. \n"; +echo "
    5. " . __( 'Sites with lots of static content, no widgets or rss feeds in their sidebar can use a timeout of 86400 seconds or even more and set the timer to something equally long.', 'wp-super-cache' ) . "
    6. \n"; +echo "
    7. " . __( 'Sites where an external data source updates at a particular time every day should set the timeout to 86400 seconds and use the Clock scheduler set appropriately.', 'wp-super-cache' ) . "
    8. \n"; +echo "
    "; +echo "

    " . __( 'Checking for and deleting expired files is expensive, but it’s expensive leaving them there too. On a very busy site, you should set the expiry time to 600 seconds. Experiment with different values and visit this page to see how many expired files remain at different times during the day.', 'wp-super-cache' ) . "

    "; +echo "

    " . __( 'Set the expiry time to 0 seconds to disable garbage collection.', 'wp-super-cache' ) . "

    "; +echo '
    '; +wp_nonce_field('wp-cache'); +echo "
    \n"; +?> +
    +
    + +'; +echo '

    ' . __( 'Accepted Filenames & Rejected URIs', 'wp-super-cache' ) . '

    '; +echo ''; +echo '

    ' . __( 'Do not cache the following page types. See the Conditional Tags documentation for a complete discussion on each type.', 'wp-super-cache' ) . '

    '; +echo '
    '; +echo ''; +echo '
    '; +echo '
    '; +echo '
    '; +echo '  
    '; +echo '
    '; +echo '  
    '; +echo '  
    '; +echo '
    '; +echo '
    '; +echo '
    '; + +echo '
    '; +wp_nonce_field('wp-cache'); +echo "
    \n"; +echo '
    '; + +// Rejected URL strings +echo '
    '; +echo '

    ' . __( 'Rejected URL Strings', 'wp-super-cache' ) . '

    '; +echo '
    '; +echo "

    " . __( 'Add here strings (not a filename) that forces a page not to be cached. For example, if your URLs include year and you dont want to cache last year posts, it’s enough to specify the year, i.e. ’/2004/’. WP-Cache will search if that string is part of the URI and if so, it will not cache that page.', 'wp-super-cache' ) . "

    \n"; +echo ' '; +echo '
    '; +wp_nonce_field( 'wp-cache' ); +echo "
    \n"; +echo '
    '; + +// Rejected Cookies +echo '
    '; +echo '

    ' . __( 'Rejected Cookies', 'wp-super-cache' ) . '

    '; +echo '
    '; +echo "

    " . __( 'Do not cache pages when these cookies are set. Add the cookie names here, one per line. Matches on fragments, so "test" will match "WordPress_test_cookie". (Simple caching only)', 'wp-super-cache' ) . "

    \n"; +echo ' '; +echo '
    '; +wp_nonce_field('wp-cache'); +echo "
    \n"; +echo '
    '; + +// Always Cache Filenames +echo '
    '; +echo '

    ' . __( 'Always Cache Filenames', 'wp-super-cache' ) . '

    '; +echo '
    '; +echo "

    " . __( 'Add here those filenames that can be cached, even if they match one of the rejected substring specified above.', 'wp-super-cache' ) . "

    \n"; +echo ' '; +echo '
    '; +wp_nonce_field('wp-cache'); +echo "
    \n"; +echo '
    '; + +echo ''; +echo '
    '; diff --git a/wp-content/plugins/wp-super-cache/partials/debug.php b/wp-content/plugins/wp-super-cache/partials/debug.php new file mode 100644 index 0000000..da5f646 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/partials/debug.php @@ -0,0 +1,74 @@ +
    +'; +echo '
    '; +echo '
    '; +echo '

    ' . __( 'Fix problems with the plugin by debugging it here. It will log to a file in your cache directory.', 'wp-super-cache' ) . '

    '; +// $wp_cache_debug_log is declared when this file is included. +// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable +if ( ! isset( $wp_cache_debug_log ) || $wp_cache_debug_log == '' ) { + extract( wpsc_create_debug_log() ); // $wp_cache_debug_log, $wp_cache_debug_username +} + +// $cache_path and $wp_cache_debug_log is declared when this file is included. +// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable +$log_file_link = "$wp_cache_debug_log"; + +if ( $wp_super_cache_debug == 1 ) { + echo "

    " . sprintf( __( 'Currently logging to: %s', 'wp-super-cache' ), $log_file_link ) . "

    "; +} else { + echo "

    " . sprintf( __( 'Last Logged to: %s', 'wp-super-cache' ), $log_file_link ) . "

    "; +} +echo "

    " . sprintf( __( 'Username/Password: %s', 'wp-super-cache' ), $wp_cache_debug_username ) . "

    "; + +echo '
    '; +wp_nonce_field('wp-cache'); +echo ""; +submit_button( __( 'Delete', 'wp-super-cache' ), 'delete', 'wpsc_delete_log_form', false ); +echo "
    "; + +echo '
    '; +if ( ! isset( $wp_super_cache_debug ) || $wp_super_cache_debug == 0 ) { + $debug_status_message = __( 'Enable Logging', 'wp-super-cache' ); + $not_status = 1; +} else { + $debug_status_message = __( 'Disable Logging', 'wp-super-cache' ); + $not_status = 0; +} +echo ""; +wp_nonce_field('wp-cache'); +submit_button( $debug_status_message, 'primary', 'wpsc_log_status', true ); +echo "
    "; +echo '
    '; + +echo '
    '; +echo '
    '; +echo "
    "; +echo ""; +echo ""; +echo ""; +echo "
    " . __( 'IP Address', 'wp-super-cache' ) . " " . sprintf( __( '(only log requests from this IP address. Your IP is %s)', 'wp-super-cache' ), $_SERVER[ 'REMOTE_ADDR' ] ) . "
    " . __( 'Cache Status Messages', 'wp-super-cache' ) . " " . __( 'enabled', 'wp-super-cache' ) . "
    "; +echo __( 'Display comments at the end of every page like this:', 'wp-super-cache' ) . "
    "; +echo "
    <!-- Dynamic page generated in 0.450 seconds. -->
    +	<!-- Cached page generated by WP-Super-Cache on " . date( "Y-m-d H:i:s", time() ) . " -->
    +	<!-- super cache -->
    \n"; +if ( isset( $wp_super_cache_advanced_debug ) ) { + echo "
    " . __( 'Advanced', 'wp-super-cache' ) . "

    " . __( 'In very rare cases two problems may arise on some blogs:

    1. The front page may start downloading as a zip file.
    2. The wrong page is occasionally cached as the front page if your blog uses a static front page and the permalink structure is /%category%/%postname%/.
    ', 'wp-super-cache' ) . '

    '; + echo "

    " . __( 'I’m 99% certain that they aren’t bugs in WP Super Cache and they only happen in very rare cases but you can run a simple check once every 5 minutes to verify that your site is ok if you’re worried. You will be emailed if there is a problem.', 'wp-super-cache' ) . "

    "; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + echo "
    " . __( 'Check front page every 5 minutes.', 'wp-super-cache' ) . "
    " . __( 'Front page text', 'wp-super-cache' ) . " (" . __( 'Text to search for on your front page. If this text is missing, the cache will be cleared. Leave blank to disable.', 'wp-super-cache' ) . ")
    " . __( 'Clear cache on error.', 'wp-super-cache' ) . "
    " . __( 'Email the blog admin when checks are made. (useful for testing)', 'wp-super-cache' ) . "
    \n"; +} +echo '
    '; +wp_nonce_field('wp-cache'); +echo "
    \n"; +echo '
    '; +echo '
    '; +echo '
    '; diff --git a/wp-content/plugins/wp-super-cache/partials/easy.php b/wp-content/plugins/wp-super-cache/partials/easy.php new file mode 100644 index 0000000..81dce30 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/partials/easy.php @@ -0,0 +1,191 @@ +
    +'; +echo '
    '; +echo ''; +wp_nonce_field( 'wp-cache' ); +?> + + + + + +
    +
    +
    +
    +
    +
    +

    +
      +
    1. +
    2. +
    3. +
    4. +
    +

    +' . esc_html__( 'Notice: Simple caching enabled but Supercache mod_rewrite rules from expert mode detected. Cached files will be served using those rules. If your site is working ok, please ignore this message. Otherwise, you can edit the .htaccess file in the root of your install and remove the SuperCache rules.', 'wp-super-cache' ) . '

    '; + } +} +// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped +echo '
    '; +if ( wpsc_is_boost_current() ) { + $config = wpsc_get_boost_migration_config(); + $button_url = $config['is_installed'] ? $config['activate_url'] : $config['install_url']; + $button_class = $config['is_installed'] ? 'wpsc-activate-boost-button' : 'wpsc-install-boost-button'; + $button_label = esc_html__( 'Try Jetpack Boost', 'wp-super-cache' ); + if ( wpsc_is_boost_active() && wpsc_is_boost_installed() ) { + $button_url = esc_url( admin_url( 'admin.php?page=jetpack-boost' ) ); + $button_class = ''; + $button_label = esc_html__( 'Jetpack Boost Dashboard', 'wp-super-cache' ); + } + echo ""; + echo ''; + echo ''; + echo ''; +} + +echo '
    '; +echo '
    '; +if ( $cache_enabled ) { + echo '
    '; + echo '

    ' . esc_html__( 'Cache Tester', 'wp-super-cache' ) . '

    '; + echo '

    ' . esc_html__( 'Test your cached website by clicking the test button below.', 'wp-super-cache' ) . '

    '; + echo '

    ' . __( 'Note: if you use Cloudflare or other transparent front-end proxy service this test may fail.

    1. If you have Cloudflare minification enabled this plugin may detect differences in the pages and report an error.
    2. Try using the development mode of Cloudflare to perform the test. You can disable development mode afterwards if the test succeeds.
    ', 'wp-super-cache' ) . '

    '; + if ( array_key_exists( 'action', $_POST ) && 'test' === $_POST['action'] && $valid_nonce ) { + $url = trailingslashit( get_bloginfo( 'url' ) ); + if ( isset( $_POST['httponly'] ) ) { + $url = str_replace( 'https://', 'http://', $url ); + } + $test_messages = array( esc_html__( 'Fetching %s to prime cache: ', 'wp-super-cache' ), esc_html__( 'Fetching first copy of %s: ', 'wp-super-cache' ), esc_html__( 'Fetching second copy of %s: ', 'wp-super-cache' ) ); + $c = 0; + $cache_test_error = false; + $page = array(); + foreach ( $test_messages as $message ) { + echo '

    ' . sprintf( $message, $url ); + $page[ $c ] = wp_remote_get( $url, array( 'timeout' => 60, 'blocking' => true ) ); + if ( ! is_wp_error( $page[ $c ] ) ) { + $fp = fopen( $cache_path . $c . '.html', 'w' ); + fwrite( $fp, $page[ $c ]['body'] ); + fclose( $fp ); + echo '' . esc_html__( 'OK', 'wp-super-cache' ) . " (" . $c . '.html)

    '; + sleep( 1 ); + } else { + $cache_test_error = true; + echo '' . esc_html__( 'FAILED', 'wp-super-cache' ) . '

    '; + $errors = ''; + $messages = ''; + foreach ( $page[ $c ]->get_error_codes() as $code ) { + $severity = $page[ $c ]->get_error_data( $code ); + foreach ( $page[ $c ]->get_error_messages( $code ) as $err ) { + $errors .= $severity . ': ' . $err . "
    \n"; + } + } + if ( ! empty( $errors ) ) { + echo '

    ' . sprintf( __( 'Errors: %s', 'wp-super-cache' ), $errors ) . '

    '; + } + } + ++$c; + } + + if ( false == $cache_test_error ) { + echo '
    • ' . sprintf( esc_html__( 'Page %d: %d (%s)', 'wp-super-cache' ), 1, intval( $page[1]['response']['code'] ), esc_attr( $page[1]['response']['message'] ) ) . '
    • '; + echo '
    • ' . sprintf( esc_html__( 'Page %d: %d (%s)', 'wp-super-cache' ), 2, intval( $page[2]['response']['code'] ), esc_attr( $page[2]['response']['message'] ) ) . '
    '; + } + + if ( false == $cache_test_error && preg_match( '/(Cached page generated by WP-Super-Cache on) ([0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*)/', $page[1]['body'], $matches1 ) && + preg_match( '/(Cached page generated by WP-Super-Cache on) ([0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*)/', $page[2]['body'], $matches2 ) && $matches1[2] == $matches2[2] + ) { + echo '

    ' . sprintf( esc_html__( 'Page 1: %s', 'wp-super-cache' ), $matches1[2] ) . '

    '; + echo '

    ' . sprintf( esc_html__( 'Page 2: %s', 'wp-super-cache' ), $matches2[2] ) . '

    '; + echo '

    ' . esc_html__( 'The timestamps on both pages match!', 'wp-super-cache' ) . '

    '; + } else { + echo '

    ' . esc_html__( 'The pages do not match! Timestamps differ or were not found!', 'wp-super-cache' ) . '

    '; + echo '

    ' . esc_html__( 'Things you can do:', 'wp-super-cache' ) . '

    '; + echo '
    1. ' . esc_html__( 'Load your homepage in a logged out browser, check the timestamp at the end of the html source. Load the page again and compare the timestamp. Caching is working if the timestamps match.', 'wp-super-cache' ) . '
    2. '; + echo '
    3. ' . esc_html__( 'Enable logging on the Debug page here. That should help you track down the problem.', 'wp-super-cache' ) . '
    4. '; + echo '
    5. ' . esc_html__( 'You should check Page 1 and Page 2 above for errors. Your local server configuration may not allow your website to access itself.', 'wp-super-cache' ) . '
    6. '; + echo '
    '; + } + } + echo '
    '; + echo ''; + if ( ! empty( $_SERVER['HTTPS'] ) && 'on' === strtolower( $_SERVER['HTTPS'] ) ) { + echo ' ' . esc_html__( 'Send non-secure (non https) request for homepage', 'wp-super-cache' ); + } + + if ( isset( $wp_super_cache_comments ) && $wp_super_cache_comments == 0 ) { + echo '

    ' . __( 'Warning! Cache comments are currently disabled. Please go to the Debug page and enable Cache Status Messages there. You should clear the cache before testing.', 'wp-super-cache' ) . '

    '; + echo '
    '; + } else { + echo '
    '; + } + + wp_nonce_field( 'wp-cache' ); + echo '
    '; + echo '
    '; +} +echo '
    '; +echo '

    ' . esc_html__( 'Delete Cached Pages', 'wp-super-cache' ) . '

    '; +echo '

    ' . esc_html__( 'Cached pages are stored on your server as html and PHP files. If you need to delete them, use the button below.', 'wp-super-cache' ) . '

    '; +echo '
    '; +echo ''; +echo '
    '; +wp_nonce_field( 'wp-cache' ); +echo "
    \n"; +echo '
    '; + +if ( is_multisite() && wpsupercache_site_admin() ) { + echo '
    '; + echo '
    '; + echo ''; + echo '
    '; + wp_nonce_field( 'wp-cache' ); + echo "

    \n"; + echo '
    '; +} +?> +
    +

    +

    + +
      +
    • + Jetpack Boost helps speed up your website by generating critical CSS, defering Javascript and much more.', 'wp-super-cache' ), + $wpsc_promo_links['boost'] + ), + 'a' + ); + ?> +
    • + +
    • + Jetpack' + ); + ?> +
    • + + +
    • GTMetrix' ); ?>
    • + +
    • Memcached' ); ?>
    • +
    • WP Crontrol is a useful plugin to use when trying to debug garbage collection and preload problems.', 'wp-super-cache' ), 'https://wordpress.org/plugins/wp-crontrol/' ); ?>
    • +
    +

    +
    +
    diff --git a/wp-content/plugins/wp-super-cache/partials/lockdown.php b/wp-content/plugins/wp-super-cache/partials/lockdown.php new file mode 100644 index 0000000..a2f3885 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/partials/lockdown.php @@ -0,0 +1,81 @@ +
    + +
    +

    ' . __( 'Disabled', 'wp-super-cache' ) . '' : '' . __( 'Enabled', 'wp-super-cache' ) . ''; ?>

    +

    +

    +

    if( defined( 'WPLOCKDOWN' ) && constant( 'WPLOCKDOWN' ) ) { +     echo ""; + }
    +

    '; +echo ""; +echo '
    '; +wp_nonce_field( 'wp-cache' ); +echo ''; + +?>
    +
    +

    '; +if( is_array( $cached_direct_pages ) ) { + $out = ''; + foreach( $cached_direct_pages as $page ) { + if( $page == '' ) + continue; + $generated = ''; + if( is_file( ABSPATH . $page . '/index.html' ) ) + $generated = ''; + $out .= "$generated"; + } + if( $out != '' ) { + ?>"; + } +} + +if ( 'READONLY' !== $readonly ) { + echo esc_html__( 'Add direct page:', 'wp-super-cache' ) . ''; +} +echo '

    ' . sprintf( + esc_html__( 'Directly cached files are files created directly off %s where your blog lives. This feature is only useful if you are expecting a major Digg or Slashdot level of traffic to one post or page.', 'wp-super-cache' ), + esc_attr( ABSPATH ) +) . '

    '; +if ( 'READONLY' !== $readonly ) { + echo '

    ' . sprintf( __( 'For example: to cache %1$sabout/, you would enter %1$sabout/ or /about/. The cached file will be generated the next time an anonymous user visits that page.', 'wp-super-cache' ), + esc_attr( trailingslashit( get_option( 'home' ) ) ) + ) . '

    '; + echo '

    ' . esc_html__( 'Make the textbox blank to remove it from the list of direct pages and delete the cached file.', 'wp-super-cache' ) . '

    '; + + echo '
    '; +} +wp_nonce_field( 'wp-cache' ); +echo ''; +?> + +'; diff --git a/wp-content/plugins/wp-super-cache/partials/preload.php b/wp-content/plugins/wp-super-cache/partials/preload.php new file mode 100644 index 0000000..34b8cbb --- /dev/null +++ b/wp-content/plugins/wp-super-cache/partials/preload.php @@ -0,0 +1,111 @@ +
    +'; +if ( ! $cache_enabled || ! $super_cache_enabled || true === defined( 'DISABLESUPERCACHEPRELOADING' ) ) { + wp_admin_notice( + esc_html__( 'Preloading of cache disabled. Please make sure simple or expert mode is enabled or talk to your host administrator.', 'wp-super-cache' ), + array( + 'type' => 'warning', + ) + ); + return; +} + +$count = wpsc_post_count(); + +$min_refresh_interval = wpsc_get_minimum_preload_interval(); + +echo '
    '; +echo '

    ' . __( 'This will cache every published post and page on your site. It will create supercache static files so unknown visitors (including bots) will hit a cached page. This will probably help your Google ranking as they are using speed as a metric when judging websites now.', 'wp-super-cache' ) . '

    '; +echo '

    ' . __( 'Preloading creates lots of files however. Caching is done from the newest post to the oldest so please consider only caching the newest if you have lots (10,000+) of posts. This is especially important on shared hosting.', 'wp-super-cache' ) . '

    '; +echo '

    ' . __( 'In ’Preload Mode’ regular garbage collection will be disabled so that old cache files are not deleted. This is a recommended setting when the cache is preloaded.', 'wp-super-cache' ) . '

    '; +echo '
    '; +echo ''; +echo ''; +echo '
    '; +echo '
    '; +echo '

    ' . sprintf( __( 'Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d minutes.)', 'wp-super-cache' ), "", $min_refresh_interval ) . '

    '; +if ( $count > 100 ) { + $step = (int)( $count / 10 ); + + $select = ""; + echo '

    ' . sprintf( __( 'Preload %s posts.', 'wp-super-cache' ), $select ) . '

    '; +} else { + echo ''; +} + +echo ' ' . __( 'Preload mode (garbage collection disabled. Recommended.)', 'wp-super-cache' ) . '
    '; +echo ' ' . __( 'Preload tags, categories and other taxonomies.', 'wp-super-cache' ) . '
    '; +echo __( 'Send me status emails when files are refreshed.', 'wp-super-cache' ) . '
    '; +if ( !isset( $wp_cache_preload_email_volume ) ) + $wp_cache_preload_email_volume = 'none'; +echo '"; + +if ( + wp_next_scheduled( 'wp_cache_preload_hook' ) + || wp_next_scheduled( 'wp_cache_full_preload_hook' ) + || wpsc_is_preload_active() +) { + $currently_preloading = true; +} +echo '
    '; +echo '
    '; +wp_nonce_field( 'wp-cache' ); +echo ''; +echo '
    '; +echo ''; +echo ''; +echo '
    '; +if ( false == $currently_preloading ) { + echo ''; +} else { + echo ''; +} +echo '
    '; +wp_nonce_field( 'wp-cache' ); +echo ''; +echo '
    '; +echo '
    '; diff --git a/wp-content/plugins/wp-super-cache/partials/rejected_user_agents.php b/wp-content/plugins/wp-super-cache/partials/rejected_user_agents.php new file mode 100644 index 0000000..eed7cb2 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/partials/rejected_user_agents.php @@ -0,0 +1,16 @@ +
    +

    ' . __( 'Rejected User Agents', 'wp-super-cache' ) . '

    '; +echo "

    " . __( 'Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists.', 'wp-super-cache' ) . "

    \n"; +echo '
    '; +echo ' '; +echo '
    '; +wp_nonce_field('wp-cache'); +echo ''; +echo "
    \n"; +?> +
    diff --git a/wp-content/plugins/wp-super-cache/partials/restore.php b/wp-content/plugins/wp-super-cache/partials/restore.php new file mode 100644 index 0000000..070a106 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/partials/restore.php @@ -0,0 +1,11 @@ +
    +

    ' . __( 'Fix Configuration', 'wp-super-cache' ) . '

    '; +echo '
    '; +echo ''; +echo '
    '; +wp_nonce_field('wp-cache'); +echo "\n"; +echo ''; +?> +
    diff --git a/wp-content/plugins/wp-super-cache/partials/tracking_parameters.php b/wp-content/plugins/wp-super-cache/partials/tracking_parameters.php new file mode 100644 index 0000000..c8fc3ac --- /dev/null +++ b/wp-content/plugins/wp-super-cache/partials/tracking_parameters.php @@ -0,0 +1,16 @@ +
    +

    ' . __( 'Tracking Parameters', 'wp-super-cache' ) . '

    '; +echo '
    '; +echo "

    " . __( 'Tracking parameters to ignore when caching. Visitors from Facebook, Twitter and elsewhere to your website will go to a URL with tracking parameters added. This setting allows the plugin to ignore those parameters and show an already cached page. Any actual tracking by Google Analytics or other Javascript based code should still work as the URL of the page is not modified.', 'wp-super-cache' ) . "

    \n"; +echo ' '; +echo "

    "; +echo '
    '; +wp_nonce_field('wp-cache'); +echo "\n"; +?> +
    diff --git a/wp-content/plugins/wp-super-cache/plugins/awaitingmoderation.php b/wp-content/plugins/wp-super-cache/plugins/awaitingmoderation.php new file mode 100644 index 0000000..38b0250 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/plugins/awaitingmoderation.php @@ -0,0 +1,64 @@ + +
    +

    +
    + + +

    + ' . sprintf( __( 'Awaiting Moderation is now %s', 'wp-super-cache' ), $status ) . '

    '; + } + echo '
    '; + wp_nonce_field( 'wp-cache' ); + ?> + +
    + 'awaitingmoderation', + 'url' => '', + 'title' => __( 'Awaiting Moderation', 'wp-super-cache' ), + 'desc' => __( 'Enables or disables plugin to Remove the text "Your comment is awaiting moderation." when someone leaves a moderated comment.', 'wp-super-cache' ), + ); + return $list; +} +add_cacheaction( 'wpsc_filter_list', 'wpsc_awaiting_moderation_list' ); diff --git a/wp-content/plugins/wp-super-cache/plugins/badbehaviour.php b/wp-content/plugins/wp-super-cache/plugins/badbehaviour.php new file mode 100644 index 0000000..249ebc1 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/plugins/badbehaviour.php @@ -0,0 +1,98 @@ + +
    +

    +
    + + +

    ' . sprintf( __( '(Only WPCache caching supported, disabled compression and requires Bad Behavior in "%s/plugins/bad-behavior/") ', 'wp-super-cache' ), WP_CONTENT_DIR ) . '

    '; + if ( $changed ) { + if ( $cache_badbehaviour ) { + $status = __( 'enabled', 'wp-super-cache' ); + } else { + $status = __( 'disable', 'wp-super-cache' ); + } + echo '

    ' . sprintf( __( 'Bad Behavior support is now %s', 'wp-super-cache' ), $status ) . '

    '; + } + echo '
    '; + wp_nonce_field( 'wp-cache' ); + ?> + +
    + ' . __( 'Warning!', 'wp-super-cache' ) . " $err

    "; + } +} +add_cacheaction( 'cache_admin_page', 'wp_supercache_badbehaviour_admin' ); + +function wpsc_badbehaviour_list( $list ) { + $list['badbehaviour'] = array( + 'key' => 'badbehaviour', + 'url' => 'http://www.bad-behavior.ioerror.us/', + 'title' => __( 'Bad Behavior', 'wp-super-cache' ), + 'desc' => sprintf( __( 'Support for Bad Behavior. (Only WPCache caching supported, disabled compression and requires Bad Behavior in "%s/plugins/bad-behavior/") ', 'wp-super-cache' ), WP_CONTENT_DIR ), + ); + return $list; +} +add_cacheaction( 'wpsc_filter_list', 'wpsc_badbehaviour_list' ); diff --git a/wp-content/plugins/wp-super-cache/plugins/domain-mapping.php b/wp-content/plugins/wp-super-cache/plugins/domain-mapping.php new file mode 100644 index 0000000..9da251b --- /dev/null +++ b/wp-content/plugins/wp-super-cache/plugins/domain-mapping.php @@ -0,0 +1,137 @@ + +
    + +

    + +
    + + + ' . __( 'Provides support for Domain Mapping plugin to map multiple domains to a blog.', 'wp-super-cache' ) . '

    '; + + if ( $changed ) { + echo '

    ' . sprintf( + esc_html__( 'Domain Mapping support is now %s', 'wp-super-cache' ), + esc_html( $cache_domain_mapping ? __( 'enabled', 'wp-super-cache' ) : __( 'disabled', 'wp-super-cache' ) ) + ) . '

    '; + } + + echo '
    '; + wp_nonce_field( 'wp-cache' ); + ?> + + +
    +

    ' . esc_html__( 'Domain Mapping plugin detected! Please go to the Supercache plugins page and enable the domain mapping helper plugin.', 'wp-super-cache' ) . '

    '; + } +} +function wp_supercache_domain_mapping_exists() { + global $cache_domain_mapping; + + $cache_domain_mapping = (int) $cache_domain_mapping; + if ( 1 === $cache_domain_mapping ) { + return; + } + + if ( is_admin() && function_exists( 'domain_mapping_warning' ) ) { + add_action( 'admin_notices', 'wp_supercache_domain_mapping_notice' ); + } +} + +if ( isset( $_GET['page'] ) && 'wpsupercache' === $_GET['page'] ) { + add_cacheaction( 'add_cacheaction', 'wp_supercache_domain_mapping_exists' ); +} + +function wpsc_domain_mapping_list( $list ) { + $list['domain_mapping'] = array( + 'key' => 'domain_mapping', + 'url' => 'https://wordpress.org/plugins/wordpress-mu-domain-mapping/', + 'title' => esc_html__( 'Domain Mapping', 'wp-super-cache' ), + 'desc' => esc_html__( 'Provides support for Domain Mapping plugin to map multiple domains to a blog.', 'wp-super-cache' ), + ); + return $list; +} +add_cacheaction( 'wpsc_filter_list', 'wpsc_domain_mapping_list' ); diff --git a/wp-content/plugins/wp-super-cache/plugins/dynamic-cache-test.php b/wp-content/plugins/wp-super-cache/plugins/dynamic-cache-test.php new file mode 100644 index 0000000..6532b35 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/plugins/dynamic-cache-test.php @@ -0,0 +1,187 @@ +', $cachedata ); + } + add_cacheaction( 'wpsc_cachedata', 'dynamic_cache_test_filter' ); + + function dynamic_cache_test_template_tag() { + echo DYNAMIC_CACHE_TEST_TAG; // This is the template tag. + } + + function dynamic_cache_test_init() { + add_action( 'wp_footer', 'dynamic_cache_test_template_tag' ); + } + add_cacheaction( 'add_cacheaction', 'dynamic_cache_test_init' ); +} + +/* + * EXAMPLE 2 + * + * This is going to be complicated. Hang on! + * + * When the cache file for a new page is generated the plugin uses an output + * buffer to capture the page. A callback function processes the buffer and + * writes to the cache file. The placeholder tag for any dynamic content has + * to be written to that cache file but also, it has to be replaced with + * dynamic content before the page is shown to the user. + * More on output buffers here: http://php.net/ob_start + * + * Unfortunately an extra output buffer is often required when capturing dynamic + * content such as sidebar widgets. Due to a quirk of the way PHP works it's + * not possible to have an output buffer run in an output buffer callback. That + * dynamic content has to be generated before the callback function is reached. + * The following error occurs when an output buffer is created in the + * callback function of another output buffer: + * "PHP Fatal error: ob_start(): Cannot use output buffering in output buffering display handlers in..." + * + * In this example the function add_action() isn't available when this file is + * loaded so dynamic_output_buffer_init() is hooked on to the "add_cacheaction" + * cacheaction. That function then hooks dynamic_output_buffer_test() on to the + * familiar wp_footer action. + * + * The first time dynamic_output_buffer_test() runs it generates the dynamic + * content and captures it with ob_start() in the DYNAMIC_OB_TEXT constant. + * + * When the main WP Super Cache output buffer is ready the callback is called. + * This fires the wpsc_cachedata_safety filter. If the DYNAMIC_OB_TEXT constant + * is set, which means dynamic content is ready, then it returns 1, a signal + * that everything is ok. + * Finally, the wpsc_cachedata filter is run. The function + * dynamic_output_buffer_test() is hooked on to it. Since DYNAMIC_OB_TEXT is + * set it replaces the placeholder text with that constant. + * The resulting html is then sent to the browser. + * + * Already cached pages call the safety filter, and then the wpsc_cachedata + * filter so any hooked function must be ready to generate dynamic content. The + * very last line of dynamic_output_buffer_test() replaces the placeholder tag + * with the dynamic content in the cache file. + * + * Use an output buffer to capture dynamic content while the page is generated + * and insert into the right place: + * Remember to add the DYNAMIC_OUTPUT_BUFFER_TAG text (as defined below) to + * your theme where the dynamic content should be. + * + * dynamic_output_buffer_test() is a function that uses the wpsc_cachedata + * filter to add a small message and the current server time to every web + * page. The time increments on every reload. + * + */ + +define( 'DYNAMIC_OUTPUT_BUFFER_TAG', '' ); // Change this to a secret placeholder tag. + +if ( '' !== DYNAMIC_OUTPUT_BUFFER_TAG ) { + function dynamic_output_buffer_test( $cachedata = 0 ) { + if ( defined( 'DYNAMIC_OB_TEXT' ) ) { + return str_replace( DYNAMIC_OUTPUT_BUFFER_TAG, DYNAMIC_OB_TEXT, $cachedata ); + } + + ob_start(); + // call the sidebar function, do something dynamic + echo '

    This is a test. The current time on the server is: ' . date( 'H:i:s' ) . '

    '; + $text = ob_get_contents(); + ob_end_clean(); + + if ( 0 === $cachedata ) { // called directly from the theme so store the output. + define( 'DYNAMIC_OB_TEXT', $text ); + } else { // called via the wpsc_cachedata filter. We only get here in cached pages in wp-cache-phase1.php. + return str_replace( DYNAMIC_OUTPUT_BUFFER_TAG, $text, $cachedata ); + } + } + add_cacheaction( 'wpsc_cachedata', 'dynamic_output_buffer_test' ); + + function dynamic_output_buffer_init() { + add_action( 'wp_footer', 'dynamic_output_buffer_test' ); + } + add_cacheaction( 'add_cacheaction', 'dynamic_output_buffer_init' ); + + function dynamic_output_buffer_test_safety( $safety ) { + if ( defined( 'DYNAMIC_OB_TEXT' ) ) {// this is set when you call dynamic_output_buffer_test() from the theme. + return 1; // ready to replace tag with dynamic content. + } else { + return 0; // tag cannot be replaced. + } + } + add_cacheaction( 'wpsc_cachedata_safety', 'dynamic_output_buffer_test_safety' ); +} diff --git a/wp-content/plugins/wp-super-cache/plugins/jetpack.php b/wp-content/plugins/wp-super-cache/plugins/jetpack.php new file mode 100644 index 0000000..c934782 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/plugins/jetpack.php @@ -0,0 +1,93 @@ + +
    +

    + ' . sprintf( __( 'Jetpack not found in %s. Install it and enable the mobile theme and this helper plugin to cache visits by mobile visitors.', 'wp-super-cache' ), dirname( WPCACHEHOME ) ) . ''; + } else { + ?> +
    + + + ' . __( 'Provides support for the Jetpack mobile theme and plugin. PHP caching mode and mobile support will be enabled too.', 'wp-super-cache' ) . '

    '; + if ( isset( $changed ) && $changed ) { + if ( $cache_jetpack ) { + $status = __( 'enabled', 'wp-super-cache' ); + } else { + $status = __( 'disabled', 'wp-super-cache' ); + } + echo '

    ' . sprintf( __( 'Jetpack Mobile Theme support is now %s', 'wp-super-cache' ), $status ) . '

    '; + } + echo '
    '; + wp_nonce_field( 'wp-cache' ); + ?> + + +
    + 'jetpack', + 'url' => 'https://wordpress.org/plugins/jetpack/', + 'title' => __( 'Jetpack Mobile Theme', 'wp-super-cache' ), + 'desc' => __( 'Provides support for the Jetpack mobile theme and plugin. PHP caching mode and mobile support will be enabled too.', 'wp-super-cache' ), + ); + return $list; +} +add_cacheaction( 'wpsc_filter_list', 'wpsc_cache_jetpack_list' ); diff --git a/wp-content/plugins/wp-super-cache/plugins/multisite.php b/wp-content/plugins/wp-super-cache/plugins/multisite.php new file mode 100644 index 0000000..1107175 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/plugins/multisite.php @@ -0,0 +1,68 @@ + 'enable_cache', 'id' => $blog_id ) ), 'wp-cache' . $blog_id ) . '">' . __( 'Enable', 'wp-super-cache' ) . ''; + } else { + echo '' . __( 'Disable', 'wp-super-cache' ) . ''; + } +} + +function wp_super_cache_multisite_notice() { + if ( 'wpsupercache' === filter_input( INPUT_GET, 'page' ) ) { + echo '

    ' . __( 'Caching has been disabled on this blog on the Network Admin Sites page.', 'wp-super-cache' ) . '

    '; + } +} + +function wp_super_cache_override_on_flag() { + global $cache_enabled, $super_cache_enabled; + if ( true !== $cache_enabled ) { + return false; + } + + if ( 1 === (int) get_option( 'wp_super_cache_disabled' ) ) { + $cache_enabled = false; + $super_cache_enabled = false; + if ( ! defined( 'DONOTCACHEPAGE' ) ) { + define( 'DONOTCACHEPAGE', 1 ); + } + if ( ! defined( 'SUBMITDISABLED' ) ) { + define( 'SUBMITDISABLED', 'disabled style="color: #aaa" ' ); + } + if ( is_admin() ) { + add_action( 'admin_notices', 'wp_super_cache_multisite_notice' ); + } + } +} diff --git a/wp-content/plugins/wp-super-cache/plugins/wptouch.php b/wp-content/plugins/wp-super-cache/plugins/wptouch.php new file mode 100644 index 0000000..7c27116 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/plugins/wptouch.php @@ -0,0 +1,142 @@ + +
    +

    +
    + + + ' . __( 'Provides support for WPTouch mobile theme and plugin.', 'wp-super-cache' ) . '

    '; + if ( isset( $changed ) && $changed ) { + if ( $cache_wptouch ) { + $status = __( 'enabled', 'wp-super-cache' ); + } else { + $status = __( 'disabled', 'wp-super-cache' ); + } + echo '

    ' . sprintf( __( 'WPTouch support is now %s', 'wp-super-cache' ), $status ) . '

    '; + } + echo '
    '; + wp_nonce_field( 'wp-cache' ); + ?> + +
    +

    ' . __( 'WPTouch plugin detected! Please go to the Supercache plugins page and enable the WPTouch helper plugin.', 'wp-super-cache' ) . '

    '; + } +} +function wp_super_cache_wptouch_exists() { + global $cache_wptouch; + if ( '1' === $cache_wptouch ) { + return false; + } + + if ( is_admin() && function_exists( 'wptouch_get_plugin_dir_name' ) ) { + add_action( 'admin_notices', 'wp_super_cache_wptouch_notice' ); + } +} + +if ( isset( $_GET['page'] ) && 'wpsupercache' === $_GET['page'] ) { + add_cacheaction( 'add_cacheaction', 'wp_super_cache_wptouch_exists' ); +} + +// disable mobile checking if. +function wp_super_cache_maybe_disable_wptouch( $t ) { + global $cache_wptouch, $wptouch_exclude_ua; + if ( '1' !== $cache_wptouch ) { + return false; + } + + if ( ( isset( $_COOKIE['wptouch_switch_toggle'] ) && 'normal' === $_COOKIE['wptouch_switch_toggle'] ) || + ( isset( $_COOKIE['wptouch-pro-view'] ) && 'desktop' === $_COOKIE['wptouch-pro-view'] ) ) { + return true; + } + + $ua = explode( ',', $wptouch_exclude_ua ); + foreach ( $ua as $agent ) { + if ( preg_match( "#$agent#i", $_SERVER['HTTP_HOST'] ) ) { + return true; // disable mobile ua check if matches the exclude list in wptouch. + } + } + + return false; +} + +add_cacheaction( 'disable_mobile_check', 'wp_super_cache_maybe_disable_wptouch' ); + +function wp_super_cache_wptouch_browsers( $browsers ) { + global $wptouch_exclude_ua, $wp_cache_config_file; + + if ( false === function_exists( 'bnc_wptouch_get_exclude_user_agents' ) || false === function_exists( 'bnc_wptouch_get_user_agents' ) ) { + return $browsers; + } + + $browsers = implode( ',', bnc_wptouch_get_exclude_user_agents() ); // hack, support exclude agents too. + if ( $browsers !== $wptouch_exclude_ua ) { + wp_cache_replace_line( '^ *\$wptouch_exclude_ua', "\$wptouch_exclude_ua = '$browsers';", $wp_cache_config_file ); + $wptouch_exclude_ua = $browsers; + } + + return bnc_wptouch_get_user_agents(); +} + +function wp_super_cache_wptouch_prefixes( $prefixes ) { + return array(); // wptouch doesn't support UA prefixes. +} + +function wp_super_cache_wptouch_cookie_check( $cache_key ) { + if ( false === isset( $_COOKIE['wptouch_switch_toggle'] ) ) { + return $cache_key; + } + if ( 'normal' === $_COOKIE['wptouch_switch_toggle'] || 'mobile' === $_COOKIE['wptouch_switch_toggle'] ) { + return $_COOKIE['wptouch_switch_toggle']; + } + + if ( isset( $_COOKIE['wptouch-pro-view'] ) ) { + if ( 'desktop' === $_COOKIE['wptouch-pro-view'] ) { + return 'normal'; + } else { + return $_COOKIE['wptouch-pro-view']; + } + } + + return $cache_key; +} + +if ( isset( $cache_wptouch ) && '1' === $cache_wptouch ) { + add_cacheaction( 'wp_super_cache_mobile_browsers', 'wp_super_cache_wptouch_browsers' ); + add_cacheaction( 'wp_super_cache_mobile_prefixes', 'wp_super_cache_wptouch_prefixes' ); + add_cacheaction( 'wp_cache_check_mobile', 'wp_super_cache_wptouch_cookie_check' ); +} + +function wpsc_wptouch_list( $list ) { + $list['wptouch'] = array( + 'key' => 'wptouch', + 'url' => 'https://wordpress.org/plugins/wptouch/', + 'title' => __( 'WPTouch', 'wp-super-cache' ), + 'desc' => __( 'Provides support for WPTouch mobile theme and plugin.', 'wp-super-cache' ), + ); + return $list; +} +add_cacheaction( 'wpsc_filter_list', 'wpsc_wptouch_list' ); diff --git a/wp-content/plugins/wp-super-cache/readme.txt b/wp-content/plugins/wp-super-cache/readme.txt new file mode 100644 index 0000000..bdb3a77 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/readme.txt @@ -0,0 +1,270 @@ +=== WP Super Cache === +Contributors: donncha, automattic, adnan007, dilirity, mikemayhem3030, pyronaur, thingalon +Tags: performance, caching, wp-cache, wp-super-cache, cache +Requires at least: 6.8 +Requires PHP: 7.4 +Tested up to: 6.9 +Stable tag: 3.1.0 +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +A very fast caching engine for WordPress that produces static html files. + +## Description ## +This plugin generates static html files from your dynamic WordPress blog. After a html file is generated your webserver will serve that file instead of processing the comparatively heavier and more expensive WordPress PHP scripts. + +The static html files will be served to the vast majority of your users: + +* Users who are not logged in. +* Users who have not left a comment on your blog. +* Or users who have not viewed a password protected post. + +99% of your visitors will be served static html files. One cached file can be served thousands of times. Other visitors will be served custom cached files tailored to their visit. If they are logged in, or have left comments those details will be displayed and cached for them. + +The plugin serves cached files in 3 ways (ranked by speed): + +1. Expert. The fastest method is by using Apache mod_rewrite (or whatever similar module your web server supports) to serve "supercached" static html files. This completely bypasses PHP and is extremely quick. If your server is hit by a deluge of traffic it is more likely to cope as the requests are "lighter". This does require the Apache mod_rewrite module (which is probably installed if you have custom permalinks) and a modification of your .htaccess file which is risky and may take down your site if modified incorrectly. +2. Simple. Supercached static files can be served by PHP and this is the recommended way of using the plugin. The plugin will serve a "supercached" file if it exists and it's almost as fast as the mod_rewrite method. It's easier to configure as the .htaccess file doesn't need to be changed. You still need a custom permalink. You can keep portions of your page dynamic in this caching mode. +3. WP-Cache caching. This is mainly used to cache pages for known users, URLs with parameters and feeds. Known users are logged in users, visitors who leave comments or those who should be shown custom per-user data. It's the most flexible caching method and slightly slower. WP-Cache caching will also cache visits by unknown users if supercaching is disabled. You can have dynamic parts to your page in this mode too. This mode is always enabled but you can disable caching for known users, URLs with parameters, or feeds separately. Set the constant "DISABLE_SUPERCACHE" to 1 in your wp-config.php if you want to only use WP-Cache caching. + +If you're not comfortable with editing PHP files then use simple mode. It's easy to set up and very fast. + +### Recommended Settings ### +1. Simple caching. +2. Compress pages. +3. Don't cache pages for known users. +4. Cache rebuild. +5. CDN support. +6. Extra homepage checks. + +Garbage collection is the act of cleaning up cache files that are out of date and stale. There's no correct value for the expiry time but a good starting point is 1800 seconds. + +Consider deleting the contents of the "Rejected User Agents" text box and allow search engines to cache files for you. + +Preload as many posts as you can and enable "Preload Mode". Garbage collection of old cached files will be disabled. If you don't care about sidebar widgets updating often set the preload interval to 2880 minutes (2 days) so all your posts aren't recached very often. When the preload occurs the cache files for the post being refreshed is deleted and then regenerated. Afterwards a garbage collection of all old files is performed to clean out stale cache files. +Even with preload mode enabled cached files will still be deleted when posts are modified or comments made. + +### Development ### +* Active development of this plugin is handled [on GitHub](https://github.com/Automattic/wp-super-cache). +* Translation of the plugin into different languages is on the [translation page](https://translate.wordpress.org/projects/wp-plugins/wp-super-cache). + +### Documentation ### +If you need more information than the following, you can have a look at [the wiki](https://github.com/Automattic/wp-super-cache/wiki) or the [Developer documentation](https://odd.blog/wp-super-cache-developers/). + +#### Preloading #### +You can generate cached files for the posts, categories and tags of your site by preloading. Preloading will visit each page of your site generating a cached page as it goes along, just like any other visitor to the site. Due to the sequential nature of this function, it can take some time to preload a complete site if there are many posts. +To make preloading more effective it can be useful to disable garbage collection so that older cache files are not deleted. This is done by enabling "Preload Mode" in the settings. Be aware however, that pages will go out of date eventually but that updates by submitting comments or editing posts will clear portions of the cache. + +#### Garbage Collection #### +Your cache directory fills up over time, which takes up space on your server. If space is limited or billed by capacity, or if you worry that the cached pages of your site will go stale then garbage collection has to be done. Garbage collection happens on a regular basis and deletes old files in the cache directory. On the advanced settings page you can specify: +1. Cache timeout. How long cache files are considered fresh for. After this time they are stale and can be deleted. +2. Scheduler. Setup how often garbage collection should be done. +3. Notification emails. You can be informed on garbage collection job progress. +There's no right or wrong settings for garbage collection. It depends on your own site. +If your site gets regular updates, or comments then set the timeout to 1800 seconds, and set the timer to 600 seconds. +If your site is mostly static you can disable garbage collection by entering 0 as the timeout, or use a really large timeout value. + +The cache directory, usually wp-content/cache/ is only for temporary files. Do not ever put important files or symlinks to important files or directories in that directory. They will be deleted if the plugin has write access to them. + +#### CDN #### +A Content Delivery Network (CDN) is usually a network of computers situated around the world that will serve the content of your website faster by using servers close to you. Static files like images, Javascript and CSS files can be served through these networks to speed up how fast your site loads. You can also create a "poor man's CDN" by using a sub domain of your domain to serve static files too. + +[OSSDL CDN off-linker](https://wordpress.org/plugins/ossdl-cdn-off-linker/) has been integrated into WP Super Cache to provide basic CDN support. It works by rewriting the URLs of files (excluding .php files) in wp-content and wp-includes on your server so they point at a different hostname. Many CDNs support [origin pull](https://www.google.com/search?hl=en&q=%22origin+pull%22). This means the CDN will download the file automatically from your server when it's first requested, and will continue to serve it for a configurable length of time before downloading it again from your server. + +Configure this on the "CDN" tab of the plugin settings page. This is an advanced technique and requires a basic understanding of how your webserver or CDNs work. Please be sure to clear the file cache after you configure the CDN. + +#### REST API #### +There are now REST API endpoints for accessing the settings of this plugin. You'll need to be authenticated as an admin user with permission to view the settings page to use it. This has not been documented yet but you can find all the code that deals with this in the "rest" directory. + +#### Custom Caching #### +It is now possible to hook into the caching process using the add_cacheaction() function. + +Three hooks are available: + +1. 'wp_cache_get_cookies_values' - modify the key used by WP Cache. +2. 'add_cacheaction' - runs in phase2. Allows a plugin to add WordPress hooks. +3. 'cache_admin_page' - runs in the admin page. Use it to modify that page, perhaps by adding new configuration options. + +There is one regular WordPress filter too. Use the "do_createsupercache" filter +to customize the checks made before caching. The filter accepts one parameter. +The output of WP-Cache's wp_cache_get_cookies_values() function. + +WP Super Cache has its own plugin system, loaded before most of WordPress. Add your own plugin either by putting it in the wp-content/plugins/wp-super-cache-plugins directory, or by calling wpsc_add_plugin( $name ) with the full path to the plugin. + +The cookies used to identify "known users" can be modified with wpsc_add_cookie( $name ) and wpsc_delete_cookie( $name ). See [plugins/searchengine.php](https://github.com/Automattic/wp-super-cache/blob/4cda5c0f2218e40e118232b5bf22d227fb3206b7/plugins/searchengine.php) as an example. + +### Troubleshooting ### +If things don't work when you installed the plugin here are a few things to check: + +1. Is wp-content writable by the web server? +2. Is there a wp-content/wp-cache-config.php ? If not, copy the file wp-super-cache/wp-cache-config-sample.php to wp-content/wp-cache-config.php and make sure WPCACHEHOME points at the right place. +3. Is there a wp-content/advanced-cache.php ? If not, then you must copy wp-super-cache/advanced-cache.php into wp-content/. You must edit the file and change the path so it points at the wp-super-cache folder. +4. If pages are not cached at all, remove wp-content/advanced-cache.php and recreate it, following the advice above. +5. Make sure the following line is in wp-config.php and it is ABOVE the "require_once(ABSPATH.'wp-settings.php');" line: + + `define( 'WP_CACHE', true );` +6. Try the Settings->WP Super Cache page again and enable cache. +7. Look in wp-content/cache/supercache/. Are there directories and files there? +8. Anything in your php error_log? +9. If your browser keeps asking you to save the file after the super cache is installed you must disable Super Cache compression. Go to the Settings->WP Super Cache page and disable it there. +10. File locking errors such as "failed to acquire key 0x152b: Permission denied in..." or "Page not cached by WP Super Cache. Could not get mutex lock." are a sign that you may have to use file locking. Edit wp-content/wp-cache-config.php and uncomment "$use_flock = true" or set $sem_id to a different value. You can also disable file locking from the Admin screen as a last resort. +11. Make sure cache/wp_cache_mutex.lock is writable by the web server if using coarse file locking. +12. The cache folder cannot be put on an NFS or Samba or NAS share. It has to be on a local disk. File locking and deleting expired files will not work properly unless the cache folder is on the local machine. +13. Garbage collection of old cache files won't work if WordPress can't find wp-cron.php. Check your access_logs for wp-cron.php entries and that your hostname resolves to the external IP address other servers on the network/Internet use. +14. If old pages are being served to your visitors via the supercache, you may be missing Apache modules (or their equivalents if you don't use Apache). 3 modules are required: mod_mime, mod_headers and mod_expires. The last two are especially important for making sure browsers load new versions of existing pages on your site. +15. The error message, "WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed!" appears at the end of every page. Open the file wp-content/advanced-cache.php in your favourite editor. Is the path to wp-cache-phase1.php correct? This file will normally be in wp-content/plugins/wp-super-cache/. If it is not correct the caching engine will not load. +16. Caching doesn't work. The timestamp on my blog keeps changing when I reload. Check that the path in your .htaccess rules matches where the supercache directory is. You may have to hardcode it. Try disabling supercache mode. +17. If supercache cache files are generated but not served, check the permissions on all your wp-content/cache/supercache folders (and each of wp-content cache and supercache folders) and wp-content/cache/.htaccess. If your PHP runs as a different user to Apache and permissions are strict Apache may not be able to read the PHP generated cache files. To fix you must add the following line to your wp-config.php (Add it above the WP_CACHE define.) Then clear your cache. + + `umask( 0022 );` +18. If you see garbage in your browser after enabling compression in the plugin, compression may already be enabled in your web server. In Apache you must disable mod_deflate, or in PHP zlib compression may be enabled. You can disable that in three ways. If you have root access, edit your php.ini and find the zlib.output_compression setting and make sure it's "Off" or add this line to your .htaccess: + + `php_flag zlib.output_compression off` +If that doesn't work, add this line to your wp-config.php: + + `ini_set('zlib.output_compression', 0);` +19. After uninstalling, your permalinks may break if you remove the WordPress mod_rewrite rules too. Regenerate those rules by visiting the Settings->Permalink page and saving that form again. +20. If your blog refuses to load make sure your wp-config.php is correct. Are you missing an opening or closing PHP tag? +21. Your front page is ok but posts and pages give a 404? Go to Settings->permalinks and click "Save" once you've selected a custom permalink structure. You may need to manually update your .htaccess file. +22. If certain characters do not appear correctly on your website your server may not be configured correctly. You need to tell visitors what character set is used. Go to Settings->Reading and copy the 'Encoding for pages and feeds' value. Edit the .htaccess file with all your Supercache and WordPress rewrite rules and add this at the top, replacing CHARSET with the copied value. (for example, 'UTF-8') + + `AddDefaultCharset CHARSET` +23. The error message, "WP Super Cache is installed but broken. The constant WPCACHEHOME must be set in the file wp-config.php and point at the WP Super Cache plugin directory." appears at the end of every page. You can delete wp-content/advanced-cache.php and reload the plugin settings page or edit wp-config.php and look for WPCACHEHOME and make sure it points at the wp-super-cache folder. This will normally be wp-content/plugins/wp-super-cache/ but you'll likely need the full path to that file (so it's easier to let the settings page fix it). If it is not correct the caching engine will not load. +24. If your server is running into trouble because of the number of semaphores used by the plugin it's because your users are using file locking which is not recommended (but is needed by a small number of users). You can globally disable file locking by defining the constant WPSC_DISABLE_LOCKING, or defining the constant WPSC_REMOVE_SEMAPHORE so that sem_remove() is called after every page is cached but that seems to cause problems for other processes requesting the same semaphore. Best to disable it. +25. Set the variable $htaccess_path in wp-config.php or wp-cache-config.php to the path of your global .htaccess if the plugin is looking for that file in the wrong directory. This might happen if you have WordPress installed in an unusual way. + +## Installation ## +Install like any other plugin, directly from your plugins page but make sure you have custom permalinks enabled. Go to the plugin settings page at Settings->WP Super Cache and enable caching. + +### How to uninstall WP Super Cache ### +Almost all you have to do is deactivate the plugin on the plugins page. The plugin should clean up most of the files it created and modified, but it doesn't as yet remove the mod_rewrite rules from the .htaccess file. Look for the section in that file marked by SuperCache BEGIN and END tags. The plugin doesn't remove those because some people add the WordPress rules in that block too. + +To manually uninstall: + +1. Turn off caching on the plugin settings page and clear the cache. +2. Deactivate the plugin on the plugins page. +3. Remove the WP_CACHE define from wp-config.php. It looks like `define( 'WP_CACHE', true );` +4. Remove the Super Cache mod_rewrite rules from your .htaccess file. +5. Remove the files wp-content/advanced-cache.php and wp-content/wp-cache-config.php +6. Remove the directory wp-content/cache/ +7. Remove the directory wp-super-cache from your plugins directory. + +### If all else fails and your site is broken ### +1. Remove the WP_CACHE define from wp-config.php. It looks like `define( 'WP_CACHE', true );` +2. Remove the rules (see above) that the plugin wrote to the .htaccess file in your root directory. +3. Delete the wp-super-cache folder in the plugins folder. +4. Optionally delete advanced-cache.php, wp-cache-config.php and the cache folder in wp-content/. + + +## Frequently Asked Questions ## + +### How do I know my blog is being cached? ### +Go to Settings -> WP Super Cache and look for the "Cache Tester" form on the easy settings page. Click "Test Cache" and the plugin will request the front page of the site twice, comparing a timestamp on each to make sure they match. + +If you want to do it manually, enable debugging in the plugin settings page and load the log file in a new browser tab. Then view your blog while logged in and logged out. You should see activity in the log. View the source of any page on your site. When a page is first created, you'll see the text "Dynamic page generated in XXXX seconds." and "Cached page generated by WP-Super-Cache on YYYY-MM-DD HH:MM:SS" at the end of the source code. On reload, a cached page will show the same timestamp so wait a few seconds before checking. +If Supercaching is disabled and you have compression enabled, the text "Compression = gzip" will be added. If compression is disabled and the page is served as a static html file, the text "super cache" will be added. The only other way to check if your cached file was served by PHP script or from the static cache is by looking at the HTTP headers. PHP cached pages will have the header "WP-Super-Cache: Served supercache file from PHP". WPCache cached files will have the header, "WP-Super-Cache: Served WPCache cache file". You should also check your cache directory in wp-content/cache/supercache/hostname/ for static cache files. +If the plugin rules are missing from your .htaccess file, the plugin will attempt to serve the super cached page if it's found. The header "WP-Super-Cache: Served supercache file from PHP" if this happens. +The pagespeed module for Apache may cause problems when testing. Disable it if you notice any problems running the cache tester. + +### How do I disable Supercaching? ### +If you only want to use the WP-Cache engine then edit your wp-config.php or create an mu-plugin that sets the constant 'DISABLE_SUPERCACHE' to 1. + +### WP-Cache vs Supercache files ### +All cache files are stored in wp-content/cache/supercache/HOSTNAME/ where HOSTNANE is your domain name. The files are stored in directories matching your site's permalink structure. Supercache files are index.html or some variant of that, depending on what type of visitor hit the blog. Other files are named wp-cache-XXXXXXXXXXXXXXXXX.php. Associated meta filesnames start with "meta". Those files contain information about the cached file. These files are generated by the "WPCache caching" engine in the plugin. + +### Will comments and other dynamic parts of my blog update immediately? ### +Comments will show as soon as they are moderated, depending on the comment policy of the blog owner. Other dynamic elements on a page may not update unless they are written in Javascript, Flash, Java or another client side browser language. The plugin really produces static html pages. No PHP is executed when those pages are served. "Popularity Contest" is one such plugin that will not work. + +### Will the Super Cache compression slow down my server? ### +No, it will do the opposite. Super Cache files are compressed and stored that way so the heavy compression is done only once. These files are generally much smaller and are sent to a visitor's browser much more quickly than uncompressed html. As a result, your server spends less time talking over the network which saves CPU time and bandwidth, and can also serve the next request much more quickly. + +### How do I make certain parts of the page stay dynamic? ### +Note: this functionality is disabled by default. You will have to enable it on the Advanced Settings page. + +There are 2 ways of doing this. You can use Javascript to draw the part of the page you want to keep dynamic. That's what Google Adsense and many widgets from external sites do and is the recommended way. Or you can use a WP Super Cache filter to do the job but you can't use mod_rewrite mode caching. You have to use the "simple" delivery method or disable supercaching. + +WP Super Cache 1.4 introduced a cacheaction filter called wpsc_cachedata. The cached page to be displayed goes through this filter and allows modification of the page. If the page contains a placeholder tag the filter can be used to replace that tag with your dynamically generated html. +The function that hooks on to the wpsc_cachedata filter should be put in a file in the WP Super Cache plugins folder unless you use the late_init feature. An example plugin is included. Edit [dynamic-cache-test.php](http://svn.wp-plugins.org/wp-super-cache/trunk/plugins/dynamic-cache-test.php) to see the example code. +There are two example functions there. There's a simple function that replaces a string (or tag) you define when the cached page is served. The other example function uses an output buffer to generate the dynamic content. Due to a limitation in how PHP works the output buffer code MUST run before the wpsc_cachedata filter is hit, at least for when a page is cached. It doesn't matter when serving cached pages. See [this post](https://odd.blog/y/6j) for a more technical and longer explanation. +To execute WordPress functions you must enable the 'Late init' feature on the advanced settings page. + +### How do I delay serving the cache until the "init" action fires? ### +Cached files are served before almost all of WordPress is loaded. While that's great for performance it's a pain when you want to extend the plugin using a core part of WordPress. Enable 'Late init' mode on the Advanced settings page and cached files will be served when "init" fires. WordPress and it's plugins will be loaded now. + +### Why don't WP UserOnline, Popularity Contest, WP Postratings or plugin X not work or update on my blog now? ### +This plugin caches entire pages but some plugins think they can run PHP code every time a page loads. To fix this, the plugin needs to use Javascript/AJAX methods or the wpsc_cachedata filter described in the previous answer to update or display dynamic information. + +### Why do my WP Super Cache plugins disappear when I upgrade the plugin? ### +WordPress deletes the plugin folder when it updates a plugin. This is the same with WP Super Cache so any modified files in wp-super-cache/plugins/ will be deleted. You can put your custom plugins in a different directory in a number of ways. You can define the variable $wp_cache_plugins_dir in wp-config.php or wp-content/wp-cache-config.php and point it at a directory outside of the wp-super-cache folder. The plugin will look there for it's plugins. Or if you distribute a plugin that needs to load early you can use the function `wpsc_add_plugin( $filename )` to add a new plugin wherever it may be. Use `wpsc_delete_plugin( $filename )` to remove the plugin file. See [#574](https://github.com/Automattic/wp-super-cache/pull/574/) or [this post](https://odd.blog/2017/10/25/writing-wp-super-cache-plugins/) on writing WP Super Cache plugins. + +### What does the Cache Rebuild feature do? ### +When a visitor leaves a comment the cached file for that page is deleted and the next visitor recreates the cached page. A page takes time to load so what happens if it receives 100 visitors during this time? There won't be a cached page so WordPress will serve a fresh page for each user and the plugin will try to create a cached page for each of those 100 visitors causing a huge load on your server. This feature stops this happening. The cached page is not cleared when a comment is left. It is marked for rebuilding instead. The next visitor within the next 10 seconds will regenerate the cached page while the old page is served to the other 99 visitors. The page is eventually loaded by the first visitor and the cached page updated. See [this post](https://odd.blog/2009/01/23/wp-super-cache-089/) for more. + +### Why doesn't the plugin cache requests by search engine bots by default? ### +Those bots usually only visit each page once and if the page is not popular there's no point creating a cache file that will sit idle on your server. However you can allow these visits to be cached by removing the list of bots from "Rejected User Agents" on the Advanced settings page. + +### A category page is showing instead of my homepage ### +A tiny proportion of websites will have problems with the following configuration: + +1. Uses a static page for the front page. +2. Uses /%category%/%postname%/ permalink structure. + +Sometimes a category page is cached as the homepage of the site instead of the static page. I can't [replicate the problem](https://wordpress.org/support/topic/237415/page/2?replies=38) but a simple solution is to use the "Simple" mode. You can also enable "Extra homepage checks" on the Advanced Settings page. + +### Why do I get warnings about caching from http://ismyblogworking.com/ ### +"Your blog doesn't support client caching (no 304 response to If-modified-since)." +"Your feed doesn't support caching (no 304 response to If-modified-since)" + +Supercache doesn't support 304 header checks in Expert mode but does support it in Simple mode. This is caching done by your browser, not the server. It is a check your browser does to ask the server if an updated version of the current page is available. If not, it doesn't download the old version again. The page is still cached by your server, just not by your visitors' browsers. +Try the Cacheability Engine at http://www.ircache.net/cgi-bin/cacheability.py or https://redbot.org/ for further analysis. + +### How should I best use the utm_source tracking tools in Google Analytics with this plugin? ### +That tracking adds a query string to each url linked from various sources like Twitter and feedreaders. Unfortunately it stops pages being supercached. See [Joost's comment here](https://odd.blog/remove-unused-utmsource-urls/#comment-672813) for how to turn it into an anchor tag which can be supercached. + +### The plugin complains that wp-content is writable! htdocs is writable! ### +It's not good when the web server can write to these directories but sometimes shared hosting accounts are set up in this way to make administration easier. Use `chmod 755 directory` to fix the permissions or find the permissions section of your ftp client. This [Google search](https://www.google.com/search?sourceid=chrome&ie=UTF-8&q=ftp+fix+directory+permissions+755) will lead you to more information on this topic and there's also [this codex page](https://codex.wordpress.org/Changing_File_Permissions) too. Unfortunately some hosts require that those directories be writable. If that's the case just ignore this warning. + +### How do I delete the WP_CACHE define from wp-config.php? ### +Load your desktop ftp client and connect to your site. Navigate to the root (or the directory below it) of your site where you'll find wp-config.php. Download that file and edit it in a text editor. Delete the line `define( 'WP_CACHE', true );` and save the file. Now upload it, overwriting the wp-config.php on your server. + +### How do I delete the Super Cache rules from the .htaccess file? ### +Load your desktop ftp client and connect to your site. You may need to enable "Show hidden files" in the preferences of the ftp client. Navigate to the root of your site where you'll find the .htaccess file. Download that file and edit it in a text editor. Delete the lines between "# BEGIN WPSuperCache" and "# END WPSuperCache" and save the file. Now upload it, overwriting the .htaccess file on your server. + +### How do I change file permissions? ### +This [page](https://codex.wordpress.org/Changing_File_Permissions) on the WordPress Codex explains everything you need to know about file permissions on your server and various ways of changing them. + +### Why do I get load spikes when new posts are made? ### +You may have the "clear all cached files when new posts are made" option set. Clearing those files can take time plus your visitors will now be visiting uncached pages. Are you using Google Analytics campaign tracking with utm_source in the url? Those pages aren't cached. See the question, "How should I best use the utm_source tracking tools in Google Analytics with this plugin" above for how to use them properly. +Cached pages have to be refreshed when posts are made. Perhaps your server just isn't up to the job of serving the amount of traffic you get. Enable the "cache rebuild" feature as that may help. + +### How many pages can I cache? ### +The only real limit are limits defined by your server. For example, EXT2 and EXT3 allow a maximum of 31,999 sub directories so if you have a flat permalink structure (like /%POSTNAME%/) and more than 32,000 posts you may run into problems. Likewise, if you run a multisite network and have more than 31,999 sites (blogs) you won't be able to cache all of them. Realistically if you had that many active sites you wouldn't be running on one server. + +### I can see that the www version of my site is cached separately. How do I stop that? ### +WordPress should redirect to the canonical URL of your site but if it doesn't, add this to your .htaccess above the Supercache and WordPress rules. Change example.com to your own hostname. +`RewriteCond %{HTTP_HOST} www.example.com$ [NC]` +`RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]` + +### How do I serve cached mobile pages to clients on small screens like phones and tablets? ### +Your theme is probably responsive which means it resizes the page to suit whatever device is displaying the page. If it's not responsive, you'll have to use a separate mobile plugin to render a page formatted for those visitors. The following plugins have been tested but YMMV depending on mobile client. You'll have to enable mobile browser support as well on the Advanced settings page. + +* [Jetpack's Mobile Theme Module](https://wordpress.org/plugins/jetpack/) +* [WPTouch](https://wordpress.org/plugins/wptouch/) +* [WordPress Mobile Edition](https://wordpress.org/plugins/wordpress-mobile-edition/) +* [WordPress Mobile Pack](https://wordpress.org/plugins/wordpress-mobile-pack/) (can't have "Don't cache pages for known users." enabled) + + +== Changelog == +### 3.1.0 - 2026-04-14 +- Disable caching for wp_die() error pages +- Harden the plugin in various ways. +- Fix: use fileperms() instead of stat() and fix escaping +- Add WordPress.org Live Preview Blueprint. +- Minimum WordPress version bumped to 6.8. +- Device Detection: use an embedded version instead of the Composer dependency. +- Fix: str_starts_with() null deprecation on PHP 8.1+. +- Fix: handle array type for supercache_last_cached option. + +-------- + +[See previous releases on GitHub.](https://github.com/Automattic/wp-super-cache/releases) diff --git a/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-delete-cache.php b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-delete-cache.php new file mode 100644 index 0000000..255458f --- /dev/null +++ b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-delete-cache.php @@ -0,0 +1,35 @@ +get_json_params(); + + if ( isset( $params['id'] ) && is_numeric( $params['id'] ) ) { + wpsc_delete_post_cache( $params['id'] ); + + } elseif ( !empty( $params['expired'] ) ) { + global $file_prefix; + wp_cache_clean_expired( $file_prefix ); + + } elseif ( isset( $params['url'] ) ) { + global $cache_path; + + $directory = $cache_path . 'supercache/' . $params[ 'url' ]; + wpsc_delete_files( $directory ); + prune_super_cache( $directory . '/page', true ); + + } else { + global $file_prefix; + wp_cache_clean_cache( $file_prefix, !empty( $params['all'] ) ); + } + + return rest_ensure_response( array( 'Cache Cleared' => true ) ); + } +} diff --git a/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-cache.php b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-cache.php new file mode 100644 index 0000000..2cad9ed --- /dev/null +++ b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-cache.php @@ -0,0 +1,45 @@ + $file_list ) { + foreach ( $file_list as $state => $value ) { + if ( is_array( $value ) ) { + foreach( $value as $filenames ) { + foreach( $filenames as $filename => $t ) { + if ( $type == 'wpcache' ) { + $filename = dirname( $filename ); + } + if ( false == isset( $return_list[ $type ][ $state ] ) || false == in_array( $filename, $return_list[ $type ][ $state ] ) ) + $return_list[ $type ][ $state ][] = $filename; + } + } + } + } + + if ( isset ( $return_list[ $type ] ) ) { + $list[ $type ] = $return_list[ $type ]; + } + + unset( $return_list[ $type ] ); + } + + return rest_ensure_response( $list ); + } +} diff --git a/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-plugins.php b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-plugins.php new file mode 100644 index 0000000..005d44e --- /dev/null +++ b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-plugins.php @@ -0,0 +1,16 @@ +get_is_lock_down_enabled() . " );", $wp_cache_config_file ); + } + } + + if ( function_exists( "opcache_invalidate" ) ) { + @opcache_invalidate( $wp_cache_config_file ); + } + include( $wp_cache_config_file ); + + foreach ( WP_Super_Cache_Settings_Map::$map as $name => $map ) { + if ( isset ( $map['get'] ) ) { + $get_method = $map['get']; + + if ( method_exists( $this, $get_method ) ) { + $settings[ $name ] = $this->$get_method(); + + } elseif ( function_exists( $get_method ) ) { + $settings[ $name ] = $get_method(); + } + + } else if ( isset ( $map['option'] ) ) { + $settings[ $name ] = get_option( $map['option'] ); + + } elseif ( isset( $map['global'] ) ) { + if ( false == isset( $GLOBALS[ $map[ 'global' ] ] ) ) { + $settings[ $name ] = false; + } else { + $settings[ $name ] = $GLOBALS[ $map[ 'global' ] ]; + } + } + } + + return $this->prepare_item_for_response( $settings, $request ); + } + + /** + * @return string + */ + public function get_ossdl_off_blog_url() { + $url = get_option( 'ossdl_off_blog_url' ); + if ( ! $url ) + $url = apply_filters( 'ossdl_off_blog_url', untrailingslashit( get_option( 'siteurl' ) ) ); + return $url; + } + + /** + * @return string + */ + public function get_cache_path_url() { + global $cache_path; + + return site_url( str_replace( ABSPATH, '', "{$cache_path}" ) ); + } + + /** + * @return string + */ + public function get_cache_type() { + global $wp_cache_config_file; + if ( function_exists( "opcache_invalidate" ) ) { + @opcache_invalidate( $wp_cache_config_file ); + } + include( $wp_cache_config_file ); + + if ( $wp_cache_mod_rewrite == 1 ) { + return 'mod_rewrite'; + } else { + return 'PHP'; + } + } + + /** + * Prepare the item for the REST response + * + * @param mixed $item WordPress representation of the item. + * @param WP_REST_Request $request Request object. + * @return mixed + */ + public function prepare_item_for_response( $item, $request ) { + $settings = array(); + + $integers = array( 'cache_max_time', 'preload_interval' ); + $string_arrays = array( 'cache_stats', 'cache_acceptable_files', 'cache_rejected_uri', 'cache_rejected_user_agent', + 'cache_direct_pages' ); + foreach( $item as $key => $value ) { + if ( is_array( $value ) && false == in_array( $key, $string_arrays ) ) { + array_walk( $value, array( $this, 'make_array_bool' ) ); + + } elseif ( ( $value === 0 || $value === 1 ) && false == in_array( $key, $integers ) ) { + $value = (bool)$value; + } + + $settings[ $key ] = $value; + } + + $strings_to_bool = array( 'ossdl_https', 'refresh_current_only_on_comments' ); + foreach( $strings_to_bool as $key ) { + if ( isset( $settings[ $key ] ) ) { + $settings[ $key ] = (bool)$settings[ $key ]; + } + } + + return rest_ensure_response( $settings ); + } + + /** + * @param mixed $value + * @param string $key + */ + public function make_array_bool( &$value, $key ) { + if ( $value == 0 || $value == 1 ) { + $value = (bool) $value; + } + } + + /** + * @return bool + */ + protected function get_is_submit_enabled() { + global $wp_cache_config_file; + return is_writeable_ACLSafe( $wp_cache_config_file ); + } + + /** + * @return bool + */ + protected function get_is_preload_enabled() { + return false === defined( 'DISABLESUPERCACHEPRELOADING' ); + } + + /** + * @return false|int + */ + protected function get_next_gc() { + return wp_next_scheduled( 'wp_cache_gc' ); + } + + /** + * @return int + */ + protected function get_is_preload_active() { + if ( wp_next_scheduled( 'wp_cache_preload_hook' ) || wp_next_scheduled( 'wp_cache_full_preload_hook' ) ) { + return true; + } else { + return false; + } + } + + /** + * @return int + */ + protected function get_minimum_preload_interval() { + global $wpdb; + $count = $this->get_post_count(); + if ( $count > 1000 ) { + $min_refresh_interval = 720; + } else { + $min_refresh_interval = 30; + } + + return $min_refresh_interval; + } + + /** + * @return int + */ + protected function get_is_lock_down_enabled() { + if ( defined( 'WPLOCKDOWN' ) ) { + return constant( 'WPLOCKDOWN' ) ? 1 : 0; + } + + return 0; + } + + /** + * @return int + */ + protected function get_post_count() { + return wpsc_post_count(); + } + + /** + * @return string + */ + protected function get_default_cache_path() { + return WP_CONTENT_DIR . '/wp-cache/'; + } +} diff --git a/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-stats.php b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-stats.php new file mode 100644 index 0000000..811f5a5 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-get-stats.php @@ -0,0 +1,18 @@ +add_rewrite_status( $status ); + $this->add_cache_disabled_status( $status ); + $this->add_compression_status( $status ); + $this->add_php_mod_rewrite_status( $status ); + $this->add_preload_status( $status ); + + if ( empty( $status ) ) { + return rest_ensure_response( new stdclass() ); + } else { + return rest_ensure_response( $status ); + } + } + + /** + * @param array $status + */ + protected function add_preload_status( & $status ) { + global $wp_cache_config_file; + + include( $wp_cache_config_file ); + + if ( false == $cache_enabled ) { + $status[ 'preload_disabled_cache_off' ] = true; + } + if ( false == $super_cache_enabled ) { + $status[ 'preload_disabled_supercache_off' ] = true; + } + if ( true === defined( 'DISABLESUPERCACHEPRELOADING' ) ) { + $status[ 'preload_disabled_by_admin' ] = true; + } + } + + /** + * @param array $status + */ + protected function add_php_mod_rewrite_status( & $status ) { + global $wp_cache_config_file; + + include( $wp_cache_config_file ); + + if ( $cache_enabled && !$wp_cache_mod_rewrite ) { + $scrules = trim( implode( "\n", extract_from_markers( trailingslashit( get_home_path() ) . '.htaccess', 'WPSuperCache' ) ) ); + if ( $scrules != '' ) { + $status[ 'php_mod_rewrite' ] = true; + } + } + } + + /** + * @param array $status + */ + protected function add_cache_disabled_status( & $status ) { + global $wp_cache_config_file; + + if ( ! is_writeable_ACLSafe( $wp_cache_config_file ) ) { + $status['cache_disabled'] = true; + } + } + + /** + * @param array $status + */ + protected function add_compression_status( & $status ) { + if ( defined( 'WPSC_DISABLE_COMPRESSION' ) ) { + $status['compression_disabled_by_admin'] = true; + } elseif ( false == function_exists( 'gzencode' ) ) { + $status['compression_disabled_no_gzencode'] = true; + } + } + + /** + * @param array $status + */ + protected function add_rewrite_status( & $status ) { + global $home_path, $wp_cache_config_file; + + include( $wp_cache_config_file ); + + // Return if the rewrite caching is disabled. + if ( ! $cache_enabled || ! $super_cache_enabled || ! $wp_cache_mod_rewrite ) { + return; + } + + $scrules = implode( "\n", extract_from_markers( $home_path . '.htaccess', 'WPSuperCache' ) ); + extract( wpsc_get_htaccess_info() ); + + if ( $scrules != $rules ) { + $status[ 'mod_rewrite_rules' ] = true; + } + $got_rewrite = apache_mod_loaded( 'mod_rewrite', true ); + if ( $wp_cache_mod_rewrite && false == apply_filters( 'got_rewrite', $got_rewrite ) ) { + $status[ 'mod_rewrite_missing' ] = true; + } + + if ( !is_writeable_ACLSafe( $home_path . ".htaccess" ) ) { + $status[ 'htaccess_ro' ] = true; + } + } +} diff --git a/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-preload.php b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-preload.php new file mode 100644 index 0000000..3e0214e --- /dev/null +++ b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-preload.php @@ -0,0 +1,31 @@ +get_json_params(); + + if ( defined( 'DISABLESUPERCACHEPRELOADING' ) ) { + wp_cache_debug( 'WP_Super_Cache_Rest_Preload: preload disabled by admin' ); + return rest_ensure_response( array( 'error' => 'preload disabled by admin' ) ); + } + + if ( isset( $parameters[ 'enable' ] ) ) { + if ( $parameters[ 'enable' ] == true ) { + wp_cache_debug( 'WP_Super_Cache_Rest_Preload: enable' ); + wpsc_enable_preload(); + return( rest_ensure_response( array( 'enabled' => true ) ) ); + } else { + wp_cache_debug( 'WP_Super_Cache_Rest_Preload: cancel' ); + wpsc_cancel_preload(); + return( rest_ensure_response( array( 'enabled' => false ) ) ); + } + } + } +} diff --git a/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-test-cache.php b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-test-cache.php new file mode 100644 index 0000000..64fd427 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-test-cache.php @@ -0,0 +1,97 @@ + 'UNKNOWN' ); + $has_errors = false; + + $attempts = array( 'prime', 'first', 'second' ); + + $c = 0; + foreach ( $attempts as $attempt_name ) { + $attempt = array(); + $page[ $c ] = wp_remote_get( $url, array('timeout' => 60, 'blocking' => true ) ); + + if ( ! is_wp_error( $page[ $c ] ) ) { + $fp = fopen( $cache_path . $c . ".html", "w" ); + fwrite( $fp, $page[ $c ][ 'body' ] ); + fclose( $fp ); + } + + if ( is_wp_error( $page[ $c ] ) ) { + $has_errors = true; + $attempt['status'] = false; + $attempt['errors'] = $this->format_error( $page[ $c ] ); + + } elseif ( $page[ $c ]['response']['code'] != 200 ) { + $has_errors = true; + $attempt['status'] = false; + $attempt['errors'] = array( $page[ $c ]['response']['message'] ); + + // Don't run this step on prime cache. + } elseif ( 0 !== $c && 0 === preg_match( '/(Cached page generated by WP-Super-Cache on) ([0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*)/', $page[ $c ]['body'], $matches2 ) ) { + $has_errors = true; + $attempt['status'] = false; + $attempt['errors'] = array( __( 'Timestamps not found', 'wp-super-cache' ) ); + + } else { + $attempt['status'] = true; + } + + + $response[ 'attempts' ][ $attempt_name ] = $attempt; + ++$c; + } + + if ( + false == $has_errors && + preg_match( '/(Cached page generated by WP-Super-Cache on) ([0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*)/', $page[ 1 ][ 'body' ], $matches1 ) && + preg_match( '/(Cached page generated by WP-Super-Cache on) ([0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*)/', $page[ 2 ][ 'body' ], $matches2 ) && + $matches1[2] == $matches2[2] + ) { + $response[ 'status' ] = true; + } else { + $response[ 'status' ] = false; + $response[ 'error' ] = array( __( 'Timestamps do not match', 'wp-super-cache' ) ); + } + + $error = ''; + if ( $response[ 'status' ] == false ) { + if ( isset( $response[ 'error' ] ) ) { + $error = $response[ 'error' ]; + } else { + foreach( $response[ 'attempts' ] as $attempt ) { + $error .= $attempt[ 'errors' ] . "\n"; + } + } + return new WP_Error( 'test_error', $error, array( 'status' => 500 ) ); + } + return rest_ensure_response( $response ); + } + + /** + * @param WP_Error $error + * @return array + */ + protected function format_error( WP_Error $error ) { + $messages = array(); + foreach ( $error->get_error_codes() as $code ) { + foreach ( $error->get_error_messages( $code ) as $err ) { + $messages[] = $err; + } + } + + return $messages; + } +} diff --git a/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-update-plugins.php b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-update-plugins.php new file mode 100644 index 0000000..d113233 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-update-plugins.php @@ -0,0 +1,22 @@ +get_json_params(); + + global $valid_nonce; + $valid_nonce = true; + + wpsc_update_plugin_list( $parameters ); + $list = wpsc_get_plugin_list(); + + return rest_ensure_response( $list ); + } +} diff --git a/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-update-settings.php b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-update-settings.php new file mode 100644 index 0000000..4f2ea5f --- /dev/null +++ b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-rest-update-settings.php @@ -0,0 +1,652 @@ +get_json_params(); + + // Override to force locking. + if ( defined( 'WPSC_DISABLE_LOCKING' ) ) { + $parameters['cache_disable_locking'] = 1; + } + + // Set the nonce to valid, so that form sets will work later. + global $valid_nonce; + $valid_nonce = true; + + $errors = array(); + + if ( isset( $parameters['easy'] ) ) { + $errors = $this->toggle_easy_caching( $parameters['easy'] ); + + } elseif ( isset( $parameters[ 'reset' ] ) ) { + $errors = $this->restore_default_settings( $parameters ); + + } else { + + foreach ( $parameters as $name => $value ) { + $has_error = $this->set_value_by_key( $value, $name ); + + if ( false == is_numeric( $has_error ) && false == is_bool( $has_error ) ) { + $errors[] = $has_error; + } + } + + $this->save_time_settings( $parameters ); + $this->save_preload_settings(); + $this->set_debug_settings( $parameters ); + } + + if ( ! empty( $errors ) ) { + return rest_ensure_response( $errors ); + + } else { + $get_settings = new WP_Super_Cache_Rest_Get_Settings(); + return $get_settings->callback( $request ); + } + } + + /** + * Given a key and a value, set the value for that key, based on + * the configuration in the settings map. + * + * @param mixed $value + * @param string $key + * + * @return string|null + */ + protected function set_value_by_key( $value, $key ) { + + $settings_map = WP_Super_Cache_Settings_Map::$map; + + // If this parameter isn't in the map, then let's ignore it. + if ( ! isset( $settings_map[ $key ] ) ) { + return null; + } + + $map = $settings_map[ $key ]; + + if ( isset( $map['set'] ) ) { + if ( method_exists( $this, $map['set'] ) ) { + $has_error = call_user_func( array( $this, $map['set'] ), $value, $key ); + + } elseif ( function_exists( $map['set'] ) ) { + $has_error = call_user_func( $map['set'], $value ); + + } + } elseif ( isset( $map['global'] ) ) { + + $set_method = method_exists( $this, 'set_' . $map['global'] ) ? + 'set_' . $map['global'] : 'set_global'; + if ( $set_method == 'set_global' ) { + $has_error = call_user_func( array( $this, $set_method ), $key, $value ); + } else { + $has_error = call_user_func( array( $this, $set_method ), $value ); + } + } + + if ( ! empty( $has_error ) ) { + return $has_error; + } + + return null; + } + + /** + * A generic method for setting globals. + * + * The setting must be added to the whitelist in order to be set this way. + * + * @param string $global_name + * @param mixed $value + */ + protected function set_global( $global_name, $value ) { + $whitelist = array( + 'wp_super_cache_late_init', + 'wp_cache_disable_utf8', + 'wp_cache_no_cache_for_get', + 'wp_supercache_304', + 'wp_cache_mfunc_enabled', + 'wp_cache_mobile_enabled', + 'wp_cache_front_page_checks', + 'wp_supercache_cache_list', + 'wp_cache_hello_world', + 'wp_cache_clear_on_post_edit', + 'cache_rebuild_files', + 'wp_cache_refresh_single_only', + 'wp_cache_mutex_disabled', + 'wpsc_save_headers', + ); + + if ( ! in_array( $global_name, $whitelist ) ) { + return false; + } + + wp_cache_setting( $global_name, (int)$value ); + } + + /** + * @param mixed $value + */ + protected function set_wp_cache_location( $value ) { + global $cache_path; + + if ( $value != '' && ( ! isset( $cache_path ) || $value != $cache_path ) ) { + $dir = realpath( trailingslashit( dirname( $value ) ) ); + if ( $dir == false ) { + $dir = WP_CONTENT_DIR . '/cache/'; + + } else { + $dir = trailingslashit( $dir ) . trailingslashit( wpsc_deep_replace( array( + '..', + '\\' + ), basename( $value ) ) ); + } + + $new_cache_path = $dir; + + } else { + $new_cache_path = WP_CONTENT_DIR . '/cache/'; + } + + if ( $new_cache_path != $cache_path ) { + if ( file_exists( $new_cache_path ) == false ) { + rename( $cache_path, $new_cache_path ); + } + + $cache_path = $new_cache_path; + wp_cache_setting( 'cache_path', $cache_path ); + } + } + + /** + * @param mixed $value + */ + protected function set_cache_enabled( $value ) { + if ( $value != 1 ) { + wp_cache_disable(); + + return; + } + + wp_cache_enable(); + } + + /** + * @param mixed $value + */ + protected function set_lock_down( $value ) { + $_POST[ 'wp_lock_down' ] = (int)$value; + wp_update_lock_down(); + } + + /** + * @param mixed $value + */ + protected function set_super_cache_enabled( $value ) { + global $wp_cache_mod_rewrite; + + if ( is_numeric( $value ) == false ) { + $types = array( 'wpcache' => 0, 'mod_rewrite' => 1, 'PHP' => 2 ); + if ( isset( $types[ $value ] ) ) { + $value = $types[ $value ]; + } else { + return false; + } + } + + if ( $value === 0 ) { // WPCache + wp_super_cache_disable(); + + } else { + wp_super_cache_enable(); + $wp_cache_mod_rewrite = 0; // PHP recommended + + if ( $value == 1 ) { // mod_rewrite + $wp_cache_mod_rewrite = 1; + add_mod_rewrite_rules(); + + } elseif( $value == 2 ) { // PHP + remove_mod_rewrite_rules(); + + } + + wp_cache_setting( 'wp_cache_mod_rewrite', $wp_cache_mod_rewrite ); + } + return true; + } + + /** + * @param mixed $value + */ + protected function set_wp_cache_not_logged_in( $value ) { + global $wp_cache_not_logged_in, $cache_path; + + if ( 0 != $value ) { + if ( 0 == $wp_cache_not_logged_in && function_exists( 'prune_super_cache' ) ) { + prune_super_cache( $cache_path, true ); + } + + $wp_cache_not_logged_in = (int) $value; + + } else { + $wp_cache_not_logged_in = 0; + } + + wp_cache_setting( 'wp_cache_not_logged_in', $wp_cache_not_logged_in ); + } + + /** + * @param mixed $value + */ + protected function set_wp_cache_make_known_anon( $value ) { + global $wp_cache_make_known_anon, $cache_path; + + if ( 1 == $value ) { + if ( $wp_cache_make_known_anon == 0 && function_exists( 'prune_super_cache' ) ) { + prune_super_cache( $cache_path, true ); + } + + $wp_cache_make_known_anon = 1; + + } else { + $wp_cache_make_known_anon = 0; + } + + wp_cache_setting( 'wp_cache_make_known_anon', $wp_cache_make_known_anon ); + } + + /** + * @param mixed $value + */ + protected function set_wp_cache_object_cache( $value ) { + global $_wp_using_ext_object_cache, $wp_cache_object_cache, $cache_path; + + if ( ! $_wp_using_ext_object_cache ) { + return; + } + + if ( $value == 0 ) { + if ( function_exists( 'prune_super_cache' ) ) { + prune_super_cache( $cache_path, true ); + } + + $wp_cache_object_cache = 1; + + } else { + $wp_cache_object_cache = 0; + } + + wp_cache_setting( 'wp_cache_object_cache', $wp_cache_object_cache ); + } + + /** + * @param mixed $value + * + * @return null|string + */ + protected function set_cache_compression( $value ) { + global $cache_compression, $cache_path; + + $new_cache_compression = 0; + if ( defined( 'WPSC_DISABLE_COMPRESSION' ) ) { + $cache_compression = 0; + wp_cache_setting( 'cache_compression', $cache_compression ); + + } else { + if ( 1 == $value ) { + $new_cache_compression = 1; + } + + if ( 1 == ini_get( 'zlib.output_compression' ) || "on" == strtolower( ini_get( 'zlib.output_compression' ) ) ) { + return __( "You attempted to enable compression but `zlib.output_compression` is enabled. See #21 in the Troubleshooting section of the readme file.", 'wp-super-cache' ); + } + + if ( $new_cache_compression != $cache_compression ) { + $cache_compression = $new_cache_compression; + wp_cache_setting( 'cache_compression', $cache_compression ); + if ( function_exists( 'prune_super_cache' ) ) { + prune_super_cache( $cache_path, true ); + } + + delete_option( 'super_cache_meta' ); + } + } + + return null; + } + + /** + * @param array $cache_pages + */ + protected function set_wp_cache_pages( $cache_pages ) { + if ( ! is_array( $cache_pages ) ) { + return; + } + + $_POST['wp_edit_rejected_pages'] = 1; + + foreach ( $cache_pages as $page => $value ) { + if ( $value ) { + $_POST['wp_cache_pages'][ $page ] = 1; + } + } + + wp_cache_update_rejected_pages(); + } + + /** + * @param mixed $value + */ + protected function set_cache_rejected_uri( $value ) { + $_REQUEST['wp_rejected_uri'] = implode( "\n", $value ); + wp_cache_update_rejected_strings(); + } + + /** + * @param mixed $value + */ + protected function set_cache_acceptable_files( $value ) { + $_REQUEST['wp_accepted_files'] = implode( "\n", $value ); + wp_cache_update_accepted_strings(); + } + + /** + * @param mixed $value + */ + protected function set_cache_rejected_user_agent( $value ) { + $_POST['wp_rejected_user_agent'] = implode( "\n", $value ); + wp_cache_update_rejected_ua(); + } + + /** + * @param mixed $value + */ + protected function set_ossdl_cname( $value ) { + update_option( 'ossdl_cname', $value ); + } + + /** + * @param mixed $value + */ + protected function set_ossdl_off_blog_url( $value ) { + update_option( 'ossdl_off_blog_url', untrailingslashit( $value ) ); + } + + /** + * @param mixed $value + */ + protected function set_ossdl_off_cdn_url( $value ) { + update_option( 'ossdl_off_cdn_url', $value ); + } + + /** + * @param mixed $value + */ + protected function set_ossdl_off_include_dirs( $value ) { + update_option( 'ossdl_off_include_dirs', $value == '' ? 'wp-content,wp-includes' : $value ); + } + + /** + * @param mixed $value + */ + protected function set_ossdl_off_exclude( $value ) { + update_option( 'ossdl_off_exclude', $value ); + } + + /** + * @param mixed $value + */ + protected function set_ossdl_https( $value ) { + update_option( 'ossdl_https', $value ? 1 : 0 ); + } + + /** + * @param mixed $value + */ + protected function set_ossdlcdn( $value ) { + global $wp_cache_config_file; + + $ossdlcdn = $value ? 1 : 0; + wp_cache_replace_line( '^ *\$ossdlcdn', "\$ossdlcdn = $ossdlcdn;", $wp_cache_config_file ); + } + + /** + * @param mixed $value + * @param string $name + */ + protected function set_time_setting( $value, $name ) { + $_POST[ $name ] = $value; + $_POST['_time_setting'] = true; + } + + /** + * @param mixed $value + * @param string $name + */ + protected function set_preload_setting( $value, $name ) { + $_POST[ $name ] = $value; + $_POST['_preload_setting'] = true; + } + + /** + * Easy caching is a mode that allows the user to press one button and + * enable a sensible default of settings. + * + * @param bool $enabled + */ + protected function toggle_easy_caching( $enabled = true ) { + global $cache_path, $wp_cache_shutdown_gc, $cache_schedule_type; + if ( $enabled ) { + $settings = array( + 'wp_cache_mobile_enabled' => 1, + 'is_cache_enabled' => 1, + 'cache_rebuild_files' => 1, + 'cache_compression' => 0, + 'wp_cache_not_logged_in' => 2, + ); + wp_cache_enable(); + if ( ! defined( 'DISABLE_SUPERCACHE' ) ) { + wp_cache_debug( 'DISABLE_SUPERCACHE is not set, super_cache enabled.' ); + wp_super_cache_enable(); + } + wpsc_set_default_gc(); + + } else { + wp_cache_disable(); + $settings = array( 'is_cache_enabled' => 0 ); + wp_clear_scheduled_hook( 'wp_cache_check_site_hook' ); + wp_clear_scheduled_hook( 'wp_cache_gc' ); + wp_clear_scheduled_hook( 'wp_cache_gc_watcher' ); + } + + foreach ( $settings as $key => $value ) { + $this->set_value_by_key( $value, $key ); + } + + if ( $cache_path != WP_CONTENT_DIR . '/cache/' ) { + $this->set_value_by_key( $cache_path, 'wp_cache_location' ); + } + + $advanced_settings = array( + 'wp_super_cache_late_init', + 'wp_cache_disable_utf8', + 'wp_cache_no_cache_for_get', + 'wp_supercache_304', + 'wp_cache_mfunc_enabled', + 'wp_cache_mobile_enabled', + 'wp_cache_front_page_checks', + 'wp_supercache_cache_list', + 'wp_cache_hello_world', + 'wp_cache_clear_on_post_edit', + 'wp_cache_make_known_anon', + 'wp_cache_object_cache', + 'wp_cache_refresh_single_only', + 'cache_compression', + 'wp_cache_mutex_disabled' + ); + + foreach ( $advanced_settings as $setting ) { + $value = ( isset( $GLOBALS[ $setting ] ) && $GLOBALS[ $setting ] == 1 ) ? 1 : 0; + $this->set_value_by_key( $value, $setting ); + } + } + + /** + * Runs at the end and saves the time settings. + */ + protected function save_time_settings( $parameters ) { + if ( ! isset( $_POST['_time_setting'] ) || true !== $_POST['_time_setting'] ) { + return; + } + + $_POST['action'] = 'expirytime'; + + $all_time_settings = array( + 'cache_max_time', + 'cache_schedule_type', + 'cache_scheduled_time', + 'cache_schedule_interval', + 'cache_time_interval', + 'cache_gc_email_me' + ); + + foreach ( $all_time_settings as $time_setting ) { + if ( false == isset( $_POST[ $time_setting ] ) || $GLOBALS[ $time_setting ] == $_POST[ $time_setting ] ) { + $_POST[ $time_setting ] = $GLOBALS[ $time_setting ]; // fill in the potentially missing fields before updating GC settings. + } + } + + if ( isset( $parameters['cache_gc_email_me'] ) && $parameters['cache_gc_email_me'] == 0 ) { + unset( $_POST['cache_gc_email_me'] ); + } + $_POST[ 'wp_max_time' ] = $_POST[ 'cache_max_time' ]; + + wp_cache_time_update(); + } + + + /** + * set the cached direct pages list. + */ + protected function set_cache_direct_pages( $list ) { + if ( is_array( $list ) == false ) { + return false; + } + + $_POST[ 'direct_pages' ] = $list; + wpsc_update_direct_pages(); + } + + /** + * add an entry to the cached direct pages list. + */ + protected function new_direct_page( $value ) { + global $cached_direct_pages; + + if ( isset( $_POST[ 'direct_pages' ] ) == false ) { + $_POST[ 'direct_pages' ] = $cached_direct_pages; + } + + $_POST[ 'new_direct_page' ] = $value; + wpsc_update_direct_pages(); + } + + /** + * Runs at the end and saves the preload settings. + */ + protected function save_preload_settings() { + if ( ! isset( $_POST['_preload_setting'] ) || true !== $_POST['_preload_setting'] ) { + return; + } + + $_POST['action'] = 'preload'; + + $all_preload_settings = array( + 'preload_interval' => 'wp_cache_preload_interval', + 'preload_on' => 'wp_cache_preload_on', + 'preload_taxonomies' => 'wp_cache_preload_taxonomies', + 'preload_email_volume' => 'wp_cache_preload_email_volume', + 'preload_posts' => 'wp_cache_preload_posts', + ); + + foreach ( $all_preload_settings as $key => $original ) { + if ( ! isset( $_POST[ $key ] ) ) { + $_POST[ $original ] = $GLOBALS[ $original ]; + } else { + $_POST[ $original ] = $_POST[ $key ]; + if ( $key !== 'preload_interval' && ( $_POST[ $key ] === 0 || $_POST[ $key ] === false ) ) { + unset( $_POST[ $original ] ); + } + + } + } + + wpsc_preload_settings(); + } + + /* + * Delete the plugin configuration file and restore the sample one. + */ + protected function restore_default_settings( $parameters ) { + global $wp_cache_config_file, $wp_cache_config_file_sample; + + if ( file_exists( $wp_cache_config_file_sample ) ) { + copy( $wp_cache_config_file_sample, $wp_cache_config_file ); + $cache_page_secret = md5( gmdate( 'H:i:s' ) . wp_rand() ); + wp_cache_setting( 'cache_page_secret', $cache_page_secret ); + + if ( function_exists( "opcache_invalidate" ) ) { + @opcache_invalidate( $wp_cache_config_file ); + } + } + wpsc_set_default_gc( true ); + } + + /** + * Update the debug settings. + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|WP_REST_Response + */ + public function set_debug_settings( $parameters ) { + + $settings = array ( + 'wp_super_cache_debug', + 'wp_cache_debug_ip', + 'wp_super_cache_comments', + 'wp_super_cache_front_page_check', + 'wp_super_cache_front_page_clear', + 'wp_super_cache_front_page_text', + 'wp_super_cache_front_page_notification', + 'wpsc_delete_log', + ); + + foreach( $settings as $setting ) { + if ( isset( $parameters[ $setting ] ) ) { + if ( $parameters[ $setting ] != false ) { + $_POST[ $setting ] = $parameters[ $setting ]; + } + $_POST[ 'wp_cache_debug' ] = 1; + } else { + if ( ! isset( $GLOBALS[ $setting ] ) ) { + $GLOBALS[ $setting ] = 0; + } + $_POST[ $setting ] = $GLOBALS[ $setting ]; + } + } + global $valid_nonce; + $valid_nonce = true; + + $settings = wpsc_update_debug_settings(); + } +} diff --git a/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-settings-map.php b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-settings-map.php new file mode 100644 index 0000000..4eec197 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/rest/class.wp-super-cache-settings-map.php @@ -0,0 +1,263 @@ + array( + 'get' => 'get_is_submit_enabled', + 'set' => '', + ), + 'is_preload_enabled' => array( + 'get' => 'get_is_preload_enabled', + 'set' => '', + ), + 'cache_lock_down' => array( + 'get' => 'get_is_lock_down_enabled', + 'set' => 'set_lock_down', + ), + 'cache_next_gc' => array( + 'get' => 'get_next_gc', + 'set' => '', + ), + 'cache_gc_email_me' => array( + 'global' => 'cache_gc_email_me', + 'set' => 'set_time_setting', + ), + 'cache_path_url' => array( + 'get' => 'get_cache_path_url', + ), + 'cache_type' => array( + 'get' => 'get_cache_type', + 'set' => 'set_super_cache_enabled', + ), + 'is_preloading' => array( + 'get' => 'wpsc_is_preloading', + 'set' => '', + ), + 'post_count' => array( + 'get' => 'get_post_count', + 'set' => '', + ), + 'is_cache_enabled' => array( + 'global' => 'cache_enabled', + 'set' => 'set_cache_enabled', + ), + 'is_super_cache_enabled' => array( + 'global' => 'super_cache_enabled', + 'set' => 'set_super_cache_enabled', + ), + 'is_mobile_enabled' => array( + 'global' => 'wp_cache_mobile_enabled', + ), + 'is_mfunc_enabled' => array( + 'global' => 'wp_cache_mfunc_enabled', + ), + 'cache_list' => array( + 'global' => 'wp_supercache_cache_list', + ), + 'clear_cache_on_post_edit' => array( + 'global' => 'wp_cache_clear_on_post_edit', + ), + 'wpsc_save_headers' => array( + 'global' => 'wpsc_save_headers', + ), + 'cache_rebuild' => array( + 'global' => 'cache_rebuild_files', + ), + 'dont_cache_logged_in' => array( + 'global' => 'wp_cache_not_logged_in', + ), + 'make_known_anon' => array( + 'global' => 'wp_cache_make_known_anon', + ), + 'cache_path' => array( + 'global' => 'cache_path', + 'set' => 'set_wp_cache_location', + ), + 'default_cache_path' => array( + 'get' => 'get_default_cache_path', + ), + 'use_object_cache' => array( + 'global' => 'wp_cache_object_cache', + ), + 'refresh_current_only_on_comments' => array( + 'global' => 'wp_cache_refresh_single_only', + ), + 'cache_compression' => array( + 'global' => 'cache_compression', + 'set' => 'set_cache_compression', + ), + 'cache_mod_rewrite' => array( + 'global' => 'wp_cache_mod_rewrite', + ), + 'use_304_headers' => array( + 'global' => 'wp_supercache_304', + ), + 'cache_late_init' => array( + 'global' => 'wp_super_cache_late_init', + ), + 'front_page_checks' => array( + 'global' => 'wp_cache_front_page_checks', + ), + 'cache_page_secret' => array( + 'global' => 'cache_page_secret', + ), + 'disable_utf8' => array( + 'global' => 'wp_cache_disable_utf8', + ), + 'no_cache_for_get' => array( + 'global' => 'wp_cache_no_cache_for_get', + ), + 'cache_schedule_type' => array( + 'global' => 'cache_schedule_type', + 'set' => 'set_time_setting', + ), + 'cache_scheduled_time' => array( + 'global' => 'cache_scheduled_time', + 'set' => 'set_time_setting', + ), + 'cache_max_time' => array( + 'global' => 'cache_max_time', + 'set' => 'set_time_setting', + ), + 'cache_time_interval' => array( + 'global' => 'cache_time_interval', + 'set' => 'set_time_setting', + ), + 'shutdown_garbage_collector' => array( + 'global' => 'wp_cache_shutdown_gc', + ), + 'pages' => array( + 'global' => 'wp_cache_pages', + ), + 'minimum_preload_interval' => array( + 'get' => 'get_minimum_preload_interval', + ), + 'preload_interval' => array( + 'global' => 'wp_cache_preload_interval', + 'set' => 'set_preload_setting', + ), + 'preload_posts' => array( + 'global' => 'wp_cache_preload_posts', + 'set' => 'set_preload_setting', + ), + 'preload_on' => array( + 'global' => 'wp_cache_preload_on', + 'set' => 'set_preload_setting', + ), + 'preload_active' => array( + 'get' => 'get_is_preload_active', + ), + 'preload_taxonomies' => array( + 'global' => 'wp_cache_preload_taxonomies', + 'set' => 'set_preload_setting', + ), + 'preload_email_me' => array( + 'global' => 'wp_cache_preload_email_me', + 'set' => 'set_preload_setting', + ), + 'preload_email_volume' => array( + 'global' => 'wp_cache_preload_email_volume', + 'set' => 'set_preload_setting', + ), + 'cache_mobile_browsers' => array( + 'global' => 'wp_cache_mobile_browsers', + ), + 'cache_mobile_prefixes' => array( + 'global' => 'wp_cache_mobile_prefixes', + ), + 'cache_disable_locking' => array( + 'global' => 'wp_cache_mutex_disabled', + ), + 'cache_hello_world' => array( + 'global' => 'wp_cache_hello_world', + ), + 'cache_schedule_interval' => array( + 'global' => 'cache_schedule_interval', + 'set' => 'set_time_setting', + ), + 'cache_acceptable_files' => array( + 'global' => 'cache_acceptable_files', + ), + 'cache_rejected_uri' => array( + 'global' => 'cache_rejected_uri', + ), + 'cache_rejected_user_agent' => array( + 'global' => 'cache_rejected_user_agent', + ), + 'cache_direct_pages' => array( + 'global' => 'cached_direct_pages', + 'set' => 'set_cache_direct_pages', + ), + 'new_direct_page' => array( + 'set' => 'new_direct_page', + ), + 'ossdl_cname' => array( + 'option' => 'ossdl_cname', + 'set' => 'set_ossdl_cname', + ), + 'ossdl_https' => array( + 'option' => 'ossdl_https', + 'set' => 'set_ossdl_https', + ), + 'ossdl_off_cdn_url' => array( + 'option' => 'ossdl_off_cdn_url', + 'set' => 'set_ossdl_off_cdn_url', + ), + 'ossdl_off_blog_url' => array( + 'option' => 'ossdl_off_blog_url', + 'set' => 'set_ossdl_off_blog_url', + ), + 'ossdl_off_exclude' => array( + 'option' => 'ossdl_off_exclude', + 'set' => 'set_ossdl_off_exclude', + ), + 'ossdl_off_include_dirs' => array( + 'option' => 'ossdl_off_include_dirs', + 'set' => 'set_ossdl_off_include_dirs', + ), + 'ossdlcdn' => array( + 'global' => 'ossdlcdn', + 'set' => 'set_ossdlcdn', + ), + 'wp_super_cache_debug' => array( + 'global' => 'wp_super_cache_debug', + ), + 'wp_cache_debug_username' => array( + 'get' => 'wpsc_debug_username', + ), + 'wp_cache_debug_log' => array( + 'global' => 'wp_cache_debug_log', + ), + 'wp_cache_debug_ip' => array( + 'global' => 'wp_cache_debug_ip', + ), + 'wp_super_cache_comments' => array( + 'global' => 'wp_super_cache_comments', + ), + 'wp_super_cache_front_page_check' => array( + 'global' => 'wp_super_cache_front_page_check', + ), + 'wp_super_cache_front_page_clear' => array( + 'global' => 'wp_super_cache_front_page_clear', + ), + 'wp_super_cache_front_page_text' => array( + 'global' => 'wp_super_cache_front_page_text', + ), + 'wp_super_cache_front_page_notification' => array( + 'global' => 'wp_super_cache_front_page_notification', + ), + ); +} diff --git a/wp-content/plugins/wp-super-cache/rest/load.php b/wp-content/plugins/wp-super-cache/rest/load.php new file mode 100644 index 0000000..3083e5d --- /dev/null +++ b/wp-content/plugins/wp-super-cache/rest/load.php @@ -0,0 +1,166 @@ + WP_REST_Server::READABLE, + 'callback' => array( $get_settings, 'callback' ), + 'permission_callback' => __CLASS__ . '::get_item_permissions_check', + 'args' => array(), + ), + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => array( $update_settings, 'callback' ), + 'permission_callback' => __CLASS__ . '::update_item_permissions_check', + 'args' => array(), + ), + ) ); + + register_rest_route( $namespace, '/status', array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $get_status, 'callback' ), + 'permission_callback' => __CLASS__ . '::get_item_permissions_check', + ) ); + + register_rest_route( $namespace, '/stats', array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $get_stats, 'callback' ), + 'permission_callback' => __CLASS__ . '::get_item_permissions_check', + ) ); + + register_rest_route( $namespace, '/cache', array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $get_cache, 'callback' ), + 'permission_callback' => __CLASS__ . '::get_item_permissions_check', + 'args' => array(), + ), + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => array( $delete_cache, 'callback' ), + 'permission_callback' => __CLASS__ . '::delete_item_permissions_check', + 'args' => array(), + ), + ) ); + + register_rest_route( $namespace, '/preload', array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => array( $preload_cache, 'callback' ), + 'permission_callback' => __CLASS__ . '::update_item_permissions_check', + ) ); + + register_rest_route( $namespace, '/cache/test', array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => array( $test_cache, 'callback' ), + 'permission_callback' => __CLASS__ . '::create_item_permissions_check', + ) ); + + register_rest_route( $namespace, '/plugins', array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $get_plugins, 'callback' ), + 'permission_callback' => __CLASS__ . '::get_item_permissions_check', + 'args' => array(), + ), + array( + 'methods' => WP_REST_Server::CREATABLE, + 'callback' => array( $update_plugins, 'callback' ), + 'permission_callback' => __CLASS__ . '::update_item_permissions_check', + 'args' => array(), + ), + ) ); + } + + /** + * Check if a given request has access to get items + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|bool + */ + public static function get_items_permissions_check( $request ) { + return wpsupercache_site_admin(); + } + + /** + * Check if a given request has access to get a specific item + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|bool + */ + public static function get_item_permissions_check( $request ) { + return self::get_items_permissions_check( $request ); + } + + /** + * Check if a given request has access to create items + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|bool + */ + public static function create_item_permissions_check( $request ) { + return self::get_items_permissions_check( $request ); + } + + /** + * Check if a given request has access to update a specific item + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|bool + */ + public static function update_item_permissions_check( $request ) { + return self::create_item_permissions_check( $request ); + } + + /** + * Check if a given request has access to update a specific item + * + * @param WP_REST_Request $request Full data about the request. + * @return WP_Error|bool + */ + public static function delete_item_permissions_check( $request ) { + return self::update_item_permissions_check( $request ); + } +} + +function wpsc_load_rest_api() { + $wpsupercache_route = new WP_Super_Cache_Router(); + $wpsupercache_route->register_routes(); +}; + +add_action( 'rest_api_init', 'wpsc_load_rest_api' ); diff --git a/wp-content/plugins/wp-super-cache/src/device-detection/class-device-detection.php b/wp-content/plugins/wp-super-cache/src/device-detection/class-device-detection.php new file mode 100644 index 0000000..0bd6ea0 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/src/device-detection/class-device-detection.php @@ -0,0 +1,80 @@ +is_android_tablet() && false === $ua_info->is_kindle_touch() ) { + return false; + } + + if ( $ua_info->is_blackberry_tablet() ) { + return false; + } + + // checks for iPhoneTier devices & RichCSS devices. + if ( $ua_info->isTierIphone() || $ua_info->isTierRichCSS() ) { + return true; + } + + $dumb_agents = $ua_info->dumb_agents; + + foreach ( $dumb_agents as $dumb_agent ) { + if ( false !== strpos( $agent, $dumb_agent ) ) { + return true; + } + } + + if ( isset( $_SERVER['HTTP_X_WAP_PROFILE'] ) ) { + return true; + } elseif ( isset( $_SERVER['HTTP_ACCEPT'] ) && ( preg_match( '/wap\.|\.wap/i', $_SERVER['HTTP_ACCEPT'] ) || false !== strpos( strtolower( $_SERVER['HTTP_ACCEPT'] ), 'application/vnd.wap.xhtml+xml' ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- This is doing the validating. + return true; + } + + return false; + } +} diff --git a/wp-content/plugins/wp-super-cache/src/device-detection/class-user-agent-info.php b/wp-content/plugins/wp-super-cache/src/device-detection/class-user-agent-info.php new file mode 100644 index 0000000..72276ad --- /dev/null +++ b/wp-content/plugins/wp-super-cache/src/device-detection/class-user-agent-info.php @@ -0,0 +1,2293 @@ + 'Chrome', + self::BROWSER_FIREFOX => 'Firefox', + self::BROWSER_SAFARI => 'Safari', + self::BROWSER_EDGE => 'Edge', + self::BROWSER_OPERA => 'Opera', + self::BROWSER_IE => 'Internet Explorer', + self::BROWSER_SAMSUNG => 'Samsung Browser', + self::BROWSER_UC => 'UC Browser', + self::BROWSER_YANDEX => 'Yandex Browser', + self::BROWSER_VIVALDI => 'Vivaldi', + self::BROWSER_MIUI => 'MIUI Browser', + self::BROWSER_SILK => 'Amazon Silk', + self::OTHER => 'Other', + ); + + /** + * A list of dumb-phone user agent parts. + * + * @var array + */ + public $dumb_agents = array( + 'nokia', + 'blackberry', + 'philips', + 'samsung', + 'sanyo', + 'sony', + 'panasonic', + 'webos', + 'ericsson', + 'alcatel', + 'palm', + 'windows ce', + 'opera mini', + 'series60', + 'series40', + 'au-mic,', + 'audiovox', + 'avantgo', + 'blazer', + 'danger', + 'docomo', + 'epoc', + 'ericy', + 'i-mode', + 'ipaq', + 'midp-', + 'mot-', + 'netfront', + 'nitro', + 'palmsource', + 'pocketpc', + 'portalmmm', + 'rover', + 'sie-', + 'symbian', + 'cldc-', + 'j2me', + 'smartphone', + 'up.browser', + 'up.link', + 'up.link', + 'vodafone/', + 'wap1.', + 'wap2.', + 'mobile', + 'googlebot-mobile', + ); + + /** + * The constructor. + * + * @param string $ua (Optional) User agent. + */ + public function __construct( $ua = '' ) { + if ( $ua ) { + $this->useragent = $ua; + } elseif ( ! empty( $_SERVER['HTTP_USER_AGENT'] ) ) { + $this->useragent = wp_unslash( $_SERVER['HTTP_USER_AGENT'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This class is all about validating. + } + } + + /** + * This method detects the mobile User Agent name. + * + * @return string The matched User Agent name, false otherwise. + */ + public function get_mobile_user_agent_name() { + if ( static::is_chrome_for_iOS() ) { // Keep this check before the safari rule. + return 'chrome-for-ios'; + } elseif ( static::is_iphone_or_ipod( 'iphone-safari' ) ) { + return 'iphone'; + } elseif ( static::is_ipad( 'ipad-safari' ) ) { + return 'ipad'; + } elseif ( static::is_android_tablet() ) { // Keep this check before the android rule. + return 'android_tablet'; + } elseif ( static::is_android() ) { + return 'android'; + } elseif ( static::is_blackberry_10() ) { + return 'blackberry_10'; + } elseif ( static::is_blackbeberry() ) { + return 'blackberry'; + } elseif ( static::is_WindowsPhone7() ) { + return 'win7'; + } elseif ( static::is_windows_phone_8() ) { + return 'winphone8'; + } elseif ( static::is_opera_mini() ) { + return 'opera-mini'; + } elseif ( static::is_opera_mini_dumb() ) { + return 'opera-mini-dumb'; + } elseif ( static::is_opera_mobile() ) { + return 'opera-mobi'; + } elseif ( static::is_blackberry_tablet() ) { + return 'blackberry_tablet'; + } elseif ( static::is_kindle_fire() ) { + return 'kindle-fire'; + } elseif ( static::is_PalmWebOS() ) { + return 'webos'; + } elseif ( static::is_S60_OSSBrowser() ) { + return 'series60'; + } elseif ( static::is_firefox_os() ) { + return 'firefoxOS'; + } elseif ( static::is_firefox_mobile() ) { + return 'firefox_mobile'; + } elseif ( static::is_MaemoTablet() ) { + return 'maemo'; + } elseif ( static::is_MeeGo() ) { + return 'meego'; + } elseif ( static::is_TouchPad() ) { + return 'hp_tablet'; + } elseif ( static::is_facebook_for_iphone() ) { + return 'facebook-for-iphone'; + } elseif ( static::is_facebook_for_ipad() ) { + return 'facebook-for-ipad'; + } elseif ( static::is_twitter_for_iphone() ) { + return 'twitter-for-iphone'; + } elseif ( static::is_twitter_for_ipad() ) { + return 'twitter-for-ipad'; + } elseif ( static::is_wordpress_for_ios() ) { + return 'ios-app'; + } elseif ( static::is_iphone_or_ipod( 'iphone-not-safari' ) ) { + return 'iphone-unknown'; + } elseif ( static::is_ipad( 'ipad-not-safari' ) ) { + return 'ipad-unknown'; + } elseif ( static::is_Nintendo_3DS() ) { + return 'nintendo-3ds'; + } else { + $agent = $this->useragent; + $dumb_agents = $this->dumb_agents; + foreach ( $dumb_agents as $dumb_agent ) { + if ( false !== strpos( $agent, $dumb_agent ) ) { + return $dumb_agent; + } + } + } + + return false; + } + + /** + * This method detects the mobile device's platform. All return strings are from the class constants. + * Note that this function returns the platform name, not the UA name/type. You should use a different function + * if you need to test the UA capabilites. + * + * @return string|bool Name of the platform, false otherwise. + */ + public function get_platform() { + if ( isset( $this->platform ) ) { + return $this->platform; + } + + if ( empty( $this->useragent ) ) { + return false; + } + + $ua = strtolower( $this->useragent ); + if ( strpos( $ua, 'windows phone' ) !== false ) { + $this->platform = self::PLATFORM_WINDOWS; + } elseif ( strpos( $ua, 'windows ce' ) !== false ) { + $this->platform = self::PLATFORM_WINDOWS; + } elseif ( strpos( $ua, 'ipad' ) !== false ) { + $this->platform = self::PLATFORM_IPAD; + } elseif ( strpos( $ua, 'ipod' ) !== false ) { + $this->platform = self::PLATFORM_IPOD; + } elseif ( strpos( $ua, 'iphone' ) !== false ) { + $this->platform = self::PLATFORM_IPHONE; + } elseif ( strpos( $ua, 'android' ) !== false ) { + if ( static::is_android_tablet() ) { + $this->platform = self::PLATFORM_ANDROID_TABLET; + } else { + $this->platform = self::PLATFORM_ANDROID; + } + } elseif ( static::is_kindle_fire() ) { + $this->platform = self::PLATFORM_ANDROID_TABLET; + } elseif ( static::is_blackberry_10() ) { + $this->platform = self::PLATFORM_BLACKBERRY_10; + } elseif ( strpos( $ua, 'blackberry' ) !== false ) { + $this->platform = self::PLATFORM_BLACKBERRY; + } elseif ( static::is_blackberry_tablet() ) { + $this->platform = self::PLATFORM_BLACKBERRY; + } elseif ( static::is_symbian_platform() ) { + $this->platform = self::PLATFORM_SYMBIAN; + } elseif ( static::is_symbian_s40_platform() ) { + $this->platform = self::PLATFORM_SYMBIAN_S40; + } elseif ( static::is_J2ME_platform() ) { + $this->platform = self::PLATFORM_J2ME_MIDP; + } elseif ( static::is_firefox_os() ) { + $this->platform = self::PLATFORM_FIREFOX_OS; + } else { + $this->platform = false; + } + + return $this->platform; + } + + /** + * Returns the platform for desktops + * + * @return string + */ + public function get_desktop_platform() { + $ua = $this->useragent; + if ( empty( $ua ) ) { + return false; + } + $platform = self::OTHER; + + if ( static::is_linux_desktop( $ua ) ) { + $platform = self::PLATFORM_DESKTOP_LINUX; + } elseif ( static::is_mac_desktop( $ua ) ) { + $platform = self::PLATFORM_DESKTOP_MAC; + } elseif ( static::is_windows_desktop( $ua ) ) { + $platform = self::PLATFORM_DESKTOP_WINDOWS; + } elseif ( static::is_chrome_desktop( $ua ) ) { + $platform = self::PLATFORM_DESKTOP_CHROME; + } + return $platform; + } + + /** + * A simple pattern matching method for extracting the browser from the user agent. + * + * @return string + */ + public function get_browser() { + $ua = $this->useragent; + if ( empty( $ua ) ) { + return self::OTHER; + } + + // Check for browsers based on Chromium BEFORE checking for Chrome itself, + // as they all include "Chrome" in their user agent string. + // Order matters - most specific checks first! + + if ( static::is_samsung_browser( $ua ) ) { + return self::BROWSER_SAMSUNG; + } elseif ( static::is_yandex_browser( $ua ) ) { + return self::BROWSER_YANDEX; + } elseif ( static::is_vivaldi_browser( $ua ) ) { + return self::BROWSER_VIVALDI; + } elseif ( static::is_uc_browser( $ua ) ) { + return self::BROWSER_UC; + } elseif ( static::is_miui_browser( $ua ) ) { + return self::BROWSER_MIUI; + } elseif ( static::is_silk_browser( $ua ) ) { + return self::BROWSER_SILK; + } elseif ( static::is_opera_mini( $ua ) || static::is_opera_mobile( $ua ) || static::is_opera_desktop( $ua ) || static::is_opera_mini_dumb( $ua ) ) { + return self::BROWSER_OPERA; + } elseif ( static::is_edge_browser( $ua ) ) { + return self::BROWSER_EDGE; + } elseif ( static::is_chrome_desktop( $ua ) || self::is_chrome_for_iOS( $ua ) ) { + return self::BROWSER_CHROME; + } elseif ( static::is_safari_browser( $ua ) ) { + return self::BROWSER_SAFARI; + } elseif ( static::is_firefox_mobile( $ua ) || static::is_firefox_desktop( $ua ) ) { + return self::BROWSER_FIREFOX; + } elseif ( static::is_ie_browser( $ua ) ) { + return self::BROWSER_IE; + } + return self::OTHER; + } + + /** + * Get the display name of the browser. + * + * @return string + */ + public function get_browser_display_name() { + $browser = $this->get_browser(); + return self::BROWSER_DISPLAY_NAME_MAP[ $browser ] ?? $browser; + } + + /** + * This method detects for UA which can display iPhone-optimized web content. + * Includes iPhone, iPod Touch, Android, WebOS, Fennec (Firefox mobile), etc. + */ + public function isTierIphone() { + if ( isset( $this->isTierIphone ) ) { + return $this->isTierIphone; + } + if ( $this->is_iphoneOrIpod() ) { + $this->matched_agent = 'iphone'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_android() ) { + $this->matched_agent = 'android'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_windows_phone_8() ) { + $this->matched_agent = 'winphone8'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_WindowsPhone7() ) { + $this->matched_agent = 'win7'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_blackberry_10() ) { + $this->matched_agent = 'blackberry-10'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_blackbeberry() && 'blackberry-webkit' === static::detect_blackberry_browser_version() ) { + $this->matched_agent = 'blackberry-webkit'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_blackberry_tablet() ) { + $this->matched_agent = 'blackberry_tablet'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_PalmWebOS() ) { + $this->matched_agent = 'webos'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_TouchPad() ) { + $this->matched_agent = 'hp_tablet'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_firefox_os() ) { + $this->matched_agent = 'firefoxOS'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_firefox_mobile() ) { + $this->matched_agent = 'fennec'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_opera_mobile() ) { + $this->matched_agent = 'opera-mobi'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_MaemoTablet() ) { + $this->matched_agent = 'maemo'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_MeeGo() ) { + $this->matched_agent = 'meego'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_kindle_touch() ) { + $this->matched_agent = 'kindle-touch'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } elseif ( static::is_Nintendo_3DS() ) { + $this->matched_agent = 'nintendo-3ds'; + $this->isTierIphone = true; + $this->isTierRichCss = false; + $this->isTierGenericMobile = false; + } else { + $this->isTierIphone = false; + } + return $this->isTierIphone; + } + + /** + * This method detects for UA which are likely to be capable + * but may not necessarily support JavaScript. + * Excludes all iPhone Tier UA. + */ + public function isTierRichCss() { + if ( isset( $this->isTierRichCss ) ) { + return $this->isTierRichCss; + } + if ( $this->isTierIphone() ) { + return false; + } + + // The following devices are explicitly ok. + if ( static::is_S60_OSSBrowser() ) { + $this->matched_agent = 'series60'; + $this->isTierIphone = false; + $this->isTierRichCss = true; + $this->isTierGenericMobile = false; + } elseif ( static::is_opera_mini() ) { + $this->matched_agent = 'opera-mini'; + $this->isTierIphone = false; + $this->isTierRichCss = true; + $this->isTierGenericMobile = false; + } elseif ( static::is_blackbeberry() ) { + $detectedDevice = static::detect_blackberry_browser_version(); + if ( + 'blackberry-5' === $detectedDevice + || 'blackberry-4.7' === $detectedDevice + || 'blackberry-4.6' === $detectedDevice + ) { + $this->matched_agent = $detectedDevice; + $this->isTierIphone = false; + $this->isTierRichCss = true; + $this->isTierGenericMobile = false; + } + } else { + $this->isTierRichCss = false; + } + + return $this->isTierRichCss; + } + + /** + * Detects if the user is using a tablet. + * props Corey Gilmore, BGR.com + * + * @return bool + */ + public function is_tablet() { + $ua = $this->useragent; + return ( 0 // Never true, but makes it easier to manage our list of tablet conditions. + || self::is_ipad( $ua ) + || self::is_android_tablet( $ua ) + || self::is_blackberry_tablet( $ua ) + || self::is_kindle_fire( $ua ) + || self::is_MaemoTablet( $ua ) + || self::is_TouchPad( $ua ) + ); + } + + /** + * Detects if the current UA is the default iPhone or iPod Touch Browser. + * + * DEPRECATED: use is_iphone_or_ipod + */ + public function is_iphoneOrIpod() { + if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + if ( ( strpos( $ua, 'iphone' ) !== false ) || ( strpos( $ua, 'ipod' ) !== false ) ) { + if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() ) { + return false; + } else { + return true; + } + } else { + return false; + } + } + + /** + * Retrieves the user agent from the server if not provided. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * @return string|false The user agent string or false if not available. + */ + private static function maybe_get_user_agent_from_server( $user_agent = null ) { + if ( null !== $user_agent ) { + return $user_agent; + } + + if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { + return false; + } + return wp_unslash( $_SERVER['HTTP_USER_AGENT'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + } + + /** + * Detects if the current UA is iPhone Mobile Safari or another iPhone or iPod Touch Browser. + * + * They type can check for any iPhone, an iPhone using Safari, or an iPhone using something other than Safari. + * + * Note: If you want to check for Opera mini, Opera mobile or Firefox mobile (or any 3rd party iPhone browser), + * you should put the check condition before the check for 'iphone-any' or 'iphone-not-safari'. + * Otherwise those browsers will be 'catched' by the iphone string. + * + * @param string $type Type of iPhone detection. + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_iphone_or_ipod( $type = 'iphone-any', $user_agent = null ) { + + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + $is_iphone = ( strpos( $ua, 'iphone' ) !== false ) || ( strpos( $ua, 'ipod' ) !== false ); + $is_safari = ( false !== strpos( $ua, 'safari' ) ); + + if ( 'iphone-safari' === $type ) { + return $is_iphone && $is_safari; + } elseif ( 'iphone-not-safari' === $type ) { + return $is_iphone && ! $is_safari; + } else { + return $is_iphone; + } + } + + /** + * Detects if the current UA is Chrome for iOS + * + * The User-Agent string in Chrome for iOS is the same as the Mobile Safari User-Agent, with CriOS/ instead of Version/. + * - Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3 + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_chrome_for_iOS( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + if ( self::is_iphone_or_ipod( 'iphone-safari', $user_agent ) === false ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( strpos( $ua, 'crios/' ) !== false ) { + return true; + } else { + return false; + } + } + + /** + * Detects if the current UA is Twitter for iPhone + * + * Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_5 like Mac OS X; nb-no) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8L1 Twitter for iPhone + * Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 Twitter for iPhone + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_twitter_for_iphone( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( strpos( $ua, 'ipad' ) !== false ) { + return false; + } + + if ( strpos( $ua, 'twitter for iphone' ) !== false ) { + return true; + } else { + return false; + } + } + + /** + * Detects if the current UA is Twitter for iPad + * + * Old version 4.X - Mozilla/5.0 (iPad; U; CPU OS 4_3_5 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8L1 Twitter for iPad + * Ver 5.0 or Higher - Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 Twitter for iPhone + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_twitter_for_ipad( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( strpos( $ua, 'twitter for ipad' ) !== false ) { + return true; + } elseif ( strpos( $ua, 'ipad' ) !== false && strpos( $ua, 'twitter for iphone' ) !== false ) { + return true; + } else { + return false; + } + } + + /** + * Detects if the current UA is Facebook for iPhone + * - Facebook 4020.0 (iPhone; iPhone OS 5.0.1; fr_FR) + * - Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_0 like Mac OS X; en_US) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.0.2;FBBV/4020.0;FBDV/iPhone3,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/5.0;FBSS/2; FBCR/O2;FBID/phone;FBLC/en_US;FBSF/2.0] + * - Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 [FBAN/FBIOS;FBAV/5.0;FBBV/47423;FBDV/iPhone3,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/5.1.1;FBSS/2; FBCR/3ITA;FBID/phone;FBLC/en_US] + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_facebook_for_iphone( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( false === strpos( $ua, 'iphone' ) ) { + return false; + } + + if ( false !== strpos( $ua, 'facebook' ) && false === strpos( $ua, 'ipad' ) ) { + return true; + } elseif ( false !== strpos( $ua, 'fbforiphone' ) && false === strpos( $ua, 'tablet' ) ) { + return true; + } elseif ( false !== strpos( $ua, 'fban/fbios;' ) && false === strpos( $ua, 'tablet' ) ) { // FB app v5.0 or higher. + return true; + } else { + return false; + } + } + + /** + * Detects if the current UA is Facebook for iPad + * - Facebook 4020.0 (iPad; iPhone OS 5.0.1; en_US) + * - Mozilla/5.0 (iPad; U; CPU iPhone OS 5_0 like Mac OS X; en_US) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.0.2;FBBV/4020.0;FBDV/iPad2,1;FBMD/iPad;FBSN/iPhone OS;FBSV/5.0;FBSS/1; FBCR/;FBID/tablet;FBLC/en_US;FBSF/1.0] + * - Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A403 [FBAN/FBIOS;FBAV/5.0;FBBV/47423;FBDV/iPad2,1;FBMD/iPad;FBSN/iPhone OS;FBSV/6.0;FBSS/1; FBCR/;FBID/tablet;FBLC/en_US] + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_facebook_for_ipad( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( false === strpos( $ua, 'ipad' ) ) { + return false; + } + + if ( false !== strpos( $ua, 'facebook' ) || false !== strpos( $ua, 'fbforiphone' ) || false !== strpos( $ua, 'fban/fbios;' ) ) { + return true; + } else { + return false; + } + } + + /** + * Detects if the current UA is WordPress for iOS + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_wordpress_for_ios( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + if ( false !== strpos( $ua, 'wp-iphone' ) ) { + return true; + } else { + return false; + } + } + + /** + * Detects if the current device is an iPad. + * They type can check for any iPad, an iPad using Safari, or an iPad using something other than Safari. + * + * Note: If you want to check for Opera mini, Opera mobile or Firefox mobile (or any 3rd party iPad browser), + * you should put the check condition before the check for 'iphone-any' or 'iphone-not-safari'. + * Otherwise those browsers will be 'catched' by the ipad string. + * + * @param string $type iPad type. + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_ipad( $type = 'ipad-any', $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + $is_ipad = ( false !== strpos( $ua, 'ipad' ) ); + $is_safari = ( false !== strpos( $ua, 'safari' ) ); + + if ( 'ipad-safari' === $type ) { + return $is_ipad && $is_safari; + } elseif ( 'ipad-not-safari' === $type ) { + return $is_ipad && ! $is_safari; + } else { + return $is_ipad; + } + } + + /** + * Detects if the current browser is Firefox Mobile (Fennec) + * + * See http://www.useragentstring.com/pages/Fennec/ + * Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.1.1) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1 + * Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1 + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_firefox_mobile( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( strpos( $ua, 'fennec' ) !== false ) { + return true; + } else { + return false; + } + } + + /** + * Detects if the current browser is Firefox for desktop + * + * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox + * Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion + * The platform section will include 'Mobile' for phones and 'Tablet' for tablets. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_firefox_desktop( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( false !== strpos( $ua, 'firefox' ) && false === strpos( $ua, 'mobile' ) && false === strpos( $ua, 'tablet' ) ) { + return true; + } else { + return false; + } + } + + /** + * Detects if the current browser is FirefoxOS Native browser + * + * Mozilla/5.0 (Mobile; rv:14.0) Gecko/14.0 Firefox/14.0 + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_firefox_os( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( strpos( $ua, 'mozilla' ) !== false && strpos( $ua, 'mobile' ) !== false && strpos( $ua, 'gecko' ) !== false && strpos( $ua, 'firefox' ) !== false ) { + return true; + } else { + return false; + } + } + + /** + * Detect Safari browser + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_safari_browser( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + if ( false === strpos( wp_unslash( $user_agent ), 'Safari' ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + return false; + } + return true; + } + + /** + * Detect Edge browser + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_edge_browser( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = wp_unslash( $user_agent ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + // Check for both legacy Edge ("Edge/") and modern Chromium-based Edge ("Edg/") + if ( false === strpos( $ua, 'Edge' ) && false === strpos( $ua, 'Edg/' ) ) { + return false; + } + return true; + } + + /** + * Detect IE browser + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_ie_browser( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = wp_unslash( $user_agent ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + if ( false === ( strpos( $ua, 'MSIE' ) || strpos( $ua, 'Trident/7' ) ) ) { + return false; + } + return true; + } + + /** + * Detect modern Opera desktop + * + * Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 OPR/74.0.3911.203 + * + * Looking for "OPR/" specifically. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_opera_desktop( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + if ( false === strpos( wp_unslash( $user_agent ), 'OPR/' ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + return false; + } + + return true; + } + + /** + * Detects if the current browser is Opera Mobile + * + * What is the difference between Opera Mobile and Opera Mini? + * - Opera Mobile is a full Internet browser for mobile devices. + * - Opera Mini always uses a transcoder to convert the page for a small display. + * (it uses Opera advanced server compression technology to compress web content before it gets to a device. + * The rendering engine is on Opera's server.) + * + * Opera/9.80 (Windows NT 6.1; Opera Mobi/14316; U; en) Presto/2.7.81 Version/11.00" + * Opera/9.50 (Nintendo DSi; Opera/507; U; en-US) + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_opera_mobile( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( strpos( $ua, 'opera' ) !== false && strpos( $ua, 'mobi' ) !== false ) { + return true; + } elseif ( strpos( $ua, 'opera' ) !== false && strpos( $ua, 'nintendo dsi' ) !== false ) { + return true; + } else { + return false; + } + } + + /** + * Detects if the current browser is Opera Mini + * + * Opera/8.01 (J2ME/MIDP; Opera Mini/3.0.6306/1528; en; U; ssr) + * Opera/9.80 (Android;Opera Mini/6.0.24212/24.746 U;en) Presto/2.5.25 Version/10.5454 + * Opera/9.80 (iPhone; Opera Mini/5.0.019802/18.738; U; en) Presto/2.4.15 + * Opera/9.80 (J2ME/iPhone;Opera Mini/5.0.019802/886; U; ja) Presto/2.4.15 + * Opera/9.80 (J2ME/iPhone;Opera Mini/5.0.019802/886; U; ja) Presto/2.4.15 + * Opera/9.80 (Series 60; Opera Mini/5.1.22783/23.334; U; en) Presto/2.5.25 Version/10.54 + * Opera/9.80 (BlackBerry; Opera Mini/5.1.22303/22.387; U; en) Presto/2.5.25 Version/10.54 + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_opera_mini( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( strpos( $ua, 'opera' ) !== false && strpos( $ua, 'mini' ) !== false ) { + return true; + } else { + return false; + } + } + + /** + * Detects if the current browser is Opera Mini, but not on a smart device OS(Android, iOS, etc) + * Used to send users on dumb devices to m.wor + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_opera_mini_dumb( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( self::is_opera_mini( $user_agent ) ) { + if ( strpos( $ua, 'android' ) !== false || strpos( $ua, 'iphone' ) !== false || strpos( $ua, 'ipod' ) !== false + || strpos( $ua, 'ipad' ) !== false || strpos( $ua, 'blackberry' ) !== false ) { + return false; + } else { + return true; + } + } else { + return false; + } + } + + /** + * Detects if the current browser is Samsung Internet for Android. + * + * Samsung Internet is the default browser on Samsung devices. + * User agent contains: SamsungBrowser + * + * @param string|null $user_agent Optional user agent string. + * @return bool + */ + public static function is_samsung_browser( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + return false !== stripos( $user_agent, 'SamsungBrowser' ); + } + + /** + * Detects if the current browser is UC Browser. + * + * UC Browser is popular in Asia and emerging markets. + * User agent contains: UCBrowser or UCWEB + * + * @param string|null $user_agent Optional user agent string. + * @return bool + */ + public static function is_uc_browser( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + return false !== stripos( $user_agent, 'UCBrowser' ) || false !== stripos( $user_agent, 'UCWEB' ); + } + + /** + * Detects if the current browser is Yandex Browser. + * + * Yandex Browser is popular in Russia and CIS countries. + * User agent contains: YaBrowser + * + * @param string|null $user_agent Optional user agent string. + * @return bool + */ + public static function is_yandex_browser( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + return false !== stripos( $user_agent, 'YaBrowser' ); + } + + /** + * Detects if the current browser is Vivaldi. + * + * Vivaldi is a feature-rich browser for power users. + * User agent contains: Vivaldi + * + * @param string|null $user_agent Optional user agent string. + * @return bool + */ + public static function is_vivaldi_browser( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + return false !== stripos( $user_agent, 'Vivaldi' ); + } + + /** + * Detects if the current browser is MIUI Browser. + * + * MIUI Browser is the default browser on Xiaomi devices. + * User agent contains: MiuiBrowser or XiaoMi + * + * @param string|null $user_agent Optional user agent string. + * @return bool + */ + public static function is_miui_browser( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + return false !== stripos( $user_agent, 'MiuiBrowser' ) || false !== stripos( $user_agent, 'XiaoMi' ); + } + + /** + * Detects if the current browser is Amazon Silk. + * + * Amazon Silk is the browser on Kindle Fire and Echo devices. + * User agent contains: Silk or Silk-Accelerated + * + * @param string|null $user_agent Optional user agent string. + * @return bool + */ + public static function is_silk_browser( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + return false !== stripos( $user_agent, 'Silk' ); + } + + /** + * Detects if the current browser is a Windows Phone 7 device. + * ex: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; LG; GW910) + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_WindowsPhone7( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( false === strpos( $ua, 'windows phone os 7' ) ) { + return false; + } elseif ( self::is_opera_mini( $user_agent ) || self::is_opera_mobile( $user_agent ) || self::is_firefox_mobile( $user_agent ) ) { + return false; + } else { + return true; + } + } + + /** + * Detects if the current browser is a Windows Phone 8 device. + * ex: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; ARM; Touch; IEMobile/10.0; ; [;]) + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_windows_phone_8( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + if ( strpos( $ua, 'windows phone 8' ) === false ) { + return false; + } else { + return true; + } + } + + /** + * Detects if the current browser is on a Palm device running the new WebOS. This EXCLUDES TouchPad. + * + * Ex1: Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.1 + * Ex2: Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1 + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_PalmWebOS( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( false === strpos( $ua, 'webos' ) ) { + return false; + } elseif ( self::is_opera_mini( $user_agent ) || self::is_opera_mobile( $user_agent ) || self::is_firefox_mobile( $user_agent ) ) { + return false; + } else { + return true; + } + } + + /** + * Detects if the current browser is the HP TouchPad default browser. This excludes phones wt WebOS. + * + * TouchPad Emulator: Mozilla/5.0 (hp-desktop; Linux; hpwOS/2.0; U; it-IT) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 Desktop/1.0 + * TouchPad: Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0 + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_TouchPad( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $http_user_agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + if ( false !== strpos( $http_user_agent, 'hp-tablet' ) || false !== strpos( $http_user_agent, 'hpwos' ) || false !== strpos( $http_user_agent, 'touchpad' ) ) { + if ( self::is_opera_mini( $user_agent ) || self::is_opera_mobile( $user_agent ) || self::is_firefox_mobile( $user_agent ) ) { + return false; + } else { + return true; + } + } else { + return false; + } + } + + /** + * Detects if the current browser is the Series 60 Open Source Browser. + * + * OSS Browser 3.2 on E75: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaE75-1/110.48.125 Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413 + * + * 7.0 Browser (Nokia 5800 XpressMusic (v21.0.025)) : Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1/21.0.025; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413 + * + * Browser 7.1 (Nokia N97 (v12.0.024)) : Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/12.0.024; Profile/MIDP-2.1 Configuration/CLDC-1.1; en-us) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.12344 + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_S60_OSSBrowser( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + if ( self::is_opera_mini( $user_agent ) || self::is_opera_mobile( $user_agent ) || self::is_firefox_mobile( $user_agent ) ) { + return false; + } + + $pos_webkit = strpos( $agent, 'webkit' ); + if ( false !== $pos_webkit ) { + // First, test for WebKit, then make sure it's either Symbian or S60. + if ( strpos( $agent, 'symbian' ) !== false || strpos( $agent, 'series60' ) !== false ) { + return true; + } else { + return false; + } + } elseif ( strpos( $agent, 'symbianos' ) !== false && strpos( $agent, 'series60' ) !== false ) { + return true; + } elseif ( strpos( $agent, 'nokia' ) !== false && strpos( $agent, 'series60' ) !== false ) { + return true; + } + + return false; + } + + /** + * Detects if the device platform is the Symbian Series 60. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_symbian_platform( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + $pos_webkit = strpos( $agent, 'webkit' ); + if ( false !== $pos_webkit ) { + // First, test for WebKit, then make sure it's either Symbian or S60. + if ( strpos( $agent, 'symbian' ) !== false || strpos( $agent, 'series60' ) !== false ) { + return true; + } else { + return false; + } + } elseif ( strpos( $agent, 'symbianos' ) !== false && strpos( $agent, 'series60' ) !== false ) { + return true; + } elseif ( strpos( $agent, 'nokia' ) !== false && strpos( $agent, 'series60' ) !== false ) { + return true; + } elseif ( strpos( $agent, 'opera mini' ) !== false ) { + if ( strpos( $agent, 'symbianos' ) !== false || strpos( $agent, 'symbos' ) !== false || strpos( $agent, 'series 60' ) !== false ) { + return true; + } + } + + return false; + } + + /** + * Detects if the device platform is the Symbian Series 40. + * Nokia Browser for Series 40 is a proxy based browser, previously known as Ovi Browser. + * This browser will report 'NokiaBrowser' in the header, however some older version will also report 'OviBrowser'. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_symbian_s40_platform( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( strpos( $agent, 'series40' ) !== false ) { + if ( strpos( $agent, 'nokia' ) !== false || strpos( $agent, 'ovibrowser' ) !== false || strpos( $agent, 'nokiabrowser' ) !== false ) { + return true; + } + } + + return false; + } + + /** + * Returns if the device belongs to J2ME capable family. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * + * @return bool + */ + public static function is_J2ME_platform( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( strpos( $agent, 'j2me/midp' ) !== false ) { + return true; + } elseif ( strpos( $agent, 'midp' ) !== false && strpos( $agent, 'cldc' ) ) { + return true; + } + return false; + } + + /** + * Detects if the current UA is on one of the Maemo-based Nokia Internet Tablets. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_MaemoTablet( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + $pos_maemo = strpos( $agent, 'maemo' ); + if ( false === $pos_maemo ) { + return false; + } + + // Must be Linux + Tablet, or else it could be something else. + if ( strpos( $agent, 'tablet' ) !== false && strpos( $agent, 'linux' ) !== false ) { + if ( self::is_opera_mini( $user_agent ) || self::is_opera_mobile( $user_agent ) || self::is_firefox_mobile( $user_agent ) ) { + return false; + } else { + return true; + } + } else { + return false; + } + } + + /** + * Detects if the current UA is a MeeGo device (Nokia Smartphone). + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_MeeGo( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( false === strpos( $ua, 'meego' ) ) { + return false; + } elseif ( self::is_opera_mini( $user_agent ) || self::is_opera_mobile( $user_agent ) || self::is_firefox_mobile( $user_agent ) ) { + return false; + } else { + return true; + } + } + + /** + * The is_webkit() method can be used to check the User Agent for an webkit generic browser. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_webkit( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + $pos_webkit = strpos( $agent, 'webkit' ); + + if ( false !== $pos_webkit ) { + return true; + } else { + return false; + } + } + + /** + * Detects if the current browser is the Native Android browser. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * + * @return boolean true if the browser is Android otherwise false + */ + public static function is_android( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + $pos_android = strpos( $agent, 'android' ); + if ( false !== $pos_android ) { + if ( self::is_opera_mini( $user_agent ) || self::is_opera_mobile( $user_agent ) || self::is_firefox_mobile( $user_agent ) ) { + return false; + } else { + return true; + } + } else { + return false; + } + } + + /** + * Detects if the current browser is the Native Android Tablet browser. + * Assumes 'Android' should be in the user agent, but not 'mobile' + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * + * @return boolean true if the browser is Android and not 'mobile' otherwise false + */ + public static function is_android_tablet( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + $pos_android = strpos( $agent, 'android' ); + $pos_mobile = strpos( $agent, 'mobile' ); + $post_android_app = strpos( $agent, 'wp-android' ); + + if ( false !== $pos_android && false === $pos_mobile && false === $post_android_app ) { + if ( self::is_opera_mini( $user_agent ) || self::is_opera_mobile( $user_agent ) || self::is_firefox_mobile( $user_agent ) ) { + return false; + } else { + return true; + } + } else { + return false; + } + } + + /** + * Detects if the current browser is the Kindle Fire Native browser. + * + * Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-84) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true + * Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-84) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=false + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * + * @return boolean true if the browser is Kindle Fire Native browser otherwise false + */ + public static function is_kindle_fire( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + $pos_silk = strpos( $agent, 'silk/' ); + $pos_silk_acc = strpos( $agent, 'silk-accelerated=' ); + if ( false !== $pos_silk && false !== $pos_silk_acc ) { + return true; + } else { + return false; + } + } + + /** + * Detects if the current browser is the Kindle Touch Native browser + * + * Mozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+ + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * + * @return boolean true if the browser is Kindle monochrome Native browser otherwise false + */ + public static function is_kindle_touch( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + $pos_kindle_touch = strpos( $agent, 'kindle/3.0+' ); + if ( false !== $pos_kindle_touch && false === self::is_kindle_fire( $user_agent ) ) { + return true; + } else { + return false; + } + } + + /** + * Detect if user agent is the WordPress.com Windows 8 app (used ONLY on the custom oauth stylesheet) + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_windows8_auth( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + $pos = strpos( $agent, 'msauthhost' ); + if ( false !== $pos ) { + return true; + } else { + return false; + } + } + + /** + * Detect if user agent is the WordPress.com Windows 8 app. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_wordpress_for_win8( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + $pos = strpos( $agent, 'wp-windows8' ); + if ( false !== $pos ) { + return true; + } else { + return false; + } + } + + /** + * Detect if user agent is the WordPress.com Desktop app. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_wordpress_desktop_app( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + $pos = strpos( $agent, 'WordPressDesktop' ); + if ( false !== $pos ) { + return true; + } else { + return false; + } + } + + /** + * The is_blackberry_tablet() method can be used to check the User Agent for a RIM blackberry tablet. + * The user agent of the BlackBerry® Tablet OS follows a format similar to the following: + * Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/0.0.1 Safari/534.8+ + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_blackberry_tablet( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + $pos_playbook = stripos( $agent, 'PlayBook' ); + $pos_rim_tablet = stripos( $agent, 'RIM Tablet' ); + + if ( ( false === $pos_playbook ) || ( false === $pos_rim_tablet ) ) { + return false; + } else { + return true; + } + } + + /** + * The is_blackbeberry() method can be used to check the User Agent for a blackberry device. + * Note that opera mini on BB matches this rule. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_blackbeberry( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + $pos_blackberry = strpos( $agent, 'blackberry' ); + if ( false !== $pos_blackberry ) { + if ( self::is_opera_mini( $user_agent ) || self::is_opera_mobile( $user_agent ) || self::is_firefox_mobile( $user_agent ) ) { + return false; + } else { + return true; + } + } else { + return false; + } + } + + /** + * The is_blackberry_10() method can be used to check the User Agent for a BlackBerry 10 device. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_blackberry_10( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + return ( strpos( $agent, 'bb10' ) !== false ) && ( strpos( $agent, 'mobile' ) !== false ); + } + + /** + * Determines whether a desktop platform is Linux OS + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * + * @return bool + */ + public static function is_linux_desktop( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + if ( ! preg_match( '/linux/i', wp_unslash( $user_agent ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + return false; + } + return true; + } + + /** + * Determines whether a desktop platform is Mac OS + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * + * @return bool + */ + public static function is_mac_desktop( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + if ( ! preg_match( '/macintosh|mac os x/i', wp_unslash( $user_agent ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + return false; + } + return true; + } + + /** + * Determines whether a desktop platform is Windows OS + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * + * @return bool + */ + public static function is_windows_desktop( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + if ( ! preg_match( '/windows|win32/i', wp_unslash( $user_agent ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + return false; + } + return true; + } + + /** + * Determines whether a desktop platform is Chrome OS + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * + * @return bool + */ + public static function is_chrome_desktop( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + if ( ! preg_match( '/chrome/i', wp_unslash( $user_agent ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + return false; + } + return true; + } + + /** + * Retrieve the blackberry OS version. + * + * Return strings are from the following list: + * - blackberry-10 + * - blackberry-7 + * - blackberry-6 + * - blackberry-torch //only the first edition. The 2nd edition has the OS7 onboard and doesn't need any special rule. + * - blackberry-5 + * - blackberry-4.7 + * - blackberry-4.6 + * - blackberry-4.5 + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * + * @return string Version of the BB OS. + * If version is not found, get_blackbeberry_OS_version will return boolean false. + */ + public static function get_blackbeberry_OS_version( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + if ( self::is_blackberry_10( $user_agent ) ) { + return 'blackberry-10'; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + $pos_blackberry = stripos( $agent, 'blackberry' ); + if ( false === $pos_blackberry ) { + // Not a blackberry device. + return false; + } + + // Blackberry devices OS 6.0 or higher. + // Mozilla/5.0 (BlackBerry; U; BlackBerry 9670; en) AppleWebKit/534.3+ (KHTML, like Gecko) Version/6.0.0.286 Mobile Safari/534.3+. + // Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, Like Gecko) Version/6.0.0.141 Mobile Safari/534.1+. + // Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0 Mobile Safari/534.11+. + $pos_webkit = stripos( $agent, 'webkit' ); + if ( false !== $pos_webkit ) { + // Detected blackberry webkit browser. + $pos_torch = stripos( $agent, 'BlackBerry 9800' ); + if ( false !== $pos_torch ) { + return 'blackberry-torch'; // Match the torch first edition. the 2nd edition should use the OS7 and doesn't need any special rule. + } elseif ( preg_match( '#Version\/([\d\.]+)#i', $agent, $matches ) ) { // Detecting the BB OS version for devices running OS 6.0 or higher. + $version = $matches[1]; + $version_num = explode( '.', $version ); + if ( count( $version_num ) <= 1 ) { + return 'blackberry-6'; // not a BB device that match our rule. + } else { + return 'blackberry-' . $version_num[0]; + } + } else { + // if doesn't match returns the minimun version with a webkit browser. we should never fall here. + return 'blackberry-6'; // not a BB device that match our rule. + } + } + + // Blackberry devices <= 5.XX. + // BlackBerry9000/5.0.0.93 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/179. + if ( preg_match( '#BlackBerry\w+\/([\d\.]+)#i', $agent, $matches ) ) { + $version = $matches[1]; + } else { + return false; // not a BB device that match our rule. + } + + $version_num = explode( '.', $version ); + + if ( count( $version_num ) <= 1 ) { + return false; + } + + $version_num_major = (int) $version_num[0]; + $version_num_minor = (int) $version_num[1]; + + if ( 5 === $version_num_major ) { + return 'blackberry-5'; + } elseif ( 4 === $version_num_major && 7 === $version_num_minor ) { + return 'blackberry-4.7'; + } elseif ( 4 === $version_num_major && 6 === $version_num_minor ) { + return 'blackberry-4.6'; + } elseif ( 4 === $version_num_major && 5 === $version_num_minor ) { + return 'blackberry-4.5'; + } else { + return false; + } + } + + /** + * Retrieve the blackberry browser version. + * + * Return string are from the following list: + * - blackberry-10 + * - blackberry-webkit + * - blackberry-5 + * - blackberry-4.7 + * - blackberry-4.6 + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * + * @return string Type of the BB browser. + * If browser's version is not found, detect_blackbeberry_browser_version will return boolean false. + */ + public static function detect_blackberry_browser_version( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( self::is_blackberry_10( $user_agent ) ) { + return 'blackberry-10'; + } + + $pos_blackberry = strpos( $agent, 'blackberry' ); + if ( false === $pos_blackberry ) { + // Not a blackberry device. + return false; + } + + $pos_webkit = strpos( $agent, 'webkit' ); + + if ( ! ( false === $pos_webkit ) ) { + return 'blackberry-webkit'; + } else { + if ( ! preg_match( '#BlackBerry\w+\/([\d\.]+)#i', $agent, $matches ) ) { + return false; // not a BB device that match our rule. + } + + $version_num = explode( '.', $matches[1] ); + + if ( count( $version_num ) <= 1 ) { + return false; + } + + $version_num_major = (int) $version_num[0]; + $version_num_minor = (int) $version_num[1]; + + if ( 5 === $version_num_major ) { + return 'blackberry-5'; + } elseif ( 4 === $version_num_major && 7 === $version_num_minor ) { + return 'blackberry-4.7'; + } elseif ( 4 === $version_num_major && 6 === $version_num_minor ) { + return 'blackberry-4.6'; + } else { + // A very old BB device is found or this is a BB device that doesn't match our rules. + return false; + } + } + } + + /** + * Checks if a visitor is coming from one of the WordPress mobile apps. + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * + * @return bool + */ + public static function is_mobile_app( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $agent = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + if ( isset( $_SERVER['X_USER_AGENT'] ) && preg_match( '|wp-webos|', $_SERVER['X_USER_AGENT'] ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- This is validating. + return true; // Wp4webos 1.1 or higher. + } + + $app_agents = array( 'wp-android', 'wp-blackberry', 'wp-iphone', 'wp-nokia', 'wp-webos', 'wp-windowsphone' ); + // the mobile reader on iOS has an incorrect UA when loading the reader + // currently it is the default one provided by the iOS framework which + // causes problems with 2-step-auth + // User-Agent WordPress/3.1.4 CFNetwork/609 Darwin/13.0.0. + $app_agents[] = 'wordpress/3.1'; + + foreach ( $app_agents as $app_agent ) { + if ( false !== strpos( $agent, $app_agent ) ) { + return true; + } + } + return false; + } + + /** + * Detects if the current browser is Nintendo 3DS handheld. + * + * Example: Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7498.US + * can differ in language, version and region + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + */ + public static function is_Nintendo_3DS( $user_agent = null ) { + $user_agent = self::maybe_get_user_agent_from_server( $user_agent ); + if ( empty( $user_agent ) ) { + return false; + } + + $ua = strtolower( wp_unslash( $user_agent ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + if ( strpos( $ua, 'nintendo 3ds' ) !== false ) { + return true; + } + return false; + } + + /** + * Was the current request made by a known bot? + * + * @param string|null $user_agent Optional. User agent string to check. If not provided, uses $_SERVER['HTTP_USER_AGENT']. + * + * @return boolean + */ + public static function is_bot( $user_agent = null ) { + static $is_bot = null; + + if ( null === $user_agent ) { + if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { + return false; + } + $user_agent = wp_unslash( $_SERVER['HTTP_USER_AGENT'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. + + // Use cached result only when using the default $_SERVER['HTTP_USER_AGENT']. + if ( $is_bot === null ) { + $is_bot = self::is_bot_user_agent( $user_agent ); + } + return $is_bot; + } + + if ( empty( $user_agent ) ) { + return false; + } + + // Don't use cache when a custom user agent is provided. + return self::is_bot_user_agent( $user_agent ); + } + + /** + * Is the given user-agent a known bot? + * If you want an is_bot check for the current request's UA, use is_bot() instead of passing a user-agent to this method. + * + * @param string $ua A user-agent string. + * + * @return boolean + */ + public static function is_bot_user_agent( $ua = null ) { + + if ( empty( $ua ) ) { + return false; + } + + // Some sourced via + // https://github.com/ua-parser/uap-core/blob/432e95f6767cc8bab4c20c255784cd6f7e93bc15/regexes.yaml#L151 + $bot_agents = array( + // Microsoft/Bing https://www.bing.com/webmasters/help/which-crawlers-does-bing-use-8c184ec0 + 'bingbot', // Bing/Copilot + 'adidxbot', // Bing Ads + 'bingpreview', // Generates page snapshots for Bing + 'bingvideopreview', // Generates previews of videos for Bing + 'microsoft', + + // Google https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers + 'adsbot-google', + 'appengine-google', + 'feedfetcher-google', + 'mediapartners-google', + 'storebot-google', // https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers#google-storebot + 'google sketchup', + 'google-cloudbertexbot', // https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers#google-cloudvertexbot + 'google-extended', // Gemini https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers#google-extended + 'google-inspectiontool', // https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers + 'google-safety;', // https://www.google.com/bot.html + 'googlebot-mobile', + 'googlebot', // and googlebot-[image,video,news,] https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers#googlebot + 'googleother', // and googleother-[video,image] https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers#googleother + + // OpenAI https://platform.openai.com/docs/bots + 'gptbot', // Crawler + 'chatgpt-user', // ChatGPT on behalf of user + 'oai-searchbot', // ChatGPT search features + + // Anthropic + 'claudebot', // chat citation fetch https://support.anthropic.com/en/articles/8896518 + 'claude-web', // web-focused crawl https://darkvisitors.com/agents/claude-web + 'anthropic-ai', // bulk model training https://darkvisitors.com/agents/anthropic-ai + + // Perplexity + 'perplexitybot', // index builder https://docs.perplexity.ai/guides/bots + 'perplexity-user', // human-triggered visit https://docs.perplexity.ai/guides/bots + + // Meta https://developers.facebook.com/docs/sharing/webmasters/web-crawlers/ + 'facebookbot', // AI data scraper https://darkvisitors.com/agents/facebookbot + 'facebookexternalhit', // shares https://developers.facebook.com/docs/sharing/webmasters/web-crawlers/#identify + 'facebookcatalog', // shares https://developers.facebook.com/docs/sharing/webmasters/web-crawlers/#identify + 'meta-webindexer', // Meta AI search indexer https://developers.facebook.com/docs/sharing/webmasters/web-crawlers/#meta-webindexer + 'meta-externalads', // web crawler improving ads https://developers.facebook.com/docs/sharing/webmasters/web-crawlers/#meta-externalads + 'meta-externalagent', // training AI models https://developers.facebook.com/docs/sharing/webmasters/web-crawlers/#identify-2 + 'meta-externalfetcher', // user-initiated fetches, may skip robots.txt https://developers.facebook.com/docs/sharing/webmasters/web-crawlers/#identify-3 + + // Semrush https://www.semrush.com/bot/ + 'semrushbot', + 'siteauditbot', + + // Other bots (alphabetized list) + '123metaspider-bot', + '1470.net crawler', + '50.nu', + '8bo crawler bot', + 'aboundex', + 'ahrefsbot', + 'ai2bot', // AI2 crawler for LLMm training https://allenai.org/crawler + 'alexa', + 'altavista', + 'amazonbot', // https://developer.amazon.com/amazonbot + 'applebot', // https://support.apple.com/en-ca/HT204683 + 'arcgis hub indexer', + 'archive.org_bot', // http://archive.org/details/archive.org_bot + 'archiver', + 'ask jeeves', + 'attentio', + 'baiduspider', + 'blexbot', + 'blitzbot', + 'blogbridge', + 'bloglovin', + 'bne.es_bot', // https://www.bne.es/es/colecciones/archivo-web-espanola/aviso-webmasters + 'boardreader blog indexer', + 'boardreader favicon fetcher', + 'boitho.com-dc', + 'botseer', + 'bubing', + 'bytespider', // ByteDance (owner of TikTok) to train LLMs for Doubao https://darkvisitors.com/agents/bytespider + 'catchpoint', + 'ccbot', // CommonCrawl non-profit https://commoncrawl.org/ccbot + 'charlotte', + 'checklinks', + 'chtml generic', + 'cityreview robot', + 'cloudflare-alwaysonline', + 'clumboot', + 'coccocbot', // Coc Coc https://darkvisitors.com/agents/coccocbot-web + 'cohere-ai', // Cohere AI https://darkvisitors.com/agents/cohere-ai + 'comodo http', + 'comodo-webinspector-crawler', + 'converacrawler', + 'cookieinformationscanner', // Internal ref p1699315886066389-slack-C0438NHCLSY + 'crawl-e', + 'crawlconvera', + 'crawldaddy', + 'crawler', + 'crawlfire', + 'csimplespider', + 'dataforseobot', // https://www.dataforseo.com/dataforseo-bot + 'daumoa', + 'diffbot', // https://docs.diffbot.com/docs/how-to-use-custom-user-agents-with-extract-apis & https://darkvisitors.com/agents/diffbot + 'domaintunocrawler', + 'dotbot', // https://darkvisitors.com/agents/dotbot + 'duckassistbot', // DuckDuckGo AI Assistant https://darkvisitors.com/agents/duckassistbot + 'elisabot', + 'ezlynxbot', // https://www.ezoic.com/bot + 'fastmobilecrawl', + 'feed seeker bot', + 'feedbin', + 'feedburner', + 'finderbots', + 'findlinks', + 'firefly', + 'flamingo_searchengine', + 'followsite bot', + 'froogle', + 'furlbot', + 'genieo', + 'germcrawler', + 'gigabot', + 'gomezagent', + 'gonzo1', + 'grapeshotcrawler', + 'grokkit-crawler', + 'grub-client', + 'gsa-crawler', + 'heritrix', + 'hiddenmarket', + 'holmes', + 'hoowwwer', + 'htdig', + 'httrack', + 'ia_archiver', + 'icarus6j', + 'icc-crawler', + 'ichiro', + 'iconsurf', + 'iescholar', + 'iltrovatore', + 'index crawler', + 'infoseek', + 'infuzapp', + 'innovazion crawler', + 'internetarchive', + 'irlbot', + 'jbot', + 'job roboter', + 'jumpbot', + 'kaloogabot', + 'kiwistatus spider', + 'kraken', + 'kurzor', + 'larbin', + 'leia', + 'lesnikbot', + 'lijit crawler', + 'linguee bot', + 'linkaider', + 'linkcheck', + 'linkdexbot', + 'linkedinbot', + 'linkfluence', // http://linkfluence.com/ + 'linkwalker', // https://www.linkwalker.com/ + 'lite bot', + 'livelapbot', + 'llaut', + 'lycos', + 'mail.ru_bot', + 'masidani_bot', + 'masscan', + 'mediapartners', + 'mediobot', + 'mj12bot', + 'mogimogi', + 'mojeekbot', // https://www.mojeek.com/bot.html + 'motionbot', + 'mozdex', + 'mshots', + 'msnbot', + 'msrbot', + 'mtps feed aggregation system', + 'netresearch', + 'netvibes', + 'newsgator', + 'ning', + 'nutch', + 'nymesis', + 'objectssearch', + 'ogscrper', + 'omgili', // Webz.io web crawler for a data seller https://darkvisitors.com/agents/omgili + 'oozbot', + 'openbot', + 'openhosebot', + 'orbiter', + 'pagepeeker', + 'pagesinventory', + 'paxleframework', + 'peeplo screenshot bot', + 'phpcrawl', + 'pingdom.com_bot', + 'plantynet_webrobot', + 'pompos', + 'pss-webkit-request', + 'pythumbnail', + 'queryseekersp ider', + 'queryseekerspider', + 'qwantify', + 'read%20later', + 'reaper', + 'redcarpet', + 'retreiver', + 'riddler', + 'rival iq', + 'scollspider', + 'scooter', + 'scrapy', + 'scrubby', + 'searchsight', + 'seekbot', + 'semanticdiscovery', + 'seostats', + 'simplepie', + 'simplerss', + 'simpy', + 'sitecat webbot', + 'sitecon', + 'slack-imgproxy', + 'slackbot-linkexpanding', + 'slurp', + 'snapbot', + 'snapchat', // https://developers.snap.com/robots + 'snappy', + 'speedy spider', + 'spider', + 'squrl java', + 'stringer', + 'taptubot', + 'technoratisnoop', + 'teoma', + 'theusefulbot', + 'thumbshots.ru', + 'thumbshotsbot', + 'timpibot', // LLM trainer https://darkvisitors.com/agents/timpibot + 'tiny tiny rss', + 'trendictionbot', // http://www.trendiction.de/bot; + 'trends crawler', + 'tweetmemebot', + 'twiceler', + 'twitterbot', // https://developer.x.com/en/docs/x-for-websites/cards/guides/getting-started#crawling + 'url2png', + 'usyd-nlp-spider', + 'vagabondo', + 'voilabot', + 'vortex', + 'votay bot', + 'voyager', + 'wasalive.bot', + 'web-sniffer', + 'webthumb', + 'wesee', + 'whatsapp', + 'whatweb', + 'wire', + 'wordpress', + 'wotbox', + 'wp-e2e-tests', // WordPress e2e tests + 'www.almaden.ibm.com', + 'xenu', + 'yacybot', // http://yacy.net/bot.html + 'yahoo! slurp', + 'yahooseeker', + 'yahooysmcm', + 'yammybot', + 'yandexbot', + 'yottaamonitor', + 'youbot', // You.com AI assistant https://darkvisitors.com/agents/youbot + 'yowedo', + 'zao-crawler', + 'zao', + 'zebot_www.ze.bz', + 'zoombot', // SEOZOom https://darkvisitors.com/agents/zoombot + 'zooshot', + 'zyborg', + ); + + foreach ( $bot_agents as $bot_agent ) { + if ( false !== stripos( $ua, $bot_agent ) ) { + return true; + } + } + + return false; + } +} diff --git a/wp-content/plugins/wp-super-cache/src/device-detection/functions.php b/wp-content/plugins/wp-super-cache/src/device-detection/functions.php new file mode 100644 index 0000000..ba10500 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/src/device-detection/functions.php @@ -0,0 +1,39 @@ + p:last-child { + font-size: var(--font-body-small); +} + +#wpsc-dashboard > .header, +#wpsc-dashboard > .footer, +#wpsc-dashboard .wpsc-body-content, +#wpsc-dashboard .wpsc-nav { + max-width: var(--max-container-width); + margin-left: auto; + margin-right: auto; + width: 100%; +} + +.header { + --icon-height: 48px; + display: flex; + margin-top: 1em; +} + +.header .wpsc-icon { + width: var(--icon-height); + height: var(--icon-height); + border-radius: 7px; +} + +.header .wpsc-name { + color: var(--jp-black); + font-family: var(--wpsc-header-font); + font-size: var(--font-headline-small); + letter-spacing: -0.015em; + line-height: var(--icon-height); + margin-left: 0.25em; +} + +.wpsc-nav { + display: flex; + width: 100%; + overflow: hidden; +} + +.wpsc-nav-tab { + width: auto; + flex: none; + border-bottom: 2px solid transparent; + border-top: none; + text-align: center; + margin: 0 16px; +} + +.wpsc-nav-tab:hover, +.wpsc-nav-tab:focus, +.wpsc-nav-tab.wpsc-nav-tab-selected { + box-shadow: inset 0 -1px 0 rgb(0, 0, 0); +} + +.wpsc-nav-tab a { + display: flex; + align-items: center; + box-sizing: border-box; + padding: 15px; + width: 100%; + font-size: 1rem; + font-weight: 400; + line-height: 24px; + color: var(--jp-black); + cursor: pointer; + text-decoration: none; +} + +.wpsc-nav-container { + background: var(--jp-white); +} + +.wpsc-body { + background: var(--jp-white-off); +} + +.wpsc-card { + background: var(--jp-white); + border-radius: 4px; + flex-wrap: wrap; + font-size: var(--font-body); + line-height: 1.3; + margin-bottom: 2em; + margin-right: 1em; + max-width: 100%; + padding: 1rem 1.5rem; + position: relative; +} + +.footer { + --icon-height: 16px; + + display: flex; + margin-top: 1em; + margin-bottom: 1em; +} + +.footer .wp-super-cache-version .wpsc-icon { + border-radius: 2px; + height: var(--icon-height); + width: var(--icon-height); + vertical-align: middle; +} + +.footer .wp-super-cache-version .wpsc-name { + font-family: var(--wpsc-header-font); + letter-spacing: -0.015em; + margin-left: 0.25em; + line-height: var(--icon-height); + vertical-align: middle; +} + +.footer .automattic-airline { + flex: 1; + height: 45px; + text-align: right; +} + +.footer .automattic-airline img { + width: 190px; + height: auto; +} + +#wpsc-notice-boost-migrate { + margin-top: 10px; + + a.button.button-primary { + background-color: var(--jp-black); + color: var(--jp-white); + } +} diff --git a/wp-content/plugins/wp-super-cache/wp-cache-base.php b/wp-content/plugins/wp-super-cache/wp-cache-base.php new file mode 100644 index 0000000..ff3bf45 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/wp-cache-base.php @@ -0,0 +1,51 @@ +domain : trim( $current_blog->path, '/' ); + } elseif ( ( defined( 'SUBDOMAIN_INSTALL' ) && SUBDOMAIN_INSTALL ) || ( defined( 'VHOST' ) && VHOST === 'yes' ) ) { + $blogcacheid = $WPSC_HTTP_HOST; + } else { + $request_uri = str_replace( '..', '', preg_replace( '/[ <>\'\"\r\n\t\(\)]/', '', $_SERVER['REQUEST_URI'] ) ); + $request_uri = str_replace( '//', '/', $request_uri ); + + $wpsc_path_segs = array_filter( explode( '/', trim( $request_uri, '/' ) ) ); + $wpsc_base_count = defined( 'PATH_CURRENT_SITE' ) ? count( array_filter( explode( '/', trim( PATH_CURRENT_SITE, '/' ) ) ) ) : 0; + if ( ! str_ends_with( $request_uri, '/' ) ) { + $wpsc_path_segs = array_slice( $wpsc_path_segs, 0, -1 ); + } + + if ( count( $wpsc_path_segs ) > $wpsc_base_count && + ( ! defined( 'PATH_CURRENT_SITE' ) || str_starts_with( $request_uri, PATH_CURRENT_SITE ) ) + ) { + $blogcacheid = $wpsc_path_segs[ $wpsc_base_count ]; + } + } + + // If blogcacheid is empty then set it to main blog. + if ( empty( $blogcacheid ) ) { + $blogcacheid = 'blog'; + } + $blog_cache_dir = str_replace( '//', '/', $cache_path . 'blogs/' . $blogcacheid . '/' ); +} diff --git a/wp-content/plugins/wp-super-cache/wp-cache-config-sample.php b/wp-content/plugins/wp-super-cache/wp-cache-config-sample.php new file mode 100644 index 0000000..67b77b2 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/wp-cache-config-sample.php @@ -0,0 +1,105 @@ + diff --git a/wp-content/plugins/wp-super-cache/wp-cache-phase1.php b/wp-content/plugins/wp-super-cache/wp-cache-phase1.php new file mode 100644 index 0000000..e233b74 --- /dev/null +++ b/wp-content/plugins/wp-super-cache/wp-cache-phase1.php @@ -0,0 +1,195 @@ + 0 && ( filemtime( $file ) + $cache_max_time ) < time() ) { + wp_cache_debug( sprintf( 'Cache has expired and is older than %d seconds old.', $cache_max_time ) ); + return false; + } + + if ( isset( $wp_cache_mfunc_enabled ) == false ) { + $wp_cache_mfunc_enabled = 0; + } + + if ( false == isset( $wp_cache_home_path ) ) { + $wp_cache_home_path = '/'; + } + + // make sure ending slashes are ok + if ( $wp_cache_request_uri == $wp_cache_home_path || ( $wp_cache_slash_check && substr( $wp_cache_request_uri, -1 ) == '/' ) || ( $wp_cache_slash_check == 0 && substr( $wp_cache_request_uri, -1 ) != '/' ) ) { + + if ( $wp_cache_mfunc_enabled == 0 ) { + // get data from file + if ( $wp_cache_gzip_encoding ) { + if ( file_exists( $file . '.gz' ) ) { + $cachefiledata = file_get_contents( $file . '.gz' ); + + if ( false === $cachefiledata ) { + wp_cache_debug( 'The cached gzip file could not be read. Must generate a new one.' ); + return false; + } + + wp_cache_debug( "Fetched gzip static page data from supercache file using PHP. File: $file.gz" ); + } else { + $cachefiledata = file_get_contents( $file ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents + + if ( false === $cachefiledata ) { + wp_cache_debug( 'The cached file could not be read. Must generate a new one.' ); + return false; + } + + $cachefiledata = gzencode( $cachefiledata, 6, FORCE_GZIP ); + wp_cache_debug( "Fetched static page data from supercache file using PHP and gzipped it. File: $file" ); + } + } else { + $cachefiledata = file_get_contents( $file ); + + if ( false === $cachefiledata ) { + wp_cache_debug( 'The cached file could not be read. Must generate a new one.' ); + return false; + } + + wp_cache_debug( "Fetched static page data from supercache file using PHP. File: $file" ); + } + } else { + // get dynamic data from filtered file + $cachefiledata = file_get_contents( $file ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents + + if ( false === $cachefiledata ) { + wp_cache_debug( 'The cached file could not be read. Must generate a new one.' ); + return false; + } + + $cachefiledata = do_cacheaction( 'wpsc_cachedata', $cachefiledata ); + if ( $wp_cache_gzip_encoding ) { + $cachefiledata = gzencode( $cachefiledata, 6, FORCE_GZIP ); + wp_cache_debug( "Fetched dynamic page data from supercache file using PHP and gzipped it. File: $file" ); + } else { + wp_cache_debug( "Fetched dynamic page data from supercache file using PHP. File: $file" ); + } + } + + if ( isset( $wp_cache_disable_utf8 ) == false || $wp_cache_disable_utf8 == 0 ) { + header( 'Content-type: text/html; charset=UTF-8' ); + } + + if ( defined( 'WPSC_VARY_HEADER' ) ) { + if ( WPSC_VARY_HEADER != '' ) { + header( 'Vary: ' . WPSC_VARY_HEADER ); + } + } else { + header( 'Vary: Accept-Encoding, Cookie' ); + } + if ( defined( 'WPSC_CACHE_CONTROL_HEADER' ) ) { + if ( WPSC_CACHE_CONTROL_HEADER != '' ) { + header( 'Cache-Control: ' . WPSC_CACHE_CONTROL_HEADER ); + } + } else { + header( 'Cache-Control: max-age=3, must-revalidate' ); + } + $size = ( function_exists( 'mb_strlen' ) && function_exists( 'is_utf8_charset' ) ) ? mb_strlen( $cachefiledata, '8bit' ) : strlen( $cachefiledata ); + if ( $wp_cache_gzip_encoding ) { + if ( isset( $wpsc_served_header ) && $wpsc_served_header ) { + header( 'X-WP-Super-Cache: Served supercache gzip file from PHP' ); + } + header( 'Content-Encoding: ' . $wp_cache_gzip_encoding ); + header( 'Content-Length: ' . $size ); + } elseif ( $wp_supercache_304 ) { + if ( isset( $wpsc_served_header ) && $wpsc_served_header ) { + header( 'X-WP-Super-Cache: Served supercache 304 file from PHP' ); + } + header( 'Content-Length: ' . $size ); + } elseif ( isset( $wpsc_served_header ) && $wpsc_served_header ) { + header( 'X-WP-Super-Cache: Served supercache file from PHP' ); + } + + // don't try to match modified dates if using dynamic code. + if ( $wp_cache_mfunc_enabled == 0 && $wp_supercache_304 ) { + wp_cache_debug( 'wp_cache_serve_cache_file: checking age of cached vs served files.' ); + $headers = wpsc_apache_request_headers(); + $remote_mod_time = isset( $headers['If-Modified-Since'] ) ? $headers['If-Modified-Since'] : null; + + if ( $remote_mod_time === null && isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) ) { + $remote_mod_time = $_SERVER['HTTP_IF_MODIFIED_SINCE']; + } + + $local_mod_time = gmdate( 'D, d M Y H:i:s', filemtime( $file ) ) . ' GMT'; + if ( $remote_mod_time !== null && $remote_mod_time == $local_mod_time ) { + wp_cache_debug( 'wp_cache_serve_cache_file: Send 304 Not Modified header.' ); + header( $_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified' ); + exit( 0 ); + } else { + wp_cache_debug( 'wp_cache_serve_cache_file: 304 browser caching not possible as timestamps differ.' ); + } + header( 'Last-Modified: ' . $local_mod_time ); + } + + echo $cachefiledata; + exit( 0 ); + } else { + wp_cache_debug( 'No wp-cache file exists. Must generate a new one.' ); + return false; + } + } + + $cache_file = do_cacheaction( 'wp_cache_served_cache_file', $cache_file ); + // Sometimes the gzip headers are lost. Make sure html returned isn't compressed! + $do_not_serve_gzip_data = true; + if ( $cache_compression && $wp_cache_gzip_encoding ) { + if ( ! in_array( 'Content-Encoding: ' . $wp_cache_gzip_encoding, $meta['headers'], true ) ) { + wp_cache_debug( 'GZIP headers not found. Force uncompressed output.' ); + } else { + $do_not_serve_gzip_data = false; + if ( isset( $meta['dynamic'] ) ) { + unset( $meta['headers']['Content-Length'] ); // this is set later after the output data is compressed + } + wp_cache_debug( 'GZIP headers found. Serving compressed output.' ); + } + } + + foreach ( $meta['headers'] as $t => $header ) { + // godaddy fix, via http://blog.gneu.org/2008/05/wp-supercache-on-godaddy/ and http://www.littleredrails.com/blog/2007/09/08/using-wp-cache-on-godaddy-500-error/ + if ( strpos( $header, 'Last-Modified:' ) === false ) { + header( $header ); + wp_cache_debug( 'Sending Header: ' . $header ); + } + } + if ( isset( $wpsc_served_header ) && $wpsc_served_header ) { + header( 'X-WP-Super-Cache: Served WPCache cache file' ); + } + if ( isset( $meta['dynamic'] ) ) { + wp_cache_debug( 'Serving wp-cache dynamic file', 5 ); + if ( $do_not_serve_gzip_data ) { + // attempt to uncompress the cached file just in case it's gzipped + $cache = wp_cache_get_legacy_cache( $cache_file ); + $uncompressed = @gzuncompress( $cache ); + if ( $uncompressed ) { + wp_cache_debug( 'Uncompressed gzipped cache from wp-cache: ' . $cache_file ); + $cache = $uncompressed; + unset( $uncompressed ); + } + $cache = do_cacheaction( 'wpsc_cachedata', $cache ); + } else { + wp_cache_debug( 'Compressed cache data from wp-cache: ' . $cache_file ); + $cache = gzencode( + do_cacheaction( + 'wpsc_cachedata', + wp_cache_get_legacy_cache( $cache_file ) + ), + 6, + FORCE_GZIP + ); + $size = ( function_exists( 'mb_strlen' ) && function_exists( 'is_utf8_charset' ) ) ? mb_strlen( $cache, '8bit' ) : strlen( $cache ); + wp_cache_debug( 'Sending Header: Content-Length: ' . $size ); + header( 'Content-Length: ' . $size ); + } + } elseif ( $do_not_serve_gzip_data ) { + $cache = wp_cache_get_legacy_cache( $cache_file ); + $uncompressed = @gzuncompress( $cache ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- there is a small chance the cache isn't gzipped despite being configured to be. + if ( $uncompressed ) { + $cache = $uncompressed; + unset( $uncompressed ); + wp_cache_debug( 'Uncompressed gzipped cache data from wp-cache file: ' . $cache_file ); + } else { + wp_cache_debug( 'Sending already uncompressed cache file from wp-cache to browser: ' . $cache_file ); + } + } else { + wp_cache_debug( 'Sending wp-cache file to browser: ' . $cache_file ); + $cache = wp_cache_get_legacy_cache( $cache_file ); + } + // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- this is the cached version of the current page. It will have been escaped already. + echo $cache; + wp_cache_debug( 'exit request', 5 ); + die( 0 ); +} + +function wp_cache_get_legacy_cache( $cache_file ) { + return substr( @file_get_contents( $cache_file ), 15 ); +} + +function wp_cache_postload() { + global $cache_enabled, $wp_super_cache_late_init; + global $wp_cache_request_uri; + + if ( empty( $wp_cache_request_uri ) ) { + wp_cache_debug( 'wp_cache_postload: no request uri configured. Not running.' ); + return false; + } + + // have to sanitize here because formatting.php is loaded after wp_cache_request_uri is set + $wp_cache_request_uri = esc_url_raw( wp_unslash( $wp_cache_request_uri ) ); + + if ( ! $cache_enabled ) { + return true; + } + + if ( isset( $wp_super_cache_late_init ) && true == $wp_super_cache_late_init ) { + wp_cache_debug( 'Supercache Late Init: add wp_cache_serve_cache_file to init', 3 ); + add_action( 'init', 'wp_cache_late_loader', 9999 ); + } else { + wp_super_cache_init(); + wp_cache_phase2(); + } +} + +function wp_cache_late_loader() { + wp_cache_debug( 'Supercache Late Loader running on init', 3 ); + wp_cache_serve_cache_file(); + wp_cache_phase2(); +} + +function wpsc_get_auth_cookies() { + static $cached_cookies; + + if ( isset( $cached_cookies ) && is_array( $cached_cookies ) ) { + return $cached_cookies; + } + + $cookies = array_keys( $_COOKIE ); + if ( empty( $cookies ) ) { + return array(); + } + + $auth_cookies = array(); + $duplicate_cookies = array(); + + $wp_cookies = array( + 'AUTH_COOKIE' => 'wordpress_', + 'SECURE_AUTH_COOKIE' => 'wordpress_sec_', + 'LOGGED_IN_COOKIE' => 'wordpress_logged_in_', + ); + + foreach ( $wp_cookies as $cookie_const => $cookie_prefix ) { + $cookie_key = strtolower( $cookie_const ); + + if ( defined( $cookie_const ) ) { + if ( in_array( constant( $cookie_const ), $cookies, true ) ) { + $auth_cookies[ $cookie_key ] = constant( $cookie_const ); + } + + continue; + } + + $found_cookies = preg_grep( '`^' . preg_quote( $cookie_prefix, '`' ) . '([0-9a-f]+)$`', $cookies ); + + if ( count( $found_cookies ) === 1 ) { + $auth_cookies[ $cookie_key ] = reset( $found_cookies ); + } elseif ( count( $found_cookies ) > 1 ) { + $duplicate_cookies = array_merge( $duplicate_cookies, $found_cookies ); + $auth_cookies[ $cookie_key ] = $found_cookies; + } + } + + $cookie_hash = defined( 'COOKIEHASH' ) ? COOKIEHASH : ''; + $other_cookies = array( + 'comment_cookie' => 'comment_author_', + 'postpass_cookie' => 'wp-postpass_', + ); + + foreach ( $other_cookies as $cookie_key => $cookie_prefix ) { + + if ( $cookie_hash ) { + if ( in_array( $cookie_prefix . $cookie_hash, $cookies, true ) ) { + $auth_cookies[ $cookie_key ] = $cookie_prefix . $cookie_hash; + } + + continue; + } + + $found_cookies = preg_grep( '`^' . preg_quote( $cookie_prefix, '`' ) . '([0-9a-f]+)$`', $cookies ); + + if ( count( $found_cookies ) === 1 ) { + $auth_cookies[ $cookie_key ] = reset( $found_cookies ); + } elseif ( count( $found_cookies ) > 1 ) { + $duplicate_cookies = array_merge( $duplicate_cookies, $found_cookies ); + $auth_cookies[ $cookie_key ] = $found_cookies; + } + } + + if ( ! $duplicate_cookies ) { + $cached_cookies = $auth_cookies; + } + + if ( empty( $auth_cookies ) ) { + wp_cache_debug( 'wpsc_get_auth_cookies: no auth cookies detected', 5 ); + } elseif ( $duplicate_cookies ) { + wp_cache_debug( 'wpsc_get_auth_cookies: duplicate cookies detected( ' . implode( ', ', $duplicate_cookies ) . ' )', 5 ); + } else { + wp_cache_debug( 'wpsc_get_auth_cookies: cookies detected: ' . implode( ', ', $auth_cookies ), 5 ); + } + + return $auth_cookies; +} + +/** + * Returns a string containing a sanitized version of the Accept header. + * For now, this can only respond with `text/html` or `application/json` - + * used to differentiate between pages which may or may not be cacheable. + */ +function wpsc_get_accept_header() { + static $accept = 'N/A'; + + if ( $accept === 'N/A' ) { + $accept_headers = apply_filters( 'wpsc_accept_headers', array( 'application/json', 'application/activity+json', 'application/ld+json' ) ); + $accept_headers = array_map( 'strtolower', $accept_headers ); + // phpcs:ignore WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase + // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash -- $accept is checked and set below. + $accept = isset( $_SERVER['HTTP_ACCEPT'] ) ? strtolower( filter_var( $_SERVER['HTTP_ACCEPT'] ) ) : ''; + + foreach ( $accept_headers as $header ) { + if ( str_contains( $accept, $header ) ) { + $accept = 'application/json'; + } + } + + if ( $accept !== 'application/json' ) { + $accept = 'text/html'; + } + + wp_cache_debug( 'ACCEPT: ' . $accept ); + } + + return $accept; +} + +function wp_cache_get_cookies_values() { + global $wpsc_cookies; + static $string = ''; + + if ( $string != '' ) { + wp_cache_debug( "wp_cache_get_cookies_values: cached: $string" ); + return $string; + } + + if ( defined( 'COOKIEHASH' ) ) { + $cookiehash = preg_quote( constant( 'COOKIEHASH' ) ); + } else { + $cookiehash = ''; + } + $regex = "/^wp-postpass_$cookiehash|^comment_author_$cookiehash"; + if ( defined( 'LOGGED_IN_COOKIE' ) ) { + $regex .= '|^' . preg_quote( constant( 'LOGGED_IN_COOKIE' ) ); + } else { + $regex .= "|^wordpress_logged_in_$cookiehash"; + } + $regex .= '/'; + while ( $key = key( $_COOKIE ) ) { + if ( preg_match( $regex, $key ) ) { + wp_cache_debug( 'wp_cache_get_cookies_values: Login/postpass cookie detected' ); + $string .= $_COOKIE[ $key ] . ','; + } + next( $_COOKIE ); + } + reset( $_COOKIE ); + + // If you use this hook, make sure you update your .htaccess rules with the same conditions + $string = do_cacheaction( 'wp_cache_get_cookies_values', $string ); + + if ( + isset( $wpsc_cookies ) && + is_array( $wpsc_cookies ) + ) { + foreach ( $wpsc_cookies as $name ) { + if ( isset( $_COOKIE[ $name ] ) ) { + wp_cache_debug( "wp_cache_get_cookies_values - found extra cookie: $name" ); + $string .= $name . '=' . $_COOKIE[ $name ] . ','; + } + } + } + + if ( $string != '' ) { + $string = md5( $string ); + } + + wp_cache_debug( "wp_cache_get_cookies_values: return: $string", 5 ); + return $string; +} + +function add_cacheaction( $action, $func ) { + global $wp_supercache_actions; + $wp_supercache_actions[ $action ][] = $func; +} + +function do_cacheaction( $action, $value = '' ) { + global $wp_supercache_actions; + + if ( ! isset( $wp_supercache_actions ) || ! is_array( $wp_supercache_actions ) ) { + return $value; + } + + if ( array_key_exists( $action, $wp_supercache_actions ) && is_array( $wp_supercache_actions[ $action ] ) ) { + $actions = $wp_supercache_actions[ $action ]; + foreach ( $actions as $func ) { + $value = call_user_func_array( $func, array( $value ) ); + } + } + + return $value; +} + +function wp_cache_mobile_group( $user_agent ) { + global $wp_cache_mobile_groups; + foreach ( (array) $wp_cache_mobile_groups as $name => $group ) { + foreach ( (array) $group as $browser ) { + $browser = trim( strtolower( $browser ) ); + if ( $browser != '' && strstr( $user_agent, $browser ) ) { + return $browser; + } + } + } + return 'mobile'; +} + +// From https://wordpress.org/plugins/wordpress-mobile-edition/ by Alex King +function wp_cache_check_mobile( $cache_key ) { + global $wp_cache_mobile_enabled, $wp_cache_mobile_browsers, $wp_cache_mobile_prefixes; + if ( ! isset( $wp_cache_mobile_enabled ) || false == $wp_cache_mobile_enabled ) { + return $cache_key; + } + + // a check of wp_is_mobile() should be added here, but if the Jetpack WPSC plugin + // is enabled, jetpack_is_mobile() is used through the wp_cache_check_mobile action. + + wp_cache_debug( "wp_cache_check_mobile: $cache_key" ); + + // allow plugins to short circuit mobile check. Cookie, extra UA checks? + switch ( do_cacheaction( 'wp_cache_check_mobile', $cache_key ) ) { + case 'normal': + wp_cache_debug( 'wp_cache_check_mobile: desktop user agent detected by wp_cache_check_mobile action' ); + return $cache_key; + break; + case 'mobile': + wp_cache_debug( 'wp_cache_check_mobile: mobile user agent detected by wp_cache_check_mobile action' ); + return $cache_key . '-mobile'; + break; + } + + if ( ! isset( $_SERVER['HTTP_USER_AGENT'] ) ) { + return $cache_key; + } + + if ( do_cacheaction( 'disable_mobile_check', false ) ) { + wp_cache_debug( 'wp_cache_check_mobile: disable_mobile_check disabled mobile check' ); + return $cache_key; + } + + $browsers = explode( ',', $wp_cache_mobile_browsers ); + $user_agent = strtolower( $_SERVER['HTTP_USER_AGENT'] ); + foreach ( $browsers as $browser ) { + if ( strstr( $user_agent, trim( strtolower( $browser ) ) ) ) { + wp_cache_debug( 'mobile browser detected: ' . $browser ); + return $cache_key . '-' . wp_cache_mobile_group( $user_agent ); + } + } + if ( isset( $_SERVER['HTTP_X_WAP_PROFILE'] ) ) { + return $cache_key . '-' . $_SERVER['HTTP_X_WAP_PROFILE']; + } + if ( isset( $_SERVER['HTTP_PROFILE'] ) ) { + return $cache_key . '-' . $_SERVER['HTTP_PROFILE']; + } + + if ( isset( $wp_cache_mobile_prefixes ) ) { + $browsers = explode( ',', $wp_cache_mobile_prefixes ); + foreach ( $browsers as $browser_prefix ) { + if ( substr( $user_agent, 0, 4 ) == $browser_prefix ) { + wp_cache_debug( 'mobile browser (prefix) detected: ' . $browser_prefix ); + return $cache_key . '-' . $browser_prefix; + } + } + } + $accept = isset( $_SERVER['HTTP_ACCEPT'] ) ? strtolower( $_SERVER['HTTP_ACCEPT'] ) : ''; + if ( str_contains( $accept, 'wap' ) ) { + return $cache_key . '-' . 'wap'; + } + + if ( isset( $_SERVER['ALL_HTTP'] ) && strpos( strtolower( $_SERVER['ALL_HTTP'] ), 'operamini' ) !== false ) { + return $cache_key . '-' . 'operamini'; + } + + return $cache_key; +} + +/** + * Add a log message to the file, if debugging is turned on + * + * @param $message string The message that should be added to the log + * @param $level int + */ +function wp_cache_debug( $message, $level = 1 ) { + global $wp_cache_debug_log, $cache_path, $wp_cache_debug_ip, $wp_super_cache_debug; + static $last_message = ''; + + if ( $last_message == $message ) { + return false; + } + $last_message = $message; + + // If either of the debug or log globals aren't set, then we can stop + if ( ! isset( $wp_super_cache_debug ) + || ! isset( $wp_cache_debug_log ) ) { + return false; + } + + // If either the debug or log globals are false or empty, we can stop + if ( $wp_super_cache_debug == false + || $wp_cache_debug_log === '' ) { + return false; + } + + // If the debug_ip has been set, but it doesn't match the ip of the requester + // then we can stop. + if ( isset( $wp_cache_debug_ip ) + && $wp_cache_debug_ip !== '' + && ( ! isset( $_SERVER['REMOTE_ADDR'] ) || $wp_cache_debug_ip !== $_SERVER['REMOTE_ADDR'] ) ) { + return false; + } + + // if cache path is gone, then don't log anything + if ( empty( $cache_path ) || ! is_dir( $cache_path ) ) { + return; + } + + // Log message: Date URI Message + $log_message = date( 'H:i:s' ) . ' ' . getmypid() . " {$_SERVER['REQUEST_URI']} {$message}" . PHP_EOL; + // path to the log file in the cache folder + $log_file = $cache_path . str_replace( '/', '', str_replace( '..', '', $wp_cache_debug_log ) ); + + if ( ! file_exists( $log_file ) && function_exists( 'wpsc_create_debug_log' ) ) { + global $wp_cache_debug_username; + if ( ! isset( $wp_cache_debug_username ) ) { + $wp_cache_debug_username = ''; + } + + wpsc_create_debug_log( $wp_cache_debug_log, $wp_cache_debug_username ); + } + + error_log( $log_message, 3, $log_file ); +} + +function wpsc_dump_get_request() { + static $string; + + if ( isset( $string ) ) { + return $string; + } + + if ( function_exists( 'wp_json_encode' ) ) { + $string = wp_json_encode( $_GET, JSON_UNESCAPED_SLASHES ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended + } else { + $string = json_encode( $_GET, JSON_UNESCAPED_SLASHES ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended,WordPress.WP.AlternativeFunctions.json_encode_json_encode + } + + return $string; +} + +function wpsc_is_backend() { + static $is_backend; + + if ( isset( $is_backend ) ) { + return $is_backend; + } + + $is_backend = is_admin(); + if ( $is_backend ) { + return $is_backend; + } + + $script = isset( $_SERVER['PHP_SELF'] ) ? basename( $_SERVER['PHP_SELF'] ) : ''; + if ( $script !== 'index.php' ) { + if ( in_array( $script, array( 'wp-login.php', 'xmlrpc.php', 'wp-cron.php' ) ) ) { + $is_backend = true; + } elseif ( defined( 'DOING_CRON' ) && DOING_CRON ) { + $is_backend = true; + } elseif ( PHP_SAPI == 'cli' || ( defined( 'WP_CLI' ) && WP_CLI ) ) { + $is_backend = true; + } + } + + return $is_backend; +} + +function get_supercache_dir( $blog_id = 0 ) { + global $cache_path; + if ( $blog_id == 0 ) { + $home = get_option( 'home' ); + } else { + $home = get_blog_option( $blog_id, 'home' ); + } + return trailingslashit( apply_filters( 'wp_super_cache_supercachedir', $cache_path . 'supercache/' . trailingslashit( strtolower( preg_replace( '/:.*$/', '', str_replace( 'http://', '', str_replace( 'https://', '', $home ) ) ) ) ) ) ); +} +function get_current_url_supercache_dir( $post_id = 0 ) { + global $cached_direct_pages, $cache_path, $wp_cache_request_uri, $WPSC_HTTP_HOST, $wp_cache_home_path; + static $saved_supercache_dir = array(); + + if ( isset( $saved_supercache_dir[ $post_id ] ) ) { + return $saved_supercache_dir[ $post_id ]; + } + + $DONOTREMEMBER = 0; + if ( $post_id != 0 ) { + $site_url = site_url(); + $permalink = get_permalink( $post_id ); + if ( ! str_contains( $permalink, $site_url ) ) { + /* + * Sometimes site_url doesn't return the siteurl. See https://wordpress.org/support/topic/wp-super-cache-not-refreshing-post-after-comments-made + */ + $DONOTREMEMBER = 1; + wp_cache_debug( "get_current_url_supercache_dir: WARNING! site_url ($site_url) not found in permalink ($permalink).", 1 ); + if ( preg_match( '`^(https?:)?//([^/]+)(/.*)?$`i', $permalink, $matches ) ) { + if ( $WPSC_HTTP_HOST != $matches[2] ) { + wp_cache_debug( "get_current_url_supercache_dir: WARNING! SERVER_NAME ({$WPSC_HTTP_HOST}) not found in permalink ($permalink).", 1 ); + } + wp_cache_debug( "get_current_url_supercache_dir: Removing SERVER_NAME ({$matches[2]}) from permalink ($permalink). Is the url right?", 1 ); + $uri = isset( $matches[3] ) ? $matches[3] : ''; + } elseif ( preg_match( '`^/([^/]+)(/.*)?$`i', $permalink, $matches ) ) { + wp_cache_debug( "get_current_url_supercache_dir: WARNING! Permalink ($permalink) looks as absolute path. Is the url right?", 1 ); + $uri = $permalink; + } else { + wp_cache_debug( "get_current_url_supercache_dir: WARNING! Permalink ($permalink) could not be understood by parsing url. Using front page.", 1 ); + $uri = ''; + } + } else { + $uri = str_replace( $site_url, '', $permalink ); + $home_path = $wp_cache_home_path ?? ''; + if ( $home_path !== '' && ! str_starts_with( $uri, $home_path ) ) { + $uri = rtrim( $home_path, '/' ) . $uri; + } + } + } else { + $uri = strtolower( $wp_cache_request_uri ); + $uri = preg_replace_callback( + '/%[a-f0-9]{2}/', + function ( $matches ) { + return strtoupper( $matches[0] ); + }, + $uri + ); + } + $uri = wpsc_deep_replace( array( '..', '\\', 'index.php' ), preg_replace( '/[ <>\'\"\r\n\t\(\)]/', '', preg_replace( '/(\?.*)?(#.*)?$/', '', $uri ) ) ); + $hostname = $WPSC_HTTP_HOST; + // Get hostname from wp options for wp-cron, wp-cli and similar requests. + if ( empty( $hostname ) && function_exists( 'get_option' ) ) { + $hostname = (string) parse_url( get_option( 'home' ), PHP_URL_HOST ); + } + $dir = preg_replace( '/:.*$/', '', $hostname ) . $uri; // To avoid XSS attacks + if ( function_exists( 'apply_filters' ) ) { + $dir = apply_filters( 'supercache_dir', $dir ); + } else { + $dir = do_cacheaction( 'supercache_dir', $dir ); + } + $dir = $cache_path . 'supercache/' . $dir . '/'; + if ( is_array( $cached_direct_pages ) && in_array( $_SERVER['REQUEST_URI'], $cached_direct_pages ) ) { + $dir = ABSPATH . $uri . '/'; + } + $dir = str_replace( '..', '', str_replace( '//', '/', $dir ) ); + wp_cache_debug( "supercache dir: $dir", 5 ); + if ( $DONOTREMEMBER == 0 ) { + $saved_supercache_dir[ $post_id ] = $dir; + } + return $dir; +} + +/* + * Delete (or rebuild) all the files in one directory. + * Checks if it is in the cache directory but doesn't allow files in the following directories to be deleted: + * wp-content/cache/ + * wp-content/cache/blogs/ + * wp-content/cache/supercache/ + * + */ +function wpsc_rebuild_files( $dir ) { + return wpsc_delete_files( $dir, false ); +} + +// realpath() doesn't always remove the trailing slash +function wpsc_get_realpath( $directory ) { + if ( $directory == '/' ) { + wp_cache_debug( "wpsc_get_realpath: cannot get realpath of '/'" ); + return false; + } + + $original_dir = $directory; + $directory = realpath( $directory ); + + if ( ! $directory ) { + wp_cache_debug( "wpsc_get_realpath: directory does not exist - $original_dir" ); + return false; + } + + if ( substr( $directory, -1 ) == '/' || substr( $directory, -1 ) == '\\' ) { + $directory = substr( $directory, 0, -1 ); // remove trailing slash + } + + return $directory; +} + +// return true if directory is in the cache directory +function wpsc_is_in_cache_directory( $directory ) { + global $cache_path; + static $rp_cache_path = ''; + + if ( $directory == '' ) { + wp_cache_debug( 'wpsc_is_in_cache_directory: exiting as directory is blank' ); + return false; + } + + if ( $cache_path == '' ) { + wp_cache_debug( 'wpsc_is_in_cache_directory: exiting as cache_path is blank' ); + return false; + } + + if ( $rp_cache_path == '' ) { + $rp_cache_path = wpsc_get_realpath( $cache_path ); + } + + if ( ! $rp_cache_path ) { + wp_cache_debug( 'wpsc_is_in_cache_directory: exiting as cache_path directory does not exist' ); + return false; + } + + $directory = wpsc_get_realpath( $directory ); + + if ( ! $directory ) { + wp_cache_debug( 'wpsc_is_in_cache_directory: directory does not exist' ); + return false; + } + + if ( substr( $directory, 0, strlen( $rp_cache_path ) ) == $rp_cache_path ) { + return true; + } else { + return false; + } +} + +function wpsc_delete_files( $dir, $delete = true ) { + global $cache_path; + static $protected = ''; + + if ( $dir == '' ) { + wp_cache_debug( 'wpsc_delete_files: directory is blank' ); + return false; + } + wp_cache_debug( 'wpsc_delete_files: deleting ' . $dir ); + + // only do this once, this function will be called many times + if ( $protected == '' ) { + $protected = array( $cache_path, $cache_path . 'blogs/', $cache_path . 'supercache' ); + foreach ( $protected as $id => $directory ) { + $protected[ $id ] = trailingslashit( wpsc_get_realpath( $directory ) ); + } + } + + $orig_dir = $dir; + $dir = wpsc_get_realpath( $dir ); + if ( ! $dir ) { + wp_cache_debug( 'wpsc_delete_files: directory does not exist: ' . $orig_dir ); + return false; + } + + $dir = trailingslashit( $dir ); + + if ( ! wpsc_is_in_cache_directory( $dir ) ) { + wp_cache_debug( 'wpsc_delete_files: directory is not in cache directory: ' . $dir ); + return false; + } + + if ( in_array( $dir, $protected ) ) { + wp_cache_debug( 'wpsc_delete_files: directory is protected ' . $dir ); + return false; + } + + if ( is_dir( $dir ) && $dh = @opendir( $dir ) ) { + while ( ( $file = readdir( $dh ) ) !== false ) { + wp_cache_debug( 'wpsc_delete_files: reading files: ' . $file ); + if ( $file != '.' && $file != '..' && $file != '.htaccess' && is_file( $dir . $file ) ) { + if ( $delete ) { + wp_cache_debug( 'wpsc_delete_files: deleting ' . $dir . $file ); + @unlink( $dir . $file ); + } else { + wp_cache_debug( 'wpsc_delete_files: rebuild or delete ' . $dir . $file ); + @wp_cache_rebuild_or_delete( $dir . $file ); + } + } + } + closedir( $dh ); + + if ( $delete ) { + wp_cache_debug( 'wpsc_delete_files: remove directory ' . $dir ); + @rmdir( $dir ); + } + } else { + wp_cache_debug( 'wpsc_delete_files: could not open directory ' . $dir ); + } + return true; +} + +function get_all_supercache_filenames( $dir = '' ) { + global $wp_cache_mobile_enabled, $cache_path; + + $dir = wpsc_get_realpath( $dir ); + if ( ! $dir ) { + wp_cache_debug( 'get_all_supercache_filenames: directory does not exist' ); + return array(); + } + + if ( ! wpsc_is_in_cache_directory( $dir ) ) { + return array(); + } + + $filenames = array( 'index.html', 'index-https.html', 'index.html.php' ); + + if ( isset( $wp_cache_mobile_enabled ) && $wp_cache_mobile_enabled ) { + // open directory and look for index-*.html files + if ( is_dir( $dir ) && $dh = @opendir( $dir ) ) { + while ( ( $file = readdir( $dh ) ) !== false ) { + if ( substr( $file, 0, 6 ) == 'index-' && strpos( $file, '.html' ) ) { + $filenames[] = $file; + } + } + closedir( $dh ); + } + } + + if ( function_exists( 'apply_filters' ) ) { + $filenames = apply_filters( 'all_supercache_filenames', $filenames ); + } else { + $filenames = do_cacheaction( 'all_supercache_filenames', $filenames ); + } + + foreach ( $filenames as $file ) { + $out[] = $file; + $out[] = $file . '.gz'; + } + + return $out; +} + +function wpsc_is_https() { + // Also supports https requests coming from an nginx reverse proxy + return ( ( isset( $_SERVER['HTTPS'] ) && 'on' == strtolower( $_SERVER['HTTPS'] ) ) || ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && 'https' == strtolower( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) ); +} + +function supercache_filename() { + global $cached_direct_pages; + + // Add support for https and http caching + $is_https = wpsc_is_https(); + $extra_str = $is_https ? '-https' : ''; + + if ( function_exists( 'apply_filters' ) ) { + $extra_str = apply_filters( 'supercache_filename_str', $extra_str ); + } else { + $extra_str = do_cacheaction( 'supercache_filename_str', $extra_str ); + } + + if ( is_array( $cached_direct_pages ) && in_array( $_SERVER['REQUEST_URI'], $cached_direct_pages ) ) { + $extra_str = ''; + } + $filename = 'index' . $extra_str . '.html'; + + return $filename; +} + +function get_oc_version() { + _deprecated_function( __FUNCTION__, '1.10.0' ); +} + +// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable +function reset_oc_version( $version = 1 ) { + _deprecated_function( __FUNCTION__, '1.10.0' ); +} + +// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable +function get_oc_key( $url = false ) { + _deprecated_function( __FUNCTION__, '1.10.0' ); +} + +function wp_supercache_cache_for_admins() { + + // Don't remove cookies for some requests. + if ( + wpsc_is_backend() || + $_SERVER['REQUEST_METHOD'] !== 'GET' || + isset( $_GET['preview'], $_GET['customize_changeset_uuid'] ) || // WPCS: CSRF ok. + strpos( stripslashes( $_SERVER['REQUEST_URI'] ), '/wp-json/' ) !== false // WPCS: sanitization ok. + ) { + return true; + } + + if ( false === do_cacheaction( 'wp_supercache_remove_cookies', true ) ) { + return true; + } + + $removed_cookies = array(); + foreach ( wpsc_get_auth_cookies() as $cookie ) { + + $cookies = is_array( $cookie ) ? $cookie : array( $cookie ); + + foreach ( $cookies as $cookie_key ) { + unset( $_COOKIE[ $cookie_key ] ); + $removed_cookies[] = $cookie_key; + } + } + + if ( ! empty( $removed_cookies ) ) { + wp_cache_debug( 'Removing auth from $_COOKIE to allow caching for logged in user ( ' . implode( ', ', $removed_cookies ) . ' )', 5 ); + } +} + +/* + * Check if caching is disabled for the current visitor based on their cookies + */ +function wpsc_is_caching_user_disabled() { + global $wp_cache_not_logged_in; + if ( $wp_cache_not_logged_in == 2 && wpsc_get_auth_cookies() ) { + wp_cache_debug( 'wpsc_is_caching_user_disabled: true because logged in' ); + return true; + } elseif ( $wp_cache_not_logged_in == 1 && ! empty( $_COOKIE ) ) { + wp_cache_debug( 'wpsc_is_caching_user_disabled: true because cookie found' ); + return true; + } else { + wp_cache_debug( 'wpsc_is_caching_user_disabled: false' ); + return false; + } +} + +/* returns true/false depending on location of $dir. */ +function wp_cache_confirm_delete( $dir ) { + global $cache_path, $blog_cache_dir; + // don't allow cache_path, blog cache dir, blog meta dir, supercache. + $dir = wpsc_get_realpath( $dir ); + + if ( ! $dir ) { + wp_cache_debug( 'wp_cache_confirm_delete: directory does not exist' ); + return false; + } + + if ( ! wpsc_is_in_cache_directory( $dir ) ) { + return false; + } + + $rp_cache_path = wpsc_get_realpath( $cache_path ); + + if ( ! $rp_cache_path ) { + wp_cache_debug( "wp_cache_confirm_delete: cache_path does not exist: $cache_path" ); + return false; + } + + if ( + $dir == $rp_cache_path || + $dir == wpsc_get_realpath( $blog_cache_dir ) || + $dir == wpsc_get_realpath( $blog_cache_dir . 'meta/' ) || + $dir == wpsc_get_realpath( $cache_path . 'supercache' ) + ) { + return false; + } else { + return true; + } +} + +// copy of _deep_replace() to be used before WordPress loads +function wpsc_deep_replace( $search, $subject ) { + $subject = (string) $subject; + + $count = 1; + while ( $count ) { + $subject = str_replace( $search, '', $subject, $count ); + } + + return $subject; +} + +function wpsc_get_protected_directories() { + global $cache_path, $blog_cache_dir; + return apply_filters( + 'wpsc_protected_directories', + array( + $cache_path . '.htaccess', + $cache_path . 'index.html', + $blog_cache_dir, + $blog_cache_dir . 'index.html', + $blog_cache_dir . 'meta', + $blog_cache_dir . 'meta/index.html', + $cache_path . 'supercache/index.html', + $cache_path . 'supercache', + ) + ); +} + +function wpsc_debug_username() { + global $wp_cache_debug_username; + if ( ! isset( $wp_cache_debug_username ) || $wp_cache_debug_username == '' ) { + $wp_cache_debug_username = md5( (string) ( time() + wp_rand() ) ); + wp_cache_setting( 'wp_cache_debug_username', $wp_cache_debug_username ); + } + return $wp_cache_debug_username; +} +function wpsc_create_debug_log( $filename = '', $username = '' ) { + global $cache_path, $wp_cache_debug_username, $wp_cache_debug_log; + if ( $filename != '' ) { + $wp_cache_debug_log = $filename; + } else { + $wp_cache_debug_log = md5( (string) ( time() + wp_rand() ) ) . '.php'; + } + if ( $username != '' ) { + $wp_cache_debug_username = $username; + } else { + $wp_cache_debug_username = wpsc_debug_username(); + } + + $msg = 'die( "Please use the viewer" );' . PHP_EOL; + $fp = fopen( $cache_path . $wp_cache_debug_log, 'w' ); + if ( $fp ) { + fwrite( $fp, '<' . "?php\n" ); + fwrite( $fp, $msg ); + fwrite( $fp, '?' . '>
    ' . PHP_EOL );
    +		fwrite( $fp, '<' . '?php // END HEADER ?' . '>' . PHP_EOL );
    +		fclose( $fp );
    +		wp_cache_setting( 'wp_cache_debug_log', $wp_cache_debug_log );
    +		wp_cache_setting( 'wp_cache_debug_username', $wp_cache_debug_username );
    +	}
    +
    +	$msg = '
    +if ( !isset( $_SERVER[ "PHP_AUTH_USER" ] ) || ( $_SERVER[ "PHP_AUTH_USER" ] != "' . $wp_cache_debug_username . '" && $_SERVER[ "PHP_AUTH_PW" ] != "' . $wp_cache_debug_username . '" ) ) {
    +	header( "WWW-Authenticate: Basic realm=\"WP-Super-Cache Debug Log\"" );
    +	header( $_SERVER[ "SERVER_PROTOCOL" ] . " 401 Unauthorized" );
    +	echo "You must login to view the debug log";
    +	exit( 0 );
    +}' . PHP_EOL;
    +
    +	$fp = fopen( $cache_path . 'view_' . $wp_cache_debug_log, 'w' );
    +	if ( $fp ) {
    +		fwrite( $fp, '<' . '?php' . PHP_EOL );
    +		$msg .= '$debug_log = file( "./' . $wp_cache_debug_log . '" );
    +$start_log = 1 + array_search( "<" . "?php // END HEADER ?" . ">" . PHP_EOL, $debug_log );
    +if ( $start_log > 1 ) {
    +	$debug_log = array_slice( $debug_log, $start_log );
    +}
    +?' . '>
    <' . '?php + +$checks = array( "wp-admin", "exclude_filter", "wp-content", "wp-json" ); +foreach( $checks as $check ) { + if ( isset( $_GET[ $check ] ) ) { + $$check = 1; + } else { + $$check = 0; + } +} + +if ( isset( $_GET[ "filter" ] ) ) { + $filter = htmlspecialchars( $_GET[ "filter" ] ); +} else { + $filter = ""; +} + +unset( $checks[1] ); // exclude_filter +?' . '> +

    WP Super Cache Log Viewer

    +

    Warning! Do not copy and paste this log file to a public website!

    +

    This log file contains sensitive information about your website such as cookies and directories.

    +

    If you must share it please remove any cookies and remove any directories such as ' . ABSPATH . '.

    +Exclude requests:
    +<' . '?php foreach ( $checks as $check ) { ?> +
    +<' . '?php } ?' . '> +
    +Text to filter by: + +
    + /> Exclude by filter instead of include.
    + + +<' . '?php +$path_to_site = "' . ABSPATH . '"; +foreach ( $debug_log as $t => $line ) { + $line = str_replace( $path_to_site, "ABSPATH/", $line ); + $debug_log[ $t ] = $line; + foreach( $checks as $check ) { + if ( $$check && str_contains( $line, " /$check/" ) ) { + unset( $debug_log[ $t ] ); + } + } + if ( $filter ) { + if ( str_contains( $line, $filter ) && $exclude_filter ) { + unset( $debug_log[ $t ] ); + } elseif ( ! str_contains( $line, $filter ) && ! $exclude_filter ) { + unset( $debug_log[ $t ] ); + } + } +} +echo "
    ";
    +foreach( $debug_log as $line ) {
    +	echo htmlspecialchars( $line );
    +}
    +echo "
    "; +'; + fwrite( $fp, $msg ); + fclose( $fp ); + } + + return array( + 'wp_cache_debug_log' => $wp_cache_debug_log, + 'wp_cache_debug_username' => $wp_cache_debug_username, + ); +} + +function wpsc_delete_url_cache( $url ) { + if ( str_contains( $url, '?' ) ) { + wp_cache_debug( 'wpsc_delete_url_cache: URL contains the character "?". Not deleting URL: ' . $url ); + return false; + } + $dir = str_replace( get_option( 'home' ), '', $url ); + if ( $dir != '' ) { + $supercachedir = get_supercache_dir(); + wpsc_rebuild_files( $supercachedir . $dir ); + prune_super_cache( $supercachedir . $dir . '/page', true ); + return true; + } else { + return false; + } +} + +// from legolas558 d0t users dot sf dot net at http://www.php.net/is_writable +/** + * @param string $path + */ +function is_writeable_ACLSafe( $path ) { + + if ( + ( defined( 'PHP_OS_FAMILY' ) && 'Windows' !== constant( 'PHP_OS_FAMILY' ) ) || + stristr( PHP_OS, 'DAR' ) || + ! stristr( PHP_OS, 'WIN' ) + ) { + return is_writable( $path ); + } + + // PHP's is_writable does not work with Win32 NTFS + + if ( $path[ strlen( $path ) - 1 ] === '/' ) { // recursively return a temporary file path + return is_writeable_ACLSafe( $path . uniqid( (string) wp_rand() ) . '.tmp' ); + } elseif ( is_dir( $path ) ) { + return is_writeable_ACLSafe( $path . '/' . uniqid( (string) wp_rand() ) . '.tmp' ); + } + + // check tmp file for read/write capabilities + $rm = file_exists( $path ); + $f = @fopen( $path, 'a' ); + if ( $f === false ) { + return false; + } + fclose( $f ); + if ( ! $rm ) { + unlink( $path ); + } + + return true; +} + +function wp_cache_setting( $field, $value ) { + global $wp_cache_config_file; + + $GLOBALS[ $field ] = $value; + if ( is_numeric( $value ) ) { + return wp_cache_replace_line( '^ *\$' . $field, "\$$field = $value;", $wp_cache_config_file ); + } elseif ( is_bool( $value ) ) { + $output_value = $value === true ? 'true' : 'false'; + return wp_cache_replace_line( '^ *\$' . $field, "\$$field = $output_value;", $wp_cache_config_file ); + } elseif ( is_object( $value ) || is_array( $value ) ) { + $text = var_export( $value, true ); + $text = preg_replace( '/[\s]+/', ' ', $text ); + return wp_cache_replace_line( '^ *\$' . $field, "\$$field = $text;", $wp_cache_config_file ); + } else { + return wp_cache_replace_line( '^ *\$' . $field, "\$$field = '$value';", $wp_cache_config_file ); + } +} + +function wp_cache_replace_line( $old, $new, $my_file ) { + if ( ! is_string( $my_file ) || @is_file( $my_file ) === false ) { // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged + if ( function_exists( 'set_transient' ) ) { + set_transient( 'wpsc_config_error', 'config_file_missing', 10 ); + } + return false; + } + if ( ! is_writeable_ACLSafe( $my_file ) ) { + if ( function_exists( 'set_transient' ) ) { + set_transient( 'wpsc_config_error', 'config_file_ro', 10 ); + } + trigger_error( "Error: file $my_file is not writable." ); + return false; + } + + $found = false; + $loaded = false; + $c = 0; + $lines = array(); + while ( ! $loaded ) { + $lines = file( $my_file ); + if ( ! empty( $lines ) && is_array( $lines ) ) { + $loaded = true; + } else { + ++$c; + if ( $c > 100 ) { + if ( function_exists( 'set_transient' ) ) { + set_transient( 'wpsc_config_error', 'config_file_not_loaded', 10 ); + } + trigger_error( "wp_cache_replace_line: Error - file $my_file could not be loaded." ); + return false; + } + } + } + foreach ( (array) $lines as $line ) { + if ( + trim( $new ) != '' && + trim( $new ) == trim( $line ) + ) { + wp_cache_debug( "wp_cache_replace_line: setting not changed - $new" ); + return true; + } elseif ( preg_match( "/$old/", $line ) ) { + wp_cache_debug( 'wp_cache_replace_line: changing line ' . trim( $line ) . " to *$new*" ); + $found = true; + } + } + + $tmp_config_filename = tempnam( $GLOBALS['cache_path'], md5( (string) wp_rand( 0, 9999 ) ) ); + if ( file_exists( $tmp_config_filename . '.php' ) ) { + unlink( $tmp_config_filename . '.php' ); + if ( file_exists( $tmp_config_filename . '.php' ) ) { + die( __( 'WARNING: attempt to intercept updating of config file.', 'wp-super-cache' ) ); + } + } + rename( $tmp_config_filename, $tmp_config_filename . '.php' ); + $tmp_config_filename .= '.php'; + wp_cache_debug( 'wp_cache_replace_line: writing to ' . $tmp_config_filename ); + $fd = fopen( $tmp_config_filename, 'w' ); + if ( ! $fd ) { + if ( function_exists( 'set_transient' ) ) { + set_transient( 'wpsc_config_error', 'config_file_ro', 10 ); + } + trigger_error( "wp_cache_replace_line: Error - could not write to $my_file" ); + return false; + } + if ( $found ) { + foreach ( (array) $lines as $line ) { + if ( ! preg_match( "/$old/", $line ) ) { + fwrite( $fd, $line ); + } elseif ( $new != '' ) { + fwrite( $fd, "$new\n" ); + } + } + } else { + $done = false; + foreach ( (array) $lines as $line ) { + if ( $done || ! preg_match( '/^(if\ \(\ \!\ )?define|\$|\?>/', $line ) ) { + fwrite( $fd, $line ); + } else { + fwrite( $fd, "$new\n" ); + fwrite( $fd, $line ); + $done = true; + } + } + } + fclose( $fd ); + + $my_file_permissions = fileperms( $my_file ); + + rename( $tmp_config_filename, $my_file ); + + if ( false !== $my_file_permissions ) { + chmod( $my_file, $my_file_permissions ); + } + + wp_cache_debug( 'wp_cache_replace_line: moved ' . $tmp_config_filename . ' to ' . $my_file ); + + if ( function_exists( 'opcache_invalidate' ) ) { + @opcache_invalidate( $my_file ); + } + + return true; +} + +function wpsc_shutdown_message() { + static $did_wp_footer = false; + global $wp_super_cache_comments; + + if ( ! defined( 'WPSCSHUTDOWNMESSAGE' ) || ( isset( $wp_super_cache_comments ) && ! $wp_super_cache_comments ) ) { + return; + } + + if ( ! $did_wp_footer ) { + $did_wp_footer = true; + register_shutdown_function( 'wpsc_shutdown_message' ); + } else { + echo PHP_EOL . '' . PHP_EOL; + } +} + +function wp_cache_phase2() { + global $wp_cache_gzip_encoding, $super_cache_enabled, $cache_rebuild_files, $cache_enabled, $wp_cache_gmt_offset, $wp_cache_blog_charset; + + if ( $cache_enabled == false ) { + wp_cache_debug( 'wp_cache_phase2: Caching disabled! Exit' ); + define( 'WPSCSHUTDOWNMESSAGE', __( 'Caching disabled. Page not cached.', 'wp-super-cache' ) ); + add_action( 'wp_footer', 'wpsc_shutdown_message' ); + return false; + } + + if ( wp_cache_user_agent_is_rejected() ) { + wp_cache_debug( 'wp_cache_phase2: No caching to do as user agent rejected.' ); + return false; + } + + if ( ob_get_level() > 1 ) { + global $wp_super_cache_late_init; + wp_cache_debug( '***********************************************************************************' ); + wp_cache_debug( '* An extra output buffer has been detected. Check your plugins, themes, *' ); + wp_cache_debug( '* mu-plugins, and other custom code as this may interfere with caching. *' ); + + if ( isset( $wp_super_cache_late_init ) && $wp_super_cache_late_init ) { + wp_cache_debug( '* Late init is enabled. This allows third-party code to run before WP Super Cache *' ); + wp_cache_debug( '* sets up an output buffer. That code may have set up the output buffer. *' ); + } + wp_cache_debug( '***********************************************************************************' ); + } + + wp_cache_debug( 'In WP Cache Phase 2', 5 ); + + $wp_cache_gmt_offset = get_option( 'gmt_offset' ); // caching for later use when wpdb is gone. https://wordpress.org/support/topic/224349 + $wp_cache_blog_charset = get_option( 'blog_charset' ); + + wp_cache_mutex_init(); + if ( function_exists( 'add_action' ) && ( ! defined( 'WPLOCKDOWN' ) || constant( 'WPLOCKDOWN' ) == '0' ) ) { + wp_cache_debug( 'Setting up WordPress actions', 5 ); + + add_action( 'template_redirect', 'wp_super_cache_query_vars' ); + add_filter( 'wp_redirect_status', 'wpsc_catch_http_status_code' ); + add_filter( 'status_header', 'wpsc_catch_status_header', 10, 2 ); + add_filter( 'supercache_filename_str', 'wp_cache_check_mobile' ); + + wpsc_register_post_hooks(); + + do_cacheaction( 'add_cacheaction' ); + } + + if ( wpsc_is_backend() ) { + wp_cache_debug( 'Not caching wp-admin requests.', 5 ); + return false; + } + + if ( wpsc_is_get_query() ) { + wp_cache_debug( 'Supercache caching disabled. Only using wp-cache. Non empty GET request. ' . wpsc_dump_get_request(), 5 ); + $super_cache_enabled = false; + } + + if ( defined( 'WPSC_VARY_HEADER' ) ) { + if ( WPSC_VARY_HEADER != '' ) { + header( 'Vary: ' . WPSC_VARY_HEADER ); + } + } else { + header( 'Vary: Accept-Encoding, Cookie' ); + } + + ob_start( 'wp_cache_ob_callback' ); + wp_cache_debug( 'Created output buffer', 4 ); + + // restore old supercache file temporarily + if ( ( $_SERVER['REQUEST_METHOD'] !== 'POST' && empty( $_POST ) ) && $super_cache_enabled && $cache_rebuild_files ) { + $user_info = wp_cache_get_cookies_values(); + + if ( empty( $user_info ) + || true === apply_filters( 'do_createsupercache', $user_info ) + ) { + wpcache_do_rebuild( get_current_url_supercache_dir() ); + } + } + + schedule_wp_gc(); +} + +function wpsc_register_post_hooks() { + static $done = false; + + if ( $done ) { + return; + } + + if ( false === $GLOBALS['cache_enabled'] + || ( defined( 'WPLOCKDOWN' ) && constant( 'WPLOCKDOWN' ) != '0' ) + ) { + $done = true; + return; + } + + // Post ID is received + add_action( 'wp_trash_post', 'wp_cache_post_edit', 0 ); + add_action( 'publish_post', 'wp_cache_post_edit', 0 ); + add_action( 'edit_post', 'wp_cache_post_change', 0 ); // leaving a comment called edit_post + add_action( 'delete_post', 'wp_cache_post_edit', 0 ); + add_action( 'publish_phone', 'wp_cache_post_edit', 0 ); + + // Coment ID is received + add_action( 'trackback_post', 'wp_cache_get_postid_from_comment', 99 ); + add_action( 'pingback_post', 'wp_cache_get_postid_from_comment', 99 ); + add_action( 'comment_post', 'wp_cache_get_postid_from_comment', 99 ); + add_action( 'edit_comment', 'wp_cache_get_postid_from_comment', 99 ); + add_action( 'wp_set_comment_status', 'wp_cache_get_postid_from_comment', 99, 2 ); + + // No post_id is available + add_action( 'switch_theme', 'wp_cache_no_postid', 99 ); + add_action( 'edit_user_profile_update', 'wp_cache_no_postid', 99 ); + add_action( 'wp_update_nav_menu', 'wp_cache_clear_cache_on_menu' ); + add_action( 'clean_post_cache', 'wp_cache_post_edit' ); + add_action( 'transition_post_status', 'wpsc_post_transition', 10, 3 ); + + // Cron hooks + add_action( 'wp_cache_gc', 'wp_cache_gc_cron' ); + add_action( 'wp_cache_gc_watcher', 'wp_cache_gc_watcher' ); + + $done = true; +} + +function wpcache_do_rebuild( $dir ) { + global $do_rebuild_list, $cache_path, $wpsc_file_mtimes; + wp_cache_debug( "wpcache_do_rebuild: doing rebuild for $dir" ); + + if ( ! is_dir( $dir ) ) { + wp_cache_debug( "wpcache_do_rebuild: exiting as directory is not a directory: $dir" ); + return false; + } + + $dir = wpsc_get_realpath( $dir ); + if ( ! $dir ) { + wp_cache_debug( 'wpcache_do_rebuild: exiting as directory does not exist.' ); + return false; + } + + if ( isset( $do_rebuild_list[ $dir ] ) ) { + wp_cache_debug( "wpcache_do_rebuild: directory already rebuilt: $dir" ); + return false; + } + + $protected = wpsc_get_protected_directories(); + foreach ( $protected as $id => $directory ) { + $protected[ $id ] = wpsc_get_realpath( $directory ); + } + + if ( ! wpsc_is_in_cache_directory( $dir ) ) { + wp_cache_debug( "wpcache_do_rebuild: exiting as directory not in cache_path: $dir" ); + return false; + } + + if ( in_array( $dir, $protected ) ) { + wp_cache_debug( "wpcache_do_rebuild: exiting as directory is protected: $dir" ); + return false; + } + + if ( ! is_dir( $dir ) ) { + wp_cache_debug( "wpcache_do_rebuild: exiting as directory is not a directory: $dir" ); + return false; + } + + $dh = @opendir( $dir ); + if ( false == $dh ) { + wp_cache_debug( "wpcache_do_rebuild: exiting as could not open directory for reading: $dir" ); + return false; + } + + $dir = trailingslashit( $dir ); + $wpsc_file_mtimes = array(); + while ( ( $file = readdir( $dh ) ) !== false ) { + if ( $file == '.' || $file == '..' || false == is_file( $dir . $file ) ) { + continue; + } + + $cache_file = $dir . $file; + // if the file is index.html.needs-rebuild and index.html doesn't exist and + // if the rebuild file is less than 10 seconds old then remove the ".needs-rebuild" + // extension so index.html can be served to other visitors temporarily + // until index.html is generated again at the end of this page. + + if ( substr( $cache_file, -14 ) != '.needs-rebuild' ) { + wp_cache_debug( "wpcache_do_rebuild: base file found: $cache_file" ); + continue; + } + + wp_cache_debug( "wpcache_do_rebuild: found rebuild file: $cache_file" ); + + if ( @file_exists( substr( $cache_file, 0, -14 ) ) ) { + wp_cache_debug( "wpcache_do_rebuild: rebuild file deleted because base file found: $cache_file" ); + @unlink( $cache_file ); // delete the rebuild file because index.html already exists + continue; + } + + $mtime = @filemtime( $cache_file ); + if ( $mtime && ( time() - $mtime ) < 10 ) { + wp_cache_debug( "wpcache_do_rebuild: rebuild file is new: $cache_file" ); + $base_file = substr( $cache_file, 0, -14 ); + if ( false == @rename( $cache_file, $base_file ) ) { // rename the rebuild file + @unlink( $cache_file ); + wp_cache_debug( "wpcache_do_rebuild: rebuild file rename failed. Deleted rebuild file: $cache_file" ); + } else { + $do_rebuild_list[ $dir ] = 1; + $wpsc_file_mtimes[ $base_file ] = $mtime; + wp_cache_debug( "wpcache_do_rebuild: rebuild file renamed: $base_file" ); + } + } else { + wp_cache_debug( "wpcache_do_rebuild: rebuild file deleted because it's too old: $cache_file" ); + @unlink( $cache_file ); // delete the rebuild file because index.html already exists + } + } +} + +function wpcache_logged_in_message() { + echo ''; +} + +function wp_cache_user_agent_is_rejected() { + global $cache_rejected_user_agent; + + if ( empty( $cache_rejected_user_agent ) || ! is_array( $cache_rejected_user_agent ) ) { + return false; + } + + $headers = wpsc_apache_request_headers(); + if ( empty( $headers['User-Agent'] ) ) { + return false; + } + + foreach ( $cache_rejected_user_agent as $user_agent ) { + if ( ! empty( $user_agent ) && stristr( $headers['User-Agent'], $user_agent ) ) { + return true; + } + } + + return false; +} + +function wp_cache_get_response_headers() { + static $known_headers = array( + 'Access-Control-Allow-Origin', + 'Accept-Ranges', + 'Age', + 'Allow', + 'Cache-Control', + 'Connection', + 'Content-Encoding', + 'Content-Language', + 'Content-Length', + 'Content-Location', + 'Content-MD5', + 'Content-Disposition', + 'Content-Range', + 'Content-Type', + 'Date', + 'ETag', + 'Expires', + 'Last-Modified', + 'Link', + 'Location', + 'P3P', + 'Pragma', + 'Proxy-Authenticate', + 'Referrer-Policy', + 'Refresh', + 'Retry-After', + 'Server', + 'Status', + 'Strict-Transport-Security', + 'Trailer', + 'Transfer-Encoding', + 'Upgrade', + 'Vary', + 'Via', + 'Warning', + 'WWW-Authenticate', + 'X-Frame-Options', + 'Public-Key-Pins', + 'X-XSS-Protection', + 'Content-Security-Policy', + 'X-Pingback', + 'X-Content-Security-Policy', + 'X-WebKit-CSP', + 'X-Content-Type-Options', + 'X-Powered-By', + 'X-UA-Compatible', + 'X-Robots-Tag', + ); + + if ( ! function_exists( 'headers_list' ) ) { + return array(); + } + + $known_headers = apply_filters( 'wpsc_known_headers', $known_headers ); + + if ( ! isset( $known_headers['age'] ) ) { + $known_headers = array_map( 'strtolower', $known_headers ); + } + + $headers = array(); + foreach ( headers_list() as $hdr ) { + $ptr = strpos( $hdr, ':' ); + + if ( empty( $ptr ) ) { + continue; + } + + $hdr_key = rtrim( substr( $hdr, 0, $ptr ) ); + + if ( in_array( strtolower( $hdr_key ), $known_headers, true ) ) { + $hdr_val = ltrim( substr( $hdr, $ptr + 1 ) ); + + if ( ! empty( $headers[ $hdr_key ] ) ) { + $hdr_val = $headers[ $hdr_key ] . ', ' . $hdr_val; + } + + $headers[ $hdr_key ] = $hdr_val; + } + } + + return $headers; +} + +function wpsc_is_rejected_cookie() { + global $wpsc_rejected_cookies; + if ( false == is_array( $wpsc_rejected_cookies ) ) { + return false; + } + + foreach ( $wpsc_rejected_cookies as $expr ) { + if ( $expr !== '' && $match = preg_grep( "~$expr~", array_keys( $_COOKIE ) ) ) { + wp_cache_debug( 'wpsc_is_rejected_cookie: found cookie: ' . $expr ); + return true; + } + } + return false; +} + +function wp_cache_is_rejected( $uri ) { + global $cache_rejected_uri; + + if ( empty( $uri ) ) { + return true; // do not cache if we don't know the URI. + } + + $auto_rejected = array( '/wp-admin/', 'xmlrpc.php', 'wp-app.php' ); + foreach ( $auto_rejected as $u ) { + if ( strstr( $uri, $u ) ) { + return true; // we don't allow caching of wp-admin for security reasons + } + } + if ( false == is_array( $cache_rejected_uri ) ) { + return false; + } + foreach ( $cache_rejected_uri as $expr ) { + if ( $expr != '' && @preg_match( "~$expr~", $uri ) ) { + return true; + } + } + return false; +} + +function wp_cache_mutex_init() { + global $mutex, $wp_cache_mutex_disabled, $use_flock, $blog_cache_dir, $mutex_filename, $sem_id; + + if ( defined( 'WPSC_DISABLE_LOCKING' ) || ( isset( $wp_cache_mutex_disabled ) && $wp_cache_mutex_disabled ) ) { + return true; + } + + if ( ! is_bool( $use_flock ) ) { + if ( function_exists( 'sem_get' ) ) { + $use_flock = false; + } else { + $use_flock = true; + } + } + + $mutex = false; + if ( $use_flock ) { + setup_blog_cache_dir(); + wp_cache_debug( "Created mutex lock on filename: {$blog_cache_dir}{$mutex_filename}", 5 ); + $mutex = @fopen( $blog_cache_dir . $mutex_filename, 'w' ); + } else { + wp_cache_debug( "Created mutex lock on semaphore: {$sem_id}", 5 ); + // PHP 8.0 expects a bool. Prior expects an int. + $auto_release = ( version_compare( phpversion(), '8.0.0', '<=' ) ) ? 1 : true; + $mutex = @sem_get( $sem_id, 1, 0666, $auto_release ); + } +} + +function wp_cache_writers_entry() { + global $mutex, $wp_cache_mutex_disabled, $use_flock; + + if ( defined( 'WPSC_DISABLE_LOCKING' ) || ( isset( $wp_cache_mutex_disabled ) && $wp_cache_mutex_disabled ) ) { + return true; + } + + if ( ! $mutex ) { + wp_cache_debug( '(writers entry) mutex lock not created. not caching.', 2 ); + return false; + } + + if ( $use_flock ) { + wp_cache_debug( 'grabbing lock using flock()', 5 ); + flock( $mutex, LOCK_EX ); + } else { + wp_cache_debug( 'grabbing lock using sem_acquire()', 5 ); + @sem_acquire( $mutex ); + } + + return true; +} + +function wp_cache_writers_exit() { + global $mutex, $wp_cache_mutex_disabled, $use_flock; + + if ( defined( 'WPSC_DISABLE_LOCKING' ) || ( isset( $wp_cache_mutex_disabled ) && $wp_cache_mutex_disabled ) ) { + return true; + } + + if ( ! $mutex ) { + wp_cache_debug( '(writers exit) mutex lock not created. not caching.', 2 ); + return false; + } + + if ( $use_flock ) { + wp_cache_debug( 'releasing lock using flock()', 5 ); + flock( $mutex, LOCK_UN ); + } else { + wp_cache_debug( 'releasing lock using sem_release() and sem_remove()', 5 ); + @sem_release( $mutex ); + if ( defined( 'WPSC_REMOVE_SEMAPHORE' ) ) { + @sem_remove( $mutex ); + } + } +} + +function wp_super_cache_query_vars() { + global $wp_super_cache_query; + + if ( is_search() ) { + $wp_super_cache_query['is_search'] = 1; + } + if ( is_page() ) { + $wp_super_cache_query['is_page'] = 1; + } + if ( is_archive() ) { + $wp_super_cache_query['is_archive'] = 1; + } + if ( is_tag() ) { + $wp_super_cache_query['is_tag'] = 1; + } + if ( is_single() ) { + $wp_super_cache_query['is_single'] = 1; + } + if ( is_category() ) { + $wp_super_cache_query['is_category'] = 1; + } + if ( is_front_page() ) { + $wp_super_cache_query['is_front_page'] = 1; + } + if ( is_home() ) { + $wp_super_cache_query['is_home'] = 1; + } + if ( is_author() ) { + $wp_super_cache_query['is_author'] = 1; + } + + // REST API + if ( ( defined( 'REST_REQUEST' ) && REST_REQUEST ) || + ( defined( 'JSON_REQUEST' ) && JSON_REQUEST ) || + ( defined( 'WC_API_REQUEST' ) && WC_API_REQUEST ) + ) { + $wp_super_cache_query['is_rest'] = 1; + } + + // Feeds, sitemaps and robots.txt + if ( is_feed() ) { + $wp_super_cache_query['is_feed'] = 1; + if ( get_query_var( 'feed' ) == 'sitemap' ) { + $wp_super_cache_query['is_sitemap'] = 1; + } + } elseif ( get_query_var( 'sitemap' ) || get_query_var( 'xsl' ) || get_query_var( 'xml_sitemap' ) ) { + $wp_super_cache_query['is_feed'] = 1; + $wp_super_cache_query['is_sitemap'] = 1; + } elseif ( is_robots() ) { + $wp_super_cache_query['is_robots'] = 1; + } + + // Reset everything if it's 404 + if ( is_404() ) { + $wp_super_cache_query = array( 'is_404' => 1 ); + } + + return $wp_super_cache_query; +} + +function wpsc_catch_status_header( $status_header, $code ) { + + if ( $code != 200 ) { + wpsc_catch_http_status_code( $code ); + } + + return $status_header; +} + +function wpsc_catch_http_status_code( $status ) { + global $wp_super_cache_query; + + if ( in_array( intval( $status ), array( 301, 302, 303, 307 ) ) ) { + $wp_super_cache_query['is_redirect'] = 1; + } elseif ( $status == 304 ) { + $wp_super_cache_query['is_304'] = 1; + } elseif ( $status == 404 ) { + $wp_super_cache_query['is_404'] = 1; + } + + return $status; +} + +function wpsc_is_fatal_error() { + global $wp_super_cache_query; + + if ( null === ( $error = error_get_last() ) ) { + return false; + } + + if ( $error['type'] & ( E_ERROR | E_CORE_ERROR | E_PARSE | E_COMPILE_ERROR | E_USER_ERROR ) ) { + $wp_super_cache_query['is_fatal_error'] = 1; + return true; + } + + return false; +} + +function wp_cache_ob_callback( $buffer ) { + global $wp_cache_pages, $wp_query, $wp_super_cache_query, $cache_acceptable_files, $wp_cache_no_cache_for_get, $wp_cache_request_uri, $do_rebuild_list, $wpsc_file_mtimes, $wpsc_save_headers, $super_cache_enabled; + $script = basename( $_SERVER['PHP_SELF'] ); + + // All the things that can stop a page being cached + $cache_this_page = true; + + if ( wpsc_is_fatal_error() ) { + wp_cache_debug( 'wp_cache_ob_callback: PHP Fatal error occurred. Not caching incomplete page.' ); + $cache_this_page = false; + } elseif ( empty( $wp_super_cache_query ) && ! empty( $buffer ) && is_object( $wp_query ) && method_exists( $wp_query, 'get' ) ) { + $wp_super_cache_query = wp_super_cache_query_vars(); + } elseif ( empty( $wp_super_cache_query ) && function_exists( 'http_response_code' ) ) { + wpsc_catch_http_status_code( http_response_code() ); + } + + $buffer = apply_filters( 'wp_cache_ob_callback_filter', $buffer ); + + if ( defined( 'DONOTCACHEPAGE' ) ) { + wp_cache_debug( 'DONOTCACHEPAGE defined. Caching disabled.', 2 ); + $cache_this_page = false; + } elseif ( $wp_cache_no_cache_for_get && wpsc_is_get_query() ) { + wp_cache_debug( 'Non empty GET request. Caching disabled on settings page. ' . wpsc_dump_get_request(), 1 ); + $cache_this_page = false; + } elseif ( $_SERVER['REQUEST_METHOD'] == 'POST' || ! empty( $_POST ) || get_option( 'gzipcompression' ) ) { + wp_cache_debug( 'Not caching POST request.', 5 ); + $cache_this_page = false; + } elseif ( $_SERVER['REQUEST_METHOD'] == 'PUT' ) { + wp_cache_debug( 'Not caching PUT request.', 5 ); + $cache_this_page = false; + } elseif ( $_SERVER['REQUEST_METHOD'] == 'DELETE' ) { + wp_cache_debug( 'Not caching DELETE request.', 5 ); + $cache_this_page = false; + } elseif ( isset( $_GET['preview'] ) ) { + wp_cache_debug( 'Not caching preview post.', 2 ); + $cache_this_page = false; + } elseif ( ! in_array( $script, (array) $cache_acceptable_files ) && wp_cache_is_rejected( $wp_cache_request_uri ) ) { + wp_cache_debug( 'URI rejected. Not Caching', 2 ); + $cache_this_page = false; + } elseif ( wp_cache_user_agent_is_rejected() ) { + wp_cache_debug( "USER AGENT ({$_SERVER[ 'HTTP_USER_AGENT' ]}) rejected. Not Caching", 4 ); + $cache_this_page = false; + } elseif ( isset( $wp_cache_pages['single'] ) && $wp_cache_pages['single'] == 1 && isset( $wp_super_cache_query['is_single'] ) ) { + wp_cache_debug( 'Not caching single post.', 2 ); + $cache_this_page = false; + } elseif ( isset( $wp_cache_pages['pages'] ) && $wp_cache_pages['pages'] == 1 && isset( $wp_super_cache_query['is_page'] ) ) { + wp_cache_debug( 'Not caching single page.', 2 ); + $cache_this_page = false; + } elseif ( isset( $wp_cache_pages['archives'] ) && $wp_cache_pages['archives'] == 1 && isset( $wp_super_cache_query['is_archive'] ) ) { + wp_cache_debug( 'Not caching archive page.', 2 ); + $cache_this_page = false; + } elseif ( isset( $wp_cache_pages['tag'] ) && $wp_cache_pages['tag'] == 1 && isset( $wp_super_cache_query['is_tag'] ) ) { + wp_cache_debug( 'Not caching tag page.', 2 ); + $cache_this_page = false; + } elseif ( isset( $wp_cache_pages['category'] ) && $wp_cache_pages['category'] == 1 && isset( $wp_super_cache_query['is_category'] ) ) { + wp_cache_debug( 'Not caching category page.', 2 ); + $cache_this_page = false; + } elseif ( isset( $wp_cache_pages['frontpage'] ) && $wp_cache_pages['frontpage'] == 1 && isset( $wp_super_cache_query['is_front_page'] ) ) { + wp_cache_debug( 'Not caching front page.', 2 ); + $cache_this_page = false; + } elseif ( isset( $wp_cache_pages['home'] ) && $wp_cache_pages['home'] == 1 && isset( $wp_super_cache_query['is_home'] ) ) { + wp_cache_debug( 'Not caching home page.', 2 ); + $cache_this_page = false; + } elseif ( isset( $wp_cache_pages['search'] ) && $wp_cache_pages['search'] == 1 && isset( $wp_super_cache_query['is_search'] ) ) { + wp_cache_debug( 'Not caching search page.', 2 ); + $cache_this_page = false; + } elseif ( isset( $wp_cache_pages['author'] ) && $wp_cache_pages['author'] == 1 && isset( $wp_super_cache_query['is_author'] ) ) { + wp_cache_debug( 'Not caching author page.', 2 ); + $cache_this_page = false; + } elseif ( isset( $wp_cache_pages['feed'] ) && $wp_cache_pages['feed'] == 1 && isset( $wp_super_cache_query['is_feed'] ) ) { + wp_cache_debug( 'Not caching feed.', 2 ); + $cache_this_page = false; + } elseif ( isset( $wp_super_cache_query['is_rest'] ) ) { + wp_cache_debug( 'REST API detected. Caching disabled.' ); + $cache_this_page = false; + } elseif ( isset( $wp_super_cache_query['is_robots'] ) ) { + wp_cache_debug( 'robots.txt detected. Caching disabled.' ); + $cache_this_page = false; + } elseif ( isset( $wp_super_cache_query['is_redirect'] ) ) { + wp_cache_debug( 'Redirect detected. Caching disabled.' ); + $cache_this_page = false; + } elseif ( isset( $wp_super_cache_query['is_304'] ) ) { + wp_cache_debug( 'HTTP 304 (Not Modified) sent. Caching disabled.' ); + $cache_this_page = false; + } elseif ( empty( $wp_super_cache_query ) && ! empty( $buffer ) && apply_filters( 'wpsc_only_cache_known_pages', 1 ) ) { + wp_cache_debug( 'wp_cache_ob_callback: wp_super_cache_query is empty. Not caching unknown page type. Return 0 to the wpsc_only_cache_known_pages filter to cache this page.' ); + $cache_this_page = false; + } elseif ( wpsc_is_caching_user_disabled() ) { + wp_cache_debug( 'wp_cache_ob_callback: Caching disabled for known user. User logged in or cookie found.' ); + $cache_this_page = false; + } + + if ( isset( $wpsc_save_headers ) && $wpsc_save_headers ) { + $super_cache_enabled = false; // use standard caching to record headers + } + + if ( $cache_this_page ) { + + wp_cache_debug( 'Output buffer callback', 4 ); + + $buffer = wp_cache_get_ob( $buffer ); + wp_cache_shutdown_callback(); + + if ( ! empty( $wpsc_file_mtimes ) && is_array( $wpsc_file_mtimes ) ) { + foreach ( $wpsc_file_mtimes as $cache_file => $old_mtime ) { + if ( $old_mtime == @filemtime( $cache_file ) ) { + wp_cache_debug( "wp_cache_ob_callback deleting unmodified rebuilt cache file: $cache_file" ); + if ( wp_cache_confirm_delete( $cache_file ) ) { + @unlink( $cache_file ); + } + } + } + } + return $buffer; + } else { + if ( ! empty( $do_rebuild_list ) && is_array( $do_rebuild_list ) ) { + foreach ( $do_rebuild_list as $dir => $n ) { + if ( wp_cache_confirm_delete( $dir ) ) { + wp_cache_debug( 'wp_cache_ob_callback clearing rebuilt files in ' . $dir ); + wpsc_delete_files( $dir ); + } + } + } + return wp_cache_maybe_dynamic( $buffer ); + } +} + +function wp_cache_append_tag( &$buffer ) { + global $wp_cache_gmt_offset, $wp_super_cache_comments; + global $cache_enabled, $super_cache_enabled; + + if ( false == isset( $wp_super_cache_comments ) ) { + $wp_super_cache_comments = 1; + } + + if ( $wp_super_cache_comments == 0 ) { + return false; + } + + $timestamp = gmdate( 'Y-m-d H:i:s', ( time() + ( $wp_cache_gmt_offset * 3600 ) ) ); + if ( $cache_enabled || $super_cache_enabled ) { + $msg = "Cached page generated by WP-Super-Cache on $timestamp"; + } else { + $msg = "Live page served on $timestamp"; + } + + if ( strpos( $buffer, '|<\/rss>|<\/feed>|<\/urlset|<\?xml)/i' ), $buffer ) ) { + $new_cache = false; + if ( isset( $GLOBALS['wp_super_cache_debug'] ) && $GLOBALS['wp_super_cache_debug'] ) { + wp_cache_debug( 'No closing html tag. Not caching.', 2 ); + wp_cache_add_to_buffer( $buffer, 'Page not cached by WP Super Cache. No closing HTML tag. Check your theme.' ); + } + } + + if ( ! $new_cache ) { + return wp_cache_maybe_dynamic( $buffer ); + } + + $duration = wp_cache_microtime_diff( $wp_start_time, microtime() ); + $duration = sprintf( '%0.3f', $duration ); + wp_cache_add_to_buffer( $buffer, "Dynamic page generated in $duration seconds." ); + + if ( ! wp_cache_writers_entry() ) { + wp_cache_add_to_buffer( $buffer, 'Page not cached by WP Super Cache. Could not get mutex lock.' ); + wp_cache_debug( 'Could not get mutex lock. Not caching.', 1 ); + return wp_cache_maybe_dynamic( $buffer ); + } + + if ( $wp_cache_not_logged_in && isset( $wp_super_cache_query['is_feed'] ) ) { + wp_cache_debug( 'Feed detected. Writing wpcache cache files.', 5 ); + $wp_cache_not_logged_in = false; + } + + $home_url = parse_url( trailingslashit( get_bloginfo( 'url' ) ) ); + + $dir = get_current_url_supercache_dir(); + $supercachedir = $cache_path . 'supercache/' . preg_replace( '/:.*$/', '', $home_url['host'] ); + if ( wpsc_is_get_query() || isset( $wp_super_cache_query['is_feed'] ) || ( $super_cache_enabled == true && is_dir( substr( $supercachedir, 0, -1 ) . '.disabled' ) ) ) { + wp_cache_debug( 'Supercache disabled: GET or feed detected or disabled by config.', 2 ); + $super_cache_enabled = false; + } + + $tmp_wpcache_filename = $cache_path . uniqid( (string) wp_rand(), true ) . '.tmp'; + + if ( defined( 'WPSC_SUPERCACHE_ONLY' ) ) { + $supercacheonly = true; + wp_cache_debug( 'wp_cache_get_ob: WPSC_SUPERCACHE_ONLY defined. Only creating supercache files.' ); + } else { + $supercacheonly = false; + } + + if ( $super_cache_enabled ) { + if ( wp_cache_get_cookies_values() == '' && ! wpsc_is_get_query() ) { + wp_cache_debug( 'Anonymous user detected. Only creating Supercache file.', 3 ); + $supercacheonly = true; + } + } + + $cache_error = ''; + if ( wpsc_is_caching_user_disabled() ) { + $super_cache_enabled = false; + $cache_enabled = false; + $cache_error = 'Not caching requests by known users. (See Advanced Settings page)'; + wp_cache_debug( 'Not caching for known user.', 5 ); + } + + if ( ! $cache_enabled ) { + wp_cache_debug( 'Cache is not enabled. Sending buffer to browser.', 5 ); + wp_cache_writers_exit(); + wp_cache_add_to_buffer( $buffer, "Page not cached by WP Super Cache. Check your settings page. $cache_error" ); + if ( $wp_cache_mfunc_enabled == 1 ) { + global $wp_super_cache_late_init; + if ( ! isset( $wp_super_cache_late_init ) || $wp_super_cache_late_init === 0 ) { + wp_cache_add_to_buffer( $buffer, 'Super Cache dynamic page detected but $wp_super_cache_late_init not set. See the readme.txt for further details.' ); + } + } + + return wp_cache_maybe_dynamic( $buffer ); + } + + if ( @is_dir( $dir ) == false ) { + @wp_mkdir_p( $dir ); + } + $dir = wpsc_get_realpath( $dir ); + + if ( ! $dir ) { + wp_cache_debug( 'wp_cache_get_ob: not caching as directory does not exist.' ); + return $buffer; + } + + $dir = trailingslashit( $dir ); + + if ( ! wpsc_is_in_cache_directory( $dir ) ) { + wp_cache_debug( "wp_cache_get_ob: not caching as directory is not in cache_path: $dir" ); + return $buffer; + } + + $fr = $fr2 = $gz = false; + // Open wp-cache cache file + if ( ! $supercacheonly ) { + $fr = @fopen( $tmp_wpcache_filename, 'w' ); + if ( ! $fr ) { + wp_cache_debug( 'Error. Supercache could not write to ' . str_replace( ABSPATH, '', $cache_path ) . $cache_filename, 1 ); + wp_cache_add_to_buffer( $buffer, "File not cached! Super Cache Couldn't write to: " . str_replace( ABSPATH, '', $cache_path ) . $cache_filename ); + wp_cache_writers_exit(); + return wp_cache_maybe_dynamic( $buffer ); + } + } else { + $user_info = wp_cache_get_cookies_values(); + $do_cache = apply_filters( 'do_createsupercache', $user_info ); + if ( + $super_cache_enabled && + ( + $user_info == '' || + $do_cache === true + ) + ) { + $cache_fname = $dir . supercache_filename(); + $tmp_cache_filename = $dir . uniqid( (string) wp_rand(), true ) . '.tmp'; + $fr2 = @fopen( $tmp_cache_filename, 'w' ); + if ( ! $fr2 ) { + wp_cache_debug( 'Error. Supercache could not write to ' . str_replace( ABSPATH, '', $tmp_cache_filename ), 1 ); + wp_cache_add_to_buffer( $buffer, "File not cached! Super Cache Couldn't write to: " . str_replace( ABSPATH, '', $tmp_cache_filename ) ); + @fclose( $fr ); + @unlink( $tmp_wpcache_filename ); + wp_cache_writers_exit(); + return wp_cache_maybe_dynamic( $buffer ); + } elseif ( + $cache_compression && + $wp_cache_mfunc_enabled === 0 + ) { // don't want to store compressed files if using dynamic content + $gz = @fopen( $tmp_cache_filename . '.gz', 'w' ); + if ( ! $gz ) { + wp_cache_debug( 'Error. Supercache could not write to ' . str_replace( ABSPATH, '', $tmp_cache_filename ) . '.gz', 1 ); + wp_cache_add_to_buffer( $buffer, "File not cached! Super Cache Couldn't write to: " . str_replace( ABSPATH, '', $tmp_cache_filename ) . '.gz' ); + @fclose( $fr ); + @unlink( $tmp_wpcache_filename ); + @fclose( $fr2 ); + @unlink( $tmp_cache_filename ); + wp_cache_writers_exit(); + return wp_cache_maybe_dynamic( $buffer ); + } + } + } + } + + $added_cache = 0; + $buffer = apply_filters( 'wpsupercache_buffer', $buffer ); + wp_cache_append_tag( $buffer ); + + /* + * Dynamic content enabled: write the buffer to a file and then process any templates found using + * the wpsc_cachedata filter. Buffer is then returned to the visitor. + */ + if ( $wp_cache_mfunc_enabled == 1 ) { + if ( preg_match( '//', $buffer ) ) { // Dynamic content + wp_cache_debug( 'mfunc/mclude/dynamic-cached-content tags have been retired. Please update your theme. See docs for updates.' ); + wp_cache_add_to_buffer( $buffer, 'Warning! Obsolete mfunc/mclude/dynamic-cached-content tags found. Please update your theme. See http://ocaoimh.ie/y/5b for more information.' ); + } + + global $wp_super_cache_late_init; + if ( ! isset( $wp_super_cache_late_init ) || $wp_super_cache_late_init === 0 ) { + wp_cache_add_to_buffer( $buffer, 'Super Cache dynamic page detected but late init not set. See the readme.txt for further details.' ); + } + + if ( $fr ) { // wpcache caching + wp_cache_debug( 'Writing dynamic buffer to wpcache file.' ); + wp_cache_add_to_buffer( $buffer, 'Dynamic WPCache Super Cache' ); + fwrite( $fr, '' . $buffer ); + } elseif ( $fr2 ) { // supercache active + wp_cache_debug( 'Writing dynamic buffer to supercache file.' ); + wp_cache_add_to_buffer( $buffer, 'Dynamic Super Cache' ); + fwrite( $fr2, $buffer ); + } + $wp_cache_meta['dynamic'] = true; + if ( $wp_cache_mfunc_enabled == 1 && do_cacheaction( 'wpsc_cachedata_safety', 0 ) === 1 ) { + $buffer = do_cacheaction( 'wpsc_cachedata', $buffer ); // dynamic content for display + } + + if ( $cache_compression && $wp_cache_gzip_encoding ) { + wp_cache_debug( 'Gzipping dynamic buffer for display.', 5 ); + wp_cache_add_to_buffer( $buffer, 'Compression = gzip' ); + $gzdata = gzencode( $buffer, 6, FORCE_GZIP ); + $gzsize = ( function_exists( 'mb_strlen' ) && function_exists( 'is_utf8_charset' ) ) ? mb_strlen( $gzdata, '8bit' ) : strlen( $gzdata ); + } + } else { + if ( defined( 'WPSC_VARY_HEADER' ) ) { + if ( WPSC_VARY_HEADER != '' ) { + $vary_header = WPSC_VARY_HEADER; + } else { + $vary_header = ''; + } + } else { + $vary_header = 'Accept-Encoding, Cookie'; + } + if ( $vary_header ) { + $wp_cache_meta['headers']['Vary'] = 'Vary: ' . $vary_header; + } + if ( $gz || $wp_cache_gzip_encoding ) { + wp_cache_debug( 'Gzipping buffer.', 5 ); + wp_cache_add_to_buffer( $buffer, 'Compression = gzip' ); + $gzdata = gzencode( $buffer, 6, FORCE_GZIP ); + $gzsize = ( function_exists( 'mb_strlen' ) && function_exists( 'is_utf8_charset' ) ) ? mb_strlen( $gzdata, '8bit' ) : strlen( $gzdata ); + + $wp_cache_meta['headers']['Content-Encoding'] = 'Content-Encoding: ' . $wp_cache_gzip_encoding; + // Return uncompressed data & store compressed for later use + if ( $fr ) { + wp_cache_debug( 'Writing gzipped buffer to wp-cache cache file.', 5 ); + fwrite( $fr, '' . $gzdata ); + } + } elseif ( $fr ) { // no compression + wp_cache_debug( 'Writing non-gzipped buffer to wp-cache cache file.' ); + fwrite( $fr, '' . $buffer ); + } + if ( $fr2 ) { + wp_cache_debug( 'Writing non-gzipped buffer to supercache file.' ); + wp_cache_add_to_buffer( $buffer, 'super cache' ); + fwrite( $fr2, $buffer ); + } + if ( isset( $gzdata ) && $gz ) { + wp_cache_debug( 'Writing gzipped buffer to supercache file.' ); + fwrite( $gz, $gzdata ); + } + } + + if ( $fr ) { + $supercacheonly = false; + fclose( $fr ); + if ( filesize( $tmp_wpcache_filename ) == 0 ) { + wp_cache_debug( "Warning! The file $tmp_wpcache_filename was empty. Did not rename to {$dir}{$cache_filename}", 5 ); + @unlink( $tmp_wpcache_filename ); + } else { + if ( ! @rename( $tmp_wpcache_filename, $dir . $cache_filename ) ) { + if ( false == is_dir( $dir ) ) { + @wp_mkdir_p( $dir ); + } + @unlink( $dir . $cache_filename ); + @rename( $tmp_wpcache_filename, $dir . $cache_filename ); + } + if ( file_exists( $dir . $cache_filename ) ) { + wp_cache_debug( "Renamed temp wp-cache file to {$dir}{$cache_filename}", 5 ); + } else { + wp_cache_debug( "FAILED to rename temp wp-cache file to {$dir}{$cache_filename}", 5 ); + } + $added_cache = 1; + } + } + + if ( $fr2 ) { + fclose( $fr2 ); + if ( $wp_cache_front_page_checks && $cache_fname == $supercachedir . $home_url['path'] . supercache_filename() && ! ( $wp_cache_is_home ) ) { + wp_cache_writers_exit(); + wp_cache_debug( 'Warning! Not writing another page to front page cache.', 1 ); + return $buffer; + } elseif ( @filesize( $tmp_cache_filename ) == 0 ) { + wp_cache_debug( "Warning! The file $tmp_cache_filename was empty. Did not rename to {$cache_fname}", 5 ); + @unlink( $tmp_cache_filename ); + } else { + if ( ! @rename( $tmp_cache_filename, $cache_fname ) ) { + @unlink( $cache_fname ); + @rename( $tmp_cache_filename, $cache_fname ); + } + wp_cache_debug( "Renamed temp supercache file to $cache_fname", 5 ); + $added_cache = 1; + } + } + if ( $gz ) { + fclose( $gz ); + if ( @filesize( $tmp_cache_filename . '.gz' ) == 0 ) { + wp_cache_debug( "Warning! The file {$tmp_cache_filename}.gz was empty. Did not rename to {$cache_fname}.gz", 5 ); + @unlink( $tmp_cache_filename . '.gz' ); + } else { + if ( ! @rename( $tmp_cache_filename . '.gz', $cache_fname . '.gz' ) ) { + @unlink( $cache_fname . '.gz' ); + @rename( $tmp_cache_filename . '.gz', $cache_fname . '.gz' ); + } + wp_cache_debug( "Renamed temp supercache gz file to {$cache_fname}.gz", 5 ); + $added_cache = 1; + } + } + + if ( $added_cache && isset( $wp_supercache_cache_list ) && $wp_supercache_cache_list ) { + update_option( 'wpsupercache_count', (int) get_option( 'wpsupercache_count' ) + 1 ); + $last_urls = (array) get_option( 'supercache_last_cached' ); + if ( count( $last_urls ) >= 10 ) { + $last_urls = array_slice( $last_urls, 1, 9 ); + } + $last_urls[] = array( + 'url' => preg_replace( '/[ <>\'\"\r\n\t\(\)]/', '', $_SERVER['REQUEST_URI'] ), + 'date' => date( 'Y-m-d H:i:s' ), + ); + update_option( 'supercache_last_cached', $last_urls ); + } + wp_cache_writers_exit(); + if ( ! headers_sent() && $wp_cache_gzip_encoding && $gzdata ) { + wp_cache_debug( 'Writing gzip content headers. Sending buffer to browser', 5 ); + header( 'Content-Encoding: ' . $wp_cache_gzip_encoding ); + if ( defined( 'WPSC_VARY_HEADER' ) ) { + if ( WPSC_VARY_HEADER != '' ) { + $vary_header = WPSC_VARY_HEADER; + } else { + $vary_header = ''; + } + } else { + $vary_header = 'Accept-Encoding, Cookie'; + } + if ( $vary_header ) { + header( 'Vary: ' . $vary_header ); + } + header( 'Content-Length: ' . $gzsize ); + return $gzdata; + } else { + wp_cache_debug( 'Sending buffer to browser', 5 ); + return $buffer; + } +} + +function wp_cache_phase2_clean_cache( $file_prefix ) { + global $wpdb, $blog_cache_dir; + + if ( ! wp_cache_writers_entry() ) { + return false; + } + wp_cache_debug( "wp_cache_phase2_clean_cache: Cleaning cache in $blog_cache_dir" ); + if ( $handle = @opendir( $blog_cache_dir ) ) { + while ( false !== ( $file = @readdir( $handle ) ) ) { + if ( str_contains( $file, $file_prefix ) ) { + if ( strpos( $file, '.html' ) ) { + // delete old wpcache files immediately + wp_cache_debug( "wp_cache_phase2_clean_cache: Deleting obsolete wpcache cache+meta files: $file" ); + @unlink( $blog_cache_dir . $file ); + @unlink( $blog_cache_dir . 'meta/' . str_replace( '.html', '.meta', $file ) ); + } else { + $meta = json_decode( wp_cache_get_legacy_cache( $blog_cache_dir . 'meta/' . $file ), true ); + if ( $meta['blog_id'] == $wpdb->blogid ) { + @unlink( $blog_cache_dir . $file ); + @unlink( $blog_cache_dir . 'meta/' . $file ); + } + } + } + } + closedir( $handle ); + do_action( 'wp_cache_cleared' ); + } + wp_cache_writers_exit(); +} + +function prune_super_cache( $directory, $force = false, $rename = false ) { + + // Don't prune a NULL/empty directory. + if ( null === $directory || '' === $directory ) { + wp_cache_debug( 'prune_super_cache: directory is blank' ); + return false; + } + + global $cache_max_time, $cache_path, $blog_cache_dir; + static $log = 0; + static $protected_directories = ''; + + $dir = $directory; + $directory = wpsc_get_realpath( $directory ); + if ( $directory == '' ) { + wp_cache_debug( "prune_super_cache: exiting as file/directory does not exist : $dir" ); + return false; + } + if ( ! wpsc_is_in_cache_directory( $directory ) ) { + wp_cache_debug( "prune_super_cache: exiting as directory is not in cache path: *$directory* (was $dir before realpath)" ); + return false; + } + + if ( false == @file_exists( $directory ) ) { + wp_cache_debug( "prune_super_cache: exiting as file/dir does not exist: $directory" ); + return $log; + } + if ( ! isset( $cache_max_time ) ) { + $cache_max_time = 3600; + } + + $now = time(); + + if ( $protected_directories == '' ) { + $protected_directories = wpsc_get_protected_directories(); + } + + if ( is_dir( $directory ) ) { + if ( $dh = @opendir( $directory ) ) { + $directory = trailingslashit( $directory ); + while ( ( $entry = @readdir( $dh ) ) !== false ) { + if ( $entry == '.' || $entry == '..' ) { + continue; + } + $entry = $directory . $entry; + prune_super_cache( $entry, $force, $rename ); + // If entry is a directory, AND it's not a protected one, AND we're either forcing the delete, OR the file is out of date, + if ( is_dir( $entry ) && ! in_array( $entry, $protected_directories ) && ( $force || @filemtime( $entry ) + $cache_max_time <= $now ) ) { + $donotdelete = false; + // if the directory isn't empty can't delete it + if ( $handle = @opendir( $entry ) ) { + while ( ! $donotdelete && ( $file = @readdir( $handle ) ) !== false ) { + if ( $file == '.' || $file == '..' ) { + continue; + } + $donotdelete = true; + wp_cache_debug( "gc: could not delete $entry as it's not empty: $file", 2 ); + } + closedir( $handle ); + } + if ( $donotdelete ) { + continue; + } + if ( ! $rename ) { + @rmdir( $entry ); + ++$log; + if ( $force ) { + wp_cache_debug( "gc: deleted $entry, forced delete", 2 ); + } else { + wp_cache_debug( "gc: deleted $entry, older than $cache_max_time seconds", 2 ); + } + } + } elseif ( in_array( $entry, $protected_directories ) ) { + wp_cache_debug( "gc: could not delete $entry as it's protected.", 2 ); + } + } + closedir( $dh ); + } + } elseif ( is_file( $directory ) && ( $force || @filemtime( $directory ) + $cache_max_time <= $now ) ) { + $oktodelete = true; + if ( in_array( $directory, $protected_directories ) ) { + wp_cache_debug( "gc: could not delete $directory as it's protected.", 2 ); + $oktodelete = false; + } + if ( $oktodelete && ! $rename ) { + wp_cache_debug( "prune_super_cache: deleted $directory", 5 ); + @unlink( $directory ); + ++$log; + } elseif ( $oktodelete && $rename ) { + wp_cache_debug( "prune_super_cache: wp_cache_rebuild_or_delete( $directory )", 5 ); + wp_cache_rebuild_or_delete( $directory ); + ++$log; + } else { + wp_cache_debug( "prune_super_cache: did not delete file: $directory" ); + } + } else { + wp_cache_debug( "prune_super_cache: did not delete file as it wasn't a directory or file and not forced to delete new file: $directory" ); + } + return $log; +} + +function wp_cache_rebuild_or_delete( $file ) { + global $cache_rebuild_files, $cache_path, $file_prefix; + + if ( strpos( $file, '?' ) !== false ) { + $file = substr( $file, 0, strpos( $file, '?' ) ); + } + + $file = wpsc_get_realpath( $file ); + + if ( ! $file ) { + wp_cache_debug( "wp_cache_rebuild_or_delete: file doesn't exist" ); + return false; + } + + if ( ! wpsc_is_in_cache_directory( $file ) ) { + wp_cache_debug( "rebuild_or_gc quitting because file is not in cache_path: $file" ); + return false; + } + + $protected = wpsc_get_protected_directories(); + foreach ( $protected as $id => $directory ) { + $protected[ $id ] = wpsc_get_realpath( $directory ); + } + + if ( in_array( $file, $protected ) ) { + wp_cache_debug( "rebuild_or_gc: file is protected: $file" ); + return false; + } + + if ( substr( basename( $file ), 0, mb_strlen( $file_prefix ) ) == $file_prefix ) { + @unlink( $file ); + wp_cache_debug( "rebuild_or_gc: deleted non-anonymous file: $file" ); + return false; + } + + if ( substr( basename( $file ), 0, 5 + mb_strlen( $file_prefix ) ) == 'meta-' . $file_prefix ) { + @unlink( $file ); + wp_cache_debug( "rebuild_or_gc: deleted meta file: $file" ); + return false; + } + + if ( false == @file_exists( $file ) ) { + wp_cache_debug( "rebuild_or_gc: file has disappeared: $file" ); + return false; + } + if ( $cache_rebuild_files && substr( $file, -14 ) != '.needs-rebuild' ) { + if ( @rename( $file, $file . '.needs-rebuild' ) ) { + @touch( $file . '.needs-rebuild' ); + wp_cache_debug( "rebuild_or_gc: rename file to {$file}.needs-rebuild", 2 ); + } else { + @unlink( $file ); + wp_cache_debug( "rebuild_or_gc: rename failed. deleted $file", 2 ); + } + } else { + $mtime = @filemtime( $file ); + if ( $mtime && ( time() - $mtime ) > 10 ) { + @unlink( $file ); + wp_cache_debug( "rebuild_or_gc: rebuild file found. deleted because it was too old: $file", 2 ); + } + } +} + +function wp_cache_phase2_clean_expired( $file_prefix, $force = false ) { + global $cache_path, $cache_max_time, $blog_cache_dir, $wp_cache_preload_on, $wp_cache_debug_log; + + if ( $cache_max_time == 0 ) { + wp_cache_debug( 'wp_cache_phase2_clean_expired: disabled because GC disabled.', 2 ); + return false; + } + + clearstatcache(); + if ( ! wp_cache_writers_entry() ) { + return false; + } + + // make sure we have a debug log viewer + if ( empty( $wp_cache_debug_log ) ) { + wpsc_create_debug_log(); + } else { + touch( $cache_path . 'view_' . $wp_cache_debug_log ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_touch + } + + $now = time(); + wp_cache_debug( "Cleaning expired cache files in $blog_cache_dir", 2 ); + $deleted = 0; + if ( ( $handle = @opendir( $blog_cache_dir ) ) ) { + while ( false !== ( $file = readdir( $handle ) ) ) { + if ( preg_match( "/^$file_prefix/", $file ) && + ( @filemtime( $blog_cache_dir . $file ) + $cache_max_time ) <= $now ) { + @unlink( $blog_cache_dir . $file ); + @unlink( $blog_cache_dir . 'meta/' . str_replace( '.html', '.meta', $file ) ); + wp_cache_debug( "wp_cache_phase2_clean_expired: Deleting obsolete wpcache cache+meta files: $file" ); + continue; + } + if ( $file != '.' && $file != '..' ) { + if ( is_dir( $blog_cache_dir . $file ) == false && ( @filemtime( $blog_cache_dir . $file ) + $cache_max_time ) <= $now ) { + if ( substr( $file, -9 ) != '.htaccess' && $file != 'index.html' ) { + @unlink( $blog_cache_dir . $file ); + wp_cache_debug( "Deleting $blog_cache_dir{$file}, older than $cache_max_time seconds", 5 ); + } + } + } + } + closedir( $handle ); + if ( false == $wp_cache_preload_on || true == $force ) { + wp_cache_debug( "Doing GC on supercache dir: {$cache_path}supercache", 2 ); + $deleted = prune_super_cache( $cache_path . 'supercache', false, false ); + } + } + + wp_cache_writers_exit(); + return $deleted; +} + +function wp_cache_shutdown_callback() { + global $cache_max_time, $meta_file, $new_cache, $wp_cache_meta, $known_headers, $blog_id, $wp_cache_gzip_encoding, $supercacheonly, $blog_cache_dir; + global $wp_cache_request_uri, $wp_cache_key, $cache_enabled, $wp_cache_blog_charset, $wp_cache_not_logged_in; + global $WPSC_HTTP_HOST, $wp_super_cache_query; + + if ( ! function_exists( 'wpsc_init' ) ) { + /* + * If a server has multiple networks the plugin may not have been activated + * on all of them. Give feeds on those blogs a short TTL. + * ref: https://wordpress.org/support/topic/fatal-error-while-updating-post-or-publishing-new-one/ + */ + $wpsc_feed_ttl = 1; + wp_cache_debug( 'wp_cache_shutdown_callback: Plugin not loaded. Setting feed ttl to 60 seconds.' ); + } + + if ( false == $new_cache ) { + wp_cache_debug( 'wp_cache_shutdown_callback: No cache file created. Returning.' ); + return false; + } + + $wp_cache_meta['uri'] = $WPSC_HTTP_HOST . preg_replace( '/[ <>\'\"\r\n\t\(\)]/', '', $wp_cache_request_uri ); // To avoid XSS attacks + $wp_cache_meta['blog_id'] = $blog_id; + $wp_cache_meta['post'] = wp_cache_post_id(); + $wp_cache_meta['key'] = $wp_cache_key; + $wp_cache_meta = apply_filters( 'wp_cache_meta', $wp_cache_meta ); + + $response = wp_cache_get_response_headers(); + foreach ( $response as $key => $value ) { + $wp_cache_meta['headers'][ $key ] = "$key: $value"; + } + + wp_cache_debug( 'wp_cache_shutdown_callback: collecting meta data.', 2 ); + + if ( ! isset( $response['Last-Modified'] ) ) { + $value = gmdate( 'D, d M Y H:i:s' ) . ' GMT'; + // Don't send this the first time + /* @header('Last-Modified: ' . $value); */ + $wp_cache_meta['headers']['Last-Modified'] = "Last-Modified: $value"; + } + $is_feed = false; + if ( ! isset( $response['Content-Type'] ) && ! isset( $response['Content-type'] ) ) { + // On some systems, headers set by PHP can't be fetched from + // the output buffer. This is a last ditch effort to set the + // correct Content-Type header for feeds, if we didn't see + // it in the response headers already. -- dougal + if ( isset( $wp_super_cache_query['is_feed'] ) ) { + if ( isset( $wp_super_cache_query['is_sitemap'] ) ) { + $type = 'sitemap'; + $value = 'text/xml'; + } else { + $type = get_query_var( 'feed' ); + $type = str_replace( '/', '', $type ); + switch ( $type ) { + case 'atom': + $value = 'application/atom+xml'; + break; + case 'rdf': + $value = 'application/rdf+xml'; + break; + case 'rss': + case 'rss2': + default: + $value = 'application/rss+xml'; + } + } + + if ( isset( $wpsc_feed_ttl ) && $wpsc_feed_ttl == 1 ) { + $wp_cache_meta['ttl'] = 60; + } + $is_feed = true; + + wp_cache_debug( "wp_cache_shutdown_callback: feed is type: $type - $value" ); + } elseif ( isset( $wp_super_cache_query['is_rest'] ) ) { // json + $value = 'application/json'; + } else { // not a feed + $value = get_option( 'html_type' ); + if ( $value == '' ) { + $value = 'text/html'; + } + } + $value .= '; charset="' . $wp_cache_blog_charset . '"'; + + wp_cache_debug( "Sending 'Content-Type: $value' header.", 2 ); + @header( "Content-Type: $value" ); + $wp_cache_meta['headers']['Content-Type'] = "Content-Type: $value"; + } + + if ( $cache_enabled && ! $supercacheonly ) { + if ( ! isset( $wp_cache_meta['dynamic'] ) && $wp_cache_gzip_encoding && ! in_array( 'Content-Encoding: ' . $wp_cache_gzip_encoding, $wp_cache_meta['headers'] ) ) { + wp_cache_debug( 'Sending gzip headers.', 2 ); + $wp_cache_meta['headers']['Content-Encoding'] = 'Content-Encoding: ' . $wp_cache_gzip_encoding; + if ( defined( 'WPSC_VARY_HEADER' ) ) { + if ( WPSC_VARY_HEADER != '' ) { + $vary_header = WPSC_VARY_HEADER; + } else { + $vary_header = ''; + } + } else { + $vary_header = 'Accept-Encoding, Cookie'; + } + if ( $vary_header ) { + $wp_cache_meta['headers']['Vary'] = 'Vary: ' . $vary_header; + } + } + + $serial = '' . wp_json_encode( $wp_cache_meta, JSON_UNESCAPED_SLASHES ); + $dir = get_current_url_supercache_dir(); + if ( @is_dir( $dir ) == false ) { + @wp_mkdir_p( $dir ); + } + + if ( wp_cache_writers_entry() ) { + wp_cache_debug( "Writing meta file: {$dir}meta-{$meta_file}", 2 ); + + $tmp_meta_filename = $dir . uniqid( (string) wp_rand(), true ) . '.tmp'; + $final_meta_filename = $dir . 'meta-' . $meta_file; + $fr = @fopen( $tmp_meta_filename, 'w' ); + if ( $fr ) { + fwrite( $fr, $serial ); + fclose( $fr ); + @chmod( $tmp_meta_filename, 0666 & ~umask() ); + if ( ! @rename( $tmp_meta_filename, $final_meta_filename ) ) { + @unlink( $dir . $final_meta_filename ); + @rename( $tmp_meta_filename, $final_meta_filename ); + } + } else { + wp_cache_debug( "Problem writing meta file: {$final_meta_filename}" ); + } + wp_cache_writers_exit(); + + // record locations of archive feeds to be updated when the site is updated. + // Only record a maximum of 50 feeds to avoid bloating database. + if ( ( isset( $wp_super_cache_query['is_feed'] ) || $is_feed ) && ! isset( $wp_super_cache_query['is_single'] ) ) { + $wpsc_feed_list = (array) get_option( 'wpsc_feed_list' ); + if ( count( $wpsc_feed_list ) <= 50 ) { + $wpsc_feed_list[] = $dir . $meta_file; + update_option( 'wpsc_feed_list', $wpsc_feed_list ); + } + } + } + } else { + wp_cache_debug( "Did not write meta file: meta-{$meta_file}\nsupercacheonly: $supercacheonly\nwp_cache_not_logged_in: $wp_cache_not_logged_in\nnew_cache:$new_cache" ); + } + global $time_to_gc_cache; + if ( isset( $time_to_gc_cache ) && $time_to_gc_cache == 1 ) { + wp_cache_debug( 'Executing wp_cache_gc action.', 3 ); + do_action( 'wp_cache_gc' ); + } +} + +function wp_cache_no_postid( $id ) { + return wp_cache_post_change( wp_cache_post_id() ); +} + +function wp_cache_get_postid_from_comment( $comment_id, $status = 'NA' ) { + global $super_cache_enabled, $wp_cache_request_uri; + + if ( defined( 'DONOTDELETECACHE' ) ) { + return; + } + + // Check is it "Empty Spam" or "Empty Trash" + if ( isset( $GLOBALS['pagenow'] ) && $GLOBALS['pagenow'] === 'edit-comments.php' && + ( isset( $_REQUEST['delete_all'] ) || isset( $_REQUEST['delete_all2'] ) ) + ) { + wp_cache_debug( "Delete all SPAM or Trash comments. Don't delete any cache files.", 4 ); + define( 'DONOTDELETECACHE', 1 ); + return; + } + + $comment = get_comment( $comment_id, ARRAY_A ); + if ( $status != 'NA' ) { + $comment['old_comment_approved'] = $comment['comment_approved']; + $comment['comment_approved'] = $status; + } + + if ( ( $status == 'trash' || $status == 'spam' ) && $comment['old_comment_approved'] != 1 ) { + // don't modify cache if moderated comments are trashed or spammed + wp_cache_debug( "Moderated comment deleted or spammed. Don't delete any cache files.", 4 ); + define( 'DONOTDELETECACHE', 1 ); + return wp_cache_post_id(); + } + $postid = isset( $comment['comment_post_ID'] ) ? (int) $comment['comment_post_ID'] : 0; + // Do nothing if comment is not moderated + // http://ocaoimh.ie/2006/12/05/caching-wordpress-with-wp-cache-in-a-spam-filled-world + if ( ! preg_match( '/wp-admin\//', $wp_cache_request_uri ) ) { + if ( $comment['comment_approved'] == 'delete' && ( isset( $comment['old_comment_approved'] ) && $comment['old_comment_approved'] == 0 ) ) { // do nothing if moderated comments are deleted + wp_cache_debug( "Moderated comment deleted. Don't delete any cache files.", 4 ); + define( 'DONOTDELETECACHE', 1 ); + return $postid; + } elseif ( $comment['comment_approved'] == 'spam' ) { + wp_cache_debug( "Spam comment. Don't delete any cache files.", 4 ); + define( 'DONOTDELETECACHE', 1 ); + return $postid; + } elseif ( $comment['comment_approved'] == '0' ) { + if ( $comment['comment_type'] == '' ) { + wp_cache_debug( "Moderated comment. Don't delete supercache file until comment approved.", 4 ); + $super_cache_enabled = 0; // don't remove the super cache static file until comment is approved + define( 'DONOTDELETECACHE', 1 ); + } else { + wp_cache_debug( 'Moderated ping or trackback. Not deleting cache files..', 4 ); + define( 'DONOTDELETECACHE', 1 ); + return $postid; + } + } + } + // We must check it up again due to WP bugs calling two different actions + // for delete, for example both wp_set_comment_status and delete_comment + // are called when deleting a comment + if ( $postid > 0 ) { + wp_cache_debug( "Post $postid changed. Update cache.", 4 ); + return wp_cache_post_change( $postid ); + } else { + wp_cache_debug( 'Unknown post changed. Update cache.', 4 ); + return wp_cache_post_change( wp_cache_post_id() ); + } +} + +/* Used by wp_update_nav_menu action to clear current blog's cache files when navigation menu is modified */ +function wp_cache_clear_cache_on_menu() { + global $wpdb; + wp_cache_clear_cache( $wpdb->blogid ); +} + +/* Clear out the cache directory. */ +function wp_cache_clear_cache( $blog_id = 0 ) { + global $cache_path; + + if ( $blog_id == 0 ) { + wp_cache_debug( 'Clearing all cached files in wp_cache_clear_cache()', 4 ); + prune_super_cache( $cache_path . 'supercache/', true ); + prune_super_cache( $cache_path, true ); + } else { + wp_cache_debug( "Clearing all cached files for blog $blog_id in wp_cache_clear_cache()", 4 ); + prune_super_cache( get_supercache_dir( $blog_id ), true ); + prune_super_cache( $cache_path . 'blogs/', true ); + } + + do_action( 'wp_cache_cleared' ); +} + +function wpsc_delete_post_archives( $post ) { + $post = @get_post( $post ); + if ( ! is_object( $post ) ) { + return; + } + + // Taxonomies - categories, tags, custom taxonomies + foreach ( get_object_taxonomies( $post, 'objects' ) as $taxonomy ) { + + if ( ! $taxonomy->public || ! $taxonomy->rewrite ) { + continue; + } + + $terms = get_the_terms( $post->ID, $taxonomy->name ); + if ( empty( $terms ) ) { + continue; + } + + foreach ( $terms as $term ) { + + $term_url = get_term_link( $term, $taxonomy->name ); + if ( is_wp_error( $term_url ) ) { + continue; + } + + wpsc_delete_url_cache( $term_url ); + wp_cache_debug( 'wpsc_delete_post_archives: deleting cache of taxonomies: ' . $term_url ); + } + } + + // Post type archive page + if ( $post->post_type === 'page' ) { + $archive_url = false; + } elseif ( $post->post_type === 'post' && get_option( 'show_on_front' ) !== 'posts' && ! get_option( 'page_for_posts' ) ) { + $archive_url = false; + } else { + $archive_url = get_post_type_archive_link( $post->post_type ); + } + + if ( $archive_url ) { + wpsc_delete_url_cache( $archive_url ); + wp_cache_debug( 'wpsc_delete_post_archives: deleting cache of post type archive: ' . $archive_url ); + } + + // Author archive page + $author_url = get_author_posts_url( $post->post_author ); + if ( $author_url ) { + wpsc_delete_url_cache( $author_url ); + wp_cache_debug( 'wpsc_delete_post_archives: deleting cache of author archive: ' . $author_url ); + } +} + +function wpsc_delete_cats_tags( $post ) { + if ( function_exists( '_deprecated_function' ) ) { + _deprecated_function( __FUNCTION__, 'WP Super Cache 1.6.3', 'wpsc_delete_post_archives' ); + } + + $post = get_post( $post ); + $categories = get_the_category( $post->ID ); + if ( $categories ) { + $category_base = get_option( 'category_base' ); + if ( $category_base == '' ) { + $category_base = '/category/'; + } + $category_base = trailingslashit( $category_base ); // paranoid much? + foreach ( $categories as $cat ) { + prune_super_cache( get_supercache_dir() . $category_base . $cat->slug . '/', true ); + wp_cache_debug( 'wpsc_post_transition: deleting category: ' . get_supercache_dir() . $category_base . $cat->slug . '/' ); + } + } + $posttags = get_the_tags( $post->ID ); + if ( $posttags ) { + $tag_base = get_option( 'tag_base' ); + if ( $tag_base == '' ) { + $tag_base = '/tag/'; + } + $tag_base = trailingslashit( str_replace( '..', '', $tag_base ) ); // maybe! + foreach ( $posttags as $tag ) { + prune_super_cache( get_supercache_dir() . $tag_base . $tag->slug . '/', true ); + wp_cache_debug( 'wpsc_post_transition: deleting tag: ' . get_supercache_dir() . $tag_base . $tag->slug . '/' ); + } + } +} + +function wpsc_post_transition( $new_status, $old_status, $post ) { + + $ptype = is_object( $post ) ? get_post_type_object( $post->post_type ) : null; + if ( empty( $ptype ) || ! $ptype->public ) { + return; + } + + // Allow plugins to reject cache clears for specific posts. + if ( ! apply_filters( 'wp_super_cache_clear_post_cache', true, $post ) ) { + return; + } + + if ( ( $old_status === 'private' || $old_status === 'publish' ) && $new_status !== 'publish' ) { // post unpublished + if ( ! function_exists( 'get_sample_permalink' ) ) { + require_once ABSPATH . 'wp-admin/includes/post.php'; + } + list( $permalink, $post_name ) = get_sample_permalink( $post ); + $post_url = str_replace( array( '%postname%', '%pagename%' ), $post->post_name, $permalink ); + wp_cache_post_edit( $post->ID ); + } elseif ( $old_status !== 'publish' && $new_status === 'publish' ) { // post published + wp_cache_post_edit( $post->ID ); + return; + } + + if ( ! empty( $post_url ) ) { + wp_cache_debug( 'wpsc_post_transition: deleting cache of post: ' . $post_url ); + wpsc_delete_url_cache( $post_url ); + wpsc_delete_post_archives( $post ); + } +} + +/* check if we want to clear out all cached files on post updates, otherwise call standard wp_cache_post_change() */ +function wp_cache_post_edit( $post_id ) { + global $wp_cache_clear_on_post_edit, $cache_path, $blog_cache_dir; + static $last_post_edited = -1; + + if ( $post_id == $last_post_edited ) { + $action = current_filter(); + wp_cache_debug( "wp_cache_post_edit({$action}): Already processed post $post_id.", 4 ); + return $post_id; + } + + $post = get_post( $post_id ); + if ( ! is_object( $post ) || 'auto-draft' === $post->post_status ) { + return $post_id; + } + + // Allow plugins to reject cache clears for specific posts. + if ( ! apply_filters( 'wp_super_cache_clear_post_cache', true, $post ) ) { + return $post_id; + } + + // Some users are inexplicibly seeing this error on scheduled posts. + // define this constant to disable the post status check. + if ( ! defined( 'WPSCFORCEUPDATE' ) && ! in_array( get_post_status( $post ), array( 'publish', 'private' ), true ) ) { + wp_cache_debug( 'wp_cache_post_edit: draft post, not deleting any cache files. status: ' . $post->post_status, 4 ); + return $post_id; + } + + // we want to process the post again just in case it becomes published before the second time this function is called. + $last_post_edited = $post_id; + if ( $wp_cache_clear_on_post_edit ) { + wp_cache_debug( "wp_cache_post_edit: Clearing cache $blog_cache_dir and {$cache_path}supercache/ on post edit per config.", 2 ); + prune_super_cache( $blog_cache_dir, true ); + prune_super_cache( get_supercache_dir(), true ); + + do_action( 'wp_cache_cleared' ); + } else { + $action = current_filter(); + wp_cache_debug( "wp_cache_post_edit: Clearing cache for post $post_id on {$action}", 2 ); + wp_cache_post_change( $post_id ); + wpsc_delete_post_archives( $post_id ); // delete related archive pages. + } +} + +function wp_cache_post_id_gc( $post_id, $all = 'all' ) { + + $post_id = intval( $post_id ); + if ( $post_id == 0 ) { + return true; + } + + $permalink = trailingslashit( str_replace( get_option( 'home' ), '', get_permalink( $post_id ) ) ); + if ( str_contains( $permalink, '?' ) ) { + wp_cache_debug( 'wp_cache_post_id_gc: NOT CLEARING CACHE. Permalink has a "?". ' . $permalink ); + return false; + } + $dir = get_current_url_supercache_dir( $post_id ); + wp_cache_debug( "wp_cache_post_id_gc post_id: $post_id " . get_permalink( $post_id ) . " clearing cache in $dir.", 4 ); + if ( $all ) { + prune_super_cache( $dir, true, true ); + do_action( 'gc_cache', 'prune', $permalink ); + @rmdir( $dir ); + $supercache_home = get_supercache_dir(); + wp_cache_debug( "wp_cache_post_id_gc clearing cache in {$supercache_home}page/." ); + prune_super_cache( $supercache_home . 'page/', true ); + do_action( 'gc_cache', 'prune', 'page/' ); + } else { + wp_cache_debug( "wp_cache_post_id_gc clearing cached index files in $dir.", 4 ); + prune_super_cache( $dir, true, true ); + do_action( 'gc_cache', 'prune', $permalink ); + } + return true; +} + +function wp_cache_post_change( $post_id ) { + global $file_prefix, $cache_path, $blog_id, $super_cache_enabled, $blog_cache_dir, $wp_cache_refresh_single_only; + static $last_processed = -1; + + if ( $post_id == $last_processed ) { + $action = current_filter(); + wp_cache_debug( "wp_cache_post_change({$action}): Already processed post $post_id.", 4 ); + return $post_id; + } + + $post = get_post( $post_id ); + $ptype = is_object( $post ) ? get_post_type_object( $post->post_type ) : null; + if ( empty( $ptype ) || ! $ptype->public ) { + return $post_id; + } + + // Allow plugins to reject cache clears for specific posts. + if ( ! apply_filters( 'wp_super_cache_clear_post_cache', true, $post ) ) { + return $post_id; + } + + // Some users are inexplicibly seeing this error on scheduled posts. + // define this constant to disable the post status check. + if ( ! defined( 'WPSCFORCEUPDATE' ) && ! in_array( get_post_status( $post ), array( 'publish', 'private' ), true ) ) { + wp_cache_debug( 'wp_cache_post_change: draft post, not deleting any cache files.', 4 ); + return $post_id; + } + $last_processed = $post_id; + + if ( ! wp_cache_writers_entry() ) { + return $post_id; + } + + if ( + isset( $wp_cache_refresh_single_only ) && + $wp_cache_refresh_single_only && + ( + isset( $_SERVER['HTTP_REFERER'] ) && + strpos( $_SERVER['HTTP_REFERER'], 'edit-comments.php' ) || + strpos( $_SERVER['REQUEST_URI'], 'wp-comments-post.php' ) + ) + ) { + if ( defined( 'DONOTDELETECACHE' ) ) { + wp_cache_debug( "wp_cache_post_change: comment detected and it's moderated or spam. Not deleting cached files.", 4 ); + return $post_id; + } else { + wp_cache_debug( 'wp_cache_post_change: comment detected. only deleting post page.', 4 ); + $all = false; + } + } else { + $all = true; + } + + $all_backup = $all; + $all = apply_filters( 'wpsc_delete_related_pages_on_edit', $all ); // return 0 to disable deleting homepage and other pages. + if ( $all != $all_backup ) { + wp_cache_debug( 'wp_cache_post_change: $all changed by wpsc_delete_related_pages_on_edit filter: ' . intval( $all ) ); + } + + // Delete supercache files whenever a post change event occurs, even if supercache is currently disabled. + $dir = get_supercache_dir(); + // make sure the front page has a rebuild file + if ( false == wp_cache_post_id_gc( $post_id, $all ) ) { + wp_cache_debug( 'wp_cache_post_change: not deleting any cache files as GC of post returned false' ); + wp_cache_writers_exit(); + return false; + } + if ( $all == true ) { + wp_cache_debug( 'Post change: supercache enabled: deleting cache files in ' . $dir ); + wpsc_rebuild_files( $dir ); + do_action( 'gc_cache', 'prune', 'homepage' ); + if ( get_option( 'show_on_front' ) == 'page' ) { + wp_cache_debug( 'Post change: deleting page_on_front and page_for_posts pages.', 4 ); + wp_cache_debug( 'Post change: page_on_front ' . get_option( 'page_on_front' ), 4 ); + /** + * It's possible that page_for_posts is zero. + * Quick fix to reduce issues in debugging. + */ + wp_cache_debug( 'Post change: page_for_posts ' . get_option( 'page_for_posts' ), 4 ); + if ( get_option( 'page_for_posts' ) ) { + $permalink = trailingslashit( str_replace( get_option( 'home' ), '', get_permalink( get_option( 'page_for_posts' ) ) ) ); + wp_cache_debug( 'Post change: Deleting files in: ' . str_replace( '//', '/', $dir . $permalink ) ); + wpsc_rebuild_files( $dir . $permalink ); + do_action( 'gc_cache', 'prune', $permalink ); + } + } + } else { + wp_cache_debug( 'wp_cache_post_change: not deleting all pages.', 4 ); + } + + wp_cache_debug( "wp_cache_post_change: checking {$blog_cache_dir}meta/", 4 ); + $supercache_files_deleted = false; + if ( $handle = @opendir( $blog_cache_dir ) ) { + while ( false !== ( $file = readdir( $handle ) ) ) { + if ( str_contains( $file, $file_prefix ) ) { + if ( strpos( $file, '.html' ) ) { + // delete old wpcache files immediately + wp_cache_debug( "wp_cache_post_change: Deleting obsolete wpcache cache+meta files: $file" ); + @unlink( $blog_cache_dir . $file ); + @unlink( $blog_cache_dir . 'meta/' . str_replace( '.html', '.meta', $file ) ); + continue; + } else { + $meta = json_decode( wp_cache_get_legacy_cache( $blog_cache_dir . 'meta/' . $file ), true ); + if ( false == is_array( $meta ) ) { + wp_cache_debug( "Post change cleaning up stray file: $file", 4 ); + @unlink( $blog_cache_dir . 'meta/' . $file ); + @unlink( $blog_cache_dir . $file ); + continue; + } + if ( $post_id > 0 && $meta ) { + $permalink = trailingslashit( str_replace( get_option( 'home' ), '', get_permalink( $post_id ) ) ); + if ( $meta['blog_id'] == $blog_id && ( ( $all == true && ! $meta['post'] ) || $meta['post'] == $post_id ) ) { + wp_cache_debug( "Post change: deleting post wp-cache files for {$meta[ 'uri' ]}: $file", 4 ); + @unlink( $blog_cache_dir . 'meta/' . $file ); + @unlink( $blog_cache_dir . $file ); + if ( false == $supercache_files_deleted && $super_cache_enabled == true ) { + wp_cache_debug( "Post change: deleting supercache files for {$permalink}" ); + wpsc_rebuild_files( $dir . $permalink ); + $supercache_files_deleted = true; + do_action( 'gc_cache', 'rebuild', $permalink ); + } + } + } elseif ( $meta['blog_id'] == $blog_id ) { + wp_cache_debug( "Post change: deleting wp-cache files for {$meta[ 'uri' ]}: $file", 4 ); + @unlink( $blog_cache_dir . 'meta/' . $file ); + @unlink( $blog_cache_dir . $file ); + if ( $super_cache_enabled == true ) { + wp_cache_debug( "Post change: deleting supercache files for {$meta[ 'uri' ]}" ); + wpsc_rebuild_files( $dir . $meta['uri'] ); + do_action( 'gc_cache', 'rebuild', trailingslashit( $meta['uri'] ) ); + } + } + } + } + } + closedir( $handle ); + } + wp_cache_writers_exit(); + return $post_id; +} + +function wp_cache_microtime_diff( $a, $b ) { + list($a_dec, $a_sec) = explode( ' ', $a ); + list($b_dec, $b_sec) = explode( ' ', $b ); + return (float) $b_sec - (float) $a_sec + (float) $b_dec - (float) $a_dec; +} + +function wp_cache_post_id() { + global $posts, $comment_post_ID, $post_ID; + // We try hard all options. More frequent first. + if ( $post_ID > 0 ) { + return $post_ID; + } + if ( $comment_post_ID > 0 ) { + return $comment_post_ID; + } + if ( is_singular() && ! empty( $posts ) && is_array( $posts ) ) { + return $posts[0]->ID; + } + if ( isset( $_GET['p'] ) && $_GET['p'] > 0 ) { + return $_GET['p']; + } + if ( isset( $_POST['p'] ) && $_POST['p'] > 0 ) { + return $_POST['p']; + } + return 0; +} + +function maybe_stop_gc( $flag ) { + + if ( @file_exists( $flag ) ) { + if ( time() - filemtime( $flag ) > 3600 ) { + @unlink( $flag ); + wp_cache_debug( "maybe_stop_gc: GC flag found but deleted because it's older than 3600 seconds.", 5 ); + return false; + } else { + wp_cache_debug( 'maybe_stop_gc: GC flag found. GC cancelled.', 5 ); + return true; + } + } else { + wp_cache_debug( 'maybe_stop_gc: GC flag not found. GC will go ahead..', 5 ); + return false; + } +} +function get_gc_flag() { + global $cache_path; + return $cache_path . strtolower( preg_replace( '!/:.*$!', '', str_replace( 'http://', '', str_replace( 'https://', '', get_option( 'home' ) ) ) ) ) . '_wp_cache_gc.txt'; +} + +function wp_cache_gc_cron() { + global $file_prefix, $cache_max_time, $cache_gc_email_me, $cache_time_interval; + + $msg = ''; + if ( $cache_max_time == 0 ) { + wp_cache_debug( 'Cache garbage collection disabled because cache expiry time is zero.', 5 ); + return false; + } + + $gc_flag = get_gc_flag(); + if ( maybe_stop_gc( $gc_flag ) ) { + wp_cache_debug( 'GC flag found. GC cancelled.', 5 ); + return false; + } + + update_option( 'wpsupercache_gc_time', time() ); + wp_cache_debug( "wp_cache_gc_cron: Set GC Flag. ($gc_flag)", 5 ); + $fp = @fopen( $gc_flag, 'w' ); + if ( $fp ) { + @fclose( $fp ); + } + + wp_cache_debug( 'Cache garbage collection.', 5 ); + + $start = time(); + $num = 0; + if ( false === ( $num = wp_cache_phase2_clean_expired( $file_prefix ) ) ) { + wp_cache_debug( 'Cache Expiry cron job failed. Probably mutex locked.', 1 ); + update_option( 'wpsupercache_gc_time', time() - ( $cache_time_interval - 10 ) ); // if GC failed then run it again in one minute + $msg .= __( 'Cache expiry cron job failed. Job will run again in 10 seconds.', 'wp-super-cache' ) . "\n"; + } + if ( time() - $start > 30 ) { + wp_cache_debug( "Cache Expiry cron job took more than 30 seconds to execute.\nYou should reduce the Expiry Time in the WP Super Cache admin page\nas you probably have more cache files than your server can handle efficiently.", 1 ); + $msg .= __( 'Cache expiry cron job took more than 30 seconds. You should probably run the garbage collector more often.', 'wp-super-cache' ) . "\n"; + } + + if ( $cache_gc_email_me ) { + if ( $msg != '' ) { + $msg = "The following warnings were generated by the WP Super Cache Garbage Collector:\n" . $msg; + } + + $msg = "Hi,\n\nThe WP Super Cache Garbage Collector has now run, deleting " . (int) $num . " files and directories.\nIf you want to switch off these emails please see the WP Super Cache Advanced Settings\npage on your blog.\n\n{$msg}\nRegards,\nThe Garbage Collector."; + + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%1$s] WP Super Cache GC Report', 'wp-super-cache' ), home_url() ), $msg ); + } + @unlink( $gc_flag ); + wp_cache_debug( 'GC completed. GC flag deleted.', 5 ); + schedule_wp_gc( 1 ); +} + +function schedule_wp_gc( $forced = 0 ) { + global $cache_schedule_type, $cache_max_time, $cache_time_interval, $cache_scheduled_time, $cache_schedule_interval; + + if ( false == isset( $cache_time_interval ) ) { + $cache_time_interval = 3600; + } + + if ( false == isset( $cache_schedule_type ) ) { + $cache_schedule_type = 'interval'; + $cache_schedule_interval = $cache_max_time; + } + if ( $cache_schedule_type == 'interval' ) { + if ( ! isset( $cache_max_time ) ) { + $cache_max_time = 600; + } + if ( $cache_max_time == 0 ) { + return false; + } + $last_gc = get_option( 'wpsupercache_gc_time' ); + + if ( ! $last_gc ) { + update_option( 'wpsupercache_gc_time', time() ); + $last_gc = get_option( 'wpsupercache_gc_time' ); + } + if ( $forced || ( $last_gc < ( time() - 60 ) ) ) { // Allow up to 60 seconds for the previous job to run + global $wp_cache_shutdown_gc; + if ( ! isset( $wp_cache_shutdown_gc ) || $wp_cache_shutdown_gc == 0 ) { + if ( ! ( $t = wp_next_scheduled( 'wp_cache_gc' ) ) ) { + wp_clear_scheduled_hook( 'wp_cache_gc' ); + wp_schedule_single_event( time() + $cache_time_interval, 'wp_cache_gc' ); + wp_cache_debug( 'scheduled wp_cache_gc for 10 seconds time.', 5 ); + } + } else { + global $time_to_gc_cache; + $time_to_gc_cache = 1; // tell the "shutdown gc" to run! + } + } + } elseif ( $cache_schedule_type == 'time' && ! wp_next_scheduled( 'wp_cache_gc' ) ) { + wp_schedule_event( strtotime( $cache_scheduled_time ), $cache_schedule_interval, 'wp_cache_gc' ); + } + return true; +} + +function wp_cache_gc_watcher() { + if ( false == wp_next_scheduled( 'wp_cache_gc' ) ) { + wp_cache_debug( 'GC Watcher: scheduled new gc cron.', 5 ); + schedule_wp_gc(); + } +} + +function wpsc_is_get_query() { + static $is_get_query = null; + + if ( null === $is_get_query ) { + $request_uri = wpsc_parse_partial_url( $_SERVER['REQUEST_URI'] ); + $is_get_query = $request_uri && ! empty( $request_uri['query'] ); + } + + return $is_get_query; +} + +/** + * A fallback for get request headers. + * Based on comments from http://php.net/manual/en/function.apache-request-headers.php + * + * @return array List of request headers + */ +function wpsc_apache_request_headers() { + + if ( ! function_exists( 'apache_request_headers' ) || ! is_callable( 'apache_request_headers' ) ) { + $headers = array(); + foreach ( array_keys( $_SERVER ) as $skey ) { + if ( str_starts_with( $skey, 'HTTP_' ) ) { + $header = implode( '-', array_map( 'ucfirst', array_slice( explode( '_', strtolower( $skey ) ), 1 ) ) ); + $headers[ $header ] = $_SERVER[ $skey ]; + } + } + } else { + $headers = apache_request_headers(); + } + + return $headers; +} diff --git a/wp-content/plugins/wp-super-cache/wp-cache.php b/wp-content/plugins/wp-super-cache/wp-cache.php new file mode 100644 index 0000000..21c102e --- /dev/null +++ b/wp-content/plugins/wp-super-cache/wp-cache.php @@ -0,0 +1,4511 @@ +. +*/ + +define( 'WPSC_VERSION_ID', '1.12.1' ); + +require_once( __DIR__. '/inc/delete-cache-button.php'); +require_once( __DIR__. '/inc/preload-notification.php'); +require_once __DIR__ . '/inc/boost.php'; + +if ( ! function_exists( 'wp_cache_phase2' ) ) { + require_once( __DIR__. '/wp-cache-phase2.php'); +} + +if ( ! defined( 'PHP_VERSION_ID' ) ) { + // For versions of PHP below 5.2.7, this constant doesn't exist. + $wpsc_php_version = explode( '.', PHP_VERSION ); + define( 'PHP_VERSION_ID', intval( $wpsc_php_version[0] * 10000 + $wpsc_php_version[1] * 100 + $wpsc_php_version[2] ) ); + unset( $wpsc_php_version ); +} + +/** + * Defines how many posts to preload per loop. + */ +if ( ! defined( 'WPSC_PRELOAD_POST_COUNT' ) ) { + define( 'WPSC_PRELOAD_POST_COUNT', 10 ); +} + +/** + * Defines the interval in seconds between preloading pages. + */ +if ( ! defined( 'WPSC_PRELOAD_POST_INTERVAL' ) ) { + define( 'WPSC_PRELOAD_POST_INTERVAL', 1 ); +} + +/** + * Defines the interval in seconds between preloading loops. + */ +if ( ! defined( 'WPSC_PRELOAD_LOOP_INTERVAL' ) ) { + define( 'WPSC_PRELOAD_LOOP_INTERVAL', 0 ); +} + +function wpsc_init() { + global $wp_cache_config_file, $wp_cache_config_file_sample, $wpsc_advanced_cache_dist_filename, $wp_cache_check_wp_config, $wpsc_advanced_cache_filename, $wpsc_promo_links; + + if ( ! defined( 'WPCACHECONFIGPATH' ) ) { + define( 'WPCACHECONFIGPATH', WP_CONTENT_DIR ); + } + + $wp_cache_config_file = WPCACHECONFIGPATH . '/wp-cache-config.php'; + + // Centralise the promotional links to other products + $wpsc_promo_links = array( + 'boost' => 'https://jetpack.com/boost/?utm_source=wporg&utm_medium=plugin&utm_campaign=wp-super-cache&utm_id=wp-super-cache', + 'photon' => 'https://jetpack.com/features/design/content-delivery-network/?utm_source=wporg&utm_medium=plugin&utm_campaign=wp-super-cache&utm_id=wp-super-cache', + 'videopress' => 'https://jetpack.com/videopress/?utm_source=wporg&utm_medium=plugin&utm_campaign=wp-super-cache&utm_id=wp-super-cache', + 'crowdsignal' => 'https://crowdsignal.com/?utm_source=wporg&utm_medium=plugin&utm_campaign=wp-super-cache&utm_id=wp-super-cache', + 'jetpack' => 'https://jetpack.com/?utm_source=wporg&utm_medium=plugin&utm_campaign=wp-super-cache&utm_id=wp-super-cache', + ); + + if ( !defined( 'WPCACHEHOME' ) ) { + define( 'WPCACHEHOME', __DIR__ . '/' ); + $wp_cache_config_file_sample = WPCACHEHOME . 'wp-cache-config-sample.php'; + $wpsc_advanced_cache_dist_filename = WPCACHEHOME . 'advanced-cache.php'; + } elseif ( realpath( WPCACHEHOME ) != realpath( __DIR__ ) ) { + $wp_cache_config_file_sample = __DIR__. '/wp-cache-config-sample.php'; + $wpsc_advanced_cache_dist_filename = __DIR__. '/advanced-cache.php'; + if ( ! defined( 'ADVANCEDCACHEPROBLEM' ) ) { + define( 'ADVANCEDCACHEPROBLEM', 1 ); // force an update of WPCACHEHOME + } + } else { + $wp_cache_config_file_sample = WPCACHEHOME . 'wp-cache-config-sample.php'; + $wpsc_advanced_cache_dist_filename = WPCACHEHOME . 'advanced-cache.php'; + } + $wpsc_advanced_cache_filename = WP_CONTENT_DIR . '/advanced-cache.php'; + + if ( !defined( 'WP_CACHE' ) || ( defined( 'WP_CACHE' ) && constant( 'WP_CACHE' ) == false ) ) { + $wp_cache_check_wp_config = true; + } +} + +wpsc_init(); + +/** + * WP-CLI requires explicit declaration of global variables. + * It's minimal list of global variables. + */ +global $super_cache_enabled, $cache_enabled, $wp_cache_mod_rewrite, $wp_cache_home_path, $cache_path, $file_prefix; +global $wp_cache_mutex_disabled, $mutex_filename, $sem_id, $wp_super_cache_late_init; +global $cache_compression, $cache_max_time, $wp_cache_shutdown_gc, $cache_rebuild_files; +global $wp_super_cache_debug, $wp_super_cache_advanced_debug, $wp_cache_debug_level, $wp_cache_debug_to_file; +global $wp_cache_debug_log, $wp_cache_debug_ip, $wp_cache_debug_username, $wp_cache_debug_email; +global $cache_time_interval, $cache_scheduled_time, $cache_schedule_interval, $cache_schedule_type, $cache_gc_email_me; +global $wp_cache_preload_on, $wp_cache_preload_interval, $wp_cache_preload_posts, $wp_cache_preload_taxonomies; + +// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- these are used by various functions but the linter complains. +global $wp_cache_preload_email_me, $wp_cache_preload_email_volume; +global $wp_cache_mobile, $wp_cache_mobile_enabled, $wp_cache_mobile_browsers, $wp_cache_mobile_prefixes; +global $wp_cache_config_file, $wp_cache_config_file_sample; + +// phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable +global $wpsc_advanced_cache_filename, $wpsc_advanced_cache_dist_filename; +global $wp_cache_phase1_loaded, $blog_cache_dir, $wp_supercache_304, $wp_cache_mfunc_enabled; +global $wp_cache_front_page_checks, $wpsc_save_headers, $is_nginx, $wpsc_promo_links; +global $wp_cache_disable_utf8, $wp_cache_not_logged_in, $wp_cache_make_known_anon; +global $wpsc_tracking_parameters, $wpsc_rejected_cookies, $cache_rejected_uri; +global $cache_acceptable_files, $wp_super_cache_comments; +global $wp_super_cache_front_page_check, $wp_super_cache_front_page_clear; +global $wp_super_cache_front_page_text, $wp_super_cache_front_page_notification; +global $wpsc_plugins, $wpsc_cookies, $wpsc_version, $wp_cache_clear_on_post_edit; +// phpcs:enable VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable +// Check is cache config already loaded. +if ( ! isset( $cache_enabled, $super_cache_enabled, $wp_cache_mod_rewrite, $cache_path ) && + empty( $wp_cache_phase1_loaded ) && + // phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + ! @include( $wp_cache_config_file ) +) { + @include $wp_cache_config_file_sample; // phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged +} + +include(WPCACHEHOME . 'wp-cache-base.php'); +if ( class_exists( 'WP_REST_Controller' ) ) { + include( __DIR__. '/rest/load.php' ); +} + +function wp_super_cache_init_action() { + + load_plugin_textdomain( 'wp-super-cache', false, basename( __DIR__ ) . '/languages' ); + + wpsc_register_post_hooks(); +} +add_action( 'init', 'wp_super_cache_init_action' ); + +/** + * Disable caching for pages rendered via wp_die(). + * + * The function wp_die() is used to render error and interstitial pages (e.g. + * "Error establishing a database connection"); caching them causes the error to + * persist for subsequent visitors even after the underlying issue is resolved. + * + * @param callable $handler The registered wp_die handler, returned unchanged. + * @return callable + */ +function wpsc_wp_die_disable_cache( $handler ) { + /** + * Filters whether to disable caching when wp_die() is invoked. + * + * @param bool $disable Whether to set DONOTCACHEPAGE. Default true. + */ + if ( apply_filters( 'wpsc_disable_cache_on_wp_die', true ) && ! defined( 'DONOTCACHEPAGE' ) ) { + define( 'DONOTCACHEPAGE', true ); + } + return $handler; +} +add_filter( 'wp_die_handler', 'wpsc_wp_die_disable_cache' ); + +function wp_cache_set_home() { + global $wp_cache_is_home; + $wp_cache_is_home = ( is_front_page() || is_home() ); + if ( $wp_cache_is_home && is_paged() ) + $wp_cache_is_home = false; +} +add_action( 'template_redirect', 'wp_cache_set_home' ); + +function wpsc_enqueue_styles() { + wp_enqueue_style( + 'wpsc_styles', + plugins_url( 'styling/dashboard.css', __FILE__ ), + array(), + filemtime( plugin_dir_path( __FILE__ ) . 'styling/dashboard.css' ) + ); +} + +// Check for the page parameter to see if we're on a WPSC page. +// phpcs:ignore WordPress.Security.NonceVerification.Recommended +if ( isset( $_GET['page'] ) && $_GET['page'] === 'wpsupercache' ) { + add_action( 'admin_enqueue_scripts', 'wpsc_enqueue_styles' ); +} + +// OSSDL CDN plugin (https://wordpress.org/plugins/ossdl-cdn-off-linker/) +include_once( WPCACHEHOME . 'ossdl-cdn.php' ); + +function get_wpcachehome() { + if ( function_exists( '_deprecated_function' ) ) { + _deprecated_function( __FUNCTION__, 'WP Super Cache 1.6.5' ); + } + + if ( ! defined( 'WPCACHEHOME' ) ) { + if ( is_file( __DIR__ . '/wp-cache-config-sample.php' ) ) { + define( 'WPCACHEHOME', trailingslashit( __DIR__ ) ); + } elseif ( is_file( __DIR__ . '/wp-super-cache/wp-cache-config-sample.php' ) ) { + define( 'WPCACHEHOME', __DIR__ . '/wp-super-cache/' ); + } else { + die( sprintf( esc_html__( 'Please create %s/wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php', 'wp-super-cache' ), esc_attr( WPCACHECONFIGPATH ) ) ); + } + } +} + +function wpsc_remove_advanced_cache() { + global $wpsc_advanced_cache_filename; + if ( file_exists( $wpsc_advanced_cache_filename ) ) { + $file = file_get_contents( $wpsc_advanced_cache_filename ); + if ( + strpos( $file, "WP SUPER CACHE 0.8.9.1" ) || + strpos( $file, "WP SUPER CACHE 1.2" ) + ) { + unlink( $wpsc_advanced_cache_filename ); + } + } +} + +function wpsupercache_uninstall() { + global $wp_cache_config_file, $cache_path; + + wpsc_remove_advanced_cache(); + + if ( file_exists( $wp_cache_config_file ) ) { + unlink( $wp_cache_config_file ); + } + + wp_cache_remove_index(); + + if ( ! empty( $cache_path ) ) { + @unlink( $cache_path . '.htaccess' ); + @unlink( $cache_path . 'meta' ); + @unlink( $cache_path . 'supercache' ); + } + + wp_clear_scheduled_hook( 'wp_cache_check_site_hook' ); + wp_clear_scheduled_hook( 'wp_cache_gc' ); + wp_clear_scheduled_hook( 'wp_cache_gc_watcher' ); + wp_cache_disable_plugin(); + delete_site_option( 'wp_super_cache_index_detected' ); +} +if ( is_admin() ) { + register_uninstall_hook( __FILE__, 'wpsupercache_uninstall' ); +} + +function wpsupercache_deactivate() { + global $wp_cache_config_file, $wpsc_advanced_cache_filename, $cache_path; + + wpsc_remove_advanced_cache(); + + if ( ! empty( $cache_path ) ) { + prune_super_cache( $cache_path, true ); + wp_cache_remove_index(); + @unlink( $cache_path . '.htaccess' ); + @unlink( $cache_path . 'meta' ); + @unlink( $cache_path . 'supercache' ); + } + + wp_clear_scheduled_hook( 'wp_cache_check_site_hook' ); + wp_clear_scheduled_hook( 'wp_cache_gc' ); + wp_clear_scheduled_hook( 'wp_cache_gc_watcher' ); + wp_cache_replace_line('^ *\$cache_enabled', '$cache_enabled = false;', $wp_cache_config_file); + wp_cache_disable_plugin( false ); // don't delete configuration file + delete_user_option( get_current_user_id(), 'wpsc_dismissed_boost_banner' ); +} +register_deactivation_hook( __FILE__, 'wpsupercache_deactivate' ); + +function wpsupercache_activate() { + global $cache_path; + if ( ! isset( $cache_path ) || $cache_path == '' ) + $cache_path = WP_CONTENT_DIR . '/cache/'; // from sample config file + + ob_start(); + wpsc_init(); + + if ( + ! wp_cache_verify_cache_dir() || + ! wpsc_check_advanced_cache() || + ! wp_cache_verify_config_file() + ) { + $text = ob_get_contents(); + ob_end_clean(); + return false; + } + $text = ob_get_contents(); + wp_cache_check_global_config(); + ob_end_clean(); + wp_schedule_single_event( time() + 10, 'wp_cache_add_site_cache_index' ); +} +register_activation_hook( __FILE__, 'wpsupercache_activate' ); + +function wpsupercache_site_admin() { + return current_user_can( 'setup_network' ); +} + +function wp_cache_add_pages() { + if ( wpsupercache_site_admin() ) { + // In single or MS mode add this menu item too, but only for superadmins in MS mode. + add_options_page( 'WP Super Cache', 'WP Super Cache', 'manage_options', 'wpsupercache', 'wp_cache_manager' ); + } +} +add_action( 'admin_menu', 'wp_cache_add_pages' ); + + +function wp_cache_network_pages() { + add_submenu_page( 'settings.php', 'WP Super Cache', 'WP Super Cache', 'manage_options', 'wpsupercache', 'wp_cache_manager' ); +} +add_action( 'network_admin_menu', 'wp_cache_network_pages' ); + +/** + * Load JavaScript on admin pages. + */ +function wp_super_cache_admin_enqueue_scripts( $hook ) { + if ( 'settings_page_wpsupercache' !== $hook ) { + return; + } + + wp_enqueue_script( + 'wp-super-cache-admin', + trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/admin.js', + array( 'jquery' ), + WPSC_VERSION_ID, + false + ); + + wp_localize_script( + 'wp-super-cache-admin', + 'wpscAdmin', + array( + 'boostNoticeDismissNonce' => wp_create_nonce( 'wpsc_dismiss_boost_notice' ), + 'boostDismissNonce' => wp_create_nonce( 'wpsc_dismiss_boost_banner' ), + 'boostInstallNonce' => wp_create_nonce( 'updates' ), + 'boostActivateNonce' => wp_create_nonce( 'activate-boost' ), + ) + ); +} +add_action( 'admin_enqueue_scripts', 'wp_super_cache_admin_enqueue_scripts' ); + +/** + * Use the standard WordPress plugin installation ajax handler. + */ +add_action( 'wp_ajax_wpsc_install_plugin', 'wp_ajax_install_plugin' ); + +/** + * Check if Jetpack Boost has been installed. + */ +function wpsc_is_boost_installed() { + $plugins = array_keys( get_plugins() ); + + foreach ( $plugins as $plugin ) { + if ( str_contains( $plugin, 'jetpack-boost/jetpack-boost.php' ) ) { + return true; + } + } + + return false; +} + +/** + * Check if Jetpack Boost is active. + */ +function wpsc_is_boost_active() { + return class_exists( '\Automattic\Jetpack_Boost\Jetpack_Boost' ); +} + +/** + * Admin ajax action: hide the Boost Banner. + */ +function wpsc_hide_boost_banner() { + check_ajax_referer( 'wpsc_dismiss_boost_banner', 'nonce' ); + update_user_option( get_current_user_id(), 'wpsc_dismissed_boost_banner', '1' ); + + wp_die(); +} +add_action( 'wp_ajax_wpsc-hide-boost-banner', 'wpsc_hide_boost_banner' ); + +/** + * Admin ajax action: activate Jetpack Boost. + */ +function wpsc_ajax_activate_boost() { + check_ajax_referer( 'activate-boost' ); + + if ( ! isset( $_POST['source'] ) ) { + wp_send_json_error( 'no source specified', null, JSON_UNESCAPED_SLASHES ); + } + + $source = sanitize_text_field( wp_unslash( $_POST['source'] ) ); + $result = activate_plugin( 'jetpack-boost/jetpack-boost.php' ); + if ( is_wp_error( $result ) ) { + wp_send_json_error( $result->get_error_message(), null, JSON_UNESCAPED_SLASHES ); + } + + wpsc_notify_migration_to_boost( $source ); + + wp_send_json_success( null, null, JSON_UNESCAPED_SLASHES ); +} +add_action( 'wp_ajax_wpsc_activate_boost', 'wpsc_ajax_activate_boost' ); + +/** + * Show a Jetpack Boost installation banner (unless dismissed or installed) + */ +function wpsc_jetpack_boost_install_banner() { + if ( ! wpsc_is_boost_current() ) { + return; + } + // Don't show the banner if Boost is installed, or the banner has been dismissed. + $is_dismissed = '1' === get_user_option( 'wpsc_dismissed_boost_banner' ); + if ( wpsc_is_boost_active() || $is_dismissed ) { + return; + } + + $config = wpsc_get_boost_migration_config(); + $button_url = $config['is_installed'] ? $config['activate_url'] : $config['install_url']; + $button_label = $config['is_installed'] ? __( 'Set up Jetpack Boost', 'wp-super-cache' ) : __( 'Install Jetpack Boost', 'wp-super-cache' ); + $button_class = $config['is_installed'] ? 'wpsc-activate-boost-button' : 'wpsc-install-boost-button'; + $plugin_url = plugin_dir_url( __FILE__ ); + + ?> +
    +
    +
    + + +

    + +

    + +

    + +

    + + + + +
    + +
    + <?php esc_attr_e( 'An image showing the Jetpack Boost dashboard.', 'wp-super-cache' ); ?> +
    +
    + + +
    +

    ' . esc_html__( 'Warning! PHP Safe Mode Enabled!', 'wp-super-cache' ) . '

    '; + echo '

    ' . esc_html__( 'You may experience problems running this plugin because SAFE MODE is enabled.', 'wp-super-cache' ) . '
    '; + + // phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.safe_mode_gidDeprecatedRemoved -- Version is checked before access. + if ( ! ini_get( 'safe_mode_gid' ) ) { // @codingStandardsIgnoreLine + esc_html_e( 'Your server is set up to check the owner of PHP scripts before allowing them to read and write files.', 'wp-super-cache' ); + echo '
    '; + printf( __( 'You or an administrator may be able to make it work by changing the group owner of the plugin scripts to match that of the web server user. The group owner of the %s/cache/ directory must also be changed. See the safe mode manual page for further details.', 'wp-super-cache' ), esc_attr( WP_CONTENT_DIR ) ); + } else { + _e( 'You or an administrator must disable this. See the safe mode manual page for further details. This cannot be disabled in a .htaccess file unfortunately. It must be done in the php.ini config file.', 'wp-super-cache' ); + } + echo '

    '; + } + + if ( '' == get_option( 'permalink_structure' ) ) { + echo '

    ' . __( 'Permlink Structure Error', 'wp-super-cache' ) . '

    '; + echo "

    " . __( 'A custom url or permalink structure is required for this plugin to work correctly. Please go to the Permalinks Options Page to configure your permalinks.', 'wp-super-cache' ) . "

    "; + echo '
    '; + return false; + } + + if ( $wp_cache_debug || ! $wp_cache_cron_check ) { + if ( defined( 'DISABLE_WP_CRON' ) && constant( 'DISABLE_WP_CRON' ) ) { + ?> +

    +

    +
    +

    +

    +

    Troubleshooting section of the readme.txt', 'wp-super-cache' ), 'https://wordpress.org/plugins/wp-super-cache/faq/' ); ?>

    +
    + 0.01, 'blocking' => true)); + if( is_array( $cron ) ) { + if( $cron[ 'response' ][ 'code' ] == '404' ) { + ?>

    Warning! wp-cron.php not found!

    +

    +

    Troubleshooting section of the readme.txt', 'wp-super-cache' ), 'https://wordpress.org/plugins/wp-super-cache/faq/' ); ?>

    +
    + ' . __( "Cannot continue... fix previous problems and retry.", 'wp-super-cache' ) . '

    '; + return false; + } + + if ( false == function_exists( 'wpsc_deep_replace' ) ) { + $msg = __( 'Warning! You must set WP_CACHE and WPCACHEHOME in your wp-config.php for this plugin to work correctly:' ) . '
    '; + $msg .= "define( 'WP_CACHE', true );
    "; + $msg .= "define( 'WPCACHEHOME', '" . __DIR__ . "/' );
    "; + wp_die( $msg ); + } + + if (!wp_cache_check_global_config()) { + return false; + } + + if ( 1 == ini_get( 'zlib.output_compression' ) || "on" == strtolower( ini_get( 'zlib.output_compression' ) ) ) { + ?>

    +

    this page for instructions on modifying your php.ini.', 'wp-super-cache' ); ?>

    +

    +

    %s/wp-cache-config.php and cannot be modified. That file must be writeable by the web server to make any changes.', 'wp-super-cache' ), WPCACHECONFIGPATH ); ?> +

    +

    This page explains how to change file permissions.', 'wp-super-cache' ); ?>

    + chmod 666 /wp-cache-config.php
    + chmod 644 /wp-cache-config.php

    +

    +

    this form to enable it.', 'wp-super-cache' ); ?>

    +
    + + + + ' /> + +
    +
    +

    +

    chmod 755 /

    +

    This page explains how to change file permissions.', 'wp-super-cache' ); ?>

    +
    + + + + ' /> + +
    +
    +

    ' . esc_html__( 'Mobile rewrite rules detected', 'wp-super-cache' ) . '

    '; + echo '

    ' . esc_html__( 'For best performance you should enable "Mobile device support" or delete the mobile rewrite rules in your .htaccess. Look for the 2 lines with the text "2.0\ MMP|240x320" and delete those.', 'wp-super-cache' ) . '

    ' . esc_html__( 'This will have no affect on ordinary users but mobile users will see uncached pages.', 'wp-super-cache' ) . '

    '; + } elseif ( + $wp_cache_mod_rewrite + && $cache_enabled + && $wp_cache_mobile_enabled + && $scrules != '' // phpcs:ignore Universal.Operators.StrictComparisons.LooseNotEqual + && ( + ( + '' != $wp_cache_mobile_prefixes // phpcs:ignore Universal.Operators.StrictComparisons.LooseNotEqual + && ! str_contains( $scrules, addcslashes( str_replace( ', ', '|', $wp_cache_mobile_prefixes ), ' ' ) ) + ) + || ( + '' != $wp_cache_mobile_browsers // phpcs:ignore Universal.Operators.StrictComparisons.LooseNotEqual + && ! str_contains( $scrules, addcslashes( str_replace( ', ', '|', $wp_cache_mobile_browsers ), ' ' ) ) + ) + ) + ) { + ?> +

    +

    +

    +
    1. +
    2. Update Mod_Rewrite Rules button.', 'wp-super-cache' ); ?>
    3. +
    4. + # BEGIN WPSuperCache and # END WPSuperCache and let the plugin regenerate them by reloading this page.', 'wp-super-cache' ), array( 'code' => array() ) ), esc_html( $home_path ) ); + ?> +
    5. +
    6. + # BEGIN WPSuperCache and # END WPSuperCache. There are two sections that look very similar. Just below the line %%{HTTP:Cookie} !^.*(comment_author_|%2$s|wp-postpass_).*$ add these lines: (do it twice, once for each section)', 'wp-super-cache' ), array( 'code' => array() ) ), esc_html( $home_path ), esc_html( wpsc_get_logged_in_cookie() ) ); + ?> +

      +
    +

    +

    + Update Mod_Rewrite Rules button.', 'wp-super-cache' ); ?>

    + __( 'Required to serve compressed supercache files properly.', 'wp-super-cache' ), 'mod_headers' => __( 'Required to set caching information on supercache pages. IE7 users will see old pages without this module.', 'wp-super-cache' ), 'mod_expires' => __( 'Set the expiry date on supercached pages. Visitors may not see new pages when they refresh or leave comments without this module.', 'wp-super-cache' ) ); + foreach( $required_modules as $req => $desc ) { + if( !in_array( $req, $mods ) ) { + $missing_mods[ $req ] = $desc; + } + } + if( isset( $missing_mods) && is_array( $missing_mods ) ) { + ?>

    +

    "; + foreach( $missing_mods as $req => $desc ) { + echo "
  • $req - $desc
  • "; + } + echo ""; + echo "
    "; + } + } + + if ( $valid_nonce && isset( $_POST[ 'action' ] ) && $_POST[ 'action' ] == 'dismiss_htaccess_warning' ) { + wp_cache_replace_line('^ *\$dismiss_htaccess_warning', "\$dismiss_htaccess_warning = 1;", $wp_cache_config_file); + $dismiss_htaccess_warning = 1; + } elseif ( !isset( $dismiss_htaccess_warning ) ) { + $dismiss_htaccess_warning = 0; + } + if ( ! $is_nginx && $dismiss_htaccess_warning == 0 && $wp_cache_mod_rewrite && $super_cache_enabled && get_option( 'siteurl' ) != get_option( 'home' ) ) { // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual,Universal.Operators.StrictComparisons.LooseNotEqual + ?> +

    +

    here. Unfortunately, WordPress writes to the .htaccess in the install directory, not where your site is served from.
    When you update the rewrite rules in this plugin you will have to copy the file to where your site is hosted. This will be fixed in the future.', 'wp-super-cache' ); ?>

    +
    + + + + ' /> + +
    +
    \'\"\r\n\t\(\)\$\[\];#]/', '', $new_cache_path ); + wp_cache_replace_line('^ *\$cache_path', "\$cache_path = " . var_export( $cache_path, true ) . ";", $wp_cache_config_file); + } + + if( isset( $_POST[ 'wp_super_cache_late_init' ] ) ) { + $wp_super_cache_late_init = 1; + } else { + $wp_super_cache_late_init = 0; + } + wp_cache_replace_line('^ *\$wp_super_cache_late_init', "\$wp_super_cache_late_init = " . $wp_super_cache_late_init . ";", $wp_cache_config_file); + + if( isset( $_POST[ 'wp_cache_disable_utf8' ] ) ) { + $wp_cache_disable_utf8 = 1; + } else { + $wp_cache_disable_utf8 = 0; + } + wp_cache_replace_line('^ *\$wp_cache_disable_utf8', "\$wp_cache_disable_utf8 = " . $wp_cache_disable_utf8 . ";", $wp_cache_config_file); + + if( isset( $_POST[ 'wp_cache_no_cache_for_get' ] ) ) { + $wp_cache_no_cache_for_get = 1; + } else { + $wp_cache_no_cache_for_get = 0; + } + wp_cache_replace_line('^ *\$wp_cache_no_cache_for_get', "\$wp_cache_no_cache_for_get = " . $wp_cache_no_cache_for_get . ";", $wp_cache_config_file); + + if( isset( $_POST[ 'wp_supercache_304' ] ) ) { + $wp_supercache_304 = 1; + } else { + $wp_supercache_304 = 0; + } + wp_cache_replace_line('^ *\$wp_supercache_304', "\$wp_supercache_304 = " . $wp_supercache_304 . ";", $wp_cache_config_file); + + if( isset( $_POST[ 'wp_cache_mfunc_enabled' ] ) ) { + $wp_cache_mfunc_enabled = 1; + } else { + $wp_cache_mfunc_enabled = 0; + } + wp_cache_replace_line('^ *\$wp_cache_mfunc_enabled', "\$wp_cache_mfunc_enabled = " . $wp_cache_mfunc_enabled . ";", $wp_cache_config_file); + + if( isset( $_POST[ 'wp_cache_mobile_enabled' ] ) ) { + $wp_cache_mobile_enabled = 1; + } else { + $wp_cache_mobile_enabled = 0; + } + wp_cache_replace_line('^ *\$wp_cache_mobile_enabled', "\$wp_cache_mobile_enabled = " . $wp_cache_mobile_enabled . ";", $wp_cache_config_file); + + if( isset( $_POST[ 'wp_cache_front_page_checks' ] ) ) { + $wp_cache_front_page_checks = 1; + } else { + $wp_cache_front_page_checks = 0; + } + wp_cache_replace_line('^ *\$wp_cache_front_page_checks', "\$wp_cache_front_page_checks = " . $wp_cache_front_page_checks . ";", $wp_cache_config_file); + + if( isset( $_POST[ 'wp_supercache_cache_list' ] ) ) { + $wp_supercache_cache_list = 1; + } else { + $wp_supercache_cache_list = 0; + } + wp_cache_replace_line('^ *\$wp_supercache_cache_list', "\$wp_supercache_cache_list = " . $wp_supercache_cache_list . ";", $wp_cache_config_file); + + if ( isset( $_POST[ 'wp_cache_enabled' ] ) ) { + wp_cache_enable(); + if ( ! defined( 'DISABLE_SUPERCACHE' ) ) { + wp_cache_debug( 'DISABLE_SUPERCACHE is not set, super_cache enabled.' ); + wp_super_cache_enable(); + $super_cache_enabled = true; + } + } else { + wp_cache_disable(); + wp_super_cache_disable(); + $super_cache_enabled = false; + } + + if ( isset( $_POST[ 'wp_cache_mod_rewrite' ] ) && $_POST[ 'wp_cache_mod_rewrite' ] == 1 ) { + $wp_cache_mod_rewrite = 1; + add_mod_rewrite_rules(); + } else { + $wp_cache_mod_rewrite = 0; // cache files served by PHP + remove_mod_rewrite_rules(); + } + wp_cache_setting( 'wp_cache_mod_rewrite', $wp_cache_mod_rewrite ); + + if( isset( $_POST[ 'wp_cache_clear_on_post_edit' ] ) ) { + $wp_cache_clear_on_post_edit = 1; + } else { + $wp_cache_clear_on_post_edit = 0; + } + wp_cache_replace_line('^ *\$wp_cache_clear_on_post_edit', "\$wp_cache_clear_on_post_edit = " . $wp_cache_clear_on_post_edit . ";", $wp_cache_config_file); + + if( isset( $_POST[ 'cache_rebuild_files' ] ) ) { + $cache_rebuild_files = 1; + } else { + $cache_rebuild_files = 0; + } + wp_cache_replace_line('^ *\$cache_rebuild_files', "\$cache_rebuild_files = " . $cache_rebuild_files . ";", $wp_cache_config_file); + + if ( isset( $_POST[ 'wpsc_save_headers' ] ) ) { + $wpsc_save_headers = 1; + } else { + $wpsc_save_headers = 0; + } + wp_cache_replace_line('^ *\$wpsc_save_headers', "\$wpsc_save_headers = " . $wpsc_save_headers . ";", $wp_cache_config_file); + + if( isset( $_POST[ 'wp_cache_mutex_disabled' ] ) ) { + $wp_cache_mutex_disabled = 0; + } else { + $wp_cache_mutex_disabled = 1; + } + if( defined( 'WPSC_DISABLE_LOCKING' ) ) { + $wp_cache_mutex_disabled = 1; + } + wp_cache_replace_line('^ *\$wp_cache_mutex_disabled', "\$wp_cache_mutex_disabled = " . $wp_cache_mutex_disabled . ";", $wp_cache_config_file); + + if ( isset( $_POST['wp_cache_not_logged_in'] ) && $_POST['wp_cache_not_logged_in'] != 0 ) { + if ( $wp_cache_not_logged_in == 0 && function_exists( 'prune_super_cache' ) ) { + prune_super_cache( $cache_path, true ); + } + $wp_cache_not_logged_in = (int)$_POST['wp_cache_not_logged_in']; + } else { + $wp_cache_not_logged_in = 0; + } + wp_cache_replace_line('^ *\$wp_cache_not_logged_in', "\$wp_cache_not_logged_in = " . $wp_cache_not_logged_in . ";", $wp_cache_config_file); + + if( isset( $_POST[ 'wp_cache_make_known_anon' ] ) ) { + if( $wp_cache_make_known_anon == 0 && function_exists( 'prune_super_cache' ) ) + prune_super_cache ($cache_path, true); + $wp_cache_make_known_anon = 1; + } else { + $wp_cache_make_known_anon = 0; + } + wp_cache_replace_line('^ *\$wp_cache_make_known_anon', "\$wp_cache_make_known_anon = " . $wp_cache_make_known_anon . ";", $wp_cache_config_file); + + if( isset( $_POST[ 'wp_cache_refresh_single_only' ] ) ) { + $wp_cache_refresh_single_only = 1; + } else { + $wp_cache_refresh_single_only = 0; + } + wp_cache_setting( 'wp_cache_refresh_single_only', $wp_cache_refresh_single_only ); + + if ( defined( 'WPSC_DISABLE_COMPRESSION' ) ) { + $cache_compression = 0; + wp_cache_replace_line('^ *\$cache_compression', "\$cache_compression = " . $cache_compression . ";", $wp_cache_config_file); + } else { + if ( isset( $_POST[ 'cache_compression' ] ) ) { + $new_cache_compression = 1; + } else { + $new_cache_compression = 0; + } + if ( 1 == ini_get( 'zlib.output_compression' ) || "on" == strtolower( ini_get( 'zlib.output_compression' ) ) ) { + echo '
    ' . __( "Warning! You attempted to enable compression but zlib.output_compression is enabled. See #21 in the Troubleshooting section of the readme file.", 'wp-super-cache' ) . '
    '; + } elseif ( $new_cache_compression !== (int) $cache_compression ) { + $cache_compression = $new_cache_compression; + wp_cache_replace_line( '^ *\$cache_compression', "\$cache_compression = $cache_compression;", $wp_cache_config_file ); + if ( function_exists( 'prune_super_cache' ) ) { + prune_super_cache( $cache_path, true ); + } + delete_option( 'super_cache_meta' ); + } + } + } +} +if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'wpsupercache' ) + add_action( 'admin_init', 'wp_cache_manager_updates' ); + +function wp_cache_manager() { + global $wp_cache_config_file, $valid_nonce, $supercachedir, $cache_path, $cache_enabled, $cache_compression, $super_cache_enabled; + global $wp_cache_clear_on_post_edit, $cache_rebuild_files, $wp_cache_mutex_disabled, $wp_cache_mobile_enabled, $wp_cache_mobile_browsers, $wp_cache_no_cache_for_get; + global $wp_cache_not_logged_in, $wp_cache_make_known_anon, $wp_supercache_cache_list, $cache_page_secret; + global $wp_super_cache_front_page_check, $wp_cache_refresh_single_only, $wp_cache_mobile_prefixes; + global $wp_cache_mod_rewrite, $wp_supercache_304, $wp_super_cache_late_init, $wp_cache_front_page_checks, $wp_cache_disable_utf8, $wp_cache_mfunc_enabled; + global $wp_super_cache_comments, $wp_cache_home_path, $wpsc_save_headers, $is_nginx; + global $wpsc_promo_links; + + if ( !wpsupercache_site_admin() ) + return false; + + // used by mod_rewrite rules and config file + if ( function_exists( "cfmobi_default_browsers" ) ) { + $wp_cache_mobile_browsers = cfmobi_default_browsers( "mobile" ); + $wp_cache_mobile_browsers = array_merge( $wp_cache_mobile_browsers, cfmobi_default_browsers( "touch" ) ); + } elseif ( function_exists( 'lite_detection_ua_contains' ) ) { + $wp_cache_mobile_browsers = explode( '|', lite_detection_ua_contains() ); + } else { + $wp_cache_mobile_browsers = array( '2.0 MMP', '240x320', '400X240', 'AvantGo', 'BlackBerry', 'Blazer', 'Cellphone', 'Danger', 'DoCoMo', 'Elaine/3.0', 'EudoraWeb', 'Googlebot-Mobile', 'hiptop', 'IEMobile', 'KYOCERA/WX310K', 'LG/U990', 'MIDP-2.', 'MMEF20', 'MOT-V', 'NetFront', 'Newt', 'Nintendo Wii', 'Nitro', 'Nokia', 'Opera Mini', 'Palm', 'PlayStation Portable', 'portalmmm', 'Proxinet', 'ProxiNet', 'SHARP-TQ-GX10', 'SHG-i900', 'Small', 'SonyEricsson', 'Symbian OS', 'SymbianOS', 'TS21i-10', 'UP.Browser', 'UP.Link', 'webOS', 'Windows CE', 'WinWAP', 'YahooSeeker/M1A1-R2D2', 'iPhone', 'iPod', 'iPad', 'Android', 'BlackBerry9530', 'LG-TU915 Obigo', 'LGE VX', 'webOS', 'Nokia5800' ); + } + if ( function_exists( "lite_detection_ua_prefixes" ) ) { + $wp_cache_mobile_prefixes = lite_detection_ua_prefixes(); + } else { + $wp_cache_mobile_prefixes = array( 'w3c ', 'w3c-', 'acs-', 'alav', 'alca', 'amoi', 'audi', 'avan', 'benq', 'bird', 'blac', 'blaz', 'brew', 'cell', 'cldc', 'cmd-', 'dang', 'doco', 'eric', 'hipt', 'htc_', 'inno', 'ipaq', 'ipod', 'jigs', 'kddi', 'keji', 'leno', 'lg-c', 'lg-d', 'lg-g', 'lge-', 'lg/u', 'maui', 'maxo', 'midp', 'mits', 'mmef', 'mobi', 'mot-', 'moto', 'mwbp', 'nec-', 'newt', 'noki', 'palm', 'pana', 'pant', 'phil', 'play', 'port', 'prox', 'qwap', 'sage', 'sams', 'sany', 'sch-', 'sec-', 'send', 'seri', 'sgh-', 'shar', 'sie-', 'siem', 'smal', 'smar', 'sony', 'sph-', 'symb', 't-mo', 'teli', 'tim-', 'tosh', 'tsm-', 'upg1', 'upsi', 'vk-v', 'voda', 'wap-', 'wapa', 'wapi', 'wapp', 'wapr', 'webc', 'winw', 'winw', 'xda ', 'xda-' ); // from http://svn.wp-plugins.org/wordpress-mobile-pack/trunk/plugins/wpmp_switcher/lite_detection.php + } + $wp_cache_mobile_browsers = apply_filters( 'cached_mobile_browsers', $wp_cache_mobile_browsers ); // Allow mobile plugins access to modify the mobile UA list + $wp_cache_mobile_prefixes = apply_filters( 'cached_mobile_prefixes', $wp_cache_mobile_prefixes ); // Allow mobile plugins access to modify the mobile UA prefix list + if ( function_exists( 'do_cacheaction' ) ) { + $wp_cache_mobile_browsers = do_cacheaction( 'wp_super_cache_mobile_browsers', $wp_cache_mobile_browsers ); + $wp_cache_mobile_prefixes = do_cacheaction( 'wp_super_cache_mobile_prefixes', $wp_cache_mobile_prefixes ); + } + $mobile_groups = apply_filters( 'cached_mobile_groups', array() ); // Group mobile user agents by capabilities. Lump them all together by default + // mobile_groups = array( 'apple' => array( 'ipod', 'iphone' ), 'nokia' => array( 'nokia5800', 'symbianos' ) ); + + $wp_cache_mobile_browsers = implode( ', ', $wp_cache_mobile_browsers ); + $wp_cache_mobile_prefixes = implode( ', ', $wp_cache_mobile_prefixes ); + + if ( false == apply_filters( 'wp_super_cache_error_checking', true ) ) + return false; + + if ( function_exists( 'get_supercache_dir' ) ) + $supercachedir = get_supercache_dir(); + if( get_option( 'gzipcompression' ) == 1 ) + update_option( 'gzipcompression', 0 ); + if( !isset( $cache_rebuild_files ) ) + $cache_rebuild_files = 0; + + $valid_nonce = isset($_REQUEST['_wpnonce']) ? wp_verify_nonce($_REQUEST['_wpnonce'], 'wp-cache') : false; + /* http://www.netlobo.com/div_hiding.html */ + ?> + + + +
    +'; + echo ''; + + // Set a default. + if ( false === $cache_enabled && ! isset( $wp_cache_mod_rewrite ) ) { + $wp_cache_mod_rewrite = 0; + } elseif ( ! isset( $wp_cache_mod_rewrite ) && $cache_enabled && $super_cache_enabled ) { + $wp_cache_mod_rewrite = 1; + } + + $admin_url = admin_url( 'options-general.php?page=wpsupercache' ); + $curr_tab = ! empty( $_GET['tab'] ) ? sanitize_text_field( stripslashes( $_GET['tab'] ) ) : ''; // WPCS: sanitization ok. + if ( empty( $curr_tab ) ) { + $curr_tab = 'easy'; + if ( $wp_cache_mod_rewrite ) { + $curr_tab = 'settings'; + echo '

    ' . __( 'Notice: Expert mode caching enabled. Showing Advanced Settings Page by default.', 'wp-super-cache' ) . '

    '; + } + } + + if ( 'preload' === $curr_tab ) { + if ( true == $super_cache_enabled && ! defined( 'DISABLESUPERCACHEPRELOADING' ) ) { + global $wp_cache_preload_interval, $wp_cache_preload_on, $wp_cache_preload_taxonomies, $wp_cache_preload_email_me, $wp_cache_preload_email_volume, $wp_cache_preload_posts, $wpdb; + wpsc_preload_settings(); + $currently_preloading = false; + + echo '
    '; + } + } + + wpsc_admin_tabs( $curr_tab ); + echo '
    '; + + if ( isset( $wp_super_cache_front_page_check ) && $wp_super_cache_front_page_check == 1 && ! wp_next_scheduled( 'wp_cache_check_site_hook' ) ) { + wp_schedule_single_event( time() + 360, 'wp_cache_check_site_hook' ); + wp_cache_debug( 'scheduled wp_cache_check_site_hook for 360 seconds time.', 2 ); + } + + if ( isset( $_REQUEST['wp_restore_config'] ) && $valid_nonce ) { + unlink( $wp_cache_config_file ); + echo '' . esc_html__( 'Configuration file changed, some values might be wrong. Load the page again from the "Settings" menu to reset them.', 'wp-super-cache' ) . ''; + } + + if ( substr( get_option( 'permalink_structure' ), -1 ) == '/' ) { + wp_cache_replace_line( '^ *\$wp_cache_slash_check', "\$wp_cache_slash_check = 1;", $wp_cache_config_file ); + } else { + wp_cache_replace_line( '^ *\$wp_cache_slash_check', "\$wp_cache_slash_check = 0;", $wp_cache_config_file ); + } + $home_path = parse_url( site_url() ); + $home_path = trailingslashit( array_key_exists( 'path', $home_path ) ? $home_path['path'] : '' ); + if ( ! isset( $wp_cache_home_path ) ) { + $wp_cache_home_path = '/'; + wp_cache_setting( 'wp_cache_home_path', '/' ); + } + if ( "$home_path" != "$wp_cache_home_path" ) { + wp_cache_setting( 'wp_cache_home_path', $home_path ); + } + + if ( $wp_cache_mobile_enabled == 1 ) { + update_cached_mobile_ua_list( $wp_cache_mobile_browsers, $wp_cache_mobile_prefixes, $mobile_groups ); + } + + ?> + + +
    + + '; + wp_cache_files(); + break; + case 'preload': + wpsc_render_partial( + 'preload', + compact( + 'cache_enabled', + 'super_cache_enabled', + 'admin_url', + 'wp_cache_preload_interval', + 'wp_cache_preload_on', + 'wp_cache_preload_taxonomies', + 'wp_cache_preload_email_me', + 'wp_cache_preload_email_volume', + 'currently_preloading', + 'wp_cache_preload_posts' + ) + ); + + break; + case 'plugins': + wpsc_plugins_tab(); + break; + case 'debug': + global $wp_super_cache_debug, $wp_cache_debug_log, $wp_cache_debug_ip, $wp_cache_debug_ip; + global $wp_super_cache_front_page_text, $wp_super_cache_front_page_notification; + global $wp_super_cache_advanced_debug, $wp_cache_debug_username, $wp_super_cache_front_page_clear; + wpsc_render_partial( + 'debug', + compact( 'wp_super_cache_debug', 'wp_cache_debug_log', 'wp_cache_debug_ip', 'cache_path', 'valid_nonce', 'wp_cache_config_file', 'wp_super_cache_comments', 'wp_super_cache_front_page_check', 'wp_super_cache_front_page_clear', 'wp_super_cache_front_page_text', 'wp_super_cache_front_page_notification', 'wp_super_cache_advanced_debug', 'wp_cache_debug_username', 'wp_cache_home_path' ) + ); + break; + case 'settings': + global $cache_acceptable_files, $wpsc_rejected_cookies, $cache_rejected_uri, $wp_cache_pages; + global $cache_max_time, $wp_cache_config_file, $valid_nonce, $super_cache_enabled, $cache_schedule_type, $cache_scheduled_time, $cache_schedule_interval, $cache_time_interval, $cache_gc_email_me, $wp_cache_preload_on; + + wp_cache_update_rejected_pages(); + wp_cache_update_rejected_cookies(); + wp_cache_update_rejected_strings(); + wp_cache_update_accepted_strings(); + wp_cache_time_update(); + + wpsc_render_partial( + 'advanced', + compact( + 'wp_cache_front_page_checks', + 'admin_url', + 'cache_enabled', + 'super_cache_enabled', + 'wp_cache_mod_rewrite', + 'is_nginx', + 'wp_cache_not_logged_in', + 'wp_cache_no_cache_for_get', + 'cache_compression', + 'cache_rebuild_files', + 'wpsc_save_headers', + 'wp_supercache_304', + 'wp_cache_make_known_anon', + 'wp_cache_mfunc_enabled', + 'wp_cache_mobile_enabled', + 'wp_cache_mobile_browsers', + 'wp_cache_disable_utf8', + 'wp_cache_clear_on_post_edit', + 'wp_cache_front_page_checks', + 'wp_cache_refresh_single_only', + 'wp_supercache_cache_list', + 'wp_cache_mutex_disabled', + 'wp_super_cache_late_init', + 'cache_page_secret', + 'cache_path', + 'cache_acceptable_files', + 'wpsc_rejected_cookies', + 'cache_rejected_uri', + 'wp_cache_pages', + 'cache_max_time', + 'valid_nonce', + 'super_cache_enabled', + 'cache_schedule_type', + 'cache_scheduled_time', + 'cache_schedule_interval', + 'cache_time_interval', + 'cache_gc_email_me', + 'wp_cache_mobile_prefixes', + 'wp_cache_preload_on' + ) + ); + + wpsc_edit_tracking_parameters(); + wpsc_edit_rejected_ua(); + wpsc_lockdown(); + wpsc_restore_settings(); + + break; + case 'easy': + default: + wpsc_render_partial( + 'easy', + array( + 'admin_url' => $admin_url, + 'cache_enabled' => $cache_enabled, + 'is_nginx' => $is_nginx, + 'wp_cache_mod_rewrite' => $wp_cache_mod_rewrite, + 'valid_nonce' => $valid_nonce, + 'cache_path' => $cache_path, + 'wp_super_cache_comments' => $wp_super_cache_comments, + ) + ); + break; + } + ?> + + + + +
    + +

    +
      +
    • +
    • +
    • +
    • +
    + +

    +
      +
    1. Debug tab for diagnostics.', 'wp-super-cache' ), admin_url( 'options-general.php?page=wpsupercache&tab=debug' ) ); ?>
    2. +
    3. + plugin documentation.', 'wp-super-cache' ), + 'https://jetpack.com/support/wp-super-cache/' + ) + ); + ?> +
    4. +
    5. + support forum.', 'wp-super-cache' ), + 'https://wordpress.org/support/plugin/wp-super-cache/' + ) + ); + ?> +
    6. +
    7. development version for the latest fixes (changelog).', 'wp-super-cache' ), 'https://odd.blog/y/2o', 'https://plugins.trac.wordpress.org/log/wp-super-cache/' ); ?>
    8. +
    +

    +

    rate us and give feedback.', 'wp-super-cache' ), 'https://wordpress.org/support/plugin/wp-super-cache/reviews?rate=5#new-post' ); ?>

    + + +

    %2$s', 'wp-super-cache' ), date( 'M j, Y', $start_date ), number_format( get_option( 'wpsupercache_count' ) ) ); ?>

    + +

      + " . esc_html( substr( $url['url'] ?? '', 0, 20 ) ) . "\n"; + } + ?> +
    + +

    + +
    +
    +
    +
    + +
    + '; + echo '

    ' . esc_html__( 'Cache plugins are PHP scripts you\'ll find in a dedicated folder inside the WP Super Cache folder (wp-super-cache/plugins/). They load at the same time as WP Super Cache, and before regular WordPress plugins.', 'wp-super-cache' ) . '

    '; + echo '

    ' . esc_html__( 'Keep in mind that cache plugins are for advanced users only. To create and manage them, you\'ll need extensive knowledge of both PHP and WordPress actions.', 'wp-super-cache' ) . '

    '; + echo '

    ' . sprintf( __( 'Warning! Due to the way WordPress upgrades plugins, the ones you upload to the WP Super Cache folder (wp-super-cache/plugins/) will be deleted when you upgrade WP Super Cache. To avoid this loss, load your cache plugins from a different location. When you set $wp_cache_plugins_dir to the new location in wp-config.php, WP Super Cache will look there instead.
    You can find additional details in the developer documentation.', 'wp-super-cache' ), 'https://odd.blog/wp-super-cache-developers/' ) . '

    '; + echo '
    '; + echo '
    '; + ob_start(); + if ( defined( 'WP_CACHE' ) ) { + if ( function_exists( 'do_cacheaction' ) ) { + do_cacheaction( 'cache_admin_page' ); + } + } + $out = ob_get_contents(); + ob_end_clean(); + + if ( SUBMITDISABLED == ' ' && $out != '' ) { + echo '

    ' . esc_html__( 'Available Plugins', 'wp-super-cache' ) . '

    '; + echo '
      '; + echo $out; + echo '
    '; + } + echo '
    '; +} + +function wpsc_admin_tabs( $current = '' ) { + global $cache_enabled, $super_cache_enabled, $wp_cache_mod_rewrite; + + if ( '' === $current ) { + $current = ! empty( $_GET['tab'] ) ? stripslashes( $_GET['tab'] ) : ''; // WPCS: CSRF ok, sanitization ok. + } + + $admin_url = admin_url( 'options-general.php?page=wpsupercache' ); + $admin_tabs = array( + 'easy' => __( 'Easy', 'wp-super-cache' ), + 'settings' => __( 'Advanced', 'wp-super-cache' ), + 'cdn' => __( 'CDN', 'wp-super-cache' ), + 'contents' => __( 'Contents', 'wp-super-cache' ), + 'preload' => __( 'Preload', 'wp-super-cache' ), + 'plugins' => __( 'Plugins', 'wp-super-cache' ), + 'debug' => __( 'Debug', 'wp-super-cache' ), + ); + + echo '
      '; + + foreach ( $admin_tabs as $tab => $name ) { + printf( + '
    • %s
    • ', + esc_attr( $tab === $current ? 'wpsc-nav-tab wpsc-nav-tab-selected' : 'wpsc-nav-tab' ), + esc_url_raw( add_query_arg( 'tab', $tab, $admin_url ) ), + esc_html( $name ) + ); + } + + echo '
    '; +} + +function wpsc_restore_settings() { + $admin_url = admin_url( 'options-general.php?page=wpsupercache' ); + wpsc_render_partial( + 'restore', + compact( 'admin_url' ) + ); +} + +function comment_form_lockdown_message() { + ?>

    \'\"\r\n\t\(\)\$\[\];#]/', '', $page ) ); + if ( $page != '' ) { + $cached_direct_pages[] = $page; + $out .= "'$page', "; + } + } + } + if ( $valid_nonce && array_key_exists('new_direct_page', $_POST) && $_POST[ 'new_direct_page' ] && '' != $_POST[ 'new_direct_page' ] ) { + $page = str_replace( get_option( 'siteurl' ), '', $_POST[ 'new_direct_page' ] ); + $page = str_replace( '..', '', preg_replace( '/[ <>\'\"\r\n\t\(\)\$\[\];#]/', '', $page ) ); + if ( substr( $page, 0, 1 ) != '/' ) + $page = '/' . $page; + if ( $page != '/' || false == is_array( $cached_direct_pages ) || in_array( $page, $cached_direct_pages ) == false ) { + $cached_direct_pages[] = $page; + $out .= "'$page', "; + + @unlink( trailingslashit( ABSPATH . $page ) . "index.html" ); + wpsc_delete_files( get_supercache_dir() . $page ); + } + } + + if ( $out != '' ) { + $out = substr( $out, 0, -2 ); + } + if ( $out == "''" ) { + $out = ''; + } + $out = '$cached_direct_pages = array( ' . $out . ' );'; + wp_cache_replace_line('^ *\$cached_direct_pages', "$out", $wp_cache_config_file); + + if ( !empty( $expiredfiles ) ) { + foreach( $expiredfiles as $file ) { + if( $file != '' ) { + $firstfolder = explode( '/', $file ); + $firstfolder = ABSPATH . $firstfolder[1]; + $file = ABSPATH . $file; + $file = realpath( str_replace( '..', '', preg_replace('/[ <>\'\"\r\n\t\(\)]/', '', $file ) ) ); + if ( $file ) { + @unlink( trailingslashit( $file ) . "index.html" ); + @unlink( trailingslashit( $file ) . "index.html.gz" ); + RecursiveFolderDelete( trailingslashit( $firstfolder ) ); + } + } + } + } + + if ( $valid_nonce && array_key_exists('deletepage', $_POST) && $_POST[ 'deletepage' ] ) { + $page = str_replace( '..', '', preg_replace('/[ <>\'\"\r\n\t\(\)]/', '', $_POST['deletepage'] ) ) . '/'; + $pagefile = realpath( ABSPATH . $page . 'index.html' ); + if ( substr( $pagefile, 0, strlen( ABSPATH ) ) != ABSPATH || false == wp_cache_confirm_delete( ABSPATH . $page ) ) { + die( __( 'Cannot delete directory', 'wp-super-cache' ) ); + } + $firstfolder = explode( '/', $page ); + $firstfolder = ABSPATH . $firstfolder[1]; + $page = ABSPATH . $page; + if( is_file( $pagefile ) && is_writeable_ACLSafe( $pagefile ) && is_writeable_ACLSafe( $firstfolder ) ) { + @unlink( $pagefile ); + @unlink( $pagefile . '.gz' ); + RecursiveFolderDelete( $firstfolder ); + } + } + + return $cached_direct_pages; +} + +function wpsc_lockdown() { + global $cached_direct_pages, $cache_enabled, $super_cache_enabled; + + $admin_url = admin_url( 'options-general.php?page=wpsupercache' ); + $wp_lock_down = wp_update_lock_down(); + + wpsc_render_partial( + 'lockdown', + compact( 'cached_direct_pages', 'cache_enabled', 'super_cache_enabled', 'admin_url', 'wp_lock_down' ) + ); +} + +function RecursiveFolderDelete ( $folderPath ) { // from http://www.php.net/manual/en/function.rmdir.php + if( trailingslashit( constant( 'ABSPATH' ) ) == trailingslashit( $folderPath ) ) + return false; + if ( @is_dir ( $folderPath ) ) { + $dh = @opendir($folderPath); + while (false !== ($value = @readdir($dh))) { + if ( $value != "." && $value != ".." ) { + $value = $folderPath . "/" . $value; + if ( @is_dir ( $value ) ) { + RecursiveFolderDelete ( $value ); + } + } + } + return @rmdir ( $folderPath ); + } else { + return FALSE; + } +} + +function wp_cache_time_update() { + global $cache_max_time, $wp_cache_config_file, $valid_nonce, $cache_schedule_type, $cache_scheduled_time, $cache_schedule_interval, $cache_time_interval, $cache_gc_email_me; + if ( isset( $_POST[ 'action' ] ) && $_POST[ 'action' ] == 'expirytime' ) { + + if ( false == $valid_nonce ) + return false; + + if( !isset( $cache_schedule_type ) ) { + $cache_schedule_type = 'interval'; + wp_cache_replace_line('^ *\$cache_schedule_type', "\$cache_schedule_type = '$cache_schedule_type';", $wp_cache_config_file); + } + + if( !isset( $cache_scheduled_time ) ) { + $cache_scheduled_time = '00:00'; + wp_cache_replace_line('^ *\$cache_scheduled_time', "\$cache_scheduled_time = '$cache_scheduled_time';", $wp_cache_config_file); + } + + if( !isset( $cache_max_time ) ) { + $cache_max_time = 3600; + wp_cache_replace_line('^ *\$cache_max_time', "\$cache_max_time = $cache_max_time;", $wp_cache_config_file); + } + + if ( !isset( $cache_time_interval ) ) { + $cache_time_interval = $cache_max_time; + wp_cache_replace_line('^ *\$cache_time_interval', "\$cache_time_interval = '$cache_time_interval';", $wp_cache_config_file); + } + + if ( isset( $_POST['wp_max_time'] ) ) { + $cache_max_time = (int)$_POST['wp_max_time']; + wp_cache_replace_line('^ *\$cache_max_time', "\$cache_max_time = $cache_max_time;", $wp_cache_config_file); + // schedule gc watcher + if ( false == wp_next_scheduled( 'wp_cache_gc_watcher' ) ) + wp_schedule_event( time()+600, 'hourly', 'wp_cache_gc_watcher' ); + } + + if ( isset( $_POST[ 'cache_gc_email_me' ] ) ) { + $cache_gc_email_me = 1; + wp_cache_replace_line('^ *\$cache_gc_email_me', "\$cache_gc_email_me = $cache_gc_email_me;", $wp_cache_config_file); + } else { + $cache_gc_email_me = 0; + wp_cache_replace_line('^ *\$cache_gc_email_me', "\$cache_gc_email_me = $cache_gc_email_me;", $wp_cache_config_file); + } + if ( isset( $_POST[ 'cache_schedule_type' ] ) && $_POST[ 'cache_schedule_type' ] == 'interval' && isset( $_POST['cache_time_interval'] ) ) { + wp_clear_scheduled_hook( 'wp_cache_gc' ); + $cache_schedule_type = 'interval'; + if ( (int)$_POST[ 'cache_time_interval' ] == 0 ) + $_POST[ 'cache_time_interval' ] = 600; + $cache_time_interval = (int)$_POST[ 'cache_time_interval' ]; + wp_schedule_single_event( time() + $cache_time_interval, 'wp_cache_gc' ); + wp_cache_replace_line('^ *\$cache_schedule_type', "\$cache_schedule_type = '$cache_schedule_type';", $wp_cache_config_file); + wp_cache_replace_line('^ *\$cache_time_interval', "\$cache_time_interval = '$cache_time_interval';", $wp_cache_config_file); + } else { // clock + wp_clear_scheduled_hook( 'wp_cache_gc' ); + $cache_schedule_type = 'time'; + if ( !isset( $_POST[ 'cache_scheduled_time' ] ) || + $_POST[ 'cache_scheduled_time' ] == '' || + 5 != strlen( $_POST[ 'cache_scheduled_time' ] ) || + ":" != substr( $_POST[ 'cache_scheduled_time' ], 2, 1 ) + ) + $_POST[ 'cache_scheduled_time' ] = '00:00'; + + $cache_scheduled_time = $_POST[ 'cache_scheduled_time' ]; + + if ( ! preg_match( '/[0-9][0-9]:[0-9][0-9]/', $cache_scheduled_time ) ) { + $cache_scheduled_time = '00:00'; + } + $schedules = wp_get_schedules(); + if ( !isset( $cache_schedule_interval ) ) + $cache_schedule_interval = 'daily'; + if ( isset( $_POST[ 'cache_schedule_interval' ] ) && isset( $schedules[ $_POST[ 'cache_schedule_interval' ] ] ) ) + $cache_schedule_interval = $_POST[ 'cache_schedule_interval' ]; + wp_cache_replace_line('^ *\$cache_schedule_type', "\$cache_schedule_type = '$cache_schedule_type';", $wp_cache_config_file); + wp_cache_replace_line('^ *\$cache_schedule_interval', "\$cache_schedule_interval = '{$cache_schedule_interval}';", $wp_cache_config_file); + wp_cache_replace_line('^ *\$cache_scheduled_time', "\$cache_scheduled_time = '$cache_scheduled_time';", $wp_cache_config_file); + wp_schedule_event( strtotime( $cache_scheduled_time ), $cache_schedule_interval, 'wp_cache_gc' ); + } + } +} + +function wp_cache_sanitize_value($text, & $array) { + $text = esc_html(strip_tags($text)); + $array = preg_split( '/[\s,]+/', rtrim( $text ) ); + $text = var_export($array, true); + $text = preg_replace('/[\s]+/', ' ', $text); + return $text; +} + +function wp_cache_update_rejected_ua() { + global $cache_rejected_user_agent, $wp_cache_config_file, $valid_nonce; + + if ( isset( $_POST[ 'wp_rejected_user_agent' ] ) && $valid_nonce ) { + $_POST[ 'wp_rejected_user_agent' ] = str_replace( ' ', '___', $_POST[ 'wp_rejected_user_agent' ] ); + $text = str_replace( '___', ' ', wp_cache_sanitize_value( $_POST[ 'wp_rejected_user_agent' ], $cache_rejected_user_agent ) ); + wp_cache_replace_line( '^ *\$cache_rejected_user_agent', "\$cache_rejected_user_agent = $text;", $wp_cache_config_file ); + foreach( $cache_rejected_user_agent as $k => $ua ) { + $cache_rejected_user_agent[ $k ] = str_replace( '___', ' ', $ua ); + } + reset( $cache_rejected_user_agent ); + } +} + +function wpsc_edit_rejected_ua() { + global $cache_rejected_user_agent; + + $admin_url = admin_url( 'options-general.php?page=wpsupercache' ); + wp_cache_update_rejected_ua(); + wpsc_render_partial( + 'rejected_user_agents', + compact( 'cache_rejected_user_agent', 'admin_url' ) + ); +} + +function wp_cache_update_rejected_pages() { + global $wp_cache_config_file, $valid_nonce, $wp_cache_pages; + + if ( isset( $_POST[ 'wp_edit_rejected_pages' ] ) && $valid_nonce ) { + $pages = array( 'single', 'pages', 'archives', 'tag', 'frontpage', 'home', 'category', 'feed', 'author', 'search' ); + foreach( $pages as $page ) { + if ( isset( $_POST[ 'wp_cache_pages' ][ $page ] ) ) { + $value = 1; + } else { + $value = 0; + } + wp_cache_replace_line('^ *\$wp_cache_pages\[ "' . $page . '" \]', "\$wp_cache_pages[ \"{$page}\" ] = $value;", $wp_cache_config_file); + $wp_cache_pages[ $page ] = $value; + } + } +} + +function wpsc_update_tracking_parameters() { + global $wpsc_tracking_parameters, $valid_nonce, $wp_cache_config_file; + + if ( isset( $_POST['tracking_parameters'] ) && $valid_nonce ) { + $text = wp_cache_sanitize_value( str_replace( '\\\\', '\\', $_POST['tracking_parameters'] ), $wpsc_tracking_parameters ); + wp_cache_replace_line( '^ *\$wpsc_tracking_parameters', "\$wpsc_tracking_parameters = $text;", $wp_cache_config_file ); + wp_cache_setting( 'wpsc_ignore_tracking_parameters', isset( $_POST['wpsc_ignore_tracking_parameters'] ) ? 1 : 0 ); + } +} + +function wpsc_edit_tracking_parameters() { + global $wpsc_tracking_parameters, $wpsc_ignore_tracking_parameters; + + $admin_url = admin_url( 'options-general.php?page=wpsupercache' ); + wpsc_update_tracking_parameters(); + + if ( ! isset( $wpsc_tracking_parameters ) ) { + $wpsc_tracking_parameters = array( 'fbclid', 'ref', 'gclid', 'fb_source', 'mc_cid', 'mc_eid', 'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'utm_expid', 'mtm_source', 'mtm_medium', 'mtm_campaign', 'mtm_keyword', 'mtm_content', 'mtm_cid', 'mtm_group', 'mtm_placement', 'ysclid', 'srsltid', 'yclid' ); + } + + if ( ! isset( $wpsc_ignore_tracking_parameters ) ) { + $wpsc_ignore_tracking_parameters = 0; + } + wpsc_render_partial( + 'tracking_parameters', + compact( 'wpsc_ignore_tracking_parameters', 'wpsc_tracking_parameters', 'admin_url' ) + ); +} + +function wp_cache_update_rejected_cookies() { + global $wpsc_rejected_cookies, $wp_cache_config_file, $valid_nonce; + + if ( isset( $_POST['wp_rejected_cookies'] ) && $valid_nonce ) { + $text = wp_cache_sanitize_value( str_replace( '\\\\', '\\', $_POST['wp_rejected_cookies'] ), $wpsc_rejected_cookies ); + wp_cache_replace_line( '^ *\$wpsc_rejected_cookies', "\$wpsc_rejected_cookies = $text;", $wp_cache_config_file ); + } +} + +function wp_cache_update_rejected_strings() { + global $cache_rejected_uri, $wp_cache_config_file, $valid_nonce; + + if ( isset($_REQUEST['wp_rejected_uri']) && $valid_nonce ) { + $text = wp_cache_sanitize_value( str_replace( '\\\\', '\\', $_REQUEST['wp_rejected_uri'] ), $cache_rejected_uri ); + wp_cache_replace_line('^ *\$cache_rejected_uri', "\$cache_rejected_uri = $text;", $wp_cache_config_file); + } +} + +function wp_cache_update_accepted_strings() { + global $cache_acceptable_files, $wp_cache_config_file, $valid_nonce; + + if ( isset( $_REQUEST[ 'wp_accepted_files' ] ) && $valid_nonce ) { + $text = wp_cache_sanitize_value( $_REQUEST[ 'wp_accepted_files' ], $cache_acceptable_files ); + wp_cache_replace_line( '^ *\$cache_acceptable_files', "\$cache_acceptable_files = $text;", $wp_cache_config_file ); + } +} + +function wpsc_update_debug_settings() { + global $wp_super_cache_debug, $wp_cache_debug_log, $wp_cache_debug_ip, $cache_path, $valid_nonce, $wp_cache_config_file, $wp_super_cache_comments; + global $wp_super_cache_front_page_check, $wp_super_cache_front_page_clear, $wp_super_cache_front_page_text, $wp_super_cache_front_page_notification, $wp_super_cache_advanced_debug; + global $wp_cache_debug_username; + + if ( ! isset( $wp_super_cache_comments ) ) { + $wp_super_cache_comments = 1; // defaults to "enabled". + wp_cache_setting( 'wp_super_cache_comments', $wp_super_cache_comments ); + } + + if ( false == $valid_nonce ) { + return array ( + 'wp_super_cache_debug' => $wp_super_cache_debug, + 'wp_cache_debug_log' => $wp_cache_debug_log, + 'wp_cache_debug_ip' => $wp_cache_debug_ip, + 'wp_super_cache_comments' => $wp_super_cache_comments, + 'wp_super_cache_front_page_check' => $wp_super_cache_front_page_check, + 'wp_super_cache_front_page_clear' => $wp_super_cache_front_page_clear, + 'wp_super_cache_front_page_text' => $wp_super_cache_front_page_text, + 'wp_super_cache_front_page_notification' => $wp_super_cache_front_page_notification, + 'wp_super_cache_advanced_debug' => $wp_super_cache_advanced_debug, + 'wp_cache_debug_username' => $wp_cache_debug_username, + ); + } + + if ( isset( $_POST[ 'wpsc_delete_log' ] ) && $_POST[ 'wpsc_delete_log' ] == 1 && $wp_cache_debug_log != '' ) { + @unlink( $cache_path . $wp_cache_debug_log ); + extract( wpsc_create_debug_log( $wp_cache_debug_log, $wp_cache_debug_username ) ); // $wp_cache_debug_log, $wp_cache_debug_username + } + + if ( ! isset( $wp_cache_debug_log ) || $wp_cache_debug_log == '' ) { + extract( wpsc_create_debug_log() ); // $wp_cache_debug_log, $wp_cache_debug_username + } elseif ( ! file_exists( $cache_path . $wp_cache_debug_log ) ) { // make sure debug log exists before toggling debugging + extract( wpsc_create_debug_log( $wp_cache_debug_log, $wp_cache_debug_username ) ); // $wp_cache_debug_log, $wp_cache_debug_username + } + $wp_super_cache_debug = ( isset( $_POST[ 'wp_super_cache_debug' ] ) && $_POST[ 'wp_super_cache_debug' ] == 1 ) ? 1 : 0; + wp_cache_setting( 'wp_super_cache_debug', $wp_super_cache_debug ); + + if ( isset( $_POST[ 'wp_cache_debug' ] ) ) { + wp_cache_setting( 'wp_cache_debug_username', $wp_cache_debug_username ); + wp_cache_setting( 'wp_cache_debug_log', $wp_cache_debug_log ); + $wp_super_cache_comments = isset( $_POST[ 'wp_super_cache_comments' ] ) ? 1 : 0; + wp_cache_setting( 'wp_super_cache_comments', $wp_super_cache_comments ); + if ( isset( $_POST[ 'wp_cache_debug_ip' ] ) && filter_var( $_POST[ 'wp_cache_debug_ip' ], FILTER_VALIDATE_IP ) ) { + $wp_cache_debug_ip = esc_html( preg_replace( '/[ <>\'\"\r\n\t\(\)\$\[\];#]/', '', $_POST[ 'wp_cache_debug_ip' ] ) ); + } else { + $wp_cache_debug_ip = ''; + } + wp_cache_setting( 'wp_cache_debug_ip', $wp_cache_debug_ip ); + $wp_super_cache_front_page_check = isset( $_POST[ 'wp_super_cache_front_page_check' ] ) ? 1 : 0; + wp_cache_setting( 'wp_super_cache_front_page_check', $wp_super_cache_front_page_check ); + $wp_super_cache_front_page_clear = isset( $_POST[ 'wp_super_cache_front_page_clear' ] ) ? 1 : 0; + wp_cache_setting( 'wp_super_cache_front_page_clear', $wp_super_cache_front_page_clear ); + if ( isset( $_POST[ 'wp_super_cache_front_page_text' ] ) ) { + $wp_super_cache_front_page_text = esc_html( preg_replace( '/[ <>\'\"\r\n\t\(\)\$\[\];#]/', '', $_POST[ 'wp_super_cache_front_page_text' ] ) ); + } else { + $wp_super_cache_front_page_text = ''; + } + wp_cache_setting( 'wp_super_cache_front_page_text', $wp_super_cache_front_page_text ); + $wp_super_cache_front_page_notification = isset( $_POST[ 'wp_super_cache_front_page_notification' ] ) ? 1 : 0; + wp_cache_setting( 'wp_super_cache_front_page_notification', $wp_super_cache_front_page_notification ); + if ( $wp_super_cache_front_page_check == 1 && !wp_next_scheduled( 'wp_cache_check_site_hook' ) ) { + wp_schedule_single_event( time() + 360 , 'wp_cache_check_site_hook' ); + wp_cache_debug( 'scheduled wp_cache_check_site_hook for 360 seconds time.' ); + } + } + + return array ( + 'wp_super_cache_debug' => $wp_super_cache_debug, + 'wp_cache_debug_log' => $wp_cache_debug_log, + 'wp_cache_debug_ip' => $wp_cache_debug_ip, + 'wp_super_cache_comments' => $wp_super_cache_comments, + 'wp_super_cache_front_page_check' => $wp_super_cache_front_page_check, + 'wp_super_cache_front_page_clear' => $wp_super_cache_front_page_clear, + 'wp_super_cache_front_page_text' => $wp_super_cache_front_page_text, + 'wp_super_cache_front_page_notification' => $wp_super_cache_front_page_notification, + 'wp_super_cache_advanced_debug' => $wp_super_cache_advanced_debug, + 'wp_cache_debug_username' => $wp_cache_debug_username, + ); +} + +function wp_cache_enable() { + global $wp_cache_config_file, $cache_enabled; + + if ( $cache_enabled ) { + wp_cache_debug( 'wp_cache_enable: already enabled' ); + return true; + } + + wp_cache_setting( 'cache_enabled', true ); + wp_cache_debug( 'wp_cache_enable: enable cache' ); + + $cache_enabled = true; + + if ( wpsc_set_default_gc() ) { + // gc might not be scheduled, check and schedule + $timestamp = wp_next_scheduled( 'wp_cache_gc' ); + if ( false == $timestamp ) { + wp_schedule_single_event( time() + 600, 'wp_cache_gc' ); + } + } +} + +function wp_cache_disable() { + global $wp_cache_config_file, $cache_enabled; + + if ( ! $cache_enabled ) { + wp_cache_debug( 'wp_cache_disable: already disabled' ); + return true; + } + + wp_cache_setting( 'cache_enabled', false ); + wp_cache_debug( 'wp_cache_disable: disable cache' ); + + $cache_enabled = false; + + wp_clear_scheduled_hook( 'wp_cache_check_site_hook' ); + wp_clear_scheduled_hook( 'wp_cache_gc' ); + wp_clear_scheduled_hook( 'wp_cache_gc_watcher' ); +} + +function wp_super_cache_enable() { + global $supercachedir, $wp_cache_config_file, $super_cache_enabled; + + if ( $super_cache_enabled ) { + wp_cache_debug( 'wp_super_cache_enable: already enabled' ); + return true; + } + + wp_cache_setting( 'super_cache_enabled', true ); + wp_cache_debug( 'wp_super_cache_enable: enable cache' ); + + $super_cache_enabled = true; + + if ( ! $supercachedir ) { + $supercachedir = get_supercache_dir(); + } + + if ( is_dir( $supercachedir . '.disabled' ) ) { + if ( is_dir( $supercachedir ) ) { + prune_super_cache( $supercachedir . '.disabled', true ); + @unlink( $supercachedir . '.disabled' ); + } else { + @rename( $supercachedir . '.disabled', $supercachedir ); + } + } +} + +function wp_super_cache_disable() { + global $cache_path, $supercachedir, $wp_cache_config_file, $super_cache_enabled; + + if ( ! $super_cache_enabled ) { + wp_cache_debug( 'wp_super_cache_disable: already disabled' ); + return true; + } + + wp_cache_setting( 'super_cache_enabled', false ); + wp_cache_debug( 'wp_super_cache_disable: disable cache' ); + + $super_cache_enabled = false; + + if ( ! $supercachedir ) { + $supercachedir = get_supercache_dir(); + } + + if ( is_dir( $supercachedir ) ) { + @rename( $supercachedir, $supercachedir . '.disabled' ); + } + sleep( 1 ); // allow existing processes to write to the supercachedir and then delete it + if ( function_exists( 'prune_super_cache' ) && is_dir( $supercachedir ) ) { + prune_super_cache( $cache_path, true ); + } + + if ( $GLOBALS['wp_cache_mod_rewrite'] === 1 ) { + remove_mod_rewrite_rules(); + } +} + +function wp_cache_is_enabled() { + global $wp_cache_config_file; + + if ( get_option( 'gzipcompression' ) ) { + echo '' . __( 'Warning', 'wp-super-cache' ) . ': ' . __( 'GZIP compression is enabled in WordPress, wp-cache will be bypassed until you disable gzip compression.', 'wp-super-cache' ); + return false; + } + + $lines = file( $wp_cache_config_file ); + foreach ( $lines as $line ) { + if ( preg_match( '/^\s*\$cache_enabled\s*=\s*true\s*;/', $line ) ) { + return true; + } + } + + return false; +} + +function wp_cache_remove_index() { + global $cache_path; + + if ( empty( $cache_path ) ) { + return; + } + + @unlink( $cache_path . "index.html" ); + @unlink( $cache_path . "supercache/index.html" ); + @unlink( $cache_path . "blogs/index.html" ); + if ( is_dir( $cache_path . "blogs" ) ) { + $dir = new DirectoryIterator( $cache_path . "blogs" ); + foreach( $dir as $fileinfo ) { + if ( $fileinfo->isDot() ) { + continue; + } + if ( $fileinfo->isDir() ) { + $directory = $cache_path . "blogs/" . $fileinfo->getFilename(); + if ( is_file( $directory . "/index.html" ) ) { + unlink( $directory . "/index.html" ); + } + if ( is_dir( $directory . "/meta" ) ) { + if ( is_file( $directory . "/meta/index.html" ) ) { + unlink( $directory . "/meta/index.html" ); + } + } + } + } + } +} + +function wp_cache_index_notice() { + global $cache_path; + + if ( false == wpsupercache_site_admin() ) + return false; + if ( false == get_site_option( 'wp_super_cache_index_detected' ) ) + return false; + + if ( strlen( $cache_path ) < strlen( ABSPATH ) + || ABSPATH != substr( $cache_path, 0, strlen( ABSPATH ) ) ) + return false; // cache stored outside web root + + if ( get_site_option( 'wp_super_cache_index_detected' ) == 2 ) { + update_site_option( 'wp_super_cache_index_detected', 3 ); + echo "
    "; + echo "

    " . __( 'WP Super Cache Warning!', 'wp-super-cache' ) . '

    '; + echo '

    ' . __( 'All users of this site have been logged out to refresh their login cookies.', 'wp-super-cache' ) . '

    '; + echo '
    '; + return false; + } elseif ( get_site_option( 'wp_super_cache_index_detected' ) != 3 ) { + echo "
    "; + echo "

    " . __( 'WP Super Cache Warning!', 'wp-super-cache' ) . '

    '; + echo '

    ' . __( 'Your server is configured to show files and directories, which may expose sensitive data such as login cookies to attackers in the cache directories. That has been fixed by adding a file named index.html to each directory. If you use simple caching, consider moving the location of the cache directory on the Advanced Settings page.', 'wp-super-cache' ) . '

    '; + echo "

    "; + _e( 'If you just installed WP Super Cache for the first time, you can dismiss this message. Otherwise, you should probably refresh the login cookies of all logged in WordPress users here by clicking the logout link below.', 'wp-super-cache' ); + echo "

    "; + echo '

    ' . esc_html__( 'The logout link will log out all WordPress users on this site except you. Your authentication cookie will be updated, but you will not be logged out.', 'wp-super-cache' ) . '

    '; + echo '' . esc_html__( 'Dismiss', 'wp-super-cache' ) . ''; + echo ' | ' . esc_html__( 'Logout', 'wp-super-cache' ) . ''; + echo '
    '; +?> + +

    ' . $msg . '

    '; +} +add_action( 'admin_notices', 'wpsc_config_file_notices' ); +function wpsc_dismiss_indexhtml_warning() { + check_ajax_referer( 'wpsc-index-dismiss' ); + + if ( ! current_user_can( 'manage_options' ) ) { + wp_send_json_error( null, 403 ); + } + + update_site_option( 'wp_super_cache_index_detected', 3 ); + die( 0 ); +} +add_action( 'wp_ajax_wpsc-index-dismiss', 'wpsc_dismiss_indexhtml_warning' ); + +function wp_cache_logout_all() { + global $current_user; + if ( isset( $_GET[ 'action' ] ) && $_GET[ 'action' ] == 'wpsclogout' && wp_verify_nonce( $_GET[ '_wpnonce' ], 'wpsc_logout' ) ) { + $user_id = $current_user->ID; + WP_Session_Tokens::destroy_all_for_all_users(); + wp_set_auth_cookie( $user_id, false, is_ssl() ); + update_site_option( 'wp_super_cache_index_detected', 2 ); + wp_redirect( admin_url() ); + } +} +if ( isset( $_GET[ 'action' ] ) && $_GET[ 'action' ] == 'wpsclogout' ) + add_action( 'admin_init', 'wp_cache_logout_all' ); + +function wp_cache_add_index_protection() { + global $cache_path, $blog_cache_dir; + + if ( is_dir( $cache_path ) && false == is_file( "$cache_path/index.html" ) ) { + $page = wp_remote_get( home_url( "/wp-content/cache/" ) ); + if ( false == is_wp_error( $page ) ) { + if ( false == get_site_option( 'wp_super_cache_index_detected' ) + && $page[ 'response' ][ 'code' ] == 200 + && stripos( $page[ 'body' ], 'index of' ) ) { + add_site_option( 'wp_super_cache_index_detected', 1 ); // only show this once + } + } + if ( ! function_exists( 'insert_with_markers' ) ) { + include_once( ABSPATH . 'wp-admin/includes/misc.php' ); + } + insert_with_markers( $cache_path . '.htaccess', "INDEX", array( 'Options -Indexes' ) ); + } + + $directories = array( $cache_path, $cache_path . '/supercache/', $cache_path . '/blogs/', $blog_cache_dir, $blog_cache_dir . "/meta" ); + foreach( $directories as $dir ) { + if ( false == is_dir( $dir ) ) + @mkdir( $dir ); + if ( is_dir( $dir ) && false == is_file( "$dir/index.html" ) ) { + $fp = @fopen( "$dir/index.html", 'w' ); + if ( $fp ) + fclose( $fp ); + } + } +} + +function wp_cache_add_site_cache_index() { + global $cache_path; + + wp_cache_add_index_protection(); // root and supercache + + if ( is_dir( $cache_path . "blogs" ) ) { + $dir = new DirectoryIterator( $cache_path . "blogs" ); + foreach( $dir as $fileinfo ) { + if ( $fileinfo->isDot() ) { + continue; + } + if ( $fileinfo->isDir() ) { + $directory = $cache_path . "blogs/" . $fileinfo->getFilename(); + if ( false == is_file( $directory . "/index.html" ) ) { + $fp = @fopen( $directory . "/index.html", 'w' ); + if ( $fp ) + fclose( $fp ); + } + if ( is_dir( $directory . "/meta" ) ) { + if ( false == is_file( $directory . "/meta/index.html" ) ) { + $fp = @fopen( $directory . "/meta/index.html", 'w' ); + if ( $fp ) + fclose( $fp ); + } + } + } + } + } +} + +function wp_cache_verify_cache_dir() { + global $cache_path, $blog_cache_dir; + + $dir = dirname($cache_path); + if ( !file_exists($cache_path) ) { + if ( !is_writeable_ACLSafe( $dir ) || !($dir = mkdir( $cache_path ) ) ) { + echo "" . __( 'Error', 'wp-super-cache' ) . ": " . sprintf( __( 'Your cache directory (%1$s) did not exist and couldn’t be created by the web server. Check %1$s permissions.', 'wp-super-cache' ), $dir ); + return false; + } + } + if ( !is_writeable_ACLSafe($cache_path)) { + echo "" . __( 'Error', 'wp-super-cache' ) . ": " . sprintf( __( 'Your cache directory (%1$s) or %2$s need to be writable for this plugin to work. Double-check it.', 'wp-super-cache' ), $cache_path, $dir ); + return false; + } + + if ( '/' != substr($cache_path, -1)) { + $cache_path .= '/'; + } + + if( false == is_dir( $blog_cache_dir ) ) { + @mkdir( $cache_path . "blogs" ); + if( $blog_cache_dir != $cache_path . "blogs/" ) + @mkdir( $blog_cache_dir ); + } + + if( false == is_dir( $blog_cache_dir . 'meta' ) ) + @mkdir( $blog_cache_dir . 'meta' ); + + wp_cache_add_index_protection(); + return true; +} + +function wp_cache_verify_config_file() { + global $wp_cache_config_file, $wp_cache_config_file_sample, $sem_id, $cache_path; + global $WPSC_HTTP_HOST; + + $new = false; + $dir = dirname($wp_cache_config_file); + + if ( file_exists($wp_cache_config_file) ) { + $lines = implode( ' ', file( $wp_cache_config_file ) ); + if ( ! str_contains( $lines, 'WPCACHEHOME' ) ) { + if( is_writeable_ACLSafe( $wp_cache_config_file ) ) { + @unlink( $wp_cache_config_file ); + } else { + echo "" . __( 'Error', 'wp-super-cache' ) . ": " . sprintf( __( 'Your WP-Cache config file (%s) is out of date and not writable by the Web server. Please delete it and refresh this page.', 'wp-super-cache' ), $wp_cache_config_file ); + return false; + } + } + } elseif( !is_writeable_ACLSafe($dir)) { + echo "" . __( 'Error', 'wp-super-cache' ) . ": " . sprintf( __( 'Configuration file missing and %1$s directory (%2$s) is not writable by the web server. Check its permissions.', 'wp-super-cache' ), WP_CONTENT_DIR, $dir ); + return false; + } + + if ( !file_exists($wp_cache_config_file) ) { + if ( !file_exists($wp_cache_config_file_sample) ) { + echo "" . __( 'Error', 'wp-super-cache' ) . ": " . sprintf( __( 'Sample WP-Cache config file (%s) does not exist. Verify your installation.', 'wp-super-cache' ), $wp_cache_config_file_sample ); + return false; + } + copy($wp_cache_config_file_sample, $wp_cache_config_file); + $dir = str_replace( str_replace( '\\', '/', WP_CONTENT_DIR ), '', str_replace( '\\', '/', __DIR__ ) ); + if ( is_file( __DIR__ . '/wp-cache-config-sample.php' ) ) { + wp_cache_replace_line('define\(\ \'WPCACHEHOME', "\tdefine( 'WPCACHEHOME', WP_CONTENT_DIR . \"{$dir}/\" );", $wp_cache_config_file); + } elseif ( is_file( __DIR__ . '/wp-super-cache/wp-cache-config-sample.php' ) ) { + wp_cache_replace_line('define\(\ \'WPCACHEHOME', "\tdefine( 'WPCACHEHOME', WP_CONTENT_DIR . \"{$dir}/wp-super-cache/\" );", $wp_cache_config_file); + } + $new = true; + } + if ( $sem_id == 5419 && $cache_path != '' && $WPSC_HTTP_HOST != '' ) { + $sem_id = crc32( $WPSC_HTTP_HOST . $cache_path ) & 0x7fffffff; + wp_cache_replace_line('sem_id', '$sem_id = ' . $sem_id . ';', $wp_cache_config_file); + } + if ( $new ) { + require($wp_cache_config_file); + wpsc_set_default_gc( true ); + } + return true; +} + +function wp_cache_create_advanced_cache() { + global $wpsc_advanced_cache_filename, $wpsc_advanced_cache_dist_filename; + if ( file_exists( ABSPATH . 'wp-config.php') ) { + $global_config_file = ABSPATH . 'wp-config.php'; + } elseif ( file_exists( dirname( ABSPATH ) . '/wp-config.php' ) ) { + $global_config_file = dirname( ABSPATH ) . '/wp-config.php'; + } elseif ( defined( 'DEBIAN_FILE' ) && file_exists( DEBIAN_FILE ) ) { + $global_config_file = DEBIAN_FILE; + } else { + die('Cannot locate wp-config.php'); + } + + $line = 'define( \'WPCACHEHOME\', \'' . __DIR__ . '/\' );'; + + if ( ! apply_filters( 'wpsc_enable_wp_config_edit', true ) ) { + echo '

    ' . __( 'Warning', 'wp-super-cache' ) . "! " . sprintf( __( 'Not allowed to edit %s per configuration.', 'wp-super-cache' ), $global_config_file ) . "

    "; + return false; + } + + if ( + ! strpos( file_get_contents( $global_config_file ), "WPCACHEHOME" ) || + ( + defined( 'WPCACHEHOME' ) && + ( + constant( 'WPCACHEHOME' ) == '' || + ( + constant( 'WPCACHEHOME' ) != '' && + ! file_exists( constant( 'WPCACHEHOME' ) . '/wp-cache.php' ) + ) + ) + ) + ) { + if ( + ! is_writeable_ACLSafe( $global_config_file ) || + ! wp_cache_replace_line( 'define *\( *\'WPCACHEHOME\'', $line, $global_config_file ) + ) { + echo '

    ' . __( 'Warning', 'wp-super-cache' ) . "! " . sprintf( __( 'Could not update %s! WPCACHEHOME must be set in config file.', 'wp-super-cache' ), $global_config_file ) . "

    "; + return false; + } + } + $ret = true; + + if ( file_exists( $wpsc_advanced_cache_filename ) ) { + $file = file_get_contents( $wpsc_advanced_cache_filename ); + if ( + ! strpos( $file, "WP SUPER CACHE 0.8.9.1" ) && + ! strpos( $file, "WP SUPER CACHE 1.2" ) + ) { + return false; + } + } + + $file = file_get_contents( $wpsc_advanced_cache_dist_filename ); + $fp = @fopen( $wpsc_advanced_cache_filename, 'w' ); + if( $fp ) { + // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fwrite + fwrite( $fp, $file ); + fclose( $fp ); + do_action( 'wpsc_created_advanced_cache' ); + } else { + $ret = false; + } + return $ret; +} + +/** + * Identify the advanced cache plugin used + * + * @return string The name of the advanced cache plugin, BOOST, WPSC or OTHER. + */ +function wpsc_identify_advanced_cache() { + global $wpsc_advanced_cache_filename; + if ( ! file_exists( $wpsc_advanced_cache_filename ) ) { + return 'NONE'; + } + $contents = file_get_contents( $wpsc_advanced_cache_filename ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents + + if ( false !== str_contains( $contents, 'Boost Cache Plugin' ) ) { + return 'BOOST'; + } + + if ( str_contains( $contents, 'WP SUPER CACHE 0.8.9.1' ) || str_contains( $contents, 'WP SUPER CACHE 1.2' ) ) { + return 'WPSC'; + } + + return 'OTHER'; +} + +function wpsc_check_advanced_cache() { + global $wpsc_advanced_cache_filename; + + $ret = false; + $other_advanced_cache = false; + if ( file_exists( $wpsc_advanced_cache_filename ) ) { + $cache_type = wpsc_identify_advanced_cache(); + switch ( $cache_type ) { + case 'WPSC': + return true; + case 'BOOST': + $other_advanced_cache = 'BOOST'; + break; + default: + $other_advanced_cache = true; + break; + } + } else { + $ret = wp_cache_create_advanced_cache(); + } + + if ( false == $ret ) { + if ( $other_advanced_cache === 'BOOST' ) { + wpsc_deactivate_boost_cache_notice(); + } elseif ( $other_advanced_cache ) { + echo '

    ' . __( 'Warning! You may not be allowed to use this plugin on your site.', 'wp-super-cache' ) . "

    "; + echo '

    ' . + sprintf( + __( 'The file %s was created by another plugin or by your system administrator. Please examine the file carefully by FTP or SSH and consult your hosting documentation. ', 'wp-super-cache' ), + $wpsc_advanced_cache_filename + ) . + '

    '; + echo '

    ' . + __( 'If it was created by another caching plugin please uninstall that plugin first before activating WP Super Cache. If the file is not removed by that action you should delete the file manually.', 'wp-super-cache' ), + '

    '; + echo '

    ' . + __( 'If you need support for this problem contact your hosting provider.', 'wp-super-cache' ), + '

    '; + echo '
    '; + } elseif ( ! is_writeable_ACLSafe( $wpsc_advanced_cache_filename ) ) { + echo '

    ' . __( 'Warning', 'wp-super-cache' ) . "! " . sprintf( __( '%s/advanced-cache.php cannot be updated.', 'wp-super-cache' ), WP_CONTENT_DIR ) . "

    "; + echo '
      '; + echo "
    1. " . + sprintf( + __( 'Make %1$s writable using the chmod command through your ftp or server software. (chmod 777 %1$s) and refresh this page. This is only a temporary measure and you’ll have to make it read only afterwards again. (Change 777 to 755 in the previous command)', 'wp-super-cache' ), + WP_CONTENT_DIR + ) . + "
    2. "; + echo "
    3. " . sprintf( __( 'Refresh this page to update %s/advanced-cache.php', 'wp-super-cache' ), WP_CONTENT_DIR ) . "
    "; + echo sprintf( __( 'If that doesn’t work, make sure the file %s/advanced-cache.php doesn’t exist:', 'wp-super-cache' ), WP_CONTENT_DIR ) . "
      "; + echo "
    "; + echo '
    '; + } + return false; + } + return true; +} + +function wp_cache_check_global_config() { + global $wp_cache_check_wp_config; + + if ( !isset( $wp_cache_check_wp_config ) ) + return true; + + + if ( file_exists( ABSPATH . 'wp-config.php') ) { + $global_config_file = ABSPATH . 'wp-config.php'; + } else { + $global_config_file = dirname( ABSPATH ) . '/wp-config.php'; + } + + if ( preg_match( '#^\s*(define\s*\(\s*[\'"]WP_CACHE[\'"]|const\s+WP_CACHE\s*=)#m', file_get_contents( $global_config_file ) ) === 1 ) { // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents + if ( defined( 'WP_CACHE' ) && ! constant( 'WP_CACHE' ) ) { + ?> +

    +

    +

    define('WP_CACHE', true);

    + ' . __( "

    WP_CACHE constant set to false

    The WP_CACHE constant is used by WordPress to load the code that serves cached pages. Unfortunately, it is set to false. Please edit your wp-config.php and add or edit the following line above the final require_once command:

    define('WP_CACHE', true);

    ", 'wp-super-cache' ) . "

    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ξM9`t+|a8MrgZT?19x(-dh6_xRIHS7+3BAR== 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/img/screen-notice.png b/wp-content/plugins/cookie-notice/img/screen-notice.png new file mode 100644 index 0000000000000000000000000000000000000000..238f8204b0de2288562927b9fb3930bed93d84ac GIT binary patch literal 299406 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

    da1M%=|{$; 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 \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/img/hu-manity-logo-white.svg b/wp-content/plugins/cookie-notice/img/hu-manity-logo-white.svg new file mode 100644 index 0000000..120ed89 --- /dev/null +++ b/wp-content/plugins/cookie-notice/img/hu-manity-logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/img/icon-128x128.png b/wp-content/plugins/cookie-notice/img/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..a62d902885b1951ca8ff4ce5a69e9a123b9124e4 GIT binary patch literal 20700 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/img/icon-256x256.png b/wp-content/plugins/cookie-notice/img/icon-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..1362f99fbe443ac4e673970ed346648b83d5a3da GIT binary patch literal 63764 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/img/layout-bottom.png b/wp-content/plugins/cookie-notice/img/layout-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..1e2a550a94eba3d5de4073258ac660e89a744ac1 GIT binary patch literal 2407 zcmdT`c~BEq9A2w_QTY(&9nA ztB5CR)p`$jRf~gyDM|;WAa*=ZL=i?jTZI}1rKK+kf)@3U{@0o8%X{zpe&7DC_mY*- zvdBU1!`&eW8YGE|kc00vj;DWLFcw^xCWN3q`FNayR!C>_RHT7{s>u|LVKEp14nh2I zixE}nF&a+6v^XI^{wOLzU|cOg;wMX4Qlkjd;ZciBSnMKMoNAF?#Z@EWLU+D}2Lucl zjlvc~Dnaoq0>r7y19QhV6M>x+S}#Bp(r8#jnlN}WV={w<2;E`6Nv+|@BW83OgOvc$ z(X^4rWSY%phB<^mnzT$dm&;|cI7|*F7%+km*}h7S_KbRbMNgT;K8PUD)7&>ct*x=}~cB&8#bT>-rJiY~Z^ zAxPhcO)RMKLu9G+({zL3y)YEhw)5nWoX;AdyxW92{IrU?!N&2xCls-^Q%NfZj*qVs<*l zbR4(0p7EJIeCIm}@0?Fy=h_439$X;It{Vg_y6zy102hx5+%Pq=yM++cYbg%u(W4F! zG=4+chN_9B=*VA^@AMCmE{qgxK71xFq9-5wV%z*w{i<6Dsi7tv2nrU_!Ic&cg0HU zyoh*tHC7)|FO)LIXK0_C@GjY&7xeO{^2D%5{q#qVPfWOUB5>Ir2pLn`2X9M9j@Z|Ri~#Xa3!b6#%Yg$L?ZmmeMv5MCX+-DhhW?W&#yykdM zv{CfubTKvhYida4vB1RCp^P)%H^i)6P@P;pmXHSAf9{irTutw7za+1^{3eh8g+)~S zWVqeFC%$s(mL(AUN?S%e$;bph76Xh?2^0i*3~@ZYpzV3S5cFBKBw|{eCGUCd`6GUq z?~3}SoF8KBH|k3KdjDJb(z9{sn`ry{Q_Z z9-7f{3{TI^S=>8HFMIu=<@=TQm-i8gS#d;u-kY%UDkkL>+DdGUe17$|a*3a+{iJF0 z5LVN<^O{Qkm8+D8`mgw(4z-C~GrQ^BU-Buao;)@zaYRLFF7+%g(mQv*vhH?M&iJtKpI+^F+59r z`LD+9JtNop}GsW!%I;ODmJ|1#vB&QupQW{J>O z)&8=obl=np--gzJ){as4J09N&h|fL|(9yi|I=AVmL?{6**8VWPVcGnqHr1mm`xOvm af5Oyn6F<29Rk7aj|41U1MHEa|X8i*L! \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/img/layout-center.png b/wp-content/plugins/cookie-notice/img/layout-center.png new file mode 100644 index 0000000000000000000000000000000000000000..f1bd3815bc4654044b9b1e2d173e58c602cb76cd GIT binary patch literal 2616 zcmc&$YgiL!79Na*i&CoaR8)#_V7->yxU5MNP!hmYf*2AKC}Kh~2_xh}GC%@|3SJR) zTdTDQS{GJaprC?)s|YSA)fE(x(4~N|rQ)R+Z@^MryI%rAU39nq_IWay@0<6Wcg}gw z`A)JsEHv1`ex5x9K@ObNY#zAhm@ivA_%5qoEB)hyqnHVbl3Kn1ITdu+WD~=4x0-9J)GHi-f0!@};TqQko3*_p@i{ z>3~3qU=o5}nV{0q^-S2pO9yN7V-ifTm|*ctSi}t@u+&*E8i`CLQK_E5!c%8ZVG_NkO6P8-7~^0gI;j@b zV5nL}Fmp;`)kzo=h5=3(Cr9+?B)dvCo<0zQWJX97BAN7Sa}1Tg!`zHaG1tVYF|{sE zt(i#RjaN*-QyhVOZ+Fp4G;cHJa{s%zQu#(2IxH|52r(||8!^3pfsSv`AS525QzvPq zNMJIe!rU!Nn029tp?V}i#732fN(a0u>7Kp-!@iCNU=bdn#xwbI~n)k#B`2YC*Te$5qQf zcwQE-Nr=N@g=y7tGyz~bUT^?`6Ug$V(0qM8sl>5VK;h`X7nK{>5)4>T$yBl@1$?M{ z3YAW!(Y<|^lc{v_SUeVMa2{k5O!B|%&0S4k01qygz8ckGYOTTYXsp%4k;Jjx*fs&R z^f-ZFsWe?8HH*ZAHCnYSNs7oUX#u)1RHv3>DH1KRN&$+@gjdPsD3H@Y0LKSas1PlI zLR>-gdDAB)4gq}c&W6UhI~$083irJ?q4YO+8Y|56Zg8lHqfkzcJ9t zmWxqmw{X7aV#ZQN?a^><&n%UY*NXIc_4#p$OVSk&PS38(&HLy{_0^~q_iW-zPA!kT ze0o^~FDghBv+v^rG2z!nC>#E+L?wm?H~G`-0Yh(;uiPa zj@V1&i~D94=x0_fuDKrZROl$_XFU%H)GgSeb80DH7L_oESoQS}>-KJJ-Eei0itEuk z=o|&#OvVjg=H0mVB9F0B&${?v-th2oVavx~W{Wby-eC8Qjd=psolgct-Icz=ug``ZpYQ3tOCWp{Z5L=;JEOY0=JB1N za`yX$DZOR3+p`<@Mjbz!`Qmo6`;P-~g^QP0r|Iy8feZbkA1Ur`-_XM7_vp)a`hy22 z_gK~a-Nl_&DoD6B|LP*%TATWjdf_)`gCEA6@;zLf>h#ZfH5zRNDt6pbYwXM~SX(+h zTrjY8Q}01Ld|S;UTzR$eRdmMVb3UZ52GR66w1mC|Mr++rV{mKqPi~vU>&XL)UD(e~ z-TLca#D#lj2F=P^*FWl6o@S%h=VirdNx15^Jyi~O_ZvG+pT?9}@!KOzwV!?t;|q3O zS`tgncFFmT%QJ(_+5;zxE9$@M(S`hk#t(8#3w`Gj4_}r*$8a6AKNSV@+tu}+y#?GR z)pIJJEEs|{HZ@&ohgyixf@vl}`~2XwVfWC=V-mjx(V_Ktzd>f>nbu50-3Wx6w~@QU z?nH46L>xLQU0F^v%558_H`L`-7bP0yg<@|UzTn%ix(NTQ;QH9^8$AuQ{*sI+MptkdmYHm*z?*_Pc<{;wImow3{(JE;rxxqYbc$=u&s?bn_0ZPm#0n9}0oCL81CRP@N6s!eTm-B0Pwd9PdO z4DoQ*)uNjxBceoeu6NtvTN$O5r=Fhsv6yc25{k}^g&iIWd#|-NKoJ)kDvfTqwEEiJ z_%{6`tF(uq`@Yjt0|fcjeo*q(`~ye0I9jh}{?GDCX^;o!^H=-ptV-@1wxxM2``-MA Nj}sWmE(;K6{u>-c=fMB~ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/img/layout-center.svg b/wp-content/plugins/cookie-notice/img/layout-center.svg new file mode 100644 index 0000000..95678e8 --- /dev/null +++ b/wp-content/plugins/cookie-notice/img/layout-center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/img/layout-left.png b/wp-content/plugins/cookie-notice/img/layout-left.png new file mode 100644 index 0000000000000000000000000000000000000000..7beec6f0e2dc40c070452b55026162ca0e9a47b8 GIT binary patch literal 2390 zcmeHJ3sVzU6kdu{K}1D-)Ir^@_yWl$L6O8H2mvJ3MGOG~Dj1R_tR%ZJyFh}7Ef%ec zFHljNO4U|vsi4(C7(~Pe9V~*%C{?UhVZh2LMQSW!OK$>#6m9=NXR^Dw_dDm?bG~!# zNj8OsEF9r5(E);>5t85lDR^dCu3_(kd%<}>5d;k>B4lz#jxFXZDJ@H(qT+CtL8}8e z1POc%I)yS3XW%$oO^`yQt+X7036&6uoQttBofuCbf>ZT)SZat&nVP8NsSsb0gTTNC z1X`R?zy_^`r1=IRV&&z7@0M*8fvqM?q7ac|p|F_JQoLA{UX5~iJRZvCqFk;gu<)dfB%?5RlJryyMGr>+PAm0s893xaZ3Z1hcYhKPTMxdjC<#ag{YKK-YuPR6LWS(Bpn;P-G$E7avamIgKzlK7^XY^)QF!!uq>y8_F1s*F2m&su=&l!SQ zg0cf)*uBwYr1U!e!0UksW6excKR)SPzTY&v{Y+J~&!eG<`6oQ0E}wLdkVXf|W46uD zi3z*%f)o4jGj)rE>)JyFlIO*jK7F+M1L9eHcegowiKB7R%}JtT>%6mGOiuV|LtF*>+&0I<2FIcq z#nlndB1bBk#J~Fo(o;UB$J7+MM{CBjioR@Ix^>m{*sAFy=Jv}ImuTc#vaR{DwDwAu zNwB~mKKFQ{*?cgvW`1ru1V2|-l8@8YfnN=KU2qf)LBq#bE*ogSX#xbjcSaK6Co`Cy z+^XH|8V+54KyUnR*S;CoUU6FCDu4F&(XMG8dE!xNnX28`g3-D5&P%UpgRb6aMeHv< zow&E|E04OIwq+6Znd18G1tAdRRO{2Wp4TGDF3h=$>A$~o2wx}>Ez+Bs?z`3IoHgXF zFF1C}&3Afda#nl&jS*Was(IzX&sJo&b~RK^Gbd)(aVm4Jjx5U9M^B#7$*bBrcEf6; zaEV@>)&8Pk{PuCAV5>ZsYz`mZeafZ!=dvXaLhm-5J>gQ_?jZJYT;@63&bGzbaco6s zNl{}-mn3~nuDGTh8~4{Y)F0fcHV;k7DiQXqSa>>-y)KJm{%c3G2}N}cd5HjMHq95V zDRgtsIEYO6|29B_`eZ>0T~pF}yRzNxY01eOd-9ueRyaL*8R&br{jNxmdf!&$79)`j z5eKqmdop;-*4pLXj2OPC;?;=@qns{A3|DqsFm*J#`A#b-t3+7G)e_MZ<=M2Zhqut` z35|Jfv1Ow38-FFT>#oYPGh_G8Yc@@pX57&flb!RYwsgl~w=*$qdnM_cx}&>vdm;-D hw&ljzKt8f=n~4cQWnV|k4zm0mk_3hX6!@>q_#4ogZA1V7 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/img/layout-left.svg b/wp-content/plugins/cookie-notice/img/layout-left.svg new file mode 100644 index 0000000..95bdba6 --- /dev/null +++ b/wp-content/plugins/cookie-notice/img/layout-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/img/layout-right.png b/wp-content/plugins/cookie-notice/img/layout-right.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec5cddd5d551a1a66e23fa9425cbfe4329395ad GIT binary patch literal 2398 zcmeHIiBl726knS#HJ7Q_P^5AdjpGDWGhI9jxd1gTE#mw+He+kc=lyPN&K-+RA(@AuyK zvMDrV{%G4twh#o3mIh10!0%S`J>p~VEIl3I2SLNjiHK+>TDC|ar_^jrK_%jBy;=is z2on11HJE%Q&cKPdk|0IM)9P9TCKMth%16eLX~cLk5xh!^hp!5Wkgr-P=PM9@KU<+* z00`7LgTZ>Wilha45n|yLfOqpYiog~VW~B&;mW9G%N{hojY#%lU@w0`6T1Ao|Ofs*} z8LUJ|GQ(&DD5}%x*g9`ErB$L_KA(?rcqotO1uVR11Ib`|FOr^Srs(C6;Iv#zXc&Sb zVKXO|NTo6&1OYhQM~>@>0d|t^OCJbe>YdF2cTUIKJf(NlyHpXD9*1E|r3IMW zERqP(XemXi99LM<0(8A7O(iipOp6C7L6JpBKvEI`ZuCAWDD;Amze+m!X?#w7`EN<@+CX6oLy)~|V-6G#& z>tTMk(-n0$|HztbvyHhvK9WgwnK}08(KRh{?gMpgOo^!~^SFUu>XAT>26GM<*O=_ZN6Rt1!mSerU6@pb9p=~$aPucYl- z^ykve&T9^rO1mo0eep2mQ{s8jn>VJ&#dd~;Hz)gjo$0%^drETChQvBfO|IP$yjT%qsCxu;unEI^whQVxP~(KSd}BY{Hq5`wyn4pZ*(DLtot3~W09+A!%XMH8ZW*o z5YE+$YaUH9nTnzs=IqUY;4Wo7`6xXT{A-NV1jo=2G-{mrwu1H-I6=@ywNgnygubAo zsqWaaNT&_0)b3pOcD>c{*q^>xpLYNBrBAZDTO&tWQ$^mBM@&coy06bwe|MH`Grx#c z{UW{Y_LHT{hnSxHCahCLn3qM|c_{K9VuUT3;-H_i_!797g zK35vY>fsx8@~wLpel{^XpU%i{%gEbaM*7+}-C!Ny)-P^$Ov}or3#a$^7+pQ=>RVUk zwQb?n$5ZUMWlfcvqAT^w$#TcNSyiilJ)-e^qDDQf>GCtMbI!qud$QJ5IM_|73$3bY zuPVzEzVf%>kFCgi{W4e7y)(V~jOWzpJw>8Z6sPfmQ|9jmli~^=rEBAlr%)*WlKpm; zdsY$R^#5a!2DiI~y44L;Pw#}MbvmqW_^sejd=JZbe2sm_tE2u+oz729UA1M|Z961E zoQUCK+-;v@$>O@Ay9DO8FUP~~OiB}hsnE-O|KR5f^BQmM+nC)o+jx*$Uoy*4SA*3% zWxC#B8BSeKa4wuL^=&@E8g-BJCZBHk@%$UB?!1EdpH;4pg~sBlmskJFZ|esA^H}0o k8#BeFC&O(bv{v3VCg@U7GjG%a(AN+o4GNKz1}0?v4dkA2`2YX_ literal 0 HcmV?d00001 diff --git a/wp-content/plugins/cookie-notice/img/layout-right.svg b/wp-content/plugins/cookie-notice/img/layout-right.svg new file mode 100644 index 0000000..edddc65 --- /dev/null +++ b/wp-content/plugins/cookie-notice/img/layout-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/img/layout-top.png b/wp-content/plugins/cookie-notice/img/layout-top.png new file mode 100644 index 0000000000000000000000000000000000000000..7d9a48e58bdceae008e121b72a234868d7faa6fb GIT binary patch literal 2405 zcmdT`Yfuwc6kdx@1RYQj6?MB(UzEHMBr$(x;@wN~I*~^1v;o!N6y@w74WAPb39|#&)hDSy-(TceuC8^_}DsmadG3fLF zhaj=9L60i67y~cE)HoqQo>o*LFs_myQJxB(LNCQMcyJnpMWlsBD$}$|p$hT!u@xIc zfIx>aC~VLr612!5K`gu?@XjuC5!hnFXeCIrA`F(26b5^8JUKkX#}*b-ssvHEEU?EJ z%p{10Ve}#{H#Ietlj^}CDK(cb6biXK0aqY!2Nv$Mkzi1RJ3&ujDXbhaj8;;(p20~1 zW;xMiWHKW`5P-uy)iviVt$XKEHXLFtIy)V60tU1Bm@-US2>@)7j0MfYJ6WVQfoEVk$tzL*a}y|oZo;!}_+5T1v{s}GV( zrC}7AfF}Zs4iEB&n@&zIfp2(B$ z#uJEm)_5$|;5?{M2K_gCc2~n<;Gs~6f^nK5DWhe{y454FBvn!NRr+d0(bV*IV49*U$emmTI|KYv^9oyfOcr>oW9Jl!SLb+og;^=+wzbu<7;vL^^S}^mkL^6iI>_JY~K{u`qf;o zf?heP;q&f1B8xS*pN@K?^-=7LwW(ta0 zu0($--{7)xf3du?{QTMnN#pSLgtu?I7R<9VhFqKIb12hm(~C)(8`;aMd8c#i4jAmp zrj^$%Y>yg=wn(4*2hfvO(WB~*&WueQ%PHI2Jb&}@EAcf`35DyOw$ZW3N)7gaweF9U)*)n?*hdM5bQ7^V-7p&@AaDE1xz?KC+<&?jcO%rDYl zYP;=M=(4~$yXmPWF#Glx*=Es>Z|nvx$yz@)@1ED%Rg3foZK~mMfnoD6KfC7r+M&MVFp&uy=9Zq7R~ z`|x0o*7RvLYg~^mX(UXgPq!`3;hz?-L>=l(9Sd`V6bLlhZnXC6v%I4cEL&LIrhIEIbheqtovgij@p6H- d6oOo?O \ No newline at end of file diff --git a/wp-content/plugins/cookie-notice/img/privacy-consent-logs.png b/wp-content/plugins/cookie-notice/img/privacy-consent-logs.png new file mode 100644 index 0000000000000000000000000000000000000000..b46986c430511158da2be935fddc1ceadafb2d7d GIT binary patch literal 217699 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�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

    "; + } else { + echo '

    ' . __( "Error: WP_CACHE is not enabled in your wp-config.php file and I couldn’t modify it.", 'wp-super-cache' ) . "

    "; + echo "

    " . sprintf( __( "Edit %s and add the following line:
    define('WP_CACHE', true);
    Otherwise, WP-Cache will not be executed by WordPress core. ", 'wp-super-cache' ), $global_config_file ) . "

    "; + } + return false; + } else { + echo "
    " . __( '

    WP_CACHE constant added to wp-config.php

    If you continue to see this warning message please see point 5 of the Troubleshooting Guide. The WP_CACHE line must be moved up.', 'wp-super-cache' ) . "

    "; + } + return true; +} + +function wpsc_generate_sizes_array() { + $sizes = array(); + $cache_types = apply_filters( 'wpsc_cache_types', array( 'supercache', 'wpcache' ) ); + $cache_states = apply_filters( 'wpsc_cache_state', array( 'expired', 'cached' ) ); + foreach( $cache_types as $type ) { + reset( $cache_states ); + foreach( $cache_states as $state ) { + $sizes[ $type ][ $state ] = 0; + } + $sizes[ $type ][ 'fsize' ] = 0; + $sizes[ $type ][ 'cached_list' ] = array(); + $sizes[ $type ][ 'expired_list' ] = array(); + } + return $sizes; +} + +function wp_cache_format_fsize( $fsize ) { + if ( $fsize > 1024 ) { + $fsize = number_format( $fsize / 1024, 2 ) . "MB"; + } elseif ( $fsize != 0 ) { + $fsize = number_format( $fsize, 2 ) . "KB"; + } else { + $fsize = "0KB"; + } + return $fsize; +} + +function wp_cache_regenerate_cache_file_stats() { + global $cache_compression, $supercachedir, $file_prefix, $wp_cache_preload_on, $cache_max_time; + + if ( $supercachedir == '' ) + $supercachedir = get_supercache_dir(); + + $sizes = wpsc_generate_sizes_array(); + $now = time(); + if (is_dir( $supercachedir ) ) { + if ( $dh = opendir( $supercachedir ) ) { + while ( ( $entry = readdir( $dh ) ) !== false ) { + if ( $entry != '.' && $entry != '..' ) { + $sizes = wpsc_dirsize( trailingslashit( $supercachedir ) . $entry, $sizes ); + } + } + closedir( $dh ); + } + } + foreach( $sizes as $cache_type => $list ) { + foreach( array( 'cached_list', 'expired_list' ) as $status ) { + $cached_list = array(); + foreach( $list[ $status ] as $dir => $details ) { + if ( $details[ 'files' ] == 2 && !isset( $details[ 'upper_age' ] ) ) { + $details[ 'files' ] = 1; + } + $cached_list[ $dir ] = $details; + } + $sizes[ $cache_type ][ $status ] = $cached_list; + } + } + if ( $cache_compression ) { + $sizes[ 'supercache' ][ 'cached' ] = intval( $sizes[ 'supercache' ][ 'cached' ] / 2 ); + $sizes[ 'supercache' ][ 'expired' ] = intval( $sizes[ 'supercache' ][ 'expired' ] / 2 ); + } + $cache_stats = array( 'generated' => time(), 'supercache' => $sizes[ 'supercache' ], 'wpcache' => $sizes[ 'wpcache' ] ); + update_option( 'supercache_stats', $cache_stats ); + return $cache_stats; +} + +function wp_cache_files() { + global $cache_path, $file_prefix, $cache_max_time, $valid_nonce, $supercachedir, $super_cache_enabled, $blog_cache_dir, $cache_compression; + global $wp_cache_preload_on; + + if ( '/' != substr($cache_path, -1)) { + $cache_path .= '/'; + } + + if ( $valid_nonce ) { + if(isset($_REQUEST['wp_delete_cache'])) { + wp_cache_clean_cache($file_prefix); + $_GET[ 'action' ] = 'regenerate_cache_stats'; + } + if ( isset( $_REQUEST[ 'wp_delete_all_cache' ] ) ) { + wp_cache_clean_cache( $file_prefix, true ); + $_GET[ 'action' ] = 'regenerate_cache_stats'; + } + if(isset($_REQUEST['wp_delete_expired'])) { + wp_cache_clean_expired($file_prefix); + $_GET[ 'action' ] = 'regenerate_cache_stats'; + } + } + echo ""; + echo '
    '; + echo '

    ' . __( 'Cache Contents', 'wp-super-cache' ) . '

    '; + + $cache_stats = get_option( 'supercache_stats' ); + if ( !is_array( $cache_stats ) || ( isset( $_GET[ 'listfiles' ] ) ) || ( $valid_nonce && array_key_exists('action', $_GET) && $_GET[ 'action' ] == 'regenerate_cache_stats' ) ) { + $count = 0; + $expired = 0; + $now = time(); + $wp_cache_fsize = 0; + if ( ( $handle = @opendir( $blog_cache_dir ) ) ) { + if ( $valid_nonce && isset( $_GET[ 'action' ] ) && $_GET[ 'action' ] == 'deletewpcache' ) { + $deleteuri = wpsc_deep_replace( array( '..', '\\', 'index.php' ), preg_replace( '/[ <>\'\"\r\n\t\(\)]/', '', base64_decode( $_GET[ 'uri' ] ) ) ); + } else { + $deleteuri = ''; + } + + if ( $valid_nonce && isset( $_GET[ 'action' ] ) && $_GET[ 'action' ] == 'deletesupercache' ) { + $supercacheuri = wpsc_deep_replace( array( '..', '\\', 'index.php' ), preg_replace( '/[ <>\'\"\r\n\t\(\)]/', '', preg_replace("/(\?.*)?$/", '', base64_decode( $_GET[ 'uri' ] ) ) ) ); + $supercacheuri = trailingslashit( realpath( $cache_path . 'supercache/' . $supercacheuri ) ); + if ( wp_cache_confirm_delete( $supercacheuri ) ) { + printf( __( "Deleting supercache file: %s
    ", 'wp-super-cache' ), $supercacheuri ); + wpsc_delete_files( $supercacheuri ); + prune_super_cache( $supercacheuri . 'page', true ); + @rmdir( $supercacheuri ); + } else { + wp_die( __( 'Warning! You are not allowed to delete that file', 'wp-super-cache' ) ); + } + } + while( false !== ( $file = readdir( $handle ) ) ) { + if ( // phpcs:ignore Generic.WhiteSpace.ScopeIndent.IncorrectExact + str_contains( $file, $file_prefix ) + && substr( $file, -4 ) == '.php' // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual + ) { // phpcs:ignore Generic.WhiteSpace.ScopeIndent.Incorrect + if ( false == file_exists( $blog_cache_dir . 'meta/' . $file ) ) { + @unlink( $blog_cache_dir . $file ); + continue; // meta does not exist + } + $mtime = filemtime( $blog_cache_dir . 'meta/' . $file ); + $fsize = @filesize( $blog_cache_dir . $file ); + if ( $fsize > 0 ) + $fsize = $fsize - 15; // die() command takes 15 bytes at the start of the file + + $age = $now - $mtime; + if ( $valid_nonce && isset( $_GET[ 'listfiles' ] ) ) { + $meta = json_decode( wp_cache_get_legacy_cache( $blog_cache_dir . 'meta/' . $file ), true ); + if ( $deleteuri != '' && $meta[ 'uri' ] == $deleteuri ) { + printf( __( "Deleting wp-cache file: %s
    ", 'wp-super-cache' ), esc_html( $deleteuri ) ); + @unlink( $blog_cache_dir . 'meta/' . $file ); + @unlink( $blog_cache_dir . $file ); + continue; + } + $meta[ 'age' ] = $age; + foreach( $meta as $key => $val ) + $meta[ $key ] = esc_html( $val ); + if ( $cache_max_time > 0 && $age > $cache_max_time ) { + $expired_list[ $age ][] = $meta; + } else { + $cached_list[ $age ][] = $meta; + } + } + + if ( $cache_max_time > 0 && $age > $cache_max_time ) { + ++$expired; + } else { + ++$count; + } + $wp_cache_fsize += $fsize; + } + } + closedir($handle); + } + if( $wp_cache_fsize != 0 ) { + $wp_cache_fsize = $wp_cache_fsize/1024; + } else { + $wp_cache_fsize = 0; + } + if( $wp_cache_fsize > 1024 ) { + $wp_cache_fsize = number_format( $wp_cache_fsize / 1024, 2 ) . "MB"; + } elseif( $wp_cache_fsize != 0 ) { + $wp_cache_fsize = number_format( $wp_cache_fsize, 2 ) . "KB"; + } else { + $wp_cache_fsize = '0KB'; + } + $cache_stats = wp_cache_regenerate_cache_file_stats(); + } else { + echo "

    " . __( 'Cache stats are not automatically generated. You must click the link below to regenerate the stats on this page.', 'wp-super-cache' ) . "

    "; + echo " 'wpsupercache', 'tab' => 'contents', 'action' => 'regenerate_cache_stats' ) ), 'wp-cache' ) . "'>" . __( 'Regenerate cache stats', 'wp-super-cache' ) . ""; + if ( ! empty( $cache_stats['generated'] ) ) { + echo "

    " . sprintf( __( 'Cache stats last generated: %s minutes ago.', 'wp-super-cache' ), number_format( ( time() - $cache_stats[ 'generated' ] ) / 60 ) ) . "

    "; + } + $cache_stats = get_option( 'supercache_stats' ); + }// regerate stats cache + + if ( is_array( $cache_stats ) ) { + $fsize = wp_cache_format_fsize( $cache_stats[ 'wpcache' ][ 'fsize' ] / 1024 ); + echo "

    " . __( 'WP-Cache', 'wp-super-cache' ) . " ({$fsize})

    "; + echo "
    • " . sprintf( __( '%s Cached Pages', 'wp-super-cache' ), $cache_stats[ 'wpcache' ][ 'cached' ] ) . "
    • "; + echo "
    • " . sprintf( __( '%s Expired Pages', 'wp-super-cache' ), $cache_stats[ 'wpcache' ][ 'expired' ] ) . "
    "; + if ( array_key_exists('fsize', (array)$cache_stats[ 'supercache' ]) ) + $fsize = $cache_stats[ 'supercache' ][ 'fsize' ] / 1024; + else + $fsize = 0; + $fsize = wp_cache_format_fsize( $fsize ); + echo "

    " . __( 'WP-Super-Cache', 'wp-super-cache' ) . " ({$fsize})

    "; + echo "
    • " . sprintf( __( '%s Cached Pages', 'wp-super-cache' ), $cache_stats[ 'supercache' ][ 'cached' ] ) . "
    • "; + if ( isset( $now ) && ! empty( $cache_stats['generated'] ) ) { + $age = intval( ( $now - $cache_stats['generated'] ) / 60 ); + } else { + $age = 0; + } + echo "
    • " . sprintf( __( '%s Expired Pages', 'wp-super-cache' ), $cache_stats[ 'supercache' ][ 'expired' ] ) . "
    "; + if ( $valid_nonce && array_key_exists('listfiles', $_GET) && isset( $_GET[ 'listfiles' ] ) ) { + echo "
    "; + $cache_description = array( 'supercache' => __( 'WP-Super-Cached', 'wp-super-cache' ), 'wpcache' => __( 'WP-Cached', 'wp-super-cache' ) ); + foreach( $cache_stats as $type => $details ) { + if ( is_array( $details ) == false ) + continue; + foreach( array( 'cached_list' => 'Fresh', 'expired_list' => 'Stale' ) as $list => $description ) { + if ( is_array( $details[ $list ] ) & !empty( $details[ $list ] ) ) { + echo "
    " . sprintf( __( '%s %s Files', 'wp-super-cache' ), $description, $cache_description[ $type ] ) . "
    "; + echo ""; + $c = 1; + $flip = 1; + + ksort( $details[ $list ] ); + foreach( $details[ $list ] as $directory => $d ) { + if ( isset( $d[ 'upper_age' ] ) ) { + $age = "{$d[ 'lower_age' ]} - {$d[ 'upper_age' ]}"; + } else { + $age = $d[ 'lower_age' ]; + } + $bg = $flip ? 'style="background: #EAEAEA;"' : ''; + echo "\n"; + $flip = !$flip; + ++$c; + } + echo "
    #" . __( 'URI', 'wp-super-cache' ) . "" . __( 'Files', 'wp-super-cache' ) . "" . __( 'Age', 'wp-super-cache' ) . "" . __( 'Delete', 'wp-super-cache' ) . "
    $c {$directory}{$d[ 'files' ]}{$age} 'wpsupercache', 'action' => 'deletesupercache', 'uri' => base64_encode( $directory ) ) ), 'wp-cache' ) . "#listfiles'>X
    "; + } + } + } + echo "
    "; + echo "

    " . __( 'Hide file list', 'wp-super-cache' ) . "

    "; + } elseif ( $cache_stats[ 'supercache' ][ 'cached' ] > 500 || $cache_stats[ 'supercache' ][ 'expired' ] > 500 || $cache_stats[ 'wpcache' ][ 'cached' ] > 500 || $cache_stats[ 'wpcache' ][ 'expired' ] > 500 ) { + echo "

    " . __( 'Too many cached files, no listing possible.', 'wp-super-cache' ) . "

    "; + } else { + echo "

    'wpsupercache', 'listfiles' => '1' ) ), 'wp-cache' ) . "#listfiles'>" . __( 'List all cached files', 'wp-super-cache' ) . "

    "; + } + if ( $cache_max_time > 0 ) + echo "

    " . sprintf( __( 'Expired files are files older than %s seconds. They are still used by the plugin and are deleted periodically.', 'wp-super-cache' ), $cache_max_time ) . "

    "; + if ( $wp_cache_preload_on ) + echo "

    " . __( 'Preload mode is enabled. Supercache files will never be expired.', 'wp-super-cache' ) . "

    "; + } // cache_stats + wp_cache_delete_buttons(); + + echo '
    '; + echo '
    '; +} + +function wp_cache_delete_buttons() { + + $admin_url = admin_url( 'options-general.php?page=wpsupercache' ); + + echo '
    '; + echo ''; + echo '
    '; + wp_nonce_field('wp-cache'); + echo "
    \n"; + + echo '
    '; + echo ''; + echo '
    '; + wp_nonce_field('wp-cache'); + echo "
    \n"; + if ( is_multisite() && wpsupercache_site_admin() ) { + echo '
    '; + echo ''; + echo '
    '; + wp_nonce_field('wp-cache'); + echo "
    \n"; + } +} + +function delete_cache_dashboard() { + if ( function_exists( '_deprecated_function' ) ) { + _deprecated_function( __FUNCTION__, 'WP Super Cache 1.6.4' ); + } + + if ( false == wpsupercache_site_admin() ) + return false; + + if ( function_exists('current_user_can') && !current_user_can('manage_options') ) + return false; + + echo "
  • " . __( 'Delete Cache', 'wp-super-cache' ) . "
  • "; +} +//add_action( 'dashmenu', 'delete_cache_dashboard' ); + +function wpsc_dirsize($directory, $sizes) { + global $cache_max_time, $cache_path, $valid_nonce, $wp_cache_preload_on, $file_prefix; + $now = time(); + + if (is_dir($directory)) { + if( $dh = opendir( $directory ) ) { + while( ( $entry = readdir( $dh ) ) !== false ) { + if ($entry != '.' && $entry != '..') { + $sizes = wpsc_dirsize( trailingslashit( $directory ) . $entry, $sizes ); + } + } + closedir($dh); + } + } elseif ( is_file( $directory ) && strpos( $directory, 'meta-' . $file_prefix ) === false ) { + if ( strpos( $directory, '/' . $file_prefix ) !== false ) { + $cache_type = 'wpcache'; + } else { + $cache_type = 'supercache'; + } + $keep_fresh = false; + if ( $cache_type === 'supercache' && $wp_cache_preload_on ) { + $keep_fresh = true; + } + $filem = filemtime( $directory ); + if ( ! $keep_fresh && $cache_max_time > 0 && $filem + $cache_max_time <= $now ) { + $cache_status = 'expired'; + } else { + $cache_status = 'cached'; + } + $sizes[ $cache_type ][ $cache_status ] += 1; + // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Presumably the caller should handle it if necessary. + if ( $valid_nonce && isset( $_GET['listfiles'] ) ) { + $dir = str_replace( $cache_path . 'supercache/', '', dirname( $directory ) ); + $age = $now - $filem; + if ( ! isset( $sizes[ $cache_type ][ $cache_status . '_list' ][ $dir ] ) ) { + $sizes[ $cache_type ][ $cache_status . '_list' ][ $dir ]['lower_age'] = $age; + $sizes[ $cache_type ][ $cache_status . '_list' ][ $dir ]['files'] = 1; + } else { + $sizes[ $cache_type ][ $cache_status . '_list' ][ $dir ]['files'] += 1; + if ( $age <= $sizes[ $cache_type ][ $cache_status . '_list' ][ $dir ]['lower_age'] ) { + + if ( $age < $sizes[ $cache_type ][ $cache_status . '_list' ][ $dir ]['lower_age'] && ! isset( $sizes[ $cache_type ][ $cache_status . '_list' ][ $dir ]['upper_age'] ) ) { + $sizes[ $cache_type ][ $cache_status . '_list' ][ $dir ]['upper_age'] = $sizes[ $cache_type ][ $cache_status . '_list' ][ $dir ]['lower_age']; + } + + $sizes[ $cache_type ][ $cache_status . '_list' ][ $dir ]['lower_age'] = $age; + + } elseif ( ! isset( $sizes[ $cache_type ][ $cache_status . '_list' ][ $dir ]['upper_age'] ) || $age > $sizes[ $cache_type ][ $cache_status . '_list' ][ $dir ]['upper_age'] ) { + + $sizes[ $cache_type ][ $cache_status . '_list' ][ $dir ]['upper_age'] = $age; + + } + } + } + if ( ! isset( $sizes['fsize'] ) ) { + // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged + $sizes[ $cache_type ]['fsize'] = @filesize( $directory ); + } else { + // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged + $sizes[ $cache_type ]['fsize'] += @filesize( $directory ); + } + } + return $sizes; +} + +function wp_cache_clean_cache( $file_prefix, $all = false ) { + global $cache_path, $supercachedir, $blog_cache_dir; + + do_action( 'wp_cache_cleared' ); + + if ( $all == true && wpsupercache_site_admin() && function_exists( 'prune_super_cache' ) ) { + prune_super_cache( $cache_path, true ); + return true; + } + if ( $supercachedir == '' ) + $supercachedir = get_supercache_dir(); + + if (function_exists ('prune_super_cache')) { + if( is_dir( $supercachedir ) ) { + prune_super_cache( $supercachedir, true ); + } elseif( is_dir( $supercachedir . '.disabled' ) ) { + prune_super_cache( $supercachedir . '.disabled', true ); + } + $_POST[ 'super_cache_stats' ] = 1; // regenerate super cache stats; + } else { + wp_cache_debug( 'Warning! prune_super_cache() not found in wp-cache.php', 1 ); + } + + wp_cache_clean_legacy_files( $blog_cache_dir, $file_prefix ); + wp_cache_clean_legacy_files( $cache_path, $file_prefix ); +} + +function wpsc_delete_post_cache( $id ) { + $post = get_post( $id ); + wpsc_delete_url_cache( get_author_posts_url( (int) $post->post_author ) ); + $permalink = get_permalink( $id ); + if ( $permalink != '' ) { + wpsc_delete_url_cache( $permalink ); + return true; + } else { + return false; + } +} + +function wp_cache_clean_legacy_files( $dir, $file_prefix ) { + global $wpdb; + + $dir = trailingslashit( $dir ); + if ( @is_dir( $dir . 'meta' ) == false ) + return false; + + if ( $handle = @opendir( $dir ) ) { + $curr_blog_id = is_multisite() ? get_current_blog_id() : false; + + while ( false !== ( $file = readdir( $handle ) ) ) { + if ( is_file( $dir . $file ) == false || $file == 'index.html' ) { + continue; + } + + if ( str_contains( $file, $file_prefix ) ) { + if ( strpos( $file, '.html' ) ) { + // delete old WPCache files immediately + @unlink( $dir . $file); + @unlink( $dir . 'meta/' . str_replace( '.html', '.meta', $file ) ); + } else { + $meta = json_decode( wp_cache_get_legacy_cache( $dir . 'meta/' . $file ), true ); + if ( $curr_blog_id && $curr_blog_id !== (int) $meta['blog_id'] ) { + continue; + } + @unlink( $dir . $file); + @unlink( $dir . 'meta/' . $file); + } + } + } + closedir($handle); + } +} + +function wp_cache_clean_expired($file_prefix) { + global $cache_max_time, $blog_cache_dir, $wp_cache_preload_on; + + if ( $cache_max_time == 0 ) { + return false; + } + + // If phase2 was compiled, use its function to avoid race-conditions + if(function_exists('wp_cache_phase2_clean_expired')) { + if ( $wp_cache_preload_on != 1 && function_exists ('prune_super_cache')) { + $dir = get_supercache_dir(); + if( is_dir( $dir ) ) { + prune_super_cache( $dir ); + } elseif( is_dir( $dir . '.disabled' ) ) { + prune_super_cache( $dir . '.disabled' ); + } + $_POST[ 'super_cache_stats' ] = 1; // regenerate super cache stats; + } + return wp_cache_phase2_clean_expired($file_prefix); + } + + $now = time(); + if ( $handle = @opendir( $blog_cache_dir ) ) { + while ( false !== ( $file = readdir( $handle ) ) ) { + if ( str_contains( $file, $file_prefix ) ) { + if ( strpos( $file, '.html' ) ) { + @unlink( $blog_cache_dir . $file); + @unlink( $blog_cache_dir . 'meta/' . str_replace( '.html', '.meta', $file ) ); + } elseif ( ( filemtime( $blog_cache_dir . $file ) + $cache_max_time ) <= $now ) { + @unlink( $blog_cache_dir . $file ); + @unlink( $blog_cache_dir . 'meta/' . $file ); + } + } + } + closedir($handle); + } +} + +function wpsc_remove_marker( $filename, $marker ) { + if (!file_exists( $filename ) || is_writeable_ACLSafe( $filename ) ) { + if (!file_exists( $filename ) ) { + return ''; + } else { + $markerdata = explode( "\n", implode( '', file( $filename ) ) ); + } + + $f = fopen( $filename, 'w' ); + $state = true; + foreach ( $markerdata as $n => $markerline ) { + if ( strpos( $markerline, '# BEGIN ' . $marker ) !== false ) { + $state = false; + } + if ( $state ) { + if ( $n + 1 < count( $markerdata ) ) { + fwrite( $f, "{$markerline}\n" ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fwrite + } else { + fwrite( $f, "{$markerline}" ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fwrite + } + } + if ( strpos( $markerline, '# END ' . $marker ) !== false ) { + $state = true; + } + } + return true; + } else { + return false; + } +} + +if( get_option( 'gzipcompression' ) ) + update_option( 'gzipcompression', 0 ); + +// Catch 404 requests. Themes that use query_posts() destroy $wp_query->is_404 +function wp_cache_catch_404() { + global $wp_cache_404; + if ( function_exists( '_deprecated_function' ) ) + _deprecated_function( __FUNCTION__, 'WP Super Cache 1.5.6' ); + $wp_cache_404 = false; + if( is_404() ) + $wp_cache_404 = true; +} +//More info - https://github.com/Automattic/wp-super-cache/pull/373 +//add_action( 'template_redirect', 'wp_cache_catch_404' ); + +function wp_cache_favorite_action( $actions ) { + if ( function_exists( '_deprecated_function' ) ) { + _deprecated_function( __FUNCTION__, 'WP Super Cache 1.6.4' ); + } + + if ( false == wpsupercache_site_admin() ) + return $actions; + + if ( function_exists('current_user_can') && !current_user_can('manage_options') ) + return $actions; + + $actions[ wp_nonce_url( 'options-general.php?page=wpsupercache&wp_delete_cache=1&tab=contents', 'wp-cache' ) ] = array( __( 'Delete Cache', 'wp-super-cache' ), 'manage_options' ); + + return $actions; +} +//add_filter( 'favorite_actions', 'wp_cache_favorite_action' ); + +function wp_cache_plugin_notice( $plugin ) { + global $cache_enabled; + if( $plugin == 'wp-super-cache/wp-cache.php' && !$cache_enabled && function_exists( 'admin_url' ) ) + echo '' . sprintf( __( 'WP Super Cache must be configured. Go to the admin page to enable and configure the plugin.', 'wp-super-cache' ), admin_url( 'options-general.php?page=wpsupercache' ) ) . ''; +} +add_action( 'after_plugin_row', 'wp_cache_plugin_notice' ); + +function wp_cache_plugin_actions( $links, $file ) { + if ( $file === 'wp-super-cache/wp-cache.php' && function_exists( 'admin_url' ) && is_array( $links ) ) { + $settings_link = '' . __( 'Settings', 'wp-super-cache' ) . ''; + array_unshift( $links, $settings_link ); // before other links + } + return $links; +} +add_filter( 'plugin_action_links', 'wp_cache_plugin_actions', 10, 2 ); + +function wp_cache_admin_notice() { + global $cache_enabled, $wp_cache_phase1_loaded; + if( substr( $_SERVER['PHP_SELF'], -11 ) == 'plugins.php' && !$cache_enabled && function_exists( 'admin_url' ) ) + echo '

    ' . sprintf( __('WP Super Cache is disabled. Please go to the plugin admin page to enable caching.', 'wp-super-cache' ), admin_url( 'options-general.php?page=wpsupercache' ) ) . '

    '; + + if ( defined( 'WP_CACHE' ) && WP_CACHE == true && ( defined( 'ADVANCEDCACHEPROBLEM' ) || ( $cache_enabled && false == isset( $wp_cache_phase1_loaded ) ) ) ) { + if ( wp_cache_create_advanced_cache() ) { + echo '

    ' . sprintf( __( 'Warning! WP Super Cache caching was broken but has been fixed! The script advanced-cache.php could not load wp-cache-phase1.php.

    The file %1$s/advanced-cache.php has been recreated and WPCACHEHOME fixed in your wp-config.php. Reload to hide this message.', 'wp-super-cache' ), WP_CONTENT_DIR ) . '

    '; + } + } +} +add_action( 'admin_notices', 'wp_cache_admin_notice' ); + +function wp_cache_check_site() { + global $wp_super_cache_front_page_check, $wp_super_cache_front_page_clear, $wp_super_cache_front_page_text, $wp_super_cache_front_page_notification, $wpdb; + + if ( empty( $wp_super_cache_front_page_check ) ) { + return false; + } + + if ( function_exists( "wp_remote_get" ) == false ) { + return false; + } + $front_page = wp_remote_get( site_url(), array('timeout' => 60, 'blocking' => true ) ); + if( is_array( $front_page ) ) { + // Check for gzipped front page + if ( $front_page[ 'headers' ][ 'content-type' ] == 'application/x-gzip' ) { + if ( ! isset( $wp_super_cache_front_page_clear ) || $wp_super_cache_front_page_clear === 0 ) { + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%s] Front page is gzipped! Please clear cache!', 'wp-super-cache' ), home_url() ), sprintf( __( "Please visit %s to clear the cache as the front page of your site is now downloading!", 'wp-super-cache' ), admin_url( 'options-general.php?page=wpsupercache' ) ) ); + } else { + wp_cache_clear_cache( $wpdb->blogid ); + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%s] Front page is gzipped! Cache Cleared!', 'wp-super-cache' ), home_url() ), sprintf( __( "The cache on your blog has been cleared because the front page of your site is now downloading. Please visit %s to verify the cache has been cleared.", 'wp-super-cache' ), admin_url( 'options-general.php?page=wpsupercache' ) ) ); + } + } + + // Check for broken front page + if ( + ! empty( $wp_super_cache_front_page_text ) + && ! str_contains( $front_page['body'], $wp_super_cache_front_page_text ) + ) { + if ( ! isset( $wp_super_cache_front_page_clear ) || $wp_super_cache_front_page_clear === 0 ) { + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%s] Front page is not correct! Please clear cache!', 'wp-super-cache' ), home_url() ), sprintf( __( 'Please visit %1$s to clear the cache as the front page of your site is not correct and missing the text, "%2$s"!', 'wp-super-cache' ), admin_url( 'options-general.php?page=wpsupercache' ), $wp_super_cache_front_page_text ) ); + } else { + wp_cache_clear_cache( $wpdb->blogid ); + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%s] Front page is not correct! Cache Cleared!', 'wp-super-cache' ), home_url() ), sprintf( __( 'The cache on your blog has been cleared because the front page of your site is missing the text "%2$s". Please visit %1$s to verify the cache has been cleared.', 'wp-super-cache' ), admin_url( 'options-general.php?page=wpsupercache' ), $wp_super_cache_front_page_text ) ); + } + } + } + if ( isset( $wp_super_cache_front_page_notification ) && $wp_super_cache_front_page_notification == 1 ) { + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%s] Front page check!', 'wp-super-cache' ), home_url() ), sprintf( __( "WP Super Cache has checked the front page of your blog. Please visit %s if you would like to disable this.", 'wp-super-cache' ) . "\n\n", admin_url( 'options-general.php?page=wpsupercache' ) ) ); + } + + if ( !wp_next_scheduled( 'wp_cache_check_site_hook' ) ) { + wp_schedule_single_event( time() + 360 , 'wp_cache_check_site_hook' ); + wp_cache_debug( 'scheduled wp_cache_check_site_hook for 360 seconds time.', 2 ); + } +} +add_action( 'wp_cache_check_site_hook', 'wp_cache_check_site' ); + +function update_cached_mobile_ua_list( $mobile_browsers, $mobile_prefixes = 0, $mobile_groups = 0 ) { + global $wp_cache_config_file, $wp_cache_mobile_browsers, $wp_cache_mobile_prefixes, $wp_cache_mobile_groups; + wp_cache_setting( 'wp_cache_mobile_browsers', $mobile_browsers ); + wp_cache_setting( 'wp_cache_mobile_prefixes', $mobile_prefixes ); + if ( is_array( $mobile_groups ) ) { + $wp_cache_mobile_groups = $mobile_groups; + wp_cache_replace_line('^ *\$wp_cache_mobile_groups', "\$wp_cache_mobile_groups = '" . implode( ', ', $mobile_groups ) . "';", $wp_cache_config_file); + } + + return true; +} + +function wpsc_update_htaccess() { + extract( wpsc_get_htaccess_info() ); // $document_root, $apache_root, $home_path, $home_root, $home_root_lc, $inst_root, $wprules, $scrules, $condition_rules, $rules, $gziprules + // @phan-suppress-next-line PhanTypeSuspiciousStringExpression -- $home_path is set via extract() + wpsc_remove_marker( $home_path.'.htaccess', 'WordPress' ); // remove original WP rules so SuperCache rules go on top + // @phan-suppress-next-line PhanTypeSuspiciousStringExpression -- $home_path is set via extract() + if( insert_with_markers( $home_path.'.htaccess', 'WPSuperCache', explode( "\n", $rules ) ) && insert_with_markers( $home_path.'.htaccess', 'WordPress', explode( "\n", $wprules ) ) ) { + return true; + } else { + return false; + } +} + +function wpsc_update_htaccess_form( $short_form = true ) { + global $wpmu_version; + + $admin_url = admin_url( 'options-general.php?page=wpsupercache' ); + extract( wpsc_get_htaccess_info() ); // $document_root, $apache_root, $home_path, $home_root, $home_root_lc, $inst_root, $wprules, $scrules, $condition_rules, $rules, $gziprules + // @phan-suppress-next-line PhanTypeSuspiciousStringExpression -- $home_path is set via extract() + if( !is_writeable_ACLSafe( $home_path . ".htaccess" ) ) { + echo "
    " . __( 'Cannot update .htaccess', 'wp-super-cache' ) . "

    " . sprintf( __( 'The file %s.htaccess cannot be modified by the web server. Please correct this using the chmod command or your ftp client.', 'wp-super-cache' ), $home_path ) . "

    " . __( 'Refresh this page when the file permissions have been modified.' ) . "

    " . sprintf( __( 'Alternatively, you can edit your %s.htaccess file manually and add the following code (before any WordPress rules):', 'wp-super-cache' ), $home_path ) . "

    "; + echo "

    # BEGIN WPSuperCache\n" . esc_html( $rules ) . "# END WPSuperCache

    "; + } else { + if ( $short_form == false ) { + echo "

    " . sprintf( __( 'To serve static html files your server must have the correct mod_rewrite rules added to a file called %s.htaccess', 'wp-super-cache' ), $home_path ) . " "; + _e( "You can edit the file yourself. Add the following rules.", 'wp-super-cache' ); + echo __( " Make sure they appear before any existing WordPress rules. ", 'wp-super-cache' ) . "

    "; + echo "
    "; + echo "
    # BEGIN WPSuperCache\n" . esc_html( $rules ) . "# END WPSuperCache

    "; + echo "
    "; + echo "
    " . sprintf( __( 'Rules must be added to %s too:', 'wp-super-cache' ), WP_CONTENT_DIR . "/cache/.htaccess" ) . "
    "; + echo "
    "; + echo "
    # BEGIN supercache\n" . esc_html( $gziprules ) . "# END supercache

    "; + echo "
    "; + } + if ( !isset( $wpmu_version ) || $wpmu_version == '' ) { + echo '
    '; + echo ''; + echo '
    '; + wp_nonce_field('wp-cache'); + echo "
    \n"; + } + } +} + +/* + * Return LOGGED_IN_COOKIE if it doesn't begin with wordpress_logged_in + * to avoid having people update their .htaccess file + */ +function wpsc_get_logged_in_cookie() { + $logged_in_cookie = 'wordpress_logged_in'; + if ( defined( 'LOGGED_IN_COOKIE' ) && substr( constant( 'LOGGED_IN_COOKIE' ), 0, 19 ) != 'wordpress_logged_in' ) + $logged_in_cookie = constant( 'LOGGED_IN_COOKIE' ); + return $logged_in_cookie; +} + +function wpsc_get_htaccess_info() { + global $wp_cache_mobile_enabled, $wp_cache_mobile_prefixes, $wp_cache_mobile_browsers, $wp_cache_disable_utf8; + global $htaccess_path; + + if ( isset( $_SERVER[ "PHP_DOCUMENT_ROOT" ] ) ) { + $document_root = $_SERVER[ "PHP_DOCUMENT_ROOT" ]; + $apache_root = $_SERVER[ "PHP_DOCUMENT_ROOT" ]; + } else { + $document_root = $_SERVER[ "DOCUMENT_ROOT" ]; + $apache_root = '%{DOCUMENT_ROOT}'; + } + $content_dir_root = $document_root; + if ( strpos( $document_root, '/kunden/homepages/' ) === 0 ) { + // https://wordpress.org/support/topic/plugin-wp-super-cache-how-to-get-mod_rewrite-working-on-1and1-shared-hosting?replies=1 + // On 1and1, PHP's directory structure starts with '/homepages'. The + // Apache directory structure has an extra '/kunden' before it. + // Also 1and1 does not support the %{DOCUMENT_ROOT} variable in + // .htaccess files. + // This prevents the $inst_root from being calculated correctly and + // means that the $apache_root is wrong. + // + // e.g. This is an example of how Apache and PHP see the directory + // structure on 1and1: + // Apache: /kunden/homepages/xx/dxxxxxxxx/htdocs/site1/index.html + // PHP: /homepages/xx/dxxxxxxxx/htdocs/site1/index.html + // Here we fix up the paths to make mode_rewrite work on 1and1 shared hosting. + $content_dir_root = substr( $content_dir_root, 7 ); + $apache_root = $document_root; + } + $home_path = get_home_path(); + $home_root = parse_url(get_bloginfo('url')); + $home_root = isset( $home_root[ 'path' ] ) ? trailingslashit( $home_root[ 'path' ] ) : '/'; + if ( isset( $htaccess_path ) ) { + $home_path = $htaccess_path; + } elseif ( + $home_root == '/' && + $home_path != $_SERVER[ 'DOCUMENT_ROOT' ] + ) { + $home_path = $_SERVER[ 'DOCUMENT_ROOT' ]; + } elseif ( + $home_root != '/' && + $home_path != str_replace( '//', '/', $_SERVER[ 'DOCUMENT_ROOT' ] . $home_root ) && + is_dir( $_SERVER[ 'DOCUMENT_ROOT' ] . $home_root ) + ) { + $home_path = str_replace( '//', '/', $_SERVER[ 'DOCUMENT_ROOT' ] . $home_root ); + } + + $home_path = trailingslashit( $home_path ); + $home_root_lc = str_replace( '//', '/', strtolower( $home_root ) ); + $inst_root = str_replace( '//', '/', '/' . trailingslashit( str_replace( $content_dir_root, '', str_replace( '\\', '/', WP_CONTENT_DIR ) ) ) ); + $wprules = implode( "\n", extract_from_markers( $home_path.'.htaccess', 'WordPress' ) ); + $wprules = str_replace( "RewriteEngine On\n", '', $wprules ); + $wprules = str_replace( "RewriteBase $home_root\n", '', $wprules ); + $scrules = implode( "\n", extract_from_markers( $home_path.'.htaccess', 'WPSuperCache' ) ); + + if( substr( get_option( 'permalink_structure' ), -1 ) == '/' ) { + $condition_rules[] = "RewriteCond %{REQUEST_URI} !^.*[^/]$"; + $condition_rules[] = "RewriteCond %{REQUEST_URI} !^.*//.*$"; + } + $condition_rules[] = "RewriteCond %{REQUEST_METHOD} !POST"; + $condition_rules[] = "RewriteCond %{QUERY_STRING} ^$"; + $condition_rules[] = "RewriteCond %{HTTP:Cookie} !^.*(comment_author_|" . wpsc_get_logged_in_cookie() . wpsc_get_extra_cookies() . "|wp-postpass_).*$"; + $condition_rules[] = "RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\\\"]+ [NC]"; + $condition_rules[] = "RewriteCond %{HTTP:Profile} !^[a-z0-9\\\"]+ [NC]"; + if ( $wp_cache_mobile_enabled ) { + if ( isset( $wp_cache_mobile_browsers ) && "" != $wp_cache_mobile_browsers ) + $condition_rules[] = "RewriteCond %{HTTP_USER_AGENT} !^.*(" . addcslashes( str_replace( ', ', '|', $wp_cache_mobile_browsers ), ' ' ) . ").* [NC]"; + if ( isset( $wp_cache_mobile_prefixes ) && "" != $wp_cache_mobile_prefixes ) + $condition_rules[] = "RewriteCond %{HTTP_USER_AGENT} !^(" . addcslashes( str_replace( ', ', '|', $wp_cache_mobile_prefixes ), ' ' ) . ").* [NC]"; + } + $condition_rules = apply_filters( 'supercacherewriteconditions', $condition_rules ); + + $rules = "\n"; + $rules .= "RewriteEngine On\n"; + $rules .= "RewriteBase $home_root\n"; // props Chris Messina + $rules .= "#If you serve pages from behind a proxy you may want to change 'RewriteCond %{HTTPS} on' to something more sensible\n"; + if ( isset( $wp_cache_disable_utf8 ) == false || $wp_cache_disable_utf8 == 0 ) { + $charset = get_option('blog_charset') == '' ? 'UTF-8' : get_option('blog_charset'); + $rules .= "AddDefaultCharset {$charset}\n"; + } + + $rules .= "CONDITION_RULES"; + $rules .= "RewriteCond %{HTTP:Accept-Encoding} gzip\n"; + $rules .= "RewriteCond %{HTTPS} on\n"; + $rules .= "RewriteCond {$apache_root}{$inst_root}cache/supercache/%{SERVER_NAME}{$home_root_lc}$1/index-https.html.gz -f\n"; + $rules .= "RewriteRule ^(.*) \"{$inst_root}cache/supercache/%{SERVER_NAME}{$home_root_lc}$1/index-https.html.gz\" [L]\n\n"; + + $rules .= "CONDITION_RULES"; + $rules .= "RewriteCond %{HTTP:Accept-Encoding} gzip\n"; + $rules .= "RewriteCond %{HTTPS} !on\n"; + $rules .= "RewriteCond {$apache_root}{$inst_root}cache/supercache/%{SERVER_NAME}{$home_root_lc}$1/index.html.gz -f\n"; + $rules .= "RewriteRule ^(.*) \"{$inst_root}cache/supercache/%{SERVER_NAME}{$home_root_lc}$1/index.html.gz\" [L]\n\n"; + + $rules .= "CONDITION_RULES"; + $rules .= "RewriteCond %{HTTPS} on\n"; + $rules .= "RewriteCond {$apache_root}{$inst_root}cache/supercache/%{SERVER_NAME}{$home_root_lc}$1/index-https.html -f\n"; + $rules .= "RewriteRule ^(.*) \"{$inst_root}cache/supercache/%{SERVER_NAME}{$home_root_lc}$1/index-https.html\" [L]\n\n"; + + $rules .= "CONDITION_RULES"; + $rules .= "RewriteCond %{HTTPS} !on\n"; + $rules .= "RewriteCond {$apache_root}{$inst_root}cache/supercache/%{SERVER_NAME}{$home_root_lc}$1/index.html -f\n"; + $rules .= "RewriteRule ^(.*) \"{$inst_root}cache/supercache/%{SERVER_NAME}{$home_root_lc}$1/index.html\" [L]\n"; + $rules .= "\n"; + $rules = apply_filters( 'supercacherewriterules', $rules ); + + $rules = str_replace( "CONDITION_RULES", implode( "\n", $condition_rules ) . "\n", $rules ); + + $gziprules = "\n \n ForceType text/html\n FileETag None\n \n AddEncoding gzip .gz\n AddType text/html .gz\n\n"; + $gziprules .= "\n SetEnvIfNoCase Request_URI \.gz$ no-gzip\n\n"; + + // Default headers. + $headers = array( + 'Vary' => 'Accept-Encoding, Cookie', + 'Cache-Control' => 'max-age=3, must-revalidate', + ); + + // Allow users to override the Vary header with WPSC_VARY_HEADER. + if ( defined( 'WPSC_VARY_HEADER' ) && ! empty( WPSC_VARY_HEADER ) ) { + $headers['Vary'] = WPSC_VARY_HEADER; + } + + // Allow users to override Cache-control header with WPSC_CACHE_CONTROL_HEADER + if ( defined( 'WPSC_CACHE_CONTROL_HEADER' ) && ! empty( WPSC_CACHE_CONTROL_HEADER ) ) { + $headers['Cache-Control'] = WPSC_CACHE_CONTROL_HEADER; + } + + // Allow overriding headers with a filter. + $headers = apply_filters( 'wpsc_htaccess_mod_headers', $headers ); + + // Combine headers into a block of text. + $headers_text = implode( + "\n", + array_map( + function ( $key, $value ) { + return " Header set $key '" . addcslashes( $value, "'" ) . "'"; + }, + array_keys( $headers ), + array_values( $headers ) + ) + ); + + // Pack headers into gziprules (for historic reasons) - TODO refactor the values + // returned to better reflect the blocks being written. + if ( $headers_text != '' ) { + $gziprules .= "\n$headers_text\n\n"; + } + + // Deafult mod_expires rules. + $expires_rules = array( + 'ExpiresActive On', + 'ExpiresByType text/html A3', + ); + + // Allow overriding mod_expires rules with a filter. + $expires_rules = apply_filters( 'wpsc_htaccess_mod_expires', $expires_rules ); + + $gziprules .= "\n"; + $gziprules .= implode( + "\n", + array_map( + function ( $line ) { + return " $line"; + }, + $expires_rules + ) + ); + $gziprules .= "\n\n"; + + $gziprules .= "Options -Indexes\n"; + + return array( + 'document_root' => $document_root, + 'apache_root' => $apache_root, + 'home_path' => $home_path, + 'home_root' => $home_root, + 'home_root_lc' => $home_root_lc, + 'inst_root' => $inst_root, + 'wprules' => $wprules, + 'scrules' => $scrules, + 'condition_rules' => $condition_rules, + 'rules' => $rules, + 'gziprules' => $gziprules, + ); +} + +function clear_post_supercache( $post_id ) { + $dir = get_current_url_supercache_dir( $post_id ); + if ( false == @is_dir( $dir ) ) + return false; + + if ( get_supercache_dir() == $dir ) { + wp_cache_debug( "clear_post_supercache: not deleting post_id $post_id as it points at homepage: $dir" ); + return false; + } + + wp_cache_debug( "clear_post_supercache: post_id: $post_id. deleting files in $dir" ); + if ( get_post_type( $post_id ) != 'page') { // don't delete child pages if they exist + prune_super_cache( $dir, true ); + } else { + wpsc_delete_files( $dir ); + } +} + +/** + * Serves an AJAX endpoint to return the current state of the preload process. + */ +function wpsc_ajax_get_preload_status() { + check_ajax_referer( 'wpsc-get-preload-status' ); + + if ( ! current_user_can( 'manage_options' ) ) { + wp_send_json_error( null, 403 ); + } + + $preload_status = wpsc_get_preload_status( true ); + wp_send_json_success( $preload_status, null, JSON_UNESCAPED_SLASHES ); +} +add_action( 'wp_ajax_wpsc_get_preload_status', 'wpsc_ajax_get_preload_status' ); + +/** + * Returns the location of the preload status file. + */ +function wpsc_get_preload_status_file_path() { + global $cache_path; + return $cache_path . 'preload_permalink.txt'; +} + +/** + * Get the timestamp of the next preload. + */ +function wpsc_get_next_preload_time() { + $next = wp_next_scheduled( 'wp_cache_preload_hook' ); + if ( ! $next ) { + $next = wp_next_scheduled( 'wp_cache_full_preload_hook' ); + } + + return $next; +} + +/** + * Read the preload status. Caches the result in a static variable. + */ +function wpsc_get_preload_status( $include_next = false ) { + $status = array( + 'running' => false, + 'history' => array(), + 'next' => false, + 'previous' => null, + ); + + $filename = wpsc_get_preload_status_file_path(); + if ( file_exists( $filename ) ) { + $data = wp_json_file_decode( $filename, array( 'associative' => true ) ); + if ( is_array( $data ) ) { + $status = $data; + } + } + + if ( $include_next ) { + $status['next'] = wpsc_get_next_preload_time(); + } + + return $status; +} + +/** + * Update the preload status file during a preload. + */ +function wpsc_update_active_preload( $group = null, $progress = null, $url = null ) { + $preload_status = wpsc_get_preload_status(); + + $preload_status['running'] = true; + + // Add the new entry to the history. + array_unshift( + $preload_status['history'], + array( + 'group' => $group, + 'progress' => $progress, + 'url' => $url, + ) + ); + + // Limit to 5 in the history. + $preload_status['history'] = array_slice( $preload_status['history'], 0, 5 ); + + $filename = wpsc_get_preload_status_file_path(); + // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_file_put_contents + if ( false === file_put_contents( $filename, wp_json_encode( $preload_status, JSON_UNESCAPED_SLASHES ) ) ) { + wp_cache_debug( "wpsc_update_active_preload: failed to write to $filename" ); + } +} + +/** + * Update the preload status to indicate it is idle. If a finish time is specified, store it. + */ +function wpsc_update_idle_preload( $finish_time = null ) { + $preload_status = wpsc_get_preload_status(); + + $preload_status['running'] = false; + $preload_status['history'] = array(); + + if ( ! empty( $finish_time ) ) { + $preload_status['previous'] = $finish_time; + } + + $filename = wpsc_get_preload_status_file_path(); + // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_file_put_contents + if ( false === file_put_contents( $filename, wp_json_encode( $preload_status, JSON_UNESCAPED_SLASHES ) ) ) { + wp_cache_debug( "wpsc_update_idle_preload: failed to write to $filename" ); + } +} + +function wp_cron_preload_cache() { + global $wpdb, $wp_cache_preload_interval, $wp_cache_preload_posts, $wp_cache_preload_email_me, $wp_cache_preload_email_volume, $cache_path, $wp_cache_preload_taxonomies; + + // check if stop_preload.txt exists and preload should be stopped. + // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged + if ( @file_exists( $cache_path . 'stop_preload.txt' ) ) { + wp_cache_debug( 'wp_cron_preload_cache: preload cancelled. Aborting preload.' ); + wpsc_reset_preload_settings(); + return true; + } + + /* + * The mutex file is used to prevent multiple preload processes from running at the same time. + * If the mutex file is found, the preload process will wait 3-8 seconds and then check again. + * If the mutex file is still found, the preload process will abort. + * If the mutex file is not found, the preload process will create the mutex file and continue. + * The mutex file is deleted at the end of the preload process. + * The mutex file is deleted if it is more than 10 minutes old. + * The mutex file should only be deleted by the preload process that created it. + * If the mutex file is deleted by another process, another preload process may start. + */ + $mutex = $cache_path . "preload_mutex.tmp"; + if ( @file_exists( $mutex ) ) { // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged + sleep( 3 + wp_rand( 1, 5 ) ); + // check again just in case another preload process is still running. + if ( @file_exists( $mutex ) && @filemtime( $mutex ) > ( time() - 600 ) ) { // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged + wp_cache_debug( 'wp_cron_preload_cache: preload mutex found and less than 600 seconds old. Aborting preload.', 1 ); + return true; + } else { + wp_cache_debug( 'wp_cron_preload_cache: old preload mutex found and deleted. Preload continues.', 1 ); + @unlink( $mutex ); + } + } + $fp = @fopen( $mutex, 'w' ); + @fclose( $fp ); + + $counter = get_option( 'preload_cache_counter' ); + $c = $counter[ 'c' ]; + + if ( $wp_cache_preload_email_volume == 'none' && $wp_cache_preload_email_me == 1 ) { + $wp_cache_preload_email_me = 0; + wp_cache_setting( 'wp_cache_preload_email_me', 0 ); + } + + $just_started_preloading = false; + + /* + * Preload taxonomies first. + * + */ + if ( isset( $wp_cache_preload_taxonomies ) && $wp_cache_preload_taxonomies ) { + wp_cache_debug( 'wp_cron_preload_cache: doing taxonomy preload.', 5 ); + $taxonomies = apply_filters( + 'wp_cache_preload_taxonomies', + array( + 'post_tag' => 'tag', + 'category' => 'category', + ) + ); + + $preload_more_taxonomies = false; + + foreach ( $taxonomies as $taxonomy => $path ) { + $taxonomy_filename = $cache_path . 'taxonomy_' . $taxonomy . '.txt'; + + // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged + if ( false === @file_exists( $taxonomy_filename ) ) { + + if ( ! $just_started_preloading && $wp_cache_preload_email_me ) { + // translators: 1: site url + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%1$s] Cache Preload Started', 'wp-super-cache' ), home_url(), '' ), ' ' ); + } + + $just_started_preloading = true; + $out = ''; + $records = get_terms( $taxonomy ); + foreach ( $records as $term ) { + $out .= get_term_link( $term ) . "\n"; + } + // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fopen + $fp = fopen( $taxonomy_filename, 'w' ); + if ( $fp ) { + // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fwrite + fwrite( $fp, $out ); + // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fclose + fclose( $fp ); + } + $details = explode( "\n", $out ); + } else { + // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents + $details = explode( "\n", file_get_contents( $taxonomy_filename ) ); + } + if ( count( $details ) > 0 && $details[0] !== '' ) { + $rows = array_splice( $details, 0, WPSC_PRELOAD_POST_COUNT ); + if ( $wp_cache_preload_email_me && $wp_cache_preload_email_volume === 'many' ) { + // translators: 1: Site URL, 2: Taxonomy name, 3: Number of posts done, 4: Number of posts to preload + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%1$s] Refreshing %2$s taxonomy from %3$d to %4$d', 'wp-super-cache' ), home_url(), $taxonomy, $c, ( $c + WPSC_PRELOAD_POST_COUNT ) ), 'Refreshing: ' . print_r( $rows, 1 ) ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r + } + + foreach ( $rows as $url ) { + set_time_limit( 60 ); + if ( $url === '' ) { + continue; + } + + $url_info = wp_parse_url( $url ); + $dir = get_supercache_dir() . $url_info['path']; + wp_cache_debug( "wp_cron_preload_cache: delete $dir" ); + wpsc_delete_files( $dir ); + prune_super_cache( trailingslashit( $dir ) . 'feed/', true ); + prune_super_cache( trailingslashit( $dir ) . 'page/', true ); + + wpsc_update_active_preload( 'taxonomies', $taxonomy, $url ); + + wp_remote_get( + $url, + array( + 'timeout' => 60, + 'blocking' => true, + ) + ); + wp_cache_debug( "wp_cron_preload_cache: fetched $url" ); + sleep( WPSC_PRELOAD_POST_INTERVAL ); + + if ( ! wpsc_is_preload_active() ) { + wp_cache_debug( 'wp_cron_preload_cache: cancelling preload process.' ); + wpsc_reset_preload_settings(); + + if ( $wp_cache_preload_email_me ) { + // translators: Home URL of website + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%1$s] Cache Preload Stopped', 'wp-super-cache' ), home_url(), '' ), ' ' ); + } + wpsc_update_idle_preload( time() ); + return true; + } + } + // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fopen + $fp = fopen( $taxonomy_filename, 'w' ); + if ( $fp ) { + // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fwrite + fwrite( $fp, implode( "\n", $details ) ); + // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fclose + fclose( $fp ); + } + } + + if ( + $preload_more_taxonomies === false && + count( $details ) > 0 && + $details[0] !== '' + ) { + $preload_more_taxonomies = true; + } + } + + if ( $preload_more_taxonomies === true ) { + wpsc_schedule_next_preload(); + sleep( WPSC_PRELOAD_LOOP_INTERVAL ); + return true; + } + } elseif ( $c === 0 && $wp_cache_preload_email_me ) { + // translators: Home URL of website + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%1$s] Cache Preload Started', 'wp-super-cache' ), home_url(), '' ), ' ' ); + } + + /* + * + * Preload posts now. + * + * The preload_cache_counter has two values: + * c = the number of posts we've preloaded after this loop. + * t = the time we started preloading in the current loop. + * + * $c is set to the value of preload_cache_counter['c'] at the start of the function + * before it is incremented by WPSC_PRELOAD_POST_COUNT here. + * The time is used to check if preloading has stalled in check_up_on_preloading(). + */ + + update_option( + 'preload_cache_counter', + array( + 'c' => ( $c + WPSC_PRELOAD_POST_COUNT ), + 't' => time(), + ) + ); + + if ( $wp_cache_preload_posts == 'all' || $c < $wp_cache_preload_posts ) { + $types = wpsc_get_post_types(); + $posts = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE ( post_type IN ( $types ) ) AND post_status = 'publish' ORDER BY ID DESC LIMIT %d," . WPSC_PRELOAD_POST_COUNT, $c ) ); // phpcs:ignore + wp_cache_debug( 'wp_cron_preload_cache: got ' . WPSC_PRELOAD_POST_COUNT . ' posts from position ' . $c ); + } else { + wp_cache_debug( "wp_cron_preload_cache: no more posts to get. Limit ($wp_cache_preload_posts) reached.", 5 ); + $posts = false; + } + if ( !isset( $wp_cache_preload_email_volume ) ) + $wp_cache_preload_email_volume = 'medium'; + + if ( $posts ) { + if ( get_option( 'show_on_front' ) == 'page' ) { + $page_on_front = get_option( 'page_on_front' ); + $page_for_posts = get_option( 'page_for_posts' ); + } else { + $page_on_front = $page_for_posts = 0; + } + if ( $wp_cache_preload_email_me && $wp_cache_preload_email_volume === 'many' ) { + /* translators: 1: home url, 2: start post id, 3: end post id */ + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%1$s] Refreshing posts from %2$d to %3$d', 'wp-super-cache' ), home_url(), $c, ( $c + WPSC_PRELOAD_POST_COUNT ) ), ' ' ); + } + $msg = ''; + $count = $c + 1; + + foreach( $posts as $post_id ) { + set_time_limit( 60 ); + if ( $page_on_front != 0 && ( $post_id == $page_on_front || $post_id == $page_for_posts ) ) + continue; + $url = get_permalink( $post_id ); + + if ( ! is_string( $url ) ) { + wp_cache_debug( "wp_cron_preload_cache: skipped $post_id. Expected a URL, received: " . gettype( $url ) ); + continue; + } + + if ( wp_cache_is_rejected( $url ) ) { + wp_cache_debug( "wp_cron_preload_cache: skipped $url per rejected strings setting" ); + continue; + } + clear_post_supercache( $post_id ); + + wpsc_update_active_preload( 'posts', $count, $url ); + + if ( ! wpsc_is_preload_active() ) { + wp_cache_debug( 'wp_cron_preload_cache: cancelling preload process.' ); + wpsc_reset_preload_settings(); + + if ( $wp_cache_preload_email_me ) { + // translators: Home URL of website + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%1$s] Cache Preload Stopped', 'wp-super-cache' ), home_url(), '' ), ' ' ); + } + + wpsc_update_idle_preload( time() ); + return true; + } + + $msg .= "$url\n"; + wp_remote_get( $url, array('timeout' => 60, 'blocking' => true ) ); + wp_cache_debug( "wp_cron_preload_cache: fetched $url", 5 ); + ++$count; + sleep( WPSC_PRELOAD_POST_INTERVAL ); + } + + if ( $wp_cache_preload_email_me && ( $wp_cache_preload_email_volume === 'medium' || $wp_cache_preload_email_volume === 'many' ) ) { + // translators: 1: home url, 2: number of posts refreshed + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%1$s] %2$d posts refreshed', 'wp-super-cache' ), home_url(), ( $c + WPSC_PRELOAD_POST_COUNT ) ), __( 'Refreshed the following posts:', 'wp-super-cache' ) . "\n$msg" ); + } + + wpsc_schedule_next_preload(); + wpsc_delete_files( get_supercache_dir() ); + sleep( WPSC_PRELOAD_LOOP_INTERVAL ); + } else { + $msg = ''; + wpsc_reset_preload_counter(); + if ( (int)$wp_cache_preload_interval && defined( 'DOING_CRON' ) ) { + if ( $wp_cache_preload_email_me ) + $msg = sprintf( __( 'Scheduling next preload refresh in %d minutes.', 'wp-super-cache' ), (int)$wp_cache_preload_interval ); + wp_cache_debug( "wp_cron_preload_cache: no more posts. scheduling next preload in $wp_cache_preload_interval minutes.", 5 ); + wp_schedule_single_event( time() + ( (int)$wp_cache_preload_interval * 60 ), 'wp_cache_full_preload_hook' ); + } + global $file_prefix, $cache_max_time; + if ( $wp_cache_preload_interval > 0 ) { + $cache_max_time = (int)$wp_cache_preload_interval * 60; // fool the GC into expiring really old files + } else { + $cache_max_time = 86400; // fool the GC into expiring really old files + } + if ( $wp_cache_preload_email_me ) + wp_mail( get_option( 'admin_email' ), sprintf( __( '[%s] Cache Preload Completed', 'wp-super-cache' ), home_url() ), __( "Cleaning up old supercache files.", 'wp-super-cache' ) . "\n" . $msg ); + if ( $cache_max_time > 0 ) { // GC is NOT disabled + wp_cache_debug( "wp_cron_preload_cache: clean expired cache files older than $cache_max_time seconds.", 5 ); + wp_cache_phase2_clean_expired( $file_prefix, true ); // force cleanup of old files. + } + + wpsc_reset_preload_settings(); + wpsc_update_idle_preload( time() ); + } + @unlink( $mutex ); +} +add_action( 'wp_cache_preload_hook', 'wp_cron_preload_cache' ); +add_action( 'wp_cache_full_preload_hook', 'wp_cron_preload_cache' ); + +/* + * Schedule the next preload event without resetting the preload counter. + * This happens when the next loop of an active preload is scheduled. + */ +function wpsc_schedule_next_preload() { + global $cache_path; + + /* + * Edge case: If preload is not active, don't schedule the next preload. + * This can happen if the preload is cancelled by the user right after a loop finishes. + */ + if ( ! wpsc_is_preload_active() ) { + wpsc_reset_preload_settings(); + wp_cache_debug( 'wpsc_schedule_next_preload: preload is not active. not scheduling next preload.' ); + return; + } + + if ( defined( 'DOING_CRON' ) ) { + wp_cache_debug( 'wp_cron_preload_cache: scheduling the next preload in 3 seconds.' ); + wp_schedule_single_event( time() + 3, 'wp_cache_preload_hook' ); + } + + // we always want to delete the mutex file, even if we're not using cron + $mutex = $cache_path . 'preload_mutex.tmp'; + wp_delete_file( $mutex ); +} + +function option_preload_cache_counter( $value ) { + if ( false == is_array( $value ) ) { + return array( + 'c' => 0, + 't' => time(), + ); + } else { + return $value; + } +} +add_filter( 'option_preload_cache_counter', 'option_preload_cache_counter' ); + +function check_up_on_preloading() { + $value = get_option( 'preload_cache_counter' ); + if ( is_array( $value ) && $value['c'] > 0 && ( time() - $value['t'] ) > 3600 && false === wp_next_scheduled( 'wp_cache_preload_hook' ) ) { + wp_schedule_single_event( time() + 5, 'wp_cache_preload_hook' ); + } +} +add_action( 'init', 'check_up_on_preloading' ); // sometimes preloading stops working. Kickstart it. + +function wp_cache_disable_plugin( $delete_config_file = true ) { + global $wp_rewrite; + if ( file_exists( ABSPATH . 'wp-config.php') ) { + $global_config_file = ABSPATH . 'wp-config.php'; + } else { + $global_config_file = dirname(ABSPATH) . '/wp-config.php'; + } + + if ( apply_filters( 'wpsc_enable_wp_config_edit', true ) ) { + $line = 'define(\'WP_CACHE\', true);'; + if ( + strpos( file_get_contents( $global_config_file ), $line ) && + ( + ! is_writeable_ACLSafe( $global_config_file ) || + ! wp_cache_replace_line( 'define*\(*\'WP_CACHE\'', '', $global_config_file ) + ) + ) { + wp_die( "Could not remove WP_CACHE define from $global_config_file. Please edit that file and remove the line containing the text 'WP_CACHE'. Then refresh this page." ); + } + $line = 'define( \'WPCACHEHOME\','; + if ( + strpos( file_get_contents( $global_config_file ), $line ) && + ( + ! is_writeable_ACLSafe( $global_config_file ) || + ! wp_cache_replace_line( 'define *\( *\'WPCACHEHOME\'', '', $global_config_file ) + ) + ) { + wp_die( "Could not remove WPCACHEHOME define from $global_config_file. Please edit that file and remove the line containing the text 'WPCACHEHOME'. Then refresh this page." ); + } + } elseif ( function_exists( 'wp_cache_debug' ) ) { + wp_cache_debug( 'wp_cache_disable_plugin: not allowed to edit wp-config.php per configuration.' ); + } + + uninstall_supercache( WP_CONTENT_DIR . '/cache' ); + $file_not_deleted = array(); + wpsc_remove_advanced_cache(); + if ( @file_exists( WP_CONTENT_DIR . "/advanced-cache.php" ) ) { + $file_not_deleted[] = WP_CONTENT_DIR . '/advanced-cache.php'; + } + if ( $delete_config_file && @file_exists( WPCACHECONFIGPATH . "/wp-cache-config.php" ) ) { + if ( false == unlink( WPCACHECONFIGPATH . "/wp-cache-config.php" ) ) + $file_not_deleted[] = WPCACHECONFIGPATH . '/wp-cache-config.php'; + } + if ( ! empty( $file_not_deleted ) ) { + $msg = __( "Dear User,\n\nWP Super Cache was removed from your blog or deactivated but some files could\nnot be deleted.\n\n", 'wp-super-cache' ); + foreach ( $file_not_deleted as $path ) { + $msg .= "{$path}\n"; + } + $msg .= "\n"; + $msg .= sprintf( __( "You should delete these files manually.\nYou may need to change the permissions of the files or parent directory.\nYou can read more about this in the Codex at\n%s\n\nThank you.", 'wp-super-cache' ), 'https://codex.wordpress.org/Changing_File_Permissions#About_Chmod' ); + + if ( apply_filters( 'wpsc_send_uninstall_errors', 1 ) ) { + wp_mail( get_option( 'admin_email' ), __( 'WP Super Cache: could not delete files', 'wp-super-cache' ), $msg ); + } + } + extract( wpsc_get_htaccess_info() ); // $document_root, $apache_root, $home_path, $home_root, $home_root_lc, $inst_root, $wprules, $scrules, $condition_rules, $rules, $gziprules + // @phan-suppress-next-line PhanTypeSuspiciousStringExpression -- $home_path is set via extract() + if ( $scrules != '' && insert_with_markers( $home_path.'.htaccess', 'WPSuperCache', array() ) ) { + $wp_rewrite->flush_rules(); + } elseif( $scrules != '' ) { + wp_mail( get_option( 'admin_email' ), __( 'Supercache Uninstall Problems', 'wp-super-cache' ), sprintf( __( "Dear User,\n\nWP Super Cache was removed from your blog but the mod_rewrite rules\nin your .htaccess were not.\n\nPlease edit the following file and remove the code\nbetween 'BEGIN WPSuperCache' and 'END WPSuperCache'. Please backup the file first!\n\n%s\n\nRegards,\nWP Super Cache Plugin\nhttps://wordpress.org/plugins/wp-super-cache/", 'wp-super-cache' ), ABSPATH . '/.htaccess' ) ); + } +} + +function uninstall_supercache( $folderPath ) { // from http://www.php.net/manual/en/function.rmdir.php + if ( trailingslashit( constant( 'ABSPATH' ) ) == trailingslashit( $folderPath ) ) + return false; + if ( @is_dir ( $folderPath ) ) { + $dh = @opendir($folderPath); + while( false !== ( $value = @readdir( $dh ) ) ) { + if ( $value != "." && $value != ".." ) { + $value = $folderPath . "/" . $value; + if ( @is_dir ( $value ) ) { + uninstall_supercache( $value ); + } else { + @unlink( $value ); + } + } + } + return @rmdir( $folderPath ); + } else { + return false; + } +} + +function supercache_admin_bar_render() { + global $wp_admin_bar; + + if ( function_exists( '_deprecated_function' ) ) { + _deprecated_function( __FUNCTION__, 'WP Super Cache 1.6.4' ); + } + + wpsc_admin_bar_render( $wp_admin_bar ); +} + +/* + * returns true if preload is active + */ +function wpsc_is_preload_active() { + global $cache_path; + + // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged + if ( @file_exists( $cache_path . 'stop_preload.txt' ) ) { + return false; + } + + if ( file_exists( $cache_path . 'preload_mutex.tmp' ) ) { + return true; + } + + // check taxonomy preload loop + $taxonomies = apply_filters( + 'wp_cache_preload_taxonomies', + array( + 'post_tag' => 'tag', + 'category' => 'category', + ) + ); + + foreach ( $taxonomies as $taxonomy => $path ) { + $taxonomy_filename = $cache_path . 'taxonomy_' . $taxonomy . '.txt'; + if ( file_exists( $taxonomy_filename ) ) { + return true; + } + } + + // check post preload loop + $preload_cache_counter = get_option( 'preload_cache_counter' ); + if ( + is_array( $preload_cache_counter ) + && isset( $preload_cache_counter['c'] ) + && $preload_cache_counter['c'] > 0 + ) { + return true; + } + + return false; +} + +/* + * This function will reset the preload cache counter + */ +function wpsc_reset_preload_counter() { + update_option( + 'preload_cache_counter', + array( + 'c' => 0, + 't' => time(), + ) + ); +} + +/* + * This function will reset all preload settings + */ +function wpsc_reset_preload_settings() { + global $cache_path; + + $mutex = $cache_path . 'preload_mutex.tmp'; + wp_delete_file( $mutex ); + wp_delete_file( $cache_path . 'stop_preload.txt' ); + wpsc_reset_preload_counter(); + + $taxonomies = apply_filters( + 'wp_cache_preload_taxonomies', + array( + 'post_tag' => 'tag', + 'category' => 'category', + ) + ); + + foreach ( $taxonomies as $taxonomy => $path ) { + $taxonomy_filename = $cache_path . 'taxonomy_' . $taxonomy . '.txt'; + wp_delete_file( $taxonomy_filename ); + } +} + +function wpsc_cancel_preload() { + $next_preload = wp_next_scheduled( 'wp_cache_preload_hook' ); + $next_full_preload = wp_next_scheduled( 'wp_cache_full_preload_hook' ); + + if ( $next_preload || $next_full_preload ) { + wp_cache_debug( 'wpsc_cancel_preload: reset preload settings' ); + wpsc_reset_preload_settings(); + } + + if ( $next_preload ) { + wp_cache_debug( 'wpsc_cancel_preload: unscheduling wp_cache_preload_hook' ); + wp_unschedule_event( $next_preload, 'wp_cache_preload_hook' ); + } + if ( $next_full_preload ) { + wp_cache_debug( 'wpsc_cancel_preload: unscheduling wp_cache_full_preload_hook' ); + wp_unschedule_event( $next_full_preload, 'wp_cache_full_preload_hook' ); + } + wp_cache_debug( 'wpsc_cancel_preload: creating stop_preload.txt' ); + + /* + * Reset the preload settings, but also create the stop_preload.txt file to + * prevent the preload from starting again. + * By creating the stop_preload.txt file, we can be sure the preload will cancel. + */ + wpsc_reset_preload_settings(); + wpsc_create_stop_preload_flag(); + wpsc_update_idle_preload( time() ); +} + +/* + * The preload process checks for a file called stop_preload.txt and will stop if found. + * This function creates that file. + */ +function wpsc_create_stop_preload_flag() { + global $cache_path; + // phpcs:ignore -- WordPress.WP.AlternativeFunctions.file_system_read_fopen WordPress.PHP.NoSilencedErrors.Discouraged + $fp = @fopen( $cache_path . 'stop_preload.txt', 'w' ); + // phpcs:ignore -- WordPress.WP.AlternativeFunctions.file_system_operations_fclose WordPress.PHP.NoSilencedErrors.Discouraged + @fclose( $fp ); +} + +function wpsc_enable_preload() { + + wpsc_reset_preload_settings(); + wp_schedule_single_event( time() + 10, 'wp_cache_full_preload_hook' ); +} + +function wpsc_get_post_types() { + + $preload_type_args = apply_filters( 'wpsc_preload_post_types_args', array( + 'public' => true, + 'publicly_queryable' => true + ) ); + + $post_types = (array) apply_filters( 'wpsc_preload_post_types', get_post_types( $preload_type_args, 'names', 'or' )); + + return "'" . implode( "', '", array_map( 'esc_sql', $post_types ) ) . "'"; +} +function wpsc_post_count() { + global $wpdb; + static $count; + + if ( isset( $count ) ) { + return $count; + } + + $post_type_list = wpsc_get_post_types(); + $count = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type IN ( $post_type_list ) AND post_status = 'publish'" ); + + return $count; +} + +/** + * Get the minimum interval in minutes between preload refreshes. + * Filter the default value of 10 minutes using the `wpsc_minimum_preload_interval` filter. + * + * @return int + */ +function wpsc_get_minimum_preload_interval() { + return apply_filters( 'wpsc_minimum_preload_interval', 10 ); +} + +function wpsc_preload_settings() { + global $wp_cache_preload_interval, $wp_cache_preload_on, $wp_cache_preload_taxonomies, $wp_cache_preload_email_volume, $wp_cache_preload_posts, $valid_nonce; + + if ( isset( $_POST[ 'action' ] ) == false || $_POST[ 'action' ] != 'preload' ) + return; + + if ( ! $valid_nonce ) { + return; + } + + if ( isset( $_POST[ 'preload_off' ] ) ) { + wpsc_cancel_preload(); + return; + } elseif ( isset( $_POST[ 'preload_now' ] ) ) { + wpsc_enable_preload(); + wpsc_update_idle_preload(); + ?> +
    +

    +
    + = $min_refresh_interval ) ) { + $_POST[ 'wp_cache_preload_interval' ] = (int)$_POST[ 'wp_cache_preload_interval' ]; + if ( $wp_cache_preload_interval != $_POST[ 'wp_cache_preload_interval' ] ) { + $force_preload_reschedule = true; + } + + // phpcs:ignore WordPress.Security.NonceVerification.Missing + $wp_cache_preload_interval = (int) $_POST['wp_cache_preload_interval']; + wp_cache_setting( 'wp_cache_preload_interval', $wp_cache_preload_interval ); + } + + if ( $_POST[ 'wp_cache_preload_posts' ] == 'all' ) { + $wp_cache_preload_posts = 'all'; + } else { + $wp_cache_preload_posts = (int)$_POST[ 'wp_cache_preload_posts' ]; + } + wp_cache_setting( 'wp_cache_preload_posts', $wp_cache_preload_posts ); + + if ( isset( $_POST[ 'wp_cache_preload_email_volume' ] ) && in_array( $_POST[ 'wp_cache_preload_email_volume' ], array( 'none', 'less', 'medium', 'many' ) ) ) { + $wp_cache_preload_email_volume = $_POST[ 'wp_cache_preload_email_volume' ]; + } else { + $wp_cache_preload_email_volume = 'none'; + } + wp_cache_setting( 'wp_cache_preload_email_volume', $wp_cache_preload_email_volume ); + + if ( $wp_cache_preload_email_volume == 'none' ) + wp_cache_setting( 'wp_cache_preload_email_me', 0 ); + else + wp_cache_setting( 'wp_cache_preload_email_me', 1 ); + + if ( isset( $_POST[ 'wp_cache_preload_taxonomies' ] ) ) { + $wp_cache_preload_taxonomies = 1; + } else { + $wp_cache_preload_taxonomies = 0; + } + wp_cache_setting( 'wp_cache_preload_taxonomies', $wp_cache_preload_taxonomies ); + + if ( isset( $_POST[ 'wp_cache_preload_on' ] ) ) { + $wp_cache_preload_on = 1; + } else { + $wp_cache_preload_on = 0; + } + wp_cache_setting( 'wp_cache_preload_on', $wp_cache_preload_on ); + + // Ensure that preload settings are applied to scheduled cron. + $next_preload = wp_next_scheduled( 'wp_cache_full_preload_hook' ); + $should_schedule = ( $wp_cache_preload_on === 1 && $wp_cache_preload_interval > 0 ); + + // If forcing a reschedule, or preload is disabled, clear the next scheduled event. + if ( $next_preload && ( ! $should_schedule || $force_preload_reschedule ) ) { + wp_cache_debug( 'Clearing old preload event' ); + wpsc_reset_preload_counter(); + wpsc_create_stop_preload_flag(); + wp_unschedule_event( $next_preload, 'wp_cache_full_preload_hook' ); + + $next_preload = 0; + } + + // Ensure a preload is scheduled if it should be. + if ( ! $next_preload && $should_schedule ) { + wp_cache_debug( 'Scheduling new preload event' ); + wp_schedule_single_event( time() + ( $wp_cache_preload_interval * 60 ), 'wp_cache_full_preload_hook' ); + } +} + +function wpsc_is_preloading() { + if ( wp_next_scheduled( 'wp_cache_preload_hook' ) || wp_next_scheduled( 'wp_cache_full_preload_hook' ) ) { + return true; + } else { + return false; + } +} + +function wpsc_set_default_gc( $force = false ) { + global $cache_path, $wp_cache_shutdown_gc, $cache_schedule_type; + + if ( isset( $wp_cache_shutdown_gc ) && $wp_cache_shutdown_gc == 1 ) { + return false; + } + + if ( $force ) { + unset( $cache_schedule_type ); + $timestamp = wp_next_scheduled( 'wp_cache_gc' ); + if ( $timestamp ) { + wp_unschedule_event( $timestamp, 'wp_cache_gc' ); + } + } + + // set up garbage collection with some default settings + if ( false == isset( $cache_schedule_type ) && false == wp_next_scheduled( 'wp_cache_gc' ) ) { + $cache_schedule_type = 'interval'; + $cache_time_interval = 600; + $cache_max_time = 1800; + $cache_schedule_interval = 'hourly'; + $cache_gc_email_me = 0; + wp_cache_setting( 'cache_schedule_type', $cache_schedule_type ); + wp_cache_setting( 'cache_time_interval', $cache_time_interval ); + wp_cache_setting( 'cache_max_time', $cache_max_time ); + wp_cache_setting( 'cache_schedule_interval', $cache_schedule_interval ); + wp_cache_setting( 'cache_gc_email_me', $cache_gc_email_me ); + + wp_schedule_single_event( time() + 600, 'wp_cache_gc' ); + } + + return true; +} + +function add_mod_rewrite_rules() { + return update_mod_rewrite_rules(); +} + +function remove_mod_rewrite_rules() { + return update_mod_rewrite_rules( false ); +} + +function update_mod_rewrite_rules( $add_rules = true ) { + global $cache_path, $update_mod_rewrite_rules_error; + + $update_mod_rewrite_rules_error = false; + + if ( defined( "DO_NOT_UPDATE_HTACCESS" ) ) { + $update_mod_rewrite_rules_error = ".htaccess update disabled by admin: DO_NOT_UPDATE_HTACCESS defined"; + return false; + } + + if ( ! function_exists( 'get_home_path' ) ) { + include_once( ABSPATH . 'wp-admin/includes/file.php' ); // get_home_path() + include_once( ABSPATH . 'wp-admin/includes/misc.php' ); // extract_from_markers() + } + $home_path = trailingslashit( get_home_path() ); + $home_root = parse_url( get_bloginfo( 'url' ) ); + $home_root = isset( $home_root[ 'path' ] ) ? trailingslashit( $home_root[ 'path' ] ) : '/'; + if ( + $home_root == '/' && + $home_path != $_SERVER[ 'DOCUMENT_ROOT' ] + ) { + $home_path = $_SERVER[ 'DOCUMENT_ROOT' ]; + } elseif ( + $home_root != '/' && + $home_path != str_replace( '//', '/', $_SERVER[ 'DOCUMENT_ROOT' ] . $home_root ) && + is_dir( $_SERVER[ 'DOCUMENT_ROOT' ] . $home_root ) + ) { + $home_path = str_replace( '//', '/', $_SERVER[ 'DOCUMENT_ROOT' ] . $home_root ); + } + $home_path = trailingslashit( $home_path ); + + if ( ! file_exists( $home_path . ".htaccess" ) ) { + $update_mod_rewrite_rules_error = ".htaccess not found: {$home_path}.htaccess"; + return false; + } + + $generated_rules = wpsc_get_htaccess_info(); + $existing_rules = implode( "\n", extract_from_markers( $home_path . '.htaccess', 'WPSuperCache' ) ); + + $rules = $add_rules ? $generated_rules[ 'rules' ] : ''; + + if ( $existing_rules == $rules ) { + $update_mod_rewrite_rules_error = "rules have not changed"; + return true; + } + + if ( $generated_rules[ 'wprules' ] == '' ) { + $update_mod_rewrite_rules_error = "WordPress rules empty"; + return false; + } + + if ( empty( $rules ) ) { + return insert_with_markers( $home_path . '.htaccess', 'WPSuperCache', array() ); + } + + $url = trailingslashit( get_bloginfo( 'url' ) ); + $original_page = wp_remote_get( $url, array( 'timeout' => 60, 'blocking' => true ) ); + if ( is_wp_error( $original_page ) ) { + $update_mod_rewrite_rules_error = "Problem loading page"; + return false; + } + + $backup_filename = $cache_path . 'htaccess.' . wp_rand() . '.php'; + $backup_file_contents = file_get_contents( $home_path . '.htaccess' ); + file_put_contents( $backup_filename, "<" . "?php die(); ?" . ">" . $backup_file_contents ); + $existing_gzip_rules = implode( "\n", extract_from_markers( $cache_path . '.htaccess', 'supercache' ) ); + if ( $existing_gzip_rules != $generated_rules[ 'gziprules' ] ) { + insert_with_markers( $cache_path . '.htaccess', 'supercache', explode( "\n", $generated_rules[ 'gziprules' ] ) ); + } + $wprules = extract_from_markers( $home_path . '.htaccess', 'WordPress' ); + wpsc_remove_marker( $home_path . '.htaccess', 'WordPress' ); // remove original WP rules so SuperCache rules go on top + if ( insert_with_markers( $home_path . '.htaccess', 'WPSuperCache', explode( "\n", $rules ) ) && insert_with_markers( $home_path . '.htaccess', 'WordPress', $wprules ) ) { + $new_page = wp_remote_get( $url, array( 'timeout' => 60, 'blocking' => true ) ); + $restore_backup = false; + if ( is_wp_error( $new_page ) ) { + $restore_backup = true; + $update_mod_rewrite_rules_error = "Error testing page with new .htaccess rules: " . $new_page->get_error_message() . "."; + wp_cache_debug( 'update_mod_rewrite_rules: failed to update rules. error fetching second page: ' . $new_page->get_error_message() ); + } elseif ( $new_page[ 'body' ] != $original_page[ 'body' ] ) { + $restore_backup = true; + $update_mod_rewrite_rules_error = "Page test failed as pages did not match with new .htaccess rules."; + wp_cache_debug( 'update_mod_rewrite_rules: failed to update rules. page test failed as pages did not match. Files dumped in ' . $cache_path . ' for inspection.' ); + wp_cache_debug( 'update_mod_rewrite_rules: original page: 1-' . md5( $original_page[ 'body' ] ) . '.txt' ); + wp_cache_debug( 'update_mod_rewrite_rules: new page: 1-' . md5( $new_page[ 'body' ] ) . '.txt' ); + file_put_contents( $cache_path . '1-' . md5( $original_page[ 'body' ] ) . '.txt', $original_page[ 'body' ] ); + file_put_contents( $cache_path . '2-' . md5( $new_page[ 'body' ] ) . '.txt', $new_page[ 'body' ] ); + } + + if ( $restore_backup ) { + global $wp_cache_debug; + file_put_contents( $home_path . '.htaccess', $backup_file_contents ); + unlink( $backup_filename ); + if ( $wp_cache_debug ) { + $update_mod_rewrite_rules_error .= "
    See debug log for further details"; + } else { + $update_mod_rewrite_rules_error .= "
    Enable debug log on Debugging page for further details and try again"; + } + + return false; + } + } else { + file_put_contents( $home_path . '.htaccess', $backup_file_contents ); + unlink( $backup_filename ); + $update_mod_rewrite_rules_error = "problem inserting rules in .htaccess and original .htaccess restored"; + return false; + } + + return true; +} + +// Delete feeds when the site is updated so that feed files are always fresh +function wpsc_feed_update( $type, $permalink ) { + $wpsc_feed_list = get_option( 'wpsc_feed_list' ); + + update_option( 'wpsc_feed_list', array() ); + if ( is_array( $wpsc_feed_list ) && ! empty( $wpsc_feed_list ) ) { + foreach( $wpsc_feed_list as $file ) { + wp_cache_debug( "wpsc_feed_update: deleting feed: $file" ); + prune_super_cache( $file, true ); + prune_super_cache( dirname( $file ) . '/meta-' . basename( $file ), true ); + } + } +} +add_action( 'gc_cache', 'wpsc_feed_update', 10, 2 ); + +function wpsc_get_plugin_list() { + $list = do_cacheaction( 'wpsc_filter_list' ); + foreach( $list as $t => $details ) { + $key = "cache_" . $details[ 'key' ]; + if ( isset( $GLOBALS[ $key ] ) && $GLOBALS[ $key ] == 1 ) { + $list[ $t ][ 'enabled' ] = true; + } else { + $list[ $t ][ 'enabled' ] = false; + } + + $list[ $t ]['desc'] = strip_tags( $list[ $t ]['desc'] ?? '' ); // phpcs:ignore WordPress.WP.AlternativeFunctions.strip_tags_strip_tags + $list[ $t ]['title'] = strip_tags( $list[ $t ]['title'] ?? '' ); // phpcs:ignore WordPress.WP.AlternativeFunctions.strip_tags_strip_tags + } + return $list; +} + +function wpsc_update_plugin_list( $update ) { + $list = do_cacheaction( 'wpsc_filter_list' ); + foreach( $update as $key => $enabled ) { + $plugin_toggle = "cache_{$key}"; + if ( isset( $GLOBALS[ $plugin_toggle ] ) || isset( $list[ $key ] ) ) { + wp_cache_setting( $plugin_toggle, (int)$enabled ); + } + } +} + +function wpsc_add_plugin( $file ) { + global $wpsc_plugins; + if ( substr( $file, 0, strlen( ABSPATH ) ) == ABSPATH ) { + $file = substr( $file, strlen( ABSPATH ) ); // remove ABSPATH + } + if ( + ! isset( $wpsc_plugins ) || + ! is_array( $wpsc_plugins ) || + ! in_array( $file, $wpsc_plugins ) + ) { + $wpsc_plugins[] = $file; + wp_cache_setting( 'wpsc_plugins', $wpsc_plugins ); + } + return $file; +} +add_action( 'wpsc_add_plugin', 'wpsc_add_plugin' ); + +function wpsc_delete_plugin( $file ) { + global $wpsc_plugins; + if ( substr( $file, 0, strlen( ABSPATH ) ) == ABSPATH ) { + $file = substr( $file, strlen( ABSPATH ) ); // remove ABSPATH + } + if ( + isset( $wpsc_plugins ) && + is_array( $wpsc_plugins ) && + in_array( $file, $wpsc_plugins ) + ) { + unset( $wpsc_plugins[ array_search( $file, $wpsc_plugins ) ] ); + wp_cache_setting( 'wpsc_plugins', $wpsc_plugins ); + } + return $file; +} +add_action( 'wpsc_delete_plugin', 'wpsc_delete_plugin' ); + +function wpsc_get_plugins() { + global $wpsc_plugins; + return $wpsc_plugins; +} + +function wpsc_add_cookie( $name ) { + global $wpsc_cookies; + if ( + ! isset( $wpsc_cookies ) || + ! is_array( $wpsc_cookies ) || + ! in_array( $name, $wpsc_cookies ) + ) { + $wpsc_cookies[] = $name; + wp_cache_setting( 'wpsc_cookies', $wpsc_cookies ); + } + return $name; +} +add_action( 'wpsc_add_cookie', 'wpsc_add_cookie' ); + +function wpsc_delete_cookie( $name ) { + global $wpsc_cookies; + if ( + isset( $wpsc_cookies ) && + is_array( $wpsc_cookies ) && + in_array( $name, $wpsc_cookies ) + ) { + unset( $wpsc_cookies[ array_search( $name, $wpsc_cookies ) ] ); + wp_cache_setting( 'wpsc_cookies', $wpsc_cookies ); + } + return $name; +} +add_action( 'wpsc_delete_cookie', 'wpsc_delete_cookie' ); + +function wpsc_get_cookies() { + global $wpsc_cookies; + return $wpsc_cookies; +} + +function wpsc_get_extra_cookies() { + global $wpsc_cookies; + if ( + is_array( $wpsc_cookies ) && + ! empty( $wpsc_cookies ) + ) { + return '|' . implode( '|', $wpsc_cookies ); + } else { + return ''; + } +} + +function wpsc_update_check() { + global $wpsc_version; + + if ( + ! isset( $wpsc_version ) || + $wpsc_version != 169 + ) { + wp_cache_setting( 'wpsc_version', 169 ); + global $wp_cache_debug_log, $cache_path; + $log_file = $cache_path . str_replace('/', '', str_replace('..', '', $wp_cache_debug_log)); + if ( ! file_exists( $log_file ) ) { + return false; + } + @unlink( $log_file ); + wp_cache_debug( 'wpsc_update_check: Deleted old log file on plugin update.' ); + } +} +add_action( 'admin_init', 'wpsc_update_check' ); + +/** + * Renders a partial/template. + * + * The global $current_user is made available for any rendered template. + * + * @param string $partial - Filename under ./partials directory, with or without .php (appended if absent). + * @param array $page_vars - Variables made available for the template. + */ +function wpsc_render_partial( $partial, array $page_vars = array() ) { + if ( ! str_ends_with( $partial, '.php' ) ) { + $partial .= '.php'; + } + + if ( strpos( $partial, 'partials/' ) !== 0 ) { + $partial = 'partials/' . $partial; + } + + $path = __DIR__ . '/' . $partial; + if ( ! file_exists( $path ) ) { + return; + } + + foreach ( $page_vars as $key => $val ) { + $$key = $val; + } + global $current_user; + include $path; +} + +/** + * Render common header + */ +function wpsc_render_header() { + ?> +
    + + +
    + + +