Converter for Media – Optimize images | Convert WebP & AVIF - Version 5.3.0

Version Description

(2022-10-11) = * [Removed] Action webpc_convert_dir * [Removed] Filter webpc_dir_files * [Fixed] Support for WordPress older than version 5.3 * [Added] List of files for optimization in tree form * [Added] Handling unknown errors while converting with Imagick method

See changelog.txt for previous versions.

=

Download this release

Release Info

Developer mateuszgbiorczyk
Plugin Icon 128x128 Converter for Media – Optimize images | Convert WebP & AVIF
Version 5.3.0
Comparing to
See all releases

Code changes from version 5.2.4 to 5.3.0

Files changed (44) hide show
  1. assets/build/css/styles.css +1 -1
  2. assets/build/js/scripts.js +1 -1
  3. assets/fonts/icons/icomoon.eot +0 -0
  4. assets/fonts/icons/icomoon.svg +4 -0
  5. assets/fonts/icons/icomoon.ttf +0 -0
  6. assets/fonts/icons/icomoon.woff +0 -0
  7. changelog.txt +7 -0
  8. readme.txt +9 -42
  9. src/Action/ConvertDir.php +0 -32
  10. src/Conversion/{DirectoryFiles.php → DirectoryFilesFinder.php} +23 -21
  11. src/Conversion/Endpoint/FilesStatsEndpoint.php +56 -0
  12. src/Conversion/Endpoint/ImagesCounterEndpoint.php +0 -71
  13. src/Conversion/FilesTreeFinder.php +196 -0
  14. src/Conversion/Method/GdMethod.php +25 -20
  15. src/Conversion/Method/ImagickMethod.php +22 -14
  16. src/Conversion/Method/LibraryMethodAbstract.php +6 -3
  17. src/Conversion/Method/MethodAbstract.php +10 -23
  18. src/Conversion/Method/MethodIntegrator.php +4 -4
  19. src/Conversion/Method/MethodInterface.php +4 -7
  20. src/Conversion/Method/RemoteMethod.php +11 -6
  21. src/Conversion/PathsFinder.php +80 -56
  22. src/Error/Detector/TokenStatusDetector.php +2 -4
  23. src/Model/Token.php +4 -0
  24. src/Repository/TokenRepository.php +6 -3
  25. src/Service/TokenValidator.php +2 -2
  26. src/Service/WpCliManager.php +49 -22
  27. src/Settings/Option/ExtraFeaturesOption.php +4 -0
  28. src/Settings/Option/ImageResizeOption.php +4 -1
  29. src/Settings/Option/OutputFormatsOption.php +4 -0
  30. src/Settings/Option/SupportedDirectoriesOption.php +4 -0
  31. src/Settings/Option/SupportedExtensionsOption.php +4 -0
  32. src/Settings/Page/GeneralSettingsPage.php +8 -7
  33. src/WebpConverter.php +2 -4
  34. templates/components/fields/image_size.php +4 -4
  35. templates/components/fields/token.php +17 -22
  36. templates/components/server/sub-sizes.php +5 -1
  37. templates/components/widgets/options-sidebar.php +0 -1
  38. templates/components/widgets/options.php +7 -7
  39. templates/components/widgets/regenerate.php +13 -2
  40. templates/views/settings.php +6 -5
  41. vendor/composer/autoload_classmap.php +3 -3
  42. vendor/composer/autoload_static.php +3 -3
  43. vendor/composer/installed.php +2 -2
  44. webp-converter-for-media.php +2 -2
