���� 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*!robots/user-agent.php000066600000003226151733625770010666 0ustar00user_agent = $user_agent; $this->allow_directive = new Directive(); $this->disallow_directive = new Directive(); } /** * Gets the user agent identifier. * * @return string */ public function get_user_agent() { return $this->user_agent; } /** * Adds a path to the directive object. * * @param string $path The path to add to the disallow directive. * * @return void */ public function add_disallow_directive( $path ) { $this->disallow_directive->add_path( $path ); } /** * Adds a path to the directive object. * * @param string $path The path to add to the allow directive. * * @return void */ public function add_allow_directive( $path ) { $this->allow_directive->add_path( $path ); } /** * Gets all disallow paths for this user agent. * * @return array */ public function get_disallow_paths() { return $this->disallow_directive->get_paths(); } /** * Gets all sallow paths for this user agent. * * @return array */ public function get_allow_paths() { return $this->allow_directive->get_paths(); } } robots/directive.php000066600000001225151733625770010567 0ustar00paths = []; } /** * Adds a path to the directive path list. * * @param string $path A path to add in the path list. * * @return void */ public function add_path( $path ) { if ( ! \in_array( $path, $this->paths, true ) ) { $this->paths[] = $path; } } /** * Returns all paths. * * @return array */ public function get_paths() { return $this->paths; } } robots/user-agent-list.php000066600000003410151733625770011632 0ustar00user_agent_list = []; } /** * Checks if given user_agent is already registered. * * @param string $user_agent The user agent identifier. * * @return bool */ public function has_user_agent( $user_agent ) { return \array_key_exists( $user_agent, $this->user_agent_list ); } /** * Gets the user agent object. If it is not yet registered it creates it. * * @param string $user_agent The user agent identifier. * * @return User_Agent */ public function get_user_agent( $user_agent ) { if ( $this->has_user_agent( $user_agent ) ) { return $this->user_agent_list[ $user_agent ]; } $this->user_agent_list[ $user_agent ] = new User_Agent( $user_agent ); return $this->user_agent_list[ $user_agent ]; } /** * Gets the list of user agents. * * @return array */ public function get_user_agents() { return $this->user_agent_list; } /** * Gets a list of all disallow directives by user agent. * * @return array */ public function get_disallow_directives() { $directives = []; foreach ( $this->user_agent_list as $user_agent ) { $directives[ $user_agent->get_user_agent() ] = $user_agent->get_disallow_paths(); } return $directives; } /** * Gets a list of all sallow directives by user agent. * * @return array */ public function get_allow_directives() { $directives = []; foreach ( $this->user_agent_list as $user_agent ) { $directives[ $user_agent->get_user_agent() ] = $user_agent->get_allow_paths(); } return $directives; } } open-graph/images.php000066600000002232151733625770010605 0ustar00open_graph_image = $open_graph_image; } /** * Outputs the images. * * @codeCoverageIgnore - The method is empty, nothing to test. * * @return void */ public function show() {} /** * Adds an image to the list by image ID. * * @param int $image_id The image ID to add. * * @return void */ public function add_image_by_id( $image_id ) { $attachment = $this->open_graph_image->get_image_by_id( $image_id ); if ( $attachment ) { $this->add_image( $attachment ); } } } twitter/images.php000066600000001720151733625770010250 0ustar00twitter_image = $twitter_image; } /** * Adds an image to the list by image ID. * * @param int $image_id The image ID to add. * * @return void */ public function add_image_by_id( $image_id ) { $attachment = $this->twitter_image->get_by_id( $image_id ); if ( $attachment ) { $this->add_image( $attachment ); } } } oauth/oauth-token.php000066600000006220151733625770010657 0ustar00access_token = $access_token; if ( empty( $refresh_token ) ) { throw new Empty_Property_Exception( 'refresh_token' ); } $this->refresh_token = $refresh_token; if ( empty( $expires ) ) { throw new Empty_Property_Exception( 'expires' ); } $this->expires = $expires; if ( $has_expired === null ) { throw new Empty_Property_Exception( 'has_expired' ); } $this->has_expired = $has_expired; $this->created_at = $created_at; $this->error_count = $error_count; } /** * Creates a new instance based on the passed response. * * @param AccessTokenInterface $response The response object to create a new instance from. * * @return OAuth_Token The token object. * * @throws Empty_Property_Exception Exception thrown if a token property is empty. */ public static function from_response( AccessTokenInterface $response ) { return new self( $response->getToken(), $response->getRefreshToken(), $response->getExpires(), $response->hasExpired(), \time() ); } /** * Determines whether or not the token has expired. * * @return bool Whether or not the token has expired. */ public function has_expired() { return ( \time() >= $this->expires ) || $this->has_expired === true; } /** * Converts the object to an array. * * @return array The converted object. */ public function to_array() { return [ 'access_token' => $this->access_token, 'refresh_token' => $this->refresh_token, 'expires' => $this->expires, 'has_expired' => $this->has_expired(), 'created_at' => $this->created_at, 'error_count' => $this->error_count, ]; } } meta.php000066600000027632151735215440006230 0ustar00 Key is the property name. */ private $properties_bin = []; /** * Create a meta value object. * * @param Meta_Tags_Context $context The indexable presentation. * @param ContainerInterface $container The DI container. */ public function __construct( Meta_Tags_Context $context, ContainerInterface $container ) { $this->container = $container; $this->context = $context; $this->helpers = $this->container->get( Helpers_Surface::class ); $this->replace_vars = $this->container->get( WPSEO_Replace_Vars::class ); $this->front_end = $this->container->get( Front_End_Integration::class ); } /** * Returns the output as would be presented in the head. * * @return object The HTML and JSON presentation of the head metadata. */ public function get_head() { $presenters = $this->get_presenters(); /** This filter is documented in src/integrations/front-end-integration.php */ $presentation = \apply_filters( 'wpseo_frontend_presentation', $this->context->presentation, $this->context ); $html_output = ''; $json_head_fields = []; foreach ( $presenters as $presenter ) { $presenter->presentation = $presentation; $presenter->replace_vars = $this->replace_vars; $presenter->helpers = $this->helpers; $html_output .= $this->create_html_presentation( $presenter ); $json_field = $this->create_json_field( $presenter ); // Only use the output of presenters that could successfully present their data. if ( $json_field !== null && ! empty( $json_field->key ) ) { $json_head_fields[ $json_field->key ] = $json_field->value; } } $html_output = \trim( $html_output ); return (object) [ 'html' => $html_output, 'json' => $json_head_fields, ]; } /** * Magic getter for presenting values through the appropriate presenter, if it exists. * * @param string $name The property to get. * * @return mixed The value, as presented by the appropriate presenter. */ public function __get( $name ) { if ( \array_key_exists( $name, $this->properties_bin ) ) { return $this->properties_bin[ $name ]; } /** This filter is documented in src/integrations/front-end-integration.php */ $presentation = \apply_filters( 'wpseo_frontend_presentation', $this->context->presentation, $this->context ); if ( ! isset( $presentation->{$name} ) ) { if ( isset( $this->context->{$name} ) ) { $this->properties_bin[ $name ] = $this->context->{$name}; return $this->properties_bin[ $name ]; } return null; } $presenter_namespace = 'Yoast\WP\SEO\Presenters\\'; $parts = \explode( '_', $name ); if ( $parts[0] === 'twitter' ) { $presenter_namespace .= 'Twitter\\'; $parts = \array_slice( $parts, 1 ); } elseif ( $parts[0] === 'open' && $parts[1] === 'graph' ) { $presenter_namespace .= 'Open_Graph\\'; $parts = \array_slice( $parts, 2 ); } $presenter_class = $presenter_namespace . \implode( '_', \array_map( 'ucfirst', $parts ) ) . '_Presenter'; if ( \class_exists( $presenter_class ) ) { /** * The indexable presenter. * * @var Abstract_Indexable_Presenter $presenter */ $presenter = new $presenter_class(); $presenter->presentation = $presentation; $presenter->helpers = $this->helpers; $presenter->replace_vars = $this->replace_vars; $value = $presenter->get(); } else { $value = $presentation->{$name}; } $this->properties_bin[ $name ] = $value; return $this->properties_bin[ $name ]; } /** * Magic isset for ensuring properties on the presentation are recognised. * * @param string $name The property to get. * * @return bool Whether or not the requested property exists. */ public function __isset( $name ) { if ( \array_key_exists( $name, $this->properties_bin ) ) { return true; } return isset( $this->context->presentation->{$name} ); } /** * Prevents setting dynamic properties and overwriting the value of declared properties * from an inaccessible context. * * @param string $name The property name. * @param mixed $value The property value. * * @return void * * @throws Forbidden_Property_Mutation_Exception Set is never meant to be called. */ public function __set( $name, $value ) { // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed -- __set must have a name and value - PHPCS #3715. throw Forbidden_Property_Mutation_Exception::cannot_set_because_property_is_immutable( $name ); } /** * Prevents unsetting dynamic properties and unsetting declared properties * from an inaccessible context. * * @param string $name The property name. * * @return void * * @throws Forbidden_Property_Mutation_Exception Unset is never meant to be called. */ public function __unset( $name ) { throw Forbidden_Property_Mutation_Exception::cannot_unset_because_property_is_immutable( $name ); } /** * Strips all nested dependencies from the debug info. * * @return array */ public function __debugInfo() { return [ 'context' => $this->context ]; } /** * Returns all presenters. * * @return Abstract_Indexable_Presenter[] */ protected function get_presenters() { $presenters = $this->front_end->get_presenters( $this->context->page_type, $this->context ); if ( $this->context->page_type === 'Date_Archive' ) { /** * Define a filter that removes objects of type Rel_Next_Presenter or Rel_Prev_Presenter from a list. * * @param object $presenter The presenter to verify. * * @return bool True if the presenter is not a Rel_Next or Rel_Prev presenter. */ $callback = static function ( $presenter ) { return ! \is_a( $presenter, Rel_Next_Presenter::class ) && ! \is_a( $presenter, Rel_Prev_Presenter::class ); }; $presenters = \array_filter( $presenters, $callback ); } return $presenters; } /** * Uses the presenter to create a line of HTML. * * @param Abstract_Indexable_Presenter $presenter The presenter. * * @return string */ protected function create_html_presentation( $presenter ) { $presenter_output = $presenter->present(); if ( ! empty( $presenter_output ) ) { return $presenter_output . \PHP_EOL; } return ''; } /** * Converts a presenter's key and value to JSON. * * @param Abstract_Indexable_Presenter $presenter The presenter whose key and value are to be converted to JSON. * * @return object|null */ protected function create_json_field( $presenter ) { if ( $presenter->get_key() === 'NO KEY PROVIDED' ) { return null; } $value = $presenter->get(); if ( empty( $value ) ) { return null; } return (object) [ 'key' => $presenter->escape_key(), 'value' => $value, ]; } }