ÿØÿà JFIF    ÿÛ „  ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----ÿÀ  ß â" ÿÄ     ÿÄ H    !1AQaq"‘¡2B±ÁÑð#R“Ò Tbr‚²á3csƒ’ÂñDS¢³$CÿÄ   ÿÄ %  !1AQa"23‘ÿÚ   ? ôÿ ¨pŸªáÿ —åYõõ\?àÒü©ŠÄï¨pŸªáÿ —åYõõ\?àÓü©ŠÄá 0Ÿªáÿ Ÿå[úƒ ú®ði~TÁbqÐ8OÕpÿ ƒOò¤Oè`–RÂáœá™êi€ßÉ< FtŸI“öÌ8úDf´°å}“¾œ6  öFá°y¥jñÇh†ˆ¢ã/ÃÐ:ªcÈ "Y¡ðÑl>ÿ ”ÏËte:qž\oäŠe÷󲍷˜HT4&ÿ ÓÐü6ö®¿øþßèô Ÿ•7Ñi’•j|“ñì>b…þS?*Óôÿ ÓÐü*h¥£ír¶ü UãS炟[AÐaè[ûª•õ&õj?†Éö+EzP—WeÒírJFt ‘BŒ†Ï‡%#tE Øz ¥OÛ«!1›üä±Í™%ºÍãö]°î(–:@<‹ŒÊö×òÆt¦ãº+‡¦%ÌÁ²h´OƒJŒtMÜ>ÀÜÊw3Y´•牋4ǍýʏTì>œú=Íwhyë,¾Ôò×õ¿ßÊa»«þˆѪQ|%6ž™A õ%:øj<>É—ÿ Å_ˆCbõ¥š±ý¯Ýƒï…¶|RëócÍf溪“t.СøTÿ *Ä¿-{†çàczůŽ_–^XþŒ±miB[X±d 1,é”zEù»& î9gœf™9Ð'.;—™i}!ôšåîqêÛ٤ёý£½ÆA–àôe"A$˝Úsäÿ ÷Û #°xŸëí(l »ý3—¥5m! rt`†0~'j2(]S¦¦kv,ÚÇ l¦øJA£Šƒ J3E8ÙiŽ:cÉžúeZ°€¯\®kÖ(79«Ž:¯X”¾³Š&¡* ….‰Ž(ÜíŸ2¥ª‡×Hi²TF¤ò[¨íÈRëÉ䢍mgÑ.Ÿ<öäS0í„ǹÁU´f#Vß;Õ–…P@3ío<ä-±»Ž.L|kªÀê›fÂ6@»eu‚|ÓaÞÆŸ…¨ááå>åŠ?cKü6ùTÍÆ”†sĤÚ;H2RÚ†õ\Ö·Ÿn'¾ ñ#ºI¤Å´%çÁ­‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"i¸vdÄ÷.iõ®§)¿]¤À†–‡É&ä{V¶iŽ”.Ó×Õÿ û?h¬Mt–íª[ÿ Ñÿ ÌV(í}=ibÔ¡›¥¢±b Lô¥‡piη_Z<‡z§èŒ)iÖwiÇ 2hÙ3·=’d÷8éŽ1¦¸c¤µ€7›7Ø ð\á)} ¹fËí›pAÃL%âc2 í§æQz¿;T8sæ°qø)QFMð‰XŒÂ±N¢aF¨…8¯!U  Z©RÊ ÖPVÄÀÍin™Ì-GˆªÅËŠ›•zË}º±ŽÍFò¹}Uw×#ä5B¤{î}Ð<ÙD é©¤&‡ïDbàÁôMÁ. '1&b=2&c=3' ) and array( 0 => '=1' ), which is useless * * @param array $params Array of old shortcode parameters. * @param bool $old_format_support true if [shortcode=foo] format is possible. * * @return string $params */ function shortcode_new_to_old_params( $params, $old_format_support = false ) { $str = ''; if ( $old_format_support && isset( $params[0] ) ) { $str = ltrim( $params[0], '=' ); } elseif ( is_array( $params ) ) { foreach ( array_keys( $params ) as $key ) { if ( ! is_numeric( $key ) ) { $str = $key . '=' . $params[ $key ]; } } } return str_replace( array( '&', '&' ), '&', $str ); } /** * Load all available Jetpack shortcode files. */ function jetpack_load_shortcodes() { // Prevent third-party shortcode plugins when loading shortcode files. // Format: shortcode => condition_when_to_skip $shortcode_skips = array( 'soundcloud' => function_exists( 'soundcloud_shortcode' ), // SoundCloud Shortcodes plugin ); $shortcode_includes = array(); foreach ( Jetpack::glob_php( __DIR__ . '/shortcodes' ) as $file ) { $filename = substr( basename( $file ), 0, -4 ); if ( empty( $shortcode_skips[ $filename ] ) ) { $shortcode_includes[ $filename ] = $file; } } /** * This filter allows other plugins to override which shortcodes Jetpack loads. * * Fires as part of the `after_setup_theme` WP hook, so modifying code needs to be in a plugin, not in a theme's functions.php. * * @module shortcodes * * @since 2.2.1 * @since 4.2.0 Added filename without extension as array key. * * @param array $shortcode_includes An array of which shortcodes to include. */ $shortcode_includes = apply_filters( 'jetpack_shortcodes_to_include', $shortcode_includes ); foreach ( $shortcode_includes as $include ) { include_once $include; } } /** * Runs preg_replace so that replacements don't happen within open tags. * Parameters are the same as preg_replace, with an added optional search param for improved performance * * @param string $pattern Pattern to search for. * @param string $replacement String to replace. * @param string $content Post content. * @param string $search String to search for. * * @return string $content Replaced post content. */ function jetpack_preg_replace_outside_tags( $pattern, $replacement, $content, $search = null ) { if ( $search && ! str_contains( $content, $search ) ) { return $content; } $textarr = wp_html_split( $content ); unset( $content ); foreach ( $textarr as &$element ) { if ( '' === $element || '<' === $element[0] ) { continue; } $element = preg_replace( $pattern, $replacement, $element ); } return implode( $textarr ); } /** * Runs preg_replace_callback so that replacements don't happen within open tags. * Parameters are the same as preg_replace, with an added optional search param for improved performance. * * @param string $pattern Pattern to search for. * @param string $callback Callback returning the replacement string. * @param string $content Post content. * @param string $search String to search for. * * @return string $content Replaced post content. */ function jetpack_preg_replace_callback_outside_tags( $pattern, $callback, $content, $search = null ) { if ( $search && ! str_contains( $content, $search ) ) { return $content; } $textarr = wp_html_split( $content ); unset( $content ); foreach ( $textarr as &$element ) { if ( '' === $element || '<' === $element[0] ) { continue; } $element = preg_replace_callback( $pattern, $callback, $element ); } return implode( $textarr ); } if ( ! function_exists( 'jetpack_shortcode_get_wpvideo_id' ) ) { /** * Get VideoPress ID from wpvideo shortcode attributes. * * @param array $atts Shortcode attributes. * * @return string|int $id VideoPress ID. */ function jetpack_shortcode_get_wpvideo_id( $atts ) { if ( isset( $atts[0] ) ) { return $atts[0]; } else { return 0; } } } if ( ! function_exists( 'jetpack_shortcode_get_videopress_id' ) ) { /** * Get VideoPress ID from videopress shortcode attributes. * * @param array $atts Shortcode attributes. * @return int $id VideoPress ID. */ function jetpack_shortcode_get_videopress_id( $atts ) { if ( isset( $atts[0] ) ) { return $atts[0]; } else { return 0; } } } /** * Common element attributes parsing and sanitizing for src, width and height. * * @since 4.5.0 * * @param array $attrs With original values. * * @return array $attrs With sanitized values. */ function wpcom_shortcodereverse_parseattr( $attrs ) { $defaults = array( 'src' => false, 'width' => false, 'height' => false, ); $attrs = shortcode_atts( $defaults, $attrs ); $attrs['src'] = wp_strip_all_tags( $attrs['src'] ); // For sanity. $attrs['width'] = ( is_numeric( $attrs['width'] ) ) ? abs( (int) $attrs['width'] ) : $defaults['width']; $attrs['height'] = ( is_numeric( $attrs['height'] ) ) ? abs( (int) $attrs['height'] ) : $defaults['height']; return $attrs; } /** * When an embed service goes away, we can use this handler * to output a link for history's sake. * * @param array $matches Regex partial matches against the URL passed. * @param array $attr Attributes received in embed response. * @param string $url Requested URL to be embedded. * @return string Link to output. */ function jetpack_deprecated_embed_handler( $matches, $attr, $url ) { return sprintf( '%s', esc_url( $url ), esc_html( esc_url( $url ) ) ); } jetpack_load_shortcodes();