assets/build/css/styles.css CHANGED
@@ -1 +1 @@
1
- @charset "UTF-8";@keyframes dotsLoading{0%,to{content:"..."}25%{content:" .."}50%{content:". ."}75%{content:".. "}}@font-face{font-family:webpc-icomoon;font-style:normal;font-weight:400;src:url(../../fonts/icons/icomoon.eot?ver=14651773);src:url(../../fonts/icons/icomoon.woff?ver=14651773) format("woff"),url(../../fonts/icons/icomoon.eot?ver=14651773#iefix) format("embedded-opentype"),url(../../fonts/icons/icomoon.ttf?ver=14651773) format("truetype"),url(../../fonts/icons/icomoon.svg?ver=14651773#icomoon) format("svg")}.webpcPage{color:#101517;margin:0;overflow:hidden;padding:0 20px 0 0}.webpcPage *,.webpcPage :after,.webpcPage :before{box-sizing:border-box;margin:0;padding:0}.webpcPage [hidden]{display:none!important}.webpcPage__headline{background-color:#11f3af;line-height:0;margin-bottom:30px;margin-top:10px;padding:20px 30px;position:relative;width:100%;z-index:1}.webpcPage__headline img{max-width:100%}.webpcPage__headline:before{background-image:url(../../img/logo-bg.png);background-position:0 0;background-repeat:repeat;content:"";height:100%;left:0;opacity:.05;position:absolute;top:0;width:100%;z-index:-1}.webpcPage__alert{background-color:#00a32a;color:#fff;font-size:14px;line-height:1.5714285714;margin-bottom:30px;padding:15px 20px}.webpcPage__columns{margin:0 -30px;overflow:hidden}.webpcPage__column{float:left;padding:0 30px}.webpcPage__column--large{width:66.666%}.webpcPage__column--small{width:33.333%}.webpcPage__widget{background-color:#fff}.webpcPage__widget+.webpcPage__widget{margin-top:60px}.webpcPage__widget--border{border:1px solid #11f3af;border-top:0}.webpcPage__widgetTitle{border-bottom:1px solid #dcdcde;font-size:16px;font-weight:600;line-height:1.5;padding:13px 30px;position:relative;z-index:1}.webpcMenu+.webpcPage__widget .webpcPage__widgetTitle{display:none}.webpcPage__widgetTitle--error{background-color:#d63638;border-color:transparent;color:#fff;font-weight:400}.webpcPage__widgetTitle--logo{background-color:#11f3af;border-color:transparent}.webpcPage__widgetTitle--logo:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e902"!important;font-family:webpc-icomoon!important;font-size:30px;font-style:normal;font-variant:normal;font-weight:400;line-height:1;position:absolute;right:30px;text-transform:none;top:10px}.webpcPage__widgetTitle--logo:after{background-image:url(../../img/logo-bg.png);background-position:0 0;background-repeat:repeat;content:"";height:100%;left:0;opacity:.05;position:absolute;top:0;width:100%;z-index:-1}.webpcPage__widgetRow{padding-bottom:10px}.webpcPage__widgetRow:last-child{padding-bottom:0}.webpcPage__widgetRow .webpcButton{margin:10px 0}.webpcPage__widgetColumns{display:flex;flex-wrap:wrap;margin:0 -10px}.webpcPage__widgetColumn{padding:0 10px;width:50%}.webpcPage__widgetColumn:first-child:last-child{flex:1}.webpcPage__widgetNotice{background-color:#2271b1;margin:10px 0;padding:10px 20px}.webpcPage__widgetNotice p{color:#fff;font-size:1.2rem}.webpcPage__widgetNotice p+p{margin-top:0}.webpcPage__widgetNotice p a{color:inherit;font-weight:600;letter-spacing:1px;text-decoration:none;text-transform:uppercase}.webpcPage__footer{margin-top:30px}.webpcPage__footerLogo{text-align:center}.webpcPage__footerLogo:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#dcdcde;content:"\e902"!important;font-family:webpc-icomoon!important;font-size:50px;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.webpcPage__footerContent{font-size:14px;line-height:1.5714285714;padding:14px 20px;text-align:center}.webpcPage__footerIcon{display:inline-block;padding:0 3px}.webpcPage__footerIcon--heart{color:#d63638}.webpcPage__footerIcon--heart:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e901"!important;font-family:webpc-icomoon!important;font-style:normal;font-variant:normal;font-weight:400;text-transform:none}.webpcPage__footerIcon--stars{color:#f0c33c}.webpcPage__footerIcon--stars:before{content:"\e903"!important}#wp-admin-bar-webpc-menu .ab-icon:before,.webpcPage__footerIcon--stars:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:webpc-icomoon!important;font-style:normal;font-variant:normal;font-weight:400;text-transform:none}#wp-admin-bar-webpc-menu .ab-icon:before{content:"\e900"!important}.notice[data-notice=webp-converter-for-media]{padding:0 8px 0 0!important;z-index:1}.notice[data-notice=webp-converter-for-media]~.notice[data-notice=webp-converter-for-media]{display:none}.notice[data-notice=webp-converter-for-media] .notice-dismiss{z-index:1}.webpcButton{background-color:#fff;border:1px solid transparent;box-shadow:none!important;box-sizing:border-box;cursor:pointer;display:inline-block;font-size:14px;line-height:1.5714285714;min-width:180px;opacity:1!important;outline:none!important;padding:9px 30px;position:relative;text-align:center;text-decoration:none!important;transition:color .3s!important;z-index:10}p>.webpcButton{margin:6px 0}.webpcButton:before{float:left;font-family:dashicons;font-size:20px;line-height:1.1;margin-right:10px}.webpcButton:after{content:"";height:100%;left:0;position:absolute;top:0;transition:width .3s;width:0;z-index:-1}.webpcButton:hover:after{width:100%}.webpcButton[disabled]{opacity:.5!important;pointer-events:none}.webpcButton--blue:hover,.webpcButton--gray:hover,.webpcButton--red:hover{color:#fff!important}.webpcButton--blue{border-color:#2271b1;color:#2271b1!important}.webpcButton--blue.webpcButton--bg,.webpcButton--blue:after{background-color:#2271b1}.webpcButton--blue.webpcButton--bg:after{background-color:#135e96}.webpcButton--red{border-color:#d63638;color:#d63638!important}.webpcButton--red.webpcButton--bg,.webpcButton--red:after{background-color:#d63638}.webpcButton--red.webpcButton--bg:after{background-color:#b32d2e}.webpcButton--gray{border-color:#c3c4c7;color:#c3c4c7!important}.webpcButton--gray.webpcButton--bg,.webpcButton--gray:after{background-color:#c3c4c7}.webpcButton--gray.webpcButton--bg:after{background-color:#a7aaad}.webpcButton--bg{color:#fff!important}.webpcContent{padding:20px 30px}.webpcContent--author{background-image:url(../../img/author.png);background-position:left calc(100% - 30px);background-repeat:no-repeat;background-size:152px 152px;margin-left:20px;padding-left:172px}.webpcContent p{font-size:14px;line-height:1.5714285714;max-width:800px}.webpcContent p.center{text-align:center}.webpcContent--wide p{max-width:100%}.webpcContent a{box-shadow:none;color:#2271b1;outline:none;text-decoration:underline;transition:opacity .3s}.webpcContent a:hover{opacity:.5}.webpcContent h1,.webpcContent h2,.webpcContent h3,.webpcContent h4,.webpcContent h5,.webpcContent h6{font-size:16px;font-weight:600;line-height:1.5}.webpcContent h1,.webpcContent h2,.webpcContent h3,.webpcContent h4,.webpcContent h5,.webpcContent h6,.webpcContent p{margin:10px 0 0;padding:4px 0}.webpcContent h1:first-child,.webpcContent h2:first-child,.webpcContent h3:first-child,.webpcContent h4:first-child,.webpcContent h5:first-child,.webpcContent h6:first-child,.webpcContent p:first-child,.webpcContent p>p{margin-top:0}.webpcInput+p{background-color:#f0f0f1;margin:0 0 10px;max-width:none;padding:14px 20px}.webpcContent h1+p,.webpcContent h2+p,.webpcContent h3+p,.webpcContent h4+p,.webpcContent h5+p,.webpcContent h6+p{font-size:12px;line-height:1.75;margin-top:0}.webpcContent--notice{position:relative}.webpcContent--notice h1+p,.webpcContent--notice h2+p,.webpcContent--notice h3+p,.webpcContent--notice h4+p,.webpcContent--notice h5+p,.webpcContent--notice h6+p{font-size:14px;line-height:1.5714285714}.webpcContent--notice img{bottom:30px;display:block;position:absolute;right:30px;z-index:-1}.webpcContent__buttons{margin-top:-10px;overflow:hidden;padding:10px 0}.webpcContent__button{float:left;margin:20px 20px 0 0}.webpcContent__button:last-child{margin-right:0}.webpcField{display:flex;padding:10px 0}.webpcField--center{align-items:center}.webpcField+.webpcField{margin-top:-12px}.webpcField__input{display:none!important}.webpcField__input+label{display:inline-block;position:relative}.webpcField__input[disabled]+label{pointer-events:none}.webpcField__input[disabled]+label:after,.webpcField__input[disabled]+label:before{opacity:.25}.webpcField__input--checkbox+label,.webpcField__input--radio+label{height:22px;width:22px}.webpcField__input--checkbox+label:after,.webpcField__input--checkbox+label:before,.webpcField__input--radio+label:after,.webpcField__input--radio+label:before{align-items:center;content:"";display:flex;height:22px;justify-content:center;left:0;position:absolute;top:0;width:22px}.webpcField__input--checkbox+label:before,.webpcField__input--radio+label:before{border:1px solid #c3c4c7}.webpcField__input--checkbox+label:after,.webpcField__input--radio+label:after{position:absolute;transform:scale(0);transition:transform .3s}.webpcField__input--checkbox:checked+label:after,.webpcField__input--radio:checked+label:after{transform:scale(1)}.webpcField__input--checkbox+label:after{color:#00a32a;content:"\f147";font-family:dashicons;font-size:20px;line-height:1}.webpcField__input--radio+label:before{border-radius:50%}.webpcField__input--radio+label:after{background-color:#00a32a;border-radius:50%;content:"";height:8px;left:7px;top:7px;width:8px}.webpcField__input--toggle+label{height:22px;width:44px}.webpcField__input--toggle+label:after,.webpcField__input--toggle+label:before{content:"";position:absolute}.webpcField__input--toggle+label:before{background-color:#dcdcde;border:1px solid #c3c4c7;border-radius:11px;height:22px;left:0;top:0;transition:background-color .3s;width:44px}.webpcField__input--toggle+label:after{background-color:#fff;border-radius:50%;height:16px;left:3px;position:absolute;top:3px;transition:transform .3s;width:16px}.webpcField__input--toggle:checked+label:before{background-color:#00a32a}.webpcField__input--toggle:checked+label:after{transform:translateX(22px)}.webpcField__label{display:block;font-size:14px;line-height:1.5714285714;max-width:650px;position:relative}.webpcField__input~.webpcField__label{margin-left:20px}.webpcInput{align-items:center;display:flex;padding:10px 0}.webpcInput__field{border:1px solid #c3c4c7!important;border-radius:0!important;box-shadow:none!important;flex:1;font-size:14px!important;line-height:1.5714285714!important;padding:9px 15px!important}.webpcInput__field--small{margin:0 10px;padding:4px 10px!important;width:80px}.webpcInput__field[readonly]{background-color:#f0f0f1}.webpcInput__button{margin:0 0 0 10px!important}.webpcLoader__columns{display:flex;justify-content:center;margin:-30px -30px 0;padding:10px 0;text-align:center}.webpcLoader__column{line-height:0;margin-top:30px;padding:0 30px}.webpcLoader__columnInner{display:inline-block;position:relative}.webpcLoader__columnInner:before{background-color:#f0f0f1;border-radius:50%;content:"";height:calc(100% - 10px);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:calc(100% - 10px)}.webpcLoader__columnCircle{fill:none;stroke:#00a32a;stroke-width:10px;stroke-dasharray:596.90248;stroke-dashoffset:596.90248;height:200px;transform:rotate(-90deg);transition:stroke-dashoffset 2.5s;width:200px}.webpcLoader__column[data-percent="1"] .webpcLoader__columnCircle{stroke-dashoffset:590.9334552}.webpcLoader__column[data-percent="2"] .webpcLoader__columnCircle{stroke-dashoffset:584.9644304}.webpcLoader__column[data-percent="3"] .webpcLoader__columnCircle{stroke-dashoffset:578.9954056}.webpcLoader__column[data-percent="4"] .webpcLoader__columnCircle{stroke-dashoffset:573.0263808}.webpcLoader__column[data-percent="5"] .webpcLoader__columnCircle{stroke-dashoffset:567.057356}.webpcLoader__column[data-percent="6"] .webpcLoader__columnCircle{stroke-dashoffset:561.0883312}.webpcLoader__column[data-percent="7"] .webpcLoader__columnCircle{stroke-dashoffset:555.1193064}.webpcLoader__column[data-percent="8"] .webpcLoader__columnCircle{stroke-dashoffset:549.1502816}.webpcLoader__column[data-percent="9"] .webpcLoader__columnCircle{stroke-dashoffset:543.1812568}.webpcLoader__column[data-percent="10"] .webpcLoader__columnCircle{stroke-dashoffset:537.212232}.webpcLoader__column[data-percent="11"] .webpcLoader__columnCircle{stroke-dashoffset:531.2432072}.webpcLoader__column[data-percent="12"] .webpcLoader__columnCircle{stroke-dashoffset:525.2741824}.webpcLoader__column[data-percent="13"] .webpcLoader__columnCircle{stroke-dashoffset:519.3051576}.webpcLoader__column[data-percent="14"] .webpcLoader__columnCircle{stroke-dashoffset:513.3361328}.webpcLoader__column[data-percent="15"] .webpcLoader__columnCircle{stroke-dashoffset:507.367108}.webpcLoader__column[data-percent="16"] .webpcLoader__columnCircle{stroke-dashoffset:501.3980832}.webpcLoader__column[data-percent="17"] .webpcLoader__columnCircle{stroke-dashoffset:495.4290584}.webpcLoader__column[data-percent="18"] .webpcLoader__columnCircle{stroke-dashoffset:489.4600336}.webpcLoader__column[data-percent="19"] .webpcLoader__columnCircle{stroke-dashoffset:483.4910088}.webpcLoader__column[data-percent="20"] .webpcLoader__columnCircle{stroke-dashoffset:477.521984}.webpcLoader__column[data-percent="21"] .webpcLoader__columnCircle{stroke-dashoffset:471.5529592}.webpcLoader__column[data-percent="22"] .webpcLoader__columnCircle{stroke-dashoffset:465.5839344}.webpcLoader__column[data-percent="23"] .webpcLoader__columnCircle{stroke-dashoffset:459.6149096}.webpcLoader__column[data-percent="24"] .webpcLoader__columnCircle{stroke-dashoffset:453.6458848}.webpcLoader__column[data-percent="25"] .webpcLoader__columnCircle{stroke-dashoffset:447.67686}.webpcLoader__column[data-percent="26"] .webpcLoader__columnCircle{stroke-dashoffset:441.7078352}.webpcLoader__column[data-percent="27"] .webpcLoader__columnCircle{stroke-dashoffset:435.7388104}.webpcLoader__column[data-percent="28"] .webpcLoader__columnCircle{stroke-dashoffset:429.7697856}.webpcLoader__column[data-percent="29"] .webpcLoader__columnCircle{stroke-dashoffset:423.8007608}.webpcLoader__column[data-percent="30"] .webpcLoader__columnCircle{stroke-dashoffset:417.831736}.webpcLoader__column[data-percent="31"] .webpcLoader__columnCircle{stroke-dashoffset:411.8627112}.webpcLoader__column[data-percent="32"] .webpcLoader__columnCircle{stroke-dashoffset:405.8936864}.webpcLoader__column[data-percent="33"] .webpcLoader__columnCircle{stroke-dashoffset:399.9246616}.webpcLoader__column[data-percent="34"] .webpcLoader__columnCircle{stroke-dashoffset:393.9556368}.webpcLoader__column[data-percent="35"] .webpcLoader__columnCircle{stroke-dashoffset:387.986612}.webpcLoader__column[data-percent="36"] .webpcLoader__columnCircle{stroke-dashoffset:382.0175872}.webpcLoader__column[data-percent="37"] .webpcLoader__columnCircle{stroke-dashoffset:376.0485624}.webpcLoader__column[data-percent="38"] .webpcLoader__columnCircle{stroke-dashoffset:370.0795376}.webpcLoader__column[data-percent="39"] .webpcLoader__columnCircle{stroke-dashoffset:364.1105128}.webpcLoader__column[data-percent="40"] .webpcLoader__columnCircle{stroke-dashoffset:358.141488}.webpcLoader__column[data-percent="41"] .webpcLoader__columnCircle{stroke-dashoffset:352.1724632}.webpcLoader__column[data-percent="42"] .webpcLoader__columnCircle{stroke-dashoffset:346.2034384}.webpcLoader__column[data-percent="43"] .webpcLoader__columnCircle{stroke-dashoffset:340.2344136}.webpcLoader__column[data-percent="44"] .webpcLoader__columnCircle{stroke-dashoffset:334.2653888}.webpcLoader__column[data-percent="45"] .webpcLoader__columnCircle{stroke-dashoffset:328.296364}.webpcLoader__column[data-percent="46"] .webpcLoader__columnCircle{stroke-dashoffset:322.3273392}.webpcLoader__column[data-percent="47"] .webpcLoader__columnCircle{stroke-dashoffset:316.3583144}.webpcLoader__column[data-percent="48"] .webpcLoader__columnCircle{stroke-dashoffset:310.3892896}.webpcLoader__column[data-percent="49"] .webpcLoader__columnCircle{stroke-dashoffset:304.4202648}.webpcLoader__column[data-percent="50"] .webpcLoader__columnCircle{stroke-dashoffset:298.45124}.webpcLoader__column[data-percent="51"] .webpcLoader__columnCircle{stroke-dashoffset:292.4822152}.webpcLoader__column[data-percent="52"] .webpcLoader__columnCircle{stroke-dashoffset:286.5131904}.webpcLoader__column[data-percent="53"] .webpcLoader__columnCircle{stroke-dashoffset:280.5441656}.webpcLoader__column[data-percent="54"] .webpcLoader__columnCircle{stroke-dashoffset:274.5751408}.webpcLoader__column[data-percent="55"] .webpcLoader__columnCircle{stroke-dashoffset:268.606116}.webpcLoader__column[data-percent="56"] .webpcLoader__columnCircle{stroke-dashoffset:262.6370912}.webpcLoader__column[data-percent="57"] .webpcLoader__columnCircle{stroke-dashoffset:256.6680664}.webpcLoader__column[data-percent="58"] .webpcLoader__columnCircle{stroke-dashoffset:250.6990416}.webpcLoader__column[data-percent="59"] .webpcLoader__columnCircle{stroke-dashoffset:244.7300168}.webpcLoader__column[data-percent="60"] .webpcLoader__columnCircle{stroke-dashoffset:238.760992}.webpcLoader__column[data-percent="61"] .webpcLoader__columnCircle{stroke-dashoffset:232.7919672}.webpcLoader__column[data-percent="62"] .webpcLoader__columnCircle{stroke-dashoffset:226.8229424}.webpcLoader__column[data-percent="63"] .webpcLoader__columnCircle{stroke-dashoffset:220.8539176}.webpcLoader__column[data-percent="64"] .webpcLoader__columnCircle{stroke-dashoffset:214.8848928}.webpcLoader__column[data-percent="65"] .webpcLoader__columnCircle{stroke-dashoffset:208.915868}.webpcLoader__column[data-percent="66"] .webpcLoader__columnCircle{stroke-dashoffset:202.9468432}.webpcLoader__column[data-percent="67"] .webpcLoader__columnCircle{stroke-dashoffset:196.9778184}.webpcLoader__column[data-percent="68"] .webpcLoader__columnCircle{stroke-dashoffset:191.0087936}.webpcLoader__column[data-percent="69"] .webpcLoader__columnCircle{stroke-dashoffset:185.0397688}.webpcLoader__column[data-percent="70"] .webpcLoader__columnCircle{stroke-dashoffset:179.070744}.webpcLoader__column[data-percent="71"] .webpcLoader__columnCircle{stroke-dashoffset:173.1017192}.webpcLoader__column[data-percent="72"] .webpcLoader__columnCircle{stroke-dashoffset:167.1326944}.webpcLoader__column[data-percent="73"] .webpcLoader__columnCircle{stroke-dashoffset:161.1636696}.webpcLoader__column[data-percent="74"] .webpcLoader__columnCircle{stroke-dashoffset:155.1946448}.webpcLoader__column[data-percent="75"] .webpcLoader__columnCircle{stroke-dashoffset:149.22562}.webpcLoader__column[data-percent="76"] .webpcLoader__columnCircle{stroke-dashoffset:143.2565952}.webpcLoader__column[data-percent="77"] .webpcLoader__columnCircle{stroke-dashoffset:137.2875704}.webpcLoader__column[data-percent="78"] .webpcLoader__columnCircle{stroke-dashoffset:131.3185456}.webpcLoader__column[data-percent="79"] .webpcLoader__columnCircle{stroke-dashoffset:125.3495208}.webpcLoader__column[data-percent="80"] .webpcLoader__columnCircle{stroke-dashoffset:119.380496}.webpcLoader__column[data-percent="81"] .webpcLoader__columnCircle{stroke-dashoffset:113.4114712}.webpcLoader__column[data-percent="82"] .webpcLoader__columnCircle{stroke-dashoffset:107.4424464}.webpcLoader__column[data-percent="83"] .webpcLoader__columnCircle{stroke-dashoffset:101.4734216}.webpcLoader__column[data-percent="84"] .webpcLoader__columnCircle{stroke-dashoffset:95.5043968}.webpcLoader__column[data-percent="85"] .webpcLoader__columnCircle{stroke-dashoffset:89.535372}.webpcLoader__column[data-percent="86"] .webpcLoader__columnCircle{stroke-dashoffset:83.5663472}.webpcLoader__column[data-percent="87"] .webpcLoader__columnCircle{stroke-dashoffset:77.5973224}.webpcLoader__column[data-percent="88"] .webpcLoader__columnCircle{stroke-dashoffset:71.6282976}.webpcLoader__column[data-percent="89"] .webpcLoader__columnCircle{stroke-dashoffset:65.6592728}.webpcLoader__column[data-percent="90"] .webpcLoader__columnCircle{stroke-dashoffset:59.690248}.webpcLoader__column[data-percent="91"] .webpcLoader__columnCircle{stroke-dashoffset:53.7212232}.webpcLoader__column[data-percent="92"] .webpcLoader__columnCircle{stroke-dashoffset:47.7521984}.webpcLoader__column[data-percent="93"] .webpcLoader__columnCircle{stroke-dashoffset:41.7831736}.webpcLoader__column[data-percent="94"] .webpcLoader__columnCircle{stroke-dashoffset:35.8141488}.webpcLoader__column[data-percent="95"] .webpcLoader__columnCircle{stroke-dashoffset:29.845124}.webpcLoader__column[data-percent="96"] .webpcLoader__columnCircle{stroke-dashoffset:23.8760992}.webpcLoader__column[data-percent="97"] .webpcLoader__columnCircle{stroke-dashoffset:17.9070744}.webpcLoader__column[data-percent="98"] .webpcLoader__columnCircle{stroke-dashoffset:11.9380496}.webpcLoader__column[data-percent="99"] .webpcLoader__columnCircle{stroke-dashoffset:5.9690248}.webpcLoader__column[data-percent="100"] .webpcLoader__columnCircle{stroke-dashoffset:0}.webpcLoader__columnOverlay{left:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.webpcLoader__columnOverlayTitle{font-size:14px;font-weight:600;line-height:1.5714285714;padding:4px 20px}.webpcLoader__columnOverlayTitle strong{display:block;font-size:24px;line-height:1.2083333333}.webpcLoader__columnOverlayDesc{font-size:14px;line-height:1.5714285714;min-height:52px;padding:4px 20px}.webpcLoader__columnOverlayDesc--active{display:none}.webpcLoader__column[data-percent] .webpcLoader__columnOverlayDesc--active{display:block}.webpcLoader__column[data-percent] .webpcLoader__columnOverlayDesc--loading{display:none}.webpcLoader__columnOverlayDesc--loading:after{animation:dotsLoading 1s linear infinite;content:"...";font-family:monospace}.webpcLoader__statusProgress--error .webpcLoader__columnOverlayDesc--loading:after,.webpcLoader__statusProgress[data-percent="100"] .webpcLoader__columnOverlayDesc--loading:after{display:none}.webpcLoader__columnDesc{font-size:14px;line-height:1.5714285714;margin-bottom:-10px;margin-top:10px;padding:4px 0;text-align:center}.webpcLoader__status{margin-top:10px;padding-top:10px}.webpcLoader__statusProgress{font-size:0;height:31px;line-height:0;margin:10px 0;position:relative}.webpcLoader__statusProgress:before{background-color:#00a32a;content:"";height:100%;left:0;position:absolute;top:0;transition:width .3s;width:0}.webpcLoader__statusProgress--error:before{background-color:#d63638}.webpcLoader__statusProgress[data-percent="0"]:before{width:0}.webpcLoader__statusProgress[data-percent="1"]:before{width:1%}.webpcLoader__statusProgress[data-percent="2"]:before{width:2%}.webpcLoader__statusProgress[data-percent="3"]:before{width:3%}.webpcLoader__statusProgress[data-percent="4"]:before{width:4%}.webpcLoader__statusProgress[data-percent="5"]:before{width:5%}.webpcLoader__statusProgress[data-percent="6"]:before{width:6%}.webpcLoader__statusProgress[data-percent="7"]:before{width:7%}.webpcLoader__statusProgress[data-percent="8"]:before{width:8%}.webpcLoader__statusProgress[data-percent="9"]:before{width:9%}.webpcLoader__statusProgress[data-percent="10"]:before{width:10%}.webpcLoader__statusProgress[data-percent="11"]:before{width:11%}.webpcLoader__statusProgress[data-percent="12"]:before{width:12%}.webpcLoader__statusProgress[data-percent="13"]:before{width:13%}.webpcLoader__statusProgress[data-percent="14"]:before{width:14%}.webpcLoader__statusProgress[data-percent="15"]:before{width:15%}.webpcLoader__statusProgress[data-percent="16"]:before{width:16%}.webpcLoader__statusProgress[data-percent="17"]:before{width:17%}.webpcLoader__statusProgress[data-percent="18"]:before{width:18%}.webpcLoader__statusProgress[data-percent="19"]:before{width:19%}.webpcLoader__statusProgress[data-percent="20"]:before{width:20%}.webpcLoader__statusProgress[data-percent="21"]:before{width:21%}.webpcLoader__statusProgress[data-percent="22"]:before{width:22%}.webpcLoader__statusProgress[data-percent="23"]:before{width:23%}.webpcLoader__statusProgress[data-percent="24"]:before{width:24%}.webpcLoader__statusProgress[data-percent="25"]:before{width:25%}.webpcLoader__statusProgress[data-percent="26"]:before{width:26%}.webpcLoader__statusProgress[data-percent="27"]:before{width:27%}.webpcLoader__statusProgress[data-percent="28"]:before{width:28%}.webpcLoader__statusProgress[data-percent="29"]:before{width:29%}.webpcLoader__statusProgress[data-percent="30"]:before{width:30%}.webpcLoader__statusProgress[data-percent="31"]:before{width:31%}.webpcLoader__statusProgress[data-percent="32"]:before{width:32%}.webpcLoader__statusProgress[data-percent="33"]:before{width:33%}.webpcLoader__statusProgress[data-percent="34"]:before{width:34%}.webpcLoader__statusProgress[data-percent="35"]:before{width:35%}.webpcLoader__statusProgress[data-percent="36"]:before{width:36%}.webpcLoader__statusProgress[data-percent="37"]:before{width:37%}.webpcLoader__statusProgress[data-percent="38"]:before{width:38%}.webpcLoader__statusProgress[data-percent="39"]:before{width:39%}.webpcLoader__statusProgress[data-percent="40"]:before{width:40%}.webpcLoader__statusProgress[data-percent="41"]:before{width:41%}.webpcLoader__statusProgress[data-percent="42"]:before{width:42%}.webpcLoader__statusProgress[data-percent="43"]:before{width:43%}.webpcLoader__statusProgress[data-percent="44"]:before{width:44%}.webpcLoader__statusProgress[data-percent="45"]:before{width:45%}.webpcLoader__statusProgress[data-percent="46"]:before{width:46%}.webpcLoader__statusProgress[data-percent="47"]:before{width:47%}.webpcLoader__statusProgress[data-percent="48"]:before{width:48%}.webpcLoader__statusProgress[data-percent="49"]:before{width:49%}.webpcLoader__statusProgress[data-percent="50"]:before{width:50%}.webpcLoader__statusProgress[data-percent="51"]:before{width:51%}.webpcLoader__statusProgress[data-percent="52"]:before{width:52%}.webpcLoader__statusProgress[data-percent="53"]:before{width:53%}.webpcLoader__statusProgress[data-percent="54"]:before{width:54%}.webpcLoader__statusProgress[data-percent="55"]:before{width:55%}.webpcLoader__statusProgress[data-percent="56"]:before{width:56%}.webpcLoader__statusProgress[data-percent="57"]:before{width:57%}.webpcLoader__statusProgress[data-percent="58"]:before{width:58%}.webpcLoader__statusProgress[data-percent="59"]:before{width:59%}.webpcLoader__statusProgress[data-percent="60"]:before{width:60%}.webpcLoader__statusProgress[data-percent="61"]:before{width:61%}.webpcLoader__statusProgress[data-percent="62"]:before{width:62%}.webpcLoader__statusProgress[data-percent="63"]:before{width:63%}.webpcLoader__statusProgress[data-percent="64"]:before{width:64%}.webpcLoader__statusProgress[data-percent="65"]:before{width:65%}.webpcLoader__statusProgress[data-percent="66"]:before{width:66%}.webpcLoader__statusProgress[data-percent="67"]:before{width:67%}.webpcLoader__statusProgress[data-percent="68"]:before{width:68%}.webpcLoader__statusProgress[data-percent="69"]:before{width:69%}.webpcLoader__statusProgress[data-percent="70"]:before{width:70%}.webpcLoader__statusProgress[data-percent="71"]:before{width:71%}.webpcLoader__statusProgress[data-percent="72"]:before{width:72%}.webpcLoader__statusProgress[data-percent="73"]:before{width:73%}.webpcLoader__statusProgress[data-percent="74"]:before{width:74%}.webpcLoader__statusProgress[data-percent="75"]:before{width:75%}.webpcLoader__statusProgress[data-percent="76"]:before{width:76%}.webpcLoader__statusProgress[data-percent="77"]:before{width:77%}.webpcLoader__statusProgress[data-percent="78"]:before{width:78%}.webpcLoader__statusProgress[data-percent="79"]:before{width:79%}.webpcLoader__statusProgress[data-percent="80"]:before{width:80%}.webpcLoader__statusProgress[data-percent="81"]:before{width:81%}.webpcLoader__statusProgress[data-percent="82"]:before{width:82%}.webpcLoader__statusProgress[data-percent="83"]:before{width:83%}.webpcLoader__statusProgress[data-percent="84"]:before{width:84%}.webpcLoader__statusProgress[data-percent="85"]:before{width:85%}.webpcLoader__statusProgress[data-percent="86"]:before{width:86%}.webpcLoader__statusProgress[data-percent="87"]:before{width:87%}.webpcLoader__statusProgress[data-percent="88"]:before{width:88%}.webpcLoader__statusProgress[data-percent="89"]:before{width:89%}.webpcLoader__statusProgress[data-percent="90"]:before{width:90%}.webpcLoader__statusProgress[data-percent="91"]:before{width:91%}.webpcLoader__statusProgress[data-percent="92"]:before{width:92%}.webpcLoader__statusProgress[data-percent="93"]:before{width:93%}.webpcLoader__statusProgress[data-percent="94"]:before{width:94%}.webpcLoader__statusProgress[data-percent="95"]:before{width:95%}.webpcLoader__statusProgress[data-percent="96"]:before{width:96%}.webpcLoader__statusProgress[data-percent="97"]:before{width:97%}.webpcLoader__statusProgress[data-percent="98"]:before{width:98%}.webpcLoader__statusProgress[data-percent="99"]:before{width:99%}.webpcLoader__statusProgress[data-percent="100"]:before{width:100%}.webpcLoader__statusProgressCount{background-color:#00a32a;color:#fff;display:inline-block;font-family:monospace;font-size:12px;line-height:1.75;padding:5px 10px;position:relative}.webpcLoader__statusProgress--error .webpcLoader__statusProgressCount{background-color:#d63638}.webpcLoader__statusProgressCount:after{animation:dotsLoading 1s linear infinite;content:"...";margin-left:5px}.webpcLoader__statusProgress--error .webpcLoader__statusProgressCount:after,.webpcLoader__statusProgress[data-percent="100"] .webpcLoader__statusProgressCount:after{display:none}.webpcLoader__statusProgress[data-percent="0"] .webpcLoader__statusProgressCount:before{content:"0%"}.webpcLoader__statusProgress[data-percent="1"] .webpcLoader__statusProgressCount:before{content:"1%"}.webpcLoader__statusProgress[data-percent="2"] .webpcLoader__statusProgressCount:before{content:"2%"}.webpcLoader__statusProgress[data-percent="3"] .webpcLoader__statusProgressCount:before{content:"3%"}.webpcLoader__statusProgress[data-percent="4"] .webpcLoader__statusProgressCount:before{content:"4%"}.webpcLoader__statusProgress[data-percent="5"] .webpcLoader__statusProgressCount:before{content:"5%"}.webpcLoader__statusProgress[data-percent="6"] .webpcLoader__statusProgressCount:before{content:"6%"}.webpcLoader__statusProgress[data-percent="7"] .webpcLoader__statusProgressCount:before{content:"7%"}.webpcLoader__statusProgress[data-percent="8"] .webpcLoader__statusProgressCount:before{content:"8%"}.webpcLoader__statusProgress[data-percent="9"] .webpcLoader__statusProgressCount:before{content:"9%"}.webpcLoader__statusProgress[data-percent="10"] .webpcLoader__statusProgressCount:before{content:"10%"}.webpcLoader__statusProgress[data-percent="11"] .webpcLoader__statusProgressCount:before{content:"11%"}.webpcLoader__statusProgress[data-percent="12"] .webpcLoader__statusProgressCount:before{content:"12%"}.webpcLoader__statusProgress[data-percent="13"] .webpcLoader__statusProgressCount:before{content:"13%"}.webpcLoader__statusProgress[data-percent="14"] .webpcLoader__statusProgressCount:before{content:"14%"}.webpcLoader__statusProgress[data-percent="15"] .webpcLoader__statusProgressCount:before{content:"15%"}.webpcLoader__statusProgress[data-percent="16"] .webpcLoader__statusProgressCount:before{content:"16%"}.webpcLoader__statusProgress[data-percent="17"] .webpcLoader__statusProgressCount:before{content:"17%"}.webpcLoader__statusProgress[data-percent="18"] .webpcLoader__statusProgressCount:before{content:"18%"}.webpcLoader__statusProgress[data-percent="19"] .webpcLoader__statusProgressCount:before{content:"19%"}.webpcLoader__statusProgress[data-percent="20"] .webpcLoader__statusProgressCount:before{content:"20%"}.webpcLoader__statusProgress[data-percent="21"] .webpcLoader__statusProgressCount:before{content:"21%"}.webpcLoader__statusProgress[data-percent="22"] .webpcLoader__statusProgressCount:before{content:"22%"}.webpcLoader__statusProgress[data-percent="23"] .webpcLoader__statusProgressCount:before{content:"23%"}.webpcLoader__statusProgress[data-percent="24"] .webpcLoader__statusProgressCount:before{content:"24%"}.webpcLoader__statusProgress[data-percent="25"] .webpcLoader__statusProgressCount:before{content:"25%"}.webpcLoader__statusProgress[data-percent="26"] .webpcLoader__statusProgressCount:before{content:"26%"}.webpcLoader__statusProgress[data-percent="27"] .webpcLoader__statusProgressCount:before{content:"27%"}.webpcLoader__statusProgress[data-percent="28"] .webpcLoader__statusProgressCount:before{content:"28%"}.webpcLoader__statusProgress[data-percent="29"] .webpcLoader__statusProgressCount:before{content:"29%"}.webpcLoader__statusProgress[data-percent="30"] .webpcLoader__statusProgressCount:before{content:"30%"}.webpcLoader__statusProgress[data-percent="31"] .webpcLoader__statusProgressCount:before{content:"31%"}.webpcLoader__statusProgress[data-percent="32"] .webpcLoader__statusProgressCount:before{content:"32%"}.webpcLoader__statusProgress[data-percent="33"] .webpcLoader__statusProgressCount:before{content:"33%"}.webpcLoader__statusProgress[data-percent="34"] .webpcLoader__statusProgressCount:before{content:"34%"}.webpcLoader__statusProgress[data-percent="35"] .webpcLoader__statusProgressCount:before{content:"35%"}.webpcLoader__statusProgress[data-percent="36"] .webpcLoader__statusProgressCount:before{content:"36%"}.webpcLoader__statusProgress[data-percent="37"] .webpcLoader__statusProgressCount:before{content:"37%"}.webpcLoader__statusProgress[data-percent="38"] .webpcLoader__statusProgressCount:before{content:"38%"}.webpcLoader__statusProgress[data-percent="39"] .webpcLoader__statusProgressCount:before{content:"39%"}.webpcLoader__statusProgress[data-percent="40"] .webpcLoader__statusProgressCount:before{content:"40%"}.webpcLoader__statusProgress[data-percent="41"] .webpcLoader__statusProgressCount:before{content:"41%"}.webpcLoader__statusProgress[data-percent="42"] .webpcLoader__statusProgressCount:before{content:"42%"}.webpcLoader__statusProgress[data-percent="43"] .webpcLoader__statusProgressCount:before{content:"43%"}.webpcLoader__statusProgress[data-percent="44"] .webpcLoader__statusProgressCount:before{content:"44%"}.webpcLoader__statusProgress[data-percent="45"] .webpcLoader__statusProgressCount:before{content:"45%"}.webpcLoader__statusProgress[data-percent="46"] .webpcLoader__statusProgressCount:before{content:"46%"}.webpcLoader__statusProgress[data-percent="47"] .webpcLoader__statusProgressCount:before{content:"47%"}.webpcLoader__statusProgress[data-percent="48"] .webpcLoader__statusProgressCount:before{content:"48%"}.webpcLoader__statusProgress[data-percent="49"] .webpcLoader__statusProgressCount:before{content:"49%"}.webpcLoader__statusProgress[data-percent="50"] .webpcLoader__statusProgressCount:before{content:"50%"}.webpcLoader__statusProgress[data-percent="51"] .webpcLoader__statusProgressCount:before{content:"51%"}.webpcLoader__statusProgress[data-percent="52"] .webpcLoader__statusProgressCount:before{content:"52%"}.webpcLoader__statusProgress[data-percent="53"] .webpcLoader__statusProgressCount:before{content:"53%"}.webpcLoader__statusProgress[data-percent="54"] .webpcLoader__statusProgressCount:before{content:"54%"}.webpcLoader__statusProgress[data-percent="55"] .webpcLoader__statusProgressCount:before{content:"55%"}.webpcLoader__statusProgress[data-percent="56"] .webpcLoader__statusProgressCount:before{content:"56%"}.webpcLoader__statusProgress[data-percent="57"] .webpcLoader__statusProgressCount:before{content:"57%"}.webpcLoader__statusProgress[data-percent="58"] .webpcLoader__statusProgressCount:before{content:"58%"}.webpcLoader__statusProgress[data-percent="59"] .webpcLoader__statusProgressCount:before{content:"59%"}.webpcLoader__statusProgress[data-percent="60"] .webpcLoader__statusProgressCount:before{content:"60%"}.webpcLoader__statusProgress[data-percent="61"] .webpcLoader__statusProgressCount:before{content:"61%"}.webpcLoader__statusProgress[data-percent="62"] .webpcLoader__statusProgressCount:before{content:"62%"}.webpcLoader__statusProgress[data-percent="63"] .webpcLoader__statusProgressCount:before{content:"63%"}.webpcLoader__statusProgress[data-percent="64"] .webpcLoader__statusProgressCount:before{content:"64%"}.webpcLoader__statusProgress[data-percent="65"] .webpcLoader__statusProgressCount:before{content:"65%"}.webpcLoader__statusProgress[data-percent="66"] .webpcLoader__statusProgressCount:before{content:"66%"}.webpcLoader__statusProgress[data-percent="67"] .webpcLoader__statusProgressCount:before{content:"67%"}.webpcLoader__statusProgress[data-percent="68"] .webpcLoader__statusProgressCount:before{content:"68%"}.webpcLoader__statusProgress[data-percent="69"] .webpcLoader__statusProgressCount:before{content:"69%"}.webpcLoader__statusProgress[data-percent="70"] .webpcLoader__statusProgressCount:before{content:"70%"}.webpcLoader__statusProgress[data-percent="71"] .webpcLoader__statusProgressCount:before{content:"71%"}.webpcLoader__statusProgress[data-percent="72"] .webpcLoader__statusProgressCount:before{content:"72%"}.webpcLoader__statusProgress[data-percent="73"] .webpcLoader__statusProgressCount:before{content:"73%"}.webpcLoader__statusProgress[data-percent="74"] .webpcLoader__statusProgressCount:before{content:"74%"}.webpcLoader__statusProgress[data-percent="75"] .webpcLoader__statusProgressCount:before{content:"75%"}.webpcLoader__statusProgress[data-percent="76"] .webpcLoader__statusProgressCount:before{content:"76%"}.webpcLoader__statusProgress[data-percent="77"] .webpcLoader__statusProgressCount:before{content:"77%"}.webpcLoader__statusProgress[data-percent="78"] .webpcLoader__statusProgressCount:before{content:"78%"}.webpcLoader__statusProgress[data-percent="79"] .webpcLoader__statusProgressCount:before{content:"79%"}.webpcLoader__statusProgress[data-percent="80"] .webpcLoader__statusProgressCount:before{content:"80%"}.webpcLoader__statusProgress[data-percent="81"] .webpcLoader__statusProgressCount:before{content:"81%"}.webpcLoader__statusProgress[data-percent="82"] .webpcLoader__statusProgressCount:before{content:"82%"}.webpcLoader__statusProgress[data-percent="83"] .webpcLoader__statusProgressCount:before{content:"83%"}.webpcLoader__statusProgress[data-percent="84"] .webpcLoader__statusProgressCount:before{content:"84%"}.webpcLoader__statusProgress[data-percent="85"] .webpcLoader__statusProgressCount:before{content:"85%"}.webpcLoader__statusProgress[data-percent="86"] .webpcLoader__statusProgressCount:before{content:"86%"}.webpcLoader__statusProgress[data-percent="87"] .webpcLoader__statusProgressCount:before{content:"87%"}.webpcLoader__statusProgress[data-percent="88"] .webpcLoader__statusProgressCount:before{content:"88%"}.webpcLoader__statusProgress[data-percent="89"] .webpcLoader__statusProgressCount:before{content:"89%"}.webpcLoader__statusProgress[data-percent="90"] .webpcLoader__statusProgressCount:before{content:"90%"}.webpcLoader__statusProgress[data-percent="91"] .webpcLoader__statusProgressCount:before{content:"91%"}.webpcLoader__statusProgress[data-percent="92"] .webpcLoader__statusProgressCount:before{content:"92%"}.webpcLoader__statusProgress[data-percent="93"] .webpcLoader__statusProgressCount:before{content:"93%"}.webpcLoader__statusProgress[data-percent="94"] .webpcLoader__statusProgressCount:before{content:"94%"}.webpcLoader__statusProgress[data-percent="95"] .webpcLoader__statusProgressCount:before{content:"95%"}.webpcLoader__statusProgress[data-percent="96"] .webpcLoader__statusProgressCount:before{content:"96%"}.webpcLoader__statusProgress[data-percent="97"] .webpcLoader__statusProgressCount:before{content:"97%"}.webpcLoader__statusProgress[data-percent="98"] .webpcLoader__statusProgressCount:before{content:"98%"}.webpcLoader__statusProgress[data-percent="99"] .webpcLoader__statusProgressCount:before{content:"99%"}.webpcLoader__statusProgress[data-percent="100"] .webpcLoader__statusProgressCount:before{content:"100%"}.webpcLoader__statusContent{font-size:14px;line-height:1.5714285714;max-width:800px;padding:4px 0}.webpcLoader__statusContent--small{font-size:12px;line-height:1.75}.webpcLoader__statusContent strong{font-weight:600}.webpcLoader__success{padding:10px 0}.webpcLoader__successInner{border-left:2px solid #00a32a;padding:0 20px}.webpcLoader__successContent{color:#00a32a;font-size:14px;font-weight:600;line-height:1.5714285714;padding:4px 0}.webpcLoader__successContent a{color:inherit}.webpcLoader__errors{margin-top:10px;padding:10px 0}.webpcLoader__errorsInner{border-left:2px solid #c3c4c7}.webpcLoader__errorsTitle{background-color:#c3c4c7;color:#fff;display:inline-block;font-size:14px;line-height:1.5714285714;padding:4px 20px}.webpcLoader__errorsContent{padding:10px 0 10px 20px}.webpcLoader__errorsContent>p{font-size:12px;line-height:1.75;margin:0;max-width:100%}.webpcLoader__errorsContent>p.webpcLoader__errorsContentError{color:#d63638;font-size:14px;font-weight:600;line-height:1.5714285714}.webpcLoader__errorsContent pre{font-size:12px;line-height:1.75;white-space:normal}.webpcLoader__button--disabled{opacity:.25!important;pointer-events:none}.webpcMenu{margin-top:30px}.webpcMenu:first-child{margin-top:0}.webpcMenu__wrapper{border-bottom:1px solid #dcdcde}.webpcMenu__items{display:flex;font-size:0}.webpcMenu__itemLink{box-shadow:none!important;display:block;font-size:16px;line-height:1.5;outline:none!important;padding:13px 30px;text-align:center;text-decoration:none!important;transition:color .3s}.webpcMenu__itemLink:focus,.webpcMenu__itemLink:hover{color:rgba(34,113,177,.5)}.webpcMenu__itemLink--active{background-color:#fff;color:#101517;font-weight:600}.webpcMenu__itemLink--active:focus,.webpcMenu__itemLink--active:hover{color:inherit}.webpcPopup{margin-top:20px}.webpcPopup__inner{background-color:#fff;border:1px solid #c3c4c7;display:flex;flex-wrap:wrap}.webpcPopup__image{background-image:url(../../img/author.png);background-position:50%;background-repeat:no-repeat;background-size:cover;width:152px}.webpcPopup__content{border-left:1px solid #c3c4c7;flex:1;padding:10px 20px}.webpcQuality__items{display:flex;flex-wrap:wrap;justify-content:space-between}.webpcQuality__item{display:flex;flex:1;justify-content:center;position:relative}.webpcQuality__item:before{background-color:#c3c4c7;content:"";height:1px;left:0;position:absolute;top:50%;width:100%}.webpcQuality__item:first-child:before{left:50%}.webpcQuality__item:last-child:before{width:50%}.webpcQuality__itemInput{display:none!important}.webpcQuality__itemLabel{display:block;height:42px;position:relative;width:42px}.webpcQuality__itemLabel:after,.webpcQuality__itemLabel:before{border-radius:50%;content:"";height:22px;position:absolute;width:22px}.webpcQuality__itemLabel:before{background-color:#fff;border:1px solid #c3c4c7;left:10px;top:10px}.webpcQuality__itemLabel:after{background-color:#00a32a;height:8px;left:17px;top:17px;transform:scale(0);transition:transform .3s;width:8px}.webpcQuality__itemInput:checked+.webpcQuality__itemLabel:after{transform:scale(1)}.webpcQuality__texts{display:flex;flex-wrap:wrap}.webpcQuality__text{flex:1;font-size:12px;line-height:1.75;padding:4px 0;text-align:center}.webpcQuality__text strong{font-size:14px;line-height:1.5714285714}.webpcServerInfo{color:#222;text-align:center}.webpcServerInfo pre{font-family:monospace;margin:0}.webpcServerInfo h1,.webpcServerInfo h2{display:none}.webpcServerInfo p{max-width:100%}.webpcServerInfo table{border:0;border-collapse:collapse;margin:10px auto;width:100%}.webpcServerInfo td,.webpcServerInfo th{border:1px solid #666;font-family:monospace;font-size:12px;line-height:1.75;padding:4px 5px;text-align:center;vertical-align:baseline}.webpcServerInfo .p{text-align:left}.webpcServerInfo .e{background-color:#ccf;font-weight:700;width:300px}.webpcServerInfo .h{background-color:#99c;font-weight:700}.webpcServerInfo .v{word-wrap:break-word;background-color:#ddd;max-width:300px;overflow-x:auto}.webpcServerInfo .v i{color:#999}.webpcServerInfo img{border:0;float:right}@media screen and (max-width:1600px){.webpcPage__columns{margin:0 -15px}.webpcPage__column{padding:0 15px}.webpcPage__widget+.webpcPage__widget{margin-top:30px}}@media screen and (max-width:1279px){.webpcPage__column--large{width:100%}.webpcPage__column--small{margin-top:30px;width:100%}}@media screen and (max-width:1024px){.webpcPage__widgetColumns{display:block}.webpcPage__widgetColumn{width:100%}}@media screen and (max-width:782px){.webpcPage{padding-right:0}.webpcContent--author{background:none;margin-left:0;padding-left:30px}.webpcContent--notice img{bottom:auto;margin:20px 0 10px;position:relative;right:auto}.webpcInput{display:block}.webpcInput__field{width:100%}.webpcInput__field--small{width:calc(100% - 20px)}.webpcInput__button{margin:10px 0 0!important}.webpcLoader__columns,.webpcMenu__items{display:block}.webpcPopup__inner{border:1px solid #c3c4c7;display:block}.webpcPopup__image{height:152px;margin:20px auto 0}.webpcPopup__content{border-left:0}}
1
+ @charset "UTF-8";@keyframes dotsLoading{0%,to{content:"..."}25%{content:" .."}50%{content:". ."}75%{content:".. "}}@font-face{font-family:webpc-icomoon;font-style:normal;font-weight:400;src:url(../../fonts/icons/icomoon.eot?ver=16180816);src:url(../../fonts/icons/icomoon.woff?ver=16180816) format("woff"),url(../../fonts/icons/icomoon.eot?ver=16180816#iefix) format("embedded-opentype"),url(../../fonts/icons/icomoon.ttf?ver=16180816) format("truetype"),url(../../fonts/icons/icomoon.svg?ver=16180816#icomoon) format("svg")}.webpcPage{color:#101517;margin:0;overflow:hidden;padding:0 20px 0 0}.webpcPage *,.webpcPage :after,.webpcPage :before{box-sizing:border-box;margin:0;padding:0}.webpcPage [hidden]{display:none!important}.webpcPage__headline{background-color:#11f3af;line-height:0;margin-bottom:30px;margin-top:10px;padding:20px 30px;position:relative;width:100%;z-index:1}.webpcPage__headline img{max-width:100%}.webpcPage__headline:before{background-image:url(../../img/logo-bg.png);background-position:0 0;background-repeat:repeat;content:"";height:100%;left:0;opacity:.05;position:absolute;top:0;width:100%;z-index:-1}.webpcPage__alert{background-color:#00a32a;color:#fff;font-size:14px;line-height:1.5714285714;margin-bottom:30px;padding:15px 20px}.webpcPage__columns{margin:0 -30px;overflow:hidden}.webpcPage__column{float:left;padding:0 30px}.webpcPage__column--large{width:66.666%}.webpcPage__column--small{width:33.333%}.webpcPage__widget{background-color:#fff}.webpcPage__widget+.webpcPage__widget{margin-top:60px}.webpcPage__widget--border{border:1px solid #11f3af;border-top:0}.webpcPage__widgetTitle{border-bottom:1px solid #dcdcde;font-size:16px;font-weight:600;line-height:1.5;padding:13px 30px;position:relative;z-index:1}.webpcMenu+.webpcPage__widget .webpcPage__widgetTitle{display:none}.webpcPage__widgetTitle--error{background-color:#d63638;border-color:transparent;color:#fff;font-weight:400}.webpcPage__widgetTitle--logo{background-color:#11f3af;border-color:transparent}.webpcPage__widgetTitle--logo:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e902"!important;font-family:webpc-icomoon!important;font-size:30px;font-style:normal;font-variant:normal;font-weight:400;line-height:1;position:absolute;right:30px;text-transform:none;top:10px}.webpcPage__widgetTitle--logo:after{background-image:url(../../img/logo-bg.png);background-position:0 0;background-repeat:repeat;content:"";height:100%;left:0;opacity:.05;position:absolute;top:0;width:100%;z-index:-1}.webpcPage__widgetRow{padding-bottom:10px}.webpcPage__widgetRow:last-child{padding-bottom:0}.webpcPage__widgetRow>.webpcButton{margin:10px 0}.webpcPage__widgetColumns{display:flex;flex-wrap:wrap;margin:0 -10px}.webpcPage__widgetColumn{padding:0 10px;width:50%}.webpcPage__widgetColumn:first-child:last-child{flex:1}.webpcPage__widgetNotice{background-color:#2271b1;margin:10px 0;padding:10px 20px}.webpcPage__widgetNotice p{color:#fff;font-size:1.2rem}.webpcPage__widgetNotice p+p{margin-top:0}.webpcPage__widgetNotice p a{color:inherit;font-weight:600;letter-spacing:1px;text-decoration:none;text-transform:uppercase}.webpcPage__footer{margin-top:30px}.webpcPage__footerLogo{text-align:center}.webpcPage__footerLogo:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#dcdcde;content:"\e902"!important;font-family:webpc-icomoon!important;font-size:50px;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.webpcPage__footerContent{font-size:14px;line-height:1.5714285714;padding:14px 20px;text-align:center}.webpcPage__footerIcon{display:inline-block;padding:0 3px}.webpcPage__footerIcon--heart{color:#d63638}.webpcPage__footerIcon--heart:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e901"!important;font-family:webpc-icomoon!important;font-style:normal;font-variant:normal;font-weight:400;text-transform:none}.webpcPage__footerIcon--stars{color:#f0c33c}.webpcPage__footerIcon--stars:before{content:"\e903"!important}#wp-admin-bar-webpc-menu .ab-icon:before,.webpcPage__footerIcon--stars:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:webpc-icomoon!important;font-style:normal;font-variant:normal;font-weight:400;text-transform:none}#wp-admin-bar-webpc-menu .ab-icon:before{content:"\e900"!important}.notice[data-notice=webp-converter-for-media]{padding:0 8px 0 0!important;z-index:1}.notice[data-notice=webp-converter-for-media]~.notice[data-notice=webp-converter-for-media]{display:none}.notice[data-notice=webp-converter-for-media] .notice-dismiss{z-index:1}.webpcButton{background-color:#fff;border:1px solid transparent;box-shadow:none!important;box-sizing:border-box;cursor:pointer;display:inline-block;font-size:14px;line-height:1.5714285714;min-width:180px;opacity:1!important;outline:none!important;padding:9px 30px;position:relative;text-align:center;text-decoration:none!important;transition:color .3s!important;z-index:10}p>.webpcButton{margin:6px 0}.webpcButton:before{float:left;font-family:dashicons;font-size:20px;line-height:1.1;margin-right:10px}.webpcButton:after{content:"";height:100%;left:0;position:absolute;top:0;transition:width .3s;width:0;z-index:-1}.webpcButton:hover:after{width:100%}.webpcButton[disabled]{opacity:.5!important;pointer-events:none}.webpcButton--small{font-size:12px;line-height:1.6666666667;min-width:auto;padding:4px 20px}.webpcButton--blue:hover,.webpcButton--gray:hover,.webpcButton--red:hover{color:#fff!important}.webpcButton--blue{border-color:#2271b1;color:#2271b1!important}.webpcButton--blue.webpcButton--bg,.webpcButton--blue:after{background-color:#2271b1}.webpcButton--blue.webpcButton--bg:after{background-color:#135e96}.webpcButton--red{border-color:#d63638;color:#d63638!important}.webpcButton--red.webpcButton--bg,.webpcButton--red:after{background-color:#d63638}.webpcButton--red.webpcButton--bg:after{background-color:#b32d2e}.webpcButton--gray{border-color:#c3c4c7;color:#c3c4c7!important}.webpcButton--gray.webpcButton--bg,.webpcButton--gray:after{background-color:#c3c4c7}.webpcButton--gray.webpcButton--bg:after{background-color:#a7aaad}.webpcButton--bg{color:#fff!important}.webpcContent{padding:20px 30px}.webpcContent--author{background-image:url(../../img/author.png);background-position:left calc(100% - 30px);background-repeat:no-repeat;background-size:152px 152px;margin-left:20px;padding-left:172px}.webpcContent p{font-size:14px;line-height:1.5714285714;max-width:800px}.webpcContent p.center{text-align:center}.webpcContent--wide p{max-width:100%}.webpcContent a{box-shadow:none;color:#2271b1;outline:none;text-decoration:underline;transition:opacity .3s}.webpcContent a:hover{opacity:.5}.webpcContent h1,.webpcContent h2,.webpcContent h3,.webpcContent h4,.webpcContent h5,.webpcContent h6{font-size:16px;font-weight:600;line-height:1.5}.webpcContent h1,.webpcContent h2,.webpcContent h3,.webpcContent h4,.webpcContent h5,.webpcContent h6,.webpcContent p{margin:10px 0 0;padding:4px 0}.webpcContent h1:first-child,.webpcContent h2:first-child,.webpcContent h3:first-child,.webpcContent h4:first-child,.webpcContent h5:first-child,.webpcContent h6:first-child,.webpcContent p:first-child,.webpcContent p>p{margin-top:0}.webpcInput+p{background-color:#f0f0f1;margin:0 0 10px;max-width:none;padding:14px 20px}.webpcContent h1+p,.webpcContent h2+p,.webpcContent h3+p,.webpcContent h4+p,.webpcContent h5+p,.webpcContent h6+p{font-size:12px;line-height:1.75;margin-top:0}.webpcContent--notice{position:relative}.webpcContent--notice h1+p,.webpcContent--notice h2+p,.webpcContent--notice h3+p,.webpcContent--notice h4+p,.webpcContent--notice h5+p,.webpcContent--notice h6+p{font-size:14px;line-height:1.5714285714}.webpcContent--notice img{bottom:30px;display:block;position:absolute;right:30px;z-index:-1}.webpcContent__buttons{margin-top:-10px;overflow:hidden;padding:10px 0}.webpcContent__button{float:left;margin:20px 20px 0 0}.webpcContent__button:last-child{margin-right:0}.webpcContent__loader:after{animation:dotsLoading 1s linear infinite;content:"...";font-family:monospace;line-height:1;margin-left:5px}.webpcField{display:flex;padding:10px 0}.webpcField--center{align-items:center}.webpcField+.webpcField{margin-top:-12px}.webpcField__input{display:none!important}.webpcField__input+label{display:inline-block;position:relative}.webpcField__input[disabled]+label{pointer-events:none}.webpcField__input[disabled]+label:after,.webpcField__input[disabled]+label:before{opacity:.25}.webpcField__input--checkbox+label,.webpcField__input--radio+label{height:22px;width:22px}.webpcField__input--checkbox+label:after,.webpcField__input--checkbox+label:before,.webpcField__input--radio+label:after,.webpcField__input--radio+label:before{align-items:center;content:"";display:flex;height:22px;justify-content:center;left:0;position:absolute;top:0;width:22px}.webpcField__input--checkbox+label:before,.webpcField__input--radio+label:before{border:1px solid #c3c4c7}.webpcField__input--checkbox+label:after,.webpcField__input--radio+label:after{position:absolute;transform:scale(0);transition:transform .3s}.webpcField__input--checkbox:checked+label:after,.webpcField__input--radio:checked+label:after{transform:scale(1)}.webpcField__input--checkbox+label:after{color:#00a32a;content:"\f147";font-family:dashicons;font-size:20px;line-height:1}.webpcField__input--radio+label:before{border-radius:50%}.webpcField__input--radio+label:after{background-color:#00a32a;border-radius:50%;content:"";height:8px;left:7px;top:7px;width:8px}.webpcField__input--toggle+label{height:22px;width:44px}.webpcField__input--toggle+label:after,.webpcField__input--toggle+label:before{content:"";position:absolute}.webpcField__input--toggle+label:before{background-color:#dcdcde;border:1px solid #c3c4c7;border-radius:11px;height:22px;left:0;top:0;transition:background-color .3s;width:44px}.webpcField__input--toggle+label:after{background-color:#fff;border-radius:50%;height:16px;left:3px;position:absolute;top:3px;transition:transform .3s;width:16px}.webpcField__input--toggle:checked+label:before{background-color:#00a32a}.webpcField__input--toggle:checked+label:after{transform:translateX(22px)}.webpcField__label{display:block;font-size:14px;line-height:1.5714285714;max-width:650px;position:relative}.webpcField__input~.webpcField__label{margin-left:20px}.webpcInput{align-items:center;display:flex;padding:10px 0}.webpcInput__field{border:1px solid #c3c4c7!important;border-radius:0!important;box-shadow:none!important;flex:1;font-size:14px!important;line-height:1.5714285714!important;padding:9px 15px!important}.webpcInput__field--small{margin:0 10px;max-width:80px;padding:4px 10px!important;width:80px}.webpcInput__field[readonly]{background-color:#f0f0f1}.webpcInput__button{margin:0 0 0 10px!important}.webpcLoader__columns{display:flex;justify-content:center;margin:-30px -30px 0;padding:10px 0;text-align:center}.webpcLoader__column{line-height:0;margin-top:30px;padding:0 30px}.webpcLoader__columnInner{display:inline-block;position:relative}.webpcLoader__columnInner:before{background-color:#f0f0f1;border-radius:50%;content:"";height:calc(100% - 10px);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:calc(100% - 10px)}.webpcLoader__columnCircle{fill:none;stroke:#00a32a;stroke-width:10px;stroke-dasharray:596.90248;stroke-dashoffset:596.90248;height:200px;transform:rotate(-90deg);transition:stroke-dashoffset 2.5s;width:200px}.webpcLoader__column[data-percent="1"] .webpcLoader__columnCircle{stroke-dashoffset:590.9334552}.webpcLoader__column[data-percent="2"] .webpcLoader__columnCircle{stroke-dashoffset:584.9644304}.webpcLoader__column[data-percent="3"] .webpcLoader__columnCircle{stroke-dashoffset:578.9954056}.webpcLoader__column[data-percent="4"] .webpcLoader__columnCircle{stroke-dashoffset:573.0263808}.webpcLoader__column[data-percent="5"] .webpcLoader__columnCircle{stroke-dashoffset:567.057356}.webpcLoader__column[data-percent="6"] .webpcLoader__columnCircle{stroke-dashoffset:561.0883312}.webpcLoader__column[data-percent="7"] .webpcLoader__columnCircle{stroke-dashoffset:555.1193064}.webpcLoader__column[data-percent="8"] .webpcLoader__columnCircle{stroke-dashoffset:549.1502816}.webpcLoader__column[data-percent="9"] .webpcLoader__columnCircle{stroke-dashoffset:543.1812568}.webpcLoader__column[data-percent="10"] .webpcLoader__columnCircle{stroke-dashoffset:537.212232}.webpcLoader__column[data-percent="11"] .webpcLoader__columnCircle{stroke-dashoffset:531.2432072}.webpcLoader__column[data-percent="12"] .webpcLoader__columnCircle{stroke-dashoffset:525.2741824}.webpcLoader__column[data-percent="13"] .webpcLoader__columnCircle{stroke-dashoffset:519.3051576}.webpcLoader__column[data-percent="14"] .webpcLoader__columnCircle{stroke-dashoffset:513.3361328}.webpcLoader__column[data-percent="15"] .webpcLoader__columnCircle{stroke-dashoffset:507.367108}.webpcLoader__column[data-percent="16"] .webpcLoader__columnCircle{stroke-dashoffset:501.3980832}.webpcLoader__column[data-percent="17"] .webpcLoader__columnCircle{stroke-dashoffset:495.4290584}.webpcLoader__column[data-percent="18"] .webpcLoader__columnCircle{stroke-dashoffset:489.4600336}.webpcLoader__column[data-percent="19"] .webpcLoader__columnCircle{stroke-dashoffset:483.4910088}.webpcLoader__column[data-percent="20"] .webpcLoader__columnCircle{stroke-dashoffset:477.521984}.webpcLoader__column[data-percent="21"] .webpcLoader__columnCircle{stroke-dashoffset:471.5529592}.webpcLoader__column[data-percent="22"] .webpcLoader__columnCircle{stroke-dashoffset:465.5839344}.webpcLoader__column[data-percent="23"] .webpcLoader__columnCircle{stroke-dashoffset:459.6149096}.webpcLoader__column[data-percent="24"] .webpcLoader__columnCircle{stroke-dashoffset:453.6458848}.webpcLoader__column[data-percent="25"] .webpcLoader__columnCircle{stroke-dashoffset:447.67686}.webpcLoader__column[data-percent="26"] .webpcLoader__columnCircle{stroke-dashoffset:441.7078352}.webpcLoader__column[data-percent="27"] .webpcLoader__columnCircle{stroke-dashoffset:435.7388104}.webpcLoader__column[data-percent="28"] .webpcLoader__columnCircle{stroke-dashoffset:429.7697856}.webpcLoader__column[data-percent="29"] .webpcLoader__columnCircle{stroke-dashoffset:423.8007608}.webpcLoader__column[data-percent="30"] .webpcLoader__columnCircle{stroke-dashoffset:417.831736}.webpcLoader__column[data-percent="31"] .webpcLoader__columnCircle{stroke-dashoffset:411.8627112}.webpcLoader__column[data-percent="32"] .webpcLoader__columnCircle{stroke-dashoffset:405.8936864}.webpcLoader__column[data-percent="33"] .webpcLoader__columnCircle{stroke-dashoffset:399.9246616}.webpcLoader__column[data-percent="34"] .webpcLoader__columnCircle{stroke-dashoffset:393.9556368}.webpcLoader__column[data-percent="35"] .webpcLoader__columnCircle{stroke-dashoffset:387.986612}.webpcLoader__column[data-percent="36"] .webpcLoader__columnCircle{stroke-dashoffset:382.0175872}.webpcLoader__column[data-percent="37"] .webpcLoader__columnCircle{stroke-dashoffset:376.0485624}.webpcLoader__column[data-percent="38"] .webpcLoader__columnCircle{stroke-dashoffset:370.0795376}.webpcLoader__column[data-percent="39"] .webpcLoader__columnCircle{stroke-dashoffset:364.1105128}.webpcLoader__column[data-percent="40"] .webpcLoader__columnCircle{stroke-dashoffset:358.141488}.webpcLoader__column[data-percent="41"] .webpcLoader__columnCircle{stroke-dashoffset:352.1724632}.webpcLoader__column[data-percent="42"] .webpcLoader__columnCircle{stroke-dashoffset:346.2034384}.webpcLoader__column[data-percent="43"] .webpcLoader__columnCircle{stroke-dashoffset:340.2344136}.webpcLoader__column[data-percent="44"] .webpcLoader__columnCircle{stroke-dashoffset:334.2653888}.webpcLoader__column[data-percent="45"] .webpcLoader__columnCircle{stroke-dashoffset:328.296364}.webpcLoader__column[data-percent="46"] .webpcLoader__columnCircle{stroke-dashoffset:322.3273392}.webpcLoader__column[data-percent="47"] .webpcLoader__columnCircle{stroke-dashoffset:316.3583144}.webpcLoader__column[data-percent="48"] .webpcLoader__columnCircle{stroke-dashoffset:310.3892896}.webpcLoader__column[data-percent="49"] .webpcLoader__columnCircle{stroke-dashoffset:304.4202648}.webpcLoader__column[data-percent="50"] .webpcLoader__columnCircle{stroke-dashoffset:298.45124}.webpcLoader__column[data-percent="51"] .webpcLoader__columnCircle{stroke-dashoffset:292.4822152}.webpcLoader__column[data-percent="52"] .webpcLoader__columnCircle{stroke-dashoffset:286.5131904}.webpcLoader__column[data-percent="53"] .webpcLoader__columnCircle{stroke-dashoffset:280.5441656}.webpcLoader__column[data-percent="54"] .webpcLoader__columnCircle{stroke-dashoffset:274.5751408}.webpcLoader__column[data-percent="55"] .webpcLoader__columnCircle{stroke-dashoffset:268.606116}.webpcLoader__column[data-percent="56"] .webpcLoader__columnCircle{stroke-dashoffset:262.6370912}.webpcLoader__column[data-percent="57"] .webpcLoader__columnCircle{stroke-dashoffset:256.6680664}.webpcLoader__column[data-percent="58"] .webpcLoader__columnCircle{stroke-dashoffset:250.6990416}.webpcLoader__column[data-percent="59"] .webpcLoader__columnCircle{stroke-dashoffset:244.7300168}.webpcLoader__column[data-percent="60"] .webpcLoader__columnCircle{stroke-dashoffset:238.760992}.webpcLoader__column[data-percent="61"] .webpcLoader__columnCircle{stroke-dashoffset:232.7919672}.webpcLoader__column[data-percent="62"] .webpcLoader__columnCircle{stroke-dashoffset:226.8229424}.webpcLoader__column[data-percent="63"] .webpcLoader__columnCircle{stroke-dashoffset:220.8539176}.webpcLoader__column[data-percent="64"] .webpcLoader__columnCircle{stroke-dashoffset:214.8848928}.webpcLoader__column[data-percent="65"] .webpcLoader__columnCircle{stroke-dashoffset:208.915868}.webpcLoader__column[data-percent="66"] .webpcLoader__columnCircle{stroke-dashoffset:202.9468432}.webpcLoader__column[data-percent="67"] .webpcLoader__columnCircle{stroke-dashoffset:196.9778184}.webpcLoader__column[data-percent="68"] .webpcLoader__columnCircle{stroke-dashoffset:191.0087936}.webpcLoader__column[data-percent="69"] .webpcLoader__columnCircle{stroke-dashoffset:185.0397688}.webpcLoader__column[data-percent="70"] .webpcLoader__columnCircle{stroke-dashoffset:179.070744}.webpcLoader__column[data-percent="71"] .webpcLoader__columnCircle{stroke-dashoffset:173.1017192}.webpcLoader__column[data-percent="72"] .webpcLoader__columnCircle{stroke-dashoffset:167.1326944}.webpcLoader__column[data-percent="73"] .webpcLoader__columnCircle{stroke-dashoffset:161.1636696}.webpcLoader__column[data-percent="74"] .webpcLoader__columnCircle{stroke-dashoffset:155.1946448}.webpcLoader__column[data-percent="75"] .webpcLoader__columnCircle{stroke-dashoffset:149.22562}.webpcLoader__column[data-percent="76"] .webpcLoader__columnCircle{stroke-dashoffset:143.2565952}.webpcLoader__column[data-percent="77"] .webpcLoader__columnCircle{stroke-dashoffset:137.2875704}.webpcLoader__column[data-percent="78"] .webpcLoader__columnCircle{stroke-dashoffset:131.3185456}.webpcLoader__column[data-percent="79"] .webpcLoader__columnCircle{stroke-dashoffset:125.3495208}.webpcLoader__column[data-percent="80"] .webpcLoader__columnCircle{stroke-dashoffset:119.380496}.webpcLoader__column[data-percent="81"] .webpcLoader__columnCircle{stroke-dashoffset:113.4114712}.webpcLoader__column[data-percent="82"] .webpcLoader__columnCircle{stroke-dashoffset:107.4424464}.webpcLoader__column[data-percent="83"] .webpcLoader__columnCircle{stroke-dashoffset:101.4734216}.webpcLoader__column[data-percent="84"] .webpcLoader__columnCircle{stroke-dashoffset:95.5043968}.webpcLoader__column[data-percent="85"] .webpcLoader__columnCircle{stroke-dashoffset:89.535372}.webpcLoader__column[data-percent="86"] .webpcLoader__columnCircle{stroke-dashoffset:83.5663472}.webpcLoader__column[data-percent="87"] .webpcLoader__columnCircle{stroke-dashoffset:77.5973224}.webpcLoader__column[data-percent="88"] .webpcLoader__columnCircle{stroke-dashoffset:71.6282976}.webpcLoader__column[data-percent="89"] .webpcLoader__columnCircle{stroke-dashoffset:65.6592728}.webpcLoader__column[data-percent="90"] .webpcLoader__columnCircle{stroke-dashoffset:59.690248}.webpcLoader__column[data-percent="91"] .webpcLoader__columnCircle{stroke-dashoffset:53.7212232}.webpcLoader__column[data-percent="92"] .webpcLoader__columnCircle{stroke-dashoffset:47.7521984}.webpcLoader__column[data-percent="93"] .webpcLoader__columnCircle{stroke-dashoffset:41.7831736}.webpcLoader__column[data-percent="94"] .webpcLoader__columnCircle{stroke-dashoffset:35.8141488}.webpcLoader__column[data-percent="95"] .webpcLoader__columnCircle{stroke-dashoffset:29.845124}.webpcLoader__column[data-percent="96"] .webpcLoader__columnCircle{stroke-dashoffset:23.8760992}.webpcLoader__column[data-percent="97"] .webpcLoader__columnCircle{stroke-dashoffset:17.9070744}.webpcLoader__column[data-percent="98"] .webpcLoader__columnCircle{stroke-dashoffset:11.9380496}.webpcLoader__column[data-percent="99"] .webpcLoader__columnCircle{stroke-dashoffset:5.9690248}.webpcLoader__column[data-percent="100"] .webpcLoader__columnCircle{stroke-dashoffset:0}.webpcLoader__columnOverlay{left:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.webpcLoader__columnOverlayTitle{font-size:14px;font-weight:600;line-height:1.5714285714;padding:4px 20px}.webpcLoader__columnOverlayTitle strong{display:block;font-size:24px;line-height:1.2083333333}.webpcLoader__columnOverlayDesc{font-size:14px;line-height:1.5714285714;min-height:52px;padding:4px 20px}.webpcLoader__columnOverlayDesc--active{display:none}.webpcLoader__column[data-percent] .webpcLoader__columnOverlayDesc--active{display:block}.webpcLoader__column[data-percent] .webpcLoader__columnOverlayDesc--loading{display:none}.webpcLoader__columnOverlayDesc--loading:after{animation:dotsLoading 1s linear infinite;content:"...";font-family:monospace;line-height:1}.webpcLoader__statusProgress--error .webpcLoader__columnOverlayDesc--loading:after,.webpcLoader__statusProgress[data-percent="100"] .webpcLoader__columnOverlayDesc--loading:after{display:none}.webpcLoader__columnDesc{font-size:14px;line-height:1.5714285714;margin-bottom:-10px;margin-top:10px;padding:4px 0;text-align:center}.webpcLoader__status{margin-top:10px;padding-top:10px}.webpcLoader__statusProgress{font-size:0;height:31px;line-height:0;margin:10px 0;position:relative}.webpcLoader__statusProgress:before{background-color:#00a32a;content:"";height:100%;left:0;position:absolute;top:0;transition:width .3s;width:0}.webpcLoader__statusProgress--error:before{background-color:#d63638}.webpcLoader__statusProgress[data-percent="0"]:before{width:0}.webpcLoader__statusProgress[data-percent="1"]:before{width:1%}.webpcLoader__statusProgress[data-percent="2"]:before{width:2%}.webpcLoader__statusProgress[data-percent="3"]:before{width:3%}.webpcLoader__statusProgress[data-percent="4"]:before{width:4%}.webpcLoader__statusProgress[data-percent="5"]:before{width:5%}.webpcLoader__statusProgress[data-percent="6"]:before{width:6%}.webpcLoader__statusProgress[data-percent="7"]:before{width:7%}.webpcLoader__statusProgress[data-percent="8"]:before{width:8%}.webpcLoader__statusProgress[data-percent="9"]:before{width:9%}.webpcLoader__statusProgress[data-percent="10"]:before{width:10%}.webpcLoader__statusProgress[data-percent="11"]:before{width:11%}.webpcLoader__statusProgress[data-percent="12"]:before{width:12%}.webpcLoader__statusProgress[data-percent="13"]:before{width:13%}.webpcLoader__statusProgress[data-percent="14"]:before{width:14%}.webpcLoader__statusProgress[data-percent="15"]:before{width:15%}.webpcLoader__statusProgress[data-percent="16"]:before{width:16%}.webpcLoader__statusProgress[data-percent="17"]:before{width:17%}.webpcLoader__statusProgress[data-percent="18"]:before{width:18%}.webpcLoader__statusProgress[data-percent="19"]:before{width:19%}.webpcLoader__statusProgress[data-percent="20"]:before{width:20%}.webpcLoader__statusProgress[data-percent="21"]:before{width:21%}.webpcLoader__statusProgress[data-percent="22"]:before{width:22%}.webpcLoader__statusProgress[data-percent="23"]:before{width:23%}.webpcLoader__statusProgress[data-percent="24"]:before{width:24%}.webpcLoader__statusProgress[data-percent="25"]:before{width:25%}.webpcLoader__statusProgress[data-percent="26"]:before{width:26%}.webpcLoader__statusProgress[data-percent="27"]:before{width:27%}.webpcLoader__statusProgress[data-percent="28"]:before{width:28%}.webpcLoader__statusProgress[data-percent="29"]:before{width:29%}.webpcLoader__statusProgress[data-percent="30"]:before{width:30%}.webpcLoader__statusProgress[data-percent="31"]:before{width:31%}.webpcLoader__statusProgress[data-percent="32"]:before{width:32%}.webpcLoader__statusProgress[data-percent="33"]:before{width:33%}.webpcLoader__statusProgress[data-percent="34"]:before{width:34%}.webpcLoader__statusProgress[data-percent="35"]:before{width:35%}.webpcLoader__statusProgress[data-percent="36"]:before{width:36%}.webpcLoader__statusProgress[data-percent="37"]:before{width:37%}.webpcLoader__statusProgress[data-percent="38"]:before{width:38%}.webpcLoader__statusProgress[data-percent="39"]:before{width:39%}.webpcLoader__statusProgress[data-percent="40"]:before{width:40%}.webpcLoader__statusProgress[data-percent="41"]:before{width:41%}.webpcLoader__statusProgress[data-percent="42"]:before{width:42%}.webpcLoader__statusProgress[data-percent="43"]:before{width:43%}.webpcLoader__statusProgress[data-percent="44"]:before{width:44%}.webpcLoader__statusProgress[data-percent="45"]:before{width:45%}.webpcLoader__statusProgress[data-percent="46"]:before{width:46%}.webpcLoader__statusProgress[data-percent="47"]:before{width:47%}.webpcLoader__statusProgress[data-percent="48"]:before{width:48%}.webpcLoader__statusProgress[data-percent="49"]:before{width:49%}.webpcLoader__statusProgress[data-percent="50"]:before{width:50%}.webpcLoader__statusProgress[data-percent="51"]:before{width:51%}.webpcLoader__statusProgress[data-percent="52"]:before{width:52%}.webpcLoader__statusProgress[data-percent="53"]:before{width:53%}.webpcLoader__statusProgress[data-percent="54"]:before{width:54%}.webpcLoader__statusProgress[data-percent="55"]:before{width:55%}.webpcLoader__statusProgress[data-percent="56"]:before{width:56%}.webpcLoader__statusProgress[data-percent="57"]:before{width:57%}.webpcLoader__statusProgress[data-percent="58"]:before{width:58%}.webpcLoader__statusProgress[data-percent="59"]:before{width:59%}.webpcLoader__statusProgress[data-percent="60"]:before{width:60%}.webpcLoader__statusProgress[data-percent="61"]:before{width:61%}.webpcLoader__statusProgress[data-percent="62"]:before{width:62%}.webpcLoader__statusProgress[data-percent="63"]:before{width:63%}.webpcLoader__statusProgress[data-percent="64"]:before{width:64%}.webpcLoader__statusProgress[data-percent="65"]:before{width:65%}.webpcLoader__statusProgress[data-percent="66"]:before{width:66%}.webpcLoader__statusProgress[data-percent="67"]:before{width:67%}.webpcLoader__statusProgress[data-percent="68"]:before{width:68%}.webpcLoader__statusProgress[data-percent="69"]:before{width:69%}.webpcLoader__statusProgress[data-percent="70"]:before{width:70%}.webpcLoader__statusProgress[data-percent="71"]:before{width:71%}.webpcLoader__statusProgress[data-percent="72"]:before{width:72%}.webpcLoader__statusProgress[data-percent="73"]:before{width:73%}.webpcLoader__statusProgress[data-percent="74"]:before{width:74%}.webpcLoader__statusProgress[data-percent="75"]:before{width:75%}.webpcLoader__statusProgress[data-percent="76"]:before{width:76%}.webpcLoader__statusProgress[data-percent="77"]:before{width:77%}.webpcLoader__statusProgress[data-percent="78"]:before{width:78%}.webpcLoader__statusProgress[data-percent="79"]:before{width:79%}.webpcLoader__statusProgress[data-percent="80"]:before{width:80%}.webpcLoader__statusProgress[data-percent="81"]:before{width:81%}.webpcLoader__statusProgress[data-percent="82"]:before{width:82%}.webpcLoader__statusProgress[data-percent="83"]:before{width:83%}.webpcLoader__statusProgress[data-percent="84"]:before{width:84%}.webpcLoader__statusProgress[data-percent="85"]:before{width:85%}.webpcLoader__statusProgress[data-percent="86"]:before{width:86%}.webpcLoader__statusProgress[data-percent="87"]:before{width:87%}.webpcLoader__statusProgress[data-percent="88"]:before{width:88%}.webpcLoader__statusProgress[data-percent="89"]:before{width:89%}.webpcLoader__statusProgress[data-percent="90"]:before{width:90%}.webpcLoader__statusProgress[data-percent="91"]:before{width:91%}.webpcLoader__statusProgress[data-percent="92"]:before{width:92%}.webpcLoader__statusProgress[data-percent="93"]:before{width:93%}.webpcLoader__statusProgress[data-percent="94"]:before{width:94%}.webpcLoader__statusProgress[data-percent="95"]:before{width:95%}.webpcLoader__statusProgress[data-percent="96"]:before{width:96%}.webpcLoader__statusProgress[data-percent="97"]:before{width:97%}.webpcLoader__statusProgress[data-percent="98"]:before{width:98%}.webpcLoader__statusProgress[data-percent="99"]:before{width:99%}.webpcLoader__statusProgress[data-percent="100"]:before{width:100%}.webpcLoader__statusProgressCount{background-color:#00a32a;color:#fff;display:inline-block;font-family:monospace;font-size:12px;line-height:1.75;padding:5px 10px;position:relative}.webpcLoader__statusProgress--error .webpcLoader__statusProgressCount{background-color:#d63638}.webpcLoader__statusProgressCount:after{animation:dotsLoading 1s linear infinite;content:"...";margin-left:5px}.webpcLoader__statusProgress--error .webpcLoader__statusProgressCount:after,.webpcLoader__statusProgress[data-percent="100"] .webpcLoader__statusProgressCount:after{display:none}.webpcLoader__statusProgress[data-percent="0"] .webpcLoader__statusProgressCount:before{content:"0%"}.webpcLoader__statusProgress[data-percent="1"] .webpcLoader__statusProgressCount:before{content:"1%"}.webpcLoader__statusProgress[data-percent="2"] .webpcLoader__statusProgressCount:before{content:"2%"}.webpcLoader__statusProgress[data-percent="3"] .webpcLoader__statusProgressCount:before{content:"3%"}.webpcLoader__statusProgress[data-percent="4"] .webpcLoader__statusProgressCount:before{content:"4%"}.webpcLoader__statusProgress[data-percent="5"] .webpcLoader__statusProgressCount:before{content:"5%"}.webpcLoader__statusProgress[data-percent="6"] .webpcLoader__statusProgressCount:before{content:"6%"}.webpcLoader__statusProgress[data-percent="7"] .webpcLoader__statusProgressCount:before{content:"7%"}.webpcLoader__statusProgress[data-percent="8"] .webpcLoader__statusProgressCount:before{content:"8%"}.webpcLoader__statusProgress[data-percent="9"] .webpcLoader__statusProgressCount:before{content:"9%"}.webpcLoader__statusProgress[data-percent="10"] .webpcLoader__statusProgressCount:before{content:"10%"}.webpcLoader__statusProgress[data-percent="11"] .webpcLoader__statusProgressCount:before{content:"11%"}.webpcLoader__statusProgress[data-percent="12"] .webpcLoader__statusProgressCount:before{content:"12%"}.webpcLoader__statusProgress[data-percent="13"] .webpcLoader__statusProgressCount:before{content:"13%"}.webpcLoader__statusProgress[data-percent="14"] .webpcLoader__statusProgressCount:before{content:"14%"}.webpcLoader__statusProgress[data-percent="15"] .webpcLoader__statusProgressCount:before{content:"15%"}.webpcLoader__statusProgress[data-percent="16"] .webpcLoader__statusProgressCount:before{content:"16%"}.webpcLoader__statusProgress[data-percent="17"] .webpcLoader__statusProgressCount:before{content:"17%"}.webpcLoader__statusProgress[data-percent="18"] .webpcLoader__statusProgressCount:before{content:"18%"}.webpcLoader__statusProgress[data-percent="19"] .webpcLoader__statusProgressCount:before{content:"19%"}.webpcLoader__statusProgress[data-percent="20"] .webpcLoader__statusProgressCount:before{content:"20%"}.webpcLoader__statusProgress[data-percent="21"] .webpcLoader__statusProgressCount:before{content:"21%"}.webpcLoader__statusProgress[data-percent="22"] .webpcLoader__statusProgressCount:before{content:"22%"}.webpcLoader__statusProgress[data-percent="23"] .webpcLoader__statusProgressCount:before{content:"23%"}.webpcLoader__statusProgress[data-percent="24"] .webpcLoader__statusProgressCount:before{content:"24%"}.webpcLoader__statusProgress[data-percent="25"] .webpcLoader__statusProgressCount:before{content:"25%"}.webpcLoader__statusProgress[data-percent="26"] .webpcLoader__statusProgressCount:before{content:"26%"}.webpcLoader__statusProgress[data-percent="27"] .webpcLoader__statusProgressCount:before{content:"27%"}.webpcLoader__statusProgress[data-percent="28"] .webpcLoader__statusProgressCount:before{content:"28%"}.webpcLoader__statusProgress[data-percent="29"] .webpcLoader__statusProgressCount:before{content:"29%"}.webpcLoader__statusProgress[data-percent="30"] .webpcLoader__statusProgressCount:before{content:"30%"}.webpcLoader__statusProgress[data-percent="31"] .webpcLoader__statusProgressCount:before{content:"31%"}.webpcLoader__statusProgress[data-percent="32"] .webpcLoader__statusProgressCount:before{content:"32%"}.webpcLoader__statusProgress[data-percent="33"] .webpcLoader__statusProgressCount:before{content:"33%"}.webpcLoader__statusProgress[data-percent="34"] .webpcLoader__statusProgressCount:before{content:"34%"}.webpcLoader__statusProgress[data-percent="35"] .webpcLoader__statusProgressCount:before{content:"35%"}.webpcLoader__statusProgress[data-percent="36"] .webpcLoader__statusProgressCount:before{content:"36%"}.webpcLoader__statusProgress[data-percent="37"] .webpcLoader__statusProgressCount:before{content:"37%"}.webpcLoader__statusProgress[data-percent="38"] .webpcLoader__statusProgressCount:before{content:"38%"}.webpcLoader__statusProgress[data-percent="39"] .webpcLoader__statusProgressCount:before{content:"39%"}.webpcLoader__statusProgress[data-percent="40"] .webpcLoader__statusProgressCount:before{content:"40%"}.webpcLoader__statusProgress[data-percent="41"] .webpcLoader__statusProgressCount:before{content:"41%"}.webpcLoader__statusProgress[data-percent="42"] .webpcLoader__statusProgressCount:before{content:"42%"}.webpcLoader__statusProgress[data-percent="43"] .webpcLoader__statusProgressCount:before{content:"43%"}.webpcLoader__statusProgress[data-percent="44"] .webpcLoader__statusProgressCount:before{content:"44%"}.webpcLoader__statusProgress[data-percent="45"] .webpcLoader__statusProgressCount:before{content:"45%"}.webpcLoader__statusProgress[data-percent="46"] .webpcLoader__statusProgressCount:before{content:"46%"}.webpcLoader__statusProgress[data-percent="47"] .webpcLoader__statusProgressCount:before{content:"47%"}.webpcLoader__statusProgress[data-percent="48"] .webpcLoader__statusProgressCount:before{content:"48%"}.webpcLoader__statusProgress[data-percent="49"] .webpcLoader__statusProgressCount:before{content:"49%"}.webpcLoader__statusProgress[data-percent="50"] .webpcLoader__statusProgressCount:before{content:"50%"}.webpcLoader__statusProgress[data-percent="51"] .webpcLoader__statusProgressCount:before{content:"51%"}.webpcLoader__statusProgress[data-percent="52"] .webpcLoader__statusProgressCount:before{content:"52%"}.webpcLoader__statusProgress[data-percent="53"] .webpcLoader__statusProgressCount:before{content:"53%"}.webpcLoader__statusProgress[data-percent="54"] .webpcLoader__statusProgressCount:before{content:"54%"}.webpcLoader__statusProgress[data-percent="55"] .webpcLoader__statusProgressCount:before{content:"55%"}.webpcLoader__statusProgress[data-percent="56"] .webpcLoader__statusProgressCount:before{content:"56%"}.webpcLoader__statusProgress[data-percent="57"] .webpcLoader__statusProgressCount:before{content:"57%"}.webpcLoader__statusProgress[data-percent="58"] .webpcLoader__statusProgressCount:before{content:"58%"}.webpcLoader__statusProgress[data-percent="59"] .webpcLoader__statusProgressCount:before{content:"59%"}.webpcLoader__statusProgress[data-percent="60"] .webpcLoader__statusProgressCount:before{content:"60%"}.webpcLoader__statusProgress[data-percent="61"] .webpcLoader__statusProgressCount:before{content:"61%"}.webpcLoader__statusProgress[data-percent="62"] .webpcLoader__statusProgressCount:before{content:"62%"}.webpcLoader__statusProgress[data-percent="63"] .webpcLoader__statusProgressCount:before{content:"63%"}.webpcLoader__statusProgress[data-percent="64"] .webpcLoader__statusProgressCount:before{content:"64%"}.webpcLoader__statusProgress[data-percent="65"] .webpcLoader__statusProgressCount:before{content:"65%"}.webpcLoader__statusProgress[data-percent="66"] .webpcLoader__statusProgressCount:before{content:"66%"}.webpcLoader__statusProgress[data-percent="67"] .webpcLoader__statusProgressCount:before{content:"67%"}.webpcLoader__statusProgress[data-percent="68"] .webpcLoader__statusProgressCount:before{content:"68%"}.webpcLoader__statusProgress[data-percent="69"] .webpcLoader__statusProgressCount:before{content:"69%"}.webpcLoader__statusProgress[data-percent="70"] .webpcLoader__statusProgressCount:before{content:"70%"}.webpcLoader__statusProgress[data-percent="71"] .webpcLoader__statusProgressCount:before{content:"71%"}.webpcLoader__statusProgress[data-percent="72"] .webpcLoader__statusProgressCount:before{content:"72%"}.webpcLoader__statusProgress[data-percent="73"] .webpcLoader__statusProgressCount:before{content:"73%"}.webpcLoader__statusProgress[data-percent="74"] .webpcLoader__statusProgressCount:before{content:"74%"}.webpcLoader__statusProgress[data-percent="75"] .webpcLoader__statusProgressCount:before{content:"75%"}.webpcLoader__statusProgress[data-percent="76"] .webpcLoader__statusProgressCount:before{content:"76%"}.webpcLoader__statusProgress[data-percent="77"] .webpcLoader__statusProgressCount:before{content:"77%"}.webpcLoader__statusProgress[data-percent="78"] .webpcLoader__statusProgressCount:before{content:"78%"}.webpcLoader__statusProgress[data-percent="79"] .webpcLoader__statusProgressCount:before{content:"79%"}.webpcLoader__statusProgress[data-percent="80"] .webpcLoader__statusProgressCount:before{content:"80%"}.webpcLoader__statusProgress[data-percent="81"] .webpcLoader__statusProgressCount:before{content:"81%"}.webpcLoader__statusProgress[data-percent="82"] .webpcLoader__statusProgressCount:before{content:"82%"}.webpcLoader__statusProgress[data-percent="83"] .webpcLoader__statusProgressCount:before{content:"83%"}.webpcLoader__statusProgress[data-percent="84"] .webpcLoader__statusProgressCount:before{content:"84%"}.webpcLoader__statusProgress[data-percent="85"] .webpcLoader__statusProgressCount:before{content:"85%"}.webpcLoader__statusProgress[data-percent="86"] .webpcLoader__statusProgressCount:before{content:"86%"}.webpcLoader__statusProgress[data-percent="87"] .webpcLoader__statusProgressCount:before{content:"87%"}.webpcLoader__statusProgress[data-percent="88"] .webpcLoader__statusProgressCount:before{content:"88%"}.webpcLoader__statusProgress[data-percent="89"] .webpcLoader__statusProgressCount:before{content:"89%"}.webpcLoader__statusProgress[data-percent="90"] .webpcLoader__statusProgressCount:before{content:"90%"}.webpcLoader__statusProgress[data-percent="91"] .webpcLoader__statusProgressCount:before{content:"91%"}.webpcLoader__statusProgress[data-percent="92"] .webpcLoader__statusProgressCount:before{content:"92%"}.webpcLoader__statusProgress[data-percent="93"] .webpcLoader__statusProgressCount:before{content:"93%"}.webpcLoader__statusProgress[data-percent="94"] .webpcLoader__statusProgressCount:before{content:"94%"}.webpcLoader__statusProgress[data-percent="95"] .webpcLoader__statusProgressCount:before{content:"95%"}.webpcLoader__statusProgress[data-percent="96"] .webpcLoader__statusProgressCount:before{content:"96%"}.webpcLoader__statusProgress[data-percent="97"] .webpcLoader__statusProgressCount:before{content:"97%"}.webpcLoader__statusProgress[data-percent="98"] .webpcLoader__statusProgressCount:before{content:"98%"}.webpcLoader__statusProgress[data-percent="99"] .webpcLoader__statusProgressCount:before{content:"99%"}.webpcLoader__statusProgress[data-percent="100"] .webpcLoader__statusProgressCount:before{content:"100%"}.webpcLoader__statusContent{font-size:14px;line-height:1.5714285714;max-width:800px;padding:4px 0}.webpcLoader__statusContent--small{font-size:12px;line-height:1.75}.webpcLoader__statusContent strong{font-weight:600}.webpcLoader__success{padding:10px 0}.webpcLoader__successInner{border-left:2px solid #00a32a;padding:0 20px}.webpcLoader__successContent{color:#00a32a;font-size:14px;font-weight:600;line-height:1.5714285714;padding:4px 0}.webpcLoader__successContent a{color:inherit}.webpcLoader__errors{margin-top:10px;padding:10px 0}.webpcLoader__errorsInner{border-left:2px solid #c3c4c7}.webpcLoader__errorsTitle{background-color:#c3c4c7;color:#fff;display:inline-block;font-size:14px;line-height:1.5714285714;padding:4px 20px}.webpcLoader__errorsContent{padding:10px 0 10px 20px}.webpcLoader__errorsContent>p{font-size:12px;line-height:1.75;margin:0;max-width:100%}.webpcLoader__errorsContent>p.webpcLoader__errorsContentError{color:#d63638;font-size:14px;font-weight:600;line-height:1.5714285714}.webpcLoader__errorsContent pre{font-size:12px;line-height:1.75;white-space:normal}.webpcLoader__button--disabled{opacity:.25!important;pointer-events:none}.webpcMenu{margin-top:30px}.webpcMenu:first-child{margin-top:0}.webpcMenu__wrapper{border-bottom:1px solid #dcdcde}.webpcMenu__items{display:flex;font-size:0}.webpcMenu__itemLink{box-shadow:none!important;display:block;font-size:16px;line-height:1.5;outline:none!important;padding:13px 30px;text-align:center;text-decoration:none!important;transition:color .3s}.webpcMenu__itemLink:focus,.webpcMenu__itemLink:hover{color:rgba(34,113,177,.5)}.webpcMenu__itemLink--active{background-color:#fff;color:#101517;font-weight:600}.webpcMenu__itemLink--active:focus,.webpcMenu__itemLink--active:hover{color:inherit}.webpcPopup{margin-top:20px}.webpcPopup__inner{background-color:#fff;border:1px solid #c3c4c7;display:flex;flex-wrap:wrap}.webpcPopup__image{background-image:url(../../img/author.png);background-position:50%;background-repeat:no-repeat;background-size:cover;width:152px}.webpcPopup__content{border-left:1px solid #c3c4c7;flex:1;padding:10px 20px}.webpcQuality__items{display:flex;flex-wrap:wrap;justify-content:space-between}.webpcQuality__item{display:flex;flex:1;justify-content:center;position:relative}.webpcQuality__item:before{background-color:#c3c4c7;content:"";height:1px;left:0;position:absolute;top:50%;width:100%}.webpcQuality__item:first-child:before{left:50%}.webpcQuality__item:last-child:before{width:50%}.webpcQuality__itemInput{display:none!important}.webpcQuality__itemLabel{display:block;height:42px;position:relative;width:42px}.webpcQuality__itemLabel:after,.webpcQuality__itemLabel:before{border-radius:50%;content:"";height:22px;position:absolute;width:22px}.webpcQuality__itemLabel:before{background-color:#fff;border:1px solid #c3c4c7;left:10px;top:10px}.webpcQuality__itemLabel:after{background-color:#00a32a;height:8px;left:17px;top:17px;transform:scale(0);transition:transform .3s;width:8px}.webpcQuality__itemInput:checked+.webpcQuality__itemLabel:after{transform:scale(1)}.webpcQuality__texts{display:flex;flex-wrap:wrap}.webpcQuality__text{flex:1;font-size:12px;line-height:1.75;padding:4px 0;text-align:center}.webpcQuality__text strong{font-size:14px;line-height:1.5714285714}.webpcServerInfo{color:#222;text-align:center}.webpcServerInfo pre{font-family:monospace;margin:0}.webpcServerInfo h1,.webpcServerInfo h2{display:none}.webpcServerInfo p{max-width:100%}.webpcServerInfo table{border:0;border-collapse:collapse;margin:10px auto;width:100%}.webpcServerInfo td,.webpcServerInfo th{border:1px solid #666;font-family:monospace;font-size:12px;line-height:1.75;padding:4px 5px;text-align:center;vertical-align:baseline}.webpcServerInfo .p{text-align:left}.webpcServerInfo .e{background-color:#ccf;font-weight:700;width:300px}.webpcServerInfo .h{background-color:#99c;font-weight:700}.webpcServerInfo .v{word-wrap:break-word;background-color:#ddd;max-width:300px;overflow-x:auto}.webpcServerInfo .v i{color:#999}.webpcServerInfo img{border:0;float:right}.webpcTree{background-color:#f6f7f7;max-height:400px;overflow-y:auto;padding:10px 20px}.webpcTree__headline{font-weight:600}.webpcTree__output{white-space:nowrap}.webpcTree__items{font-size:0;margin-left:20px;padding:4px 0}.webpcTree__items .webpcTree__items{display:none;padding:0}.webpcTree__itemCheckbox{display:none!important}.webpcTree__itemLabel{color:#101517;display:inline-block;font-size:14px;line-height:1.5714285714;padding-left:20px;position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none}.webpcTree__itemLabel:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#f0c33c;content:"\e906"!important;font-family:webpc-icomoon!important;font-size:14px;font-style:normal;font-variant:normal;font-weight:400;left:0;line-height:1;position:absolute;text-transform:none;top:4px}.webpcTree__itemLabel:after{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#101517;content:"\e905"!important;font-family:webpc-icomoon!important;font-size:10px;font-style:normal;font-variant:normal;font-weight:400;left:-25px;line-height:1;padding:5px;position:absolute;text-transform:none;top:1px}.webpcTree__itemLabel strong{color:#101517;font-weight:600}.webpcTree__itemLabel:hover{color:#787c82}.webpcTree__itemCheckbox:checked+.webpcTree__itemLabel:after{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e904"!important;font-family:webpc-icomoon!important;font-style:normal;font-variant:normal;font-weight:400;text-transform:none}.webpcTree__itemCheckbox:checked~.webpcTree__items{display:block}.webpcTree__itemName{display:block;font-size:12px;line-height:1.6666666667;padding-left:20px;position:relative}.webpcTree__itemName:before{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#4f94d4;content:"\e907"!important;font-family:webpc-icomoon!important;font-size:14px;font-style:normal;font-variant:normal;font-weight:400;left:0;line-height:1;position:absolute;text-transform:none;top:3px}@media screen and (max-width:1600px){.webpcPage__columns{margin:0 -15px}.webpcPage__column{padding:0 15px}.webpcPage__widget+.webpcPage__widget{margin-top:30px}}@media screen and (max-width:1279px){.webpcPage__column--large{width:100%}.webpcPage__column--small{margin-top:30px;width:100%}}@media screen and (max-width:1024px){.webpcPage__widgetColumns{display:block}.webpcPage__widgetColumn{width:100%}}@media screen and (max-width:782px){.webpcPage{padding-right:0}.webpcContent--author{background:none;margin-left:0;padding-left:30px}.webpcContent--notice img{bottom:auto;margin:20px 0 10px;position:relative;right:auto}.webpcInput{display:block}.webpcInput__field{width:100%}.webpcInput__field--small{width:calc(100% - 20px)}.webpcInput__button{margin:10px 0 0!important}.webpcLoader__columns,.webpcMenu__items{display:block}.webpcPopup__inner{border:1px solid #c3c4c7;display:block}.webpcPopup__image{height:152px;margin:20px auto 0}.webpcPopup__content{border-left:0}}
assets/build/js/scripts.js CHANGED
@@ -1 +1 @@
1
- !function(){var e,t={669:function(e,t,r){e.exports=r(609)},448:function(e,t,r){"use strict";var n=r(867),i=r(26),o=r(372),s=r(327),a=r(97),u=r(109),c=r(985),l=r(61);e.exports=function(e){return new Promise((function(t,r){var f=e.data,d=e.headers,h=e.responseType;n.isFormData(f)&&delete d["Content-Type"];var p=new XMLHttpRequest;if(e.auth){var v=e.auth.username||"",m=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";d.Authorization="Basic "+btoa(v+":"+m)}var _=a(e.baseURL,e.url);function g(){if(p){var n="getAllResponseHeaders"in p?u(p.getAllResponseHeaders()):null,o={data:h&&"text"!==h&&"json"!==h?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:n,config:e,request:p};i(t,r,o),p=null}}if(p.open(e.method.toUpperCase(),s(_,e.params,e.paramsSerializer),!0),p.timeout=e.timeout,"onloadend"in p?p.onloadend=g:p.onreadystatechange=function(){p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))&&setTimeout(g)},p.onabort=function(){p&&(r(l("Request aborted",e,"ECONNABORTED",p)),p=null)},p.onerror=function(){r(l("Network Error",e,null,p)),p=null},p.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(l(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",p)),p=null},n.isStandardBrowserEnv()){var b=(e.withCredentials||c(_))&&e.xsrfCookieName?o.read(e.xsrfCookieName):void 0;b&&(d[e.xsrfHeaderName]=b)}"setRequestHeader"in p&&n.forEach(d,(function(e,t){void 0===f&&"content-type"===t.toLowerCase()?delete d[t]:p.setRequestHeader(t,e)})),n.isUndefined(e.withCredentials)||(p.withCredentials=!!e.withCredentials),h&&"json"!==h&&(p.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&p.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){p&&(p.abort(),r(e),p=null)})),f||(f=null),p.send(f)}))}},609:function(e,t,r){"use strict";var n=r(867),i=r(849),o=r(321),s=r(185);function a(e){var t=new o(e),r=i(o.prototype.request,t);return n.extend(r,o.prototype,t),n.extend(r,t),r}var u=a(r(655));u.Axios=o,u.create=function(e){return a(s(u.defaults,e))},u.Cancel=r(263),u.CancelToken=r(972),u.isCancel=r(502),u.all=function(e){return Promise.all(e)},u.spread=r(713),u.isAxiosError=r(268),e.exports=u,e.exports.default=u},263:function(e){"use strict";function t(e){this.message=e}t.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},t.prototype.__CANCEL__=!0,e.exports=t},972:function(e,t,r){"use strict";var n=r(263);function i(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new n(e),t(r.reason))}))}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var e;return{token:new i((function(t){e=t})),cancel:e}},e.exports=i},502:function(e){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},321:function(e,t,r){"use strict";var n=r(867),i=r(327),o=r(782),s=r(572),a=r(185),u=r(875),c=u.validators;function l(e){this.defaults=e,this.interceptors={request:new o,response:new o}}l.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=a(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&u.assertOptions(t,{silentJSONParsing:c.transitional(c.boolean,"1.0.0"),forcedJSONParsing:c.transitional(c.boolean,"1.0.0"),clarifyTimeoutError:c.transitional(c.boolean,"1.0.0")},!1);var r=[],n=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(n=n&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var i,o=[];if(this.interceptors.response.forEach((function(e){o.push(e.fulfilled,e.rejected)})),!n){var l=[s,void 0];for(Array.prototype.unshift.apply(l,r),l=l.concat(o),i=Promise.resolve(e);l.length;)i=i.then(l.shift(),l.shift());return i}for(var f=e;r.length;){var d=r.shift(),h=r.shift();try{f=d(f)}catch(e){h(e);break}}try{i=s(f)}catch(e){return Promise.reject(e)}for(;o.length;)i=i.then(o.shift(),o.shift());return i},l.prototype.getUri=function(e){return e=a(this.defaults,e),i(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},n.forEach(["delete","get","head","options"],(function(e){l.prototype[e]=function(t,r){return this.request(a(r||{},{method:e,url:t,data:(r||{}).data}))}})),n.forEach(["post","put","patch"],(function(e){l.prototype[e]=function(t,r,n){return this.request(a(n||{},{method:e,url:t,data:r}))}})),e.exports=l},782:function(e,t,r){"use strict";var n=r(867);function i(){this.handlers=[]}i.prototype.use=function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.forEach=function(e){n.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=i},97:function(e,t,r){"use strict";var n=r(793),i=r(303);e.exports=function(e,t){return e&&!n(t)?i(e,t):t}},61:function(e,t,r){"use strict";var n=r(481);e.exports=function(e,t,r,i,o){var s=new Error(e);return n(s,t,r,i,o)}},572:function(e,t,r){"use strict";var n=r(867),i=r(527),o=r(502),s=r(655);function a(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return a(e),e.headers=e.headers||{},e.data=i.call(e,e.data,e.headers,e.transformRequest),e.headers=n.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),n.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||s.adapter)(e).then((function(t){return a(e),t.data=i.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return o(t)||(a(e),t&&t.response&&(t.response.data=i.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},481:function(e){"use strict";e.exports=function(e,t,r,n,i){return e.config=t,r&&(e.code=r),e.request=n,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},185:function(e,t,r){"use strict";var n=r(867);e.exports=function(e,t){t=t||{};var r={},i=["url","method","data"],o=["headers","auth","proxy","params"],s=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],a=["validateStatus"];function u(e,t){return n.isPlainObject(e)&&n.isPlainObject(t)?n.merge(e,t):n.isPlainObject(t)?n.merge({},t):n.isArray(t)?t.slice():t}function c(i){n.isUndefined(t[i])?n.isUndefined(e[i])||(r[i]=u(void 0,e[i])):r[i]=u(e[i],t[i])}n.forEach(i,(function(e){n.isUndefined(t[e])||(r[e]=u(void 0,t[e]))})),n.forEach(o,c),n.forEach(s,(function(i){n.isUndefined(t[i])?n.isUndefined(e[i])||(r[i]=u(void 0,e[i])):r[i]=u(void 0,t[i])})),n.forEach(a,(function(n){n in t?r[n]=u(e[n],t[n]):n in e&&(r[n]=u(void 0,e[n]))}));var l=i.concat(o).concat(s).concat(a),f=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===l.indexOf(e)}));return n.forEach(f,c),r}},26:function(e,t,r){"use strict";var n=r(61);e.exports=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(n("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)}},527:function(e,t,r){"use strict";var n=r(867),i=r(655);e.exports=function(e,t,r){var o=this||i;return n.forEach(r,(function(r){e=r.call(o,e,t)})),e}},655:function(e,t,r){"use strict";var n=r(155),i=r(867),o=r(16),s=r(481),a={"Content-Type":"application/x-www-form-urlencoded"};function u(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var c,l={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==n&&"[object process]"===Object.prototype.toString.call(n))&&(c=r(448)),c),transformRequest:[function(e,t){return o(t,"Accept"),o(t,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(u(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)||t&&"application/json"===t["Content-Type"]?(u(t,"application/json"),function(e,t,r){if(i.isString(e))try{return(t||JSON.parse)(e),i.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,r=t&&t.silentJSONParsing,n=t&&t.forcedJSONParsing,o=!r&&"json"===this.responseType;if(o||n&&i.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw s(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};l.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],(function(e){l.headers[e]={}})),i.forEach(["post","put","patch"],(function(e){l.headers[e]=i.merge(a)})),e.exports=l},849:function(e){"use strict";e.exports=function(e,t){return function(){for(var r=new Array(arguments.length),n=0;n<r.length;n++)r[n]=arguments[n];return e.apply(t,r)}}},327:function(e,t,r){"use strict";var n=r(867);function i(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,r){if(!t)return e;var o;if(r)o=r(t);else if(n.isURLSearchParams(t))o=t.toString();else{var s=[];n.forEach(t,(function(e,t){null!=e&&(n.isArray(e)?t+="[]":e=[e],n.forEach(e,(function(e){n.isDate(e)?e=e.toISOString():n.isObject(e)&&(e=JSON.stringify(e)),s.push(i(t)+"="+i(e))})))})),o=s.join("&")}if(o){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}},303:function(e){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},372:function(e,t,r){"use strict";var n=r(867);e.exports=n.isStandardBrowserEnv()?{write:function(e,t,r,i,o,s){var a=[];a.push(e+"="+encodeURIComponent(t)),n.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),n.isString(i)&&a.push("path="+i),n.isString(o)&&a.push("domain="+o),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},793:function(e){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},268:function(e){"use strict";e.exports=function(e){return"object"==typeof e&&!0===e.isAxiosError}},985:function(e,t,r){"use strict";var n=r(867);e.exports=n.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function i(e){var n=e;return t&&(r.setAttribute("href",n),n=r.href),r.setAttribute("href",n),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=i(window.location.href),function(t){var r=n.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0}},16:function(e,t,r){"use strict";var n=r(867);e.exports=function(e,t){n.forEach(e,(function(r,n){n!==t&&n.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[n])}))}},109:function(e,t,r){"use strict";var n=r(867),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,r,o,s={};return e?(n.forEach(e.split("\n"),(function(e){if(o=e.indexOf(":"),t=n.trim(e.substr(0,o)).toLowerCase(),r=n.trim(e.substr(o+1)),t){if(s[t]&&i.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([r]):s[t]?s[t]+", "+r:r}})),s):s}},713:function(e){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},875:function(e,t,r){"use strict";var n=r(593),i={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){i[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var o={},s=n.version.split(".");function a(e,t){for(var r=t?t.split("."):s,n=e.split("."),i=0;i<3;i++){if(r[i]>n[i])return!0;if(r[i]<n[i])return!1}return!1}i.transitional=function(e,t,r){var i=t&&a(t);return function(s,a,u){if(!1===e)throw new Error(function(e,t){return"[Axios v"+n.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}(a," has been removed in "+t));return i&&!o[a]&&(o[a]=!0),!e||e(s,a,u)}},e.exports={isOlderVersion:a,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var n=Object.keys(e),i=n.length;i-- >0;){var o=n[i],s=t[o];if(s){var a=e[o],u=void 0===a||s(a,o,e);if(!0!==u)throw new TypeError("option "+o+" must be "+u)}else if(!0!==r)throw Error("Unknown option "+o)}},validators:i}},867:function(e,t,r){"use strict";var n=r(849),i=Object.prototype.toString;function o(e){return"[object Array]"===i.call(e)}function s(e){return void 0===e}function a(e){return null!==e&&"object"==typeof e}function u(e){if("[object Object]"!==i.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function c(e){return"[object Function]"===i.call(e)}function l(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),o(e))for(var r=0,n=e.length;r<n;r++)t.call(null,e[r],r,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}e.exports={isArray:o,isArrayBuffer:function(e){return"[object ArrayBuffer]"===i.call(e)},isBuffer:function(e){return null!==e&&!s(e)&&null!==e.constructor&&!s(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:a,isPlainObject:u,isUndefined:s,isDate:function(e){return"[object Date]"===i.call(e)},isFile:function(e){return"[object File]"===i.call(e)},isBlob:function(e){return"[object Blob]"===i.call(e)},isFunction:c,isStream:function(e){return a(e)&&c(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:l,merge:function e(){var t={};function r(r,n){u(t[n])&&u(r)?t[n]=e(t[n],r):u(r)?t[n]=e({},r):o(r)?t[n]=r.slice():t[n]=r}for(var n=0,i=arguments.length;n<i;n++)l(arguments[n],r);return t},extend:function(e,t,r){return l(t,(function(t,i){e[i]=r&&"function"==typeof t?n(t,r):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}}},917:function(e,t,r){"use strict";var n=r(669),i=r.n(n);function o(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var s=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.set_vars()&&this.set_events()}var t,r,n;return t=e,(r=[{key:"set_vars",value:function(){if(this.section=document.querySelector("[data-calculate-widget]"),this.section)return this.button=this.section.querySelector("[data-calculate-widget-button]"),this.loading=this.section.querySelector("[data-calculate-widget-loading]"),this.output=this.section.querySelector("[data-calculate-widget-output]"),this.settings={ajax:{url_calculation:this.section.getAttribute("data-calculate-widget-api")}},!0}},{key:"set_events",value:function(){this.button.addEventListener("click",this.init_calculation.bind(this))}},{key:"init_calculation",value:function(e){e.preventDefault(),this.button.setAttribute("hidden","hidden"),this.output.setAttribute("hidden","hidden"),this.loading.removeAttribute("hidden"),this.send_request_for_calculation()}},{key:"send_request_for_calculation",value:function(){var e=this,t=this.settings.ajax.url_calculation,r=new Date;i()({method:"GET",url:t}).then((function(t){e.loading.setAttribute("hidden","hidden"),e.output.innerText=t.data.value_output,e.output.removeAttribute("hidden","hidden")})).catch((function(t){if(e.button.removeAttribute("hidden"),e.loading.setAttribute("hidden","hidden"),t.response){var n=(new Date-r)/1e3,i=t.response.status,o=JSON.stringify(t.response.data);e.output.innerText="HTTP Error ".concat(i," (").concat(n,"s): ").concat(o),e.output.removeAttribute("hidden","hidden")}}))}}])&&o(t.prototype,r),n&&o(t,n),e}();function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var c=function(){function e(t){a(this,e),this.input_toggle=t,this.set_vars()&&this.set_events()}var t,r,n;return t=e,(r=[{key:"set_vars",value:function(){var e=this.input_toggle.getAttribute("data-inputs-group-toggle");return this.inputs=document.querySelectorAll('[data-inputs-group-input="'.concat(e,'"]')),!!this.inputs.length}},{key:"set_events",value:function(){this.input_toggle.addEventListener("change",this.toggle_inputs.bind(this))}},{key:"toggle_inputs",value:function(e){for(var t=this.inputs.length,r=0;r<t;r++)this.input_toggle.checked?this.inputs[r].removeAttribute("readonly"):this.inputs[r].setAttribute("readonly","readonly")}}])&&u(t.prototype,r),n&&u(t,n),e}(),l=function e(){a(this,e);for(var t=document.querySelectorAll("[data-inputs-group-toggle]"),r=t.length,n=0;n<r;n++)new c(t[n])};function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var h=function(){function e(t){f(this,e),this.notice=t,this.set_vars()&&this.set_events()}var t,r,n;return t=e,(r=[{key:"set_vars",value:function(){return this.settings={ajax_action:this.notice.getAttribute("data-notice-action"),ajax_url:this.notice.getAttribute("data-notice-url"),button_close_class:".notice-dismiss",button_hide_class:"[data-permanently]"},this.events={click_on_close:this.click_on_close.bind(this)},!0}},{key:"set_events",value:function(){this.notice.addEventListener("click",this.events.click_on_close)}},{key:"click_on_close",value:function(e){var t=this.settings,r=t.button_close_class,n=t.button_hide_class;this.notice.removeEventListener("click",this.events.click_on_close),e.target.matches(r)?this.hide_notice(!1):e.target.matches(n)&&this.hide_notice(!0)}},{key:"hide_notice",value:function(e){var t=this.settings.button_close_class;this.send_request(e),e&&this.notice.querySelector(t).click()}},{key:"send_request",value:function(e){var t=this.settings.ajax_url;i()({method:"POST",url:t,data:this.get_data_for_request(e)})}},{key:"get_data_for_request",value:function(e){var t=this.settings.ajax_action,r=new FormData;return r.append("action",t),r.append("is_permanently",e?1:0),r}}])&&d(t.prototype,r),n&&d(t,n),e}(),p=function e(){f(this,e);for(var t=document.querySelectorAll('.notice[data-notice="webp-converter-for-media"][data-notice-action]'),r=t.length,n=0;n<r;n++)new h(t[n])};function v(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var m=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.set_vars()&&(this.set_events(),this.send_request_for_calculation())}var t,r,n;return t=e,(r=[{key:"set_vars",value:function(){if(this.section=document.querySelector(".webpcLoader"),this.section)return this.counter_webp=this.section.querySelector('[data-counter="webp"]'),this.counter_webp_percent=this.counter_webp.querySelector("[data-counter-percent]"),this.counter_webp_images=this.counter_webp.querySelector("[data-counter-left]"),this.counter_avif=this.section.querySelector('[data-counter="avif"]'),this.counter_avif_percent=this.counter_avif.querySelector("[data-counter-percent]"),this.counter_avif_images=this.counter_avif.querySelector("[data-counter-left]"),this.wrapper_status=this.section.querySelector("[data-status]"),this.progress=this.wrapper_status.querySelector("[data-status-progress]"),this.progress_size=this.section.querySelector("[data-status-count-size]"),this.progress_success=this.section.querySelector("[data-status-count-success]"),this.progress_failed=this.section.querySelector("[data-status-count-error]"),this.wrapper_errors=this.section.querySelector("[data-errors]"),this.errors_output=this.wrapper_errors.querySelector("[data-errors-output]"),this.wrapper_success=this.section.querySelector("[data-success]"),this.option_force=this.section.querySelector('input[name="regenerate_force"]'),this.submit_button=this.section.querySelector("[data-submit]"),this.data={count:0,max:0,items:[],size:{before:0,after:0},files:{all:0,converted:0},files_counter:{webp_left:0,webp_converted:0,webp_all:0,avif_left:0,avif_converted:0,avif_all:0},errors:0},this.settings={is_disabled:!1,ajax:{url_calculate:this.section.getAttribute("data-api-calculate"),url_paths:this.section.getAttribute("data-api-paths"),url_regenerate:this.section.getAttribute("data-api-regenerate"),error_message:this.section.getAttribute("data-api-error-message")},units:["kB","MB","GB"],max_errors:1e3,connection_timeout:6e4},this.atts={progress:"data-percent",counter_percent:"data-percent"},this.classes={progress_error:"webpcLoader__statusProgress--error",button_disabled:"webpcLoader__button--disabled",error_message:"webpcLoader__errorsContentError"},!0}},{key:"set_events",value:function(){this.submit_button.addEventListener("click",this.init_regeneration.bind(this))}},{key:"send_request_for_calculation",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=this.settings.ajax.url_calculate;t>=3||i()({method:"GET",url:r}).then((function(t){e.data.files_counter.webp_left=t.data.value_webp_left||0,e.data.files_counter.webp_all=t.data.value_webp_all||0,e.data.files_counter.avif_left=t.data.value_avif_left||0,e.data.files_counter.avif_all=t.data.value_avif_all||0,e.update_calculation_stats()})).catch((function(r){e.send_request_for_calculation(t+1)}))}},{key:"update_calculation_stats",value:function(){var e=this.data.files_counter,t=this.atts.counter_percent,r=Math.min(Math.max(e.webp_left-e.webp_converted,0),e.webp_all),n=Math.min(Math.max(e.avif_left-e.avif_converted,0),e.avif_all),i=e.webp_all>0?Math.floor(100*(1-r/e.webp_all)):0,o=e.avif_all>0?Math.floor(100*(1-n/e.avif_all)):0;this.counter_webp.setAttribute(t,i),this.counter_webp_percent.innerText=i,this.counter_webp_images.innerText=r.toString().replace(/\B(?=(\d{3})+(?!\d))/g," "),this.counter_avif.setAttribute(t,o),this.counter_avif_percent.innerText=o,this.counter_avif_images.innerText=n.toString().replace(/\B(?=(\d{3})+(?!\d))/g," ")}},{key:"init_regeneration",value:function(e){e.preventDefault(),this.settings.is_disabled||(this.settings.is_disabled=!0,this.submit_button.classList.add(this.classes.button_disabled),this.option_force.setAttribute("disabled","disabled"),this.wrapper_status.removeAttribute("hidden"),this.send_request_for_paths())}},{key:"send_request_for_paths",value:function(){var e=this,t=this.settings.ajax.url_paths;i()({method:"POST",url:t,data:{regenerate_force:this.option_force.checked?1:0}}).then((function(t){e.data.items=t.data,e.data.max=t.data.length,e.regenerate_next_images()})).catch((function(t){e.catch_request_error(t,!0)}))}},{key:"regenerate_next_images",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===this.data.max&&this.update_progress(),!(this.data.count>=this.data.max)){e>=3?e=0:e>0&&this.data.count--;var t=this.data.items[this.data.count];this.data.count++,this.send_request_for_regeneration(t,e)}}},{key:"send_request_for_regeneration",value:function(e,t){var r=this,n=this.settings.ajax.url_regenerate;i()({method:"POST",url:n,data:{regenerate_force:this.option_force.checked?1:0,paths:e},timeout:this.settings.connection_timeout}).then((function(e){var t=e.data.is_fatal_error;r.update_errors(e.data.errors,t),t||(r.update_size(e.data),r.update_files_count(e.data),r.update_progress(),r.regenerate_next_images())})).catch((function(n){n.response?(r.catch_request_error(n,!1,e),setTimeout(r.regenerate_next_images.bind(r),1e3)):setTimeout(r.regenerate_next_images.bind(r,t+1),1e3)}))}},{key:"update_errors",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.data.errors>this.settings.max_errors&&(this.data.errors=0,this.errors_output.innerHTML="");for(var r=this.get_date(),n=0;n<e.length;n++)this.print_error_message(e[n],t,!1,r),this.data.errors++;t&&this.set_fatal_error()}},{key:"get_date",value:function(){var e=new Date,t=("0"+e.getHours()).substr(-2),r=("0"+e.getMinutes()).substr(-2),n=("0"+e.getSeconds()).substr(-2);return"".concat(t,":").concat(r,":").concat(n)}},{key:"set_fatal_error",value:function(){this.progress.classList.add(this.classes.progress_error)}},{key:"catch_request_error",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;t&&(this.print_error_message([this.settings.ajax.error_message],!0,!1),this.set_fatal_error());var n=null!==r?'["'.concat(r.join('", "'),'"]'):"";this.print_error_message("".concat(e.response.status," - ").concat(e.response.statusText," (").concat(e.response.config.url,") ").concat(n),!0,!0)}},{key:"print_error_message",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=document.createElement("p"),o=n||this.get_date();if(r){var s=document.createElement("pre");s.innerText=e,i.appendChild(s)}else i.innerHTML="<strong>".concat(o,"</strong> - ").concat(e);t&&i.classList.add(this.classes.error_message),this.wrapper_errors.removeAttribute("hidden"),this.errors_output.appendChild(i)}},{key:"update_size",value:function(e){var t=this.data.size;t.before+=e.size.before,t.after+=e.size.after;var r=t.before-t.after;if(r<0&&(r=0),0!==r){var n=Math.round(100*(1-t.after/t.before));n<0&&(n=0);var i=-1;do{i++,r/=1024}while(r>1024);var o=r.toFixed(2),s=this.settings.units[i];this.progress_size.innerHTML="".concat(o," ").concat(s," (").concat(n,"%)")}}},{key:"update_files_count",value:function(e){var t=this.data,r=t.files,n=t.files_counter;r.all+=e.files.all,r.converted+=e.files.converted,n.webp_converted+=e.files.converted_webp,n.avif_converted+=e.files.converted_avif,this.option_force.checked&&(n.webp_left=n.webp_all,n.avif_left=n.avif_all),this.progress_success.innerText=r.converted,this.progress_failed.innerText=r.all-r.converted,this.update_calculation_stats()}},{key:"update_progress",value:function(){var e=this.data.max>0?Math.floor(this.data.count/this.data.max*100):100;e>100&&(e=100),100===e&&this.wrapper_success.removeAttribute("hidden"),this.progress.setAttribute(this.atts.progress,e.toString())}}])&&v(t.prototype,r),n&&v(t,n),e}();new function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),new p,new m,new s,new l}},694:function(){},155:function(e){var t,r,n=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:i}catch(e){t=i}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(e){r=o}}();var a,u=[],c=!1,l=-1;function f(){c&&a&&(c=!1,a.length?u=a.concat(u):l=-1,u.length&&d())}function d(){if(!c){var e=s(f);c=!0;for(var t=u.length;t;){for(a=u,u=[];++l<t;)a&&a[l].run();l=-1,t=u.length}a=null,c=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function p(){}n.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];u.push(new h(e,t)),1!==u.length||c||s(d)},h.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(e){return[]},n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},593:function(e){"use strict";e.exports=JSON.parse('{"name":"axios","version":"0.21.4","description":"Promise based HTTP client for the browser and node.js","main":"index.js","scripts":{"test":"grunt test","start":"node ./sandbox/server.js","build":"NODE_ENV=production grunt build","preversion":"npm test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json","postversion":"git push && git push --tags","examples":"node ./examples/server.js","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","fix":"eslint --fix lib/**/*.js"},"repository":{"type":"git","url":"https://github.com/axios/axios.git"},"keywords":["xhr","http","ajax","promise","node"],"author":"Matt Zabriskie","license":"MIT","bugs":{"url":"https://github.com/axios/axios/issues"},"homepage":"https://axios-http.com","devDependencies":{"coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^8.2.1","sinon":"^4.5.0","terser-webpack-plugin":"^4.2.3","typescript":"^4.0.5","url-search-params":"^0.10.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"jsdelivr":"dist/axios.min.js","unpkg":"dist/axios.min.js","typings":"./index.d.ts","dependencies":{"follow-redirects":"^1.14.0"},"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}]}')}},r={};function n(e){var i=r[e];if(void 0!==i)return i.exports;var o=r[e]={exports:{}};return t[e](o,o.exports,n),o.exports}n.m=t,e=[],n.O=function(t,r,i,o){if(!r){var s=1/0;for(l=0;l<e.length;l++){r=e[l][0],i=e[l][1],o=e[l][2];for(var a=!0,u=0;u<r.length;u++)(!1&o||s>=o)&&Object.keys(n.O).every((function(e){return n.O[e](r[u])}))?r.splice(u--,1):(a=!1,o<s&&(s=o));if(a){e.splice(l--,1);var c=i();void 0!==c&&(t=c)}}return t}o=o||0;for(var l=e.length;l>0&&e[l-1][2]>o;l--)e[l]=e[l-1];e[l]=[r,i,o]},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={794:0,505:0};n.O.j=function(t){return 0===e[t]};var t=function(t,r){var i,o,s=r[0],a=r[1],u=r[2],c=0;if(s.some((function(t){return 0!==e[t]}))){for(i in a)n.o(a,i)&&(n.m[i]=a[i]);if(u)var l=u(n)}for(t&&t(r);c<s.length;c++)o=s[c],n.o(e,o)&&e[o]&&e[o][0](),e[s[c]]=0;return n.O(l)},r=self.webpackChunkwebp_converter_for_media=self.webpackChunkwebp_converter_for_media||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}(),n.O(void 0,[505],(function(){return n(917)}));var i=n.O(void 0,[505],(function(){return n(694)}));i=n.O(i)}();
1
+ !function(){var e,t={669:function(e,t,r){e.exports=r(609)},448:function(e,t,r){"use strict";var n=r(867),s=r(26),o=r(372),i=r(327),a=r(97),u=r(109),c=r(985),f=r(61);e.exports=function(e){return new Promise((function(t,r){var l=e.data,h=e.headers,p=e.responseType;n.isFormData(l)&&delete h["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var v=e.auth.username||"",_=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";h.Authorization="Basic "+btoa(v+":"+_)}var m=a(e.baseURL,e.url);function g(){if(d){var n="getAllResponseHeaders"in d?u(d.getAllResponseHeaders()):null,o={data:p&&"text"!==p&&"json"!==p?d.response:d.responseText,status:d.status,statusText:d.statusText,headers:n,config:e,request:d};s(t,r,o),d=null}}if(d.open(e.method.toUpperCase(),i(m,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,"onloadend"in d?d.onloadend=g:d.onreadystatechange=function(){d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))&&setTimeout(g)},d.onabort=function(){d&&(r(f("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function(){r(f("Network Error",e,null,d)),d=null},d.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(f(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",d)),d=null},n.isStandardBrowserEnv()){var b=(e.withCredentials||c(m))&&e.xsrfCookieName?o.read(e.xsrfCookieName):void 0;b&&(h[e.xsrfHeaderName]=b)}"setRequestHeader"in d&&n.forEach(h,(function(e,t){void 0===l&&"content-type"===t.toLowerCase()?delete h[t]:d.setRequestHeader(t,e)})),n.isUndefined(e.withCredentials)||(d.withCredentials=!!e.withCredentials),p&&"json"!==p&&(d.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){d&&(d.abort(),r(e),d=null)})),l||(l=null),d.send(l)}))}},609:function(e,t,r){"use strict";var n=r(867),s=r(849),o=r(321),i=r(185);function a(e){var t=new o(e),r=s(o.prototype.request,t);return n.extend(r,o.prototype,t),n.extend(r,t),r}var u=a(r(655));u.Axios=o,u.create=function(e){return a(i(u.defaults,e))},u.Cancel=r(263),u.CancelToken=r(972),u.isCancel=r(502),u.all=function(e){return Promise.all(e)},u.spread=r(713),u.isAxiosError=r(268),e.exports=u,e.exports.default=u},263:function(e){"use strict";function t(e){this.message=e}t.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},t.prototype.__CANCEL__=!0,e.exports=t},972:function(e,t,r){"use strict";var n=r(263);function s(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new n(e),t(r.reason))}))}s.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},s.source=function(){var e;return{token:new s((function(t){e=t})),cancel:e}},e.exports=s},502:function(e){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},321:function(e,t,r){"use strict";var n=r(867),s=r(327),o=r(782),i=r(572),a=r(185),u=r(875),c=u.validators;function f(e){this.defaults=e,this.interceptors={request:new o,response:new o}}f.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=a(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&u.assertOptions(t,{silentJSONParsing:c.transitional(c.boolean,"1.0.0"),forcedJSONParsing:c.transitional(c.boolean,"1.0.0"),clarifyTimeoutError:c.transitional(c.boolean,"1.0.0")},!1);var r=[],n=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(n=n&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var s,o=[];if(this.interceptors.response.forEach((function(e){o.push(e.fulfilled,e.rejected)})),!n){var f=[i,void 0];for(Array.prototype.unshift.apply(f,r),f=f.concat(o),s=Promise.resolve(e);f.length;)s=s.then(f.shift(),f.shift());return s}for(var l=e;r.length;){var h=r.shift(),p=r.shift();try{l=h(l)}catch(e){p(e);break}}try{s=i(l)}catch(e){return Promise.reject(e)}for(;o.length;)s=s.then(o.shift(),o.shift());return s},f.prototype.getUri=function(e){return e=a(this.defaults,e),s(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},n.forEach(["delete","get","head","options"],(function(e){f.prototype[e]=function(t,r){return this.request(a(r||{},{method:e,url:t,data:(r||{}).data}))}})),n.forEach(["post","put","patch"],(function(e){f.prototype[e]=function(t,r,n){return this.request(a(n||{},{method:e,url:t,data:r}))}})),e.exports=f},782:function(e,t,r){"use strict";var n=r(867);function s(){this.handlers=[]}s.prototype.use=function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1},s.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},s.prototype.forEach=function(e){n.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=s},97:function(e,t,r){"use strict";var n=r(793),s=r(303);e.exports=function(e,t){return e&&!n(t)?s(e,t):t}},61:function(e,t,r){"use strict";var n=r(481);e.exports=function(e,t,r,s,o){var i=new Error(e);return n(i,t,r,s,o)}},572:function(e,t,r){"use strict";var n=r(867),s=r(527),o=r(502),i=r(655);function a(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return a(e),e.headers=e.headers||{},e.data=s.call(e,e.data,e.headers,e.transformRequest),e.headers=n.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),n.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||i.adapter)(e).then((function(t){return a(e),t.data=s.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return o(t)||(a(e),t&&t.response&&(t.response.data=s.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},481:function(e){"use strict";e.exports=function(e,t,r,n,s){return e.config=t,r&&(e.code=r),e.request=n,e.response=s,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},185:function(e,t,r){"use strict";var n=r(867);e.exports=function(e,t){t=t||{};var r={},s=["url","method","data"],o=["headers","auth","proxy","params"],i=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],a=["validateStatus"];function u(e,t){return n.isPlainObject(e)&&n.isPlainObject(t)?n.merge(e,t):n.isPlainObject(t)?n.merge({},t):n.isArray(t)?t.slice():t}function c(s){n.isUndefined(t[s])?n.isUndefined(e[s])||(r[s]=u(void 0,e[s])):r[s]=u(e[s],t[s])}n.forEach(s,(function(e){n.isUndefined(t[e])||(r[e]=u(void 0,t[e]))})),n.forEach(o,c),n.forEach(i,(function(s){n.isUndefined(t[s])?n.isUndefined(e[s])||(r[s]=u(void 0,e[s])):r[s]=u(void 0,t[s])})),n.forEach(a,(function(n){n in t?r[n]=u(e[n],t[n]):n in e&&(r[n]=u(void 0,e[n]))}));var f=s.concat(o).concat(i).concat(a),l=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===f.indexOf(e)}));return n.forEach(l,c),r}},26:function(e,t,r){"use strict";var n=r(61);e.exports=function(e,t,r){var s=r.config.validateStatus;r.status&&s&&!s(r.status)?t(n("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)}},527:function(e,t,r){"use strict";var n=r(867),s=r(655);e.exports=function(e,t,r){var o=this||s;return n.forEach(r,(function(r){e=r.call(o,e,t)})),e}},655:function(e,t,r){"use strict";var n=r(155),s=r(867),o=r(16),i=r(481),a={"Content-Type":"application/x-www-form-urlencoded"};function u(e,t){!s.isUndefined(e)&&s.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var c,f={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==n&&"[object process]"===Object.prototype.toString.call(n))&&(c=r(448)),c),transformRequest:[function(e,t){return o(t,"Accept"),o(t,"Content-Type"),s.isFormData(e)||s.isArrayBuffer(e)||s.isBuffer(e)||s.isStream(e)||s.isFile(e)||s.isBlob(e)?e:s.isArrayBufferView(e)?e.buffer:s.isURLSearchParams(e)?(u(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):s.isObject(e)||t&&"application/json"===t["Content-Type"]?(u(t,"application/json"),function(e,t,r){if(s.isString(e))try{return(t||JSON.parse)(e),s.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,r=t&&t.silentJSONParsing,n=t&&t.forcedJSONParsing,o=!r&&"json"===this.responseType;if(o||n&&s.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw i(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};f.headers={common:{Accept:"application/json, text/plain, */*"}},s.forEach(["delete","get","head"],(function(e){f.headers[e]={}})),s.forEach(["post","put","patch"],(function(e){f.headers[e]=s.merge(a)})),e.exports=f},849:function(e){"use strict";e.exports=function(e,t){return function(){for(var r=new Array(arguments.length),n=0;n<r.length;n++)r[n]=arguments[n];return e.apply(t,r)}}},327:function(e,t,r){"use strict";var n=r(867);function s(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,r){if(!t)return e;var o;if(r)o=r(t);else if(n.isURLSearchParams(t))o=t.toString();else{var i=[];n.forEach(t,(function(e,t){null!=e&&(n.isArray(e)?t+="[]":e=[e],n.forEach(e,(function(e){n.isDate(e)?e=e.toISOString():n.isObject(e)&&(e=JSON.stringify(e)),i.push(s(t)+"="+s(e))})))})),o=i.join("&")}if(o){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}},303:function(e){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},372:function(e,t,r){"use strict";var n=r(867);e.exports=n.isStandardBrowserEnv()?{write:function(e,t,r,s,o,i){var a=[];a.push(e+"="+encodeURIComponent(t)),n.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),n.isString(s)&&a.push("path="+s),n.isString(o)&&a.push("domain="+o),!0===i&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},793:function(e){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},268:function(e){"use strict";e.exports=function(e){return"object"==typeof e&&!0===e.isAxiosError}},985:function(e,t,r){"use strict";var n=r(867);e.exports=n.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function s(e){var n=e;return t&&(r.setAttribute("href",n),n=r.href),r.setAttribute("href",n),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=s(window.location.href),function(t){var r=n.isString(t)?s(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0}},16:function(e,t,r){"use strict";var n=r(867);e.exports=function(e,t){n.forEach(e,(function(r,n){n!==t&&n.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[n])}))}},109:function(e,t,r){"use strict";var n=r(867),s=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,r,o,i={};return e?(n.forEach(e.split("\n"),(function(e){if(o=e.indexOf(":"),t=n.trim(e.substr(0,o)).toLowerCase(),r=n.trim(e.substr(o+1)),t){if(i[t]&&s.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([r]):i[t]?i[t]+", "+r:r}})),i):i}},713:function(e){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},875:function(e,t,r){"use strict";var n=r(593),s={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){s[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var o={},i=n.version.split(".");function a(e,t){for(var r=t?t.split("."):i,n=e.split("."),s=0;s<3;s++){if(r[s]>n[s])return!0;if(r[s]<n[s])return!1}return!1}s.transitional=function(e,t,r){var s=t&&a(t);return function(i,a,u){if(!1===e)throw new Error(function(e,t){return"[Axios v"+n.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}(a," has been removed in "+t));return s&&!o[a]&&(o[a]=!0),!e||e(i,a,u)}},e.exports={isOlderVersion:a,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var n=Object.keys(e),s=n.length;s-- >0;){var o=n[s],i=t[o];if(i){var a=e[o],u=void 0===a||i(a,o,e);if(!0!==u)throw new TypeError("option "+o+" must be "+u)}else if(!0!==r)throw Error("Unknown option "+o)}},validators:s}},867:function(e,t,r){"use strict";var n=r(849),s=Object.prototype.toString;function o(e){return"[object Array]"===s.call(e)}function i(e){return void 0===e}function a(e){return null!==e&&"object"==typeof e}function u(e){if("[object Object]"!==s.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function c(e){return"[object Function]"===s.call(e)}function f(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),o(e))for(var r=0,n=e.length;r<n;r++)t.call(null,e[r],r,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}e.exports={isArray:o,isArrayBuffer:function(e){return"[object ArrayBuffer]"===s.call(e)},isBuffer:function(e){return null!==e&&!i(e)&&null!==e.constructor&&!i(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:a,isPlainObject:u,isUndefined:i,isDate:function(e){return"[object Date]"===s.call(e)},isFile:function(e){return"[object File]"===s.call(e)},isBlob:function(e){return"[object Blob]"===s.call(e)},isFunction:c,isStream:function(e){return a(e)&&c(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:f,merge:function e(){var t={};function r(r,n){u(t[n])&&u(r)?t[n]=e(t[n],r):u(r)?t[n]=e({},r):o(r)?t[n]=r.slice():t[n]=r}for(var n=0,s=arguments.length;n<s;n++)f(arguments[n],r);return t},extend:function(e,t,r){return f(t,(function(t,s){e[s]=r&&"function"==typeof t?n(t,r):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}}},442:function(e,t,r){"use strict";var n=r(669),s=r.n(n);function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function e(){o(this,e);for(var t=document.querySelectorAll('.notice[data-notice="webp-converter-for-media"][data-notice-action]'),r=t.length,n=0;n<r;n++)new NoticeCore(t[n])};function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var u=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.status=this.set_vars()}var t,r,n;return t=e,(r=[{key:"set_vars",value:function(){if(this.counter_webp=document.querySelector('[data-counter="webp"]'),this.counter_avif=document.querySelector('[data-counter="avif"]'),this.counter_webp&&this.counter_avif)return this.counter_webp_percent=this.counter_webp.querySelector("[data-counter-percent]"),this.counter_webp_images=this.counter_webp.querySelector("[data-counter-left]"),this.counter_avif_percent=this.counter_avif.querySelector("[data-counter-percent]"),this.counter_avif_images=this.counter_avif.querySelector("[data-counter-left]"),this.data={webp_converted:0,webp_unconverted:0,webp_all:0,avif_converted:0,avif_unconverted:0,avif_all:0},this.atts={counter_percent:"data-percent"},!0}},{key:"set_files_webp",value:function(e,t){this.status&&(this.data.webp_converted+=e,this.data.webp_unconverted=t-e,this.data.webp_all=t||this.data.webp_all,this.refresh_stats())}},{key:"reset_files_webp",value:function(){this.status&&(this.data.webp_converted=0,this.data.webp_unconverted=this.data.webp_all,this.refresh_stats())}},{key:"set_files_avif",value:function(e,t){this.status&&(this.data.avif_converted+=e,this.data.avif_unconverted=t-e,this.data.avif_all=t,this.refresh_stats())}},{key:"reset_files_avif",value:function(){this.status&&(this.data.avif_converted=0,this.data.avif_unconverted=this.data.avif_all,this.refresh_stats())}},{key:"add_files_webp",value:function(e){this.status&&(this.data.webp_converted+=e,this.data.webp_unconverted-=e,this.refresh_stats())}},{key:"add_files_avif",value:function(e){this.status&&(this.data.avif_converted+=e,this.data.avif_unconverted-=e,this.refresh_stats())}},{key:"refresh_stats",value:function(){var e=this.data,t=e.webp_converted,r=e.webp_unconverted,n=e.webp_all,s=e.avif_converted,o=e.avif_unconverted,i=e.avif_all,a=this.atts.counter_percent,u=n>0?Math.floor(t/n*100):0,c=i>0?Math.floor(s/i*100):0;this.counter_webp.setAttribute(a,u),this.counter_webp_percent.innerText=u,this.counter_webp_images.innerText=Math.max(r,0).toString().replace(/\B(?=(\d{3})+(?!\d))/g," "),this.counter_avif.setAttribute(a,c),this.counter_avif_percent.innerText=c,this.counter_avif_images.innerText=Math.max(o,0).toString().replace(/\B(?=(\d{3})+(?!\d))/g," ")}}])&&a(t.prototype,r),n&&a(t,n),e}();function c(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var f=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.conversion_stats_manager=t,this.set_vars()&&this.set_events()}var t,r,n;return t=e,(r=[{key:"set_vars",value:function(){if(this.section=document.querySelector(".webpcLoader"),this.section)return this.wrapper_status=this.section.querySelector("[data-status]"),this.progress=this.wrapper_status.querySelector("[data-status-progress]"),this.progress_size=this.section.querySelector("[data-status-count-size]"),this.progress_success=this.section.querySelector("[data-status-count-success]"),this.progress_failed=this.section.querySelector("[data-status-count-error]"),this.wrapper_errors=this.section.querySelector("[data-errors]"),this.errors_output=this.wrapper_errors.querySelector("[data-errors-output]"),this.wrapper_success=this.section.querySelector("[data-success]"),this.option_force=this.section.querySelector('input[name="regenerate_force"]'),this.submit_button=this.section.querySelector("[data-submit]"),this.data={count:0,max:0,items:[],size:{before:0,after:0},files_counter:{all:0,converted:0},errors:0},this.settings={is_disabled:!1,ajax:{url_paths:this.section.getAttribute("data-api-paths"),url_regenerate:this.section.getAttribute("data-api-regenerate"),error_message:this.section.getAttribute("data-api-error-message")},units:["kB","MB","GB"],max_errors:1e3,connection_timeout:6e4},this.atts={progress:"data-percent",counter_percent:"data-percent"},this.classes={progress_error:"webpcLoader__statusProgress--error",button_disabled:"webpcLoader__button--disabled",error_message:"webpcLoader__errorsContentError"},!0}},{key:"set_events",value:function(){this.submit_button.addEventListener("click",this.init_regeneration.bind(this))}},{key:"init_regeneration",value:function(e){e.preventDefault(),this.settings.is_disabled||(this.settings.is_disabled=!0,this.submit_button.classList.add(this.classes.button_disabled),this.option_force.setAttribute("disabled","disabled"),this.wrapper_status.removeAttribute("hidden"),this.send_request_for_paths())}},{key:"send_request_for_paths",value:function(){var e=this,t=this.settings.ajax.url_paths;s()({method:"POST",url:t,data:{regenerate_force:this.option_force.checked?1:0}}).then((function(t){var r=e.parse_files_paths(t.data);e.data.items=r,e.data.max=r.length,e.option_force.checked&&(e.conversion_stats_manager.reset_files_webp(),e.conversion_stats_manager.reset_files_avif()),e.regenerate_next_images()})).catch((function(t){e.catch_request_error(t,!0)}))}},{key:"parse_files_paths",value:function(e){var t=[];for(var r in e)for(var n=e[r].files.length,s=0;s<n;s++){for(var o=[],i=0;i<e[r].files[s].length;i++)o.push(e[r].path+"/"+e[r].files[s][i]);t.push(o)}return t}},{key:"regenerate_next_images",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===this.data.max&&this.update_progress(),!(this.data.count>=this.data.max)){e>=3?e=0:e>0&&this.data.count--;var t=this.data.items[this.data.count];this.data.count++,this.send_request_for_regeneration(t,e)}}},{key:"send_request_for_regeneration",value:function(e,t){var r=this,n=this.settings.ajax.url_regenerate;s()({method:"POST",url:n,data:{regenerate_force:this.option_force.checked?1:0,paths:e},timeout:this.settings.connection_timeout}).then((function(e){var t=e.data.is_fatal_error;r.update_errors(e.data.errors,t),t||(r.update_size(e.data),r.update_files_count(e.data),r.update_progress(),r.regenerate_next_images())})).catch((function(n){n.response?(r.catch_request_error(n,!1,e),setTimeout(r.regenerate_next_images.bind(r),1e3)):setTimeout(r.regenerate_next_images.bind(r,t+1),1e3)}))}},{key:"update_errors",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.data.errors>this.settings.max_errors&&(this.data.errors=0,this.errors_output.innerHTML="");for(var r=this.get_date(),n=0;n<e.length;n++)this.print_error_message(e[n],t,!1,r),this.data.errors++;t&&this.set_fatal_error()}},{key:"get_date",value:function(){var e=new Date,t=("0"+e.getHours()).substr(-2),r=("0"+e.getMinutes()).substr(-2),n=("0"+e.getSeconds()).substr(-2);return"".concat(t,":").concat(r,":").concat(n)}},{key:"set_fatal_error",value:function(){this.progress.classList.add(this.classes.progress_error)}},{key:"catch_request_error",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;t&&(this.print_error_message([this.settings.ajax.error_message],!0,!1),this.set_fatal_error());var n=null!==r?'["'.concat(r.join('", "'),'"]'):"";this.print_error_message("".concat(e.response.status," - ").concat(e.response.statusText," (").concat(e.response.config.url,") ").concat(n),!0,!0)}},{key:"print_error_message",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=document.createElement("p"),o=n||this.get_date();if(r){var i=document.createElement("pre");i.innerText=e,s.appendChild(i)}else s.innerHTML="<strong>".concat(o,"</strong> - ").concat(e);t&&s.classList.add(this.classes.error_message),this.wrapper_errors.removeAttribute("hidden"),this.errors_output.appendChild(s)}},{key:"update_size",value:function(e){var t=this.data.size;t.before+=e.size.before,t.after+=e.size.after;var r=t.before-t.after;if(r<0&&(r=0),0!==r){var n=Math.round(100*(1-t.after/t.before));n<0&&(n=0);var s=-1;do{s++,r/=1024}while(r>1024);var o=r.toFixed(2),i=this.settings.units[s];this.progress_size.innerHTML="".concat(o," ").concat(i," (").concat(n,"%)")}}},{key:"update_files_count",value:function(e){var t=this.data.files_counter,r=e.files;this.conversion_stats_manager.add_files_webp(r.webp_available),this.conversion_stats_manager.add_files_avif(r.avif_available),t.converted+=r.webp_converted+r.avif_converted,t.all+=r.webp_available+r.avif_available,this.progress_success.innerText=t.converted,this.progress_failed.innerText=t.all-t.converted}},{key:"update_progress",value:function(){var e=this.data.max>0?Math.floor(this.data.count/this.data.max*100):100;e>100&&(e=100),100===e&&this.wrapper_success.removeAttribute("hidden"),this.progress.setAttribute(this.atts.progress,e.toString())}}])&&c(t.prototype,r),n&&c(t,n),e}();function l(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var h=function(){function e(t,r,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.conversion_stats_manager=t,this.images_tree_generator=r,this.plans_button_generator=n,this.set_vars()&&this.send_request()}var t,r,n;return t=e,(r=[{key:"set_vars",value:function(){if(this.section=document.querySelector("[data-api-stats]"),this.section)return this.output_wrapper=this.section.querySelector("[data-tree-output]"),this.settings={ajax_url:this.section.getAttribute("data-api-stats")},!0}},{key:"send_request",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;t>=3||s()({method:"GET",url:this.settings.ajax_url}).then((function(t){var r=t.data.value_webp_all||0,n=t.data.value_webp_converted||0,s=t.data.value_avif_all||0,o=t.data.value_avif_converted||0;e.conversion_stats_manager.set_files_webp(n,r),e.conversion_stats_manager.set_files_avif(o,s),e.images_tree_generator.generate_tree(t.data.tree),e.plans_button_generator.show_button(r-n,s-o)})).catch((function(r){e.send_request(t+1)}))}}])&&l(t.prototype,r),n&&l(t,n),e}();function p(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var d=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.status=this.set_vars()}var t,r,n;return t=e,(r=[{key:"set_vars",value:function(){if(this.section=document.querySelector("[data-tree]"),this.section)return!0}},{key:"generate_tree",value:function(e){if(this.status){this.section.innerHTML=this.draw_tree(e);for(var t=this.section.querySelectorAll(".webpcTree__itemCheckbox"),r=0;r<t.length;r++)t[r].addEventListener("change",(function(e){if(!e.currentTarget.checked)for(var t=e.currentTarget.parentNode.querySelectorAll(".webpcTree__itemCheckbox"),r=0;r<t.length;r++)t[r].checked=!1}))}}},{key:"draw_tree",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"tree",n="",s=e.length;if(!s)return n;0===t&&(n+='<ul class="webpcTree__items">');for(var o=0;o<s;o++){var i="".concat(r,"-").concat(e[o].name).replace(/\s/g,"");n+='<li class="webpcTree__item">',n+='<input type="checkbox" id="'.concat(i,'" class="webpcTree__itemCheckbox">'),n+='<label for="'.concat(i,'" class="webpcTree__itemLabel">'),n+="".concat(e[o].name," <strong>(").concat(e[o].count.toString().replace(/\B(?=(\d{3})+(?!\d))/g," "),")</strong>"),n+="</label>",n+='<ul class="webpcTree__items">',e[o].items&&(n+=this.draw_tree(e[o].items,t+1,i));for(var a=0;a<e[o].files.length;a++)n+='<li class="webpcTree__item">',n+='<span class="webpcTree__itemName">'.concat(e[o].files[a],"</span>"),n+="</li>";n+="</ul>",n+="</li>"}return 0===t&&(n+="</ul>"),n}}])&&p(t.prototype,r),n&&p(t,n),e}();function v(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var m=function(){function e(t){v(this,e),this.input_toggle=t,this.set_vars()&&this.set_events()}var t,r,n;return t=e,(r=[{key:"set_vars",value:function(){var e=this.input_toggle.getAttribute("data-inputs-group-toggle");return this.inputs=document.querySelectorAll('[data-inputs-group-input="'.concat(e,'"]')),!!this.inputs.length}},{key:"set_events",value:function(){this.input_toggle.addEventListener("change",this.toggle_inputs.bind(this))}},{key:"toggle_inputs",value:function(e){for(var t=this.inputs.length,r=0;r<t;r++)this.input_toggle.checked?this.inputs[r].removeAttribute("readonly"):this.inputs[r].setAttribute("readonly","readonly")}}])&&_(t.prototype,r),n&&_(t,n),e}(),g=function e(){v(this,e);for(var t=document.querySelectorAll("[data-inputs-group-toggle]"),r=t.length,n=0;n<r;n++)new m(t[n])};function b(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var y=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.status=this.set_vars()}var t,r,n;return t=e,(r=[{key:"set_vars",value:function(){if(this.section=document.querySelector("[data-plans]"),this.section)return this.button=this.section.querySelector("[data-plans-button]"),this.loader=this.section.querySelector("[data-plans-loader]"),this.settings={button_url:this.button.getAttribute("href")},!0}},{key:"show_button",value:function(e,t){if(this.status){var r=this.settings.button_url.replace("webp=0","webp=".concat(e)).replace("avif=0","avif=".concat(t));this.button.setAttribute("href",r),this.button.removeAttribute("hidden"),this.loader.setAttribute("hidden","hidden")}}}])&&b(t.prototype,r),n&&b(t,n),e}();new function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var t=new u,r=new d,n=new y;new i,new f(t),new h(t,r,n),new g}},694:function(){},155:function(e){var t,r,n=e.exports={};function s(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function i(e){if(t===setTimeout)return setTimeout(e,0);if((t===s||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:s}catch(e){t=s}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(e){r=o}}();var a,u=[],c=!1,f=-1;function l(){c&&a&&(c=!1,a.length?u=a.concat(u):f=-1,u.length&&h())}function h(){if(!c){var e=i(l);c=!0;for(var t=u.length;t;){for(a=u,u=[];++f<t;)a&&a[f].run();f=-1,t=u.length}a=null,c=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function d(){}n.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];u.push(new p(e,t)),1!==u.length||c||i(h)},p.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=d,n.addListener=d,n.once=d,n.off=d,n.removeListener=d,n.removeAllListeners=d,n.emit=d,n.prependListener=d,n.prependOnceListener=d,n.listeners=function(e){return[]},n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},593:function(e){"use strict";e.exports=JSON.parse('{"name":"axios","version":"0.21.4","description":"Promise based HTTP client for the browser and node.js","main":"index.js","scripts":{"test":"grunt test","start":"node ./sandbox/server.js","build":"NODE_ENV=production grunt build","preversion":"npm test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json","postversion":"git push && git push --tags","examples":"node ./examples/server.js","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","fix":"eslint --fix lib/**/*.js"},"repository":{"type":"git","url":"https://github.com/axios/axios.git"},"keywords":["xhr","http","ajax","promise","node"],"author":"Matt Zabriskie","license":"MIT","bugs":{"url":"https://github.com/axios/axios/issues"},"homepage":"https://axios-http.com","devDependencies":{"coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^8.2.1","sinon":"^4.5.0","terser-webpack-plugin":"^4.2.3","typescript":"^4.0.5","url-search-params":"^0.10.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"jsdelivr":"dist/axios.min.js","unpkg":"dist/axios.min.js","typings":"./index.d.ts","dependencies":{"follow-redirects":"^1.14.0"},"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}]}')}},r={};function n(e){var s=r[e];if(void 0!==s)return s.exports;var o=r[e]={exports:{}};return t[e](o,o.exports,n),o.exports}n.m=t,e=[],n.O=function(t,r,s,o){if(!r){var i=1/0;for(f=0;f<e.length;f++){r=e[f][0],s=e[f][1],o=e[f][2];for(var a=!0,u=0;u<r.length;u++)(!1&o||i>=o)&&Object.keys(n.O).every((function(e){return n.O[e](r[u])}))?r.splice(u--,1):(a=!1,o<i&&(i=o));if(a){e.splice(f--,1);var c=s();void 0!==c&&(t=c)}}return t}o=o||0;for(var f=e.length;f>0&&e[f-1][2]>o;f--)e[f]=e[f-1];e[f]=[r,s,o]},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={794:0,505:0};n.O.j=function(t){return 0===e[t]};var t=function(t,r){var s,o,i=r[0],a=r[1],u=r[2],c=0;if(i.some((function(t){return 0!==e[t]}))){for(s in a)n.o(a,s)&&(n.m[s]=a[s]);if(u)var f=u(n)}for(t&&t(r);c<i.length;c++)o=i[c],n.o(e,o)&&e[o]&&e[o][0](),e[i[c]]=0;return n.O(f)},r=self.webpackChunkwebp_converter_for_media=self.webpackChunkwebp_converter_for_media||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}(),n.O(void 0,[505],(function(){return n(442)}));var s=n.O(void 0,[505],(function(){return n(694)}));s=n.O(s)}();
assets/fonts/icons/icomoon.eot CHANGED
Binary file
assets/fonts/icons/icomoon.svg CHANGED
@@ -11,4 +11,8 @@
11
  <glyph unicode="&#xe901;" glyph-name="heart" horiz-adv-x="1198" d="M0 612.196v13.566c0 163.494 118.118 302.896 279.273 329.794 104.552 17.776 215.185-17.074 291.435-93.325l28.068-28.068 25.963 28.068c78.355 76.25 186.884 110.867 293.54 93.325 161.155-26.898 279.273-166.301 279.273-329.794v-13.566c0-97.067-40.23-189.924-111.335-256.117l-422.651-394.584c-17.542-16.373-40.698-25.495-64.789-25.495s-47.247 9.122-64.789 25.495l-422.651 394.584c-71.105 66.193-111.335 159.050-111.335 256.117v0z" />
12
  <glyph unicode="&#xe902;" glyph-name="matt-plugins" horiz-adv-x="2423" d="M805.681 337.927c-0.913-23.293-20.096-41.563-43.39-40.649-22.38 0.913-40.193 18.726-40.649 40.649v225.627c0 22.837-18.726 41.563-41.563 41.563s-41.563-18.726-41.563-41.563v0-279.979c0-69.424-56.178-126.059-126.059-126.059s-126.059 56.178-126.059 126.059c0 0 0 0 0 0v279.979c0 22.837-18.726 41.563-41.563 41.563s-41.563-18.726-41.563-41.563v0-225.627c-0.913-23.293-20.096-41.563-43.39-40.649-22.38 0.913-40.193 18.726-40.649 40.649v225.627c1.37 69.424 58.919 125.145 128.343 123.775 66.683-1.37 121.492-56.178 122.862-123.775v-279.979c0-22.837 18.726-41.563 41.563-41.563s41.563 18.726 41.563 41.563v279.979c1.37 69.424 58.919 125.145 128.343 123.775 67.597-1.37 122.405-55.722 123.775-123.775v-225.627zM512 960c-282.719 0-512-229.281-512-512s229.281-512 512-512 512 229.281 512 512-229.281 512-512 512v0zM1957.566 498.241c-8.221 0-16.442-2.74-22.38-8.678-12.332-12.789-12.332-32.428 0-45.217 12.789-11.418 31.971-11.418 44.76 0 11.875 12.789 11.875 32.428 0 45.217-5.938 5.938-14.159 9.135-22.38 8.678zM1272.464 397.302c-13.245 7.764-27.861 11.418-42.933 11.418-17.356 0-30.601-2.74-40.193-8.678-8.221-5.024-15.529-11.875-20.553-20.096h-6.851v23.293h-47.957v-269.93h48.871v99.568h6.851c3.197-5.024 6.851-9.135 11.418-13.245 5.481-4.567 11.875-8.221 19.183-10.505 9.591-2.74 19.183-4.111 29.231-4.111 15.072 0 30.145 3.654 42.933 11.418 13.702 7.764 24.664 19.64 31.971 33.342 8.221 16.442 12.332 35.169 11.875 53.438v6.394c0.457 18.726-3.654 36.996-11.875 53.438-7.308 14.616-18.269 26.034-31.971 34.255zM1267.44 305.042c0-18.726-5.024-32.885-15.072-42.476-21.467-19.64-53.895-19.64-75.361 0-10.048 9.591-15.072 23.75-15.072 42.476v4.111c0 18.726 5.024 32.885 15.072 42.476 21.467 19.183 53.895 19.183 75.361 0 10.048-9.591 15.072-23.75 15.072-42.476v-4.111zM1582.587 305.499c0-17.813-4.111-31.515-12.332-41.563-8.678-10.048-21.467-15.529-34.712-15.072-13.245 0-23.293 3.654-30.601 10.962s-10.505 18.269-10.505 32.428v110.987h-48.871v-114.64c-0.457-14.616 2.74-28.774 9.135-42.020 5.938-11.875 15.072-21.467 26.034-28.318 11.875-6.851 25.577-10.505 39.279-10.505 17.356 0 30.145 3.197 38.822 9.135 7.308 5.024 13.245 11.418 17.356 19.183h6.851v-25.12h48.414v192.742h-48.871v-98.198zM1831.051 379.946h-6.851c-5.024 7.764-11.875 14.159-19.64 19.183-9.135 5.938-22.38 9.135-39.736 9.135-15.529 0-30.145-3.654-43.847-11.418s-24.664-19.183-31.971-32.885c-8.221-15.986-12.332-33.798-11.875-51.611v-6.394c-0.457-17.813 3.654-35.625 11.875-51.611 7.308-13.702 18.269-25.12 31.971-32.885 22.38-12.332 48.871-14.616 73.078-7.308 6.851 2.284 13.245 5.938 18.726 10.505 4.111 3.654 7.764 7.764 10.962 12.789h6.851v-50.241c0-7.764-3.654-11.875-10.962-11.875h-111.9v-42.476h128.343c11.418-0.457 22.837 3.654 31.058 11.875 8.221 8.678 12.332 20.096 11.418 31.515v226.997h-47.957v-23.293zM1831.051 307.326c0-17.356-5.024-30.601-15.072-40.193-21.467-19.183-53.895-19.183-75.361 0-10.048 9.591-15.072 22.837-15.072 40.193v4.111c0 17.356 5.024 31.058 15.072 40.649 21.467 18.726 53.895 18.726 75.361 0 10.048-9.591 15.072-22.837 15.072-40.649v-4.111zM1933.36 403.24h48.871v-192.285h-48.871v192.285zM2187.304 395.932c-11.875 6.851-25.577 10.505-39.279 10.505-17.356 0-30.145-3.197-38.822-9.135-7.308-5.024-13.245-11.418-17.356-19.183h-6.851v25.12h-47.957v-192.285h48.871v97.741c0 17.813 4.111 31.971 12.332 41.563 8.678 10.048 21.467 15.529 34.712 15.072 11.418 0.913 22.38-3.197 30.601-10.962 7.308-7.308 10.505-18.269 10.505-32.428v-110.987h48.871v114.64c0.457 14.616-2.74 29.231-9.135 42.020-6.394 11.875-15.529 21.467-26.491 28.318zM2412.931 300.475c-7.764 8.221-17.356 14.616-27.861 18.269-12.789 4.567-26.034 7.764-39.279 10.505l-10.505 1.827c-7.308 0.913-14.159 3.197-21.010 6.851-5.024 2.74-8.221 8.221-7.764 13.702 0 5.481 2.74 10.505 7.308 13.245 6.394 3.654 13.702 5.481 21.467 5.024 8.221 0.457 16.442-1.827 23.293-6.394 6.851-5.024 11.418-12.332 12.789-21.010l45.217 14.159c-4.567 15.529-14.159 28.774-27.861 37.452-15.986 10.048-34.712 15.072-53.438 14.616-22.837 0-41.106-5.024-54.808-15.529-14.159-10.048-21.010-24.664-21.010-43.847-0.457-11.418 3.197-22.38 10.048-31.058 7.308-8.221 16.442-15.072 26.947-18.726 11.875-4.567 24.207-8.221 36.996-10.505l10.962-1.827c8.678-1.37 16.899-3.654 24.664-7.764 5.024-2.74 7.764-8.221 7.764-13.702 0-5.938-3.197-11.875-8.221-15.072-5.481-4.111-13.702-5.938-25.12-5.938-6.851 0-14.159 0.913-20.553 3.197s-11.875 5.938-15.986 10.962c-4.567 6.394-7.764 13.702-9.135 21.467l-45.217-11.875c2.74-19.183 13.245-36.082 29.231-46.587 15.986-10.962 36.539-16.442 61.659-16.442 24.664 0 44.303 5.481 58.919 16.442s21.923 26.491 21.467 46.587c0 11.418-3.654 22.837-10.962 31.971zM1360.614 636.175c-10.048 5.024-21.010 7.764-32.428 7.764-14.616 0-26.034-2.74-34.255-8.221-7.764-5.024-14.159-12.332-18.726-20.553h-6.851c-4.567 8.678-10.962 15.529-19.183 20.553-10.048 5.938-21.467 8.678-32.885 7.764-10.505 0.457-21.467-1.827-30.601-7.308-6.851-4.111-12.789-10.048-16.442-16.899h-6.851v21.010h-47.957v-192.285h48.871v113.727c0 13.245 3.197 23.293 9.135 30.601 6.394 7.308 15.986 11.418 25.577 10.505 8.221 0.457 16.442-2.284 22.837-8.221 5.938-6.394 8.678-15.072 8.221-23.75v-122.862h48.871v113.727c0 13.245 3.197 23.293 9.135 30.601 6.394 7.308 15.986 11.418 25.577 10.505 8.221 0.457 16.442-2.284 22.837-8.221 5.938-6.394 8.678-15.072 8.221-23.75v-359.45h48.871v363.104c0.457 13.245-2.74 26.491-8.678 38.366-5.481 10.048-13.702 17.813-23.293 23.293zM1606.337 500.068v71.707c0 24.207-7.308 42.476-21.923 55.265s-34.712 19.183-60.289 19.183c-14.616 0.457-28.774-2.284-42.020-7.308-10.505-4.567-20.096-11.418-27.404-19.64-6.851-7.764-11.875-16.899-15.072-26.947l45.217-15.072c1.37 8.221 5.481 15.529 11.418 21.467 5.938 5.481 15.072 8.221 27.404 8.221s21.467-2.74 26.947-8.678c5.938-5.938 8.678-14.159 8.678-22.38v-10.962h-52.981c-13.245 0-26.491-2.284-38.822-6.851-10.505-4.111-19.64-10.962-26.491-20.096-6.394-9.591-10.048-21.467-9.591-33.342-0.457-11.875 2.74-23.75 9.591-33.342 6.394-9.135 15.529-16.442 25.577-21.010 11.875-5.024 24.207-7.308 36.996-7.308 10.962-0.457 21.923 1.37 31.971 5.938 6.851 3.197 12.789 7.764 16.899 13.245 2.74 3.654 5.024 7.764 6.851 12.332h7.308v-0.457c0-7.308 3.197-14.159 9.135-18.726 6.851-5.024 15.072-7.308 23.75-6.851h32.428v40.193h-15.529c-6.394-0.457-10.048 3.654-10.048 11.418zM1559.293 524.275c0.457-11.418-4.111-22.837-12.789-30.601-9.591-7.764-21.467-11.875-33.798-11.418-8.221-0.457-16.899 1.827-23.75 6.394-5.024 4.111-8.221 10.505-7.764 16.899-0.457 6.394 2.74 12.332 7.764 16.442 6.394 4.111 13.702 6.394 21.467 5.938h49.327l-0.457-3.654zM1856.171 700.118h-48.871v-59.832h-77.645v59.832h-48.871v-59.832h-47.957v-40.193h47.957v-108.703c-0.457-11.875 3.654-23.293 11.875-31.515s19.183-12.332 31.058-11.875h54.351v40.193h-37.452c-7.308 0-10.962 4.111-10.962 11.875v100.025h77.645v-108.703c-0.457-11.875 3.654-23.293 11.875-31.515s19.183-12.332 31.058-11.875h54.351v40.193h-36.996c-7.308 0-10.962 3.654-10.962 11.875v100.025h52.525v40.193h-52.981v59.832z" />
13
  <glyph unicode="&#xe903;" glyph-name="stars" horiz-adv-x="6123" d="M713.633 659.134l287.142-42.227c24.28-3.167 43.282-20.058 51.728-43.282 7.39-23.225 1.056-48.561-15.835-65.452l-207.967-203.744 49.616-293.476c4.223-24.28-5.278-48.561-25.336-62.285s-46.449-15.835-67.563-4.223l-257.584 136.181-256.528-137.237c-21.113-11.612-47.505-9.501-67.563 4.223s-29.559 39.060-25.336 62.285l49.616 293.476-209.023 204.8c-16.891 16.891-23.225 42.227-15.835 65.452s27.447 40.115 51.728 43.282l287.142 42.227 128.792 264.973c10.557 22.169 32.726 35.893 57.006 35.893s46.449-13.724 58.062-35.893l127.736-264.973zM1980.437 659.134l287.142-42.227c24.28-3.167 43.282-20.058 51.728-43.282 7.39-23.225 1.056-48.561-15.835-65.452l-207.967-204.8 49.616-293.476c4.223-24.28-5.278-48.561-25.336-62.285s-46.449-15.835-67.563-4.223l-256.528 137.237-256.528-137.237c-21.113-11.612-47.505-9.501-67.563 4.223s-29.559 39.060-25.336 62.285l49.616 293.476-207.967 204.8c-16.891 16.891-23.225 42.227-15.835 65.452s27.447 40.115 51.728 43.282l287.142 42.227 128.792 264.973c10.557 22.169 32.726 35.893 57.006 35.893s46.449-13.724 58.062-35.893l125.625-264.973zM3247.241 659.134l287.142-42.227c24.28-3.167 43.282-20.058 51.728-43.282 7.39-23.225 1.056-48.561-15.835-65.452l-207.967-204.8 49.616-293.476c4.223-24.28-5.278-48.561-25.336-62.285s-46.449-15.835-67.563-4.223l-256.528 137.237-256.528-137.237c-21.113-11.612-47.505-9.501-67.563 4.223s-29.559 39.060-25.336 62.285l49.616 293.476-207.967 204.8c-16.891 16.891-23.225 42.227-15.835 65.452s27.447 40.115 51.728 43.282l287.142 42.227 128.792 264.973c10.557 22.169 32.726 35.893 57.006 35.893s46.449-13.724 58.062-35.893l125.625-264.973zM4514.045 659.134l287.142-42.227c24.28-3.167 43.282-20.058 51.728-43.282 7.39-23.225 1.056-48.561-15.835-65.452l-207.967-204.8 49.616-293.476c4.223-24.28-5.278-48.561-25.336-62.285s-46.449-15.835-67.563-4.223l-256.528 137.237-256.528-137.237c-21.113-11.612-47.505-9.501-67.563 4.223s-29.559 39.060-25.336 62.285l49.616 293.476-207.967 204.8c-16.891 16.891-23.225 42.227-15.835 65.452s27.447 40.115 51.728 43.282l287.142 42.227 128.792 264.973c10.557 22.169 32.726 35.893 57.006 35.893s46.449-13.724 58.062-35.893l125.625-264.973zM5780.849 659.134l287.142-42.227c24.28-3.167 43.282-20.058 51.728-43.282 7.39-23.225 1.056-48.561-15.835-65.452l-207.967-204.8 49.616-293.476c4.223-24.28-5.278-48.561-25.336-62.285s-46.449-15.835-67.563-4.223l-256.528 137.237-256.528-137.237c-21.113-11.612-47.505-9.501-67.563 4.223s-29.559 39.060-25.336 62.285l49.616 293.476-207.967 204.8c-16.891 16.891-23.225 42.227-15.835 65.452s27.447 40.115 51.728 43.282l287.142 42.227 128.792 264.973c10.557 22.169 32.726 35.893 57.006 35.893s46.449-13.724 58.062-35.893l125.625-264.973z" />
 
 
 
 
14
  </font></defs></svg>
11
  <glyph unicode="&#xe901;" glyph-name="heart" horiz-adv-x="1198" d="M0 612.196v13.566c0 163.494 118.118 302.896 279.273 329.794 104.552 17.776 215.185-17.074 291.435-93.325l28.068-28.068 25.963 28.068c78.355 76.25 186.884 110.867 293.54 93.325 161.155-26.898 279.273-166.301 279.273-329.794v-13.566c0-97.067-40.23-189.924-111.335-256.117l-422.651-394.584c-17.542-16.373-40.698-25.495-64.789-25.495s-47.247 9.122-64.789 25.495l-422.651 394.584c-71.105 66.193-111.335 159.050-111.335 256.117v0z" />
12
  <glyph unicode="&#xe902;" glyph-name="matt-plugins" horiz-adv-x="2423" d="M805.681 337.927c-0.913-23.293-20.096-41.563-43.39-40.649-22.38 0.913-40.193 18.726-40.649 40.649v225.627c0 22.837-18.726 41.563-41.563 41.563s-41.563-18.726-41.563-41.563v0-279.979c0-69.424-56.178-126.059-126.059-126.059s-126.059 56.178-126.059 126.059c0 0 0 0 0 0v279.979c0 22.837-18.726 41.563-41.563 41.563s-41.563-18.726-41.563-41.563v0-225.627c-0.913-23.293-20.096-41.563-43.39-40.649-22.38 0.913-40.193 18.726-40.649 40.649v225.627c1.37 69.424 58.919 125.145 128.343 123.775 66.683-1.37 121.492-56.178 122.862-123.775v-279.979c0-22.837 18.726-41.563 41.563-41.563s41.563 18.726 41.563 41.563v279.979c1.37 69.424 58.919 125.145 128.343 123.775 67.597-1.37 122.405-55.722 123.775-123.775v-225.627zM512 960c-282.719 0-512-229.281-512-512s229.281-512 512-512 512 229.281 512 512-229.281 512-512 512v0zM1957.566 498.241c-8.221 0-16.442-2.74-22.38-8.678-12.332-12.789-12.332-32.428 0-45.217 12.789-11.418 31.971-11.418 44.76 0 11.875 12.789 11.875 32.428 0 45.217-5.938 5.938-14.159 9.135-22.38 8.678zM1272.464 397.302c-13.245 7.764-27.861 11.418-42.933 11.418-17.356 0-30.601-2.74-40.193-8.678-8.221-5.024-15.529-11.875-20.553-20.096h-6.851v23.293h-47.957v-269.93h48.871v99.568h6.851c3.197-5.024 6.851-9.135 11.418-13.245 5.481-4.567 11.875-8.221 19.183-10.505 9.591-2.74 19.183-4.111 29.231-4.111 15.072 0 30.145 3.654 42.933 11.418 13.702 7.764 24.664 19.64 31.971 33.342 8.221 16.442 12.332 35.169 11.875 53.438v6.394c0.457 18.726-3.654 36.996-11.875 53.438-7.308 14.616-18.269 26.034-31.971 34.255zM1267.44 305.042c0-18.726-5.024-32.885-15.072-42.476-21.467-19.64-53.895-19.64-75.361 0-10.048 9.591-15.072 23.75-15.072 42.476v4.111c0 18.726 5.024 32.885 15.072 42.476 21.467 19.183 53.895 19.183 75.361 0 10.048-9.591 15.072-23.75 15.072-42.476v-4.111zM1582.587 305.499c0-17.813-4.111-31.515-12.332-41.563-8.678-10.048-21.467-15.529-34.712-15.072-13.245 0-23.293 3.654-30.601 10.962s-10.505 18.269-10.505 32.428v110.987h-48.871v-114.64c-0.457-14.616 2.74-28.774 9.135-42.020 5.938-11.875 15.072-21.467 26.034-28.318 11.875-6.851 25.577-10.505 39.279-10.505 17.356 0 30.145 3.197 38.822 9.135 7.308 5.024 13.245 11.418 17.356 19.183h6.851v-25.12h48.414v192.742h-48.871v-98.198zM1831.051 379.946h-6.851c-5.024 7.764-11.875 14.159-19.64 19.183-9.135 5.938-22.38 9.135-39.736 9.135-15.529 0-30.145-3.654-43.847-11.418s-24.664-19.183-31.971-32.885c-8.221-15.986-12.332-33.798-11.875-51.611v-6.394c-0.457-17.813 3.654-35.625 11.875-51.611 7.308-13.702 18.269-25.12 31.971-32.885 22.38-12.332 48.871-14.616 73.078-7.308 6.851 2.284 13.245 5.938 18.726 10.505 4.111 3.654 7.764 7.764 10.962 12.789h6.851v-50.241c0-7.764-3.654-11.875-10.962-11.875h-111.9v-42.476h128.343c11.418-0.457 22.837 3.654 31.058 11.875 8.221 8.678 12.332 20.096 11.418 31.515v226.997h-47.957v-23.293zM1831.051 307.326c0-17.356-5.024-30.601-15.072-40.193-21.467-19.183-53.895-19.183-75.361 0-10.048 9.591-15.072 22.837-15.072 40.193v4.111c0 17.356 5.024 31.058 15.072 40.649 21.467 18.726 53.895 18.726 75.361 0 10.048-9.591 15.072-22.837 15.072-40.649v-4.111zM1933.36 403.24h48.871v-192.285h-48.871v192.285zM2187.304 395.932c-11.875 6.851-25.577 10.505-39.279 10.505-17.356 0-30.145-3.197-38.822-9.135-7.308-5.024-13.245-11.418-17.356-19.183h-6.851v25.12h-47.957v-192.285h48.871v97.741c0 17.813 4.111 31.971 12.332 41.563 8.678 10.048 21.467 15.529 34.712 15.072 11.418 0.913 22.38-3.197 30.601-10.962 7.308-7.308 10.505-18.269 10.505-32.428v-110.987h48.871v114.64c0.457 14.616-2.74 29.231-9.135 42.020-6.394 11.875-15.529 21.467-26.491 28.318zM2412.931 300.475c-7.764 8.221-17.356 14.616-27.861 18.269-12.789 4.567-26.034 7.764-39.279 10.505l-10.505 1.827c-7.308 0.913-14.159 3.197-21.010 6.851-5.024 2.74-8.221 8.221-7.764 13.702 0 5.481 2.74 10.505 7.308 13.245 6.394 3.654 13.702 5.481 21.467 5.024 8.221 0.457 16.442-1.827 23.293-6.394 6.851-5.024 11.418-12.332 12.789-21.010l45.217 14.159c-4.567 15.529-14.159 28.774-27.861 37.452-15.986 10.048-34.712 15.072-53.438 14.616-22.837 0-41.106-5.024-54.808-15.529-14.159-10.048-21.010-24.664-21.010-43.847-0.457-11.418 3.197-22.38 10.048-31.058 7.308-8.221 16.442-15.072 26.947-18.726 11.875-4.567 24.207-8.221 36.996-10.505l10.962-1.827c8.678-1.37 16.899-3.654 24.664-7.764 5.024-2.74 7.764-8.221 7.764-13.702 0-5.938-3.197-11.875-8.221-15.072-5.481-4.111-13.702-5.938-25.12-5.938-6.851 0-14.159 0.913-20.553 3.197s-11.875 5.938-15.986 10.962c-4.567 6.394-7.764 13.702-9.135 21.467l-45.217-11.875c2.74-19.183 13.245-36.082 29.231-46.587 15.986-10.962 36.539-16.442 61.659-16.442 24.664 0 44.303 5.481 58.919 16.442s21.923 26.491 21.467 46.587c0 11.418-3.654 22.837-10.962 31.971zM1360.614 636.175c-10.048 5.024-21.010 7.764-32.428 7.764-14.616 0-26.034-2.74-34.255-8.221-7.764-5.024-14.159-12.332-18.726-20.553h-6.851c-4.567 8.678-10.962 15.529-19.183 20.553-10.048 5.938-21.467 8.678-32.885 7.764-10.505 0.457-21.467-1.827-30.601-7.308-6.851-4.111-12.789-10.048-16.442-16.899h-6.851v21.010h-47.957v-192.285h48.871v113.727c0 13.245 3.197 23.293 9.135 30.601 6.394 7.308 15.986 11.418 25.577 10.505 8.221 0.457 16.442-2.284 22.837-8.221 5.938-6.394 8.678-15.072 8.221-23.75v-122.862h48.871v113.727c0 13.245 3.197 23.293 9.135 30.601 6.394 7.308 15.986 11.418 25.577 10.505 8.221 0.457 16.442-2.284 22.837-8.221 5.938-6.394 8.678-15.072 8.221-23.75v-359.45h48.871v363.104c0.457 13.245-2.74 26.491-8.678 38.366-5.481 10.048-13.702 17.813-23.293 23.293zM1606.337 500.068v71.707c0 24.207-7.308 42.476-21.923 55.265s-34.712 19.183-60.289 19.183c-14.616 0.457-28.774-2.284-42.020-7.308-10.505-4.567-20.096-11.418-27.404-19.64-6.851-7.764-11.875-16.899-15.072-26.947l45.217-15.072c1.37 8.221 5.481 15.529 11.418 21.467 5.938 5.481 15.072 8.221 27.404 8.221s21.467-2.74 26.947-8.678c5.938-5.938 8.678-14.159 8.678-22.38v-10.962h-52.981c-13.245 0-26.491-2.284-38.822-6.851-10.505-4.111-19.64-10.962-26.491-20.096-6.394-9.591-10.048-21.467-9.591-33.342-0.457-11.875 2.74-23.75 9.591-33.342 6.394-9.135 15.529-16.442 25.577-21.010 11.875-5.024 24.207-7.308 36.996-7.308 10.962-0.457 21.923 1.37 31.971 5.938 6.851 3.197 12.789 7.764 16.899 13.245 2.74 3.654 5.024 7.764 6.851 12.332h7.308v-0.457c0-7.308 3.197-14.159 9.135-18.726 6.851-5.024 15.072-7.308 23.75-6.851h32.428v40.193h-15.529c-6.394-0.457-10.048 3.654-10.048 11.418zM1559.293 524.275c0.457-11.418-4.111-22.837-12.789-30.601-9.591-7.764-21.467-11.875-33.798-11.418-8.221-0.457-16.899 1.827-23.75 6.394-5.024 4.111-8.221 10.505-7.764 16.899-0.457 6.394 2.74 12.332 7.764 16.442 6.394 4.111 13.702 6.394 21.467 5.938h49.327l-0.457-3.654zM1856.171 700.118h-48.871v-59.832h-77.645v59.832h-48.871v-59.832h-47.957v-40.193h47.957v-108.703c-0.457-11.875 3.654-23.293 11.875-31.515s19.183-12.332 31.058-11.875h54.351v40.193h-37.452c-7.308 0-10.962 4.111-10.962 11.875v100.025h77.645v-108.703c-0.457-11.875 3.654-23.293 11.875-31.515s19.183-12.332 31.058-11.875h54.351v40.193h-36.996c-7.308 0-10.962 3.654-10.962 11.875v100.025h52.525v40.193h-52.981v59.832z" />
13
  <glyph unicode="&#xe903;" glyph-name="stars" horiz-adv-x="6123" d="M713.633 659.134l287.142-42.227c24.28-3.167 43.282-20.058 51.728-43.282 7.39-23.225 1.056-48.561-15.835-65.452l-207.967-203.744 49.616-293.476c4.223-24.28-5.278-48.561-25.336-62.285s-46.449-15.835-67.563-4.223l-257.584 136.181-256.528-137.237c-21.113-11.612-47.505-9.501-67.563 4.223s-29.559 39.060-25.336 62.285l49.616 293.476-209.023 204.8c-16.891 16.891-23.225 42.227-15.835 65.452s27.447 40.115 51.728 43.282l287.142 42.227 128.792 264.973c10.557 22.169 32.726 35.893 57.006 35.893s46.449-13.724 58.062-35.893l127.736-264.973zM1980.437 659.134l287.142-42.227c24.28-3.167 43.282-20.058 51.728-43.282 7.39-23.225 1.056-48.561-15.835-65.452l-207.967-204.8 49.616-293.476c4.223-24.28-5.278-48.561-25.336-62.285s-46.449-15.835-67.563-4.223l-256.528 137.237-256.528-137.237c-21.113-11.612-47.505-9.501-67.563 4.223s-29.559 39.060-25.336 62.285l49.616 293.476-207.967 204.8c-16.891 16.891-23.225 42.227-15.835 65.452s27.447 40.115 51.728 43.282l287.142 42.227 128.792 264.973c10.557 22.169 32.726 35.893 57.006 35.893s46.449-13.724 58.062-35.893l125.625-264.973zM3247.241 659.134l287.142-42.227c24.28-3.167 43.282-20.058 51.728-43.282 7.39-23.225 1.056-48.561-15.835-65.452l-207.967-204.8 49.616-293.476c4.223-24.28-5.278-48.561-25.336-62.285s-46.449-15.835-67.563-4.223l-256.528 137.237-256.528-137.237c-21.113-11.612-47.505-9.501-67.563 4.223s-29.559 39.060-25.336 62.285l49.616 293.476-207.967 204.8c-16.891 16.891-23.225 42.227-15.835 65.452s27.447 40.115 51.728 43.282l287.142 42.227 128.792 264.973c10.557 22.169 32.726 35.893 57.006 35.893s46.449-13.724 58.062-35.893l125.625-264.973zM4514.045 659.134l287.142-42.227c24.28-3.167 43.282-20.058 51.728-43.282 7.39-23.225 1.056-48.561-15.835-65.452l-207.967-204.8 49.616-293.476c4.223-24.28-5.278-48.561-25.336-62.285s-46.449-15.835-67.563-4.223l-256.528 137.237-256.528-137.237c-21.113-11.612-47.505-9.501-67.563 4.223s-29.559 39.060-25.336 62.285l49.616 293.476-207.967 204.8c-16.891 16.891-23.225 42.227-15.835 65.452s27.447 40.115 51.728 43.282l287.142 42.227 128.792 264.973c10.557 22.169 32.726 35.893 57.006 35.893s46.449-13.724 58.062-35.893l125.625-264.973zM5780.849 659.134l287.142-42.227c24.28-3.167 43.282-20.058 51.728-43.282 7.39-23.225 1.056-48.561-15.835-65.452l-207.967-204.8 49.616-293.476c4.223-24.28-5.278-48.561-25.336-62.285s-46.449-15.835-67.563-4.223l-256.528 137.237-256.528-137.237c-21.113-11.612-47.505-9.501-67.563 4.223s-29.559 39.060-25.336 62.285l49.616 293.476-207.967 204.8c-16.891 16.891-23.225 42.227-15.835 65.452s27.447 40.115 51.728 43.282l287.142 42.227 128.792 264.973c10.557 22.169 32.726 35.893 57.006 35.893s46.449-13.724 58.062-35.893l125.625-264.973z" />
14
+ <glyph unicode="&#xe904;" glyph-name="minus" d="M1024 369.231h-1024v157.538h1024v-157.538z" />
15
+ <glyph unicode="&#xe905;" glyph-name="plus" d="M590.769 881.231v78.769h-157.538v-433.231h-433.231v-157.538h433.231v-433.231h157.538v433.231h433.231v157.538h-433.231v354.462z" />
16
+ <glyph unicode="&#xe906;" glyph-name="folder" d="M128 0h768c70.6 0 128 57.4 128 128v512c0 70.6-57.4 128-128 128h-299c-34 0-66.6 13.4-90.6 37.4l-53 53.2c-24 24-56.6 37.4-90.6 37.4h-234.8c-70.6 0-128-57.4-128-128v-640c0-70.6 57.4-128 128-128z" />
17
+ <glyph unicode="&#xe907;" glyph-name="image" d="M0 768c0 70.6 57.4 128 128 128h768c70.6 0 128-57.4 128-128v-640c0-70.6-57.4-128-128-128h-768c-70.6 0-128 57.4-128 128v640zM647.6 555c-9 13.2-23.8 21-39.6 21s-30.8-7.8-39.6-21l-174-255.2-53 66.2c-9.2 11.4-23 18-37.4 18s-28.4-6.6-37.4-18l-128-160c-11.6-14.4-13.8-34.2-5.8-50.8s24.8-27.2 43.2-27.2h672c17.8 0 34.2 9.8 42.4 25.6s7.2 34.8-2.8 49.4l-240 352zM224 576c53 0 96 43 96 96s-43 96-96 96-96-43-96-96 43-96 96-96z" />
18
  </font></defs></svg>
assets/fonts/icons/icomoon.ttf CHANGED
Binary file
assets/fonts/icons/icomoon.woff CHANGED
Binary file
changelog.txt CHANGED
@@ -1,5 +1,12 @@
1
  == Changelog ==
2
 
 
 
 
 
 
 
 
3
  = 5.2.4 (2022-09-27) =
4
  * `[Changed]` Messages displayed during bulk optimization of images
5
  * `[Added]` Debug information about registered image sub-sizes
1
  == Changelog ==
2
 
3
+ = 5.3.0 (2022-10-11) =
4
+ * `[Removed]` Action `webpc_convert_dir`
5
+ * `[Removed]` Filter `webpc_dir_files`
6
+ * `[Fixed]` Support for WordPress older than version 5.3
7
+ * `[Added]` List of files for optimization in tree form
8
+ * `[Added]` Handling unknown errors while converting with Imagick method
9
+
10
  = 5.2.4 (2022-09-27) =
11
  * `[Changed]` Messages displayed during bulk optimization of images
12
  * `[Added]` Debug information about registered image sub-sizes
readme.txt CHANGED
@@ -272,15 +272,15 @@ The plugin supports WP-CLI, which enables faster image conversion from the serve
272
 
273
  Checking how many maximum images for conversion are on website:
274
 
275
- `wp webp-converter calculate`
276
 
277
  Converting all images:
278
 
279
- `wp webp-converter regenerate`
280
 
281
  Converting all images (with "Force convert all images again" option):
282
 
283
- `wp webp-converter regenerate -force`
284
 
285
  = Does plugin support CDN? =
286
 
@@ -342,45 +342,12 @@ In case of problems, please contact us in [the support forum](https://url.mattpl
342
 
343
  == Changelog ==
344
 
345
- = 5.2.4 (2022-09-27) =
346
- * `[Changed]` Messages displayed during bulk optimization of images
347
- * `[Added]` Debug information about registered image sub-sizes
348
-
349
- = 5.2.3 (2022-09-23) =
350
- * `[Added]` Debug information about disabled functions
351
-
352
- = 5.2.2 (2022-09-15) =
353
- * `[Fixed]` Closing of admin notice
354
-
355
- = 5.2.1 (2022-09-14) =
356
- * `[Fixed]` Deleting converted files during plugin uninstallation
357
-
358
- = 5.2.0 (2022-09-10) =
359
- * `[Fixed]` Re-conversion of images modified after previous conversion
360
- * `[Added]` Optimization statistics in Media Upload Popup
361
- * `[Added]` Filter `webpc_source_directories` to add support for custom directories
362
-
363
- = 5.1.0 (2022-08-28) =
364
- * `[Fixed]` Exclusion of converted files from backup generated by UpdraftPlus plugin
365
- * `[Added]` Optimization statistics in Media Library
366
-
367
- = 5.0.1 (2022-08-26) =
368
- * `[Removed]` Filter `webpc_uploads_prefix`
369
- * `[Fixed]` Calculating number of images to convert in WP-CLI
370
- * `[Fixed]` Converting files that contain plus sign in filename
371
- * `[Changed]` Notification asking to clear cache for LiteSpeed
372
- * `[Added]` Exclusion of converted files from backup generated by All-in-One WP Migration plugin
373
- * `[Added]` Exclusion of converted files from backup generated by UpdraftPlus plugin
374
- * `[Added]` Exclusion of converted files from backup generated by BackWPup plugin
375
-
376
- = 5.0.0 (2022-08-20) =
377
- * `[Changed]` Information about plugin operation and technical support on plugin settings page
378
- * `[Changed]` Labels of options in plugin settings
379
- * `[Changed]` Option field for configuration of quality level
380
- * `[Changed]` Widget for conversion process
381
- * `[Added]` Filter `webpc_htaccess_cache_control_private` to disable Cache-Control as private
382
- * `[Added]` Statistics on number of converted images
383
- * `[Added]` Tabs for plugin settings
384
 
385
  See [changelog.txt](https://url.mattplugins.com/converter-readme-changelog) for previous versions.
386
 
272
 
273
  Checking how many maximum images for conversion are on website:
274
 
275
+ `wp converter-for-media calculate`
276
 
277
  Converting all images:
278
 
279
+ `wp converter-for-media regenerate`
280
 
281
  Converting all images (with "Force convert all images again" option):
282
 
283
+ `wp converter-for-media regenerate -force`
284
 
285
  = Does plugin support CDN? =
286
 
342
 
343
  == Changelog ==
344
 
345
+ = 5.3.0 (2022-10-11) =
346
+ * `[Removed]` Action `webpc_convert_dir`
347
+ * `[Removed]` Filter `webpc_dir_files`
348
+ * `[Fixed]` Support for WordPress older than version 5.3
349
+ * `[Added]` List of files for optimization in tree form
350
+ * `[Added]` Handling unknown errors while converting with Imagick method
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
351
 
352
  See [changelog.txt](https://url.mattplugins.com/converter-readme-changelog) for previous versions.
353
 
src/Action/ConvertDir.php DELETED
@@ -1,32 +0,0 @@
1
- <?php
2
-
3
- namespace WebpConverter\Action;
4
-
5
- use WebpConverter\HookableInterface;
6
-
7
- /**
8
- * Initializes conversion of all image sizes in directory.
9
- */
10
- class ConvertDir implements HookableInterface {
11
-
12
- /**
13
- * {@inheritdoc}
14
- */
15
- public function init_hooks() {
16
- add_action( 'webpc_convert_dir', [ $this, 'convert_files_by_directory' ], 10, 2 );
17
- }
18
-
19
- /**
20
- * Converts all images in directory to output formats.
21
- *
22
- * @param string $dir_path Server path of directory.
23
- * @param bool $skip_converted Skip converted images?
24
- *
25
- * @return void
26
- * @internal
27
- */
28
- public function convert_files_by_directory( string $dir_path, bool $skip_converted = true ) {
29
- $paths = apply_filters( 'webpc_dir_files', [], $dir_path, $skip_converted );
30
- do_action( 'webpc_convert_paths', $paths );
31
- }
32
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/Conversion/{DirectoryFiles.php → DirectoryFilesFinder.php} RENAMED
@@ -2,7 +2,7 @@
2
 
3
  namespace WebpConverter\Conversion;
4
 
5
- use WebpConverter\HookableInterface;
6
  use WebpConverter\PluginData;
7
  use WebpConverter\Service\ServerConfigurator;
8
  use WebpConverter\Settings\Option\SupportedExtensionsOption;
@@ -10,7 +10,7 @@ use WebpConverter\Settings\Option\SupportedExtensionsOption;
10
  /**
11
  * Returns paths to files in given directory.
12
  */
13
- class DirectoryFiles implements HookableInterface {
14
 
15
  /**
16
  * @var PluginData
@@ -22,31 +22,25 @@ class DirectoryFiles implements HookableInterface {
22
  */
23
  private $server_configurator;
24
 
25
- public function __construct( PluginData $plugin_data, ServerConfigurator $server_configurator = null ) {
 
 
 
26
  $this->plugin_data = $plugin_data;
27
  $this->server_configurator = $server_configurator ?: new ServerConfigurator();
28
  }
29
 
30
- /**
31
- * {@inheritdoc}
32
- */
33
- public function init_hooks() {
34
- add_filter( 'webpc_dir_files', [ $this, 'get_files_by_directory' ], 10, 3 );
35
- }
36
-
37
  /**
38
  * Returns list of source images for directory.
39
  *
40
- * @param string[] $value Server paths of source images.
41
- * @param string $dir_path Server path of source directory.
42
- * @param bool $skip_converted Skip images already converted?
43
  *
44
  * @return string[] Server paths of source images.
45
  * @internal
46
  */
47
- public function get_files_by_directory( array $value, string $dir_path, bool $skip_converted = false ): array {
48
  if ( ! file_exists( $dir_path ) ) {
49
- return $value;
50
  }
51
 
52
  $this->server_configurator->set_memory_limit();
@@ -55,8 +49,7 @@ class DirectoryFiles implements HookableInterface {
55
  $settings = $this->plugin_data->get_plugin_settings();
56
  return $this->find_files_in_directory(
57
  $dir_path,
58
- $settings[ SupportedExtensionsOption::OPTION_NAME ],
59
- $skip_converted
60
  );
61
  }
62
 
@@ -65,26 +58,35 @@ class DirectoryFiles implements HookableInterface {
65
  *
66
  * @param string $dir_path Server path of source directory.
67
  * @param string[] $allowed_source_exts File extensions to find.
68
- * @param bool $skip_converted Skip images already converted?
69
  *
70
  * @return string[] Server paths of source images.
71
  */
72
- private function find_files_in_directory( string $dir_path, array $allowed_source_exts, bool $skip_converted ): array {
73
  $paths = scandir( $dir_path );
74
  $list = [];
75
  if ( ! is_array( $paths ) ) {
76
  return $list;
77
  }
78
 
 
 
 
 
 
79
  foreach ( $paths as $path ) {
80
  $current_path = $dir_path . '/' . $path;
 
81
  if ( is_dir( $current_path ) ) {
82
  if ( apply_filters( 'webpc_supported_source_directory', true, basename( $current_path ), $current_path ) ) {
83
- $list = array_merge( $list, $this->find_files_in_directory( $current_path, $allowed_source_exts, $skip_converted ) );
 
 
 
84
  }
85
  } elseif ( in_array( strtolower( pathinfo( $current_path, PATHINFO_EXTENSION ) ), $allowed_source_exts ) ) {
86
  if ( apply_filters( 'webpc_supported_source_file', true, basename( $current_path ), $current_path ) ) {
87
- $list[] = $current_path;
88
  }
89
  }
90
  }
2
 
3
  namespace WebpConverter\Conversion;
4
 
5
+ use WebpConverter\Error\Detector\RewritesErrorsDetector;
6
  use WebpConverter\PluginData;
7
  use WebpConverter\Service\ServerConfigurator;
8
  use WebpConverter\Settings\Option\SupportedExtensionsOption;
10
  /**
11
  * Returns paths to files in given directory.
12
  */
13
+ class DirectoryFilesFinder {
14
 
15
  /**
16
  * @var PluginData
22
  */
23
  private $server_configurator;
24
 
25
+ public function __construct(
26
+ PluginData $plugin_data,
27
+ ServerConfigurator $server_configurator = null
28
+ ) {
29
  $this->plugin_data = $plugin_data;
30
  $this->server_configurator = $server_configurator ?: new ServerConfigurator();
31
  }
32
 
 
 
 
 
 
 
 
33
  /**
34
  * Returns list of source images for directory.
35
  *
36
+ * @param string $dir_path Server path of source directory.
 
 
37
  *
38
  * @return string[] Server paths of source images.
39
  * @internal
40
  */
41
+ public function get_files_by_directory( string $dir_path ): array {
42
  if ( ! file_exists( $dir_path ) ) {
43
+ return [];
44
  }
45
 
46
  $this->server_configurator->set_memory_limit();
49
  $settings = $this->plugin_data->get_plugin_settings();
50
  return $this->find_files_in_directory(
51
  $dir_path,
52
+ $settings[ SupportedExtensionsOption::OPTION_NAME ]
 
53
  );
54
  }
55
 
58
  *
59
  * @param string $dir_path Server path of source directory.
60
  * @param string[] $allowed_source_exts File extensions to find.
61
+ * @param string $path_prefix File path related to directory path.
62
  *
63
  * @return string[] Server paths of source images.
64
  */
65
+ private function find_files_in_directory( string $dir_path, array $allowed_source_exts, string $path_prefix = '' ): array {
66
  $paths = scandir( $dir_path );
67
  $list = [];
68
  if ( ! is_array( $paths ) ) {
69
  return $list;
70
  }
71
 
72
+ if ( $path_prefix === '' ) {
73
+ $paths = array_diff( $paths, [ basename( RewritesErrorsDetector::PATH_OUTPUT_FILE_PNG ) ] );
74
+ }
75
+
76
+ rsort( $paths );
77
  foreach ( $paths as $path ) {
78
  $current_path = $dir_path . '/' . $path;
79
+
80
  if ( is_dir( $current_path ) ) {
81
  if ( apply_filters( 'webpc_supported_source_directory', true, basename( $current_path ), $current_path ) ) {
82
+ $list = array_merge(
83
+ $list,
84
+ $this->find_files_in_directory( $current_path, $allowed_source_exts, trim( $path_prefix . '/' . $path, '/' ) )
85
+ );
86
  }
87
  } elseif ( in_array( strtolower( pathinfo( $current_path, PATHINFO_EXTENSION ) ), $allowed_source_exts ) ) {
88
  if ( apply_filters( 'webpc_supported_source_file', true, basename( $current_path ), $current_path ) ) {
89
+ $list[] = trim( $path_prefix . '/' . $path, '/' );
90
  }
91
  }
92
  }
src/Conversion/Endpoint/FilesStatsEndpoint.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WebpConverter\Conversion\Endpoint;
4
+
5
+ use WebpConverter\Conversion\FilesTreeFinder;
6
+ use WebpConverter\Conversion\Format\AvifFormat;
7
+ use WebpConverter\Conversion\Format\WebpFormat;
8
+ use WebpConverter\PluginData;
9
+
10
+ /**
11
+ * Generated tree of files that can be optimized.
12
+ */
13
+ class FilesStatsEndpoint extends EndpointAbstract {
14
+
15
+ /**
16
+ * @var PluginData
17
+ */
18
+ private $plugin_data;
19
+
20
+ public function __construct( PluginData $plugin_data ) {
21
+ $this->plugin_data = $plugin_data;
22
+ }
23
+
24
+ /**
25
+ * {@inheritdoc}
26
+ */
27
+ public function get_route_name(): string {
28
+ return 'images-stats';
29
+ }
30
+
31
+ /**
32
+ * {@inheritdoc}
33
+ */
34
+ public function get_http_methods(): string {
35
+ return \WP_REST_Server::READABLE;
36
+ }
37
+
38
+ /**
39
+ * {@inheritdoc}
40
+ */
41
+ public function get_route_response( \WP_REST_Request $request ) {
42
+ $stats_data = ( new FilesTreeFinder( $this->plugin_data ) )
43
+ ->get_tree( [ WebpFormat::FORMAT_EXTENSION, AvifFormat::FORMAT_EXTENSION ] );
44
+
45
+ return new \WP_REST_Response(
46
+ [
47
+ 'value_webp_all' => ( $stats_data['files_converted'][ WebpFormat::FORMAT_EXTENSION ] + $stats_data['files_unconverted'][ WebpFormat::FORMAT_EXTENSION ] ),
48
+ 'value_webp_converted' => $stats_data['files_converted'][ WebpFormat::FORMAT_EXTENSION ],
49
+ 'value_avif_all' => ( $stats_data['files_converted'][ AvifFormat::FORMAT_EXTENSION ] + $stats_data['files_unconverted'][ AvifFormat::FORMAT_EXTENSION ] ),
50
+ 'value_avif_converted' => $stats_data['files_converted'][ AvifFormat::FORMAT_EXTENSION ],
51
+ 'tree' => $stats_data['files_tree'],
52
+ ],
53
+ 200
54
+ );
55
+ }
56
+ }
src/Conversion/Endpoint/ImagesCounterEndpoint.php DELETED
@@ -1,71 +0,0 @@
1
- <?php
2
-
3
- namespace WebpConverter\Conversion\Endpoint;
4
-
5
- use WebpConverter\Conversion\Format\AvifFormat;
6
- use WebpConverter\Conversion\Format\WebpFormat;
7
- use WebpConverter\Conversion\PathsFinder;
8
- use WebpConverter\PluginData;
9
- use WebpConverter\Repository\TokenRepository;
10
-
11
- /**
12
- * Calculates the number of all images to be converted.
13
- */
14
- class ImagesCounterEndpoint extends EndpointAbstract {
15
-
16
- /**
17
- * @var PluginData
18
- */
19
- private $plugin_data;
20
-
21
- /**
22
- * @var TokenRepository
23
- */
24
- private $token_repository;
25
-
26
- public function __construct(
27
- PluginData $plugin_data,
28
- TokenRepository $token_repository
29
- ) {
30
- $this->plugin_data = $plugin_data;
31
- $this->token_repository = $token_repository;
32
- }
33
-
34
- /**
35
- * {@inheritdoc}
36
- */
37
- public function get_route_name(): string {
38
- return 'images-counter';
39
- }
40
-
41
- /**
42
- * {@inheritdoc}
43
- */
44
- public function get_http_methods(): string {
45
- return \WP_REST_Server::READABLE;
46
- }
47
-
48
- /**
49
- * {@inheritdoc}
50
- */
51
- public function get_route_response( \WP_REST_Request $request ) {
52
- $images_count = ( new PathsFinder( $this->plugin_data, $this->token_repository ) )
53
- ->get_paths_count( [ AvifFormat::FORMAT_EXTENSION, WebpFormat::FORMAT_EXTENSION ] );
54
-
55
- return new \WP_REST_Response(
56
- [
57
- 'value_webp_left' => $images_count[ WebpFormat::FORMAT_EXTENSION ],
58
- 'value_webp_all' => $images_count[ 'all_' . WebpFormat::FORMAT_EXTENSION ],
59
- 'value_avif_left' => $images_count[ AvifFormat::FORMAT_EXTENSION ],
60
- 'value_avif_all' => $images_count[ 'all_' . AvifFormat::FORMAT_EXTENSION ],
61
- 'value_output' => sprintf(
62
- /* translators: %1$s: images count */
63
- __( '%1$s for AVIF and %2$s for WebP', 'webp-converter-for-media' ),
64
- number_format( $images_count[ AvifFormat::FORMAT_EXTENSION ] ?? 0, 0, '', ' ' ),
65
- number_format( $images_count[ WebpFormat::FORMAT_EXTENSION ] ?? 0, 0, '', ' ' )
66
- ),
67
- ],
68
- 200
69
- );
70
- }
71
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/Conversion/FilesTreeFinder.php ADDED
@@ -0,0 +1,196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WebpConverter\Conversion;
4
+
5
+ use WebpConverter\Conversion\Format\AvifFormat;
6
+ use WebpConverter\Conversion\Format\WebpFormat;
7
+ use WebpConverter\Error\Detector\RewritesErrorsDetector;
8
+ use WebpConverter\PluginData;
9
+ use WebpConverter\Service\ServerConfigurator;
10
+ use WebpConverter\Service\StatsManager;
11
+ use WebpConverter\Settings\Option\SupportedDirectoriesOption;
12
+ use WebpConverter\Settings\Option\SupportedExtensionsOption;
13
+
14
+ /**
15
+ * Returns tree of paths to files to conversion.
16
+ */
17
+ class FilesTreeFinder {
18
+
19
+ /**
20
+ * @var PluginData
21
+ */
22
+ private $plugin_data;
23
+
24
+ /**
25
+ * @var ServerConfigurator
26
+ */
27
+ private $server_configurator;
28
+
29
+ /**
30
+ * @var StatsManager
31
+ */
32
+ private $stats_manager;
33
+
34
+ /**
35
+ * @var OutputPath
36
+ */
37
+ private $output_path;
38
+
39
+ /**
40
+ * @var int[]
41
+ */
42
+ private $files_converted;
43
+
44
+ /**
45
+ * @var int[]
46
+ */
47
+ private $files_unconverted;
48
+
49
+ public function __construct(
50
+ PluginData $plugin_data,
51
+ ServerConfigurator $server_configurator = null,
52
+ StatsManager $stats_manager = null,
53
+ OutputPath $output_path = null
54
+ ) {
55
+ $this->plugin_data = $plugin_data;
56
+ $this->server_configurator = $server_configurator ?: new ServerConfigurator();
57
+ $this->stats_manager = $stats_manager ?: new StatsManager();
58
+ $this->output_path = $output_path ?: new OutputPath();
59
+ }
60
+
61
+ /**
62
+ * Returns list of source images for directory.
63
+ *
64
+ * @param string[] $output_formats Allowed extensions.
65
+ *
66
+ * @return mixed[] {
67
+ * @type int[] $files_converted .
68
+ * @type int[] $files_unconverted .
69
+ * @type mixed[] $files_tree .
70
+ * }
71
+ * @internal
72
+ */
73
+ public function get_tree( array $output_formats ): array {
74
+ $this->server_configurator->set_memory_limit();
75
+ $this->server_configurator->set_execution_time( 900 );
76
+
77
+ foreach ( $output_formats as $output_format ) {
78
+ $this->files_converted[ $output_format ] = 0;
79
+ $this->files_unconverted[ $output_format ] = 0;
80
+ }
81
+
82
+ $settings = $this->plugin_data->get_plugin_settings();
83
+ $values = [];
84
+ foreach ( $settings[ SupportedDirectoriesOption::OPTION_NAME ] as $dir_name ) {
85
+ $source_dir = apply_filters( 'webpc_dir_path', '', $dir_name );
86
+ $values[] = $this->find_tree_in_directory(
87
+ $source_dir,
88
+ $settings[ SupportedExtensionsOption::OPTION_NAME ],
89
+ $output_formats
90
+ );
91
+ }
92
+
93
+ $this->stats_manager->set_images_webp_all( $this->files_converted[ WebpFormat::FORMAT_EXTENSION ] + $this->files_unconverted[ WebpFormat::FORMAT_EXTENSION ] );
94
+ $this->stats_manager->set_images_webp_unconverted( $this->files_unconverted[ WebpFormat::FORMAT_EXTENSION ] );
95
+ $this->stats_manager->set_images_avif_all( $this->files_converted[ AvifFormat::FORMAT_EXTENSION ] + $this->files_unconverted[ AvifFormat::FORMAT_EXTENSION ] );
96
+ $this->stats_manager->set_images_avif_unconverted( $this->files_unconverted[ AvifFormat::FORMAT_EXTENSION ] );
97
+
98
+ return [
99
+ 'files_converted' => $this->files_converted,
100
+ 'files_unconverted' => $this->files_unconverted,
101
+ 'files_tree' => $values,
102
+ ];
103
+ }
104
+
105
+ /**
106
+ * Returns list of source images as tree.
107
+ *
108
+ * @param string $dir_path Server path of source directory.
109
+ * @param string[] $source_formats Allowed extensions.
110
+ * @param string[] $output_formats Allowed extensions.
111
+ * @param int $nesting_level .
112
+ *
113
+ * @return mixed[]
114
+ */
115
+ private function find_tree_in_directory( string $dir_path, array $source_formats, array $output_formats, int $nesting_level = 0 ): array {
116
+ $paths = scandir( $dir_path );
117
+ $list = [
118
+ 'name' => basename( $dir_path ),
119
+ 'items' => [],
120
+ 'files' => [],
121
+ 'count' => 0,
122
+ ];
123
+ if ( ! is_array( $paths ) ) {
124
+ return $list;
125
+ }
126
+
127
+ if ( $nesting_level === 0 ) {
128
+ $paths = array_diff( $paths, [ basename( RewritesErrorsDetector::PATH_OUTPUT_FILE_PNG ) ] );
129
+ }
130
+
131
+ sort( $paths, SORT_NATURAL | SORT_FLAG_CASE );
132
+ foreach ( $paths as $path ) {
133
+ $current_path = $dir_path . '/' . $path;
134
+
135
+ if ( is_dir( $current_path ) ) {
136
+ if ( apply_filters( 'webpc_supported_source_directory', true, basename( $current_path ), $current_path ) ) {
137
+ $children = $this->find_tree_in_directory( $current_path, $source_formats, $output_formats, ( $nesting_level + 1 ) );
138
+ if ( $children['items'] || $children['files'] ) {
139
+ $list['items'][] = $children;
140
+ }
141
+ }
142
+ } elseif ( in_array( strtolower( pathinfo( $current_path, PATHINFO_EXTENSION ) ), $source_formats ) ) {
143
+ if ( apply_filters( 'webpc_supported_source_file', true, basename( $current_path ), $current_path )
144
+ && ! $this->is_converted_file( $current_path, $output_formats ) ) {
145
+ $list['files'][] = $path;
146
+ }
147
+ }
148
+ }
149
+
150
+ $list['count'] = $this->calculate_tree_count( $list );
151
+ return $list;
152
+ }
153
+
154
+ /**
155
+ * @param string $source_path .
156
+ * @param string[] $output_formats .
157
+ *
158
+ * @return bool
159
+ */
160
+ private function is_converted_file( string $source_path, array $output_formats ): bool {
161
+ $is_not_converted = false;
162
+
163
+ foreach ( $output_formats as $output_format ) {
164
+ $output_path = $this->output_path->get_path( $source_path, false, $output_format );
165
+ if ( $output_path === null ) {
166
+ continue;
167
+ }
168
+
169
+ if ( file_exists( $output_path )
170
+ || file_exists( $output_path . '.' . SkipLarger::DELETED_FILE_EXTENSION )
171
+ || file_exists( $output_path . '.' . SkipCrashed::CRASHED_FILE_EXTENSION ) ) {
172
+ $this->files_converted[ $output_format ]++;
173
+ } else {
174
+ $this->files_unconverted[ $output_format ]++;
175
+ $is_not_converted = true;
176
+ }
177
+ }
178
+
179
+ return ! $is_not_converted;
180
+ }
181
+
182
+ /**
183
+ * @param mixed[] $tree .
184
+ *
185
+ * @return int
186
+ */
187
+ private function calculate_tree_count( array $tree ): int {
188
+ $count = count( $tree['files'] );
189
+
190
+ foreach ( $tree['items'] as $tree_item ) {
191
+ $count += $this->calculate_tree_count( $tree_item );
192
+ }
193
+
194
+ return $count;
195
+ }
196
+ }
src/Conversion/Method/GdMethod.php CHANGED
@@ -3,7 +3,12 @@
3
  namespace WebpConverter\Conversion\Method;
4
 
5
  use WebpConverter\Conversion\Format\WebpFormat;
6
- use WebpConverter\Exception;
 
 
 
 
 
7
  use WebpConverter\Settings\Option\ImagesQualityOption;
8
  use WebpConverter\Settings\Option\SupportedExtensionsOption;
9
 
@@ -66,10 +71,10 @@ class GdMethod extends LibraryMethodAbstract {
66
  * {@inheritdoc}
67
  *
68
  * @return resource Image object.
69
- * @throws Exception\ExtensionUnsupportedException
70
- * @throws Exception\FunctionUnavailableException
71
- * @throws Exception\ImageInvalidException
72
- * @throws Exception\ImageAnimatedException
73
  */
74
  public function create_image_by_path( string $source_path, array $plugin_settings ) {
75
  $extension = strtolower( pathinfo( $source_path, PATHINFO_EXTENSION ) );
@@ -83,7 +88,7 @@ class GdMethod extends LibraryMethodAbstract {
83
  );
84
 
85
  if ( ( $extension === 'gif' ) && $this->is_animated( $source_path ) ) {
86
- throw new Exception\ImageAnimatedException( $source_path );
87
  }
88
 
89
  foreach ( $methods as $method => $extensions ) {
@@ -91,14 +96,14 @@ class GdMethod extends LibraryMethodAbstract {
91
  || ! in_array( $extension, $extensions ) ) {
92
  continue;
93
  } elseif ( ! function_exists( $method ) ) {
94
- throw new Exception\FunctionUnavailableException( $method );
95
  } elseif ( ! $image = @$method( $source_path ) ) { // phpcs:ignore
96
- throw new Exception\ImageInvalidException( $source_path );
97
  }
98
  }
99
 
100
  if ( ! isset( $image ) ) {
101
- throw new Exception\ExtensionUnsupportedException( [ $extension, $source_path ] );
102
  }
103
 
104
  return $this->update_image_resource( $image, $extension );
@@ -111,16 +116,16 @@ class GdMethod extends LibraryMethodAbstract {
111
  * @param string $extension Extension of output format.
112
  *
113
  * @return resource Image object.
114
- * @throws Exception\FunctionUnavailableException
115
  */
116
  private function update_image_resource( $image, string $extension ) {
117
  if ( ! function_exists( 'imageistruecolor' ) ) {
118
- throw new Exception\FunctionUnavailableException( 'imageistruecolor' );
119
  }
120
 
121
  if ( ! imageistruecolor( $image ) ) {
122
  if ( ! function_exists( 'imagepalettetotruecolor' ) ) {
123
- throw new Exception\FunctionUnavailableException( 'imagepalettetotruecolor' );
124
  }
125
  imagepalettetotruecolor( $image );
126
  }
@@ -128,12 +133,12 @@ class GdMethod extends LibraryMethodAbstract {
128
  switch ( $extension ) {
129
  case 'png':
130
  if ( ! function_exists( 'imagealphablending' ) ) {
131
- throw new Exception\FunctionUnavailableException( 'imagealphablending' );
132
  }
133
  imagealphablending( $image, false );
134
 
135
  if ( ! function_exists( 'imagesavealpha' ) ) {
136
- throw new Exception\FunctionUnavailableException( 'imagesavealpha' );
137
  }
138
  imagesavealpha( $image, true );
139
  break;
@@ -145,9 +150,9 @@ class GdMethod extends LibraryMethodAbstract {
145
  /**
146
  * {@inheritdoc}
147
  *
148
- * @throws Exception\ConversionErrorException
149
- * @throws Exception\FunctionUnavailableException
150
- * @throws Exception\ResolutionOversizeException
151
  */
152
  public function convert_image_to_output( $image, string $source_path, string $output_path, string $format, array $plugin_settings ) {
153
  $function = self::get_format_function( $format );
@@ -159,11 +164,11 @@ class GdMethod extends LibraryMethodAbstract {
159
  $output_quality = min( $plugin_settings[ ImagesQualityOption::OPTION_NAME ], self::MAX_METHOD_QUALITY );
160
 
161
  if ( ! function_exists( $function ) ) {
162
- throw new Exception\FunctionUnavailableException( $function );
163
  } elseif ( ( imagesx( $image ) > 8192 ) || ( imagesy( $image ) > 8192 ) ) {
164
- throw new Exception\ResolutionOversizeException( $source_path );
165
  } elseif ( is_callable( $function ) && ! $function( $image, $output_path, $output_quality ) ) {
166
- throw new Exception\ConversionErrorException( $source_path );
167
  }
168
 
169
  if ( filesize( $output_path ) % 2 === 1 ) {
3
  namespace WebpConverter\Conversion\Method;
4
 
5
  use WebpConverter\Conversion\Format\WebpFormat;
6
+ use WebpConverter\Exception\ConversionErrorException;
7
+ use WebpConverter\Exception\ExtensionUnsupportedException;
8
+ use WebpConverter\Exception\FunctionUnavailableException;
9
+ use WebpConverter\Exception\ImageAnimatedException;
10
+ use WebpConverter\Exception\ImageInvalidException;
11
+ use WebpConverter\Exception\ResolutionOversizeException;
12
  use WebpConverter\Settings\Option\ImagesQualityOption;
13
  use WebpConverter\Settings\Option\SupportedExtensionsOption;
14
 
71
  * {@inheritdoc}
72
  *
73
  * @return resource Image object.
74
+ * @throws ExtensionUnsupportedException
75
+ * @throws FunctionUnavailableException
76
+ * @throws ImageInvalidException
77
+ * @throws ImageAnimatedException
78
  */
79
  public function create_image_by_path( string $source_path, array $plugin_settings ) {
80
  $extension = strtolower( pathinfo( $source_path, PATHINFO_EXTENSION ) );
88
  );
89
 
90
  if ( ( $extension === 'gif' ) && $this->is_animated( $source_path ) ) {
91
+ throw new ImageAnimatedException( $source_path );
92
  }
93
 
94
  foreach ( $methods as $method => $extensions ) {
96
  || ! in_array( $extension, $extensions ) ) {
97
  continue;
98
  } elseif ( ! function_exists( $method ) ) {
99
+ throw new FunctionUnavailableException( $method );
100
  } elseif ( ! $image = @$method( $source_path ) ) { // phpcs:ignore
101
+ throw new ImageInvalidException( $source_path );
102
  }
103
  }
104
 
105
  if ( ! isset( $image ) ) {
106
+ throw new ExtensionUnsupportedException( [ $extension, $source_path ] );
107
  }
108
 
109
  return $this->update_image_resource( $image, $extension );
116
  * @param string $extension Extension of output format.
117
  *
118
  * @return resource Image object.
119
+ * @throws FunctionUnavailableException
120
  */
121
  private function update_image_resource( $image, string $extension ) {
122
  if ( ! function_exists( 'imageistruecolor' ) ) {
123
+ throw new FunctionUnavailableException( 'imageistruecolor' );
124
  }
125
 
126
  if ( ! imageistruecolor( $image ) ) {
127
  if ( ! function_exists( 'imagepalettetotruecolor' ) ) {
128
+ throw new FunctionUnavailableException( 'imagepalettetotruecolor' );
129
  }
130
  imagepalettetotruecolor( $image );
131
  }
133
  switch ( $extension ) {
134
  case 'png':
135
  if ( ! function_exists( 'imagealphablending' ) ) {
136
+ throw new FunctionUnavailableException( 'imagealphablending' );
137
  }
138
  imagealphablending( $image, false );
139
 
140
  if ( ! function_exists( 'imagesavealpha' ) ) {
141
+ throw new FunctionUnavailableException( 'imagesavealpha' );
142
  }
143
  imagesavealpha( $image, true );
144
  break;
150
  /**
151
  * {@inheritdoc}
152
  *
153
+ * @throws ConversionErrorException
154
+ * @throws FunctionUnavailableException
155
+ * @throws ResolutionOversizeException
156
  */
157
  public function convert_image_to_output( $image, string $source_path, string $output_path, string $format, array $plugin_settings ) {
158
  $function = self::get_format_function( $format );
164
  $output_quality = min( $plugin_settings[ ImagesQualityOption::OPTION_NAME ], self::MAX_METHOD_QUALITY );
165
 
166
  if ( ! function_exists( $function ) ) {
167
+ throw new FunctionUnavailableException( $function );
168
  } elseif ( ( imagesx( $image ) > 8192 ) || ( imagesy( $image ) > 8192 ) ) {
169
+ throw new ResolutionOversizeException( $source_path );
170
  } elseif ( is_callable( $function ) && ! $function( $image, $output_path, $output_quality ) ) {
171
+ throw new ConversionErrorException( $source_path );
172
  }
173
 
174
  if ( filesize( $output_path ) % 2 === 1 ) {
src/Conversion/Method/ImagickMethod.php CHANGED
@@ -3,7 +3,12 @@
3
  namespace WebpConverter\Conversion\Method;
4
 
5
  use WebpConverter\Conversion\Format\WebpFormat;
6
- use WebpConverter\Exception;
 
 
 
 
 
7
  use WebpConverter\Settings\Option\ExtraFeaturesOption;
8
  use WebpConverter\Settings\Option\ImagesQualityOption;
9
  use WebpConverter\Settings\Option\SupportedExtensionsOption;
@@ -73,36 +78,36 @@ class ImagickMethod extends LibraryMethodAbstract {
73
  * {@inheritdoc}
74
  *
75
  * @return \Imagick .
76
- * @throws Exception\ExtensionUnsupportedException
77
- * @throws Exception\ImagickUnavailableException
78
- * @throws Exception\ImageInvalidException
79
- * @throws Exception\ImageAnimatedException
80
  */
81
  public function create_image_by_path( string $source_path, array $plugin_settings ) {
82
  $extension = strtolower( pathinfo( $source_path, PATHINFO_EXTENSION ) );
83
 
84
  if ( ! extension_loaded( 'imagick' ) || ! class_exists( 'Imagick' ) ) {
85
- throw new Exception\ImagickUnavailableException();
86
  } elseif ( ! in_array( $extension, $plugin_settings[ SupportedExtensionsOption::OPTION_NAME ] ) ) {
87
- throw new Exception\ExtensionUnsupportedException( [ $extension, $source_path ] );
88
  }
89
 
90
  try {
91
  $imagick = new \Imagick( $source_path );
92
  if ( ( $extension === 'gif' ) && ( $imagick->identifyFormat( '%n' ) > 1 ) ) {
93
- throw new Exception\ImageAnimatedException( $source_path );
94
  }
95
  return $imagick;
96
  } catch ( \ImagickException $e ) {
97
- throw new Exception\ImageInvalidException( $source_path );
98
  }
99
  }
100
 
101
  /**
102
  * {@inheritdoc}
103
  *
104
- * @throws Exception\ConversionErrorException
105
- * @throws Exception\ImagickNotSupportWebpException
106
  */
107
  public function convert_image_to_output( $image, string $source_path, string $output_path, string $format, array $plugin_settings ) {
108
  $extension = self::get_format_extension( $format );
@@ -110,7 +115,7 @@ class ImagickMethod extends LibraryMethodAbstract {
110
  $output_quality = min( $plugin_settings[ ImagesQualityOption::OPTION_NAME ], self::MAX_METHOD_QUALITY );
111
 
112
  if ( ! in_array( $extension, $image->queryFormats() ) ) {
113
- throw new Exception\ImagickNotSupportWebpException();
114
  }
115
 
116
  $image->setImageFormat( $extension );
@@ -118,7 +123,10 @@ class ImagickMethod extends LibraryMethodAbstract {
118
  $image_profiles = $image->getImageProfiles( '*', true );
119
  foreach ( $image_profiles as $profile_name => $image_profile ) {
120
  if ( ! in_array( $profile_name, self::PROTECTED_IMAGE_PROFILES ) ) {
121
- $image->removeImageProfile( $profile_name );
 
 
 
122
  }
123
  }
124
  }
@@ -126,7 +134,7 @@ class ImagickMethod extends LibraryMethodAbstract {
126
  $blob = $image->getImageBlob();
127
 
128
  if ( ! file_put_contents( $output_path, $blob ) ) {
129
- throw new Exception\ConversionErrorException( $source_path );
130
  }
131
  }
132
  }
3
  namespace WebpConverter\Conversion\Method;
4
 
5
  use WebpConverter\Conversion\Format\WebpFormat;
6
+ use WebpConverter\Exception\ConversionErrorException;
7
+ use WebpConverter\Exception\ExtensionUnsupportedException;
8
+ use WebpConverter\Exception\ImageAnimatedException;
9
+ use WebpConverter\Exception\ImageInvalidException;
10
+ use WebpConverter\Exception\ImagickNotSupportWebpException;
11
+ use WebpConverter\Exception\ImagickUnavailableException;
12
  use WebpConverter\Settings\Option\ExtraFeaturesOption;
13
  use WebpConverter\Settings\Option\ImagesQualityOption;
14
  use WebpConverter\Settings\Option\SupportedExtensionsOption;
78
  * {@inheritdoc}
79
  *
80
  * @return \Imagick .
81
+ * @throws ExtensionUnsupportedException
82
+ * @throws ImagickUnavailableException
83
+ * @throws ImageInvalidException
84
+ * @throws ImageAnimatedException
85
  */
86
  public function create_image_by_path( string $source_path, array $plugin_settings ) {
87
  $extension = strtolower( pathinfo( $source_path, PATHINFO_EXTENSION ) );
88
 
89
  if ( ! extension_loaded( 'imagick' ) || ! class_exists( 'Imagick' ) ) {
90
+ throw new ImagickUnavailableException();
91
  } elseif ( ! in_array( $extension, $plugin_settings[ SupportedExtensionsOption::OPTION_NAME ] ) ) {
92
+ throw new ExtensionUnsupportedException( [ $extension, $source_path ] );
93
  }
94
 
95
  try {
96
  $imagick = new \Imagick( $source_path );
97
  if ( ( $extension === 'gif' ) && ( $imagick->identifyFormat( '%n' ) > 1 ) ) {
98
+ throw new ImageAnimatedException( $source_path );
99
  }
100
  return $imagick;
101
  } catch ( \ImagickException $e ) {
102
+ throw new ImageInvalidException( $source_path );
103
  }
104
  }
105
 
106
  /**
107
  * {@inheritdoc}
108
  *
109
+ * @throws ConversionErrorException
110
+ * @throws ImagickNotSupportWebpException
111
  */
112
  public function convert_image_to_output( $image, string $source_path, string $output_path, string $format, array $plugin_settings ) {
113
  $extension = self::get_format_extension( $format );
115
  $output_quality = min( $plugin_settings[ ImagesQualityOption::OPTION_NAME ], self::MAX_METHOD_QUALITY );
116
 
117
  if ( ! in_array( $extension, $image->queryFormats() ) ) {
118
+ throw new ImagickNotSupportWebpException();
119
  }
120
 
121
  $image->setImageFormat( $extension );
123
  $image_profiles = $image->getImageProfiles( '*', true );
124
  foreach ( $image_profiles as $profile_name => $image_profile ) {
125
  if ( ! in_array( $profile_name, self::PROTECTED_IMAGE_PROFILES ) ) {
126
+ try {
127
+ $image->removeImageProfile( $profile_name );
128
+ } catch ( \ImagickException $e ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch
129
+ }
130
  }
131
  }
132
  }
134
  $blob = $image->getImageBlob();
135
 
136
  if ( ! file_put_contents( $output_path, $blob ) ) {
137
+ throw new ConversionErrorException( $source_path );
138
  }
139
  }
140
  }
src/Conversion/Method/LibraryMethodAbstract.php CHANGED
@@ -47,7 +47,7 @@ abstract class LibraryMethodAbstract extends MethodAbstract implements LibraryMe
47
  $output_formats = $plugin_settings[ OutputFormatsOption::OPTION_NAME ];
48
  foreach ( $output_formats as $output_format ) {
49
  foreach ( $paths as $path ) {
50
- $this->files_to_conversion++;
51
  $this->convert_path( $path, $output_format, $plugin_settings );
52
  }
53
  }
@@ -71,7 +71,7 @@ abstract class LibraryMethodAbstract extends MethodAbstract implements LibraryMe
71
  $output_path = $this->get_image_output_path( $source_path, $format );
72
 
73
  $this->skip_crashed->create_crashed_file( $output_path );
74
- $this->output_files_converted[ $format ]++;
75
 
76
  $image = $this->create_image_by_path( $source_path, $plugin_settings );
77
  $this->convert_image_to_output( $image, $source_path, $output_path, $format, $plugin_settings );
@@ -80,9 +80,12 @@ abstract class LibraryMethodAbstract extends MethodAbstract implements LibraryMe
80
  $this->skip_crashed->delete_crashed_file( $output_path );
81
  $this->skip_larger->remove_image_if_is_larger( $output_path, $source_path, $plugin_settings );
82
  $this->update_conversion_stats( $source_path, $output_path, $format );
83
- } catch ( LargerThanOriginalException $e ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement
 
84
  } catch ( ExceptionInterface $e ) {
85
  $this->save_conversion_error( $e->getMessage(), $plugin_settings );
 
 
86
  }
87
  }
88
  }
47
  $output_formats = $plugin_settings[ OutputFormatsOption::OPTION_NAME ];
48
  foreach ( $output_formats as $output_format ) {
49
  foreach ( $paths as $path ) {
50
+ $this->files_available[ $output_format ]++;
51
  $this->convert_path( $path, $output_format, $plugin_settings );
52
  }
53
  }
71
  $output_path = $this->get_image_output_path( $source_path, $format );
72
 
73
  $this->skip_crashed->create_crashed_file( $output_path );
74
+ $this->files_converted[ $format ]++;
75
 
76
  $image = $this->create_image_by_path( $source_path, $plugin_settings );
77
  $this->convert_image_to_output( $image, $source_path, $output_path, $format, $plugin_settings );
80
  $this->skip_crashed->delete_crashed_file( $output_path );
81
  $this->skip_larger->remove_image_if_is_larger( $output_path, $source_path, $plugin_settings );
82
  $this->update_conversion_stats( $source_path, $output_path, $format );
83
+ } catch ( LargerThanOriginalException $e ) {
84
+ $this->files_converted[ $format ]--;
85
  } catch ( ExceptionInterface $e ) {
86
  $this->save_conversion_error( $e->getMessage(), $plugin_settings );
87
+ } catch ( \Exception $e ) {
88
+ $this->save_conversion_error( $e->getMessage(), $plugin_settings );
89
  }
90
  }
91
  }
src/Conversion/Method/MethodAbstract.php CHANGED
@@ -49,19 +49,17 @@ abstract class MethodAbstract implements MethodInterface {
49
  protected $size_after = 0;
50
 
51
  /**
52
- * @var int
53
- */
54
- protected $files_to_conversion = 0;
55
-
56
- /**
57
- * @var int
58
  */
59
- protected $files_converted = 0;
 
 
 
60
 
61
  /**
62
  * @var int[]
63
  */
64
- protected $output_files_converted = [
65
  WebpFormat::FORMAT_EXTENSION => 0,
66
  AvifFormat::FORMAT_EXTENSION => 0,
67
  ];
@@ -97,22 +95,15 @@ abstract class MethodAbstract implements MethodInterface {
97
  /**
98
  * {@inheritdoc}
99
  */
100
- public function get_files_to_conversion(): int {
101
- return $this->files_to_conversion;
102
- }
103
-
104
- /**
105
- * {@inheritdoc}
106
- */
107
- public function get_files_converted(): int {
108
- return $this->files_converted;
109
  }
110
 
111
  /**
112
  * {@inheritdoc}
113
  */
114
- public function get_files_converted_to_format( string $output_format ): int {
115
- return $this->output_files_converted[ $output_format ];
116
  }
117
 
118
  /**
@@ -171,10 +162,6 @@ abstract class MethodAbstract implements MethodInterface {
171
 
172
  $this->size_before += $size_before ?: 0;
173
  $this->size_after += $size_after ?: 0;
174
-
175
- if ( $output_exist ) {
176
- $this->files_converted++;
177
- }
178
  }
179
 
180
  /**
49
  protected $size_after = 0;
50
 
51
  /**
52
+ * @var int[]
 
 
 
 
 
53
  */
54
+ protected $files_available = [
55
+ WebpFormat::FORMAT_EXTENSION => 0,
56
+ AvifFormat::FORMAT_EXTENSION => 0,
57
+ ];
58
 
59
  /**
60
  * @var int[]
61
  */
62
+ protected $files_converted = [
63
  WebpFormat::FORMAT_EXTENSION => 0,
64
  AvifFormat::FORMAT_EXTENSION => 0,
65
  ];
95
  /**
96
  * {@inheritdoc}
97
  */
98
+ public function get_files_available( string $output_format ): int {
99
+ return $this->files_available[ $output_format ];
 
 
 
 
 
 
 
100
  }
101
 
102
  /**
103
  * {@inheritdoc}
104
  */
105
+ public function get_files_converted( string $output_format ): int {
106
+ return $this->files_converted[ $output_format ];
107
  }
108
 
109
  /**
162
 
163
  $this->size_before += $size_before ?: 0;
164
  $this->size_after += $size_after ?: 0;
 
 
 
 
165
  }
166
 
167
  /**
src/Conversion/Method/MethodIntegrator.php CHANGED
@@ -39,10 +39,10 @@ class MethodIntegrator {
39
  'is_fatal_error' => $method->is_fatal_error(),
40
  'errors' => apply_filters( 'webpc_convert_errors', $method->get_errors() ),
41
  'files' => [
42
- 'all' => $method->get_files_to_conversion(),
43
- 'converted' => $method->get_files_converted(),
44
- 'converted_webp' => $method->get_files_converted_to_format( WebpFormat::FORMAT_EXTENSION ),
45
- 'converted_avif' => $method->get_files_converted_to_format( AvifFormat::FORMAT_EXTENSION ),
46
  ],
47
  'size' => [
48
  'before' => $method->get_size_before(),
39
  'is_fatal_error' => $method->is_fatal_error(),
40
  'errors' => apply_filters( 'webpc_convert_errors', $method->get_errors() ),
41
  'files' => [
42
+ 'webp_available' => $method->get_files_available( WebpFormat::FORMAT_EXTENSION ),
43
+ 'webp_converted' => $method->get_files_converted( WebpFormat::FORMAT_EXTENSION ),
44
+ 'avif_available' => $method->get_files_available( AvifFormat::FORMAT_EXTENSION ),
45
+ 'avif_converted' => $method->get_files_converted( AvifFormat::FORMAT_EXTENSION ),
46
  ],
47
  'size' => [
48
  'before' => $method->get_size_before(),
src/Conversion/Method/MethodInterface.php CHANGED
@@ -69,21 +69,18 @@ interface MethodInterface {
69
  public function get_size_after(): int;
70
 
71
  /**
 
 
72
  * @return int
73
  */
74
- public function get_files_to_conversion(): int;
75
-
76
- /**
77
- * @return int
78
- */
79
- public function get_files_converted(): int;
80
 
81
  /**
82
  * @param string $output_format .
83
  *
84
  * @return int
85
  */
86
- public function get_files_converted_to_format( string $output_format ): int;
87
 
88
  /**
89
  * Converts source paths to output formats.
69
  public function get_size_after(): int;
70
 
71
  /**
72
+ * @param string $output_format .
73
+ *
74
  * @return int
75
  */
76
+ public function get_files_available( string $output_format ): int;
 
 
 
 
 
77
 
78
  /**
79
  * @param string $output_format .
80
  *
81
  * @return int
82
  */
83
+ public function get_files_converted( string $output_format ): int;
84
 
85
  /**
86
  * Converts source paths to output formats.
src/Conversion/Method/RemoteMethod.php CHANGED
@@ -127,8 +127,6 @@ class RemoteMethod extends MethodAbstract {
127
  $output_paths = [];
128
  $this->token = $this->token_repository->get_token();
129
 
130
- $this->files_to_conversion += ( count( $paths ) * count( $output_formats ) );
131
-
132
  foreach ( $output_formats as $output_format ) {
133
  try {
134
  $file_paths = $this->get_source_paths( $paths, $plugin_settings, $output_format );
@@ -136,6 +134,8 @@ class RemoteMethod extends MethodAbstract {
136
  continue;
137
  }
138
 
 
 
139
  $output_paths[ $output_format ] = $this->get_output_paths( $file_paths, $output_format );
140
  $source_paths[ $output_format ] = $file_paths;
141
  } catch ( ExceptionInterface $e ) {
@@ -150,7 +150,8 @@ class RemoteMethod extends MethodAbstract {
150
  || file_exists( $output_paths[ $output_format ][ $path_index ] . '.' . SkipLarger::DELETED_FILE_EXTENSION ) ) {
151
  unset( $source_paths[ $output_format ][ $path_index ] );
152
  unset( $output_paths[ $output_format ][ $path_index ] );
153
- $this->files_to_conversion -= 1;
 
154
  }
155
  }
156
  }
@@ -170,7 +171,8 @@ class RemoteMethod extends MethodAbstract {
170
  try {
171
  $this->skip_larger->remove_image_if_is_larger( $output_path, $source_path, $plugin_settings );
172
  $this->update_conversion_stats( $source_path, $output_path, $output_format );
173
- } catch ( LargerThanOriginalException $e ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement
 
174
  }
175
  }
176
  }
@@ -189,6 +191,7 @@ class RemoteMethod extends MethodAbstract {
189
  * @return string[]
190
  *
191
  * @throws SourcePathException
 
192
  */
193
  private function get_source_paths( array $paths, array $plugin_settings, string $output_format ): array {
194
  $source_paths = [];
@@ -199,6 +202,7 @@ class RemoteMethod extends MethodAbstract {
199
  ( new FilesizeOversizeException( [ self::MAX_FILESIZE_BYTES, $source_path ] ) )->getMessage(),
200
  $plugin_settings
201
  );
 
202
  continue;
203
  }
204
 
@@ -275,7 +279,8 @@ class RemoteMethod extends MethodAbstract {
275
  if ( ( $http_code === 200 ) && $response ) {
276
  $values[ $output_format ] = $values[ $output_format ] ?? [];
277
  $values[ $output_format ][ $resource_id ] = $response;
278
- $this->output_files_converted[ $output_format ]++;
 
279
  } else {
280
  $this->handle_request_error(
281
  $source_paths[ $output_format ][ $resource_id ],
@@ -398,7 +403,7 @@ class RemoteMethod extends MethodAbstract {
398
  $this->save_conversion_error( $error_message, $plugin_settings );
399
  } elseif ( $http_code === 200 ) {
400
  $this->skip_crashed->create_crashed_file( $output_path );
401
- $this->output_files_converted[ $output_format ]++;
402
  } else {
403
  $this->save_conversion_error(
404
  ( new RemoteRequestException( [ $http_code, $source_path ] ) )->getMessage(),
127
  $output_paths = [];
128
  $this->token = $this->token_repository->get_token();
129
 
 
 
130
  foreach ( $output_formats as $output_format ) {
131
  try {
132
  $file_paths = $this->get_source_paths( $paths, $plugin_settings, $output_format );
134
  continue;
135
  }
136
 
137
+ $this->files_available[ $output_format ] += count( $file_paths );
138
+
139
  $output_paths[ $output_format ] = $this->get_output_paths( $file_paths, $output_format );
140
  $source_paths[ $output_format ] = $file_paths;
141
  } catch ( ExceptionInterface $e ) {
150
  || file_exists( $output_paths[ $output_format ][ $path_index ] . '.' . SkipLarger::DELETED_FILE_EXTENSION ) ) {
151
  unset( $source_paths[ $output_format ][ $path_index ] );
152
  unset( $output_paths[ $output_format ][ $path_index ] );
153
+
154
+ $this->files_available[ $output_format ]--;
155
  }
156
  }
157
  }
171
  try {
172
  $this->skip_larger->remove_image_if_is_larger( $output_path, $source_path, $plugin_settings );
173
  $this->update_conversion_stats( $source_path, $output_path, $output_format );
174
+ } catch ( LargerThanOriginalException $e ) {
175
+ $this->files_converted[ $output_format ]--;
176
  }
177
  }
178
  }
191
  * @return string[]
192
  *
193
  * @throws SourcePathException
194
+ * @throws OutputPathException
195
  */
196
  private function get_source_paths( array $paths, array $plugin_settings, string $output_format ): array {
197
  $source_paths = [];
202
  ( new FilesizeOversizeException( [ self::MAX_FILESIZE_BYTES, $source_path ] ) )->getMessage(),
203
  $plugin_settings
204
  );
205
+ $this->skip_crashed->create_crashed_file( $this->get_image_output_path( $source_path, $output_format ) );
206
  continue;
207
  }
208
 
279
  if ( ( $http_code === 200 ) && $response ) {
280
  $values[ $output_format ] = $values[ $output_format ] ?? [];
281
  $values[ $output_format ][ $resource_id ] = $response;
282
+
283
+ $this->files_converted[ $output_format ]++;
284
  } else {
285
  $this->handle_request_error(
286
  $source_paths[ $output_format ][ $resource_id ],
403
  $this->save_conversion_error( $error_message, $plugin_settings );
404
  } elseif ( $http_code === 200 ) {
405
  $this->skip_crashed->create_crashed_file( $output_path );
406
+ $this->files_converted[ $output_format ]++;
407
  } else {
408
  $this->save_conversion_error(
409
  ( new RemoteRequestException( [ $http_code, $source_path ] ) )->getMessage(),
src/Conversion/PathsFinder.php CHANGED
@@ -2,8 +2,6 @@
2
 
3
  namespace WebpConverter\Conversion;
4
 
5
- use WebpConverter\Conversion\Format\AvifFormat;
6
- use WebpConverter\Conversion\Format\WebpFormat;
7
  use WebpConverter\Conversion\Method\RemoteMethod;
8
  use WebpConverter\PluginData;
9
  use WebpConverter\Repository\TokenRepository;
@@ -42,6 +40,11 @@ class PathsFinder {
42
  */
43
  private $output_path;
44
 
 
 
 
 
 
45
  public function __construct(
46
  PluginData $plugin_data,
47
  TokenRepository $token_repository,
@@ -52,6 +55,7 @@ class PathsFinder {
52
  $this->token_repository = $token_repository;
53
  $this->stats_manager = $stats_manager ?: new StatsManager();
54
  $this->output_path = $output_path ?: new OutputPath();
 
55
  }
56
 
57
  /**
@@ -60,18 +64,33 @@ class PathsFinder {
60
  * @param bool $skip_converted Skip converted images?
61
  * @param string[]|null $allowed_output_formats List of extensions or use selected in plugin settings.
62
  *
63
- * @return string[][] Array of arrays with server paths.
 
 
 
64
  */
65
  public function get_paths_by_chunks( bool $skip_converted = false, array $allowed_output_formats = null ): array {
66
  $allowed_output_formats = $allowed_output_formats
67
  ?: $this->plugin_data->get_plugin_settings()[ OutputFormatsOption::OPTION_NAME ];
68
 
69
- $paths = $this->get_paths( $skip_converted, $allowed_output_formats );
70
- $paths_count = count( $paths );
 
 
71
 
72
- $this->stats_manager->set_regeneration_images( $paths_count );
 
 
 
73
 
74
- return array_chunk( $paths, $this->get_paths_chunk_size( $paths_count ) );
 
 
 
 
 
 
 
75
  }
76
 
77
  /**
@@ -84,44 +103,19 @@ class PathsFinder {
84
  $allowed_output_formats = $allowed_output_formats
85
  ?: $this->plugin_data->get_plugin_settings()[ OutputFormatsOption::OPTION_NAME ];
86
 
87
- $paths = $this->find_source_paths( true );
88
- if ( ! $skip_converted ) {
89
- return $paths;
90
  }
91
 
92
- return $this->skip_converted_paths( $paths, $allowed_output_formats );
93
- }
94
-
95
- /**
96
- * @param string[] $allowed_output_formats List of extensions.
97
- *
98
- * @return int[] Number of images to be converted to given output formats.
99
- */
100
- public function get_paths_count( array $allowed_output_formats ): array {
101
- $source_paths = $this->find_source_paths( true );
102
- $values = [];
103
- foreach ( $allowed_output_formats as $output_format ) {
104
- $values[ $output_format ] = 0;
105
- $values[ 'all_' . $output_format ] = 0;
106
- foreach ( $source_paths as $source_path ) {
107
- $output_path = $this->output_path->get_path( $source_path, false, $output_format );
108
- if ( $output_path === null ) {
109
- continue;
110
- }
111
-
112
- $values[ 'all_' . $output_format ]++;
113
- if ( ! $this->is_converted_file( $source_path, $output_path ) ) {
114
- $values[ $output_format ]++;
115
- }
116
  }
117
  }
118
 
119
- $this->stats_manager->set_images_webp_all( $values[ 'all_' . WebpFormat::FORMAT_EXTENSION ] ?? 0 );
120
- $this->stats_manager->set_images_webp_unconverted( $values[ WebpFormat::FORMAT_EXTENSION ] ?? 0 );
121
- $this->stats_manager->set_images_avif_all( $values[ 'all_' . AvifFormat::FORMAT_EXTENSION ] ?? 0 );
122
- $this->stats_manager->set_images_avif_unconverted( $values[ AvifFormat::FORMAT_EXTENSION ] ?? 0 );
123
-
124
- return $values;
125
  }
126
 
127
  /**
@@ -154,30 +148,60 @@ class PathsFinder {
154
  }
155
 
156
  /**
157
- * Returns list of server paths of source images to be converted.
 
158
  *
159
- * @param bool $skip_converted Skip converted images?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  *
161
- * @return string[] Server paths of source images.
 
 
 
162
  */
163
- private function find_source_paths( bool $skip_converted = false ): array {
164
  $settings = $this->plugin_data->get_plugin_settings();
165
- $dirs = array_filter(
166
- array_map(
167
- function ( $dir_name ) {
168
- return apply_filters( 'webpc_dir_path', '', $dir_name );
169
- },
170
- $settings[ SupportedDirectoriesOption::OPTION_NAME ]
171
- )
172
- );
173
 
174
  $list = [];
175
- foreach ( $dirs as $dir_path ) {
176
- $paths = apply_filters( 'webpc_dir_files', [], $dir_path, $skip_converted );
177
- $list = array_merge( $list, $paths );
 
 
178
  }
179
 
180
- rsort( $list );
181
  return $list;
182
  }
183
 
2
 
3
  namespace WebpConverter\Conversion;
4
 
 
 
5
  use WebpConverter\Conversion\Method\RemoteMethod;
6
  use WebpConverter\PluginData;
7
  use WebpConverter\Repository\TokenRepository;
40
  */
41
  private $output_path;
42
 
43
+ /**
44
+ * @var DirectoryFilesFinder
45
+ */
46
+ private $files_finder;
47
+
48
  public function __construct(
49
  PluginData $plugin_data,
50
  TokenRepository $token_repository,
55
  $this->token_repository = $token_repository;
56
  $this->stats_manager = $stats_manager ?: new StatsManager();
57
  $this->output_path = $output_path ?: new OutputPath();
58
+ $this->files_finder = new DirectoryFilesFinder( $plugin_data );
59
  }
60
 
61
  /**
64
  * @param bool $skip_converted Skip converted images?
65
  * @param string[]|null $allowed_output_formats List of extensions or use selected in plugin settings.
66
  *
67
+ * @return mixed[] {
68
+ * @type string $path Directory path.
69
+ * @type string[] $files Files paths.
70
+ * }
71
  */
72
  public function get_paths_by_chunks( bool $skip_converted = false, array $allowed_output_formats = null ): array {
73
  $allowed_output_formats = $allowed_output_formats
74
  ?: $this->plugin_data->get_plugin_settings()[ OutputFormatsOption::OPTION_NAME ];
75
 
76
+ $paths_chunks = $this->find_source_paths();
77
+ if ( $skip_converted ) {
78
+ $paths_chunks = $this->skip_converted_paths_chunks( $paths_chunks, $allowed_output_formats );
79
+ }
80
 
81
+ $count = 0;
82
+ foreach ( $paths_chunks as $dir_data ) {
83
+ $count += count( $dir_data['files'] );
84
+ }
85
 
86
+ $chunk_size = $this->get_paths_chunk_size( $count );
87
+ foreach ( $paths_chunks as $dir_name => $dir_data ) {
88
+ $paths_chunks[ $dir_name ]['files'] = array_chunk( $dir_data['files'], $chunk_size );
89
+ }
90
+
91
+ $this->stats_manager->set_regeneration_images( $count );
92
+
93
+ return $paths_chunks;
94
  }
95
 
96
  /**
103
  $allowed_output_formats = $allowed_output_formats
104
  ?: $this->plugin_data->get_plugin_settings()[ OutputFormatsOption::OPTION_NAME ];
105
 
106
+ $paths_chunks = $this->find_source_paths();
107
+ if ( $skip_converted ) {
108
+ $paths_chunks = $this->skip_converted_paths_chunks( $paths_chunks, $allowed_output_formats );
109
  }
110
 
111
+ $paths = [];
112
+ foreach ( $paths_chunks as $dir_data ) {
113
+ foreach ( $dir_data['files'] as $source_path ) {
114
+ $paths[] = $dir_data['path'] . '/' . $source_path;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  }
116
  }
117
 
118
+ return $paths;
 
 
 
 
 
119
  }
120
 
121
  /**
148
  }
149
 
150
  /**
151
+ * @param mixed[] $source_dirs Server paths of source images.
152
+ * @param string[]|null $allowed_output_formats List of extensions or use selected in plugin settings.
153
  *
154
+ * @return mixed[] Server paths of source images.
155
+ */
156
+ private function skip_converted_paths_chunks( array $source_dirs, array $allowed_output_formats = null ): array {
157
+ $allowed_output_formats = $allowed_output_formats
158
+ ?: $this->plugin_data->get_plugin_settings()[ OutputFormatsOption::OPTION_NAME ];
159
+
160
+ foreach ( $source_dirs as $dir_name => $dir_data ) {
161
+ foreach ( $dir_data['files'] as $path_index => $source_file ) {
162
+ $source_path = $dir_data['path'] . '/' . $source_file;
163
+ $is_converted = true;
164
+ foreach ( $allowed_output_formats as $output_format ) {
165
+ $output_path = $this->output_path->get_path( $source_path, false, $output_format );
166
+
167
+ if ( $output_path && ! $this->is_converted_file( $source_path, $output_path ) ) {
168
+ $is_converted = false;
169
+ break;
170
+ }
171
+ }
172
+ if ( $is_converted ) {
173
+ unset( $source_dirs[ $dir_name ]['files'][ $path_index ] );
174
+ }
175
+ }
176
+ }
177
+
178
+ return $source_dirs;
179
+ }
180
+
181
+ /**
182
+ * Returns list of server paths of source images to be converted.
183
  *
184
+ * @return mixed[] {
185
+ * @type string $path Directory path.
186
+ * @type string[] $files Files paths.
187
+ * }
188
  */
189
+ private function find_source_paths(): array {
190
  $settings = $this->plugin_data->get_plugin_settings();
191
+
192
+ $source_dirs = [];
193
+ foreach ( $settings[ SupportedDirectoriesOption::OPTION_NAME ] as $dir_name ) {
194
+ $source_dirs[ $dir_name ] = apply_filters( 'webpc_dir_path', '', $dir_name );
195
+ }
 
 
 
196
 
197
  $list = [];
198
+ foreach ( $source_dirs as $dir_name => $dir_path ) {
199
+ $list[ $dir_name ] = [
200
+ 'path' => $dir_path,
201
+ 'files' => $this->files_finder->get_files_by_directory( $dir_path ),
202
+ ];
203
  }
204
 
 
205
  return $list;
206
  }
207
 
src/Error/Detector/TokenStatusDetector.php CHANGED
@@ -2,7 +2,6 @@
2
 
3
  namespace WebpConverter\Error\Detector;
4
 
5
- use WebpConverter\Conversion\PathsFinder;
6
  use WebpConverter\Error\Notice\AccessTokenInvalidNotice;
7
  use WebpConverter\Error\Notice\ApiLimitExceededNotice;
8
  use WebpConverter\PluginData;
@@ -54,12 +53,11 @@ class TokenStatusDetector implements ErrorDetector {
54
  return new AccessTokenInvalidNotice();
55
  }
56
 
57
- $images_usage = ( $token->get_images_usage() + ( PathsFinder::PATHS_PER_REQUEST_REMOTE_SMALL * 2 ) );
58
- if ( $images_usage > $token->get_images_limit() ) {
59
  $token = $this->token_validator->validate_token( $token->get_token_value() );
60
  }
61
 
62
- if ( $token->get_images_usage() >= $token->get_images_limit() ) {
63
  return new ApiLimitExceededNotice();
64
  }
65
 
2
 
3
  namespace WebpConverter\Error\Detector;
4
 
 
5
  use WebpConverter\Error\Notice\AccessTokenInvalidNotice;
6
  use WebpConverter\Error\Notice\ApiLimitExceededNotice;
7
  use WebpConverter\PluginData;
53
  return new AccessTokenInvalidNotice();
54
  }
55
 
56
+ if ( ! $token->is_active() ) {
 
57
  $token = $this->token_validator->validate_token( $token->get_token_value() );
58
  }
59
 
60
+ if ( ! $token->is_active() ) {
61
  return new ApiLimitExceededNotice();
62
  }
63
 
src/Model/Token.php CHANGED
@@ -77,4 +77,8 @@ class Token {
77
  public function get_images_limit(): int {
78
  return $this->images_limit;
79
  }
 
 
 
 
80
  }
77
  public function get_images_limit(): int {
78
  return $this->images_limit;
79
  }
80
+
81
+ public function is_active(): bool {
82
+ return ( $this->get_valid_status() && ( $this->get_images_usage() < $this->get_images_limit() ) );
83
+ }
84
  }
src/Repository/TokenRepository.php CHANGED
@@ -4,6 +4,8 @@ namespace WebpConverter\Repository;
4
 
5
  use WebpConverter\Model\Token;
6
  use WebpConverter\Service\OptionsAccessManager;
 
 
7
 
8
  /**
9
  * Manages the token for the PRO version.
@@ -16,9 +18,10 @@ class TokenRepository {
16
  const TOKEN_VALUE_IMAGES_USAGE = 'images_usage';
17
  const TOKEN_VALUE_IMAGES_LIMIT = 'images_limit';
18
 
19
- public function get_token(): Token {
20
- $values = OptionsAccessManager::get_option( self::TOKEN_OPTION, null );
21
- if ( $values === null ) {
 
22
  return new Token();
23
  }
24
 
4
 
5
  use WebpConverter\Model\Token;
6
  use WebpConverter\Service\OptionsAccessManager;
7
+ use WebpConverter\Settings\Option\AccessTokenOption;
8
+ use WebpConverter\Settings\SettingsSave;
9
 
10
  /**
11
  * Manages the token for the PRO version.
18
  const TOKEN_VALUE_IMAGES_USAGE = 'images_usage';
19
  const TOKEN_VALUE_IMAGES_LIMIT = 'images_limit';
20
 
21
+ public function get_token( string $token_value = null ): Token {
22
+ $values = OptionsAccessManager::get_option( self::TOKEN_OPTION, null );
23
+ $settings = OptionsAccessManager::get_option( SettingsSave::SETTINGS_OPTION, [] );
24
+ if ( ( $values === null ) || ( ! $token_value && ! ( $settings[ AccessTokenOption::OPTION_NAME ] ?? null ) ) ) {
25
  return new Token();
26
  }
27
 
src/Service/TokenValidator.php CHANGED
@@ -28,7 +28,7 @@ class TokenValidator {
28
  }
29
 
30
  public function validate_token( string $token_value = null ): Token {
31
- $this->token = $this->token_repository->get_token();
32
  $status = ( $token_value && $this->check_access_token( $token_value ) );
33
 
34
  if ( $status ) {
@@ -41,7 +41,7 @@ class TokenValidator {
41
  $this->token_repository->reset_token();
42
  }
43
 
44
- return $this->token_repository->get_token();
45
  }
46
 
47
  private function check_access_token( string $token_value ): bool {
28
  }
29
 
30
  public function validate_token( string $token_value = null ): Token {
31
+ $this->token = $this->token_repository->get_token( $token_value );
32
  $status = ( $token_value && $this->check_access_token( $token_value ) );
33
 
34
  if ( $status ) {
41
  $this->token_repository->reset_token();
42
  }
43
 
44
+ return $this->token_repository->get_token( $token_value );
45
  }
46
 
47
  private function check_access_token( string $token_value ): bool {
src/Service/WpCliManager.php CHANGED
@@ -2,6 +2,7 @@
2
 
3
  namespace WebpConverter\Service;
4
 
 
5
  use WebpConverter\Conversion\Format\AvifFormat;
6
  use WebpConverter\Conversion\Format\WebpFormat;
7
  use WebpConverter\Conversion\Method\MethodIntegrator;
@@ -40,6 +41,8 @@ class WpCliManager implements HookableInterface {
40
  return;
41
  }
42
 
 
 
43
  \WP_CLI::add_command( 'webp-converter calculate', [ $this, 'calculate_images' ] );
44
  \WP_CLI::add_command( 'webp-converter regenerate', [ $this, 'regenerate_images' ] );
45
  }
@@ -52,15 +55,15 @@ class WpCliManager implements HookableInterface {
52
  __( 'How many images to convert are remaining on my website?', 'webp-converter-for-media' )
53
  );
54
 
55
- $images_count = ( new PathsFinder( $this->plugin_data, $this->token_repository ) )
56
- ->get_paths_count( [ AvifFormat::FORMAT_EXTENSION, WebpFormat::FORMAT_EXTENSION ] );
57
 
58
  \WP_CLI::success(
59
  sprintf(
60
  /* translators: %1$s: images count */
61
  __( '%1$s for AVIF and %2$s for WebP', 'webp-converter-for-media' ),
62
- number_format( $images_count[ AvifFormat::FORMAT_EXTENSION ] ?? 0, 0, '', ' ' ),
63
- number_format( $images_count[ WebpFormat::FORMAT_EXTENSION ] ?? 0, 0, '', ' ' )
64
  )
65
  );
66
  }
@@ -76,38 +79,48 @@ class WpCliManager implements HookableInterface {
76
  ->get_paths_by_chunks( $skip_converted );
77
  $conversion_method = ( new MethodIntegrator( $this->plugin_data ) );
78
 
 
 
 
 
 
79
  $progress = \WP_CLI\Utils\make_progress_bar(
80
  __( 'Bulk Optimization', 'webp-converter-for-media' ),
81
- count( $paths_chunks )
82
  );
83
  $size_before = 0;
84
  $size_after = 0;
85
  $files_all = 0;
86
  $files_converted = 0;
87
 
88
- foreach ( $paths_chunks as $images_paths ) {
89
- $response = $conversion_method->init_conversion( $images_paths, ! $skip_converted );
 
 
 
 
 
 
 
 
 
 
 
 
 
90
 
91
- if ( $response !== null ) {
92
- foreach ( $response['errors'] as $error_message ) {
93
- if ( ! $response['is_fatal_error'] ) {
94
- \WP_CLI::warning( $error_message );
95
- } else {
96
- \WP_CLI::error( $error_message );
97
  }
98
- }
99
 
100
- if ( $response['is_fatal_error'] ) {
101
- return;
 
 
102
  }
103
 
104
- $size_before += $response['size']['before'];
105
- $size_after += $response['size']['after'];
106
- $files_all += $response['files']['all'];
107
- $files_converted += $response['files']['converted'];
108
  }
109
-
110
- $progress->tick();
111
  }
112
 
113
  $progress->finish();
@@ -140,6 +153,20 @@ class WpCliManager implements HookableInterface {
140
  );
141
  }
142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  private function format_bytes( int $size ): string {
144
  $suffixes = [ 'B', 'KB', 'MB', 'GB' ];
145
  $base = floor( log( $size ) / log( 1024 ) );
2
 
3
  namespace WebpConverter\Service;
4
 
5
+ use WebpConverter\Conversion\FilesTreeFinder;
6
  use WebpConverter\Conversion\Format\AvifFormat;
7
  use WebpConverter\Conversion\Format\WebpFormat;
8
  use WebpConverter\Conversion\Method\MethodIntegrator;
41
  return;
42
  }
43
 
44
+ \WP_CLI::add_command( 'converter-for-media calculate', [ $this, 'calculate_images' ] );
45
+ \WP_CLI::add_command( 'converter-for-media regenerate', [ $this, 'regenerate_images' ] );
46
  \WP_CLI::add_command( 'webp-converter calculate', [ $this, 'calculate_images' ] );
47
  \WP_CLI::add_command( 'webp-converter regenerate', [ $this, 'regenerate_images' ] );
48
  }
55
  __( 'How many images to convert are remaining on my website?', 'webp-converter-for-media' )
56
  );
57
 
58
+ $stats_data = ( new FilesTreeFinder( $this->plugin_data ) )
59
+ ->get_tree( [ WebpFormat::FORMAT_EXTENSION, AvifFormat::FORMAT_EXTENSION ] );
60
 
61
  \WP_CLI::success(
62
  sprintf(
63
  /* translators: %1$s: images count */
64
  __( '%1$s for AVIF and %2$s for WebP', 'webp-converter-for-media' ),
65
+ number_format( $stats_data['files_unconverted'][ AvifFormat::FORMAT_EXTENSION ], 0, '', ' ' ),
66
+ number_format( $stats_data['files_unconverted'][ WebpFormat::FORMAT_EXTENSION ], 0, '', ' ' )
67
  )
68
  );
69
  }
79
  ->get_paths_by_chunks( $skip_converted );
80
  $conversion_method = ( new MethodIntegrator( $this->plugin_data ) );
81
 
82
+ $count = 0;
83
+ foreach ( $paths_chunks as $chunk_data ) {
84
+ $count += count( $chunk_data['files'] );
85
+ }
86
+
87
  $progress = \WP_CLI\Utils\make_progress_bar(
88
  __( 'Bulk Optimization', 'webp-converter-for-media' ),
89
+ $count
90
  );
91
  $size_before = 0;
92
  $size_after = 0;
93
  $files_all = 0;
94
  $files_converted = 0;
95
 
96
+ foreach ( $paths_chunks as $chunk_data ) {
97
+ foreach ( $chunk_data['files'] as $images_paths ) {
98
+ $response = $conversion_method->init_conversion(
99
+ $this->parse_files_paths( $images_paths, $chunk_data['path'] ),
100
+ ! $skip_converted
101
+ );
102
+
103
+ if ( $response !== null ) {
104
+ foreach ( $response['errors'] as $error_message ) {
105
+ if ( ! $response['is_fatal_error'] ) {
106
+ \WP_CLI::warning( $error_message );
107
+ } else {
108
+ \WP_CLI::error( $error_message );
109
+ }
110
+ }
111
 
112
+ if ( $response['is_fatal_error'] ) {
113
+ return;
 
 
 
 
114
  }
 
115
 
116
+ $size_before += $response['size']['before'];
117
+ $size_after += $response['size']['after'];
118
+ $files_all += $response['files']['webp_available'] + $response['files']['avif_available'];
119
+ $files_converted += $response['files']['webp_converted'] + $response['files']['avif_converted'];
120
  }
121
 
122
+ $progress->tick();
 
 
 
123
  }
 
 
124
  }
125
 
126
  $progress->finish();
153
  );
154
  }
155
 
156
+ /**
157
+ * @param string[] $paths .
158
+ * @param string $path_prefix .
159
+ *
160
+ * @return string[]
161
+ */
162
+ private function parse_files_paths( array $paths, string $path_prefix ): array {
163
+ $items = [];
164
+ foreach ( $paths as $path ) {
165
+ $items[] = $path_prefix . '/' . $path;
166
+ }
167
+ return $items;
168
+ }
169
+
170
  private function format_bytes( int $size ): string {
171
  $suffixes = [ 'B', 'KB', 'MB', 'GB' ];
172
  $base = floor( log( $size ) / log( 1024 ) );
src/Settings/Option/ExtraFeaturesOption.php CHANGED
@@ -94,6 +94,10 @@ class ExtraFeaturesOption extends OptionAbstract {
94
  */
95
  public function get_valid_value( $current_value, array $available_values = null, array $disabled_values = null ) {
96
  $valid_values = [];
 
 
 
 
97
  foreach ( $current_value as $option_value ) {
98
  if ( array_key_exists( $option_value, $available_values ?: [] )
99
  && ! in_array( $option_value, $disabled_values ?: [] ) ) {
94
  */
95
  public function get_valid_value( $current_value, array $available_values = null, array $disabled_values = null ) {
96
  $valid_values = [];
97
+ if ( ! $current_value ) {
98
+ return $valid_values;
99
+ }
100
+
101
  foreach ( $current_value as $option_value ) {
102
  if ( array_key_exists( $option_value, $available_values ?: [] )
103
  && ! in_array( $option_value, $disabled_values ?: [] ) ) {
src/Settings/Option/ImageResizeOption.php CHANGED
@@ -147,7 +147,10 @@ class ImageResizeOption extends OptionAbstract {
147
  * @return int[]
148
  */
149
  private function get_max_image_size(): array {
150
- $sizes = wp_get_registered_image_subsizes();
 
 
 
151
  $column_width = array_column( $sizes, 'width' );
152
  $column_height = array_column( $sizes, 'height' );
153
 
147
  * @return int[]
148
  */
149
  private function get_max_image_size(): array {
150
+ $sizes = ( function_exists( 'wp_get_registered_image_subsizes' ) )
151
+ ? wp_get_registered_image_subsizes()
152
+ : wp_get_additional_image_sizes();
153
+
154
  $column_width = array_column( $sizes, 'width' );
155
  $column_height = array_column( $sizes, 'height' );
156
 
src/Settings/Option/OutputFormatsOption.php CHANGED
@@ -114,6 +114,10 @@ class OutputFormatsOption extends OptionAbstract {
114
  */
115
  public function get_valid_value( $current_value, array $available_values = null, array $disabled_values = null ) {
116
  $valid_values = [];
 
 
 
 
117
  foreach ( $current_value as $option_value ) {
118
  if ( array_key_exists( $option_value, $available_values ?: [] )
119
  && ! in_array( $option_value, $disabled_values ?: [] ) ) {
114
  */
115
  public function get_valid_value( $current_value, array $available_values = null, array $disabled_values = null ) {
116
  $valid_values = [];
117
+ if ( ! $current_value ) {
118
+ return $valid_values;
119
+ }
120
+
121
  foreach ( $current_value as $option_value ) {
122
  if ( array_key_exists( $option_value, $available_values ?: [] )
123
  && ! in_array( $option_value, $disabled_values ?: [] ) ) {
src/Settings/Option/SupportedDirectoriesOption.php CHANGED
@@ -60,6 +60,10 @@ class SupportedDirectoriesOption extends OptionAbstract {
60
  */
61
  public function get_valid_value( $current_value, array $available_values = null, array $disabled_values = null ) {
62
  $valid_values = [];
 
 
 
 
63
  foreach ( $current_value as $option_value ) {
64
  if ( array_key_exists( $option_value, $available_values ?: [] )
65
  && ! in_array( $option_value, $disabled_values ?: [] ) ) {
60
  */
61
  public function get_valid_value( $current_value, array $available_values = null, array $disabled_values = null ) {
62
  $valid_values = [];
63
+ if ( ! $current_value ) {
64
+ return $valid_values;
65
+ }
66
+
67
  foreach ( $current_value as $option_value ) {
68
  if ( array_key_exists( $option_value, $available_values ?: [] )
69
  && ! in_array( $option_value, $disabled_values ?: [] ) ) {
src/Settings/Option/SupportedExtensionsOption.php CHANGED
@@ -67,6 +67,10 @@ class SupportedExtensionsOption extends OptionAbstract {
67
  */
68
  public function get_valid_value( $current_value, array $available_values = null, array $disabled_values = null ) {
69
  $valid_values = [];
 
 
 
 
70
  foreach ( $current_value as $option_value ) {
71
  if ( array_key_exists( $option_value, $available_values ?: [] )
72
  && ! in_array( $option_value, $disabled_values ?: [] ) ) {
67
  */
68
  public function get_valid_value( $current_value, array $available_values = null, array $disabled_values = null ) {
69
  $valid_values = [];
70
+ if ( ! $current_value ) {
71
+ return $valid_values;
72
+ }
73
+
74
  foreach ( $current_value as $option_value ) {
75
  if ( array_key_exists( $option_value, $available_values ?: [] )
76
  && ! in_array( $option_value, $disabled_values ?: [] ) ) {
src/Settings/Page/GeneralSettingsPage.php CHANGED
@@ -3,7 +3,7 @@
3
 
4
  namespace WebpConverter\Settings\Page;
5
 
6
- use WebpConverter\Conversion\Endpoint\ImagesCounterEndpoint;
7
  use WebpConverter\Conversion\Endpoint\PathsEndpoint;
8
  use WebpConverter\Conversion\Endpoint\RegenerateEndpoint;
9
  use WebpConverter\Loader\LoaderAbstract;
@@ -74,8 +74,8 @@ class GeneralSettingsPage extends PageAbstract {
74
  public function get_template_vars(): array {
75
  ( new SettingsSave( $this->plugin_data ) )->save_settings();
76
 
77
- $token_status = $this->token_repository->get_token()->get_valid_status();
78
- $data = [
79
  'logo_url' => $this->plugin_info->get_plugin_directory_url() . 'assets/img/logo-headline.png',
80
  'errors_messages' => apply_filters( 'webpc_server_errors_messages', [] ),
81
  'errors_codes' => apply_filters( 'webpc_server_errors', [] ),
@@ -86,21 +86,22 @@ class GeneralSettingsPage extends PageAbstract {
86
  'form_sidebar_input_value' => OptionAbstract::FORM_TYPE_SIDEBAR,
87
  'nonce_input_name' => SettingsSave::NONCE_PARAM_KEY,
88
  'nonce_input_value' => ( new NonceManager() )->generate_nonce( SettingsSave::NONCE_PARAM_VALUE ),
89
- 'token_valid_status' => $token_status,
90
- 'api_calculate_url' => ( new ImagesCounterEndpoint( $this->plugin_data, $this->token_repository ) )->get_route_url(),
91
  'api_paths_url' => ( new PathsEndpoint( $this->plugin_data, $this->token_repository ) )->get_route_url(),
92
  'api_regenerate_url' => ( new RegenerateEndpoint( $this->plugin_data ) )->get_route_url(),
 
93
  'url_debug_page' => PageIntegration::get_settings_page_url( DebugPage::PAGE_SLUG ),
94
  'output_formats' => [
95
  'webp' => [
96
  'label' => 'WebP',
97
- 'desc' => ( ! $token_status )
98
  ? __( 'available in the free version', 'webp-converter-for-media' )
99
  : null,
100
  ],
101
  'avif' => [
102
  'label' => 'AVIF',
103
- 'desc' => ( ! $token_status )
104
  ? sprintf(
105
  /* translators: %1$s: open anchor tag, %2$s: close anchor tag */
106
  __( 'available in %1$sthe PRO version%2$s', 'webp-converter-for-media' ),
3
 
4
  namespace WebpConverter\Settings\Page;
5
 
6
+ use WebpConverter\Conversion\Endpoint\FilesStatsEndpoint;
7
  use WebpConverter\Conversion\Endpoint\PathsEndpoint;
8
  use WebpConverter\Conversion\Endpoint\RegenerateEndpoint;
9
  use WebpConverter\Loader\LoaderAbstract;
74
  public function get_template_vars(): array {
75
  ( new SettingsSave( $this->plugin_data ) )->save_settings();
76
 
77
+ $token = $this->token_repository->get_token();
78
+ $data = [
79
  'logo_url' => $this->plugin_info->get_plugin_directory_url() . 'assets/img/logo-headline.png',
80
  'errors_messages' => apply_filters( 'webpc_server_errors_messages', [] ),
81
  'errors_codes' => apply_filters( 'webpc_server_errors', [] ),
86
  'form_sidebar_input_value' => OptionAbstract::FORM_TYPE_SIDEBAR,
87
  'nonce_input_name' => SettingsSave::NONCE_PARAM_KEY,
88
  'nonce_input_value' => ( new NonceManager() )->generate_nonce( SettingsSave::NONCE_PARAM_VALUE ),
89
+ 'token_valid_status' => $token->get_valid_status(),
90
+ 'token_active_status' => $token->is_active(),
91
  'api_paths_url' => ( new PathsEndpoint( $this->plugin_data, $this->token_repository ) )->get_route_url(),
92
  'api_regenerate_url' => ( new RegenerateEndpoint( $this->plugin_data ) )->get_route_url(),
93
+ 'api_stats_url' => ( new FilesStatsEndpoint( $this->plugin_data ) )->get_route_url(),
94
  'url_debug_page' => PageIntegration::get_settings_page_url( DebugPage::PAGE_SLUG ),
95
  'output_formats' => [
96
  'webp' => [
97
  'label' => 'WebP',
98
+ 'desc' => ( ! $token->get_valid_status() )
99
  ? __( 'available in the free version', 'webp-converter-for-media' )
100
  : null,
101
  ],
102
  'avif' => [
103
  'label' => 'AVIF',
104
+ 'desc' => ( ! $token->get_valid_status() )
105
  ? sprintf(
106
  /* translators: %1$s: open anchor tag, %2$s: close anchor tag */
107
  __( 'available in %1$sthe PRO version%2$s', 'webp-converter-for-media' ),
src/WebpConverter.php CHANGED
@@ -24,15 +24,13 @@ class WebpConverter {
24
  $token_repository = new TokenRepository();
25
 
26
  ( new Action\ConvertAttachment( $plugin_data ) )->init_hooks();
27
- ( new Action\ConvertDir() )->init_hooks();
28
  ( new Action\ConvertPaths( $plugin_data ) )->init_hooks();
29
  ( new Action\DeletePaths() )->init_hooks();
30
  ( new Conversion\Directory\DirectoryFactory() )->init_hooks();
31
- ( new Conversion\DirectoryFiles( $plugin_data ) )->init_hooks();
32
- ( new Endpoint\EndpointIntegration( new Endpoint\ImagesCounterEndpoint( $plugin_data, $token_repository ) ) )->init_hooks();
33
  ( new Endpoint\EndpointIntegration( new Endpoint\PathsEndpoint( $plugin_data, $token_repository ) ) )->init_hooks();
34
  ( new Endpoint\EndpointIntegration( new Endpoint\RegenerateEndpoint( $plugin_data ) ) )->init_hooks();
35
- ( new Endpoint\EndpointIntegration( new Endpoint\CronConversionEndpoint( $plugin_data, $token_repository ) ) )->init_hooks();
36
  ( new Conversion\SkipExcludedPaths() )->init_hooks();
37
  ( new Cron\CronEventGenerator( $plugin_data, $token_repository ) )->init_hooks();
38
  ( new Cron\CronSchedulesGenerator() )->init_hooks();
24
  $token_repository = new TokenRepository();
25
 
26
  ( new Action\ConvertAttachment( $plugin_data ) )->init_hooks();
 
27
  ( new Action\ConvertPaths( $plugin_data ) )->init_hooks();
28
  ( new Action\DeletePaths() )->init_hooks();
29
  ( new Conversion\Directory\DirectoryFactory() )->init_hooks();
30
+ ( new Endpoint\EndpointIntegration( new Endpoint\CronConversionEndpoint( $plugin_data, $token_repository ) ) )->init_hooks();
31
+ ( new Endpoint\EndpointIntegration( new Endpoint\FilesStatsEndpoint( $plugin_data ) ) )->init_hooks();
32
  ( new Endpoint\EndpointIntegration( new Endpoint\PathsEndpoint( $plugin_data, $token_repository ) ) )->init_hooks();
33
  ( new Endpoint\EndpointIntegration( new Endpoint\RegenerateEndpoint( $plugin_data ) ) )->init_hooks();
 
34
  ( new Conversion\SkipExcludedPaths() )->init_hooks();
35
  ( new Cron\CronEventGenerator( $plugin_data, $token_repository ) )->init_hooks();
36
  ( new Cron\CronSchedulesGenerator() )->init_hooks();
templates/components/fields/image_size.php CHANGED
@@ -13,13 +13,13 @@
13
  <input type="checkbox"
14
  name="<?php echo esc_attr( $option['name'] ); ?>[0]"
15
  value="yes"
16
- id="<?php echo esc_attr( $option['name'] ); ?>"
17
  class="webpcField__input webpcField__input--checkbox"
18
  data-inputs-group-toggle="<?php echo esc_attr( $option['name'] ); ?>"
19
  <?php echo ( ( $option['value'][0] ?? '' ) === 'yes' ) ? 'checked' : ''; ?>
20
  <?php echo ( in_array( 'yes', $option['disabled'] ) ) ? 'disabled' : ''; ?>
21
  >
22
- <label for="<?php echo esc_attr( $option['name'] ); ?>"></label>
23
  <span class="webpcField__label"><?php echo wp_kses_post( $option['info'] ); ?></span>
24
  </div>
25
 
@@ -31,7 +31,7 @@
31
  <input type="number" min="0" step="1"
32
  name="<?php echo esc_attr( $option['name'] ); ?>[1]"
33
  value="<?php echo esc_attr( $option['value'][1] ?? '' ); ?>"
34
- id="<?php echo esc_attr( $option['name'] ); ?>"
35
  class="webpcInput__field webpcInput__field--small"
36
  data-inputs-group-input="<?php echo esc_attr( $option['name'] ); ?>"
37
  <?php echo ( in_array( 'yes', $option['disabled'] ) || ( $option['value'][0] ?? '' ) !== 'yes' ) ? 'readonly' : ''; ?>
@@ -44,7 +44,7 @@
44
  <input type="number" min="0" step="1"
45
  name="<?php echo esc_attr( $option['name'] ); ?>[2]"
46
  value="<?php echo esc_attr( $option['value'][2] ?? '' ); ?>"
47
- id="<?php echo esc_attr( $option['name'] ); ?>"
48
  class="webpcInput__field webpcInput__field--small"
49
  data-inputs-group-input="<?php echo esc_attr( $option['name'] ); ?>"
50
  <?php echo ( in_array( 'yes', $option['disabled'] ) || ( $option['value'][0] ?? '' ) !== 'yes' ) ? 'readonly' : ''; ?>
13
  <input type="checkbox"
14
  name="<?php echo esc_attr( $option['name'] ); ?>[0]"
15
  value="yes"
16
+ id="<?php echo esc_attr( $option['name'] ); ?>[0]"
17
  class="webpcField__input webpcField__input--checkbox"
18
  data-inputs-group-toggle="<?php echo esc_attr( $option['name'] ); ?>"
19
  <?php echo ( ( $option['value'][0] ?? '' ) === 'yes' ) ? 'checked' : ''; ?>
20
  <?php echo ( in_array( 'yes', $option['disabled'] ) ) ? 'disabled' : ''; ?>
21
  >
22
+ <label for="<?php echo esc_attr( $option['name'] ); ?>[0]"></label>
23
  <span class="webpcField__label"><?php echo wp_kses_post( $option['info'] ); ?></span>
24
  </div>
25
 
31
  <input type="number" min="0" step="1"
32
  name="<?php echo esc_attr( $option['name'] ); ?>[1]"
33
  value="<?php echo esc_attr( $option['value'][1] ?? '' ); ?>"
34
+ id="<?php echo esc_attr( $option['name'] ); ?>[1]"
35
  class="webpcInput__field webpcInput__field--small"
36
  data-inputs-group-input="<?php echo esc_attr( $option['name'] ); ?>"
37
  <?php echo ( in_array( 'yes', $option['disabled'] ) || ( $option['value'][0] ?? '' ) !== 'yes' ) ? 'readonly' : ''; ?>
44
  <input type="number" min="0" step="1"
45
  name="<?php echo esc_attr( $option['name'] ); ?>[2]"
46
  value="<?php echo esc_attr( $option['value'][2] ?? '' ); ?>"
47
+ id="<?php echo esc_attr( $option['name'] ); ?>[2]"
48
  class="webpcInput__field webpcInput__field--small"
49
  data-inputs-group-input="<?php echo esc_attr( $option['name'] ); ?>"
50
  <?php echo ( in_array( 'yes', $option['disabled'] ) || ( $option['value'][0] ?? '' ) !== 'yes' ) ? 'readonly' : ''; ?>
templates/components/fields/token.php CHANGED
@@ -2,10 +2,10 @@
2
  /**
3
  * Field displayed in plugin settings form.
4
  *
5
- * @var bool $token_valid_status Status of PRO version.
6
- * @var string $api_calculate_url URL of REST API endpoint.
7
- * @var mixed[] $option Data of field.
8
- * @var string $index Index of field.
9
  *
10
  * @package Converter for Media
11
  */
@@ -23,21 +23,16 @@
23
  <?php echo ( $token_valid_status ) ? 'readonly' : ''; ?>
24
  >
25
  </div>
26
- <p data-calculate-widget data-calculate-widget-api="<?php echo esc_url( $api_calculate_url ); ?>">
27
- <?php
28
- echo esc_html( __( 'How many images to convert are remaining on my website?', 'webp-converter-for-media' ) );
29
- echo ' ';
30
- echo wp_kses_post(
31
- sprintf(
32
- /* translators: %1$s: open anchor tag, %2$s: close anchor tag */
33
- __( '%1$sCalculate%2$s', 'webp-converter-for-media' ),
34
- '<a href="#" data-calculate-widget-button>',
35
- '</a>'
36
- )
37
- );
38
- ?>
39
- <strong data-calculate-widget-loading hidden>
40
- <?php echo esc_html( __( 'Please wait...', 'webp-converter-for-media' ) ); ?>
41
- </strong>
42
- <strong style="display: block;" data-calculate-widget-output hidden></strong>
43
- </p>
2
  /**
3
  * Field displayed in plugin settings form.
4
  *
5
+ * @var bool $token_valid_status Status of access token.
6
+ * @var bool $token_active_status Status of PRO version.
7
+ * @var mixed[] $option Data of field.
8
+ * @var string $index Index of field.
9
  *
10
  * @package Converter for Media
11
  */
23
  <?php echo ( $token_valid_status ) ? 'readonly' : ''; ?>
24
  >
25
  </div>
26
+ <?php if ( ! $token_active_status ) : ?>
27
+ <p data-plans>
28
+ <strong><?php echo esc_html( __( 'Which plan would be the best choice for me?', 'webp-converter-for-media' ) ); ?></strong>
29
+ <br>
30
+ <a href="https://url.mattplugins.com/converter-field-access-token-plans?webp=0&avif=0" target="_blank"
31
+ data-plans-button hidden>
32
+ <?php echo esc_html( __( 'Check the plans for you', 'webp-converter-for-media' ) ); ?>
33
+ </a>
34
+ <span class="webpcContent__loader" data-plans-loader>
35
+ <?php echo esc_html( __( 'Loading, please wait', 'webp-converter-for-media' ) ); ?>
36
+ </span>
37
+ </p>
38
+ <?php endif; ?>
 
 
 
 
 
templates/components/server/sub-sizes.php CHANGED
@@ -5,6 +5,10 @@
5
  * @package Converter for Media
6
  */
7
 
 
 
 
 
8
  ?>
9
  <h4>
10
  <?php
@@ -15,7 +19,7 @@
15
  </h4>
16
  <table>
17
  <tbody>
18
- <?php foreach ( wp_get_registered_image_subsizes() as $size_name => $size_data ) : ?>
19
  <tr>
20
  <td class="e"><?php echo esc_html( $size_name ); ?></td>
21
  <td class="v">
5
  * @package Converter for Media
6
  */
7
 
8
+ $image_sizes = ( function_exists( 'wp_get_registered_image_subsizes' ) )
9
+ ? wp_get_registered_image_subsizes()
10
+ : wp_get_additional_image_sizes();
11
+
12
  ?>
13
  <h4>
14
  <?php
19
  </h4>
20
  <table>
21
  <tbody>
22
+ <?php foreach ( $image_sizes as $size_name => $size_data ) : ?>
23
  <tr>
24
  <td class="e"><?php echo esc_html( $size_name ); ?></td>
25
  <td class="v">
templates/components/widgets/options-sidebar.php CHANGED
@@ -8,7 +8,6 @@
8
  * @var string $nonce_input_name Name of hidden field with WordPress Nonce value.
9
  * @var string $nonce_input_value WordPress Nonce value.
10
  * @var bool $token_valid_status Status of PRO version.
11
- * @var string $api_calculate_url URL of REST API endpoint.
12
  *
13
  * @package Converter for Media
14
  */
8
  * @var string $nonce_input_name Name of hidden field with WordPress Nonce value.
9
  * @var string $nonce_input_value WordPress Nonce value.
10
  * @var bool $token_valid_status Status of PRO version.
 
11
  *
12
  * @package Converter for Media
13
  */
templates/components/widgets/options.php CHANGED
@@ -2,13 +2,13 @@
2
  /**
3
  * Widget displayed in main container on plugin settings page.
4
  *
5
- * @var mixed[] $form_options Settings options in main container.
6
- * @var string $form_input_name Name of hidden field with form ID.
7
- * @var string $form_input_value ID of settings form in main container.
8
- * @var string $nonce_input_name Name of hidden field with WordPress Nonce value.
9
- * @var string $nonce_input_value WordPress Nonce value.
10
- * @var bool $token_valid_status Status of PRO version.
11
- * @var string $api_calculate_url URL of REST API endpoint.
12
  *
13
  * @package Converter for Media
14
  */
2
  /**
3
  * Widget displayed in main container on plugin settings page.
4
  *
5
+ * @var mixed[] $form_options Settings options in main container.
6
+ * @var string $form_input_name Name of hidden field with form ID.
7
+ * @var string $form_input_value ID of settings form in main container.
8
+ * @var string $nonce_input_name Name of hidden field with WordPress Nonce value.
9
+ * @var string $nonce_input_value WordPress Nonce value.
10
+ * @var bool $token_valid_status Status of access token.
11
+ * @var bool $token_active_status Status of PRO version.
12
  *
13
  * @package Converter for Media
14
  */
templates/components/widgets/regenerate.php CHANGED
@@ -2,9 +2,9 @@
2
  /**
3
  * Widget displayed on plugin settings page.
4
  *
5
- * @var string $api_calculate_url URL of REST API endpoint.
6
  * @var string $api_paths_url URL of REST API endpoint.
7
  * @var string $api_regenerate_url URL of REST API endpoint.
 
8
  * @var string[][] $output_formats Data about output formats for regeneration.
9
  *
10
  * @package Converter for Media
@@ -16,7 +16,6 @@
16
  <?php echo esc_html( __( 'Bulk Optimization of Images', 'webp-converter-for-media' ) ); ?>
17
  </h3>
18
  <div class="webpcLoader webpcContent"
19
- data-api-calculate="<?php echo esc_url( $api_calculate_url ); ?>"
20
  data-api-paths="<?php echo esc_url( $api_paths_url ); ?>"
21
  data-api-regenerate="<?php echo esc_url( $api_regenerate_url ); ?>"
22
  data-api-error-message="<?php echo esc_html( __( 'An error occurred while connecting to REST API. Please try again.', 'webp-converter-for-media' ) ); ?>"
@@ -37,6 +36,18 @@
37
  ?>
38
  </p>
39
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
40
  <div class="webpcPage__widgetRow">
41
  <div class="webpcPage__widgetNotice">
42
  <p>
2
  /**
3
  * Widget displayed on plugin settings page.
4
  *
 
5
  * @var string $api_paths_url URL of REST API endpoint.
6
  * @var string $api_regenerate_url URL of REST API endpoint.
7
+ * @var string $api_stats_url URL of REST API endpoint.
8
  * @var string[][] $output_formats Data about output formats for regeneration.
9
  *
10
  * @package Converter for Media
16
  <?php echo esc_html( __( 'Bulk Optimization of Images', 'webp-converter-for-media' ) ); ?>
17
  </h3>
18
  <div class="webpcLoader webpcContent"
 
19
  data-api-paths="<?php echo esc_url( $api_paths_url ); ?>"
20
  data-api-regenerate="<?php echo esc_url( $api_regenerate_url ); ?>"
21
  data-api-error-message="<?php echo esc_html( __( 'An error occurred while connecting to REST API. Please try again.', 'webp-converter-for-media' ) ); ?>"
36
  ?>
37
  </p>
38
  </div>
39
+ <div class="webpcPage__widgetRow">
40
+ <div class="webpcTree">
41
+ <p class="webpcTree__headline">
42
+ <?php echo wp_kses_post( __( 'List of files that can be optimized:', 'webp-converter-for-media' ) ); ?>
43
+ </p>
44
+ <div class="webpcTree__output" data-tree>
45
+ <p class="webpcContent__loader">
46
+ <?php echo wp_kses_post( sprintf( __( 'Loading, please wait', 'webp-converter-for-media' ) ) ); ?>
47
+ </p>
48
+ </div>
49
+ </div>
50
+ </div>
51
  <div class="webpcPage__widgetRow">
52
  <div class="webpcPage__widgetNotice">
53
  <p>
templates/views/settings.php CHANGED
@@ -13,10 +13,11 @@
13
  * @var string $form_sidebar_input_value ID of settings form in sidebar.
14
  * @var string $nonce_input_name Name of hidden field with WordPress Nonce value.
15
  * @var string $nonce_input_value WordPress Nonce value.
16
- * @var bool $token_valid_status Status of PRO version.
17
- * @var string $api_calculate_url URL of REST API endpoint.
18
- * @var string|null $api_paths_url URL of REST API endpoint.
19
- * @var string|null $api_regenerate_url URL of REST API endpoint.
 
20
  * @var string $url_debug_page URL of debug tag in settings page.
21
  * @var string[][] $output_formats Data about output formats for regeneration.
22
  *
@@ -26,7 +27,7 @@
26
  ?>
27
  <div class="wrap">
28
  <hr class="wp-header-end">
29
- <div class="webpcPage">
30
  <div class="webpcPage__headline">
31
  <img src="<?php echo esc_attr( $logo_url ); ?>" alt="<?php echo esc_attr( 'Converter for Media' ); ?>">
32
  </div>
13
  * @var string $form_sidebar_input_value ID of settings form in sidebar.
14
  * @var string $nonce_input_name Name of hidden field with WordPress Nonce value.
15
  * @var string $nonce_input_value WordPress Nonce value.
16
+ * @var bool $token_valid_status Status of access token.
17
+ * @var bool $token_active_status Status of PRO version.
18
+ * @var string $api_paths_url URL of REST API endpoint.
19
+ * @var string $api_regenerate_url URL of REST API endpoint.
20
+ * @var string $api_stats_url URL of REST API endpoint.
21
  * @var string $url_debug_page URL of debug tag in settings page.
22
  * @var string[][] $output_formats Data about output formats for regeneration.
23
  *
27
  ?>
28
  <div class="wrap">
29
  <hr class="wp-header-end">
30
+ <div class="webpcPage" data-api-stats="<?php echo esc_url( $api_stats_url ); ?>">
31
  <div class="webpcPage__headline">
32
  <img src="<?php echo esc_attr( $logo_url ); ?>" alt="<?php echo esc_attr( 'Converter for Media' ); ?>">
33
  </div>
vendor/composer/autoload_classmap.php CHANGED
@@ -21,7 +21,6 @@ return array(
21
  'WebpConverterVendor\\MattPlugins\\DeactivationModal\\Service\\AssetsPrinterService' => $baseDir . '/vendor_prefixed/src/Service/AssetsPrinterService.php',
22
  'WebpConverterVendor\\MattPlugins\\DeactivationModal\\Service\\TemplateGeneratorService' => $baseDir . '/vendor_prefixed/src/Service/TemplateGeneratorService.php',
23
  'WebpConverter\\Action\\ConvertAttachment' => $baseDir . '/src/Action/ConvertAttachment.php',
24
- 'WebpConverter\\Action\\ConvertDir' => $baseDir . '/src/Action/ConvertDir.php',
25
  'WebpConverter\\Action\\ConvertPaths' => $baseDir . '/src/Action/ConvertPaths.php',
26
  'WebpConverter\\Action\\DeletePaths' => $baseDir . '/src/Action/DeletePaths.php',
27
  'WebpConverter\\Conversion\\Cron\\CronEventGenerator' => $baseDir . '/src/Conversion/Cron/CronEventGenerator.php',
@@ -29,7 +28,7 @@ return array(
29
  'WebpConverter\\Conversion\\Cron\\CronSchedulesGenerator' => $baseDir . '/src/Conversion/Cron/CronSchedulesGenerator.php',
30
  'WebpConverter\\Conversion\\Cron\\CronStatusManager' => $baseDir . '/src/Conversion/Cron/CronStatusManager.php',
31
  'WebpConverter\\Conversion\\Cron\\CronStatusViewer' => $baseDir . '/src/Conversion/Cron/CronStatusViewer.php',
32
- 'WebpConverter\\Conversion\\DirectoryFiles' => $baseDir . '/src/Conversion/DirectoryFiles.php',
33
  'WebpConverter\\Conversion\\Directory\\DirectoryAbstract' => $baseDir . '/src/Conversion/Directory/DirectoryAbstract.php',
34
  'WebpConverter\\Conversion\\Directory\\DirectoryFactory' => $baseDir . '/src/Conversion/Directory/DirectoryFactory.php',
35
  'WebpConverter\\Conversion\\Directory\\DirectoryIntegration' => $baseDir . '/src/Conversion/Directory/DirectoryIntegration.php',
@@ -40,9 +39,10 @@ return array(
40
  'WebpConverter\\Conversion\\Endpoint\\EndpointAbstract' => $baseDir . '/src/Conversion/Endpoint/EndpointAbstract.php',
41
  'WebpConverter\\Conversion\\Endpoint\\EndpointIntegration' => $baseDir . '/src/Conversion/Endpoint/EndpointIntegration.php',
42
  'WebpConverter\\Conversion\\Endpoint\\EndpointInterface' => $baseDir . '/src/Conversion/Endpoint/EndpointInterface.php',
43
- 'WebpConverter\\Conversion\\Endpoint\\ImagesCounterEndpoint' => $baseDir . '/src/Conversion/Endpoint/ImagesCounterEndpoint.php',
44
  'WebpConverter\\Conversion\\Endpoint\\PathsEndpoint' => $baseDir . '/src/Conversion/Endpoint/PathsEndpoint.php',
45
  'WebpConverter\\Conversion\\Endpoint\\RegenerateEndpoint' => $baseDir . '/src/Conversion/Endpoint/RegenerateEndpoint.php',
 
46
  'WebpConverter\\Conversion\\Format\\AvifFormat' => $baseDir . '/src/Conversion/Format/AvifFormat.php',
47
  'WebpConverter\\Conversion\\Format\\FormatAbstract' => $baseDir . '/src/Conversion/Format/FormatAbstract.php',
48
  'WebpConverter\\Conversion\\Format\\FormatFactory' => $baseDir . '/src/Conversion/Format/FormatFactory.php',
21
  'WebpConverterVendor\\MattPlugins\\DeactivationModal\\Service\\AssetsPrinterService' => $baseDir . '/vendor_prefixed/src/Service/AssetsPrinterService.php',
22
  'WebpConverterVendor\\MattPlugins\\DeactivationModal\\Service\\TemplateGeneratorService' => $baseDir . '/vendor_prefixed/src/Service/TemplateGeneratorService.php',
23
  'WebpConverter\\Action\\ConvertAttachment' => $baseDir . '/src/Action/ConvertAttachment.php',
 
24
  'WebpConverter\\Action\\ConvertPaths' => $baseDir . '/src/Action/ConvertPaths.php',
25
  'WebpConverter\\Action\\DeletePaths' => $baseDir . '/src/Action/DeletePaths.php',
26
  'WebpConverter\\Conversion\\Cron\\CronEventGenerator' => $baseDir . '/src/Conversion/Cron/CronEventGenerator.php',
28
  'WebpConverter\\Conversion\\Cron\\CronSchedulesGenerator' => $baseDir . '/src/Conversion/Cron/CronSchedulesGenerator.php',
29
  'WebpConverter\\Conversion\\Cron\\CronStatusManager' => $baseDir . '/src/Conversion/Cron/CronStatusManager.php',
30
  'WebpConverter\\Conversion\\Cron\\CronStatusViewer' => $baseDir . '/src/Conversion/Cron/CronStatusViewer.php',
31
+ 'WebpConverter\\Conversion\\DirectoryFilesFinder' => $baseDir . '/src/Conversion/DirectoryFilesFinder.php',
32
  'WebpConverter\\Conversion\\Directory\\DirectoryAbstract' => $baseDir . '/src/Conversion/Directory/DirectoryAbstract.php',
33
  'WebpConverter\\Conversion\\Directory\\DirectoryFactory' => $baseDir . '/src/Conversion/Directory/DirectoryFactory.php',
34
  'WebpConverter\\Conversion\\Directory\\DirectoryIntegration' => $baseDir . '/src/Conversion/Directory/DirectoryIntegration.php',
39
  'WebpConverter\\Conversion\\Endpoint\\EndpointAbstract' => $baseDir . '/src/Conversion/Endpoint/EndpointAbstract.php',
40
  'WebpConverter\\Conversion\\Endpoint\\EndpointIntegration' => $baseDir . '/src/Conversion/Endpoint/EndpointIntegration.php',
41
  'WebpConverter\\Conversion\\Endpoint\\EndpointInterface' => $baseDir . '/src/Conversion/Endpoint/EndpointInterface.php',
42
+ 'WebpConverter\\Conversion\\Endpoint\\FilesStatsEndpoint' => $baseDir . '/src/Conversion/Endpoint/FilesStatsEndpoint.php',
43
  'WebpConverter\\Conversion\\Endpoint\\PathsEndpoint' => $baseDir . '/src/Conversion/Endpoint/PathsEndpoint.php',
44
  'WebpConverter\\Conversion\\Endpoint\\RegenerateEndpoint' => $baseDir . '/src/Conversion/Endpoint/RegenerateEndpoint.php',
45
+ 'WebpConverter\\Conversion\\FilesTreeFinder' => $baseDir . '/src/Conversion/FilesTreeFinder.php',
46
  'WebpConverter\\Conversion\\Format\\AvifFormat' => $baseDir . '/src/Conversion/Format/AvifFormat.php',
47
  'WebpConverter\\Conversion\\Format\\FormatAbstract' => $baseDir . '/src/Conversion/Format/FormatAbstract.php',
48
  'WebpConverter\\Conversion\\Format\\FormatFactory' => $baseDir . '/src/Conversion/Format/FormatFactory.php',
vendor/composer/autoload_static.php CHANGED
@@ -36,7 +36,6 @@ class ComposerStaticInitba256ecdc5bb5675566d3dd845f3570f
36
  'WebpConverterVendor\\MattPlugins\\DeactivationModal\\Service\\AssetsPrinterService' => __DIR__ . '/../..' . '/vendor_prefixed/src/Service/AssetsPrinterService.php',
37
  'WebpConverterVendor\\MattPlugins\\DeactivationModal\\Service\\TemplateGeneratorService' => __DIR__ . '/../..' . '/vendor_prefixed/src/Service/TemplateGeneratorService.php',
38
  'WebpConverter\\Action\\ConvertAttachment' => __DIR__ . '/../..' . '/src/Action/ConvertAttachment.php',
39
- 'WebpConverter\\Action\\ConvertDir' => __DIR__ . '/../..' . '/src/Action/ConvertDir.php',
40
  'WebpConverter\\Action\\ConvertPaths' => __DIR__ . '/../..' . '/src/Action/ConvertPaths.php',
41
  'WebpConverter\\Action\\DeletePaths' => __DIR__ . '/../..' . '/src/Action/DeletePaths.php',
42
  'WebpConverter\\Conversion\\Cron\\CronEventGenerator' => __DIR__ . '/../..' . '/src/Conversion/Cron/CronEventGenerator.php',
@@ -44,7 +43,7 @@ class ComposerStaticInitba256ecdc5bb5675566d3dd845f3570f
44
  'WebpConverter\\Conversion\\Cron\\CronSchedulesGenerator' => __DIR__ . '/../..' . '/src/Conversion/Cron/CronSchedulesGenerator.php',
45
  'WebpConverter\\Conversion\\Cron\\CronStatusManager' => __DIR__ . '/../..' . '/src/Conversion/Cron/CronStatusManager.php',
46
  'WebpConverter\\Conversion\\Cron\\CronStatusViewer' => __DIR__ . '/../..' . '/src/Conversion/Cron/CronStatusViewer.php',
47
- 'WebpConverter\\Conversion\\DirectoryFiles' => __DIR__ . '/../..' . '/src/Conversion/DirectoryFiles.php',
48
  'WebpConverter\\Conversion\\Directory\\DirectoryAbstract' => __DIR__ . '/../..' . '/src/Conversion/Directory/DirectoryAbstract.php',
49
  'WebpConverter\\Conversion\\Directory\\DirectoryFactory' => __DIR__ . '/../..' . '/src/Conversion/Directory/DirectoryFactory.php',
50
  'WebpConverter\\Conversion\\Directory\\DirectoryIntegration' => __DIR__ . '/../..' . '/src/Conversion/Directory/DirectoryIntegration.php',
@@ -55,9 +54,10 @@ class ComposerStaticInitba256ecdc5bb5675566d3dd845f3570f
55
  'WebpConverter\\Conversion\\Endpoint\\EndpointAbstract' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/EndpointAbstract.php',
56
  'WebpConverter\\Conversion\\Endpoint\\EndpointIntegration' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/EndpointIntegration.php',
57
  'WebpConverter\\Conversion\\Endpoint\\EndpointInterface' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/EndpointInterface.php',
58
- 'WebpConverter\\Conversion\\Endpoint\\ImagesCounterEndpoint' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/ImagesCounterEndpoint.php',
59
  'WebpConverter\\Conversion\\Endpoint\\PathsEndpoint' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/PathsEndpoint.php',
60
  'WebpConverter\\Conversion\\Endpoint\\RegenerateEndpoint' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/RegenerateEndpoint.php',
 
61
  'WebpConverter\\Conversion\\Format\\AvifFormat' => __DIR__ . '/../..' . '/src/Conversion/Format/AvifFormat.php',
62
  'WebpConverter\\Conversion\\Format\\FormatAbstract' => __DIR__ . '/../..' . '/src/Conversion/Format/FormatAbstract.php',
63
  'WebpConverter\\Conversion\\Format\\FormatFactory' => __DIR__ . '/../..' . '/src/Conversion/Format/FormatFactory.php',
36
  'WebpConverterVendor\\MattPlugins\\DeactivationModal\\Service\\AssetsPrinterService' => __DIR__ . '/../..' . '/vendor_prefixed/src/Service/AssetsPrinterService.php',
37
  'WebpConverterVendor\\MattPlugins\\DeactivationModal\\Service\\TemplateGeneratorService' => __DIR__ . '/../..' . '/vendor_prefixed/src/Service/TemplateGeneratorService.php',
38
  'WebpConverter\\Action\\ConvertAttachment' => __DIR__ . '/../..' . '/src/Action/ConvertAttachment.php',
 
39
  'WebpConverter\\Action\\ConvertPaths' => __DIR__ . '/../..' . '/src/Action/ConvertPaths.php',
40
  'WebpConverter\\Action\\DeletePaths' => __DIR__ . '/../..' . '/src/Action/DeletePaths.php',
41
  'WebpConverter\\Conversion\\Cron\\CronEventGenerator' => __DIR__ . '/../..' . '/src/Conversion/Cron/CronEventGenerator.php',
43
  'WebpConverter\\Conversion\\Cron\\CronSchedulesGenerator' => __DIR__ . '/../..' . '/src/Conversion/Cron/CronSchedulesGenerator.php',
44
  'WebpConverter\\Conversion\\Cron\\CronStatusManager' => __DIR__ . '/../..' . '/src/Conversion/Cron/CronStatusManager.php',
45
  'WebpConverter\\Conversion\\Cron\\CronStatusViewer' => __DIR__ . '/../..' . '/src/Conversion/Cron/CronStatusViewer.php',
46
+ 'WebpConverter\\Conversion\\DirectoryFilesFinder' => __DIR__ . '/../..' . '/src/Conversion/DirectoryFilesFinder.php',
47
  'WebpConverter\\Conversion\\Directory\\DirectoryAbstract' => __DIR__ . '/../..' . '/src/Conversion/Directory/DirectoryAbstract.php',
48
  'WebpConverter\\Conversion\\Directory\\DirectoryFactory' => __DIR__ . '/../..' . '/src/Conversion/Directory/DirectoryFactory.php',
49
  'WebpConverter\\Conversion\\Directory\\DirectoryIntegration' => __DIR__ . '/../..' . '/src/Conversion/Directory/DirectoryIntegration.php',
54
  'WebpConverter\\Conversion\\Endpoint\\EndpointAbstract' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/EndpointAbstract.php',
55
  'WebpConverter\\Conversion\\Endpoint\\EndpointIntegration' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/EndpointIntegration.php',
56
  'WebpConverter\\Conversion\\Endpoint\\EndpointInterface' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/EndpointInterface.php',
57
+ 'WebpConverter\\Conversion\\Endpoint\\FilesStatsEndpoint' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/FilesStatsEndpoint.php',
58
  'WebpConverter\\Conversion\\Endpoint\\PathsEndpoint' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/PathsEndpoint.php',
59
  'WebpConverter\\Conversion\\Endpoint\\RegenerateEndpoint' => __DIR__ . '/../..' . '/src/Conversion/Endpoint/RegenerateEndpoint.php',
60
+ 'WebpConverter\\Conversion\\FilesTreeFinder' => __DIR__ . '/../..' . '/src/Conversion/FilesTreeFinder.php',
61
  'WebpConverter\\Conversion\\Format\\AvifFormat' => __DIR__ . '/../..' . '/src/Conversion/Format/AvifFormat.php',
62
  'WebpConverter\\Conversion\\Format\\FormatAbstract' => __DIR__ . '/../..' . '/src/Conversion/Format/FormatAbstract.php',
63
  'WebpConverter\\Conversion\\Format\\FormatFactory' => __DIR__ . '/../..' . '/src/Conversion/Format/FormatFactory.php',
vendor/composer/installed.php CHANGED
@@ -5,7 +5,7 @@
5
  'type' => 'library',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
- 'reference' => '236d7dbe1519e02b8750e05b1d55be7a91759aab',
9
  'name' => 'gbiorczyk/webp-converter-for-media',
10
  'dev' => false,
11
  ),
@@ -16,7 +16,7 @@
16
  'type' => 'library',
17
  'install_path' => __DIR__ . '/../../',
18
  'aliases' => array(),
19
- 'reference' => '236d7dbe1519e02b8750e05b1d55be7a91759aab',
20
  'dev_requirement' => false,
21
  ),
22
  'matt-plugins/deactivation-modal' => array(
5
  'type' => 'library',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
+ 'reference' => '149b220cf7ca74f1d8d92d16400ee98612b1f8b0',
9
  'name' => 'gbiorczyk/webp-converter-for-media',
10
  'dev' => false,
11
  ),
16
  'type' => 'library',
17
  'install_path' => __DIR__ . '/../../',
18
  'aliases' => array(),
19
+ 'reference' => '149b220cf7ca74f1d8d92d16400ee98612b1f8b0',
20
  'dev_requirement' => false,
21
  ),
22
  'matt-plugins/deactivation-modal' => array(
webp-converter-for-media.php CHANGED
@@ -3,7 +3,7 @@
3
  /**
4
  * Plugin Name: Converter for Media
5
  * Description: Speed up your website by using our WebP & AVIF Converter (formerly WebP Converter for Media). Serve WebP and AVIF images instead of standard formats JPEG, PNG and GIF just now!
6
- * Version: 5.2.4
7
  * Author: Image Optimization Team by matt plugins
8
  * Author URI: https://url.mattplugins.com/converter-plugin-author-link
9
  * Text Domain: webp-converter-for-media
@@ -13,5 +13,5 @@
13
  require_once __DIR__ . '/vendor/autoload.php';
14
 
15
  new WebpConverter\WebpConverter(
16
- new WebpConverter\PluginInfo( __FILE__, '5.2.4' )
17
  );
3
  /**
4
  * Plugin Name: Converter for Media
5
  * Description: Speed up your website by using our WebP & AVIF Converter (formerly WebP Converter for Media). Serve WebP and AVIF images instead of standard formats JPEG, PNG and GIF just now!
6
+ * Version: 5.3.0
7
  * Author: Image Optimization Team by matt plugins
8
  * Author URI: https://url.mattplugins.com/converter-plugin-author-link
9
  * Text Domain: webp-converter-for-media
13
  require_once __DIR__ . '/vendor/autoload.php';
14
 
15
  new WebpConverter\WebpConverter(
16
+ new WebpConverter\PluginInfo( __FILE__, '5.3.0' )
17
  );