§ ;Š»j,Iãó®—ddlZddlZddlZddlZddlZddlZddlmZddlm Z m Z m Z m Z m Z ddlmZddlmZddlmZmZdZdZd e eefd e efd „Zd e eefd e efd „ZGd „de¦«ZGd„de¦«Zdeded e eeffd„Zded efd„Zde eefd efd„Z ded efd„Z!de eefd efd„Z"de eefd efd„Z#d5dede e ed e efd„Z$d„Z%d efd!„Z&d"„Z'd#„Z(d ed$efd%„Z)d&ed'ed e efd(„Z*d&ed e efd)„Z+d6d+„Z,d,„Z-d7d.ed/efd0„Z.d5d/efd1„Z/d5d/efd2„Z0d3„Z1d4„Z2dS)8éN)ÚPath)ÚUnionÚIterableÚOptionalÚTupleÚList)ÚEnum)ÚClPwd)Úget_rhn_systemid_valueÚ is_ubuntuz0/opt/cpvendor/config/cl-manager-ui-settings.jsoniÚpathÚreturncó— tj|tjtjztjztjz¦«}n#t $rYdSwxYw tjtj |¦«j ¦«s tj |¦«dStj |t¦«tj |¦«S#t $rYtj |¦«dSwxYw#tj |¦«wxYw)aT Read at most _MAX_DROP_IN_BYTES from an untrusted per-user path, refusing symlinks (O_NOFOLLOW) and non-regular files (FIFO/device fstat guard). O_NONBLOCK keeps the open of a planted FIFO/device from blocking. Returns the bytes read, or None if the path is a symlink, not a regular file, or cannot be opened/read. N)ÚosÚopenÚO_RDONLYÚ O_NOFOLLOWÚ O_NONBLOCKÚ O_CLOEXECÚOSErrorÚstatÚS_ISREGÚfstatÚst_modeÚcloseÚreadÚ_MAX_DROP_IN_BYTES)r Úfds ú“/builddir/build/BUILDROOT/alt-python27-cllib-3.4.44-1.el8.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/clwpos_lib.pyÚ_safe_read_bytesr sô€ðÝ ŒW�T�2œ;­¬Ñ6½¼ÑFÍÌÑUÑ VÔ VˆˆøÝ ððð؈tˆtðøøøðÝŒ|�BœH R™LœLÔ0Ñ1Ô1ð Øõ Œ�‰ Œ ˆ ˆ ˆ õ Œw�rÕ-Ñ.Ô.õ Œ�‰ Œ ˆ ˆ øõ ðððØå Œ�‰ Œ ˆ ˆ ˆ ðøøøøõ Œ�‰ Œ ˆ ˆ øøøs<‚AA Á AÁAÁ+C ÂC à C-ÃC0Ã,C-Ã-C0Ã0DcóV—t|¦«}|€dS| dd¬¦«S)zÜ Same guarantees as _safe_read_bytes, decoded as utf-8 (errors ignored to match the callers' historic open(..., errors='ignore')). Returns None on refusal so callers fall through to their not-found path. Núutf-8Úignore)Úerrors)r Údecode)r Údatas rÚ_safe_read_textr'5s1€õ ˜DÑ !Ô !€DØ €|؈tØ �;Š;�w xˆ;Ñ 0Ô 0Ð0ócó—eZdZdZdZdZdS)Ú PluginTypez2 Plugin types that are currently detected z object-cachezadvanced-cacheN)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú OBJECT_CACHEÚADVANCED_CACHE©r(rr*r*As$€€€€€ððð"€LØ%€N€N€Nr(r*có—eZdZdZdZdZdZdS)Ú WpPluginszj Static WP plugin names, that are not detected dynamically from drop-in files, dir names, etc ÚUnknownz WP RocketÚ AccelerateWPN)r+r,r-r.ÚUNKNOWNÚ WP_ROCKETÚ ACCELERATE_WPr1r(rr3r3Is)€€€€€ððð€GØ€IØ"€M€M€Mr(r3ÚlineÚis_multiline_commentcó —|r[d|vrdS| d¦«}t|d|…d¦«\}}t||dzd…d¦«\}}||z|fSd|vr!| d¦«}|d|…dfSd|vr!| d¦«}|d|…dfSd |vrU| d ¦«}t|d|…d¦«\}}t||dzd…d¦«\}}||z|fS|dfS) zÎ Yep, this bicycle is needed to handle different comment types in .php file https://www.php.net/manual/en/language.basic-syntax.comments.php and ensure that needed line is not under comment z*/)ÚTNTéFz//ú#z/*)ÚfindÚ clean_comment)r9r:ÚposÚpart1Ú_Úpart2s rr@r@Ss;€ð ð7Ø �tÐ Ð Ø�8à—)’)˜D‘/”/ˆCÝ$ T¨$¨3¨$¤Z°Ñ6Ô6‰HˆE�1Ý*7¸¸SÀ1¹W¸X¸X¼ÈÑ*NÔ*NÑ 'ˆEÐ'ؘ5‘=Ð"6Ð6Ð 6à ˆt€|€|Ø�iŠi˜‰oŒoˆØ�D�S�DŒz˜5Ð Ð à ˆd€{€{Ø�iŠi˜‰nŒnˆØ�D�S�DŒz˜5Ð Ð à ˆt€|€|Ø�iŠi˜‰oŒoˆÝ   d s d¤¨UÑ3Ô3‰ˆˆqÝ&3°D¸¸q¹¸¸´NÀDÑ&IÔ&IÑ#ˆÐ#Ø�u‰}Ð2Ð2Ð2à �ˆ;Ðr(Úfilecó~—tj |¦«}tj |¦«S©N)rr ÚrealpathÚisfile)rEÚ realpath_files rÚ _is_real_filerKss+€Ý”G×$Ò$ TÑ*Ô*€MÝ Œ7�>Š>˜-Ñ (Ô (Ð(r(Úabs_pathcóX— tj |d¦«}tj |¦«rt |¦«rdSn#t $rYnwxYwtj |tj¦«}tj |d¦«}tj |d¦«}tj |¦«ot |¦«}tj |¦«o| ot |¦«S)a& WordPress looks for wp-config.php file in the (1) WordPress root and (2) one directory above the root. Check that there is no wp-settings.php file in the second case. This check helps when there is a nested installation, e.g / is WordPress and /wp_path/ is WordPress. ú wp-config.phpTzwp-settings.php)rr ÚjoinÚexistsrKrÚpardir)rLÚ wp_config_phpÚabs_path_level_upÚwp_config_php_level_upÚwp_settings_phpÚwp_settings_php_existss rÚ_check_wp_config_phprWxs€ð ÝœŸ š  X¨Ñ?Ô?ˆ Ý Œ7�>Š>˜-Ñ (Ô (ð ­]¸=Ñ-IÔ-Ið Ø�4øøÝ ð ð ð Ø ˆð øøøõœŸ š  X­r¬yÑ9Ô9ÐÝœWŸ\š\Ð*;¸_ÑMÔMÐÝ”g—l’lÐ#4Ð6GÑHÔH€OÝœWŸ^š^¨OÑ<Ô<Ð_ÅÈÑA_ÔA_Ðå Œ7�>Š>Ð0Ñ 1Ô 1ð 1Ø%Ð %ð 1å Ð/Ñ 0Ô 0ð1s‚AAÁ A ÁA Údircó~—tj |¦«}tj |¦«SrG)rr rHÚisdir)rXÚ realpath_dirs rÚ _is_real_dirr\’s+€Ý”7×#Ò# CÑ(Ô(€LÝ Œ7�=Š=˜Ñ &Ô &Ð&r(cóŒ—tj |d¦«}dtj|¦«vot |¦«S)z. Check wp-includes exists and is dir. z wp-includes)rr rOÚlistdirr\)rLÚ wp_includess rÚ_check_wp_includesr`—s;€õ”'—,’,˜x¨Ñ7Ô7€KØ �BœJ xÑ0Ô0Ð 0Ð Nµ\À+Ñ5NÔ5NÐNr(có— tj |¦«sdSn#t$rYdSwxYwt |¦«j d¦«rdS t|¦«ot|¦«S#t$rYnwxYwdS)z‰ Checks whether passed directory is a wordpress directory by checking presence of wp-includes folder and wp-config.php file. Fz .wp-toolkit) rr rPrrÚnameÚ startswithrWr`)rLs rÚ is_wp_pathrdŸs¹€ð ÝŒw�~Š~˜hÑ'Ô'ð Ø�5ð øõ ððð؈uˆuðøøøõ ˆH�~„~Ô×%Ò% mÑ4Ô4ð؈uð Ý# HÑ-Ô-ÐNÕ2DÀXÑ2NÔ2NÐNøÝ ð ð ð Ø ˆð øøøð ˆ5s‚$¤ 2±2ÁA=Á= B  B Údoc_rootÚexcludesc#ó<K—tj |¦«sdSt|¦«rdV—t |¦« ¦«D]C}| ¦«sŒ|rt|¦«|vrŒ+t|¦«r |jV—ŒDdS)zë Returns folder with wordpress Empty string is wp is in docroot dir :param doc_root: root path to start search from :param excludes: list of paths that must be excluded from search, e.g. subdomains Nr<) rr rPrdrÚiterdirÚis_dirÚstrrb)rerfr s rÚ find_wp_pathsrk¶s±èè€õ Œ7�>Š>˜(Ñ #Ô #ð؈å�(ÑÔðØˆˆˆå�X‘”×&Ò&Ñ(Ô(ððˆØ�{Š{‰}Œ}ð Ø à ð �˜D™ œ  XÐ-Ð-Ø å �dÑ Ô ð Ø”)ˆOˆOˆOøððr(cóê—tjd|›d|›d�¦«}t|¦«}|€dSd}| ¦«D]-}t ||¦«\}}| |¦«rdSŒ.dS)z8 Looks for defined php variable with true value z^\s*define\s*\(\s*((\'z\')|(\"z\"))\s*,\s*true\s*\)\s*;NFT)ÚreÚcompiler'Ú splitlinesr@Úmatch)Úvarr ÚrÚcontentr:r9Ú cleaned_lines rÚ_is_php_define_var_foundruÑsš€õ Œ ÐV¨SÐVÐV¸ÐVÐVÐVÑWÔW€Aå˜dÑ#Ô#€G؀؈uØ ÐØ×"Ò"Ñ$Ô$ððˆÝ-:¸4ÐAUÑ-VÔ-VÑ*ˆ Ð*Ø �7Š7�<Ñ Ô ð Ø�4�4ð à ˆ5r(Úwordpress_pathcóŽ—| d¦«}tj |¦«sdSt d|¦«S)z¡ Detects whether plugin is really enabled, cause not all plugins are enabled 'on load' # https://kevdees.com/what-are-wordpress-drop-in-plugins/ rNFÚWP_CACHE)Újoinpathrr rPru)rvÚ wp_configs rÚis_advanced_cache_enabledr{âsB€ð ×'Ò'¨Ñ8Ô8€Iå Œ7�>Š>˜)Ñ $Ô $ð؈uå # J° Ñ :Ô :Ð:r(cóf—t|¦«€!td|¦«rtjjSdS)z· They are advising to check whether WP_ROCKET_ADVANCED_CACHE is defined to ensure plugin is working https://docs.wp-rocket.me/article/134-advanced-cache-error-message NÚWP_ROCKET_ADVANCED_CACHE)Úaccelerate_wp_pluginrur3r7Úvalue)Ú drop_in_paths rÚwp_rocket_pluginr�ðs6€õ ˜LÑ)Ô)Ð1Ý $Ð%?ÀÑ NÔ Nð2åÔ"Ô(Ð(Ø ˆ4r(cóR—t|¦«}|�d|vrtjjSdS)zB Checking if the plugin folder name exists in the drop-in Nz/clsop)r'r3r8r)r€rss rr~r~üs2€õ˜lÑ+Ô+€GØÐ˜x¨7Ð2Ð2ÝÔ&Ô,Ð,Ø ˆ4r(Ú plugin_typecó´—| d¦«}| |›d�¦«}tj |¦«sdS|tjjkrt|¦«sdS| d¦«}t||¦«p=t|¦«p.t|¦«pt|¦«ptj j}|S)a Looking for object-cache.php or advanced-cache.php in wordpress folder If found - tries to find 'plugin-owner' of <-cache>.php by content comparison If cannot be found -> tries to read <-cache>.php headers looking for Plugin name: z wp-contentz.phpNÚplugins)ryrr rPr*r0rr{Ú$get_wp_cache_plugin_by_scanning_dirsÚget_wp_cache_plugin_by_headerr~r�r3r6)rvrƒÚwp_content_dirÚactivated_cacheÚ plugins_dirÚ plugin_names rÚget_wp_cache_pluginrŒsâ€ð$×,Ò,¨\Ñ:Ô:€NØ$×-Ò-°Ð.BÐ.BÐ.BÑCÔC€OÝ Œ7�>Š>˜/Ñ *Ô *ð؈tØ•jÔ/Ô5Ò5Ð5Õ>WÐXfÑ>gÔ>gÐ5؈tØ ×)Ò)¨)Ñ4Ô4€KÝ6°È ÑTÔTð-Ý2°?ÑCÔCð-å)¨/Ñ:Ô:ð-õ& oÑ6Ô6ð-õÔ&Ô,ð ð Ðr(Úactivated_pluginrŠcód—| ¦«sdS| ¦«sdSt|¦«}|€dS| ¦«D][}t j|¦«D]D\}}}|j|vr5t|¦«|jz }t|¦«|kr |jccSŒEŒ\dS)zT Scanning plugins/* dir and looking for similar .php N)Úis_filerir rhrÚwalkrbr)r�rŠÚactivated_plugin_bytesÚpluginÚrootÚdirsÚfilesÚplugin_object_cache_paths rr†r†sâ€ð × #Ò #Ñ %Ô %ð؈tà × Ò Ñ Ô ð؈tå-Ð.>Ñ?Ô?ÐØÐ%؈tØ×%Ò%Ñ'Ô'ð'ð'ˆÝ!#¤¨¡¤ð 'ð 'Ñ ˆD�$˜ØÔ$¨Ð-Ð-Ý+/°©:¬:Ð8HÔ8MÑ+MÐ(Ý#Ð$<Ñ=Ô=ÐAWÒWÐWØ!œ;Ð&Ð&Ð&Ð&Ð&øð  'ð ˆ4r(cóJ—tj |¦«sdSd}tjdtj¦«}t |¦«}|€dS| ¦«d|…D]0}| |¦«}|�|  d¦«cSŒ1dS)zS Looking for Plugin name: in headers Néz-^.*plugin name:\s*(?P[\w ]+)\s*$r‹) rr rPrmrnÚ IGNORECASEr'roÚsearchÚgroup)r�Úmax_top_lines_countrrrsr9rps rr‡r‡2s²€õ Œ7�>Š>Ð*Ñ +Ô +ð؈tðÐÝ Œ ÐCÅRÄ]ÑSÔS€AÝÐ.Ñ/Ô/€G؀؈tØ×"Ò"Ñ$Ô$Ð%9Ð&9Ð%9Ô:ð.ð.ˆØ—’˜‘”ˆØ Ð Ø—;’;˜}Ñ-Ô-Ð -Ð -Ð -ð à ˆ4r(Ú object_cachecó—g} t¦« |¦«}n#tj$rgcYSwxYwtj |dd¦«}tj |¦«sgSt|¦«}|€gS tj |¦«}n#t$rgcYSwxYw|  di¦«  di¦«}|D]%} | |vr||| vr|  | ¦«Œ&|S)z? Filter user`s wp paths with paths with enabled module z.clwposzclwpos_config.jsonNÚdocrootsÚ public_html) r Ú get_homedirÚNoSuchUserExceptionrr rOrPr'ÚjsonÚloadsÚ ExceptionÚgetÚappend) ÚuserÚ user_wp_pathsr’Úpaths_with_enabled_moduleÚhomeÚconfigÚconfr&Ú modules_dataÚwp_paths rÚ get_wp_paths_with_enabled_moduler°Gs>€ð!#Ðð݉wŒw×"Ò" 4Ñ(Ô(ˆˆøÝ Ô $ðððØˆ ˆ ˆ ðøøøõŒW�\Š\˜$  Ð+?Ñ @Ô @€FÝ Œ7�>Š>˜&Ñ !Ô !ðØˆ å ˜6Ñ "Ô "€DØ €|؈ ðÝŒz˜$ÑÔˆˆøÝ ðððØˆ ˆ ˆ ðøøøð—8’8˜J¨Ñ+Ô+×/Ò/° ¸rÑBÔB€LØ ð6ð6ˆØ �lÐ "Ð " v°¸gÔ1FÐ'FÐ'FØ %× ,Ò ,¨WÑ 5Ô 5Ð 5øØ $Ð$s„!&¦:¹:ÂB(Â( B7Â6B7c óð—g}tj d¦«s| d¦«tj d¦«s| d¦«tj d¦«s| d¦«|r_ddi}t ¦«r gd ¢|z}d |d <ngd ¢|z}t j|d d d|¬¦«}tjd|j |j ¦«tj d¦«s:t jddgd d d¬¦«}tjd|j |j ¦«t jgd¢d d d¬¦«}tjd|j |j ¦«td¦«}|rRt jddd|  dd¦«gd d d¬¦«}tjd|j |j ¦«dSdS)Nú/usr/bin/cloudlinux-awp-adminz accelerate-wpz /usr/sbin/cloudlinux-ssa-managerz alt-php-ssaz/usr/sbin/cloudlinux-xray-agentz alt-php-xrayÚPATHz/usr/sbin:/usr/bin:/sbin:/bin)z/usr/bin/apt-getú-yÚinstallÚnoninteractiveÚDEBIAN_FRONTEND)z /usr/bin/yumrµr´TF)Úcapture_outputÚtextÚcheckÚenvz:Installing AccelerateWP packages captured out: %s, err: %sz/usr/share/clos_ssa/ssa_enabledz enable-ssa)r¸r¹rºz(Activation SSA captured out: %s, err: %s)z /usr/sbin/cloudlinux-autotracingÚenablez--allz0Activation autotracing captured out: %s, err: %sÚ system_idz!/usr/sbin/cloudlinux-xray-managerzenable-user-agentz --system_idzID-r<z1Activation xray manager captured out: %s, err: %s) rr rPr§r Ú subprocessÚrunÚloggingÚdebugÚstdoutÚstderrr Úreplace)Úpackagesr»Úinstall_commandÚprocr½s rÚinstall_accelerate_wprÈes.€Ø€Hå Œ7�>Š>Ð9Ñ :Ô :ð)Ø�Š˜Ñ(Ô(Ð(Ý Œ7�>Š>Ð<Ñ =Ô =ð'Ø�Š˜ Ñ&Ô&Ð&Ý Œ7�>Š>Ð;Ñ <Ô <ð(Ø�Š˜Ñ'Ô'Ð'àð nðÐ6Ð7ˆÝ ‰;Œ;ð KØCÐCÐCÀhÑNˆOØ%5ˆCÐ!Ñ "Ð "à?Ð?Ð?À(ÑJˆOÝŒ~˜o¸dÈÐUZÐ`cÐdÑdÔdˆÝŒ ÐRÐTXÔT_ÐaeÔalÑmÔmÐmå Œ7�>Š>Ð;Ñ <Ô <ð\ÝŒ~ÐAÀ<ÐPØ-1¸ÀEðKñKôKˆåŒ Ð@À$Ä+ÈtÌ{Ñ[Ô[Ð[Ý Œ>Ø?Ð?Ð?ØØ Øð  ñ ô €Dõ  „MÐDÀdÄkÐSWÔS^Ñ_Ô_Ð_å& {Ñ3Ô3€IØðeÝŒ~Ø 0Ð2EÀ}ÐV_×VgÒVgÐhmÐoqÑVrÔVrÐ sØØØð  ñ ô ˆõ Œ ÐIÈ4Ì;ÐX\ÔXcÑdÔdÐdÐdÐdðeðer(FÚasync_set_suiteÚsourcecóÄ—t¦«tj d¦«rdStj t¦«r„t tdd¬¦«5}t j|¦«}ddd¦«n #1swxYwY| di¦« d¦«durtj d ¦«dSgd ¢}|d kr|  d d g¦«|r-tj |tjtj¬ ¦«dStj|ddd¬¦«}tj d|j|j¦«dS)zh 1. Installs needed packages 2. Enables autotracing 3. Allows AccelerateWP Free for all z8/var/clwpos/admin/allowed_for_all_site_optimization.flagNrrr")ÚencodingÚfeatures_overrideÚ accelerate_wpFzWActivation AccelerateWP Free skipped: Vendor UI skip the enabling of Accelerate WP Free)r²ú set-suiteú--allowed-for-allú--suitesrÎÚBILLING_OVERRIDEú--source)rÂrÃT©rºr¸r¹z6Activation AccelerateWP Free captured out: %s, err: %s)rÈrr rPÚVENDOR_UI_CONFIG_PATHrr£Úloadr¦rÀrÁÚextendr¾ÚPopenÚPIPEr¿rÂrÃ)rÉrÊÚfÚvendor_config_contentÚcommandrÇs rÚconfigure_accelerate_wprÝ“s¬€õ ÑÔÐå „w‡~‚~ÐPÑQÔQðØˆå „w‡~‚~Õ+Ñ,Ô,ðÝ Õ'¨°wÐ ?Ñ ?Ô ?ð 1À1Ý$(¤I¨a¡L¤LÐ !ð 1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð !× $Ò $Ð%8¸"Ñ =Ô =× AÒ AÀ/Ñ RÔ RÐV[Ð [Ð [Ý ŒMÐsÑ tÔ tÐ tØ ˆFð ð ð €Gð Ð#Ò#Ð#Ø�Š˜ Ð$6Ð7Ñ8Ô8Ð8ððjÝÔØ Ý”?Ý”?ð ñ ô ð ð ð õ Œ~˜g¨TÀ$ÈTÐRÑRÔRˆÝŒ ÐNÐPTÔP[Ð]aÔ]hÑiÔiÐiÐiÐisÁ+B  BÂBcó—t¦«tj d¦«rdSgd¢}|dkr| gd¢¦«t j|ddd¬¦«}tjd|j |j ¦«dS)Nz3/var/clwpos/admin/allowed_for_all_object_cache.flag)r²rÏú--visible-for-allrÑÚaccelerate_wp_premiumrÒ©rÓrÒz--preserve-user-settingsTrÔz9Activation AccelerateWP Premium captured out: %s, err: %s© rÈrr rPr×r¾r¿rÀrÁrÂrÃ)rÊrÜrÇs rÚconfigure_accelerate_wp_premiumrã»s�€ÝÑÔÐå „w‡~‚~ÐKÑLÔLð؈ð(ð(ð(€GðÐ#Ò#Ð#Ø�ŠÐSÐSÐSÑTÔTÐTõ Œ>˜'¨¸dÈÐ NÑ NÔ N€DÝ „MÐMÈtÌ{Ð\`Ô\gÑhÔhÐhÐhÐhr(cóÈ—t¦«tj d¦«rdSgd¢}|dkr| ddg¦«t j|ddd¬¦«}tjd|j |j ¦«gd¢}|dkr| gd ¢¦«t j|ddd¬¦«}tjd |j |j ¦«dS) Nz*/var/clwpos/admin/allowed_for_all_cdn.flag)r²rÏrÐrÑÚaccelerate_wp_cdnrÒrÓTrÔz5Activation AccelerateWP CDN captured out: %s, err: %s)r²rÏrßrÑÚaccelerate_wp_cdn_proráz9Activation AccelerateWP CDN PRO captured out: %s, err: %srâ)rÊÚ command_cdnrÇÚcommand_cdn_pros rÚconfigure_accelerate_wp_cdnréÑs €ÝÑÔÐå „w‡~‚~ÐBÑCÔCð؈ð(ð(ð(€KðÐ#Ò#Ð#Ø×Ò˜JÐ(:Ð;Ñ<Ô<Ð<å Œ>˜+¨TÀ$ÈTÐ RÑ RÔ R€DÝ „MÐIÈ4Ì;ÐX\ÔXcÑdÔdÐdð0ð0ð0€OðÐ#Ò#Ð#Ø×ÒÐ[Ð[Ð[Ñ\Ô\Ð\å Œ>˜/°ÀdÐQUÐ VÑ VÔ V€DÝ „MÐMÈtÌ{Ð\`Ô\gÑhÔhÐhÐhÐhr(có&—|sdStjddgddd¬¦«j}tj|¦«}|| d¦«krdStjddd|dd gddd¬¦«}t jd |j|j¦«dS) Nr²z get-optionsTrÔÚ upgrade_urlz set-optionsz --upgrade-urlz--suiteràzBSetting AccelerateWP Premium upgrade url captured out: %s, err: %s) r¾r¿rÂr£r¤r¦rÀrÁrÃ)rëÚ options_jsonÚoptionsrÇs rÚconfigure_upgrade_urlrîõsÑ€Ø ð؈å”>Ð#BÀMÐ"RØ#'Ø,0Ø"&ð(ñ(ô(ô)/ðõŒj˜Ñ&Ô&€Gð�g—k’k -Ñ0Ô0Ò0Ð0Øˆå Œ>Ð:Ø(Ø*Ø&Ø$Ø2ð 4ð !%Ø)-Ø#ð %ñ %ô %€Dõ „MÐVØ”+˜tœ{ñ,ô,ð,ð,ð,r(cóþ—tj d¦«p^tj d¦«p?tj d¦«p tj d¦«pdS)zÿ Locale could be set via those envvars, let`s get them in same priority gettext does for envar in ('LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG'): LANGUAGE = (unset), LC_ALL = (unset), LC_MESSAGES = "UTF-8", LANG = "uk_UA.UTF-8" ÚLANGUAGEÚLC_ALLÚ LC_MESSAGESÚLANGÚen_US)rÚenvironr¦r1r(rÚget_locale_from_envarsrösh€õ ŒJ�NŠN˜:Ñ &Ô &ð ÝŒz�~Š~˜hÑ'Ô'ð åŒz�~Š~˜mÑ,Ô,ð õŒz�~Š~˜fÑ%Ô%ð ðð r(rG)r�)FN)3r£rmrrr¾rÀÚpathlibrÚtypingrrrrrÚenumr Úclcommon.clpwdr Úclcommon.utilsr r rÕrrjÚbytesr r'r*r3Úboolr@rKrWr\r`rdrkrur{r�r~rŒr†r‡r°rÈrÝrãrérîrör1r(rúrþs@ðð € € € Ø € € € Ø € € € Ø € € € ØÐÐÐØ€€€ØÐÐÐÐÐØ9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ØÐÐÐÐÐà Ð Ð Ð Ð Ð Ø<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ðKÐð !Ðð˜5  d Ô+ð°¸´ððððð, 1˜%  T  Ô*ð 1¨x¸¬}ð 1ð 1ð 1ð 1ð&ð&ð&ð&ð&�ñ&ô&ð&ð#ð#ð#ð#ð#�ñ#ô#ð#ð˜ð°4ð¸EÀ#ÀtÀ)ÔðÈ(ÐSVÌ-ððððð6ððð" ;¨dð ;ð ;ð ;ð ;ð ð ð ðððð¨ð¸3ððððð.¸4ðÈdðÐW_Ð`cÔWdððððð,°Dð¸XÀc¼]ððððð*%ð%ð%ð%ð<+eð+eð+eð\%jð%j¨Tð%jÀ3ð%jð%jð%jð%jðPiði¨Cðiðiðiðið,!ið!i¨ð!ið!ið!ið!iðH,ð,ð,ð6 ð ð ð ð r(