set_parentage( $parent_file ); ?>
render_screen_meta(); if ( is_network_admin() ) { /** * Prints network admin screen notices. * * @since 3.1.0 */ do_action( 'network_admin_notices' ); } elseif ( is_user_admin() ) { /** * Prints user admin screen notices. * * @since 3.1.0 */ do_action( 'user_admin_notices' ); } else { /** * Prints admin screen notices. * * @since 3.1.0 */ do_action( 'admin_notices' ); } /** * Prints generic admin screen notices. * * @since 3.1.0 */ do_action( 'all_admin_notices' ); if ( 'options-general.php' === $parent_file ) { require ABSPATH . 'wp-admin/options-head.php'; } PK!7J::edit-form-blocks.phpnu[is_block_editor( true ); /* * Emoji replacement is disabled for now, until it plays nicely with React. */ remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); /* * Block editor implements its own Options menu for toggling Document Panels. */ add_filter( 'screen_options_show_screen', '__return_false' ); wp_enqueue_script( 'heartbeat' ); wp_enqueue_script( 'wp-edit-post' ); wp_enqueue_script( 'wp-format-library' ); $rest_base = ! empty( $post_type_object->rest_base ) ? $post_type_object->rest_base : $post_type_object->name; // Preload common data. $preload_paths = array( '/', '/wp/v2/types?context=edit', '/wp/v2/taxonomies?per_page=-1&context=edit', '/wp/v2/themes?status=active', sprintf( '/wp/v2/%s/%s?context=edit', $rest_base, $post->ID ), sprintf( '/wp/v2/types/%s?context=edit', $post_type ), sprintf( '/wp/v2/users/me?post_type=%s&context=edit', $post_type ), array( '/wp/v2/media', 'OPTIONS' ), array( '/wp/v2/blocks', 'OPTIONS' ), sprintf( '/wp/v2/%s/%d/autosaves?context=edit', $rest_base, $post->ID ), ); /** * Preload common data by specifying an array of REST API paths that will be preloaded. * * Filters the array of paths that will be preloaded. * * @since 5.0.0 * * @param string[] $preload_paths Array of paths to preload. * @param WP_Post $post Post being edited. */ $preload_paths = apply_filters( 'block_editor_preload_paths', $preload_paths, $post ); /* * Ensure the global $post remains the same after API data is preloaded. * Because API preloading can call the_content and other filters, plugins * can unexpectedly modify $post. */ $backup_global_post = clone $post; $preload_data = array_reduce( $preload_paths, 'rest_preload_api_request', array() ); // Restore the global $post as it was before API preloading. $post = $backup_global_post; wp_add_inline_script( 'wp-api-fetch', sprintf( 'wp.apiFetch.use( wp.apiFetch.createPreloadingMiddleware( %s ) );', wp_json_encode( $preload_data ) ), 'after' ); wp_add_inline_script( 'wp-blocks', sprintf( 'wp.blocks.setCategories( %s );', wp_json_encode( get_block_categories( $post ) ) ), 'after' ); /* * Assign initial edits, if applicable. These are not initially assigned to the persisted post, * but should be included in its save payload. */ $initial_edits = null; $is_new_post = false; if ( 'auto-draft' === $post->post_status ) { $is_new_post = true; // Override "(Auto Draft)" new post default title with empty string, or filtered value. $initial_edits = array( 'title' => $post->post_title, 'content' => $post->post_content, 'excerpt' => $post->post_excerpt, ); } // Preload server-registered block schemas. wp_add_inline_script( 'wp-blocks', 'wp.blocks.unstable__bootstrapServerSideBlockDefinitions(' . wp_json_encode( get_block_editor_server_block_settings() ) . ');' ); // Get admin url for handling meta boxes. $meta_box_url = admin_url( 'post.php' ); $meta_box_url = add_query_arg( array( 'post' => $post->ID, 'action' => 'edit', 'meta-box-loader' => true, 'meta-box-loader-nonce' => wp_create_nonce( 'meta-box-loader' ), ), $meta_box_url ); wp_add_inline_script( 'wp-editor', sprintf( 'var _wpMetaBoxUrl = %s;', wp_json_encode( $meta_box_url ) ), 'before' ); /* * Initialize the editor. */ $align_wide = get_theme_support( 'align-wide' ); $color_palette = current( (array) get_theme_support( 'editor-color-palette' ) ); $font_sizes = current( (array) get_theme_support( 'editor-font-sizes' ) ); $gradient_presets = current( (array) get_theme_support( 'editor-gradient-presets' ) ); $custom_line_height = get_theme_support( 'custom-line-height' ); $custom_units = get_theme_support( 'custom-units' ); /** * Filters the allowed block types for the editor, defaulting to true (all * block types supported). * * @since 5.0.0 * * @param bool|array $allowed_block_types Array of block type slugs, or * boolean to enable/disable all. * @param WP_Post $post The post resource data. */ $allowed_block_types = apply_filters( 'allowed_block_types', true, $post ); /* * Get all available templates for the post/page attributes meta-box. * The "Default template" array element should only be added if the array is * not empty so we do not trigger the template select element without any options * besides the default value. */ $available_templates = wp_get_theme()->get_page_templates( get_post( $post->ID ) ); $available_templates = ! empty( $available_templates ) ? array_merge( array( /** This filter is documented in wp-admin/includes/meta-boxes.php */ '' => apply_filters( 'default_page_template_title', __( 'Default template' ), 'rest-api' ), ), $available_templates ) : $available_templates; // Media settings. $max_upload_size = wp_max_upload_size(); if ( ! $max_upload_size ) { $max_upload_size = 0; } // Editor Styles. $styles = array( array( 'css' => file_get_contents( ABSPATH . WPINC . '/css/dist/editor/editor-styles.css' ), ), ); /* translators: Use this to specify the CSS font family for the default font. */ $locale_font_family = esc_html_x( 'Noto Serif', 'CSS Font Family for Editor Font' ); $styles[] = array( 'css' => "body { font-family: '$locale_font_family' }", ); if ( $editor_styles && current_theme_supports( 'editor-styles' ) ) { foreach ( $editor_styles as $style ) { if ( preg_match( '~^(https?:)?//~', $style ) ) { $response = wp_remote_get( $style ); if ( ! is_wp_error( $response ) ) { $styles[] = array( 'css' => wp_remote_retrieve_body( $response ), ); } } else { $file = get_theme_file_path( $style ); if ( is_file( $file ) ) { $styles[] = array( 'css' => file_get_contents( $file ), 'baseURL' => get_theme_file_uri( $style ), ); } } } } // Image sizes. /** This filter is documented in wp-admin/includes/media.php */ $image_size_names = apply_filters( 'image_size_names_choose', array( 'thumbnail' => __( 'Thumbnail' ), 'medium' => __( 'Medium' ), 'large' => __( 'Large' ), 'full' => __( 'Full Size' ), ) ); $available_image_sizes = array(); foreach ( $image_size_names as $image_size_slug => $image_size_name ) { $available_image_sizes[] = array( 'slug' => $image_size_slug, 'name' => $image_size_name, ); } $image_dimensions = array(); $all_sizes = wp_get_registered_image_subsizes(); foreach ( $available_image_sizes as $size ) { $key = $size['slug']; if ( isset( $all_sizes[ $key ] ) ) { $image_dimensions[ $key ] = $all_sizes[ $key ]; } } // Lock settings. $user_id = wp_check_post_lock( $post->ID ); if ( $user_id ) { $locked = false; /** This filter is documented in wp-admin/includes/post.php */ if ( apply_filters( 'show_post_locked_dialog', true, $post, $user_id ) ) { $locked = true; } $user_details = null; if ( $locked ) { $user = get_userdata( $user_id ); $user_details = array( 'name' => $user->display_name, ); $avatar = get_avatar_url( $user_id, array( 'size' => 64 ) ); } $lock_details = array( 'isLocked' => $locked, 'user' => $user_details, ); } else { // Lock the post. $active_post_lock = wp_set_post_lock( $post->ID ); if ( $active_post_lock ) { $active_post_lock = esc_attr( implode( ':', $active_post_lock ) ); } $lock_details = array( 'isLocked' => false, 'activePostLock' => $active_post_lock, ); } /** * Filters the body placeholder text. * * @since 5.0.0 * * @param string $text Placeholder text. Default 'Start writing or type / to choose a block'. * @param WP_Post $post Post object. */ $body_placeholder = apply_filters( 'write_your_story', __( 'Start writing or type / to choose a block' ), $post ); $editor_settings = array( 'alignWide' => $align_wide, 'availableTemplates' => $available_templates, 'allowedBlockTypes' => $allowed_block_types, 'disableCustomColors' => get_theme_support( 'disable-custom-colors' ), 'disableCustomFontSizes' => get_theme_support( 'disable-custom-font-sizes' ), 'disableCustomGradients' => get_theme_support( 'disable-custom-gradients' ), 'disablePostFormats' => ! current_theme_supports( 'post-formats' ), /** This filter is documented in wp-admin/edit-form-advanced.php */ 'titlePlaceholder' => apply_filters( 'enter_title_here', __( 'Add title' ), $post ), 'bodyPlaceholder' => $body_placeholder, 'isRTL' => is_rtl(), 'autosaveInterval' => AUTOSAVE_INTERVAL, 'maxUploadFileSize' => $max_upload_size, 'allowedMimeTypes' => get_allowed_mime_types(), 'styles' => $styles, 'imageSizes' => $available_image_sizes, 'imageDimensions' => $image_dimensions, 'richEditingEnabled' => user_can_richedit(), 'postLock' => $lock_details, 'postLockUtils' => array( 'nonce' => wp_create_nonce( 'lock-post_' . $post->ID ), 'unlockNonce' => wp_create_nonce( 'update-post_' . $post->ID ), 'ajaxUrl' => admin_url( 'admin-ajax.php' ), ), '__experimentalBlockPatterns' => WP_Block_Patterns_Registry::get_instance()->get_all_registered(), '__experimentalBlockPatternCategories' => WP_Block_Pattern_Categories_Registry::get_instance()->get_all_registered(), // Whether or not to load the 'postcustom' meta box is stored as a user meta // field so that we're not always loading its assets. 'enableCustomFields' => (bool) get_user_meta( get_current_user_id(), 'enable_custom_fields', true ), 'enableCustomLineHeight' => $custom_line_height, 'enableCustomUnits' => $custom_units, ); $autosave = wp_get_post_autosave( $post_ID ); if ( $autosave ) { if ( mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) ) { $editor_settings['autosave'] = array( 'editLink' => get_edit_post_link( $autosave->ID ), ); } else { wp_delete_post_revision( $autosave->ID ); } } if ( false !== $color_palette ) { $editor_settings['colors'] = $color_palette; } if ( false !== $font_sizes ) { $editor_settings['fontSizes'] = $font_sizes; } if ( false !== $gradient_presets ) { $editor_settings['gradients'] = $gradient_presets; } if ( ! empty( $post_type_object->template ) ) { $editor_settings['template'] = $post_type_object->template; $editor_settings['templateLock'] = ! empty( $post_type_object->template_lock ) ? $post_type_object->template_lock : false; } // If there's no template set on a new post, use the post format, instead. if ( $is_new_post && ! isset( $editor_settings['template'] ) && 'post' === $post->post_type ) { $post_format = get_post_format( $post ); if ( in_array( $post_format, array( 'audio', 'gallery', 'image', 'quote', 'video' ), true ) ) { $editor_settings['template'] = array( array( "core/$post_format" ) ); } } /** * Scripts */ wp_enqueue_media( array( 'post' => $post->ID, ) ); wp_tinymce_inline_scripts(); wp_enqueue_editor(); /** * Styles */ wp_enqueue_style( 'wp-edit-post' ); wp_enqueue_style( 'wp-format-library' ); /** * Fires after block assets have been enqueued for the editing interface. * * Call `add_action` on any hook before 'admin_enqueue_scripts'. * * In the function call you supply, simply use `wp_enqueue_script` and * `wp_enqueue_style` to add your functionality to the block editor. * * @since 5.0.0 */ do_action( 'enqueue_block_editor_assets' ); // In order to duplicate classic meta box behaviour, we need to run the classic meta box actions. require_once ABSPATH . 'wp-admin/includes/meta-boxes.php'; register_and_do_post_meta_boxes( $post ); // Check if the Custom Fields meta box has been removed at some point. $core_meta_boxes = $wp_meta_boxes[ $current_screen->id ]['normal']['core']; if ( ! isset( $core_meta_boxes['postcustom'] ) || ! $core_meta_boxes['postcustom'] ) { unset( $editor_settings['enableCustomFields'] ); } /** * Filters the settings to pass to the block editor. * * @since 5.0.0 * * @param array $editor_settings Default editor settings. * @param WP_Post $post Post being edited. */ $editor_settings = apply_filters( 'block_editor_settings', $editor_settings, $post ); $init_script = <<post_type, $post->ID, wp_json_encode( $editor_settings ), wp_json_encode( $initial_edits ) ); wp_add_inline_script( 'wp-edit-post', $script ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?> PK!]ajy&& my-sites.phpnu[ID ); $updated = false; if ( 'updateblogsettings' === $action && isset( $_POST['primary_blog'] ) ) { check_admin_referer( 'update-my-sites' ); $blog = get_site( (int) $_POST['primary_blog'] ); if ( $blog && isset( $blog->domain ) ) { update_user_option( $current_user->ID, 'primary_blog', (int) $_POST['primary_blog'], true ); $updated = true; } else { wp_die( __( 'The primary site you chose does not exist.' ) ); } } $title = __( 'My Sites' ); $parent_file = 'index.php'; get_current_screen()->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

' . __( 'This screen shows an individual user all of their sites in this network, and also allows that user to set a primary site. They can use the links under each site to visit either the front end or the dashboard for that site.' ) . '

', ) ); get_current_screen()->set_help_sidebar( '

' . __( 'For more information:' ) . '

' . '

' . __( 'Documentation on My Sites' ) . '

' . '

' . __( 'Support' ) . '

' ); require_once ABSPATH . 'wp-admin/admin-header.php'; if ( $updated ) { ?>

%s', esc_url( $sign_up_url ), esc_html_x( 'Add New', 'site' ) ); } if ( empty( $blogs ) ) : echo '

'; _e( 'You must be a member of at least one site to use this page.' ); echo '

'; else : ?>

    ' . __( 'Global Settings' ) . ''; echo $settings_html; } reset( $blogs ); foreach ( $blogs as $user_blog ) { switch_to_blog( $user_blog->userblog_id ); echo '
  • '; echo "

    {$user_blog->blogname}

    "; $actions = "" . __( 'Visit' ) . ''; if ( current_user_can( 'read' ) ) { $actions .= " | " . __( 'Dashboard' ) . ''; } /** * Filters the row links displayed for each site on the My Sites screen. * * @since MU (3.0.0) * * @param string $actions The HTML site link markup. * @param object $user_blog An object containing the site data. */ $actions = apply_filters( 'myblogs_blog_actions', $actions, $user_blog ); echo "

    " . $actions . '

    '; /** This filter is documented in wp-admin/my-sites.php */ echo apply_filters( 'myblogs_options', '', $user_blog ); echo '
  • '; restore_current_blog(); } ?>
1 || has_action( 'myblogs_allblogs_options' ) || has_filter( 'myblogs_options' ) ) { ?>

' ).text( val ); // If tags editing isn't disabled, create the X button. if ( ! disabled ) { /* * Build the X buttons, hide the X icon with aria-hidden and * use visually hidden text for screen readers. */ xbutton = $( '' ); /** * Handles the click and keypress event of the tag remove button. * * Makes sure the focus ends up in the tag input field when using * the keyboard to delete the tag. * * @since 4.2.0 * * @param {Event} e The click or keypress event to handle. * * @return {void} */ xbutton.on( 'click keypress', function( e ) { // On click or when using the Enter/Spacebar keys. if ( 'click' === e.type || 13 === e.keyCode || 32 === e.keyCode ) { /* * When using the keyboard, move focus back to the * add new tag field. Note: when releasing the pressed * key this will fire the `keyup` event on the input. */ if ( 13 === e.keyCode || 32 === e.keyCode ) { $( this ).closest( '.tagsdiv' ).find( 'input.newtag' ).focus(); } tagBox.userAction = 'remove'; tagBox.parseTags( this ); } }); listItem.prepend( ' ' ).prepend( xbutton ); } // Append the list item to the tag list. tagchecklist.append( listItem ); }); // The buttons list is built now, give feedback to screen reader users. tagBox.screenReadersMessage(); }, /** * Adds a new tag. * * Also ensures that the quick links are properly generated. * * @since 2.9.0 * * @memberOf tagBox * * @param {Object} el The container HTML element. * @param {Object|boolean} a When this is an HTML element the text of that * element will be used for the new tag. * @param {number|boolean} f If this value is not passed then the tag input * field is focused. * * @return {boolean} Always returns false. */ flushTags : function( el, a, f ) { var tagsval, newtags, text, tags = $( '.the-tags', el ), newtag = $( 'input.newtag', el ); a = a || false; text = a ? $(a).text() : newtag.val(); /* * Return if there's no new tag or if the input field is empty. * Note: when using the keyboard to add tags, focus is moved back to * the input field and the `keyup` event attached on this field will * fire when releasing the pressed key. Checking also for the field * emptiness avoids to set the tags and call quickClicks() again. */ if ( 'undefined' == typeof( text ) || '' === text ) { return false; } tagsval = tags.val(); newtags = tagsval ? tagsval + tagDelimiter + text : text; newtags = this.clean( newtags ); newtags = array_unique_noempty( newtags.split( tagDelimiter ) ).join( tagDelimiter ); tags.val( newtags ); this.quickClicks( el ); if ( ! a ) newtag.val(''); if ( 'undefined' == typeof( f ) ) newtag.focus(); return false; }, /** * Retrieves the available tags and creates a tagcloud. * * Retrieves the available tags from the database and creates an interactive * tagcloud. Clicking a tag will add it. * * @since 2.9.0 * * @memberOf tagBox * * @param {string} id The ID to extract the taxonomy from. * * @return {void} */ get : function( id ) { var tax = id.substr( id.indexOf('-') + 1 ); /** * Puts a received tag cloud into a DOM element. * * The tag cloud HTML is generated on the server. * * @since 2.9.0 * * @param {number|string} r The response message from the Ajax call. * @param {string} stat The status of the Ajax request. * * @return {void} */ $.post( ajaxurl, { 'action': 'get-tagcloud', 'tax': tax }, function( r, stat ) { if ( 0 === r || 'success' != stat ) { return; } r = $( '
' + r + '
' ); /** * Adds a new tag when a tag in the tagcloud is clicked. * * @since 2.9.0 * * @return {boolean} Returns false to prevent the default action. */ $( 'a', r ).click( function() { tagBox.userAction = 'add'; tagBox.flushTags( $( '#' + tax ), this ); return false; }); $( '#' + id ).after( r ); }); }, /** * Track the user's last action. * * @since 4.7.0 */ userAction: '', /** * Dispatches an audible message to screen readers. * * This will inform the user when a tag has been added or removed. * * @since 4.7.0 * * @return {void} */ screenReadersMessage: function() { var message; switch ( this.userAction ) { case 'remove': message = wp.i18n.__( 'Term removed.' ); break; case 'add': message = wp.i18n.__( 'Term added.' ); break; default: return; } window.wp.a11y.speak( message, 'assertive' ); }, /** * Initializes the tags box by setting up the links, buttons. Sets up event * handling. * * This includes handling of pressing the enter key in the input field and the * retrieval of tag suggestions. * * @since 2.9.0 * * @memberOf tagBox * * @return {void} */ init : function() { var ajaxtag = $('div.ajaxtag'); $('.tagsdiv').each( function() { tagBox.quickClicks( this ); }); $( '.tagadd', ajaxtag ).click( function() { tagBox.userAction = 'add'; tagBox.flushTags( $( this ).closest( '.tagsdiv' ) ); }); /** * Handles pressing enter on the new tag input field. * * Prevents submitting the post edit form. Uses `keypress` to take * into account Input Method Editor (IME) converters. * * @since 2.9.0 * * @param {Event} event The keypress event that occurred. * * @return {void} */ $( 'input.newtag', ajaxtag ).keypress( function( event ) { if ( 13 == event.which ) { tagBox.userAction = 'add'; tagBox.flushTags( $( this ).closest( '.tagsdiv' ) ); event.preventDefault(); event.stopPropagation(); } }).each( function( i, element ) { $( element ).wpTagsSuggest(); }); /** * Before a post is saved the value currently in the new tag input field will be * added as a tag. * * @since 2.9.0 * * @return {void} */ $('#post').submit(function(){ $('div.tagsdiv').each( function() { tagBox.flushTags(this, false, 1); }); }); /** * Handles clicking on the tag cloud link. * * Makes sure the ARIA attributes are set correctly. * * @since 2.9.0 * * @return {void} */ $('.tagcloud-link').click(function(){ // On the first click, fetch the tag cloud and insert it in the DOM. tagBox.get( $( this ).attr( 'id' ) ); // Update button state, remove previous click event and attach a new one to toggle the cloud. $( this ) .attr( 'aria-expanded', 'true' ) .unbind() .click( function() { $( this ) .attr( 'aria-expanded', 'false' === $( this ).attr( 'aria-expanded' ) ? 'true' : 'false' ) .siblings( '.the-tagcloud' ).toggle(); }); }); } }; }( jQuery )); PK!Ljjs/tags-suggest.min.jsnu[/*! This file is auto-generated */ !function(u){if(void 0!==window.uiAutocompleteL10n){var s=0,a=wp.i18n._x(",","tag delimiter")||",";u.fn.wpTagsSuggest=function(e){var i,o,n=u(this);if(!n.length)return this;var r=(e=e||{}).taxonomy||n.attr("data-wp-taxonomy")||"post_tag";return delete e.taxonomy,e=u.extend({source:function(e,a){var t;o!==e.term?(t=function(e){return l(e).pop()}(e.term),u.get(window.ajaxurl,{action:"ajax-tag-search",tax:r,q:t}).always(function(){n.removeClass("ui-autocomplete-loading")}).done(function(e){var t,o=[];if(e){for(t in e=e.split("\n")){var n=++s;o.push({id:n,name:e[t]})}a(i=o)}else a(o)}),o=e.term):a(i)},focus:function(e,t){n.attr("aria-activedescendant","wp-tags-autocomplete-"+t.item.id),e.preventDefault()},select:function(e,t){var o=l(n.val());return o.pop(),o.push(t.item.name,""),n.val(o.join(a+" ")),u.ui.keyCode.TAB===e.keyCode?(window.wp.a11y.speak(wp.i18n.__("Term selected."),"assertive"),e.preventDefault()):u.ui.keyCode.ENTER===e.keyCode&&(window.tagBox&&(window.tagBox.userAction="add",window.tagBox.flushTags(u(this).closest(".tagsdiv"))),e.preventDefault(),e.stopPropagation()),!1},open:function(){n.attr("aria-expanded","true")},close:function(){n.attr("aria-expanded","false")},minLength:2,position:{my:"left top+2",at:"left bottom",collision:"none"},messages:{noResults:window.uiAutocompleteL10n.noResults,results:function(e){return 1').text(t.name).appendTo(e)},n.attr({role:"combobox","aria-autocomplete":"list","aria-expanded":"false","aria-owns":n.autocomplete("widget").attr("id")}).on("focus",function(){l(n.val()).pop()&&n.autocomplete("search")}),n.autocomplete("widget").addClass("wp-tags-autocomplete").attr("role","listbox").removeAttr("tabindex").on("menufocus",function(e,t){t.item.attr("aria-selected","true")}).on("menublur",function(){u(this).find('[aria-selected="true"]').removeAttr("aria-selected")})),this}}function l(e){return e.split(new RegExp(a+"\\s*"))}}(jQuery);PK!`tȵ js/common.jsnu[/** * @output wp-admin/js/common.js */ /* global setUserSetting, ajaxurl, alert, confirm, pagenow */ /* global columns, screenMeta */ /** * Adds common WordPress functionality to the window. * * @param {jQuery} $ jQuery object. * @param {Object} window The window object. * @param {mixed} undefined Unused. */ ( function( $, window, undefined ) { var $document = $( document ), $window = $( window ), $body = $( document.body ), __ = wp.i18n.__, sprintf = wp.i18n.sprintf; /** * Throws an error for a deprecated property. * * @since 5.5.1 * * @param {string} propName The property that was used. * @param {string} version The version of WordPress that deprecated the property. * @param {string} replacement The property that should have been used. */ function deprecatedProperty( propName, version, replacement ) { var message; if ( 'undefined' !== typeof replacement ) { message = sprintf( /* translators: 1: Deprecated property name, 2: Version number, 3: Alternative property name. */ __( '%1$s is deprecated since version %2$s! Use %3$s instead.' ), propName, version, replacement ); } else { message = sprintf( /* translators: 1: Deprecated property name, 2: Version number. */ __( '%1$s is deprecated since version %2$s with no alternative available.' ), propName, version ); } window.console.warn( message ); } /** * Deprecate all properties on an object. * * @since 5.5.1 * @since 5.6.0 Added the `version` parameter. * * @param {string} name The name of the object, i.e. commonL10n. * @param {object} l10nObject The object to deprecate the properties on. * @param {string} version The version of WordPress that deprecated the property. * * @return {object} The object with all its properties deprecated. */ function deprecateL10nObject( name, l10nObject, version ) { var deprecatedObject = {}; Object.keys( l10nObject ).forEach( function( key ) { var prop = l10nObject[ key ]; var propName = name + '.' + key; if ( 'object' === typeof prop ) { Object.defineProperty( deprecatedObject, key, { get: function() { deprecatedProperty( propName, version, prop.alternative ); return prop.func(); } } ); } else { Object.defineProperty( deprecatedObject, key, { get: function() { deprecatedProperty( propName, version, 'wp.i18n' ); return prop; } } ); } } ); return deprecatedObject; } window.wp.deprecateL10nObject = deprecateL10nObject; /** * Removed in 5.5.0, needed for back-compatibility. * * @since 2.6.0 * @deprecated 5.5.0 */ window.commonL10n = window.commonL10n || { warnDelete: '', dismiss: '', collapseMenu: '', expandMenu: '' }; window.commonL10n = deprecateL10nObject( 'commonL10n', window.commonL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 3.3.0 * @deprecated 5.5.0 */ window.wpPointerL10n = window.wpPointerL10n || { dismiss: '' }; window.wpPointerL10n = deprecateL10nObject( 'wpPointerL10n', window.wpPointerL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 4.3.0 * @deprecated 5.5.0 */ window.userProfileL10n = window.userProfileL10n || { warn: '', warnWeak: '', show: '', hide: '', cancel: '', ariaShow: '', ariaHide: '' }; window.userProfileL10n = deprecateL10nObject( 'userProfileL10n', window.userProfileL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 4.9.6 * @deprecated 5.5.0 */ window.privacyToolsL10n = window.privacyToolsL10n || { noDataFound: '', foundAndRemoved: '', noneRemoved: '', someNotRemoved: '', removalError: '', emailSent: '', noExportFile: '', exportError: '' }; window.privacyToolsL10n = deprecateL10nObject( 'privacyToolsL10n', window.privacyToolsL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 3.6.0 * @deprecated 5.5.0 */ window.authcheckL10n = { beforeunload: '' }; window.authcheckL10n = window.authcheckL10n || deprecateL10nObject( 'authcheckL10n', window.authcheckL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 2.8.0 * @deprecated 5.5.0 */ window.tagsl10n = { noPerm: '', broken: '' }; window.tagsl10n = window.tagsl10n || deprecateL10nObject( 'tagsl10n', window.tagsl10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 2.5.0 * @deprecated 5.5.0 */ window.adminCommentsL10n = window.adminCommentsL10n || { hotkeys_highlight_first: { alternative: 'window.adminCommentsSettings.hotkeys_highlight_first', func: function() { return window.adminCommentsSettings.hotkeys_highlight_first; } }, hotkeys_highlight_last: { alternative: 'window.adminCommentsSettings.hotkeys_highlight_last', func: function() { return window.adminCommentsSettings.hotkeys_highlight_last; } }, replyApprove: '', reply: '', warnQuickEdit: '', warnCommentChanges: '', docTitleComments: '', docTitleCommentsCount: '' }; window.adminCommentsL10n = deprecateL10nObject( 'adminCommentsL10n', window.adminCommentsL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 2.5.0 * @deprecated 5.5.0 */ window.tagsSuggestL10n = window.tagsSuggestL10n || { tagDelimiter: '', removeTerm: '', termSelected: '', termAdded: '', termRemoved: '' }; window.tagsSuggestL10n = deprecateL10nObject( 'tagsSuggestL10n', window.tagsSuggestL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 3.5.0 * @deprecated 5.5.0 */ window.wpColorPickerL10n = window.wpColorPickerL10n || { clear: '', clearAriaLabel: '', defaultString: '', defaultAriaLabel: '', pick: '', defaultLabel: '' }; window.wpColorPickerL10n = deprecateL10nObject( 'wpColorPickerL10n', window.wpColorPickerL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 2.7.0 * @deprecated 5.5.0 */ window.attachMediaBoxL10n = window.attachMediaBoxL10n || { error: '' }; window.attachMediaBoxL10n = deprecateL10nObject( 'attachMediaBoxL10n', window.attachMediaBoxL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 2.5.0 * @deprecated 5.5.0 */ window.postL10n = window.postL10n || { ok: '', cancel: '', publishOn: '', publishOnFuture: '', publishOnPast: '', dateFormat: '', showcomm: '', endcomm: '', publish: '', schedule: '', update: '', savePending: '', saveDraft: '', 'private': '', 'public': '', publicSticky: '', password: '', privatelyPublished: '', published: '', saveAlert: '', savingText: '', permalinkSaved: '' }; window.postL10n = deprecateL10nObject( 'postL10n', window.postL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 2.7.0 * @deprecated 5.5.0 */ window.inlineEditL10n = window.inlineEditL10n || { error: '', ntdeltitle: '', notitle: '', comma: '', saved: '' }; window.inlineEditL10n = deprecateL10nObject( 'inlineEditL10n', window.inlineEditL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 2.7.0 * @deprecated 5.5.0 */ window.plugininstallL10n = window.plugininstallL10n || { plugin_information: '', plugin_modal_label: '', ays: '' }; window.plugininstallL10n = deprecateL10nObject( 'plugininstallL10n', window.plugininstallL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 3.0.0 * @deprecated 5.5.0 */ window.navMenuL10n = window.navMenuL10n || { noResultsFound: '', warnDeleteMenu: '', saveAlert: '', untitled: '' }; window.navMenuL10n = deprecateL10nObject( 'navMenuL10n', window.navMenuL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 2.5.0 * @deprecated 5.5.0 */ window.commentL10n = window.commentL10n || { submittedOn: '', dateFormat: '' }; window.commentL10n = deprecateL10nObject( 'commentL10n', window.commentL10n, '5.5.0' ); /** * Removed in 5.5.0, needed for back-compatibility. * * @since 2.9.0 * @deprecated 5.5.0 */ window.setPostThumbnailL10n = window.setPostThumbnailL10n || { setThumbnail: '', saving: '', error: '', done: '' }; window.setPostThumbnailL10n = deprecateL10nObject( 'setPostThumbnailL10n', window.setPostThumbnailL10n, '5.5.0' ); /** * Removed in 3.3.0, needed for back-compatibility. * * @since 2.7.0 * @deprecated 3.3.0 */ window.adminMenu = { init : function() {}, fold : function() {}, restoreMenuState : function() {}, toggle : function() {}, favorites : function() {} }; // Show/hide/save table columns. window.columns = { /** * Initializes the column toggles in the screen options. * * Binds an onClick event to the checkboxes to show or hide the table columns * based on their toggled state. And persists the toggled state. * * @since 2.7.0 * * @return {void} */ init : function() { var that = this; $('.hide-column-tog', '#adv-settings').click( function() { var $t = $(this), column = $t.val(); if ( $t.prop('checked') ) that.checked(column); else that.unchecked(column); columns.saveManageColumnsState(); }); }, /** * Saves the toggled state for the columns. * * Saves whether the columns should be shown or hidden on a page. * * @since 3.0.0 * * @return {void} */ saveManageColumnsState : function() { var hidden = this.hidden(); $.post(ajaxurl, { action: 'hidden-columns', hidden: hidden, screenoptionnonce: $('#screenoptionnonce').val(), page: pagenow }); }, /** * Makes a column visible and adjusts the column span for the table. * * @since 3.0.0 * @param {string} column The column name. * * @return {void} */ checked : function(column) { $('.column-' + column).removeClass( 'hidden' ); this.colSpanChange(+1); }, /** * Hides a column and adjusts the column span for the table. * * @since 3.0.0 * @param {string} column The column name. * * @return {void} */ unchecked : function(column) { $('.column-' + column).addClass( 'hidden' ); this.colSpanChange(-1); }, /** * Gets all hidden columns. * * @since 3.0.0 * * @return {string} The hidden column names separated by a comma. */ hidden : function() { return $( '.manage-column[id]' ).filter( '.hidden' ).map(function() { return this.id; }).get().join( ',' ); }, /** * Gets the checked column toggles from the screen options. * * @since 3.0.0 * * @return {string} String containing the checked column names. */ useCheckboxesForHidden : function() { this.hidden = function(){ return $('.hide-column-tog').not(':checked').map(function() { var id = this.id; return id.substring( id, id.length - 5 ); }).get().join(','); }; }, /** * Adjusts the column span for the table. * * @since 3.1.0 * * @param {number} diff The modifier for the column span. */ colSpanChange : function(diff) { var $t = $('table').find('.colspanchange'), n; if ( !$t.length ) return; n = parseInt( $t.attr('colspan'), 10 ) + diff; $t.attr('colspan', n.toString()); } }; $document.ready(function(){columns.init();}); /** * Validates that the required form fields are not empty. * * @since 2.9.0 * * @param {jQuery} form The form to validate. * * @return {boolean} Returns true if all required fields are not an empty string. */ window.validateForm = function( form ) { return !$( form ) .find( '.form-required' ) .filter( function() { return $( ':input:visible', this ).val() === ''; } ) .addClass( 'form-invalid' ) .find( ':input:visible' ) .change( function() { $( this ).closest( '.form-invalid' ).removeClass( 'form-invalid' ); } ) .length; }; // Stub for doing better warnings. /** * Shows message pop-up notice or confirmation message. * * @since 2.7.0 * * @type {{warn: showNotice.warn, note: showNotice.note}} * * @return {void} */ window.showNotice = { /** * Shows a delete confirmation pop-up message. * * @since 2.7.0 * * @return {boolean} Returns true if the message is confirmed. */ warn : function() { if ( confirm( __( 'You are about to permanently delete these items from your site.\nThis action cannot be undone.\n\'Cancel\' to stop, \'OK\' to delete.' ) ) ) { return true; } return false; }, /** * Shows an alert message. * * @since 2.7.0 * * @param text The text to display in the message. */ note : function(text) { alert(text); } }; /** * Represents the functions for the meta screen options panel. * * @since 3.2.0 * * @type {{element: null, toggles: null, page: null, init: screenMeta.init, * toggleEvent: screenMeta.toggleEvent, open: screenMeta.open, * close: screenMeta.close}} * * @return {void} */ window.screenMeta = { element: null, // #screen-meta toggles: null, // .screen-meta-toggle page: null, // #wpcontent /** * Initializes the screen meta options panel. * * @since 3.2.0 * * @return {void} */ init: function() { this.element = $('#screen-meta'); this.toggles = $( '#screen-meta-links' ).find( '.show-settings' ); this.page = $('#wpcontent'); this.toggles.click( this.toggleEvent ); }, /** * Toggles the screen meta options panel. * * @since 3.2.0 * * @return {void} */ toggleEvent: function() { var panel = $( '#' + $( this ).attr( 'aria-controls' ) ); if ( !panel.length ) return; if ( panel.is(':visible') ) screenMeta.close( panel, $(this) ); else screenMeta.open( panel, $(this) ); }, /** * Opens the screen meta options panel. * * @since 3.2.0 * * @param {jQuery} panel The screen meta options panel div. * @param {jQuery} button The toggle button. * * @return {void} */ open: function( panel, button ) { $( '#screen-meta-links' ).find( '.screen-meta-toggle' ).not( button.parent() ).css( 'visibility', 'hidden' ); panel.parent().show(); /** * Sets the focus to the meta options panel and adds the necessary CSS classes. * * @since 3.2.0 * * @return {void} */ panel.slideDown( 'fast', function() { panel.focus(); button.addClass( 'screen-meta-active' ).attr( 'aria-expanded', true ); }); $document.trigger( 'screen:options:open' ); }, /** * Closes the screen meta options panel. * * @since 3.2.0 * * @param {jQuery} panel The screen meta options panel div. * @param {jQuery} button The toggle button. * * @return {void} */ close: function( panel, button ) { /** * Hides the screen meta options panel. * * @since 3.2.0 * * @return {void} */ panel.slideUp( 'fast', function() { button.removeClass( 'screen-meta-active' ).attr( 'aria-expanded', false ); $('.screen-meta-toggle').css('visibility', ''); panel.parent().hide(); }); $document.trigger( 'screen:options:close' ); } }; /** * Initializes the help tabs in the help panel. * * @param {Event} e The event object. * * @return {void} */ $('.contextual-help-tabs').delegate('a', 'click', function(e) { var link = $(this), panel; e.preventDefault(); // Don't do anything if the click is for the tab already showing. if ( link.is('.active a') ) return false; // Links. $('.contextual-help-tabs .active').removeClass('active'); link.parent('li').addClass('active'); panel = $( link.attr('href') ); // Panels. $('.help-tab-content').not( panel ).removeClass('active').hide(); panel.addClass('active').show(); }); /** * Update custom permalink structure via buttons. */ var permalinkStructureFocused = false, $permalinkStructure = $( '#permalink_structure' ), $permalinkStructureInputs = $( '.permalink-structure input:radio' ), $permalinkCustomSelection = $( '#custom_selection' ), $availableStructureTags = $( '.form-table.permalink-structure .available-structure-tags button' ); // Change permalink structure input when selecting one of the common structures. $permalinkStructureInputs.on( 'change', function() { if ( 'custom' === this.value ) { return; } $permalinkStructure.val( this.value ); // Update button states after selection. $availableStructureTags.each( function() { changeStructureTagButtonState( $( this ) ); } ); } ); $permalinkStructure.on( 'click input', function() { $permalinkCustomSelection.prop( 'checked', true ); } ); // Check if the permalink structure input field has had focus at least once. $permalinkStructure.on( 'focus', function( event ) { permalinkStructureFocused = true; $( this ).off( event ); } ); /** * Enables or disables a structure tag button depending on its usage. * * If the structure is already used in the custom permalink structure, * it will be disabled. * * @param {Object} button Button jQuery object. */ function changeStructureTagButtonState( button ) { if ( -1 !== $permalinkStructure.val().indexOf( button.text().trim() ) ) { button.attr( 'data-label', button.attr( 'aria-label' ) ); button.attr( 'aria-label', button.attr( 'data-used' ) ); button.attr( 'aria-pressed', true ); button.addClass( 'active' ); } else if ( button.attr( 'data-label' ) ) { button.attr( 'aria-label', button.attr( 'data-label' ) ); button.attr( 'aria-pressed', false ); button.removeClass( 'active' ); } } // Check initial button state. $availableStructureTags.each( function() { changeStructureTagButtonState( $( this ) ); } ); // Observe permalink structure field and disable buttons of tags that are already present. $permalinkStructure.on( 'change', function() { $availableStructureTags.each( function() { changeStructureTagButtonState( $( this ) ); } ); } ); $availableStructureTags.on( 'click', function() { var permalinkStructureValue = $permalinkStructure.val(), selectionStart = $permalinkStructure[ 0 ].selectionStart, selectionEnd = $permalinkStructure[ 0 ].selectionEnd, textToAppend = $( this ).text().trim(), textToAnnounce = $( this ).attr( 'data-added' ), newSelectionStart; // Remove structure tag if already part of the structure. if ( -1 !== permalinkStructureValue.indexOf( textToAppend ) ) { permalinkStructureValue = permalinkStructureValue.replace( textToAppend + '/', '' ); $permalinkStructure.val( '/' === permalinkStructureValue ? '' : permalinkStructureValue ); // Announce change to screen readers. $( '#custom_selection_updated' ).text( textToAnnounce ); // Disable button. changeStructureTagButtonState( $( this ) ); return; } // Input field never had focus, move selection to end of input. if ( ! permalinkStructureFocused && 0 === selectionStart && 0 === selectionEnd ) { selectionStart = selectionEnd = permalinkStructureValue.length; } $permalinkCustomSelection.prop( 'checked', true ); // Prepend and append slashes if necessary. if ( '/' !== permalinkStructureValue.substr( 0, selectionStart ).substr( -1 ) ) { textToAppend = '/' + textToAppend; } if ( '/' !== permalinkStructureValue.substr( selectionEnd, 1 ) ) { textToAppend = textToAppend + '/'; } // Insert structure tag at the specified position. $permalinkStructure.val( permalinkStructureValue.substr( 0, selectionStart ) + textToAppend + permalinkStructureValue.substr( selectionEnd ) ); // Announce change to screen readers. $( '#custom_selection_updated' ).text( textToAnnounce ); // Disable button. changeStructureTagButtonState( $( this ) ); // If input had focus give it back with cursor right after appended text. if ( permalinkStructureFocused && $permalinkStructure[0].setSelectionRange ) { newSelectionStart = ( permalinkStructureValue.substr( 0, selectionStart ) + textToAppend ).length; $permalinkStructure[0].setSelectionRange( newSelectionStart, newSelectionStart ); $permalinkStructure.focus(); } } ); $document.ready( function() { var checks, first, last, checked, sliced, mobileEvent, transitionTimeout, focusedRowActions, lastClicked = false, pageInput = $('input.current-page'), currentPage = pageInput.val(), isIOS = /iPhone|iPad|iPod/.test( navigator.userAgent ), isAndroid = navigator.userAgent.indexOf( 'Android' ) !== -1, $adminMenuWrap = $( '#adminmenuwrap' ), $wpwrap = $( '#wpwrap' ), $adminmenu = $( '#adminmenu' ), $overlay = $( '#wp-responsive-overlay' ), $toolbar = $( '#wp-toolbar' ), $toolbarPopups = $toolbar.find( 'a[aria-haspopup="true"]' ), $sortables = $('.meta-box-sortables'), wpResponsiveActive = false, $adminbar = $( '#wpadminbar' ), lastScrollPosition = 0, pinnedMenuTop = false, pinnedMenuBottom = false, menuTop = 0, menuState, menuIsPinned = false, height = { window: $window.height(), wpwrap: $wpwrap.height(), adminbar: $adminbar.height(), menu: $adminMenuWrap.height() }, $headerEnd = $( '.wp-header-end' ); /** * Makes the fly-out submenu header clickable, when the menu is folded. * * @param {Event} e The event object. * * @return {void} */ $adminmenu.on('click.wp-submenu-head', '.wp-submenu-head', function(e){ $(e.target).parent().siblings('a').get(0).click(); }); /** * Collapses the admin menu. * * @return {void} */ $( '#collapse-button' ).on( 'click.collapse-menu', function() { var viewportWidth = getViewportWidth() || 961; // Reset any compensation for submenus near the bottom of the screen. $('#adminmenu div.wp-submenu').css('margin-top', ''); if ( viewportWidth < 960 ) { if ( $body.hasClass('auto-fold') ) { $body.removeClass('auto-fold').removeClass('folded'); setUserSetting('unfold', 1); setUserSetting('mfold', 'o'); menuState = 'open'; } else { $body.addClass('auto-fold'); setUserSetting('unfold', 0); menuState = 'folded'; } } else { if ( $body.hasClass('folded') ) { $body.removeClass('folded'); setUserSetting('mfold', 'o'); menuState = 'open'; } else { $body.addClass('folded'); setUserSetting('mfold', 'f'); menuState = 'folded'; } } $document.trigger( 'wp-collapse-menu', { state: menuState } ); }); /** * Handles the `aria-haspopup` attribute on the current menu item when it has a submenu. * * @since 4.4.0 * * @return {void} */ function currentMenuItemHasPopup() { var $current = $( 'a.wp-has-current-submenu' ); if ( 'folded' === menuState ) { // When folded or auto-folded and not responsive view, the current menu item does have a fly-out sub-menu. $current.attr( 'aria-haspopup', 'true' ); } else { // When expanded or in responsive view, reset aria-haspopup. $current.attr( 'aria-haspopup', 'false' ); } } $document.on( 'wp-menu-state-set wp-collapse-menu wp-responsive-activate wp-responsive-deactivate', currentMenuItemHasPopup ); /** * Ensures an admin submenu is within the visual viewport. * * @since 4.1.0 * * @param {jQuery} $menuItem The parent menu item containing the submenu. * * @return {void} */ function adjustSubmenu( $menuItem ) { var bottomOffset, pageHeight, adjustment, theFold, menutop, wintop, maxtop, $submenu = $menuItem.find( '.wp-submenu' ); menutop = $menuItem.offset().top; wintop = $window.scrollTop(); maxtop = menutop - wintop - 30; // max = make the top of the sub almost touch admin bar. bottomOffset = menutop + $submenu.height() + 1; // Bottom offset of the menu. pageHeight = $wpwrap.height(); // Height of the entire page. adjustment = 60 + bottomOffset - pageHeight; theFold = $window.height() + wintop - 50; // The fold. if ( theFold < ( bottomOffset - adjustment ) ) { adjustment = bottomOffset - theFold; } if ( adjustment > maxtop ) { adjustment = maxtop; } if ( adjustment > 1 ) { $submenu.css( 'margin-top', '-' + adjustment + 'px' ); } else { $submenu.css( 'margin-top', '' ); } } if ( 'ontouchstart' in window || /IEMobile\/[1-9]/.test(navigator.userAgent) ) { // Touch screen device. // iOS Safari works with touchstart, the rest work with click. mobileEvent = isIOS ? 'touchstart' : 'click'; /** * Closes any open submenus when touch/click is not on the menu. * * @param {Event} e The event object. * * @return {void} */ $body.on( mobileEvent+'.wp-mobile-hover', function(e) { if ( $adminmenu.data('wp-responsive') ) { return; } if ( ! $( e.target ).closest( '#adminmenu' ).length ) { $adminmenu.find( 'li.opensub' ).removeClass( 'opensub' ); } }); /** * Handles the opening or closing the submenu based on the mobile click|touch event. * * @param {Event} event The event object. * * @return {void} */ $adminmenu.find( 'a.wp-has-submenu' ).on( mobileEvent + '.wp-mobile-hover', function( event ) { var $menuItem = $(this).parent(); if ( $adminmenu.data( 'wp-responsive' ) ) { return; } /* * Show the sub instead of following the link if: * - the submenu is not open. * - the submenu is not shown inline or the menu is not folded. */ if ( ! $menuItem.hasClass( 'opensub' ) && ( ! $menuItem.hasClass( 'wp-menu-open' ) || $menuItem.width() < 40 ) ) { event.preventDefault(); adjustSubmenu( $menuItem ); $adminmenu.find( 'li.opensub' ).removeClass( 'opensub' ); $menuItem.addClass('opensub'); } }); } if ( ! isIOS && ! isAndroid ) { $adminmenu.find( 'li.wp-has-submenu' ).hoverIntent({ /** * Opens the submenu when hovered over the menu item for desktops. * * @return {void} */ over: function() { var $menuItem = $( this ), $submenu = $menuItem.find( '.wp-submenu' ), top = parseInt( $submenu.css( 'top' ), 10 ); if ( isNaN( top ) || top > -5 ) { // The submenu is visible. return; } if ( $adminmenu.data( 'wp-responsive' ) ) { // The menu is in responsive mode, bail. return; } adjustSubmenu( $menuItem ); $adminmenu.find( 'li.opensub' ).removeClass( 'opensub' ); $menuItem.addClass( 'opensub' ); }, /** * Closes the submenu when no longer hovering the menu item. * * @return {void} */ out: function(){ if ( $adminmenu.data( 'wp-responsive' ) ) { // The menu is in responsive mode, bail. return; } $( this ).removeClass( 'opensub' ).find( '.wp-submenu' ).css( 'margin-top', '' ); }, timeout: 200, sensitivity: 7, interval: 90 }); /** * Opens the submenu on when focused on the menu item. * * @param {Event} event The event object. * * @return {void} */ $adminmenu.on( 'focus.adminmenu', '.wp-submenu a', function( event ) { if ( $adminmenu.data( 'wp-responsive' ) ) { // The menu is in responsive mode, bail. return; } $( event.target ).closest( 'li.menu-top' ).addClass( 'opensub' ); /** * Closes the submenu on blur from the menu item. * * @param {Event} event The event object. * * @return {void} */ }).on( 'blur.adminmenu', '.wp-submenu a', function( event ) { if ( $adminmenu.data( 'wp-responsive' ) ) { return; } $( event.target ).closest( 'li.menu-top' ).removeClass( 'opensub' ); /** * Adjusts the size for the submenu. * * @return {void} */ }).find( 'li.wp-has-submenu.wp-not-current-submenu' ).on( 'focusin.adminmenu', function() { adjustSubmenu( $( this ) ); }); } /* * The `.below-h2` class is here just for backward compatibility with plugins * that are (incorrectly) using it. Do not use. Use `.inline` instead. See #34570. * If '.wp-header-end' is found, append the notices after it otherwise * after the first h1 or h2 heading found within the main content. */ if ( ! $headerEnd.length ) { $headerEnd = $( '.wrap h1, .wrap h2' ).first(); } $( 'div.updated, div.error, div.notice' ).not( '.inline, .below-h2' ).insertAfter( $headerEnd ); /** * Makes notices dismissible. * * @since 4.4.0 * * @return {void} */ function makeNoticesDismissible() { $( '.notice.is-dismissible' ).each( function() { var $el = $( this ), $button = $( '' ); if ( $el.find( '.notice-dismiss' ).length ) { return; } // Ensure plain text. $button.find( '.screen-reader-text' ).text( __( 'Dismiss this notice.' ) ); $button.on( 'click.wp-dismiss-notice', function( event ) { event.preventDefault(); $el.fadeTo( 100, 0, function() { $el.slideUp( 100, function() { $el.remove(); }); }); }); $el.append( $button ); }); } $document.on( 'wp-updates-notice-added wp-plugin-install-error wp-plugin-update-error wp-plugin-delete-error wp-theme-install-error wp-theme-delete-error', makeNoticesDismissible ); // Init screen meta. screenMeta.init(); /** * Checks a checkbox. * * This event needs to be delegated. Ticket #37973. * * @return {boolean} Returns whether a checkbox is checked or not. */ $body.on( 'click', 'tbody > tr > .check-column :checkbox', function( event ) { // Shift click to select a range of checkboxes. if ( 'undefined' == event.shiftKey ) { return true; } if ( event.shiftKey ) { if ( !lastClicked ) { return true; } checks = $( lastClicked ).closest( 'form' ).find( ':checkbox' ).filter( ':visible:enabled' ); first = checks.index( lastClicked ); last = checks.index( this ); checked = $(this).prop('checked'); if ( 0 < first && 0 < last && first != last ) { sliced = ( last > first ) ? checks.slice( first, last ) : checks.slice( last, first ); sliced.prop( 'checked', function() { if ( $(this).closest('tr').is(':visible') ) return checked; return false; }); } } lastClicked = this; // Toggle the "Select all" checkboxes depending if the other ones are all checked or not. var unchecked = $(this).closest('tbody').find(':checkbox').filter(':visible:enabled').not(':checked'); /** * Determines if all checkboxes are checked. * * @return {boolean} Returns true if there are no unchecked checkboxes. */ $(this).closest('table').children('thead, tfoot').find(':checkbox').prop('checked', function() { return ( 0 === unchecked.length ); }); return true; }); /** * Controls all the toggles on bulk toggle change. * * When the bulk checkbox is changed, all the checkboxes in the tables are changed accordingly. * When the shift-button is pressed while changing the bulk checkbox the checkboxes in the table are inverted. * * This event needs to be delegated. Ticket #37973. * * @param {Event} event The event object. * * @return {boolean} */ $body.on( 'click.wp-toggle-checkboxes', 'thead .check-column :checkbox, tfoot .check-column :checkbox', function( event ) { var $this = $(this), $table = $this.closest( 'table' ), controlChecked = $this.prop('checked'), toggle = event.shiftKey || $this.data('wp-toggle'); $table.children( 'tbody' ).filter(':visible') .children().children('.check-column').find(':checkbox') /** * Updates the checked state on the checkbox in the table. * * @return {boolean} True checks the checkbox, False unchecks the checkbox. */ .prop('checked', function() { if ( $(this).is(':hidden,:disabled') ) { return false; } if ( toggle ) { return ! $(this).prop( 'checked' ); } else if ( controlChecked ) { return true; } return false; }); $table.children('thead, tfoot').filter(':visible') .children().children('.check-column').find(':checkbox') /** * Syncs the bulk checkboxes on the top and bottom of the table. * * @return {boolean} True checks the checkbox, False unchecks the checkbox. */ .prop('checked', function() { if ( toggle ) { return false; } else if ( controlChecked ) { return true; } return false; }); }); /** * Shows row actions on focus of its parent container element or any other elements contained within. * * @return {void} */ $( '#wpbody-content' ).on({ focusin: function() { clearTimeout( transitionTimeout ); focusedRowActions = $( this ).find( '.row-actions' ); // transitionTimeout is necessary for Firefox, but Chrome won't remove the CSS class without a little help. $( '.row-actions' ).not( this ).removeClass( 'visible' ); focusedRowActions.addClass( 'visible' ); }, focusout: function() { // Tabbing between post title and .row-actions links needs a brief pause, otherwise // the .row-actions div gets hidden in transit in some browsers (ahem, Firefox). transitionTimeout = setTimeout( function() { focusedRowActions.removeClass( 'visible' ); }, 30 ); } }, '.table-view-list .has-row-actions' ); // Toggle list table rows on small screens. $( 'tbody' ).on( 'click', '.toggle-row', function() { $( this ).closest( 'tr' ).toggleClass( 'is-expanded' ); }); $('#default-password-nag-no').click( function() { setUserSetting('default_password_nag', 'hide'); $('div.default-password-nag').hide(); return false; }); /** * Handles tab keypresses in theme and plugin editor textareas. * * @param {Event} e The event object. * * @return {void} */ $('#newcontent').bind('keydown.wpevent_InsertTab', function(e) { var el = e.target, selStart, selEnd, val, scroll, sel; // After pressing escape key (keyCode: 27), the tab key should tab out of the textarea. if ( e.keyCode == 27 ) { // When pressing Escape: Opera 12 and 27 blur form fields, IE 8 clears them. e.preventDefault(); $(el).data('tab-out', true); return; } // Only listen for plain tab key (keyCode: 9) without any modifiers. if ( e.keyCode != 9 || e.ctrlKey || e.altKey || e.shiftKey ) return; // After tabbing out, reset it so next time the tab key can be used again. if ( $(el).data('tab-out') ) { $(el).data('tab-out', false); return; } selStart = el.selectionStart; selEnd = el.selectionEnd; val = el.value; // If any text is selected, replace the selection with a tab character. if ( document.selection ) { el.focus(); sel = document.selection.createRange(); sel.text = '\t'; } else if ( selStart >= 0 ) { scroll = this.scrollTop; el.value = val.substring(0, selStart).concat('\t', val.substring(selEnd) ); el.selectionStart = el.selectionEnd = selStart + 1; this.scrollTop = scroll; } // Cancel the regular tab functionality, to prevent losing focus of the textarea. if ( e.stopPropagation ) e.stopPropagation(); if ( e.preventDefault ) e.preventDefault(); }); // Reset page number variable for new filters/searches but not for bulk actions. See #17685. if ( pageInput.length ) { /** * Handles pagination variable when filtering the list table. * * Set the pagination argument to the first page when the post-filter form is submitted. * This happens when pressing the 'filter' button on the list table page. * * The pagination argument should not be touched when the bulk action dropdowns are set to do anything. * * The form closest to the pageInput is the post-filter form. * * @return {void} */ pageInput.closest('form').submit( function() { /* * action = bulk action dropdown at the top of the table * action2 = bulk action dropdow at the bottom of the table */ if ( $('select[name="action"]').val() == -1 && $('select[name="action2"]').val() == -1 && pageInput.val() == currentPage ) pageInput.val('1'); }); } /** * Resets the bulk actions when the search button is clicked. * * @return {void} */ $('.search-box input[type="search"], .search-box input[type="submit"]').mousedown(function () { $('select[name^="action"]').val('-1'); }); /** * Scrolls into view when focus.scroll-into-view is triggered. * * @param {Event} e The event object. * * @return {void} */ $('#contextual-help-link, #show-settings-link').on( 'focus.scroll-into-view', function(e){ if ( e.target.scrollIntoView ) e.target.scrollIntoView(false); }); /** * Disables the submit upload buttons when no data is entered. * * @return {void} */ (function(){ var button, input, form = $('form.wp-upload-form'); // Exit when no upload form is found. if ( ! form.length ) return; button = form.find('input[type="submit"]'); input = form.find('input[type="file"]'); /** * Determines if any data is entered in any file upload input. * * @since 3.5.0 * * @return {void} */ function toggleUploadButton() { // When no inputs have a value, disable the upload buttons. button.prop('disabled', '' === input.map( function() { return $(this).val(); }).get().join('')); } // Update the status initially. toggleUploadButton(); // Update the status when any file input changes. input.on('change', toggleUploadButton); })(); /** * Pins the menu while distraction-free writing is enabled. * * @param {Event} event Event data. * * @since 4.1.0 * * @return {void} */ function pinMenu( event ) { var windowPos = $window.scrollTop(), resizing = ! event || event.type !== 'scroll'; if ( isIOS || $adminmenu.data( 'wp-responsive' ) ) { return; } /* * When the menu is higher than the window and smaller than the entire page. * It should be adjusted to be able to see the entire menu. * * Otherwise it can be accessed normally. */ if ( height.menu + height.adminbar < height.window || height.menu + height.adminbar + 20 > height.wpwrap ) { unpinMenu(); return; } menuIsPinned = true; // If the menu is higher than the window, compensate on scroll. if ( height.menu + height.adminbar > height.window ) { // Check for overscrolling, this happens when swiping up at the top of the document in modern browsers. if ( windowPos < 0 ) { // Stick the menu to the top. if ( ! pinnedMenuTop ) { pinnedMenuTop = true; pinnedMenuBottom = false; $adminMenuWrap.css({ position: 'fixed', top: '', bottom: '' }); } return; } else if ( windowPos + height.window > $document.height() - 1 ) { // When overscrolling at the bottom, stick the menu to the bottom. if ( ! pinnedMenuBottom ) { pinnedMenuBottom = true; pinnedMenuTop = false; $adminMenuWrap.css({ position: 'fixed', top: '', bottom: 0 }); } return; } if ( windowPos > lastScrollPosition ) { // When a down scroll has been detected. // If it was pinned to the top, unpin and calculate relative scroll. if ( pinnedMenuTop ) { pinnedMenuTop = false; // Calculate new offset position. menuTop = $adminMenuWrap.offset().top - height.adminbar - ( windowPos - lastScrollPosition ); if ( menuTop + height.menu + height.adminbar < windowPos + height.window ) { menuTop = windowPos + height.window - height.menu - height.adminbar; } $adminMenuWrap.css({ position: 'absolute', top: menuTop, bottom: '' }); } else if ( ! pinnedMenuBottom && $adminMenuWrap.offset().top + height.menu < windowPos + height.window ) { // Pin it to the bottom. pinnedMenuBottom = true; $adminMenuWrap.css({ position: 'fixed', top: '', bottom: 0 }); } } else if ( windowPos < lastScrollPosition ) { // When a scroll up is detected. // If it was pinned to the bottom, unpin and calculate relative scroll. if ( pinnedMenuBottom ) { pinnedMenuBottom = false; // Calculate new offset position. menuTop = $adminMenuWrap.offset().top - height.adminbar + ( lastScrollPosition - windowPos ); if ( menuTop + height.menu > windowPos + height.window ) { menuTop = windowPos; } $adminMenuWrap.css({ position: 'absolute', top: menuTop, bottom: '' }); } else if ( ! pinnedMenuTop && $adminMenuWrap.offset().top >= windowPos + height.adminbar ) { // Pin it to the top. pinnedMenuTop = true; $adminMenuWrap.css({ position: 'fixed', top: '', bottom: '' }); } } else if ( resizing ) { // Window is being resized. pinnedMenuTop = pinnedMenuBottom = false; // Calculate the new offset. menuTop = windowPos + height.window - height.menu - height.adminbar - 1; if ( menuTop > 0 ) { $adminMenuWrap.css({ position: 'absolute', top: menuTop, bottom: '' }); } else { unpinMenu(); } } } lastScrollPosition = windowPos; } /** * Determines the height of certain elements. * * @since 4.1.0 * * @return {void} */ function resetHeights() { height = { window: $window.height(), wpwrap: $wpwrap.height(), adminbar: $adminbar.height(), menu: $adminMenuWrap.height() }; } /** * Unpins the menu. * * @since 4.1.0 * * @return {void} */ function unpinMenu() { if ( isIOS || ! menuIsPinned ) { return; } pinnedMenuTop = pinnedMenuBottom = menuIsPinned = false; $adminMenuWrap.css({ position: '', top: '', bottom: '' }); } /** * Pins and unpins the menu when applicable. * * @since 4.1.0 * * @return {void} */ function setPinMenu() { resetHeights(); if ( $adminmenu.data('wp-responsive') ) { $body.removeClass( 'sticky-menu' ); unpinMenu(); } else if ( height.menu + height.adminbar > height.window ) { pinMenu(); $body.removeClass( 'sticky-menu' ); } else { $body.addClass( 'sticky-menu' ); unpinMenu(); } } if ( ! isIOS ) { $window.on( 'scroll.pin-menu', pinMenu ); $document.on( 'tinymce-editor-init.pin-menu', function( event, editor ) { editor.on( 'wp-autoresize', resetHeights ); }); } /** * Changes the sortables and responsiveness of metaboxes. * * @since 3.8.0 * * @return {void} */ window.wpResponsive = { /** * Initializes the wpResponsive object. * * @since 3.8.0 * * @return {void} */ init: function() { var self = this; this.maybeDisableSortables = this.maybeDisableSortables.bind( this ); // Modify functionality based on custom activate/deactivate event. $document.on( 'wp-responsive-activate.wp-responsive', function() { self.activate(); }).on( 'wp-responsive-deactivate.wp-responsive', function() { self.deactivate(); }); $( '#wp-admin-bar-menu-toggle a' ).attr( 'aria-expanded', 'false' ); // Toggle sidebar when toggle is clicked. $( '#wp-admin-bar-menu-toggle' ).on( 'click.wp-responsive', function( event ) { event.preventDefault(); // Close any open toolbar submenus. $adminbar.find( '.hover' ).removeClass( 'hover' ); $wpwrap.toggleClass( 'wp-responsive-open' ); if ( $wpwrap.hasClass( 'wp-responsive-open' ) ) { $(this).find('a').attr( 'aria-expanded', 'true' ); $( '#adminmenu a:first' ).focus(); } else { $(this).find('a').attr( 'aria-expanded', 'false' ); } } ); // Add menu events. $adminmenu.on( 'click.wp-responsive', 'li.wp-has-submenu > a', function( event ) { if ( ! $adminmenu.data('wp-responsive') ) { return; } $( this ).parent( 'li' ).toggleClass( 'selected' ); event.preventDefault(); }); self.trigger(); $document.on( 'wp-window-resized.wp-responsive', $.proxy( this.trigger, this ) ); // This needs to run later as UI Sortable may be initialized later on $(document).ready(). $window.on( 'load.wp-responsive', this.maybeDisableSortables ); $document.on( 'postbox-toggled', this.maybeDisableSortables ); // When the screen columns are changed, potentially disable sortables. $( '#screen-options-wrap input' ).on( 'click', this.maybeDisableSortables ); }, /** * Disable sortables if there is only one metabox, or the screen is in one column mode. Otherwise, enable sortables. * * @since 5.3.0 * * @return {void} */ maybeDisableSortables: function() { var width = navigator.userAgent.indexOf('AppleWebKit/') > -1 ? $window.width() : window.innerWidth; if ( ( width <= 782 ) || ( 1 >= $sortables.find( '.ui-sortable-handle:visible' ).length && jQuery( '.columns-prefs-1 input' ).prop( 'checked' ) ) ) { this.disableSortables(); } else { this.enableSortables(); } }, /** * Changes properties of body and admin menu. * * Pins and unpins the menu and adds the auto-fold class to the body. * Makes the admin menu responsive and disables the metabox sortables. * * @since 3.8.0 * * @return {void} */ activate: function() { setPinMenu(); if ( ! $body.hasClass( 'auto-fold' ) ) { $body.addClass( 'auto-fold' ); } $adminmenu.data( 'wp-responsive', 1 ); this.disableSortables(); }, /** * Changes properties of admin menu and enables metabox sortables. * * Pin and unpin the menu. * Removes the responsiveness of the admin menu and enables the metabox sortables. * * @since 3.8.0 * * @return {void} */ deactivate: function() { setPinMenu(); $adminmenu.removeData('wp-responsive'); this.maybeDisableSortables(); }, /** * Sets the responsiveness and enables the overlay based on the viewport width. * * @since 3.8.0 * * @return {void} */ trigger: function() { var viewportWidth = getViewportWidth(); // Exclude IE < 9, it doesn't support @media CSS rules. if ( ! viewportWidth ) { return; } if ( viewportWidth <= 782 ) { if ( ! wpResponsiveActive ) { $document.trigger( 'wp-responsive-activate' ); wpResponsiveActive = true; } } else { if ( wpResponsiveActive ) { $document.trigger( 'wp-responsive-deactivate' ); wpResponsiveActive = false; } } if ( viewportWidth <= 480 ) { this.enableOverlay(); } else { this.disableOverlay(); } this.maybeDisableSortables(); }, /** * Inserts a responsive overlay and toggles the window. * * @since 3.8.0 * * @return {void} */ enableOverlay: function() { if ( $overlay.length === 0 ) { $overlay = $( '
' ) .insertAfter( '#wpcontent' ) .hide() .on( 'click.wp-responsive', function() { $toolbar.find( '.menupop.hover' ).removeClass( 'hover' ); $( this ).hide(); }); } $toolbarPopups.on( 'click.wp-responsive', function() { $overlay.show(); }); }, /** * Disables the responsive overlay and removes the overlay. * * @since 3.8.0 * * @return {void} */ disableOverlay: function() { $toolbarPopups.off( 'click.wp-responsive' ); $overlay.hide(); }, /** * Disables sortables. * * @since 3.8.0 * * @return {void} */ disableSortables: function() { if ( $sortables.length ) { try { $sortables.sortable( 'disable' ); $sortables.find( '.ui-sortable-handle' ).addClass( 'is-non-sortable' ); } catch ( e ) {} } }, /** * Enables sortables. * * @since 3.8.0 * * @return {void} */ enableSortables: function() { if ( $sortables.length ) { try { $sortables.sortable( 'enable' ); $sortables.find( '.ui-sortable-handle' ).removeClass( 'is-non-sortable' ); } catch ( e ) {} } } }; /** * Add an ARIA role `button` to elements that behave like UI controls when JavaScript is on. * * @since 4.5.0 * * @return {void} */ function aria_button_if_js() { $( '.aria-button-if-js' ).attr( 'role', 'button' ); } $( document ).ajaxComplete( function() { aria_button_if_js(); }); /** * Get the viewport width. * * @since 4.7.0 * * @return {number|boolean} The current viewport width or false if the * browser doesn't support innerWidth (IE < 9). */ function getViewportWidth() { var viewportWidth = false; if ( window.innerWidth ) { // On phones, window.innerWidth is affected by zooming. viewportWidth = Math.max( window.innerWidth, document.documentElement.clientWidth ); } return viewportWidth; } /** * Sets the admin menu collapsed/expanded state. * * Sets the global variable `menuState` and triggers a custom event passing * the current menu state. * * @since 4.7.0 * * @return {void} */ function setMenuState() { var viewportWidth = getViewportWidth() || 961; if ( viewportWidth <= 782 ) { menuState = 'responsive'; } else if ( $body.hasClass( 'folded' ) || ( $body.hasClass( 'auto-fold' ) && viewportWidth <= 960 && viewportWidth > 782 ) ) { menuState = 'folded'; } else { menuState = 'open'; } $document.trigger( 'wp-menu-state-set', { state: menuState } ); } // Set the menu state when the window gets resized. $document.on( 'wp-window-resized.set-menu-state', setMenuState ); /** * Sets ARIA attributes on the collapse/expand menu button. * * When the admin menu is open or folded, updates the `aria-expanded` and * `aria-label` attributes of the button to give feedback to assistive * technologies. In the responsive view, the button is always hidden. * * @since 4.7.0 * * @return {void} */ $document.on( 'wp-menu-state-set wp-collapse-menu', function( event, eventData ) { var $collapseButton = $( '#collapse-button' ), ariaExpanded, ariaLabelText; if ( 'folded' === eventData.state ) { ariaExpanded = 'false'; ariaLabelText = __( 'Expand Main menu' ); } else { ariaExpanded = 'true'; ariaLabelText = __( 'Collapse Main menu' ); } $collapseButton.attr({ 'aria-expanded': ariaExpanded, 'aria-label': ariaLabelText }); }); window.wpResponsive.init(); setPinMenu(); setMenuState(); currentMenuItemHasPopup(); makeNoticesDismissible(); aria_button_if_js(); $document.on( 'wp-pin-menu wp-window-resized.pin-menu postboxes-columnchange.pin-menu postbox-toggled.pin-menu wp-collapse-menu.pin-menu wp-scroll-start.pin-menu', setPinMenu ); // Set initial focus on a specific element. $( '.wp-initial-focus' ).focus(); // Toggle update details on update-core.php. $body.on( 'click', '.js-update-details-toggle', function() { var $updateNotice = $( this ).closest( '.js-update-details' ), $progressDiv = $( '#' + $updateNotice.data( 'update-details' ) ); /* * When clicking on "Show details" move the progress div below the update * notice. Make sure it gets moved just the first time. */ if ( ! $progressDiv.hasClass( 'update-details-moved' ) ) { $progressDiv.insertAfter( $updateNotice ).addClass( 'update-details-moved' ); } // Toggle the progress div visibility. $progressDiv.toggle(); // Toggle the Show Details button expanded state. $( this ).attr( 'aria-expanded', $progressDiv.is( ':visible' ) ); }); }); /** * Hides the update button for expired plugin or theme uploads. * * On the "Update plugin/theme from uploaded zip" screen, once the upload has expired, * hides the "Replace current with uploaded" button and displays a warning. * * @since 5.5.0 */ $document.ready( function( $ ) { var $overwrite, $warning; if ( ! $body.hasClass( 'update-php' ) ) { return; } $overwrite = $( 'a.update-from-upload-overwrite' ); $warning = $( '.update-from-upload-expired' ); if ( ! $overwrite.length || ! $warning.length ) { return; } window.setTimeout( function() { $overwrite.hide(); $warning.removeClass( 'hidden' ); if ( window.wp && window.wp.a11y ) { window.wp.a11y.speak( $warning.text() ); } }, 7140000 // 119 minutes. The uploaded file is deleted after 2 hours. ); } ); // Fire a custom jQuery event at the end of window resize. ( function() { var timeout; /** * Triggers the WP window-resize event. * * @since 3.8.0 * * @return {void} */ function triggerEvent() { $document.trigger( 'wp-window-resized' ); } /** * Fires the trigger event again after 200 ms. * * @since 3.8.0 * * @return {void} */ function fireOnce() { window.clearTimeout( timeout ); timeout = window.setTimeout( triggerEvent, 200 ); } $window.on( 'resize.wp-fire-once', fireOnce ); }()); // Make Windows 8 devices play along nicely. (function(){ if ( '-ms-user-select' in document.documentElement.style && navigator.userAgent.match(/IEMobile\/10\.0/) ) { var msViewportStyle = document.createElement( 'style' ); msViewportStyle.appendChild( document.createTextNode( '@-ms-viewport{width:auto!important}' ) ); document.getElementsByTagName( 'head' )[0].appendChild( msViewportStyle ); } })(); }( jQuery, window )); PK!- js/user-suggest.jsnu[/** * Suggests users in a multisite environment. * * For input fields where the admin can select a user based on email or * username, this script shows an autocompletion menu for these inputs. Should * only be used in a multisite environment. Only users in the currently active * site are shown. * * @since 3.4.0 * @output wp-admin/js/user-suggest.js */ /* global ajaxurl, current_site_id, isRtl */ (function( $ ) { var id = ( typeof current_site_id !== 'undefined' ) ? '&site_id=' + current_site_id : ''; $(document).ready( function() { var position = { offset: '0, -1' }; if ( typeof isRtl !== 'undefined' && isRtl ) { position.my = 'right top'; position.at = 'right bottom'; } /** * Adds an autocomplete function to input fields marked with the class * 'wp-suggest-user'. * * A minimum of two characters is required to trigger the suggestions. The * autocompletion menu is shown at the left bottom of the input field. On * RTL installations, it is shown at the right top. Adds the class 'open' to * the input field when the autocompletion menu is shown. * * Does a backend call to retrieve the users. * * Optional data-attributes: * - data-autocomplete-type (add, search) * The action that is going to be performed: search for existing users * or add a new one. Default: add * - data-autocomplete-field (user_login, user_email) * The field that is returned as the value for the suggestion. * Default: user_login * * @see wp-admin/includes/admin-actions.php:wp_ajax_autocomplete_user() */ $( '.wp-suggest-user' ).each( function(){ var $this = $( this ), autocompleteType = ( typeof $this.data( 'autocompleteType' ) !== 'undefined' ) ? $this.data( 'autocompleteType' ) : 'add', autocompleteField = ( typeof $this.data( 'autocompleteField' ) !== 'undefined' ) ? $this.data( 'autocompleteField' ) : 'user_login'; $this.autocomplete({ source: ajaxurl + '?action=autocomplete-user&autocomplete_type=' + autocompleteType + '&autocomplete_field=' + autocompleteField + id, delay: 500, minLength: 2, position: position, open: function() { $( this ).addClass( 'open' ); }, close: function() { $( this ).removeClass( 'open' ); } }); }); }); })( jQuery ); PK!QCjs/custom-background.min.jsnu[/*! This file is auto-generated */ !function(e){e(document).ready(function(){var o,a=e("#custom-background-image");e("#background-color").wpColorPicker({change:function(n,c){a.css("background-color",c.color.toString())},clear:function(){a.css("background-color","")}}),e('select[name="background-size"]').change(function(){a.css("background-size",e(this).val())}),e('input[name="background-position"]').change(function(){a.css("background-position",e(this).val())}),e('input[name="background-repeat"]').change(function(){a.css("background-repeat",e(this).is(":checked")?"repeat":"no-repeat")}),e('input[name="background-attachment"]').change(function(){a.css("background-attachment",e(this).is(":checked")?"scroll":"fixed")}),e("#choose-from-library-link").click(function(n){var c=e(this);n.preventDefault(),o||(o=wp.media.frames.customBackground=wp.media({title:c.data("choose"),library:{type:"image"},button:{text:c.data("update"),close:!1}})).on("select",function(){var n=o.state().get("selection").first(),c=e("#_wpnonce").val()||"";e.post(ajaxurl,{action:"set-background-image",attachment_id:n.id,_ajax_nonce:c,size:"full"}).done(function(){window.location.reload()})}),o.open()})})}(jQuery);PK!dUUjs/customize-nav-menus.jsnu[/** * @output wp-admin/js/customize-nav-menus.js */ /* global _wpCustomizeNavMenusSettings, wpNavMenu, console */ ( function( api, wp, $ ) { 'use strict'; /** * Set up wpNavMenu for drag and drop. */ wpNavMenu.originalInit = wpNavMenu.init; wpNavMenu.options.menuItemDepthPerLevel = 20; wpNavMenu.options.sortableItems = '> .customize-control-nav_menu_item'; wpNavMenu.options.targetTolerance = 10; wpNavMenu.init = function() { this.jQueryExtensions(); }; /** * @namespace wp.customize.Menus */ api.Menus = api.Menus || {}; // Link settings. api.Menus.data = { itemTypes: [], l10n: {}, settingTransport: 'refresh', phpIntMax: 0, defaultSettingValues: { nav_menu: {}, nav_menu_item: {} }, locationSlugMappedToName: {} }; if ( 'undefined' !== typeof _wpCustomizeNavMenusSettings ) { $.extend( api.Menus.data, _wpCustomizeNavMenusSettings ); } /** * Newly-created Nav Menus and Nav Menu Items have negative integer IDs which * serve as placeholders until Save & Publish happens. * * @alias wp.customize.Menus.generatePlaceholderAutoIncrementId * * @return {number} */ api.Menus.generatePlaceholderAutoIncrementId = function() { return -Math.ceil( api.Menus.data.phpIntMax * Math.random() ); }; /** * wp.customize.Menus.AvailableItemModel * * A single available menu item model. See PHP's WP_Customize_Nav_Menu_Item_Setting class. * * @class wp.customize.Menus.AvailableItemModel * @augments Backbone.Model */ api.Menus.AvailableItemModel = Backbone.Model.extend( $.extend( { id: null // This is only used by Backbone. }, api.Menus.data.defaultSettingValues.nav_menu_item ) ); /** * wp.customize.Menus.AvailableItemCollection * * Collection for available menu item models. * * @class wp.customize.Menus.AvailableItemCollection * @augments Backbone.Collection */ api.Menus.AvailableItemCollection = Backbone.Collection.extend(/** @lends wp.customize.Menus.AvailableItemCollection.prototype */{ model: api.Menus.AvailableItemModel, sort_key: 'order', comparator: function( item ) { return -item.get( this.sort_key ); }, sortByField: function( fieldName ) { this.sort_key = fieldName; this.sort(); } }); api.Menus.availableMenuItems = new api.Menus.AvailableItemCollection( api.Menus.data.availableMenuItems ); /** * Insert a new `auto-draft` post. * * @since 4.7.0 * @alias wp.customize.Menus.insertAutoDraftPost * * @param {Object} params - Parameters for the draft post to create. * @param {string} params.post_type - Post type to add. * @param {string} params.post_title - Post title to use. * @return {jQuery.promise} Promise resolved with the added post. */ api.Menus.insertAutoDraftPost = function insertAutoDraftPost( params ) { var request, deferred = $.Deferred(); request = wp.ajax.post( 'customize-nav-menus-insert-auto-draft', { 'customize-menus-nonce': api.settings.nonce['customize-menus'], 'wp_customize': 'on', 'customize_changeset_uuid': api.settings.changeset.uuid, 'params': params } ); request.done( function( response ) { if ( response.post_id ) { api( 'nav_menus_created_posts' ).set( api( 'nav_menus_created_posts' ).get().concat( [ response.post_id ] ) ); if ( 'page' === params.post_type ) { // Activate static front page controls as this could be the first page created. if ( api.section.has( 'static_front_page' ) ) { api.section( 'static_front_page' ).activate(); } // Add new page to dropdown-pages controls. api.control.each( function( control ) { var select; if ( 'dropdown-pages' === control.params.type ) { select = control.container.find( 'select[name^="_customize-dropdown-pages-"]' ); select.append( new Option( params.post_title, response.post_id ) ); } } ); } deferred.resolve( response ); } } ); request.fail( function( response ) { var error = response || ''; if ( 'undefined' !== typeof response.message ) { error = response.message; } console.error( error ); deferred.rejectWith( error ); } ); return deferred.promise(); }; api.Menus.AvailableMenuItemsPanelView = wp.Backbone.View.extend(/** @lends wp.customize.Menus.AvailableMenuItemsPanelView.prototype */{ el: '#available-menu-items', events: { 'input #menu-items-search': 'debounceSearch', 'focus .menu-item-tpl': 'focus', 'click .menu-item-tpl': '_submit', 'click #custom-menu-item-submit': '_submitLink', 'keypress #custom-menu-item-name': '_submitLink', 'click .new-content-item .add-content': '_submitNew', 'keypress .create-item-input': '_submitNew', 'keydown': 'keyboardAccessible' }, // Cache current selected menu item. selected: null, // Cache menu control that opened the panel. currentMenuControl: null, debounceSearch: null, $search: null, $clearResults: null, searchTerm: '', rendered: false, pages: {}, sectionContent: '', loading: false, addingNew: false, /** * wp.customize.Menus.AvailableMenuItemsPanelView * * View class for the available menu items panel. * * @constructs wp.customize.Menus.AvailableMenuItemsPanelView * @augments wp.Backbone.View */ initialize: function() { var self = this; if ( ! api.panel.has( 'nav_menus' ) ) { return; } this.$search = $( '#menu-items-search' ); this.$clearResults = this.$el.find( '.clear-results' ); this.sectionContent = this.$el.find( '.available-menu-items-list' ); this.debounceSearch = _.debounce( self.search, 500 ); _.bindAll( this, 'close' ); /* * If the available menu items panel is open and the customize controls * are interacted with (other than an item being deleted), then close * the available menu items panel. Also close on back button click. */ $( '#customize-controls, .customize-section-back' ).on( 'click keydown', function( e ) { var isDeleteBtn = $( e.target ).is( '.item-delete, .item-delete *' ), isAddNewBtn = $( e.target ).is( '.add-new-menu-item, .add-new-menu-item *' ); if ( $( 'body' ).hasClass( 'adding-menu-items' ) && ! isDeleteBtn && ! isAddNewBtn ) { self.close(); } } ); // Clear the search results and trigger an `input` event to fire a new search. this.$clearResults.on( 'click', function() { self.$search.val( '' ).focus().trigger( 'input' ); } ); this.$el.on( 'input', '#custom-menu-item-name.invalid, #custom-menu-item-url.invalid', function() { $( this ).removeClass( 'invalid' ); }); // Load available items if it looks like we'll need them. api.panel( 'nav_menus' ).container.bind( 'expanded', function() { if ( ! self.rendered ) { self.initList(); self.rendered = true; } }); // Load more items. this.sectionContent.scroll( function() { var totalHeight = self.$el.find( '.accordion-section.open .available-menu-items-list' ).prop( 'scrollHeight' ), visibleHeight = self.$el.find( '.accordion-section.open' ).height(); if ( ! self.loading && $( this ).scrollTop() > 3 / 4 * totalHeight - visibleHeight ) { var type = $( this ).data( 'type' ), object = $( this ).data( 'object' ); if ( 'search' === type ) { if ( self.searchTerm ) { self.doSearch( self.pages.search ); } } else { self.loadItems( [ { type: type, object: object } ] ); } } }); // Close the panel if the URL in the preview changes. api.previewer.bind( 'url', this.close ); self.delegateEvents(); }, // Search input change handler. search: function( event ) { var $searchSection = $( '#available-menu-items-search' ), $otherSections = $( '#available-menu-items .accordion-section' ).not( $searchSection ); if ( ! event ) { return; } if ( this.searchTerm === event.target.value ) { return; } if ( '' !== event.target.value && ! $searchSection.hasClass( 'open' ) ) { $otherSections.fadeOut( 100 ); $searchSection.find( '.accordion-section-content' ).slideDown( 'fast' ); $searchSection.addClass( 'open' ); this.$clearResults.addClass( 'is-visible' ); } else if ( '' === event.target.value ) { $searchSection.removeClass( 'open' ); $otherSections.show(); this.$clearResults.removeClass( 'is-visible' ); } this.searchTerm = event.target.value; this.pages.search = 1; this.doSearch( 1 ); }, // Get search results. doSearch: function( page ) { var self = this, params, $section = $( '#available-menu-items-search' ), $content = $section.find( '.accordion-section-content' ), itemTemplate = wp.template( 'available-menu-item' ); if ( self.currentRequest ) { self.currentRequest.abort(); } if ( page < 0 ) { return; } else if ( page > 1 ) { $section.addClass( 'loading-more' ); $content.attr( 'aria-busy', 'true' ); wp.a11y.speak( api.Menus.data.l10n.itemsLoadingMore ); } else if ( '' === self.searchTerm ) { $content.html( '' ); wp.a11y.speak( '' ); return; } $section.addClass( 'loading' ); self.loading = true; params = api.previewer.query( { excludeCustomizedSaved: true } ); _.extend( params, { 'customize-menus-nonce': api.settings.nonce['customize-menus'], 'wp_customize': 'on', 'search': self.searchTerm, 'page': page } ); self.currentRequest = wp.ajax.post( 'search-available-menu-items-customizer', params ); self.currentRequest.done(function( data ) { var items; if ( 1 === page ) { // Clear previous results as it's a new search. $content.empty(); } $section.removeClass( 'loading loading-more' ); $content.attr( 'aria-busy', 'false' ); $section.addClass( 'open' ); self.loading = false; items = new api.Menus.AvailableItemCollection( data.items ); self.collection.add( items.models ); items.each( function( menuItem ) { $content.append( itemTemplate( menuItem.attributes ) ); } ); if ( 20 > items.length ) { self.pages.search = -1; // Up to 20 posts and 20 terms in results, if <20, no more results for either. } else { self.pages.search = self.pages.search + 1; } if ( items && page > 1 ) { wp.a11y.speak( api.Menus.data.l10n.itemsFoundMore.replace( '%d', items.length ) ); } else if ( items && page === 1 ) { wp.a11y.speak( api.Menus.data.l10n.itemsFound.replace( '%d', items.length ) ); } }); self.currentRequest.fail(function( data ) { // data.message may be undefined, for example when typing slow and the request is aborted. if ( data.message ) { $content.empty().append( $( '
  • ' ).text( data.message ) ); wp.a11y.speak( data.message ); } self.pages.search = -1; }); self.currentRequest.always(function() { $section.removeClass( 'loading loading-more' ); $content.attr( 'aria-busy', 'false' ); self.loading = false; self.currentRequest = null; }); }, // Render the individual items. initList: function() { var self = this; // Render the template for each item by type. _.each( api.Menus.data.itemTypes, function( itemType ) { self.pages[ itemType.type + ':' + itemType.object ] = 0; } ); self.loadItems( api.Menus.data.itemTypes ); }, /** * Load available nav menu items. * * @since 4.3.0 * @since 4.7.0 Changed function signature to take list of item types instead of single type/object. * @access private * * @param {Array.} itemTypes List of objects containing type and key. * @param {string} deprecated Formerly the object parameter. * @return {void} */ loadItems: function( itemTypes, deprecated ) { var self = this, _itemTypes, requestItemTypes = [], params, request, itemTemplate, availableMenuItemContainers = {}; itemTemplate = wp.template( 'available-menu-item' ); if ( _.isString( itemTypes ) && _.isString( deprecated ) ) { _itemTypes = [ { type: itemTypes, object: deprecated } ]; } else { _itemTypes = itemTypes; } _.each( _itemTypes, function( itemType ) { var container, name = itemType.type + ':' + itemType.object; if ( -1 === self.pages[ name ] ) { return; // Skip types for which there are no more results. } container = $( '#available-menu-items-' + itemType.type + '-' + itemType.object ); container.find( '.accordion-section-title' ).addClass( 'loading' ); availableMenuItemContainers[ name ] = container; requestItemTypes.push( { object: itemType.object, type: itemType.type, page: self.pages[ name ] } ); } ); if ( 0 === requestItemTypes.length ) { return; } self.loading = true; params = api.previewer.query( { excludeCustomizedSaved: true } ); _.extend( params, { 'customize-menus-nonce': api.settings.nonce['customize-menus'], 'wp_customize': 'on', 'item_types': requestItemTypes } ); request = wp.ajax.post( 'load-available-menu-items-customizer', params ); request.done(function( data ) { var typeInner; _.each( data.items, function( typeItems, name ) { if ( 0 === typeItems.length ) { if ( 0 === self.pages[ name ] ) { availableMenuItemContainers[ name ].find( '.accordion-section-title' ) .addClass( 'cannot-expand' ) .removeClass( 'loading' ) .find( '.accordion-section-title > button' ) .prop( 'tabIndex', -1 ); } self.pages[ name ] = -1; return; } else if ( ( 'post_type:page' === name ) && ( ! availableMenuItemContainers[ name ].hasClass( 'open' ) ) ) { availableMenuItemContainers[ name ].find( '.accordion-section-title > button' ).click(); } typeItems = new api.Menus.AvailableItemCollection( typeItems ); // @todo Why is this collection created and then thrown away? self.collection.add( typeItems.models ); typeInner = availableMenuItemContainers[ name ].find( '.available-menu-items-list' ); typeItems.each( function( menuItem ) { typeInner.append( itemTemplate( menuItem.attributes ) ); } ); self.pages[ name ] += 1; }); }); request.fail(function( data ) { if ( typeof console !== 'undefined' && console.error ) { console.error( data ); } }); request.always(function() { _.each( availableMenuItemContainers, function( container ) { container.find( '.accordion-section-title' ).removeClass( 'loading' ); } ); self.loading = false; }); }, // Adjust the height of each section of items to fit the screen. itemSectionHeight: function() { var sections, lists, totalHeight, accordionHeight, diff; totalHeight = window.innerHeight; sections = this.$el.find( '.accordion-section:not( #available-menu-items-search ) .accordion-section-content' ); lists = this.$el.find( '.accordion-section:not( #available-menu-items-search ) .available-menu-items-list:not(":only-child")' ); accordionHeight = 46 * ( 1 + sections.length ) + 14; // Magic numbers. diff = totalHeight - accordionHeight; if ( 120 < diff && 290 > diff ) { sections.css( 'max-height', diff ); lists.css( 'max-height', ( diff - 60 ) ); } }, // Highlights a menu item. select: function( menuitemTpl ) { this.selected = $( menuitemTpl ); this.selected.siblings( '.menu-item-tpl' ).removeClass( 'selected' ); this.selected.addClass( 'selected' ); }, // Highlights a menu item on focus. focus: function( event ) { this.select( $( event.currentTarget ) ); }, // Submit handler for keypress and click on menu item. _submit: function( event ) { // Only proceed with keypress if it is Enter or Spacebar. if ( 'keypress' === event.type && ( 13 !== event.which && 32 !== event.which ) ) { return; } this.submit( $( event.currentTarget ) ); }, // Adds a selected menu item to the menu. submit: function( menuitemTpl ) { var menuitemId, menu_item; if ( ! menuitemTpl ) { menuitemTpl = this.selected; } if ( ! menuitemTpl || ! this.currentMenuControl ) { return; } this.select( menuitemTpl ); menuitemId = $( this.selected ).data( 'menu-item-id' ); menu_item = this.collection.findWhere( { id: menuitemId } ); if ( ! menu_item ) { return; } this.currentMenuControl.addItemToMenu( menu_item.attributes ); $( menuitemTpl ).find( '.menu-item-handle' ).addClass( 'item-added' ); }, // Submit handler for keypress and click on custom menu item. _submitLink: function( event ) { // Only proceed with keypress if it is Enter. if ( 'keypress' === event.type && 13 !== event.which ) { return; } this.submitLink(); }, // Adds the custom menu item to the menu. submitLink: function() { var menuItem, itemName = $( '#custom-menu-item-name' ), itemUrl = $( '#custom-menu-item-url' ), url = itemUrl.val().trim(), urlRegex; if ( ! this.currentMenuControl ) { return; } /* * Allow URLs including: * - http://example.com/ * - //example.com * - /directory/ * - ?query-param * - #target * - mailto:foo@example.com * * Any further validation will be handled on the server when the setting is attempted to be saved, * so this pattern does not need to be complete. */ urlRegex = /^((\w+:)?\/\/\w.*|\w+:(?!\/\/$)|\/|\?|#)/; if ( '' === itemName.val() ) { itemName.addClass( 'invalid' ); return; } else if ( ! urlRegex.test( url ) ) { itemUrl.addClass( 'invalid' ); return; } menuItem = { 'title': itemName.val(), 'url': url, 'type': 'custom', 'type_label': api.Menus.data.l10n.custom_label, 'object': 'custom' }; this.currentMenuControl.addItemToMenu( menuItem ); // Reset the custom link form. itemUrl.val( '' ).attr( 'placeholder', 'https://' ); itemName.val( '' ); }, /** * Submit handler for keypress (enter) on field and click on button. * * @since 4.7.0 * @private * * @param {jQuery.Event} event Event. * @return {void} */ _submitNew: function( event ) { var container; // Only proceed with keypress if it is Enter. if ( 'keypress' === event.type && 13 !== event.which ) { return; } if ( this.addingNew ) { return; } container = $( event.target ).closest( '.accordion-section' ); this.submitNew( container ); }, /** * Creates a new object and adds an associated menu item to the menu. * * @since 4.7.0 * @private * * @param {jQuery} container * @return {void} */ submitNew: function( container ) { var panel = this, itemName = container.find( '.create-item-input' ), title = itemName.val(), dataContainer = container.find( '.available-menu-items-list' ), itemType = dataContainer.data( 'type' ), itemObject = dataContainer.data( 'object' ), itemTypeLabel = dataContainer.data( 'type_label' ), promise; if ( ! this.currentMenuControl ) { return; } // Only posts are supported currently. if ( 'post_type' !== itemType ) { return; } if ( '' === $.trim( itemName.val() ) ) { itemName.addClass( 'invalid' ); itemName.focus(); return; } else { itemName.removeClass( 'invalid' ); container.find( '.accordion-section-title' ).addClass( 'loading' ); } panel.addingNew = true; itemName.attr( 'disabled', 'disabled' ); promise = api.Menus.insertAutoDraftPost( { post_title: title, post_type: itemObject } ); promise.done( function( data ) { var availableItem, $content, itemElement; availableItem = new api.Menus.AvailableItemModel( { 'id': 'post-' + data.post_id, // Used for available menu item Backbone models. 'title': itemName.val(), 'type': itemType, 'type_label': itemTypeLabel, 'object': itemObject, 'object_id': data.post_id, 'url': data.url } ); // Add new item to menu. panel.currentMenuControl.addItemToMenu( availableItem.attributes ); // Add the new item to the list of available items. api.Menus.availableMenuItemsPanel.collection.add( availableItem ); $content = container.find( '.available-menu-items-list' ); itemElement = $( wp.template( 'available-menu-item' )( availableItem.attributes ) ); itemElement.find( '.menu-item-handle:first' ).addClass( 'item-added' ); $content.prepend( itemElement ); $content.scrollTop(); // Reset the create content form. itemName.val( '' ).removeAttr( 'disabled' ); panel.addingNew = false; container.find( '.accordion-section-title' ).removeClass( 'loading' ); } ); }, // Opens the panel. open: function( menuControl ) { var panel = this, close; this.currentMenuControl = menuControl; this.itemSectionHeight(); if ( api.section.has( 'publish_settings' ) ) { api.section( 'publish_settings' ).collapse(); } $( 'body' ).addClass( 'adding-menu-items' ); close = function() { panel.close(); $( this ).off( 'click', close ); }; $( '#customize-preview' ).on( 'click', close ); // Collapse all controls. _( this.currentMenuControl.getMenuItemControls() ).each( function( control ) { control.collapseForm(); } ); this.$el.find( '.selected' ).removeClass( 'selected' ); this.$search.focus(); }, // Closes the panel. close: function( options ) { options = options || {}; if ( options.returnFocus && this.currentMenuControl ) { this.currentMenuControl.container.find( '.add-new-menu-item' ).focus(); } this.currentMenuControl = null; this.selected = null; $( 'body' ).removeClass( 'adding-menu-items' ); $( '#available-menu-items .menu-item-handle.item-added' ).removeClass( 'item-added' ); this.$search.val( '' ).trigger( 'input' ); }, // Add a few keyboard enhancements to the panel. keyboardAccessible: function( event ) { var isEnter = ( 13 === event.which ), isEsc = ( 27 === event.which ), isBackTab = ( 9 === event.which && event.shiftKey ), isSearchFocused = $( event.target ).is( this.$search ); // If enter pressed but nothing entered, don't do anything. if ( isEnter && ! this.$search.val() ) { return; } if ( isSearchFocused && isBackTab ) { this.currentMenuControl.container.find( '.add-new-menu-item' ).focus(); event.preventDefault(); // Avoid additional back-tab. } else if ( isEsc ) { this.close( { returnFocus: true } ); } } }); /** * wp.customize.Menus.MenusPanel * * Customizer panel for menus. This is used only for screen options management. * Note that 'menus' must match the WP_Customize_Menu_Panel::$type. * * @class wp.customize.Menus.MenusPanel * @augments wp.customize.Panel */ api.Menus.MenusPanel = api.Panel.extend(/** @lends wp.customize.Menus.MenusPanel.prototype */{ attachEvents: function() { api.Panel.prototype.attachEvents.call( this ); var panel = this, panelMeta = panel.container.find( '.panel-meta' ), help = panelMeta.find( '.customize-help-toggle' ), content = panelMeta.find( '.customize-panel-description' ), options = $( '#screen-options-wrap' ), button = panelMeta.find( '.customize-screen-options-toggle' ); button.on( 'click keydown', function( event ) { if ( api.utils.isKeydownButNotEnterEvent( event ) ) { return; } event.preventDefault(); // Hide description. if ( content.not( ':hidden' ) ) { content.slideUp( 'fast' ); help.attr( 'aria-expanded', 'false' ); } if ( 'true' === button.attr( 'aria-expanded' ) ) { button.attr( 'aria-expanded', 'false' ); panelMeta.removeClass( 'open' ); panelMeta.removeClass( 'active-menu-screen-options' ); options.slideUp( 'fast' ); } else { button.attr( 'aria-expanded', 'true' ); panelMeta.addClass( 'open' ); panelMeta.addClass( 'active-menu-screen-options' ); options.slideDown( 'fast' ); } return false; } ); // Help toggle. help.on( 'click keydown', function( event ) { if ( api.utils.isKeydownButNotEnterEvent( event ) ) { return; } event.preventDefault(); if ( 'true' === button.attr( 'aria-expanded' ) ) { button.attr( 'aria-expanded', 'false' ); help.attr( 'aria-expanded', 'true' ); panelMeta.addClass( 'open' ); panelMeta.removeClass( 'active-menu-screen-options' ); options.slideUp( 'fast' ); content.slideDown( 'fast' ); } } ); }, /** * Update field visibility when clicking on the field toggles. */ ready: function() { var panel = this; panel.container.find( '.hide-column-tog' ).click( function() { panel.saveManageColumnsState(); }); // Inject additional heading into the menu locations section's head container. api.section( 'menu_locations', function( section ) { section.headContainer.prepend( wp.template( 'nav-menu-locations-header' )( api.Menus.data ) ); } ); }, /** * Save hidden column states. * * @since 4.3.0 * @private * * @return {void} */ saveManageColumnsState: _.debounce( function() { var panel = this; if ( panel._updateHiddenColumnsRequest ) { panel._updateHiddenColumnsRequest.abort(); } panel._updateHiddenColumnsRequest = wp.ajax.post( 'hidden-columns', { hidden: panel.hidden(), screenoptionnonce: $( '#screenoptionnonce' ).val(), page: 'nav-menus' } ); panel._updateHiddenColumnsRequest.always( function() { panel._updateHiddenColumnsRequest = null; } ); }, 2000 ), /** * @deprecated Since 4.7.0 now that the nav_menu sections are responsible for toggling the classes on their own containers. */ checked: function() {}, /** * @deprecated Since 4.7.0 now that the nav_menu sections are responsible for toggling the classes on their own containers. */ unchecked: function() {}, /** * Get hidden fields. * * @since 4.3.0 * @private * * @return {Array} Fields (columns) that are hidden. */ hidden: function() { return $( '.hide-column-tog' ).not( ':checked' ).map( function() { var id = this.id; return id.substring( 0, id.length - 5 ); }).get().join( ',' ); } } ); /** * wp.customize.Menus.MenuSection * * Customizer section for menus. This is used only for lazy-loading child controls. * Note that 'nav_menu' must match the WP_Customize_Menu_Section::$type. * * @class wp.customize.Menus.MenuSection * @augments wp.customize.Section */ api.Menus.MenuSection = api.Section.extend(/** @lends wp.customize.Menus.MenuSection.prototype */{ /** * Initialize. * * @since 4.3.0 * * @param {string} id * @param {Object} options */ initialize: function( id, options ) { var section = this; api.Section.prototype.initialize.call( section, id, options ); section.deferred.initSortables = $.Deferred(); }, /** * Ready. */ ready: function() { var section = this, fieldActiveToggles, handleFieldActiveToggle; if ( 'undefined' === typeof section.params.menu_id ) { throw new Error( 'params.menu_id was not defined' ); } /* * Since newly created sections won't be registered in PHP, we need to prevent the * preview's sending of the activeSections to result in this control * being deactivated when the preview refreshes. So we can hook onto * the setting that has the same ID and its presence can dictate * whether the section is active. */ section.active.validate = function() { if ( ! api.has( section.id ) ) { return false; } return !! api( section.id ).get(); }; section.populateControls(); section.navMenuLocationSettings = {}; section.assignedLocations = new api.Value( [] ); api.each(function( setting, id ) { var matches = id.match( /^nav_menu_locations\[(.+?)]/ ); if ( matches ) { section.navMenuLocationSettings[ matches[1] ] = setting; setting.bind( function() { section.refreshAssignedLocations(); }); } }); section.assignedLocations.bind(function( to ) { section.updateAssignedLocationsInSectionTitle( to ); }); section.refreshAssignedLocations(); api.bind( 'pane-contents-reflowed', function() { // Skip menus that have been removed. if ( ! section.contentContainer.parent().length ) { return; } section.container.find( '.menu-item .menu-item-reorder-nav button' ).attr({ 'tabindex': '0', 'aria-hidden': 'false' }); section.container.find( '.menu-item.move-up-disabled .menus-move-up' ).attr({ 'tabindex': '-1', 'aria-hidden': 'true' }); section.container.find( '.menu-item.move-down-disabled .menus-move-down' ).attr({ 'tabindex': '-1', 'aria-hidden': 'true' }); section.container.find( '.menu-item.move-left-disabled .menus-move-left' ).attr({ 'tabindex': '-1', 'aria-hidden': 'true' }); section.container.find( '.menu-item.move-right-disabled .menus-move-right' ).attr({ 'tabindex': '-1', 'aria-hidden': 'true' }); } ); /** * Update the active field class for the content container for a given checkbox toggle. * * @this {jQuery} * @return {void} */ handleFieldActiveToggle = function() { var className = 'field-' + $( this ).val() + '-active'; section.contentContainer.toggleClass( className, $( this ).prop( 'checked' ) ); }; fieldActiveToggles = api.panel( 'nav_menus' ).contentContainer.find( '.metabox-prefs:first' ).find( '.hide-column-tog' ); fieldActiveToggles.each( handleFieldActiveToggle ); fieldActiveToggles.on( 'click', handleFieldActiveToggle ); }, populateControls: function() { var section = this, menuNameControlId, menuLocationsControlId, menuAutoAddControlId, menuDeleteControlId, menuControl, menuNameControl, menuLocationsControl, menuAutoAddControl, menuDeleteControl; // Add the control for managing the menu name. menuNameControlId = section.id + '[name]'; menuNameControl = api.control( menuNameControlId ); if ( ! menuNameControl ) { menuNameControl = new api.controlConstructor.nav_menu_name( menuNameControlId, { type: 'nav_menu_name', label: api.Menus.data.l10n.menuNameLabel, section: section.id, priority: 0, settings: { 'default': section.id } } ); api.control.add( menuNameControl ); menuNameControl.active.set( true ); } // Add the menu control. menuControl = api.control( section.id ); if ( ! menuControl ) { menuControl = new api.controlConstructor.nav_menu( section.id, { type: 'nav_menu', section: section.id, priority: 998, settings: { 'default': section.id }, menu_id: section.params.menu_id } ); api.control.add( menuControl ); menuControl.active.set( true ); } // Add the menu locations control. menuLocationsControlId = section.id + '[locations]'; menuLocationsControl = api.control( menuLocationsControlId ); if ( ! menuLocationsControl ) { menuLocationsControl = new api.controlConstructor.nav_menu_locations( menuLocationsControlId, { section: section.id, priority: 999, settings: { 'default': section.id }, menu_id: section.params.menu_id } ); api.control.add( menuLocationsControl.id, menuLocationsControl ); menuControl.active.set( true ); } // Add the control for managing the menu auto_add. menuAutoAddControlId = section.id + '[auto_add]'; menuAutoAddControl = api.control( menuAutoAddControlId ); if ( ! menuAutoAddControl ) { menuAutoAddControl = new api.controlConstructor.nav_menu_auto_add( menuAutoAddControlId, { type: 'nav_menu_auto_add', label: '', section: section.id, priority: 1000, settings: { 'default': section.id } } ); api.control.add( menuAutoAddControl ); menuAutoAddControl.active.set( true ); } // Add the control for deleting the menu. menuDeleteControlId = section.id + '[delete]'; menuDeleteControl = api.control( menuDeleteControlId ); if ( ! menuDeleteControl ) { menuDeleteControl = new api.Control( menuDeleteControlId, { section: section.id, priority: 1001, templateId: 'nav-menu-delete-button' } ); api.control.add( menuDeleteControl.id, menuDeleteControl ); menuDeleteControl.active.set( true ); menuDeleteControl.deferred.embedded.done( function () { menuDeleteControl.container.find( 'button' ).on( 'click', function() { var menuId = section.params.menu_id; var menuControl = api.Menus.getMenuControl( menuId ); menuControl.setting.set( false ); }); } ); } }, /** * */ refreshAssignedLocations: function() { var section = this, menuTermId = section.params.menu_id, currentAssignedLocations = []; _.each( section.navMenuLocationSettings, function( setting, themeLocation ) { if ( setting() === menuTermId ) { currentAssignedLocations.push( themeLocation ); } }); section.assignedLocations.set( currentAssignedLocations ); }, /** * @param {Array} themeLocationSlugs Theme location slugs. */ updateAssignedLocationsInSectionTitle: function( themeLocationSlugs ) { var section = this, $title; $title = section.container.find( '.accordion-section-title:first' ); $title.find( '.menu-in-location' ).remove(); _.each( themeLocationSlugs, function( themeLocationSlug ) { var $label, locationName; $label = $( '' ); locationName = api.Menus.data.locationSlugMappedToName[ themeLocationSlug ]; $label.text( api.Menus.data.l10n.menuLocation.replace( '%s', locationName ) ); $title.append( $label ); }); section.container.toggleClass( 'assigned-to-menu-location', 0 !== themeLocationSlugs.length ); }, onChangeExpanded: function( expanded, args ) { var section = this, completeCallback; if ( expanded ) { wpNavMenu.menuList = section.contentContainer; wpNavMenu.targetList = wpNavMenu.menuList; // Add attributes needed by wpNavMenu. $( '#menu-to-edit' ).removeAttr( 'id' ); wpNavMenu.menuList.attr( 'id', 'menu-to-edit' ).addClass( 'menu' ); _.each( api.section( section.id ).controls(), function( control ) { if ( 'nav_menu_item' === control.params.type ) { control.actuallyEmbed(); } } ); // Make sure Sortables is initialized after the section has been expanded to prevent `offset` issues. if ( args.completeCallback ) { completeCallback = args.completeCallback; } args.completeCallback = function() { if ( 'resolved' !== section.deferred.initSortables.state() ) { wpNavMenu.initSortables(); // Depends on menu-to-edit ID being set above. section.deferred.initSortables.resolve( wpNavMenu.menuList ); // Now MenuControl can extend the sortable. // @todo Note that wp.customize.reflowPaneContents() is debounced, // so this immediate change will show a slight flicker while priorities get updated. api.control( 'nav_menu[' + String( section.params.menu_id ) + ']' ).reflowMenuItems(); } if ( _.isFunction( completeCallback ) ) { completeCallback(); } }; } api.Section.prototype.onChangeExpanded.call( section, expanded, args ); }, /** * Highlight how a user may create new menu items. * * This method reminds the user to create new menu items and how. * It's exposed this way because this class knows best which UI needs * highlighted but those expanding this section know more about why and * when the affordance should be highlighted. * * @since 4.9.0 * * @return {void} */ highlightNewItemButton: function() { api.utils.highlightButton( this.contentContainer.find( '.add-new-menu-item' ), { delay: 2000 } ); } }); /** * Create a nav menu setting and section. * * @since 4.9.0 * * @param {string} [name=''] Nav menu name. * @return {wp.customize.Menus.MenuSection} Added nav menu. */ api.Menus.createNavMenu = function createNavMenu( name ) { var customizeId, placeholderId, setting; placeholderId = api.Menus.generatePlaceholderAutoIncrementId(); customizeId = 'nav_menu[' + String( placeholderId ) + ']'; // Register the menu control setting. setting = api.create( customizeId, customizeId, {}, { type: 'nav_menu', transport: api.Menus.data.settingTransport, previewer: api.previewer } ); setting.set( $.extend( {}, api.Menus.data.defaultSettingValues.nav_menu, { name: name || '' } ) ); /* * Add the menu section (and its controls). * Note that this will automatically create the required controls * inside via the Section's ready method. */ return api.section.add( new api.Menus.MenuSection( customizeId, { panel: 'nav_menus', title: displayNavMenuName( name ), customizeAction: api.Menus.data.l10n.customizingMenus, priority: 10, menu_id: placeholderId } ) ); }; /** * wp.customize.Menus.NewMenuSection * * Customizer section for new menus. * * @class wp.customize.Menus.NewMenuSection * @augments wp.customize.Section */ api.Menus.NewMenuSection = api.Section.extend(/** @lends wp.customize.Menus.NewMenuSection.prototype */{ /** * Add behaviors for the accordion section. * * @since 4.3.0 */ attachEvents: function() { var section = this, container = section.container, contentContainer = section.contentContainer, navMenuSettingPattern = /^nav_menu\[/; section.headContainer.find( '.accordion-section-title' ).replaceWith( wp.template( 'nav-menu-create-menu-section-title' ) ); /* * We have to manually handle section expanded because we do not * apply the `accordion-section-title` class to this button-driven section. */ container.on( 'click', '.customize-add-menu-button', function() { section.expand(); }); contentContainer.on( 'keydown', '.menu-name-field', function( event ) { if ( 13 === event.which ) { // Enter. section.submit(); } } ); contentContainer.on( 'click', '#customize-new-menu-submit', function( event ) { section.submit(); event.stopPropagation(); event.preventDefault(); } ); /** * Get number of non-deleted nav menus. * * @since 4.9.0 * @return {number} Count. */ function getNavMenuCount() { var count = 0; api.each( function( setting ) { if ( navMenuSettingPattern.test( setting.id ) && false !== setting.get() ) { count += 1; } } ); return count; } /** * Update visibility of notice to prompt users to create menus. * * @since 4.9.0 * @return {void} */ function updateNoticeVisibility() { container.find( '.add-new-menu-notice' ).prop( 'hidden', getNavMenuCount() > 0 ); } /** * Handle setting addition. * * @since 4.9.0 * @param {wp.customize.Setting} setting - Added setting. * @return {void} */ function addChangeEventListener( setting ) { if ( navMenuSettingPattern.test( setting.id ) ) { setting.bind( updateNoticeVisibility ); updateNoticeVisibility(); } } /** * Handle setting removal. * * @since 4.9.0 * @param {wp.customize.Setting} setting - Removed setting. * @return {void} */ function removeChangeEventListener( setting ) { if ( navMenuSettingPattern.test( setting.id ) ) { setting.unbind( updateNoticeVisibility ); updateNoticeVisibility(); } } api.each( addChangeEventListener ); api.bind( 'add', addChangeEventListener ); api.bind( 'removed', removeChangeEventListener ); updateNoticeVisibility(); api.Section.prototype.attachEvents.apply( section, arguments ); }, /** * Set up the control. * * @since 4.9.0 */ ready: function() { this.populateControls(); }, /** * Create the controls for this section. * * @since 4.9.0 */ populateControls: function() { var section = this, menuNameControlId, menuLocationsControlId, newMenuSubmitControlId, menuNameControl, menuLocationsControl, newMenuSubmitControl; menuNameControlId = section.id + '[name]'; menuNameControl = api.control( menuNameControlId ); if ( ! menuNameControl ) { menuNameControl = new api.controlConstructor.nav_menu_name( menuNameControlId, { label: api.Menus.data.l10n.menuNameLabel, description: api.Menus.data.l10n.newMenuNameDescription, section: section.id, priority: 0 } ); api.control.add( menuNameControl.id, menuNameControl ); menuNameControl.active.set( true ); } menuLocationsControlId = section.id + '[locations]'; menuLocationsControl = api.control( menuLocationsControlId ); if ( ! menuLocationsControl ) { menuLocationsControl = new api.controlConstructor.nav_menu_locations( menuLocationsControlId, { section: section.id, priority: 1, menu_id: '', isCreating: true } ); api.control.add( menuLocationsControlId, menuLocationsControl ); menuLocationsControl.active.set( true ); } newMenuSubmitControlId = section.id + '[submit]'; newMenuSubmitControl = api.control( newMenuSubmitControlId ); if ( !newMenuSubmitControl ) { newMenuSubmitControl = new api.Control( newMenuSubmitControlId, { section: section.id, priority: 1, templateId: 'nav-menu-submit-new-button' } ); api.control.add( newMenuSubmitControlId, newMenuSubmitControl ); newMenuSubmitControl.active.set( true ); } }, /** * Create the new menu with name and location supplied by the user. * * @since 4.9.0 */ submit: function() { var section = this, contentContainer = section.contentContainer, nameInput = contentContainer.find( '.menu-name-field' ).first(), name = nameInput.val(), menuSection; if ( ! name ) { nameInput.addClass( 'invalid' ); nameInput.focus(); return; } menuSection = api.Menus.createNavMenu( name ); // Clear name field. nameInput.val( '' ); nameInput.removeClass( 'invalid' ); contentContainer.find( '.assigned-menu-location input[type=checkbox]' ).each( function() { var checkbox = $( this ), navMenuLocationSetting; if ( checkbox.prop( 'checked' ) ) { navMenuLocationSetting = api( 'nav_menu_locations[' + checkbox.data( 'location-id' ) + ']' ); navMenuLocationSetting.set( menuSection.params.menu_id ); // Reset state for next new menu. checkbox.prop( 'checked', false ); } } ); wp.a11y.speak( api.Menus.data.l10n.menuAdded ); // Focus on the new menu section. menuSection.focus( { completeCallback: function() { menuSection.highlightNewItemButton(); } } ); }, /** * Select a default location. * * This method selects a single location by default so we can support * creating a menu for a specific menu location. * * @since 4.9.0 * * @param {string|null} locationId - The ID of the location to select. `null` clears all selections. * @return {void} */ selectDefaultLocation: function( locationId ) { var locationControl = api.control( this.id + '[locations]' ), locationSelections = {}; if ( locationId !== null ) { locationSelections[ locationId ] = true; } locationControl.setSelections( locationSelections ); } }); /** * wp.customize.Menus.MenuLocationControl * * Customizer control for menu locations (rendered as a ', { type: 'hidden', name: '_method', value: 'GET' } ) ); _.each( previewFrame.query, function( value, key ) { form.append( $( '', { type: 'hidden', name: key, value: value } ) ); } ); previewFrame.container.append( form ); form.submit(); form.remove(); // No need to keep the form around after submitted. } previewFrame.bind( 'iframe-loading-error', function( error ) { previewFrame.iframe.remove(); // Check if the user is not logged in. if ( 0 === error ) { previewFrame.login( deferred ); return; } // Check for cheaters. if ( -1 === error ) { deferred.rejectWith( previewFrame, [ 'cheatin' ] ); return; } deferred.rejectWith( previewFrame, [ 'request failure' ] ); } ); previewFrame.iframe.one( 'load', function() { loaded = true; if ( ready ) { deferred.resolveWith( previewFrame, [ readyData ] ); } else { setTimeout( function() { deferred.rejectWith( previewFrame, [ 'ready timeout' ] ); }, previewFrame.sensitivity ); } }); }, login: function( deferred ) { var self = this, reject; reject = function() { deferred.rejectWith( self, [ 'logged out' ] ); }; if ( this.triedLogin ) { return reject(); } // Check if we have an admin cookie. $.get( api.settings.url.ajax, { action: 'logged-in' }).fail( reject ).done( function( response ) { var iframe; if ( '1' !== response ) { reject(); } iframe = $( ' wp_get_update_data(), ) ); require_once ABSPATH . 'wp-admin/admin-footer.php'; } elseif ( 'do-theme-upgrade' === $action ) { if ( ! current_user_can( 'update_themes' ) ) { wp_die( __( 'Sorry, you are not allowed to update this site.' ) ); } check_admin_referer( 'upgrade-core' ); if ( isset( $_GET['themes'] ) ) { $themes = explode( ',', $_GET['themes'] ); } elseif ( isset( $_POST['checked'] ) ) { $themes = (array) $_POST['checked']; } else { wp_redirect( admin_url( 'update-core.php' ) ); exit; } $url = 'update.php?action=update-selected-themes&themes=' . urlencode( implode( ',', $themes ) ); $url = wp_nonce_url( $url, 'bulk-update-themes' ); $title = __( 'Update Themes' ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>

    wp_get_update_data(), ) ); require_once ABSPATH . 'wp-admin/admin-footer.php'; } elseif ( 'do-translation-upgrade' === $action ) { if ( ! current_user_can( 'update_languages' ) ) { wp_die( __( 'Sorry, you are not allowed to update this site.' ) ); } check_admin_referer( 'upgrade-translations' ); require_once ABSPATH . 'wp-admin/admin-header.php'; require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; $url = 'update-core.php?action=do-translation-upgrade'; $nonce = 'upgrade-translations'; $title = __( 'Update Translations' ); $context = WP_LANG_DIR; $upgrader = new Language_Pack_Upgrader( new Language_Pack_Upgrader_Skin( compact( 'url', 'nonce', 'title', 'context' ) ) ); $result = $upgrader->bulk_upgrade(); wp_localize_script( 'updates', '_wpUpdatesItemCounts', array( 'totals' => wp_get_update_data(), ) ); require_once ABSPATH . 'wp-admin/admin-footer.php'; } elseif ( 'core-major-auto-updates-settings' === $action ) { if ( ! current_user_can( 'update_core' ) ) { wp_die( __( 'Sorry, you are not allowed to update this site.' ) ); } $redirect_url = self_admin_url( 'update-core.php' ); if ( isset( $_GET['value'] ) ) { check_admin_referer( 'core-major-auto-updates-nonce' ); if ( 'enable' === $_GET['value'] ) { update_site_option( 'auto_update_core_major', 'enabled' ); $redirect_url = add_query_arg( 'core-major-auto-updates-saved', 'enabled', $redirect_url ); } elseif ( 'disable' === $_GET['value'] ) { update_site_option( 'auto_update_core_major', 'disabled' ); $redirect_url = add_query_arg( 'core-major-auto-updates-saved', 'disabled', $redirect_url ); } } wp_redirect( $redirect_url ); exit; } else { /** * Fires for each custom update action on the WordPress Updates screen. * * The dynamic portion of the hook name, `$action`, refers to the * passed update action. The hook fires in lieu of all available * default update actions. * * @since 3.2.0 */ do_action( "update-core-custom_{$action}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores } PK!( ms-themes.phpnu[name, get_taxonomies( array( 'show_ui' => true ) ), true ) ) { wp_die( __( 'Sorry, you are not allowed to edit terms in this taxonomy.' ) ); } if ( ! current_user_can( $tax->cap->manage_terms ) ) { wp_die( '

    ' . __( 'You need a higher level of permission.' ) . '

    ' . '

    ' . __( 'Sorry, you are not allowed to manage terms in this taxonomy.' ) . '

    ', 403 ); } /** * $post_type is set when the WP_Terms_List_Table instance is created * * @global string $post_type */ global $post_type; $wp_list_table = _get_list_table( 'WP_Terms_List_Table' ); $pagenum = $wp_list_table->get_pagenum(); $title = $tax->labels->name; if ( 'post' !== $post_type ) { $parent_file = ( 'attachment' === $post_type ) ? 'upload.php' : "edit.php?post_type=$post_type"; $submenu_file = "edit-tags.php?taxonomy=$taxonomy&post_type=$post_type"; } elseif ( 'link_category' === $tax->name ) { $parent_file = 'link-manager.php'; $submenu_file = 'edit-tags.php?taxonomy=link_category'; } else { $parent_file = 'edit.php'; $submenu_file = "edit-tags.php?taxonomy=$taxonomy"; } add_screen_option( 'per_page', array( 'default' => 20, 'option' => 'edit_' . $tax->name . '_per_page', ) ); get_current_screen()->set_screen_reader_content( array( 'heading_pagination' => $tax->labels->items_list_navigation, 'heading_list' => $tax->labels->items_list, ) ); $location = false; $referer = wp_get_referer(); if ( ! $referer ) { // For POST requests. $referer = wp_unslash( $_SERVER['REQUEST_URI'] ); } $referer = remove_query_arg( array( '_wp_http_referer', '_wpnonce', 'error', 'message', 'paged' ), $referer ); switch ( $wp_list_table->current_action() ) { case 'add-tag': check_admin_referer( 'add-tag', '_wpnonce_add-tag' ); if ( ! current_user_can( $tax->cap->edit_terms ) ) { wp_die( '

    ' . __( 'You need a higher level of permission.' ) . '

    ' . '

    ' . __( 'Sorry, you are not allowed to create terms in this taxonomy.' ) . '

    ', 403 ); } $ret = wp_insert_term( $_POST['tag-name'], $taxonomy, $_POST ); if ( $ret && ! is_wp_error( $ret ) ) { $location = add_query_arg( 'message', 1, $referer ); } else { $location = add_query_arg( array( 'error' => true, 'message' => 4, ), $referer ); } break; case 'delete': if ( ! isset( $_REQUEST['tag_ID'] ) ) { break; } $tag_ID = (int) $_REQUEST['tag_ID']; check_admin_referer( 'delete-tag_' . $tag_ID ); if ( ! current_user_can( 'delete_term', $tag_ID ) ) { wp_die( '

    ' . __( 'You need a higher level of permission.' ) . '

    ' . '

    ' . __( 'Sorry, you are not allowed to delete this item.' ) . '

    ', 403 ); } wp_delete_term( $tag_ID, $taxonomy ); $location = add_query_arg( 'message', 2, $referer ); // When deleting a term, prevent the action from redirecting back to a term that no longer exists. $location = remove_query_arg( array( 'tag_ID', 'action' ), $location ); break; case 'bulk-delete': check_admin_referer( 'bulk-tags' ); if ( ! current_user_can( $tax->cap->delete_terms ) ) { wp_die( '

    ' . __( 'You need a higher level of permission.' ) . '

    ' . '

    ' . __( 'Sorry, you are not allowed to delete these items.' ) . '

    ', 403 ); } $tags = (array) $_REQUEST['delete_tags']; foreach ( $tags as $tag_ID ) { wp_delete_term( $tag_ID, $taxonomy ); } $location = add_query_arg( 'message', 6, $referer ); break; case 'edit': if ( ! isset( $_REQUEST['tag_ID'] ) ) { break; } $term_id = (int) $_REQUEST['tag_ID']; $term = get_term( $term_id ); if ( ! $term instanceof WP_Term ) { wp_die( __( 'You attempted to edit an item that doesn’t exist. Perhaps it was deleted?' ) ); } wp_redirect( esc_url_raw( get_edit_term_link( $term_id, $taxonomy, $post_type ) ) ); exit; case 'editedtag': $tag_ID = (int) $_POST['tag_ID']; check_admin_referer( 'update-tag_' . $tag_ID ); if ( ! current_user_can( 'edit_term', $tag_ID ) ) { wp_die( '

    ' . __( 'You need a higher level of permission.' ) . '

    ' . '

    ' . __( 'Sorry, you are not allowed to edit this item.' ) . '

    ', 403 ); } $tag = get_term( $tag_ID, $taxonomy ); if ( ! $tag ) { wp_die( __( 'You attempted to edit an item that doesn’t exist. Perhaps it was deleted?' ) ); } $ret = wp_update_term( $tag_ID, $taxonomy, $_POST ); if ( $ret && ! is_wp_error( $ret ) ) { $location = add_query_arg( 'message', 3, $referer ); } else { $location = add_query_arg( array( 'error' => true, 'message' => 5, ), $referer ); } break; default: if ( ! $wp_list_table->current_action() || ! isset( $_REQUEST['delete_tags'] ) ) { break; } check_admin_referer( 'bulk-tags' ); $screen = get_current_screen()->id; $tags = (array) $_REQUEST['delete_tags']; /** This action is documented in wp-admin/edit.php */ $location = apply_filters( "handle_bulk_actions-{$screen}", $location, $wp_list_table->current_action(), $tags ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores break; } if ( ! $location && ! empty( $_REQUEST['_wp_http_referer'] ) ) { $location = remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), wp_unslash( $_SERVER['REQUEST_URI'] ) ); } if ( $location ) { if ( $pagenum > 1 ) { $location = add_query_arg( 'paged', $pagenum, $location ); // $pagenum takes care of $total_pages. } /** * Filters the taxonomy redirect destination URL. * * @since 4.6.0 * * @param string $location The destination URL. * @param WP_Taxonomy $tax The taxonomy object. */ wp_redirect( apply_filters( 'redirect_term_location', $location, $tax ) ); exit; } $wp_list_table->prepare_items(); $total_pages = $wp_list_table->get_pagination_arg( 'total_pages' ); if ( $pagenum > $total_pages && $total_pages > 0 ) { wp_redirect( add_query_arg( 'paged', $total_pages ) ); exit; } wp_enqueue_script( 'admin-tags' ); if ( current_user_can( $tax->cap->edit_terms ) ) { wp_enqueue_script( 'inline-edit-tax' ); } if ( 'category' === $taxonomy || 'link_category' === $taxonomy || 'post_tag' === $taxonomy ) { $help = ''; if ( 'category' === $taxonomy ) { $help = '

    ' . sprintf( /* translators: %s: URL to Writing Settings screen. */ __( 'You can use categories to define sections of your site and group related posts. The default category is “Uncategorized” until you change it in your writing settings.' ), 'options-writing.php' ) . '

    '; } elseif ( 'link_category' === $taxonomy ) { $help = '

    ' . __( 'You can create groups of links by using Link Categories. Link Category names must be unique and Link Categories are separate from the categories you use for posts.' ) . '

    '; } else { $help = '

    ' . __( 'You can assign keywords to your posts using tags. Unlike categories, tags have no hierarchy, meaning there’s no relationship from one tag to another.' ) . '

    '; } if ( 'link_category' === $taxonomy ) { $help .= '

    ' . __( 'You can delete Link Categories in the Bulk Action pull-down, but that action does not delete the links within the category. Instead, it moves them to the default Link Category.' ) . '

    '; } else { $help .= '

    ' . __( 'What’s the difference between categories and tags? Normally, tags are ad-hoc keywords that identify important information in your post (names, subjects, etc) that may or may not recur in other posts, while categories are pre-determined sections. If you think of your site like a book, the categories are like the Table of Contents and the tags are like the terms in the index.' ) . '

    '; } get_current_screen()->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => $help, ) ); if ( 'category' === $taxonomy || 'post_tag' === $taxonomy ) { if ( 'category' === $taxonomy ) { $help = '

    ' . __( 'When adding a new category on this screen, you’ll fill in the following fields:' ) . '

    '; } else { $help = '

    ' . __( 'When adding a new tag on this screen, you’ll fill in the following fields:' ) . '

    '; } $help .= '
      ' . '
    • ' . __( 'Name — The name is how it appears on your site.' ) . '
    • '; if ( ! global_terms_enabled() ) { $help .= '
    • ' . __( 'Slug — The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.' ) . '
    • '; } if ( 'category' === $taxonomy ) { $help .= '
    • ' . __( 'Parent — Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have child categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown.' ) . '
    • '; } $help .= '
    • ' . __( 'Description — The description is not prominent by default; however, some themes may display it.' ) . '
    • ' . '
    ' . '

    ' . __( 'You can change the display of this screen using the Screen Options tab to set how many items are displayed per screen and to display/hide columns in the table.' ) . '

    '; get_current_screen()->add_help_tab( array( 'id' => 'adding-terms', 'title' => 'category' === $taxonomy ? __( 'Adding Categories' ) : __( 'Adding Tags' ), 'content' => $help, ) ); } $help = '

    ' . __( 'For more information:' ) . '

    '; if ( 'category' === $taxonomy ) { $help .= '

    ' . __( 'Documentation on Categories' ) . '

    '; } elseif ( 'link_category' === $taxonomy ) { $help .= '

    ' . __( 'Documentation on Link Categories' ) . '

    '; } else { $help .= '

    ' . __( 'Documentation on Tags' ) . '

    '; } $help .= '

    ' . __( 'Support' ) . '

    '; get_current_screen()->set_help_sidebar( $help ); unset( $help ); } require_once ABSPATH . 'wp-admin/admin-header.php'; /** Also used by the Edit Tag form */ require_once ABSPATH . 'wp-admin/includes/edit-tag-messages.php'; $class = ( isset( $_REQUEST['error'] ) ) ? 'error' : 'updated'; if ( is_plugin_active( 'wpcat2tag-importer/wpcat2tag-importer.php' ) ) { $import_link = admin_url( 'admin.php?import=wpcat2tag' ); } else { $import_link = admin_url( 'import.php' ); } ?>

    '; printf( /* translators: %s: Search query. */ __( 'Search results for: %s' ), '' . esc_html( wp_unslash( $_REQUEST['s'] ) ) . '' ); echo ''; } ?>

    search_box( $tax->labels->search_items, 'tag' ); ?>
    cap->edit_terms ); if ( $can_edit_terms ) { ?>
    0 ) ), '3.0.0', '{$taxonomy}_pre_add_form' ); } elseif ( 'link_category' === $taxonomy ) { /** * Fires before the link category form. * * @since 2.3.0 * @deprecated 3.0.0 Use {@see '{$taxonomy}_pre_add_form'} instead. * * @param object $arg Optional arguments cast to an object. */ do_action_deprecated( 'add_link_category_form_pre', array( (object) array( 'parent' => 0 ) ), '3.0.0', '{$taxonomy}_pre_add_form' ); } else { /** * Fires before the Add Tag form. * * @since 2.5.0 * @deprecated 3.0.0 Use {@see '{$taxonomy}_pre_add_form'} instead. * * @param string $taxonomy The taxonomy slug. */ do_action_deprecated( 'add_tag_form_pre', array( $taxonomy ), '3.0.0', '{$taxonomy}_pre_add_form' ); } /** * Fires before the Add Term form for all taxonomies. * * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug. * * @since 3.0.0 * * @param string $taxonomy The taxonomy slug. */ do_action( "{$taxonomy}_pre_add_form", $taxonomy ); ?>

    labels->add_new_item; ?>

    >

    0, 'hide_if_empty' => false, 'taxonomy' => $taxonomy, 'name' => 'parent', 'orderby' => 'name', 'hierarchical' => true, 'show_option_none' => __( 'None' ), ); /** * Filters the taxonomy parent drop-down on the Edit Term page. * * @since 3.7.0 * @since 4.2.0 Added `$context` parameter. * * @param array $dropdown_args { * An array of taxonomy parent drop-down arguments. * * @type int|bool $hide_empty Whether to hide terms not attached to any posts. Default 0|false. * @type bool $hide_if_empty Whether to hide the drop-down if no terms exist. Default false. * @type string $taxonomy The taxonomy slug. * @type string $name Value of the name attribute to use for the drop-down select element. * Default 'parent'. * @type string $orderby The field to order by. Default 'name'. * @type bool $hierarchical Whether the taxonomy is hierarchical. Default true. * @type string $show_option_none Label to display if there are no terms. Default 'None'. * } * @param string $taxonomy The taxonomy slug. * @param string $context Filter context. Accepts 'new' or 'edit'. */ $dropdown_args = apply_filters( 'taxonomy_parent_dropdown_args', $dropdown_args, $taxonomy, 'new' ); wp_dropdown_categories( $dropdown_args ); ?>

    labels->add_new_item, 'primary', 'submit', false ); ?>

    0 ) ), '3.0.0', '{$taxonomy}_add_form' ); } elseif ( 'link_category' === $taxonomy ) { /** * Fires at the end of the Edit Link form. * * @since 2.3.0 * @deprecated 3.0.0 Use {@see '{$taxonomy}_add_form'} instead. * * @param object $arg Optional arguments cast to an object. */ do_action_deprecated( 'edit_link_category_form', array( (object) array( 'parent' => 0 ) ), '3.0.0', '{$taxonomy}_add_form' ); } else { /** * Fires at the end of the Add Tag form. * * @since 2.7.0 * @deprecated 3.0.0 Use {@see '{$taxonomy}_add_form'} instead. * * @param string $taxonomy The taxonomy slug. */ do_action_deprecated( 'add_tag_form', array( $taxonomy ), '3.0.0', '{$taxonomy}_add_form' ); } /** * Fires at the end of the Add Term form for all taxonomies. * * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug. * * @since 3.0.0 * * @param string $taxonomy The taxonomy slug. */ do_action( "{$taxonomy}_add_form", $taxonomy ); ?>
    views(); ?>
    display(); ?>

    ' . apply_filters( 'the_category', get_cat_name( get_option( 'default_category' ) ), '', '' ) . '' ); ?>

    category to tag converter.' ), esc_url( $import_link ) ); ?>

    tag to category converter.' ), esc_url( $import_link ) ); ?>

    inline_edit(); require_once ABSPATH . 'wp-admin/admin-footer.php'; PK!4e/e/ admin.phpnu[ 50 && mt_rand( 0, (int) ( $c / 50 ) ) === 1 ) ) { require_once ABSPATH . WPINC . '/http.php'; $response = wp_remote_get( admin_url( 'upgrade.php?step=1' ), array( 'timeout' => 120, 'httpversion' => '1.1', ) ); /** This action is documented in wp-admin/network/upgrade.php */ do_action( 'after_mu_upgrade', $response ); unset( $response ); } unset( $c ); } } require_once ABSPATH . 'wp-admin/includes/admin.php'; auth_redirect(); // Schedule Trash collection. if ( ! wp_next_scheduled( 'wp_scheduled_delete' ) && ! wp_installing() ) { wp_schedule_event( time(), 'daily', 'wp_scheduled_delete' ); } // Schedule transient cleanup. if ( ! wp_next_scheduled( 'delete_expired_transients' ) && ! wp_installing() ) { wp_schedule_event( time(), 'daily', 'delete_expired_transients' ); } set_screen_options(); $date_format = __( 'F j, Y' ); $time_format = __( 'g:i a' ); wp_enqueue_script( 'common' ); /** * $pagenow is set in vars.php * $wp_importers is sometimes set in wp-admin/includes/import.php * The remaining variables are imported as globals elsewhere, declared as globals here * * @global string $pagenow * @global array $wp_importers * @global string $hook_suffix * @global string $plugin_page * @global string $typenow * @global string $taxnow */ global $pagenow, $wp_importers, $hook_suffix, $plugin_page, $typenow, $taxnow; $page_hook = null; $editing = false; if ( isset( $_GET['page'] ) ) { $plugin_page = wp_unslash( $_GET['page'] ); $plugin_page = plugin_basename( $plugin_page ); } if ( isset( $_REQUEST['post_type'] ) && post_type_exists( $_REQUEST['post_type'] ) ) { $typenow = $_REQUEST['post_type']; } else { $typenow = ''; } if ( isset( $_REQUEST['taxonomy'] ) && taxonomy_exists( $_REQUEST['taxonomy'] ) ) { $taxnow = $_REQUEST['taxonomy']; } else { $taxnow = ''; } if ( WP_NETWORK_ADMIN ) { require ABSPATH . 'wp-admin/network/menu.php'; } elseif ( WP_USER_ADMIN ) { require ABSPATH . 'wp-admin/user/menu.php'; } else { require ABSPATH . 'wp-admin/menu.php'; } if ( current_user_can( 'manage_options' ) ) { wp_raise_memory_limit( 'admin' ); } /** * Fires as an admin screen or script is being initialized. * * Note, this does not just run on user-facing admin screens. * It runs on admin-ajax.php and admin-post.php as well. * * This is roughly analogous to the more general {@see 'init'} hook, which fires earlier. * * @since 2.5.0 */ do_action( 'admin_init' ); if ( isset( $plugin_page ) ) { if ( ! empty( $typenow ) ) { $the_parent = $pagenow . '?post_type=' . $typenow; } else { $the_parent = $pagenow; } $page_hook = get_plugin_page_hook( $plugin_page, $the_parent ); if ( ! $page_hook ) { $page_hook = get_plugin_page_hook( $plugin_page, $plugin_page ); // Back-compat for plugins using add_management_page(). if ( empty( $page_hook ) && 'edit.php' === $pagenow && get_plugin_page_hook( $plugin_page, 'tools.php' ) ) { // There could be plugin specific params on the URL, so we need the whole query string. if ( ! empty( $_SERVER['QUERY_STRING'] ) ) { $query_string = $_SERVER['QUERY_STRING']; } else { $query_string = 'page=' . $plugin_page; } wp_redirect( admin_url( 'tools.php?' . $query_string ) ); exit; } } unset( $the_parent ); } $hook_suffix = ''; if ( isset( $page_hook ) ) { $hook_suffix = $page_hook; } elseif ( isset( $plugin_page ) ) { $hook_suffix = $plugin_page; } elseif ( isset( $pagenow ) ) { $hook_suffix = $pagenow; } set_current_screen(); // Handle plugin admin pages. if ( isset( $plugin_page ) ) { if ( $page_hook ) { /** * Fires before a particular screen is loaded. * * The load-* hook fires in a number of contexts. This hook is for plugin screens * where a callback is provided when the screen is registered. * * The dynamic portion of the hook name, `$page_hook`, refers to a mixture of plugin * page information including: * 1. The page type. If the plugin page is registered as a submenu page, such as for * Settings, the page type would be 'settings'. Otherwise the type is 'toplevel'. * 2. A separator of '_page_'. * 3. The plugin basename minus the file extension. * * Together, the three parts form the `$page_hook`. Citing the example above, * the hook name used would be 'load-settings_page_pluginbasename'. * * @see get_plugin_page_hook() * * @since 2.1.0 */ do_action( "load-{$page_hook}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores if ( ! isset( $_GET['noheader'] ) ) { require_once ABSPATH . 'wp-admin/admin-header.php'; } /** * Used to call the registered callback for a plugin screen. * * This hook uses a dynamic hook name, `$page_hook`, which refers to a mixture of plugin * page information including: * 1. The page type. If the plugin page is registered as a submenu page, such as for * Settings, the page type would be 'settings'. Otherwise the type is 'toplevel'. * 2. A separator of '_page_'. * 3. The plugin basename minus the file extension. * * Together, the three parts form the `$page_hook`. Citing the example above, * the hook name used would be 'settings_page_pluginbasename'. * * @see get_plugin_page_hook() * * @since 1.5.0 */ do_action( $page_hook ); } else { if ( validate_file( $plugin_page ) ) { wp_die( __( 'Invalid plugin page.' ) ); } if ( ! ( file_exists( WP_PLUGIN_DIR . "/$plugin_page" ) && is_file( WP_PLUGIN_DIR . "/$plugin_page" ) ) && ! ( file_exists( WPMU_PLUGIN_DIR . "/$plugin_page" ) && is_file( WPMU_PLUGIN_DIR . "/$plugin_page" ) ) ) { /* translators: %s: Admin page generated by a plugin. */ wp_die( sprintf( __( 'Cannot load %s.' ), htmlentities( $plugin_page ) ) ); } /** * Fires before a particular screen is loaded. * * The load-* hook fires in a number of contexts. This hook is for plugin screens * where the file to load is directly included, rather than the use of a function. * * The dynamic portion of the hook name, `$plugin_page`, refers to the plugin basename. * * @see plugin_basename() * * @since 1.5.0 */ do_action( "load-{$plugin_page}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores if ( ! isset( $_GET['noheader'] ) ) { require_once ABSPATH . 'wp-admin/admin-header.php'; } if ( file_exists( WPMU_PLUGIN_DIR . "/$plugin_page" ) ) { include WPMU_PLUGIN_DIR . "/$plugin_page"; } else { include WP_PLUGIN_DIR . "/$plugin_page"; } } require_once ABSPATH . 'wp-admin/admin-footer.php'; exit; } elseif ( isset( $_GET['import'] ) ) { $importer = $_GET['import']; if ( ! current_user_can( 'import' ) ) { wp_die( __( 'Sorry, you are not allowed to import content into this site.' ) ); } if ( validate_file( $importer ) ) { wp_redirect( admin_url( 'import.php?invalid=' . $importer ) ); exit; } if ( ! isset( $wp_importers[ $importer ] ) || ! is_callable( $wp_importers[ $importer ][2] ) ) { wp_redirect( admin_url( 'import.php?invalid=' . $importer ) ); exit; } /** * Fires before an importer screen is loaded. * * The dynamic portion of the hook name, `$importer`, refers to the importer slug. * * @since 3.5.0 */ do_action( "load-importer-{$importer}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores $parent_file = 'tools.php'; $submenu_file = 'import.php'; $title = __( 'Import' ); if ( ! isset( $_GET['noheader'] ) ) { require_once ABSPATH . 'wp-admin/admin-header.php'; } require_once ABSPATH . 'wp-admin/includes/upgrade.php'; define( 'WP_IMPORTING', true ); /** * Whether to filter imported data through kses on import. * * Multisite uses this hook to filter all data through kses by default, * as a super administrator may be assisting an untrusted user. * * @since 3.1.0 * * @param bool $force Whether to force data to be filtered through kses. Default false. */ if ( apply_filters( 'force_filtered_html_on_import', false ) ) { kses_init_filters(); // Always filter imported data with kses on multisite. } call_user_func( $wp_importers[ $importer ][2] ); require_once ABSPATH . 'wp-admin/admin-footer.php'; // Make sure rules are flushed. flush_rewrite_rules( false ); exit; } else { /** * Fires before a particular screen is loaded. * * The load-* hook fires in a number of contexts. This hook is for core screens. * * The dynamic portion of the hook name, `$pagenow`, is a global variable * referring to the filename of the current page, such as 'admin.php', * 'post-new.php' etc. A complete hook for the latter would be * 'load-post-new.php'. * * @since 2.1.0 */ do_action( "load-{$pagenow}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores /* * The following hooks are fired to ensure backward compatibility. * In all other cases, 'load-' . $pagenow should be used instead. */ if ( 'page' === $typenow ) { if ( 'post-new.php' === $pagenow ) { do_action( 'load-page-new.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores } elseif ( 'post.php' === $pagenow ) { do_action( 'load-page.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores } } elseif ( 'edit-tags.php' === $pagenow ) { if ( 'category' === $taxnow ) { do_action( 'load-categories.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores } elseif ( 'link_category' === $taxnow ) { do_action( 'load-edit-link-categories.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores } } elseif ( 'term.php' === $pagenow ) { do_action( 'load-edit-tags.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores } } if ( ! empty( $_REQUEST['action'] ) ) { $action = $_REQUEST['action']; /** * Fires when an 'action' request variable is sent. * * The dynamic portion of the hook name, `$action`, refers to * the action derived from the `GET` or `POST` request. * * @since 2.6.0 */ do_action( "admin_action_{$action}" ); } PK!!;ּ&&menu-header.phpnu[ $item ) { $admin_is_parent = false; $class = array(); $aria_attributes = ''; $aria_hidden = ''; $is_separator = false; if ( $first ) { $class[] = 'wp-first-item'; $first = false; } $submenu_items = array(); if ( ! empty( $submenu[ $item[2] ] ) ) { $class[] = 'wp-has-submenu'; $submenu_items = $submenu[ $item[2] ]; } if ( ( $parent_file && $item[2] === $parent_file ) || ( empty( $typenow ) && $self === $item[2] ) ) { if ( ! empty( $submenu_items ) ) { $class[] = 'wp-has-current-submenu wp-menu-open'; } else { $class[] = 'current'; $aria_attributes .= 'aria-current="page"'; } } else { $class[] = 'wp-not-current-submenu'; if ( ! empty( $submenu_items ) ) { $aria_attributes .= 'aria-haspopup="true"'; } } if ( ! empty( $item[4] ) ) { $class[] = esc_attr( $item[4] ); } $class = $class ? ' class="' . implode( ' ', $class ) . '"' : ''; $id = ! empty( $item[5] ) ? ' id="' . preg_replace( '|[^a-zA-Z0-9_:.]|', '-', $item[5] ) . '"' : ''; $img = ''; $img_style = ''; $img_class = ' dashicons-before'; if ( false !== strpos( $class, 'wp-menu-separator' ) ) { $is_separator = true; } /* * If the string 'none' (previously 'div') is passed instead of a URL, don't output * the default menu image so an icon can be added to div.wp-menu-image as background * with CSS. Dashicons and base64-encoded data:image/svg_xml URIs are also handled * as special cases. */ if ( ! empty( $item[6] ) ) { $img = ''; if ( 'none' === $item[6] || 'div' === $item[6] ) { $img = '
    '; } elseif ( 0 === strpos( $item[6], 'data:image/svg+xml;base64,' ) ) { $img = '
    '; $img_style = ' style="background-image:url(\'' . esc_attr( $item[6] ) . '\')"'; $img_class = ' svg'; } elseif ( 0 === strpos( $item[6], 'dashicons-' ) ) { $img = '
    '; $img_class = ' dashicons-before ' . sanitize_html_class( $item[6] ); } } $arrow = ''; $title = wptexturize( $item[0] ); // Hide separators from screen readers. if ( $is_separator ) { $aria_hidden = ' aria-hidden="true"'; } echo "\n\t"; if ( $is_separator ) { echo '
    '; } elseif ( $submenu_as_parent && ! empty( $submenu_items ) ) { $submenu_items = array_values( $submenu_items ); // Re-index. $menu_hook = get_plugin_page_hook( $submenu_items[0][2], $item[2] ); $menu_file = $submenu_items[0][2]; $pos = strpos( $menu_file, '?' ); if ( false !== $pos ) { $menu_file = substr( $menu_file, 0, $pos ); } if ( ! empty( $menu_hook ) || ( ( 'index.php' !== $submenu_items[0][2] ) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) && ! file_exists( ABSPATH . "/wp-admin/$menu_file" ) ) ) { $admin_is_parent = true; echo "$arrow"; } else { echo "\n\t$arrow"; } } elseif ( ! empty( $item[2] ) && current_user_can( $item[1] ) ) { $menu_hook = get_plugin_page_hook( $item[2], 'admin.php' ); $menu_file = $item[2]; $pos = strpos( $menu_file, '?' ); if ( false !== $pos ) { $menu_file = substr( $menu_file, 0, $pos ); } if ( ! empty( $menu_hook ) || ( ( 'index.php' !== $item[2] ) && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) && ! file_exists( ABSPATH . "/wp-admin/$menu_file" ) ) ) { $admin_is_parent = true; echo "\n\t$arrow"; } else { echo "\n\t$arrow"; } } if ( ! empty( $submenu_items ) ) { echo "\n\t
      "; echo ""; $first = true; // 0 = menu_title, 1 = capability, 2 = menu_slug, 3 = page_title, 4 = classes. foreach ( $submenu_items as $sub_key => $sub_item ) { if ( ! current_user_can( $sub_item[1] ) ) { continue; } $class = array(); $aria_attributes = ''; if ( $first ) { $class[] = 'wp-first-item'; $first = false; } $menu_file = $item[2]; $pos = strpos( $menu_file, '?' ); if ( false !== $pos ) { $menu_file = substr( $menu_file, 0, $pos ); } // Handle current for post_type=post|page|foo pages, which won't match $self. $self_type = ! empty( $typenow ) ? $self . '?post_type=' . $typenow : 'nothing'; if ( isset( $submenu_file ) ) { if ( $submenu_file === $sub_item[2] ) { $class[] = 'current'; $aria_attributes .= ' aria-current="page"'; } // If plugin_page is set the parent must either match the current page or not physically exist. // This allows plugin pages with the same hook to exist under different parents. } elseif ( ( ! isset( $plugin_page ) && $self === $sub_item[2] ) || ( isset( $plugin_page ) && $plugin_page === $sub_item[2] && ( $item[2] === $self_type || $item[2] === $self || file_exists( $menu_file ) === false ) ) ) { $class[] = 'current'; $aria_attributes .= ' aria-current="page"'; } if ( ! empty( $sub_item[4] ) ) { $class[] = esc_attr( $sub_item[4] ); } $class = $class ? ' class="' . implode( ' ', $class ) . '"' : ''; $menu_hook = get_plugin_page_hook( $sub_item[2], $item[2] ); $sub_file = $sub_item[2]; $pos = strpos( $sub_file, '?' ); if ( false !== $pos ) { $sub_file = substr( $sub_file, 0, $pos ); } $title = wptexturize( $sub_item[0] ); if ( ! empty( $menu_hook ) || ( ( 'index.php' !== $sub_item[2] ) && file_exists( WP_PLUGIN_DIR . "/$sub_file" ) && ! file_exists( ABSPATH . "/wp-admin/$sub_file" ) ) ) { // If admin.php is the current page or if the parent exists as a file in the plugins or admin directory. if ( ( ! $admin_is_parent && file_exists( WP_PLUGIN_DIR . "/$menu_file" ) && ! is_dir( WP_PLUGIN_DIR . "/{$item[2]}" ) ) || file_exists( $menu_file ) ) { $sub_item_url = add_query_arg( array( 'page' => $sub_item[2] ), $item[2] ); } else { $sub_item_url = add_query_arg( array( 'page' => $sub_item[2] ), 'admin.php' ); } $sub_item_url = esc_url( $sub_item_url ); echo "$title"; } else { echo "$title"; } } echo '
    '; } echo ''; } echo '
  • ' . '
  • '; } ?> PK!)admin-post.phpnu[ > <?php _e( 'WordPress › Database Repair' ); ?> ' . __( 'Allow automatic database repair' ) . ''; echo '

    '; printf( /* translators: %s: wp-config.php */ __( 'To allow use of this page to automatically repair database problems, please add the following line to your %s file. Once this line is added to your config, reload this page.' ), 'wp-config.php' ); echo "

    define('WP_ALLOW_REPAIR', true);

    "; $default_key = 'put your unique phrase here'; $missing_key = false; $duplicated_keys = array(); foreach ( array( 'AUTH_KEY', 'SECURE_AUTH_KEY', 'LOGGED_IN_KEY', 'NONCE_KEY', 'AUTH_SALT', 'SECURE_AUTH_SALT', 'LOGGED_IN_SALT', 'NONCE_SALT' ) as $key ) { if ( defined( $key ) ) { // Check for unique values of each key. $duplicated_keys[ constant( $key ) ] = isset( $duplicated_keys[ constant( $key ) ] ); } else { // If a constant is not defined, it's missing. $missing_key = true; } } // If at least one key uses the default value, consider it duplicated. if ( isset( $duplicated_keys[ $default_key ] ) ) { $duplicated_keys[ $default_key ] = true; } // Weed out all unique, non-default values. $duplicated_keys = array_filter( $duplicated_keys ); if ( $duplicated_keys || $missing_key ) { echo '

    ' . __( 'Check secret keys' ) . '

    '; /* translators: 1: wp-config.php, 2: Secret key service URL. */ echo '

    ' . sprintf( __( 'While you are editing your %1$s file, take a moment to make sure you have all 8 keys and that they are unique. You can generate these using the WordPress.org secret key service.' ), 'wp-config.php', 'https://api.wordpress.org/secret-key/1.1/salt/' ) . '

    '; } } elseif ( isset( $_GET['repair'] ) ) { echo '

    ' . __( 'Database repair results' ) . '

    '; $optimize = 2 == $_GET['repair']; $okay = true; $problems = array(); $tables = $wpdb->tables(); // Sitecategories may not exist if global terms are disabled. $query = $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $wpdb->sitecategories ) ); if ( is_multisite() && ! $wpdb->get_var( $query ) ) { unset( $tables['sitecategories'] ); } /** * Filters additional database tables to repair. * * @since 3.0.0 * * @param string[] $tables Array of prefixed table names to be repaired. */ $tables = array_merge( $tables, (array) apply_filters( 'tables_to_repair', array() ) ); // Loop over the tables, checking and repairing as needed. foreach ( $tables as $table ) { $check = $wpdb->get_row( "CHECK TABLE $table" ); echo '

    '; if ( 'OK' === $check->Msg_text ) { /* translators: %s: Table name. */ printf( __( 'The %s table is okay.' ), "$table" ); } else { /* translators: 1: Table name, 2: Error message. */ printf( __( 'The %1$s table is not okay. It is reporting the following error: %2$s. WordPress will attempt to repair this table…' ), "$table", "$check->Msg_text" ); $repair = $wpdb->get_row( "REPAIR TABLE $table" ); echo '
        '; if ( 'OK' === $check->Msg_text ) { /* translators: %s: Table name. */ printf( __( 'Successfully repaired the %s table.' ), "$table" ); } else { /* translators: 1: Table name, 2: Error message. */ printf( __( 'Failed to repair the %1$s table. Error: %2$s' ), "$table", "$check->Msg_text" ) . '
    '; $problems[ $table ] = $check->Msg_text; $okay = false; } } if ( $okay && $optimize ) { $check = $wpdb->get_row( "ANALYZE TABLE $table" ); echo '
        '; if ( 'Table is already up to date' === $check->Msg_text ) { /* translators: %s: Table name. */ printf( __( 'The %s table is already optimized.' ), "$table" ); } else { $check = $wpdb->get_row( "OPTIMIZE TABLE $table" ); echo '
        '; if ( 'OK' === $check->Msg_text || 'Table is already up to date' === $check->Msg_text ) { /* translators: %s: Table name. */ printf( __( 'Successfully optimized the %s table.' ), "$table" ); } else { /* translators: 1: Table name. 2: Error message. */ printf( __( 'Failed to optimize the %1$s table. Error: %2$s' ), "$table", "$check->Msg_text" ); } } } echo '

    '; } if ( $problems ) { printf( /* translators: %s: URL to "Fixing WordPress" forum. */ '

    ' . __( 'Some database problems could not be repaired. Please copy-and-paste the following list of errors to the WordPress support forums to get additional assistance.' ) . '

    ', __( 'https://wordpress.org/support/forum/how-to-and-troubleshooting' ) ); $problem_output = ''; foreach ( $problems as $table => $problem ) { $problem_output .= "$table: $problem\n"; } echo '

    '; } else { echo '

    ' . __( 'Repairs complete. Please remove the following line from wp-config.php to prevent this page from being used by unauthorized users.' ) . "

    define('WP_ALLOW_REPAIR', true);

    "; } } else { echo '

    ' . __( 'WordPress database repair' ) . '

    '; if ( isset( $_GET['referrer'] ) && 'is_blog_installed' === $_GET['referrer'] ) { echo '

    ' . __( 'One or more database tables are unavailable. To allow WordPress to attempt to repair these tables, press the “Repair Database” button. Repairing can take a while, so please be patient.' ) . '

    '; } else { echo '

    ' . __( 'WordPress can automatically look for some common database problems and repair them. Repairing can take a while, so please be patient.' ) . '

    '; } ?>

    PK!5options-head.phpnu[' . __( 'You need a higher level of permission.' ) . '' . '

    ' . __( 'Sorry, you are not allowed to edit theme options on this site.' ) . '

    ', 403 ); } /** * Maps old site editor urls to the new updated ones. * * @since 6.8.0 * @access private * * @global string $pagenow The filename of the current screen. * * @return string|false The new URL to redirect to, or false if no redirection is needed. */ function _wp_get_site_editor_redirection_url() { global $pagenow; if ( 'site-editor.php' !== $pagenow || isset( $_REQUEST['p'] ) || empty( $_SERVER['QUERY_STRING'] ) ) { return false; } // The following redirects are for the new permalinks in the site editor. if ( isset( $_REQUEST['postType'] ) && 'wp_navigation' === $_REQUEST['postType'] && ! empty( $_REQUEST['postId'] ) ) { return add_query_arg( array( 'p' => '/wp_navigation/' . $_REQUEST['postId'] ), remove_query_arg( array( 'postType', 'postId' ) ) ); } if ( isset( $_REQUEST['postType'] ) && 'wp_navigation' === $_REQUEST['postType'] && empty( $_REQUEST['postId'] ) ) { return add_query_arg( array( 'p' => '/navigation' ), remove_query_arg( 'postType' ) ); } if ( isset( $_REQUEST['path'] ) && '/wp_global_styles' === $_REQUEST['path'] ) { return add_query_arg( array( 'p' => '/styles' ), remove_query_arg( 'path' ) ); } if ( isset( $_REQUEST['postType'] ) && 'page' === $_REQUEST['postType'] && ( empty( $_REQUEST['canvas'] ) || empty( $_REQUEST['postId'] ) ) ) { return add_query_arg( array( 'p' => '/page' ), remove_query_arg( 'postType' ) ); } if ( isset( $_REQUEST['postType'] ) && 'page' === $_REQUEST['postType'] && ! empty( $_REQUEST['postId'] ) ) { return add_query_arg( array( 'p' => '/page/' . $_REQUEST['postId'] ), remove_query_arg( array( 'postType', 'postId' ) ) ); } if ( isset( $_REQUEST['postType'] ) && 'wp_template' === $_REQUEST['postType'] && ( empty( $_REQUEST['canvas'] ) || empty( $_REQUEST['postId'] ) ) ) { return add_query_arg( array( 'p' => '/template' ), remove_query_arg( 'postType' ) ); } if ( isset( $_REQUEST['postType'] ) && 'wp_template' === $_REQUEST['postType'] && ! empty( $_REQUEST['postId'] ) ) { return add_query_arg( array( 'p' => '/wp_template/' . $_REQUEST['postId'] ), remove_query_arg( array( 'postType', 'postId' ) ) ); } if ( isset( $_REQUEST['postType'] ) && 'wp_block' === $_REQUEST['postType'] && ( empty( $_REQUEST['canvas'] ) || empty( $_REQUEST['postId'] ) ) ) { return add_query_arg( array( 'p' => '/pattern' ), remove_query_arg( 'postType' ) ); } if ( isset( $_REQUEST['postType'] ) && 'wp_block' === $_REQUEST['postType'] && ! empty( $_REQUEST['postId'] ) ) { return add_query_arg( array( 'p' => '/wp_block/' . $_REQUEST['postId'] ), remove_query_arg( array( 'postType', 'postId' ) ) ); } if ( isset( $_REQUEST['postType'] ) && 'wp_template_part' === $_REQUEST['postType'] && ( empty( $_REQUEST['canvas'] ) || empty( $_REQUEST['postId'] ) ) ) { return add_query_arg( array( 'p' => '/pattern' ) ); } if ( isset( $_REQUEST['postType'] ) && 'wp_template_part' === $_REQUEST['postType'] && ! empty( $_REQUEST['postId'] ) ) { return add_query_arg( array( 'p' => '/wp_template_part/' . $_REQUEST['postId'] ), remove_query_arg( array( 'postType', 'postId' ) ) ); } // The following redirects are for backward compatibility with the old site editor URLs. if ( isset( $_REQUEST['path'] ) && '/wp_template_part/all' === $_REQUEST['path'] ) { return add_query_arg( array( 'p' => '/pattern', 'postType' => 'wp_template_part', ), remove_query_arg( 'path' ) ); } if ( isset( $_REQUEST['path'] ) && '/page' === $_REQUEST['path'] ) { return add_query_arg( array( 'p' => '/page' ), remove_query_arg( 'path' ) ); } if ( isset( $_REQUEST['path'] ) && '/wp_template' === $_REQUEST['path'] ) { return add_query_arg( array( 'p' => '/template' ), remove_query_arg( 'path' ) ); } if ( isset( $_REQUEST['path'] ) && '/patterns' === $_REQUEST['path'] ) { return add_query_arg( array( 'p' => '/pattern' ), remove_query_arg( 'path' ) ); } if ( isset( $_REQUEST['path'] ) && '/navigation' === $_REQUEST['path'] ) { return add_query_arg( array( 'p' => '/navigation' ), remove_query_arg( 'path' ) ); } return add_query_arg( array( 'p' => '/' ) ); } // Redirect to the site editor to the new URLs if needed. $redirection = _wp_get_site_editor_redirection_url(); if ( false !== $redirection ) { wp_safe_redirect( $redirection ); exit; } // Used in the HTML title tag. $title = _x( 'Editor', 'site editor title tag' ); $parent_file = 'themes.php'; // Flag that we're loading the block editor. $current_screen = get_current_screen(); $current_screen->is_block_editor( true ); // Default to is-fullscreen-mode to avoid jumps in the UI. add_filter( 'admin_body_class', static function ( $classes ) { return "$classes is-fullscreen-mode"; } ); $indexed_template_types = array(); foreach ( get_default_block_template_types() as $slug => $template_type ) { $template_type['slug'] = (string) $slug; $indexed_template_types[] = $template_type; } $context_settings = array( 'name' => 'core/edit-site' ); if ( ! empty( $_GET['postId'] ) && is_numeric( $_GET['postId'] ) ) { $context_settings['post'] = get_post( (int) $_GET['postId'] ); } elseif ( isset( $_GET['p'] ) && preg_match( '/^\/page\/(\d+)$/', $_GET['p'], $matches ) ) { $context_settings['post'] = get_post( (int) $matches[1] ); } $block_editor_context = new WP_Block_Editor_Context( $context_settings ); $custom_settings = array( 'siteUrl' => site_url(), 'postsPerPage' => get_option( 'posts_per_page' ), 'styles' => get_block_editor_theme_styles(), 'defaultTemplateTypes' => $indexed_template_types, 'defaultTemplatePartAreas' => get_allowed_block_template_part_areas(), 'supportsLayout' => wp_theme_has_theme_json(), 'supportsTemplatePartsMode' => ! wp_is_block_theme() && current_theme_supports( 'block-template-parts' ), ); // Add additional back-compat patterns registered by `current_screen` et al. $custom_settings['__experimentalAdditionalBlockPatterns'] = WP_Block_Patterns_Registry::get_instance()->get_all_registered( true ); $custom_settings['__experimentalAdditionalBlockPatternCategories'] = WP_Block_Pattern_Categories_Registry::get_instance()->get_all_registered( true ); $editor_settings = get_block_editor_settings( $custom_settings, $block_editor_context ); if ( isset( $_GET['postType'] ) && ! isset( $_GET['postId'] ) ) { $post_type = get_post_type_object( $_GET['postType'] ); if ( ! $post_type ) { wp_die( __( 'Invalid post type.' ) ); } } $active_global_styles_id = WP_Theme_JSON_Resolver::get_user_global_styles_post_id(); $active_theme = get_stylesheet(); $navigation_rest_route = rest_get_route_for_post_type_items( 'wp_navigation' ); $preload_paths = array( array( rest_get_route_for_post_type_items( 'attachment' ), 'OPTIONS' ), array( rest_get_route_for_post_type_items( 'page' ), 'OPTIONS' ), '/wp/v2/types?context=view', '/wp/v2/types/wp_template?context=edit', '/wp/v2/types/wp_template_part?context=edit', '/wp/v2/templates?context=edit&per_page=-1', '/wp/v2/template-parts?context=edit&per_page=-1', '/wp/v2/themes?context=edit&status=active', '/wp/v2/global-styles/' . $active_global_styles_id . '?context=edit', array( '/wp/v2/global-styles/' . $active_global_styles_id, 'OPTIONS' ), '/wp/v2/global-styles/themes/' . $active_theme . '?context=view', '/wp/v2/global-styles/themes/' . $active_theme . '/variations?context=view', array( $navigation_rest_route, 'OPTIONS' ), array( add_query_arg( array( 'context' => 'edit', 'per_page' => 100, 'order' => 'desc', 'orderby' => 'date', // array indices are required to avoid query being encoded and not matching in cache. 'status[0]' => 'publish', 'status[1]' => 'draft', ), $navigation_rest_route ), 'GET', ), '/wp/v2/settings', array( '/wp/v2/settings', 'OPTIONS' ), // Used by getBlockPatternCategories in useBlockEditorSettings. '/wp/v2/block-patterns/categories', // @see packages/core-data/src/entities.js '/?_fields=' . implode( ',', array( 'description', 'gmt_offset', 'home', 'name', 'site_icon', 'site_icon_url', 'site_logo', 'timezone_string', 'url', 'page_for_posts', 'page_on_front', 'show_on_front', ) ), ); if ( $block_editor_context->post ) { $route_for_post = rest_get_route_for_post( $block_editor_context->post ); if ( $route_for_post ) { $preload_paths[] = add_query_arg( 'context', 'edit', $route_for_post ); if ( 'page' === $block_editor_context->post->post_type ) { $preload_paths[] = add_query_arg( 'slug', // @see https://github.com/WordPress/gutenberg/blob/e093fefd041eb6cc4a4e7f67b92ab54fd75c8858/packages/core-data/src/private-selectors.ts#L244-L254 empty( $block_editor_context->post->post_name ) ? 'page' : 'page-' . $block_editor_context->post->post_name, '/wp/v2/templates/lookup' ); } } } else { $preload_paths[] = '/wp/v2/templates/lookup?slug=front-page'; $preload_paths[] = '/wp/v2/templates/lookup?slug=home'; } block_editor_rest_api_preload( $preload_paths, $block_editor_context ); wp_add_inline_script( 'wp-edit-site', sprintf( 'wp.domReady( function() { wp.editSite.initializeEditor( "site-editor", %s ); } );', wp_json_encode( $editor_settings ) ) ); // Preload server-registered block schemas. wp_add_inline_script( 'wp-blocks', 'wp.blocks.unstable__bootstrapServerSideBlockDefinitions(' . wp_json_encode( get_block_editor_server_block_settings() ) . ');' ); // Preload server-registered block bindings sources. $registered_sources = get_all_registered_block_bindings_sources(); if ( ! empty( $registered_sources ) ) { $filtered_sources = array(); foreach ( $registered_sources as $source ) { $filtered_sources[] = array( 'name' => $source->name, 'label' => $source->label, 'usesContext' => $source->uses_context, ); } $script = sprintf( 'for ( const source of %s ) { wp.blocks.registerBlockBindingsSource( source ); }', wp_json_encode( $filtered_sources ) ); wp_add_inline_script( 'wp-blocks', $script ); } wp_add_inline_script( 'wp-blocks', sprintf( 'wp.blocks.setCategories( %s );', wp_json_encode( isset( $editor_settings['blockCategories'] ) ? $editor_settings['blockCategories'] : array() ) ), 'after' ); wp_enqueue_script( 'wp-edit-site' ); wp_enqueue_script( 'wp-format-library' ); wp_enqueue_style( 'wp-edit-site' ); wp_enqueue_style( 'wp-format-library' ); wp_enqueue_media(); if ( current_theme_supports( 'wp-block-styles' ) && ( ! is_array( $editor_styles ) || count( $editor_styles ) === 0 ) ) { wp_enqueue_style( 'wp-block-library-theme' ); } /** This action is documented in wp-admin/edit-form-blocks.php */ do_action( 'enqueue_block_editor_assets' ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>

    'error', 'additional_classes' => array( 'hide-if-js' ), ) ); ?>
    iuser/freedoms.phpnu[domain, $current_site->domain ) || 0 !== strcasecmp( $current_blog->path, $current_site->path ) ); /** * Filters whether to redirect the request to the User Admin in Multisite. * * @since 3.2.0 * * @param bool $redirect_user_admin_request Whether the request should be redirected. */ $redirect_user_admin_request = apply_filters( 'redirect_user_admin_request', $redirect_user_admin_request ); if ( $redirect_user_admin_request ) { wp_redirect( user_admin_url() ); exit; } unset( $redirect_user_admin_request ); PK!7.rT<T<options-discussion.phpnu[add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

    ' . __( 'This screen provides many options for controlling the management and display of comments and links to your posts/pages. So many, in fact, they won’t all fit here! :) Use the documentation links to get information on what each discussion setting does.' ) . '

    ' . '

    ' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '

    ', ) ); get_current_screen()->set_help_sidebar( '

    ' . __( 'For more information:' ) . '

    ' . '

    ' . __( 'Documentation on Discussion Settings' ) . '

    ' . '

    ' . __( 'Support' ) . '

    ' ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>

    PK!X link-add.phpnu[ 20, 'option' => 'remove_personal_data_requests_per_page', ) ); $_list_table_args = array( 'plural' => 'privacy_requests', 'singular' => 'privacy_request', ); $requests_table = _get_list_table( 'WP_Privacy_Data_Removal_Requests_List_Table', $_list_table_args ); $requests_table->screen->set_screen_reader_content( array( 'heading_views' => __( 'Filter erase personal data list' ), 'heading_pagination' => __( 'Erase personal data list navigation' ), 'heading_list' => __( 'Erase personal data list' ), ) ); $requests_table->process_bulk_action(); $requests_table->prepare_items(); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>



    views(); ?>
    search_box( __( 'Search Requests' ), 'requests' ); ?>
    display(); $requests_table->embed_scripts(); ?>

    1, // This means "success" for some reason. 'plugin' => $plugin, 'file' => $file, ), admin_url( 'plugin-editor.php' ) ) ); exit; } } // List of allowable extensions. $editable_extensions = wp_get_plugin_file_editable_extensions( $plugin ); if ( ! is_file( $real_file ) ) { wp_die( sprintf( '

    %s

    ', __( 'File does not exist! Please double check the name and try again.' ) ) ); } else { // Get the extension of the file. if ( preg_match( '/\.([^.]+)$/', $real_file, $matches ) ) { $ext = strtolower( $matches[1] ); // If extension is not in the acceptable list, skip it. if ( ! in_array( $ext, $editable_extensions, true ) ) { wp_die( sprintf( '

    %s

    ', __( 'Files of this type are not editable.' ) ) ); } } } get_current_screen()->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

    ' . __( 'You can use the plugin editor to make changes to any of your plugins’ individual PHP files. Be aware that if you make changes, plugins updates will overwrite your customizations.' ) . '

    ' . '

    ' . __( 'Choose a plugin to edit from the dropdown menu and click the Select button. Click once on any file name to load it in the editor, and make your changes. Don’t forget to save your changes (Update File) when you’re finished.' ) . '

    ' . '

    ' . __( 'The Documentation menu below the editor lists the PHP functions recognized in the plugin file. Clicking Look Up takes you to a web page about that particular function.' ) . '

    ' . '

    ' . __( 'When using a keyboard to navigate:' ) . '

    ' . '
      ' . '
    • ' . __( 'In the editing area, the Tab key enters a tab character.' ) . '
    • ' . '
    • ' . __( 'To move away from this area, press the Esc key followed by the Tab key.' ) . '
    • ' . '
    • ' . __( 'Screen reader users: when in forms mode, you may need to press the Esc key twice.' ) . '
    • ' . '
    ' . '

    ' . __( 'If you want to make changes but don’t want them to be overwritten when the plugin is updated, you may be ready to think about writing your own plugin. For information on how to edit plugins, write your own from scratch, or just better understand their anatomy, check out the links below.' ) . '

    ' . ( is_network_admin() ? '

    ' . __( 'Any edits to files from this screen will be reflected on all sites in the network.' ) . '

    ' : '' ), ) ); get_current_screen()->set_help_sidebar( '

    ' . __( 'For more information:' ) . '

    ' . '

    ' . __( 'Documentation on Editing Plugins' ) . '

    ' . '

    ' . __( 'Documentation on Writing Plugins' ) . '

    ' . '

    ' . __( 'Support' ) . '

    ' ); $settings = array( 'codeEditor' => wp_enqueue_code_editor( array( 'file' => $real_file ) ), ); wp_enqueue_script( 'wp-theme-plugin-editor' ); wp_add_inline_script( 'wp-theme-plugin-editor', sprintf( 'jQuery( function( $ ) { wp.themePluginEditor.init( $( "#template" ), %s ); } )', wp_json_encode( $settings ) ) ); wp_add_inline_script( 'wp-theme-plugin-editor', sprintf( 'wp.themePluginEditor.themeOrPlugin = "plugin";' ) ); require_once ABSPATH . 'wp-admin/admin-header.php'; update_recently_edited( WP_PLUGIN_DIR . '/' . $file ); if ( ! empty( $posted_content ) ) { $content = $posted_content; } else { $content = file_get_contents( $real_file ); } if ( '.php' === substr( $real_file, strrpos( $real_file, '.' ) ) ) { $functions = wp_doc_link_parse( $content ); if ( ! empty( $functions ) ) { $docs_select = ''; } } $content = esc_textarea( $content ); ?>

    get_error_message() ? $edit_error->get_error_message() : $edit_error->get_error_code() ); ?>

    ' . esc_html( $file ) . '' ); } else { /* translators: %s: Plugin file name. */ printf( __( 'Browsing %s (active)' ), '' . esc_html( $file ) . '' ); } } else { if ( is_writable( $real_file ) ) { /* translators: %s: Plugin file name. */ printf( __( 'Editing %s (inactive)' ), '' . esc_html( $file ) . '' ); } else { /* translators: %s: Plugin file name. */ printf( __( 'Browsing %s (inactive)' ), '' . esc_html( $file ) . '' ); } } ?>


    Warning: Making changes to active plugins is not recommended.' ); ?>

    Changing File Permissions for more information.' ), __( 'https://wordpress.org/support/article/changing-file-permissions/' ) ); ?>


    ' . __( 'You need a higher level of permission.' ) . '' . '

    ' . __( 'Sorry, you are not allowed to edit theme options on this site.' ) . '

    ', 403 ); } $widgets_access = get_user_setting( 'widgets_access' ); if ( isset( $_GET['widgets-access'] ) ) { check_admin_referer( 'widgets-access' ); $widgets_access = 'on' === $_GET['widgets-access'] ? 'on' : 'off'; set_user_setting( 'widgets_access', $widgets_access ); } if ( 'on' === $widgets_access ) { add_filter( 'admin_body_class', 'wp_widgets_access_body_class' ); } else { wp_enqueue_script( 'admin-widgets' ); if ( wp_is_mobile() ) { wp_enqueue_script( 'jquery-touch-punch' ); } } /** * Fires early before the Widgets administration screen loads, * after scripts are enqueued. * * @since 2.2.0 */ do_action( 'sidebar_admin_setup' ); $title = __( 'Widgets' ); $parent_file = 'themes.php'; get_current_screen()->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

    ' . __( 'Widgets are independent sections of content that can be placed into any widgetized area provided by your theme (commonly called sidebars). To populate your sidebars/widget areas with individual widgets, drag and drop the title bars into the desired area. By default, only the first widget area is expanded. To populate additional widget areas, click on their title bars to expand them.' ) . '

    ' . __( 'The Available Widgets section contains all the widgets you can choose from. Once you drag a widget into a sidebar, it will open to allow you to configure its settings. When you are happy with the widget settings, click the Save button and the widget will go live on your site. If you click Delete, it will remove the widget.' ) . '

    ', ) ); get_current_screen()->add_help_tab( array( 'id' => 'removing-reusing', 'title' => __( 'Removing and Reusing' ), 'content' => '

    ' . __( 'If you want to remove the widget but save its setting for possible future use, just drag it into the Inactive Widgets area. You can add them back anytime from there. This is especially helpful when you switch to a theme with fewer or different widget areas.' ) . '

    ' . __( 'Widgets may be used multiple times. You can give each widget a title, to display on your site, but it’s not required.' ) . '

    ' . __( 'Enabling Accessibility Mode, via Screen Options, allows you to use Add and Edit buttons instead of using drag and drop.' ) . '

    ', ) ); get_current_screen()->add_help_tab( array( 'id' => 'missing-widgets', 'title' => __( 'Missing Widgets' ), 'content' => '

    ' . __( 'Many themes show some sidebar widgets by default until you edit your sidebars, but they are not automatically displayed in your sidebar management tool. After you make your first widget change, you can re-add the default widgets by adding them from the Available Widgets area.' ) . '

    ' . '

    ' . __( 'When changing themes, there is often some variation in the number and setup of widget areas/sidebars and sometimes these conflicts make the transition a bit less smooth. If you changed themes and seem to be missing widgets, scroll down on this screen to the Inactive Widgets area, where all of your widgets and their settings will have been saved.' ) . '

    ', ) ); get_current_screen()->set_help_sidebar( '

    ' . __( 'For more information:' ) . '

    ' . '

    ' . __( 'Documentation on Widgets' ) . '

    ' . '

    ' . __( 'Support' ) . '

    ' ); if ( ! current_theme_supports( 'widgets' ) ) { wp_die( __( 'The theme you are currently using isn’t widget-aware, meaning that it has no sidebars that you are able to change. For information on making your theme widget-aware, please follow these instructions.' ) ); } // These are the widgets grouped by sidebar. $sidebars_widgets = wp_get_sidebars_widgets(); if ( empty( $sidebars_widgets ) ) { $sidebars_widgets = wp_get_widget_defaults(); } foreach ( $sidebars_widgets as $sidebar_id => $widgets ) { if ( 'wp_inactive_widgets' === $sidebar_id ) { continue; } if ( ! is_registered_sidebar( $sidebar_id ) ) { if ( ! empty( $widgets ) ) { // Register the inactive_widgets area as sidebar. register_sidebar( array( 'name' => __( 'Inactive Sidebar (not used)' ), 'id' => $sidebar_id, 'class' => 'inactive-sidebar orphan-sidebar', 'description' => __( 'This sidebar is no longer available and does not show anywhere on your site. Remove each of the widgets below to fully remove this inactive sidebar.' ), 'before_widget' => '', 'after_widget' => '', 'before_title' => '', 'after_title' => '', ) ); } else { unset( $sidebars_widgets[ $sidebar_id ] ); } } } // Register the inactive_widgets area as sidebar. register_sidebar( array( 'name' => __( 'Inactive Widgets' ), 'id' => 'wp_inactive_widgets', 'class' => 'inactive-sidebar', 'description' => __( 'Drag widgets here to remove them from the sidebar but keep their settings.' ), 'before_widget' => '', 'after_widget' => '', 'before_title' => '', 'after_title' => '', ) ); retrieve_widgets(); // We're saving a widget without JS. if ( isset( $_POST['savewidget'] ) || isset( $_POST['removewidget'] ) ) { $widget_id = $_POST['widget-id']; check_admin_referer( "save-delete-widget-$widget_id" ); $number = isset( $_POST['multi_number'] ) ? (int) $_POST['multi_number'] : ''; if ( $number ) { foreach ( $_POST as $key => $val ) { if ( is_array( $val ) && preg_match( '/__i__|%i%/', key( $val ) ) ) { $_POST[ $key ] = array( $number => array_shift( $val ) ); break; } } } $sidebar_id = $_POST['sidebar']; $position = isset( $_POST[ $sidebar_id . '_position' ] ) ? (int) $_POST[ $sidebar_id . '_position' ] - 1 : 0; $id_base = $_POST['id_base']; $sidebar = isset( $sidebars_widgets[ $sidebar_id ] ) ? $sidebars_widgets[ $sidebar_id ] : array(); // Delete. if ( isset( $_POST['removewidget'] ) && $_POST['removewidget'] ) { if ( ! in_array( $widget_id, $sidebar, true ) ) { wp_redirect( admin_url( 'widgets.php?error=0' ) ); exit; } $sidebar = array_diff( $sidebar, array( $widget_id ) ); $_POST = array( 'sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1', ); /** * Fires immediately after a widget has been marked for deletion. * * @since 4.4.0 * * @param string $widget_id ID of the widget marked for deletion. * @param string $sidebar_id ID of the sidebar the widget was deleted from. * @param string $id_base ID base for the widget. */ do_action( 'delete_widget', $widget_id, $sidebar_id, $id_base ); } $_POST['widget-id'] = $sidebar; foreach ( (array) $wp_registered_widget_updates as $name => $control ) { if ( $name !== $id_base || ! is_callable( $control['callback'] ) ) { continue; } ob_start(); call_user_func_array( $control['callback'], $control['params'] ); ob_end_clean(); break; } $sidebars_widgets[ $sidebar_id ] = $sidebar; // Remove old position. if ( ! isset( $_POST['delete_widget'] ) ) { foreach ( $sidebars_widgets as $key => $sb ) { if ( is_array( $sb ) ) { $sidebars_widgets[ $key ] = array_diff( $sb, array( $widget_id ) ); } } array_splice( $sidebars_widgets[ $sidebar_id ], $position, 0, $widget_id ); } wp_set_sidebars_widgets( $sidebars_widgets ); wp_redirect( admin_url( 'widgets.php?message=0' ) ); exit; } // Remove inactive widgets without JS. if ( isset( $_POST['removeinactivewidgets'] ) ) { check_admin_referer( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' ); if ( $_POST['removeinactivewidgets'] ) { foreach ( $sidebars_widgets['wp_inactive_widgets'] as $key => $widget_id ) { $pieces = explode( '-', $widget_id ); $multi_number = array_pop( $pieces ); $id_base = implode( '-', $pieces ); $widget = get_option( 'widget_' . $id_base ); unset( $widget[ $multi_number ] ); update_option( 'widget_' . $id_base, $widget ); unset( $sidebars_widgets['wp_inactive_widgets'][ $key ] ); } wp_set_sidebars_widgets( $sidebars_widgets ); } wp_redirect( admin_url( 'widgets.php?message=0' ) ); exit; } // Output the widget form without JS. if ( isset( $_GET['editwidget'] ) && $_GET['editwidget'] ) { $widget_id = $_GET['editwidget']; if ( isset( $_GET['addnew'] ) ) { // Default to the first sidebar. $keys = array_keys( $wp_registered_sidebars ); $sidebar = reset( $keys ); if ( isset( $_GET['base'] ) && isset( $_GET['num'] ) ) { // Multi-widget. // Copy minimal info from an existing instance of this widget to a new instance. foreach ( $wp_registered_widget_controls as $control ) { if ( $_GET['base'] === $control['id_base'] ) { $control_callback = $control['callback']; $multi_number = (int) $_GET['num']; $control['params'][0]['number'] = -1; $control['id'] = $control['id_base'] . '-' . $multi_number; $widget_id = $control['id']; $wp_registered_widget_controls[ $control['id'] ] = $control; break; } } } } if ( isset( $wp_registered_widget_controls[ $widget_id ] ) && ! isset( $control ) ) { $control = $wp_registered_widget_controls[ $widget_id ]; $control_callback = $control['callback']; } elseif ( ! isset( $wp_registered_widget_controls[ $widget_id ] ) && isset( $wp_registered_widgets[ $widget_id ] ) ) { $name = esc_html( strip_tags( $wp_registered_widgets[ $widget_id ]['name'] ) ); } if ( ! isset( $name ) ) { $name = esc_html( strip_tags( $control['name'] ) ); } if ( ! isset( $sidebar ) ) { $sidebar = isset( $_GET['sidebar'] ) ? $_GET['sidebar'] : 'wp_inactive_widgets'; } if ( ! isset( $multi_number ) ) { $multi_number = isset( $control['params'][0]['number'] ) ? $control['params'][0]['number'] : ''; } $id_base = isset( $control['id_base'] ) ? $control['id_base'] : $control['id']; // Show the widget form. $width = ' style="width:' . max( $control['width'], 350 ) . 'px"'; $key = isset( $_GET['key'] ) ? (int) $_GET['key'] : 0; require_once ABSPATH . 'wp-admin/admin-header.php'; ?>

    >

    ' . __( 'There are no options for this widget.' ) . "

    \n"; } ?>

    $sbvalue ) { echo "\t\t\n"; } ?>
    "; if ( 'wp_inactive_widgets' === $sbname || 'orphaned_widgets' === substr( $sbname, 0, 16 ) ) { echo ' '; } else { if ( ! isset( $sidebars_widgets[ $sbname ] ) || ! is_array( $sidebars_widgets[ $sbname ] ) ) { $j = 1; $sidebars_widgets[ $sbname ] = array(); } else { $j = count( $sidebars_widgets[ $sbname ] ); if ( isset( $_GET['addnew'] ) || ! in_array( $widget_id, $sidebars_widgets[ $sbname ], true ) ) { $j++; } } $selected = ''; echo "\t\t\n"; } echo "
    |

    %2$s', esc_url( add_query_arg( array( array( 'autofocus' => array( 'panel' => 'widgets' ) ), 'return' => urlencode( remove_query_arg( wp_removable_query_args(), wp_unslash( $_SERVER['REQUEST_URI'] ) ) ), ), admin_url( 'customize.php' ) ) ), __( 'Manage with Live Preview' ) ); } $nonce = wp_create_nonce( 'widgets-access' ); ?>



    $registered_sidebar ) { if ( false !== strpos( $registered_sidebar['class'], 'inactive-sidebar' ) || 'orphaned_widgets' === substr( $sidebar, 0, 16 ) ) { $wrap_class = 'widgets-holder-wrap'; if ( ! empty( $registered_sidebar['class'] ) ) { $wrap_class .= ' ' . $registered_sidebar['class']; } $is_inactive_widgets = 'wp_inactive_widgets' === $registered_sidebar['id']; ?>

    'inactive-widgets-control-remove' ); if ( empty( $sidebars_widgets['wp_inactive_widgets'] ) ) { $attributes['disabled'] = ''; } submit_button( __( 'Clear Inactive Widgets' ), 'delete', 'removeinactivewidgets', false, $attributes ); ?>

    1 ) { $split = (int) ceil( $sidebars_count / 2 ); } else { $single_sidebar_class = ' single-sidebar'; } ?>

      add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

      ' . __( 'This screen contains the settings that affect the display of your content.' ) . '

      ' . '

      ' . sprintf( /* translators: %s: URL to create a new page. */ __( 'You can choose what’s displayed on the homepage of your site. It can be posts in reverse chronological order (classic blog), or a fixed/static page. To set a static homepage, you first need to create two Pages. One will become the homepage, and the other will be where your posts are displayed.' ), 'post-new.php?post_type=page' ) . '

      ' . '

      ' . sprintf( /* translators: %s: Documentation URL. */ __( 'You can also control the display of your content in RSS feeds, including the maximum number of posts to display and whether to show full text or a summary. Learn more about feeds.' ), __( 'https://wordpress.org/support/article/wordpress-feeds/' ) ) . '

      ' . '

      ' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '

      ', ) ); get_current_screen()->add_help_tab( array( 'id' => 'site-visibility', 'title' => has_action( 'blog_privacy_selector' ) ? __( 'Site visibility' ) : __( 'Search engine visibility' ), 'content' => '

      ' . __( 'You can choose whether or not your site will be crawled by robots, ping services, and spiders. If you want those services to ignore your site, click the checkbox next to “Discourage search engines from indexing this site” and click the Save Changes button at the bottom of the screen.' ) . '

      ' . '

      ' . __( 'Note that even when set to discourage search engines, your site is still visible on the web and not all search engines adhere to this directive.' ) . '

      ' . '

      ' . __( 'When this setting is in effect, a reminder is shown in the At a Glance box of the Dashboard that says, “Search engines discouraged”, to remind you that you have directed search engines to not crawl your site.' ) . '

      ', ) ); get_current_screen()->set_help_sidebar( '

      ' . __( 'For more information:' ) . '

      ' . '

      ' . __( 'Documentation on Reading Settings' ) . '

      ' . '

      ' . __( 'Support' ) . '

      ' ); require_once ABSPATH . 'wp-admin/admin-header.php'; ?>

      'blog_charset' ) ); } ?>
      PK!bB ms-admin.phpnu[bulk_upgrade( $plugins ); iframe_footer(); } elseif ( 'upgrade-plugin' === $action ) { if ( ! current_user_can( 'update_plugins' ) ) { wp_die( __( 'Sorry, you are not allowed to update plugins for this site.' ) ); } check_admin_referer( 'upgrade-plugin_' . $plugin ); $title = __( 'Update Plugin' ); $parent_file = 'plugins.php'; $submenu_file = 'plugins.php'; wp_enqueue_script( 'updates' ); require_once ABSPATH . 'wp-admin/admin-header.php'; $nonce = 'upgrade-plugin_' . $plugin; $url = 'update.php?action=upgrade-plugin&plugin=' . urlencode( $plugin ); $upgrader = new Plugin_Upgrader( new Plugin_Upgrader_Skin( compact( 'title', 'nonce', 'url', 'plugin' ) ) ); $upgrader->upgrade( $plugin ); require_once ABSPATH . 'wp-admin/admin-footer.php'; } elseif ( 'activate-plugin' === $action ) { if ( ! current_user_can( 'update_plugins' ) ) { wp_die( __( 'Sorry, you are not allowed to update plugins for this site.' ) ); } check_admin_referer( 'activate-plugin_' . $plugin ); if ( ! isset( $_GET['failure'] ) && ! isset( $_GET['success'] ) ) { wp_redirect( admin_url( 'update.php?action=activate-plugin&failure=true&plugin=' . urlencode( $plugin ) . '&_wpnonce=' . $_GET['_wpnonce'] ) ); activate_plugin( $plugin, '', ! empty( $_GET['networkwide'] ), true ); wp_redirect( admin_url( 'update.php?action=activate-plugin&success=true&plugin=' . urlencode( $plugin ) . '&_wpnonce=' . $_GET['_wpnonce'] ) ); die(); } iframe_header( __( 'Plugin Reactivation' ), true ); if ( isset( $_GET['success'] ) ) { echo '

      ' . __( 'Plugin reactivated successfully.' ) . '

      '; } if ( isset( $_GET['failure'] ) ) { echo '

      ' . __( 'Plugin failed to reactivate due to a fatal error.' ) . '

      '; error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR ); ini_set( 'display_errors', true ); // Ensure that fatal errors are displayed. wp_register_plugin_realpath( WP_PLUGIN_DIR . '/' . $plugin ); include WP_PLUGIN_DIR . '/' . $plugin; } iframe_footer(); } elseif ( 'install-plugin' === $action ) { if ( ! current_user_can( 'install_plugins' ) ) { wp_die( __( 'Sorry, you are not allowed to install plugins on this site.' ) ); } include_once ABSPATH . 'wp-admin/includes/plugin-install.php'; // For plugins_api(). check_admin_referer( 'install-plugin_' . $plugin ); $api = plugins_api( 'plugin_information', array( 'slug' => $plugin, 'fields' => array( 'sections' => false, ), ) ); if ( is_wp_error( $api ) ) { wp_die( $api ); } $title = __( 'Plugin Installation' ); $parent_file = 'plugins.php'; $submenu_file = 'plugin-install.php'; require_once ABSPATH . 'wp-admin/admin-header.php'; /* translators: %s: Plugin name and version. */ $title = sprintf( __( 'Installing Plugin: %s' ), $api->name . ' ' . $api->version ); $nonce = 'install-plugin_' . $plugin; $url = 'update.php?action=install-plugin&plugin=' . urlencode( $plugin ); if ( isset( $_GET['from'] ) ) { $url .= '&from=' . urlencode( stripslashes( $_GET['from'] ) ); } $type = 'web'; // Install plugin type, From Web or an Upload. $upgrader = new Plugin_Upgrader( new Plugin_Installer_Skin( compact( 'title', 'url', 'nonce', 'plugin', 'api' ) ) ); $upgrader->install( $api->download_link ); require_once ABSPATH . 'wp-admin/admin-footer.php'; } elseif ( 'upload-plugin' === $action ) { if ( ! current_user_can( 'upload_plugins' ) ) { wp_die( __( 'Sorry, you are not allowed to install plugins on this site.' ) ); } check_admin_referer( 'plugin-upload' ); $file_upload = new File_Upload_Upgrader( 'pluginzip', 'package' ); $title = __( 'Upload Plugin' ); $parent_file = 'plugins.php'; $submenu_file = 'plugin-install.php'; require_once ABSPATH . 'wp-admin/admin-header.php'; /* translators: %s: File name. */ $title = sprintf( __( 'Installing plugin from uploaded file: %s' ), esc_html( basename( $file_upload->filename ) ) ); $nonce = 'plugin-upload'; $url = add_query_arg( array( 'package' => $file_upload->id ), 'update.php?action=upload-plugin' ); $type = 'upload'; // Install plugin type, From Web or an Upload. $overwrite = isset( $_GET['overwrite'] ) ? sanitize_text_field( $_GET['overwrite'] ) : ''; $overwrite = in_array( $overwrite, array( 'update-plugin', 'downgrade-plugin' ), true ) ? $overwrite : ''; $upgrader = new Plugin_Upgrader( new Plugin_Installer_Skin( compact( 'type', 'title', 'nonce', 'url', 'overwrite' ) ) ); $result = $upgrader->install( $file_upload->package, array( 'overwrite_package' => $overwrite ) ); if ( $result || is_wp_error( $result ) ) { $file_upload->cleanup(); } require_once ABSPATH . 'wp-admin/admin-footer.php'; } elseif ( 'upload-plugin-cancel-overwrite' === $action ) { if ( ! current_user_can( 'upload_plugins' ) ) { wp_die( __( 'Sorry, you are not allowed to install plugins on this site.' ) ); } check_admin_referer( 'plugin-upload-cancel-overwrite' ); // Make sure the attachment still exists, or File_Upload_Upgrader will call wp_die() // that shows a generic "Please select a file" error. if ( ! empty( $_GET['package'] ) ) { $attachment_id = (int) $_GET['package']; if ( get_post( $attachment_id ) ) { $file_upload = new File_Upload_Upgrader( 'pluginzip', 'package' ); $file_upload->cleanup(); } } wp_redirect( self_admin_url( 'plugin-install.php' ) ); exit; } elseif ( 'upgrade-theme' === $action ) { if ( ! current_user_can( 'update_themes' ) ) { wp_die( __( 'Sorry, you are not allowed to update themes for this site.' ) ); } check_admin_referer( 'upgrade-theme_' . $theme ); wp_enqueue_script( 'updates' ); $title = __( 'Update Theme' ); $parent_file = 'themes.php'; $submenu_file = 'themes.php'; require_once ABSPATH . 'wp-admin/admin-header.php'; $nonce = 'upgrade-theme_' . $theme; $url = 'update.php?action=upgrade-theme&theme=' . urlencode( $theme ); $upgrader = new Theme_Upgrader( new Theme_Upgrader_Skin( compact( 'title', 'nonce', 'url', 'theme' ) ) ); $upgrader->upgrade( $theme ); require_once ABSPATH . 'wp-admin/admin-footer.php'; } elseif ( 'update-selected-themes' === $action ) { if ( ! current_user_can( 'update_themes' ) ) { wp_die( __( 'Sorry, you are not allowed to update themes for this site.' ) ); } check_admin_referer( 'bulk-update-themes' ); if ( isset( $_GET['themes'] ) ) { $themes = explode( ',', stripslashes( $_GET['themes'] ) ); } elseif ( isset( $_POST['checked'] ) ) { $themes = (array) $_POST['checked']; } else { $themes = array(); } $themes = array_map( 'urldecode', $themes ); $url = 'update.php?action=update-selected-themes&themes=' . urlencode( implode( ',', $themes ) ); $nonce = 'bulk-update-themes'; wp_enqueue_script( 'updates' ); iframe_header(); $upgrader = new Theme_Upgrader( new Bulk_Theme_Upgrader_Skin( compact( 'nonce', 'url' ) ) ); $upgrader->bulk_upgrade( $themes ); iframe_footer(); } elseif ( 'install-theme' === $action ) { if ( ! current_user_can( 'install_themes' ) ) { wp_die( __( 'Sorry, you are not allowed to install themes on this site.' ) ); } include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; // For themes_api(). check_admin_referer( 'install-theme_' . $theme ); $api = themes_api( 'theme_information', array( 'slug' => $theme, 'fields' => array( 'sections' => false, 'tags' => false, ), ) ); // Save on a bit of bandwidth. if ( is_wp_error( $api ) ) { wp_die( $api ); } $title = __( 'Install Themes' ); $parent_file = 'themes.php'; $submenu_file = 'themes.php'; require_once ABSPATH . 'wp-admin/admin-header.php'; /* translators: %s: Theme name and version. */ $title = sprintf( __( 'Installing Theme: %s' ), $api->name . ' ' . $api->version ); $nonce = 'install-theme_' . $theme; $url = 'update.php?action=install-theme&theme=' . urlencode( $theme ); $type = 'web'; // Install theme type, From Web or an Upload. $upgrader = new Theme_Upgrader( new Theme_Installer_Skin( compact( 'title', 'url', 'nonce', 'plugin', 'api' ) ) ); $upgrader->install( $api->download_link ); require_once ABSPATH . 'wp-admin/admin-footer.php'; } elseif ( 'upload-theme' === $action ) { if ( ! current_user_can( 'upload_themes' ) ) { wp_die( __( 'Sorry, you are not allowed to install themes on this site.' ) ); } check_admin_referer( 'theme-upload' ); $file_upload = new File_Upload_Upgrader( 'themezip', 'package' ); $title = __( 'Upload Theme' ); $parent_file = 'themes.php'; $submenu_file = 'theme-install.php'; require_once ABSPATH . 'wp-admin/admin-header.php'; /* translators: %s: File name. */ $title = sprintf( __( 'Installing theme from uploaded file: %s' ), esc_html( basename( $file_upload->filename ) ) ); $nonce = 'theme-upload'; $url = add_query_arg( array( 'package' => $file_upload->id ), 'update.php?action=upload-theme' ); $type = 'upload'; // Install theme type, From Web or an Upload. $overwrite = isset( $_GET['overwrite'] ) ? sanitize_text_field( $_GET['overwrite'] ) : ''; $overwrite = in_array( $overwrite, array( 'update-theme', 'downgrade-theme' ), true ) ? $overwrite : ''; $upgrader = new Theme_Upgrader( new Theme_Installer_Skin( compact( 'type', 'title', 'nonce', 'url', 'overwrite' ) ) ); $result = $upgrader->install( $file_upload->package, array( 'overwrite_package' => $overwrite ) ); if ( $result || is_wp_error( $result ) ) { $file_upload->cleanup(); } require_once ABSPATH . 'wp-admin/admin-footer.php'; } elseif ( 'upload-theme-cancel-overwrite' === $action ) { if ( ! current_user_can( 'upload_themes' ) ) { wp_die( __( 'Sorry, you are not allowed to install themes on this site.' ) ); } check_admin_referer( 'theme-upload-cancel-overwrite' ); // Make sure the attachment still exists, or File_Upload_Upgrader will call wp_die() // that shows a generic "Please select a file" error. if ( ! empty( $_GET['package'] ) ) { $attachment_id = (int) $_GET['package']; if ( get_post( $attachment_id ) ) { $file_upload = new File_Upload_Upgrader( 'themezip', 'package' ); $file_upload->cleanup(); } } wp_redirect( self_admin_url( 'theme-install.php' ) ); exit; } else { /** * Fires when a custom plugin or theme update request is received. * * The dynamic portion of the hook name, `$action`, refers to the action * provided in the request for wp-admin/update.php. Can be used to * provide custom update functionality for themes and plugins. * * @since 2.8.0 */ do_action( "update-custom_{$action}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores } } PK!Ƴ6]] user-new.phpnu[' . __( 'You need a higher level of permission.' ) . '' . '

      ' . __( 'Sorry, you are not allowed to add users to this network.' ) . '

      ', 403 ); } } elseif ( ! current_user_can( 'create_users' ) ) { wp_die( '

      ' . __( 'You need a higher level of permission.' ) . '

      ' . '

      ' . __( 'Sorry, you are not allowed to create users.' ) . '

      ', 403 ); } if ( is_multisite() ) { add_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email' ); } if ( isset( $_REQUEST['action'] ) && 'adduser' === $_REQUEST['action'] ) { check_admin_referer( 'add-user', '_wpnonce_add-user' ); $user_details = null; $user_email = wp_unslash( $_REQUEST['email'] ); if ( false !== strpos( $user_email, '@' ) ) { $user_details = get_user_by( 'email', $user_email ); } else { if ( current_user_can( 'manage_network_users' ) ) { $user_details = get_user_by( 'login', $user_email ); } else { wp_redirect( add_query_arg( array( 'update' => 'enter_email' ), 'user-new.php' ) ); die(); } } if ( ! $user_details ) { wp_redirect( add_query_arg( array( 'update' => 'does_not_exist' ), 'user-new.php' ) ); die(); } if ( ! current_user_can( 'promote_user', $user_details->ID ) ) { wp_die( '

      ' . __( 'You need a higher level of permission.' ) . '

      ' . '

      ' . __( 'Sorry, you are not allowed to add users to this network.' ) . '

      ', 403 ); } // Adding an existing user to this blog. $new_user_email = array(); $redirect = 'user-new.php'; $username = $user_details->user_login; $user_id = $user_details->ID; if ( null != $username && array_key_exists( $blog_id, get_blogs_of_user( $user_id ) ) ) { $redirect = add_query_arg( array( 'update' => 'addexisting' ), 'user-new.php' ); } else { if ( isset( $_POST['noconfirmation'] ) && current_user_can( 'manage_network_users' ) ) { $result = add_existing_user_to_blog( array( 'user_id' => $user_id, 'role' => $_REQUEST['role'], ) ); if ( ! is_wp_error( $result ) ) { $redirect = add_query_arg( array( 'update' => 'addnoconfirmation', 'user_id' => $user_id, ), 'user-new.php' ); } else { $redirect = add_query_arg( array( 'update' => 'could_not_add' ), 'user-new.php' ); } } else { $newuser_key = wp_generate_password( 20, false ); add_option( 'new_user_' . $newuser_key, array( 'user_id' => $user_id, 'email' => $user_details->user_email, 'role' => $_REQUEST['role'], ) ); $roles = get_editable_roles(); $role = $roles[ $_REQUEST['role'] ]; /** * Fires immediately after an existing user is invited to join the site, but before the notification is sent. * * @since 4.4.0 * * @param int $user_id The invited user's ID. * @param array $role Array containing role information for the invited user. * @param string $newuser_key The key of the invitation. */ do_action( 'invite_user', $user_id, $role, $newuser_key ); $switched_locale = switch_to_locale( get_user_locale( $user_details ) ); /* translators: 1: Site title, 2: Site URL, 3: User role, 4: Activation URL. */ $message = __( 'Hi, You\'ve been invited to join \'%1$s\' at %2$s with the role of %3$s. Please click the following link to confirm the invite: %4$s' ); $new_user_email['to'] = $user_details->user_email; $new_user_email['subject'] = sprintf( /* translators: Joining confirmation notification email subject. %s: Site title. */ __( '[%s] Joining Confirmation' ), wp_specialchars_decode( get_option( 'blogname' ) ) ); $new_user_email['message'] = sprintf( $message, get_option( 'blogname' ), home_url(), wp_specialchars_decode( translate_user_role( $role['name'] ) ), home_url( "/newbloguser/$newuser_key/" ) ); $new_user_email['headers'] = ''; /** * Filters the contents of the email sent when an existing user is invited to join the site. * * @since 5.6.0 * * @param array $new_user_email { * Used to build wp_mail(). * * @type string $to The email address of the invited user. * @type string $subject The subject of the email. * @type string $message The content of the email. * @type string $headers Headers. * } * @param int $user_id The invited user's ID. * @param array $role Array containing role information for the invited user. * @param string $newuser_key The key of the invitation. * */ $new_user_email = apply_filters( 'invited_user_email', $new_user_email, $user_id, $role, $newuser_key ); wp_mail( $new_user_email['to'], $new_user_email['subject'], $new_user_email['message'], $new_user_email['headers'] ); if ( $switched_locale ) { restore_previous_locale(); } $redirect = add_query_arg( array( 'update' => 'add' ), 'user-new.php' ); } } wp_redirect( $redirect ); die(); } elseif ( isset( $_REQUEST['action'] ) && 'createuser' === $_REQUEST['action'] ) { check_admin_referer( 'create-user', '_wpnonce_create-user' ); if ( ! current_user_can( 'create_users' ) ) { wp_die( '

      ' . __( 'You need a higher level of permission.' ) . '

      ' . '

      ' . __( 'Sorry, you are not allowed to create users.' ) . '

      ', 403 ); } if ( ! is_multisite() ) { $user_id = edit_user(); if ( is_wp_error( $user_id ) ) { $add_user_errors = $user_id; } else { if ( current_user_can( 'list_users' ) ) { $redirect = 'users.php?update=add&id=' . $user_id; } else { $redirect = add_query_arg( 'update', 'add', 'user-new.php' ); } wp_redirect( $redirect ); die(); } } else { // Adding a new user to this site. $new_user_email = wp_unslash( $_REQUEST['email'] ); $user_details = wpmu_validate_user_signup( $_REQUEST['user_login'], $new_user_email ); if ( is_wp_error( $user_details['errors'] ) && $user_details['errors']->has_errors() ) { $add_user_errors = $user_details['errors']; } else { /** This filter is documented in wp-includes/user.php */ $new_user_login = apply_filters( 'pre_user_login', sanitize_user( wp_unslash( $_REQUEST['user_login'] ), true ) ); if ( isset( $_POST['noconfirmation'] ) && current_user_can( 'manage_network_users' ) ) { add_filter( 'wpmu_signup_user_notification', '__return_false' ); // Disable confirmation email. add_filter( 'wpmu_welcome_user_notification', '__return_false' ); // Disable welcome email. } wpmu_signup_user( $new_user_login, $new_user_email, array( 'add_to_blog' => get_current_blog_id(), 'new_role' => $_REQUEST['role'], ) ); if ( isset( $_POST['noconfirmation'] ) && current_user_can( 'manage_network_users' ) ) { $key = $wpdb->get_var( $wpdb->prepare( "SELECT activation_key FROM {$wpdb->signups} WHERE user_login = %s AND user_email = %s", $new_user_login, $new_user_email ) ); $new_user = wpmu_activate_signup( $key ); if ( is_wp_error( $new_user ) ) { $redirect = add_query_arg( array( 'update' => 'addnoconfirmation' ), 'user-new.php' ); } elseif ( ! is_user_member_of_blog( $new_user['user_id'] ) ) { $redirect = add_query_arg( array( 'update' => 'created_could_not_add' ), 'user-new.php' ); } else { $redirect = add_query_arg( array( 'update' => 'addnoconfirmation', 'user_id' => $new_user['user_id'], ), 'user-new.php' ); } } else { $redirect = add_query_arg( array( 'update' => 'newuserconfirmation' ), 'user-new.php' ); } wp_redirect( $redirect ); die(); } } } $title = __( 'Add New User' ); $parent_file = 'users.php'; $do_both = false; if ( is_multisite() && current_user_can( 'promote_users' ) && current_user_can( 'create_users' ) ) { $do_both = true; } $help = '

      ' . __( 'To add a new user to your site, fill in the form on this screen and click the Add New User button at the bottom.' ) . '

      '; if ( is_multisite() ) { $help .= '

      ' . __( 'Because this is a multisite installation, you may add accounts that already exist on the Network by specifying a username or email, and defining a role. For more options, such as specifying a password, you have to be a Network Administrator and use the hover link under an existing user’s name to Edit the user profile under Network Admin > All Users.' ) . '

      ' . '

      ' . __( 'New users will receive an email letting them know they’ve been added as a user for your site. This email will also contain their password. Check the box if you don’t want the user to receive a welcome email.' ) . '

      '; } else { $help .= '

      ' . __( 'New users are automatically assigned a password, which they can change after logging in. You can view or edit the assigned password by clicking the Show Password button. The username cannot be changed once the user has been added.' ) . '

      ' . '

      ' . __( 'By default, new users will receive an email letting them know they’ve been added as a user for your site. This email will also contain a password reset link. Uncheck the box if you don’t want to send the new user a welcome email.' ) . '

      '; } $help .= '

      ' . __( 'Remember to click the Add New User button at the bottom of this screen when you are finished.' ) . '

      '; get_current_screen()->add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => $help, ) ); get_current_screen()->add_help_tab( array( 'id' => 'user-roles', 'title' => __( 'User Roles' ), 'content' => '

      ' . __( 'Here is a basic overview of the different user roles and the permissions associated with each one:' ) . '

      ' . '
        ' . '
      • ' . __( 'Subscribers can read comments/comment/receive newsletters, etc. but cannot create regular site content.' ) . '
      • ' . '
      • ' . __( 'Contributors can write and manage their posts but not publish posts or upload media files.' ) . '
      • ' . '
      • ' . __( 'Authors can publish and manage their own posts, and are able to upload files.' ) . '
      • ' . '
      • ' . __( 'Editors can publish posts, manage posts as well as manage other people’s posts, etc.' ) . '
      • ' . '
      • ' . __( 'Administrators have access to all the administration features.' ) . '
      • ' . '
      ', ) ); get_current_screen()->set_help_sidebar( '

      ' . __( 'For more information:' ) . '

      ' . '

      ' . __( 'Documentation on Adding New Users' ) . '

      ' . '

      ' . __( 'Support' ) . '

      ' ); wp_enqueue_script( 'wp-ajax-response' ); wp_enqueue_script( 'user-profile' ); /** * Filters whether to enable user auto-complete for non-super admins in Multisite. * * @since 3.4.0 * * @param bool $enable Whether to enable auto-complete for non-super admins. Default false. */ if ( is_multisite() && current_user_can( 'promote_users' ) && ! wp_is_large_network( 'users' ) && ( current_user_can( 'manage_network_users' ) || apply_filters( 'autocomplete_users_for_site_admins', false ) ) ) { wp_enqueue_script( 'user-suggest' ); } require_once ABSPATH . 'wp-admin/admin-header.php'; if ( isset( $_GET['update'] ) ) { $messages = array(); if ( is_multisite() ) { $edit_link = ''; if ( ( isset( $_GET['user_id'] ) ) ) { $user_id_new = absint( $_GET['user_id'] ); if ( $user_id_new ) { $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user_id_new ) ) ); } } switch ( $_GET['update'] ) { case 'newuserconfirmation': $messages[] = __( 'Invitation email sent to new user. A confirmation link must be clicked before their account is created.' ); break; case 'add': $messages[] = __( 'Invitation email sent to user. A confirmation link must be clicked for them to be added to your site.' ); break; case 'addnoconfirmation': $message = __( 'User has been added to your site.' ); if ( $edit_link ) { $message .= sprintf( ' %s', $edit_link, __( 'Edit user' ) ); } $messages[] = $message; break; case 'addexisting': $messages[] = __( 'That user is already a member of this site.' ); break; case 'could_not_add': $add_user_errors = new WP_Error( 'could_not_add', __( 'That user could not be added to this site.' ) ); break; case 'created_could_not_add': $add_user_errors = new WP_Error( 'created_could_not_add', __( 'User has been created, but could not be added to this site.' ) ); break; case 'does_not_exist': $add_user_errors = new WP_Error( 'does_not_exist', __( 'The requested user does not exist.' ) ); break; case 'enter_email': $add_user_errors = new WP_Error( 'enter_email', __( 'Please enter a valid email address.' ) ); break; } } else { if ( 'add' === $_GET['update'] ) { $messages[] = __( 'User added.' ); } } } ?>

        get_error_messages() as $err ) { echo "
      • $err
      • \n"; } ?>

      ' . $msg . '

      '; } } ?>
      get_error_messages() as $message ) { echo "

      $message

      "; } ?>
      ' . __( 'Add Existing User' ) . ''; } if ( ! current_user_can( 'manage_network_users' ) ) { echo '

      ' . __( 'Enter the email address of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite.' ) . '

      '; $label = __( 'Email' ); $type = 'email'; } else { echo '

      ' . __( 'Enter the email address or username of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite.' ) . '

      '; $label = __( 'Email or Username' ); $type = 'text'; } ?>
      > 'addusersub' ) ); ?>
      ' . __( 'Add New User' ) . ''; } ?>

      > 'createusersub' ) ); ?>
      site_name ) ); } else { wp_die( __( 'Sorry, the link you clicked is stale. Please select another option.' ) ); } } $blog = get_site(); $user = wp_get_current_user(); $title = __( 'Delete Site' ); $parent_file = 'tools.php'; require_once ABSPATH . 'wp-admin/admin-header.php'; echo '
      '; echo '

      ' . esc_html( $title ) . '

      '; if ( isset( $_POST['action'] ) && 'deleteblog' === $_POST['action'] && isset( $_POST['confirmdelete'] ) && '1' === $_POST['confirmdelete'] ) { check_admin_referer( 'delete-blog' ); $hash = wp_generate_password( 20, false ); update_option( 'delete_blog_hash', $hash ); $url_delete = esc_url( admin_url( 'ms-delete-site.php?h=' . $hash ) ); $switched_locale = switch_to_locale( get_locale() ); /* translators: Do not translate USERNAME, URL_DELETE, SITENAME, SITEURL: those are placeholders. */ $content = __( "Howdy ###USERNAME###, You recently clicked the 'Delete Site' link on your site and filled in a form on that page. If you really want to delete your site, click the link below. You will not be asked to confirm again so only click this link if you are absolutely certain: ###URL_DELETE### If you delete your site, please consider opening a new site here some time in the future! (But remember your current site and username are gone forever.) Thanks for using the site, All at ###SITENAME### ###SITEURL###" ); /** * Filters the text for the email sent to the site admin when a request to delete a site in a Multisite network is submitted. * * @since 3.0.0 * * @param string $content The email text. */ $content = apply_filters( 'delete_site_email_content', $content ); $content = str_replace( '###USERNAME###', $user->user_login, $content ); $content = str_replace( '###URL_DELETE###', $url_delete, $content ); $content = str_replace( '###SITENAME###', get_network()->site_name, $content ); $content = str_replace( '###SITEURL###', network_home_url(), $content ); wp_mail( get_option( 'admin_email' ), sprintf( /* translators: %s: Site title. */ __( '[%s] Delete My Site' ), wp_specialchars_decode( get_option( 'blogname' ) ) ), $content ); if ( $switched_locale ) { restore_previous_locale(); } ?>

      Delete My Site Permanently you will be sent an email with a link in it. Click on this link to delete your site.' ), get_network()->site_name ); ?>

      '; require_once ABSPATH . 'wp-admin/admin-footer.php'; PK!}#site-health-info.phpnu[

      Site Health Status page.' ), esc_url( admin_url( 'site-health.php' ) ) ); ?>

      $details ) { if ( ! isset( $details['fields'] ) || empty( $details['fields'] ) ) { continue; } ?>

      add_help_tab( array( 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '

      ' . __( 'You can export a file of your site’s content in order to import it into another installation or platform. The export file will be an XML file format called WXR. Posts, pages, comments, custom fields, categories, and tags can be included. You can choose for the WXR file to include only certain posts or pages by setting the dropdown filters to limit the export by category, author, date range by month, or publishing status.' ) . '

      ' . '

      ' . __( 'Once generated, your WXR file can be imported by another WordPress site or by another blogging platform able to access this format.' ) . '

      ', ) ); get_current_screen()->set_help_sidebar( '

      ' . __( 'For more information:' ) . '

      ' . '

      ' . __( 'Documentation on Export' ) . '

      ' . '

      ' . __( 'Support' ) . '

      ' ); // If the 'download' URL parameter is set, a WXR export file is baked and returned. if ( isset( $_GET['download'] ) ) { $args = array(); if ( ! isset( $_GET['content'] ) || 'all' === $_GET['content'] ) { $args['content'] = 'all'; } elseif ( 'posts' === $_GET['content'] ) { $args['content'] = 'post'; if ( $_GET['cat'] ) { $args['category'] = (int) $_GET['cat']; } if ( $_GET['post_author'] ) { $args['author'] = (int) $_GET['post_author']; } if ( $_GET['post_start_date'] || $_GET['post_end_date'] ) { $args['start_date'] = $_GET['post_start_date']; $args['end_date'] = $_GET['post_end_date']; } if ( $_GET['post_status'] ) { $args['status'] = $_GET['post_status']; } } elseif ( 'pages' === $_GET['content'] ) { $args['content'] = 'page'; if ( $_GET['page_author'] ) { $args['author'] = (int) $_GET['page_author']; } if ( $_GET['page_start_date'] || $_GET['page_end_date'] ) { $args['start_date'] = $_GET['page_start_date']; $args['end_date'] = $_GET['page_end_date']; } if ( $_GET['page_status'] ) { $args['status'] = $_GET['page_status']; } } elseif ( 'attachment' === $_GET['content'] ) { $args['content'] = 'attachment'; if ( $_GET['attachment_start_date'] || $_GET['attachment_end_date'] ) { $args['start_date'] = $_GET['attachment_start_date']; $args['end_date'] = $_GET['attachment_end_date']; } } else { $args['content'] = $_GET['content']; } /** * Filters the export args. * * @since 3.5.0 * * @param array $args The arguments to send to the exporter. */ $args = apply_filters( 'export_args', $args ); export_wp( $args ); die(); } require_once ABSPATH . 'wp-admin/admin-header.php'; /** * Create the date options fields for exporting a given post type. * * @global wpdb $wpdb WordPress database abstraction object. * @global WP_Locale $wp_locale WordPress date and time locale object. * * @since 3.1.0 * * @param string $post_type The post type. Default 'post'. */ function export_date_options( $post_type = 'post' ) { global $wpdb, $wp_locale; $months = $wpdb->get_results( $wpdb->prepare( " SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month FROM $wpdb->posts WHERE post_type = %s AND post_status != 'auto-draft' ORDER BY post_date DESC ", $post_type ) ); $month_count = count( $months ); if ( ! $month_count || ( 1 === $month_count && 0 === (int) $months[0]->month ) ) { return; } foreach ( $months as $date ) { if ( 0 === (int) $date->year ) { continue; } $month = zeroise( $date->month, 2 ); echo ''; } } ?>

      false, 'can_export' => true, ), 'objects' ) as $post_type ) : ?>

      PK!Z u uimages/freedoms.pngnu[PNG  IHDR ]PLTEGpLXS4ny⵲߿ݣ࿻۳ҡيݮ嚯З“f[ۄ]ɯ,gouqib[ܜ|z{oiTPlmLaj˜tPL66nOCiŚQ}C`SexqhM\ +p<9O*^g y,mmZVp*tҳgvefhdZ?}efé][ 'ϸb.213ۺ뼡ƨƷΪոŦ5Wyflksqoacj)ŘwyҨNP |CGV\ۿܸ1?*/5dЭōŕdwjXavJו({?c^XơCj>K_7{ȷ2-?NikWҴ߿GV%Q9T,ᨊgCː8!5xUhߓmV*o0\)Dd1d,nɊJ!~0jeT*øp{5 ֪ᗁʼn̚blal9\z}RRSSqOq>]*fOxZpzS,KIݯ!d]!Hr`6 AdTH ABD"7 BD6'AfD4୨ AD4hO2 " C _-(ޅ$LrU uA%PAt 3-V{A6Dܜi􍲼7#GUyq`L6Ly R QLOTD ql/d[Hv;=zPԈh4Od+ wBP}#byAO*I!H̲(r+ A 8]R Ҫ.IcOP* 'eþ6#Aι~Z%AZb(.s B* ~t.X`# 9]R5A]pdpa/*CyXDp?)uhR'] ,~]j$f~֙6Nf`KMRG "e l+ި4Hm .XܯŁP bY YҕDZ8> '=T ]5TTdڮt(lY Dͷk0SP"^f%bgi6#%a*%0AXMȱz/ %úJޤW"wkqMJ_? Ab,fDjI0g FYSA;KN٤̈́s?q bYMg"̆"|{yp|R6Ziɻyԛ il_=PDެh=)Ր1X5A1-h̀{5bsK,(xlPD[ّc% {]7Pc` v"KA9%5{vs$+  G!RGYJ# r[;㤄v}7YX, p&H ʇLyXix ܿ.\ ՈդqV_, 8znK,f~o5ꡅ v9 l8)==8se b es5~,ɺK"Eާ)n݁ YM&0X0avpU>8BCߒk:d=_a 'KÞJQpfY s݋Ve[ &NyRqR<)e';O2TSL+{G %l)?7>8q߃ &H,#&u Ԭdqߍe$HU,# SLn-ok@o+̇ UȻy0N V$5dI-#W27[bU2"ow/pr͠;Aei^%H' eD ^C@o$(\ʁ޿D*ea?@{PD`eqpM3hח ٯk et0xRdy ȑu9Xr,#bi| a`+Z ̬ؑA̖t)Wۣ!Յt2aa>ZFˈ`eSkK:^2Y>tQ`,A,#럚4H`_ { b&Hѽ/bZnQw j^b=iFƆه~!a y9v G&`3Hz0Nc#$A` zpkxǘrSv A]Aw1#!!ң~ۍ" 2fl`hͿ_~_|L}W䨸~GoS#mjGy%ZM)b}xizo[J0`JI5,aXK]EuΪ dpDyuلT܃7Iix4zr$un)>%=FMrz>S%.-T+ݕor "b|ti{!zt`Ď"-&8;a]QH4X]hcЋx<ȃɘ(ytq<0 ;U!O)ѡ'w:x6c*1K,1N:c9Nd0rqƧSL)9 O~ 5a]8FkςΎ}5'T35Mt0L TL ! $+%+=c1a8[x'(15%0Jl. Ań\K^QY-L(I;$1"GL0NByJ"1gk+ ^Ҥ}Vdc b/ aOQO"R,]Q'-\rO'.p݆3Y%NxYGY&ؘőF꾺"Q|1KCLKR$@>xZu {8-pYԋda~>_C0u$IS(qA !OKׂWdRphCaNh068kAg4)W )&NŰLc1̔ G`lohqpxnbP 5 &(Dz06#٫*0hf:ՒKnH5C1nDpRY g{KaZk4:>QWAUMp"F60yDx3[E&ݨ20ðpMRZ$5߀".F)TY-1?_!\\~y:ɮ,a\:\x=<16i%iEyxz~qz<9G ,%8,ZvŻO1Yۓ2xǃiLxB@}.]v|1qCL~oN$ N8G*jƈX$s6ȑm|&7E8}q 'c %`4@pŏ/^8~G-zã/'JiGIrQ*St<{v5:9yv1yVH=rC0G_~)_ѣ˯р'y-C1t=Oig?3ãWD,4%1fd88x $0RUI)eQ@TB;!^:;^CUY5?{dȕXdZ=iT-"NX6uY4Burn㼮K%^(sS#rCr[A#GˋcrAy3..t s.vIJ|3UC%9 : yЧ¿d83ˑnIi6 aq ?KKMzI'ś J..*]JpMqc00J t5s=ԣEV!AZG@v Bq8<;?쀓~Q)d81?c6pf1bJMFYXxn+cRd .~*Ӟ+??I+,.^"CЊNӳچr~27E,,?kG0p'ې Nd(zTI_ˢC~xo_2A(O 2&L$H|j5{~92\njIqVP`3 >|YpI;ׯ6ݯ^>/suCS,d)q8Vs |,!؞[noUW~hk4?]kjDE InWF)-)۝V\/mL#^bG@#Wp[mQalRO(&ۛ7>rf-{NGoߖsr(o'_oߎ7ɳv&rh\y%7}gOYI0*xqw?;q74*vjzBuĺ II|/Z֕j& nfՀrgkKX{m6ldtu:d;N?dx6t-? 5ykŀ83">X?@(!*N'1 pv_[)!k`qr;E\Œ^6%W\@[! o2y&&b43g:^$PNѣ/Ґݭng=lu:--If NjʭR`<Cͬ7r3)a@rĀdIU}I4[۝"_ ΋^vEA!@n_uV`PͪiKjpA`y:_Be@N~l†8;3=ka/nv\ifUjvP @VV a D}Y=n7D~ Z!#vjwtχYbk; NG.=yJ  |c!3XL1ȹfss) pU t[ݧi-U\J4򪹤sChj6u ij7w*dY ZC3a3C,|ʢDh!| N&."8:rfjLd)DïԬG32`w?Ǻ%źFa W=~R<@`0ŀ$xp "B8#ԉ@ʽ; ӣuv{ڽn U w磚j Џ*,C.q%U].@&?X+ :f9uJhPDzĪ7D.unNbkg AlkT| Ȁ4.oknĬ7.Љ#@{ .EK/ m[s `"#fƱ;<"aծBA [ J @1"u5VEa@`@xN73"  :8c@\B@_Jȸq X z( @G3٘%I)_0N9>8)G' >ռPprdb)?#N4{x.< lȌ|t7@FHK ) -9 ^VN N>^G졇\j?\ %rOQVBRI>ɮ0Kk-Wd@(Q\*fntbWfzwei;2%&t]z+/ lȵ7 Nj{c]2*`kz:zKA0P:Phl2#Rr{#^ozwmNGiwFL %)ӑ]JLXyU%(4[~lr 'Wr8AN391H2#'2;=wVag$wIjivSStL5r : 2uJ5d#)7-9v)n?뻻BبҰ.{Tȧ+}ü׹)g;:3⪣X F1NYpċkSAp1FφRno^*dV8t놐!__}}d[@Q95%NвCx3M|W#ǁ&W/\@DbmWLjҽs!} d0+ H(,#uA?` @A$mS¥|!*?(Z dk |8>Q7ؙ:nt,9J ɡȬ蝀CXax֎ǁ G4AdH$ŝM>>wB^%1(' %NAܩu$E(#Wk7\@|Sr!*ZۍS 9<+@HU>yȆi8Ը}̩\, F. jD<Abh bՁǯ߼}*r")5)G<~s!4/JܬA:~(bvş!)W^Azq^XiHݨHo>^A ! l=]=KO77shTV`4 h]PzkУ׈%XAҋU@ur>Vq<aoG'bEoo^AeRypr|*An(5SFRN%rxSGqܬS;Y=@,U`ȗ# K($@tywʇ܀Tܽl~o@;gd$y7+ŽǛ8~͛+a[G葳I'q\{.O=;|#rȟmTO#?ڷg%>8d-|m0k1`pJL:fg/< p蟎kOݪAAFU"N#vxEt/~ ivvr{ie |r/: X{iɤb߄Bvhx+ \[U8 3:}V&U(;KYЀD Fs:#<./@it XqH7Yb1, ga SbyvWElgO7'L&3\' 'I30Q-hHx(HbgBj{%22e IwqCv %Ȍh~*);8;{›y?3@ պ dB6|_j=){g 4+"g>i) A |5DtEgc7N' s15``KaZ9@зtAKN?f aǂ[o^ƌ})u%SnkɃ9c,!\9+@`ȌL>€0e'(?u* RMラoUU1+)KԳ}w_@d8ȴ屫0dh .dR̈' y8>+,:d4 E5 B7""rRx|l(%rE.:|UʓbԌsH,@rNntj޾nrXhЌ4@ʐSQi(O qQIdYK\@KD(oV)^o}R1pA bʐ^#u~$[V?x98b12VA?Uq)Lk ಚ 6X#l|BIh‚XEb6X?æ\!R^Xhx@v`^ UHW+  4d*_1g#~~ Y 4H]Òvc"T9mDCM&)iI w<ݕ)rƮֹA}\t&E!(:˦Gd6W?.R[| eGowsX4K`$rjN{WviZWWW/t\8 x}j R|0 (_|Y VȇT I@,~L+- ˇУ WB|Ly)b )7w] bM?meAV3$QT H䬐YvN:M*'dRa)D+;7'i4{| G!h]$_j }xx(az (5ROjzd9.a߉(^@U' ufqӆ%Ύ=Yb %qٶuJ-R̈ Rܴ1$p`3fձ2J 4 }s\KlowƆWAވ5P-GvdFƩ EYq>Q' +X؇ͮ^0@ >DzsB%g u;\YrR̈8Q*'wl0@xx&Ul1N#=:A>ަd 'O*OJPY\,,:0:/Q@Dza'OqweCAxKq7[A±ΗJ8ZQK1^I _5EbALwsU9|A (V ,F_{dr s#Hyhwܩ 4 Ibqe/bOM]&hMh}cs3 X ϯ* KϼdZK04ؑq,'*bcBpźsdלeqX~(oq[8Qbza_h?fBGd)f*1ΓaB_"&ً郫#NA&= hB9S𜸻Xb HF)1%9NxA]Vz`QLȷ0J3(|-0"fEk(_Âvw@pf\ZA\bv_ľX !vZ["d1C 9R&!ʽ' y4@隁w+1 Ί ȬQww@(lؾ&d\H6+jjxa*vl^z*ܨ"anq@kH/qa 0UDAgp QPא"?40 -Z?LE=#%;罧 aY?\]G5Xx"U݅ x2Js! $,w Y,ne\;!B{1\ 0A0˼ u8W]pҐ)x(Myq4 a{WAX+:L:lǝ콏mP/=,r<<>Q+࿸>)d-3j." ratT0/r΀xx.,o#(NVDؐlәKvY5lac/yhPi;TP 0Xs~S@Asl +^dZej" h@T{ ( `k>00ƕ9\rKj |z* iώ,^G0S@|S.+>֫ 2l bhVf' " =e#bO%<鍺\rR 3}ZO 4!PA:l(yW_~g@ ky ߈,' Q`/Q6,R/(J͔(RrilvEȯX1;\7ڕGGA<^JWXE<{`}2;"r!'uZ)-;2Sjs G H}pD"pPxb%`HBzt 6=Y;+2UX>t rŊ҃SWLAN-sW/Y5~,61 JMoxUbL|bՊGn (-\XA]K ﹂u0(`dgi̊ XvM##6,"Hƥpn1̐H4%,Fg9ofy@ڋQ(ZV@Y r}FJPԅ_[ހpFAz%:nQt@y^~=bbE)vn&@@27 pwйgҍb$gpP,^NsC{<@zEwoXx@B@Oq+nbtK[bq@095ƃx,QxIk*fd/1=}\xFi@($~ן{ Z|ljt;z,(D/[(RAF?HA@ _S]Ldk!%UN n\jw{o+6@h&3|}\dZDp ѫXQknu[Ϋxu]iH/Kؕ!MAנľ) 1SS j=Fc*OY$9SIޙ8%i<,Hz/kű7fC`0޻``s\˗UF%{וT(ӊ~Η/e.6/&SFFFF䆻ʐ 酧Dqc2qi3|Jn̴G ө ? 2ڑT%Vt w7\]51VG>Zs+ (4 !@Ju }?Ȁ?BOqlnkμw }}^H___?F/<2wx9m&'  4U Y6tZ+T T*ӓ j?J9n.l֖PZѐgF=AIT@,.E! =?kgO>J4ofִ.6Hڽjq51RFŃ9۫,qr_sF@ץMI/T ƴq%(XdG/?;AzRr܀~u4pwEaCCݏ|µ'R/m|?9}! /D| ~BZʄo4H EѰ!;\oq$<X12"(=ྋɎ%AB܃UyQ.Cֹ%B B_H g+c̚UW4 R0Jyft1.jg? b㮬<:V]el%E1u]4Jg =똗meYr$~@Az~jEHOdX#R\ cwo]e4 xyꐁnۻ5nny Hl|4wZm !) +)JSX>gVnj{³@ҬeУbIÌE]%Fgȿ= {cdK1G|AQ{Q=XxHF5R;@wG%Xht@WeLoߚqR!3$~+wH0w A=}D@b^[? ȳ ݝrvS/8^v^3 ?njRMEnlIVipWy!?iOwbr$o 4ϗ~&r+ a"v xv}'Hm;nU帾fgG{5ȏ\GoF.+QIȽ7%`D wCƏ<I ,S3_Cm_j>6pyFF~dxA&B Kz犧ٝ;1bb읖ibX$R $_ }EH @K}h28;DO&RX8h m9K%,Ƽ__:YaЕƞQhjPZQvj'/^.=H-e1ž־2fY  ƒTc,b&yK)FI_ {:=r;A(|ɲmhv7霗{]g6-wtn7wU$]% M{  G0f:sӉeuGj"/+5)uBgcEUO/c0c[;.ht\L$Ϲ+* m5˜*4]^?w^X@X@F4 C@ 5/-]GΧXz)4m:NHft-@@WiTT~@^ˣj !Q_@Yt (~^/]@:^1T_|'ܼUNt |)P xE 7i,ia9u瓐:3!-ja ^JP}=X"WRdR/HT j LG>)tO2.Mgh 79iF}Zo:% vȅ{;>T,%!/B ]b572y[me) Y0="Sj+NԪu  u 6H1驁B #Щh;@^'=$ϹW3K\.&@hۿHI'hnLub꜐7wy/dx+1c5Q%, ͚!Q`(PQ*Z~qDj2]2XͶM ,e&rYBlMI7ʈ|r̞'UOPHjB ULyOÔX?LIs=DX$'n%R@džE?݅%*QY4 ťȀPò|a#l.IO1׎ww$2%乡Iz=z=1X)Oyl۞RVH 3@Wengy"=r҆'p.@—Y&DOvd4^@ '1[ 8BmgrAHr%F }NSX8$k\l3"ivΤo2fC]"+cP@2*LUf@` R<~ rl[qw;Z2:' *iYMvl5trcX>S \bm A)'¥UVdeEZ!2B8'8#T.gea3:t  BOgN  6.\N:E0pIjjkarѯABx.'~?MzR+V?- 9!:w~YM]0w64# *zpYeKDHPo;kHл\+MU^\W:.cgCBx4D*LHވg猉 Ǣ ~?j$L f/C5@ǠKB\9`~9<ڣUBʊ{UD=*5F? [FII T "FOqRJee"Ȭ Ɓ hk0ˉ8D|5y# : /@2P  B_HkK0P@2|,Ї;뫕5ƚ'DƃwﭣNcTBX{޿50֨Hmauܡ`Ӹ 7nqmBD DŽ7ǨFd"y_Q5U"|NO 2-M'@D@uĖv1&.ZA}5|WWa9+rWXm[*jtF2UJJ՗Pѣzx{bYuԫ} A)&'nڃ()HBU4v|B56Kgx(-( 34 \\P|~|5=Ea)a;~^ )9QT Ե4יJ[\^$Az.OC^A{"|̐b*{ nPwx5JSVrew7N:vm+j_v I\}zң[1Zz(6 >RE'L|U@ u x.XaX.rxT/#tep vgv$AR5x6k~ :@ 6LD 2 d.#ٙT53"\Fy:CCyVF59!%XXAy*G7=Bݩ) ;ѦC.lM 1?Lp/"IA%$ Bh ]* 4HN1B_:"! 7eE\#N}BB`DmLMo޼u歛Z&o 2'HLd A)r+r-" T bs `W lnޙ'CtZ(NXo.˽^ola"*mdTxuK)w Pd•[KW1+nFzU.P0qWπ#U+P!9KE灌lUɪ rVO''cĈ/ΙF4@:f5w6)fݍf?rLm@7t#3,@mײlh0P 4ixGXbՖ ݢTs,/l-,l=—d*Ȼ/0Njʆ j,,tIx ?B $D( qj]z0pDoP/?oU{t2n-$YFpw.n0Hsͭ'DA |o-,;R02[X!Hg9!(C̊O6j_\(LTl}O6+P&*ɓJ*K)X(T hHtZf)0=l B?HCr7[;ϐ%do5 A8Î {GnҹE L໿U3o.\B+K˛`B8TD1']bx:ʢ8ũR>=dCycᓎB71jhjj$L(/=ofC05"'@rމB>ZP6VkgnogHPɡ&[ahEɋU +O6'Fw,|~ЉBC"sow5Kd@~T |VjBHaqG;ID6~i?J!*Aww7DFK֮i(.9dF{5<8쿁0tTzÔNln~)@qK}JU dML z%#+FLTe2.{H멓gbr@ͽ8|P2;ysDKEDgb qB#Db:hK;s RB 쀐̌FGPS55 ?K6/W\+s[XȍI&AݰMΦv@SڜoWW1,Ζ@3qj}yn(O !ztc K8dmJ0*KF]śs] w{W NoXlK#Ȼ,IGGG8Q?^{ϖDȭb]PV4 ;ԐR^]-8s}(l1O4՟KP?v@9N7EB ~St=SV`dFyVBaԮz::g؏o<,?m !X\+ *,|5U XI= )BJG))u =}Nq@b8; ;B֎+ooJc emϞo67umInue>= ~~L}bIgVƅVn=Ehyqp)hĒdj ִC=?<`ҢODARomA0@Ŧc\[Tұ5;".mœ# D柶.[C_T H0^Q^ӂX4s!!N߾tgY-zXẒ R6b Y*9*떩e~32g@<ցY`0sn.d P<^~õŶ~s%TAG'K?GCA>_ HϊGLoԐ)Z Is1 $3HJ뛹L63G6CF= j>[Q Á_/Qg&t*Ab9cAD#u9hb:KE犇9caA$AJ}1 -Y,w1ҋcx,>\~*Y$mx@L4$T,ܼbMZ[ᨔ؀r߆y(|!_(켖|pH "kyEZK=)rZ3F?[SD"ɵ*R ͽiUNV֓x_Eɳk`y~o1o)S~D̮6# ؓ JF!s_)%LvA[@pи $fB~ڏto[և /^WKx8aQਟ҄Og&?rt(+;dK.><EK tDIyR5W%nULp= YEdFA7/$C4/ .V+5kjxw/^Ѥj=^Ra^{ӰzށU!e2 c[-QzňJJxړnF:hBZTA*Z AQ0rq9^xޕ=4ZR+顎2ūwPS+W^ w<ۻ{qJD+WzBxTmmwx`R@xW=neF;Vr hyܓ΃2WS-pktj6j1A{Q;ז:-HŬJeD')H@/xPV}j.^t:v;|iiw{ūcݧX0?~ `& XhNEŏn?MNӭc[ H ߍ*3S&cٺ!0_N1׻ \Xj|棰bu)Hb,BN HHҦ>K"}?zQ,HCW_lݞԏ~tJ6q; Tk֗;)Om>4lB> yɇtTs$dˢEplcq-@~a[j OLp ڢ.,>x\  ™hCKSj1QXX)!ٍgkn YHE(:t*ݽD`/BB־OS&9ЖOXDmpZb5+ v[)wFU>dQOӮq@f[TbrY$ĵ(`Vri.V7*KΎN78|NHj516ݗ!q-֛HX 8_u6 mN8Cje 8lby? c7p'R>4gz_6ji/ یBn'XG#Uq57L`)V.aL9v5 9V]{oJ{rxlxdp0 -[O+ YaKAa* ofMKA֣)kڼr(SAu`9Sjƚdu6t[ # J=!J& %C.-Oz Z :vVB(7Hr@<'!R/[k(O+uۥD[*6 / b*UC۟塑\v rcc!mdrhd[F.'Cdz2{C)@ U%KQB'$qЏcx҄12<8!3667H/Gp5 |C&T[f4e=~DZ#8H0!9# 08 {ʧj^ u{ANz, 2[XybTjxfT!'Kڃ0rM 0p$ ݺ1rk)lx]?@^bvrk,7 (\QvWJV8 P$ ^\=(YL*2T1MБtwCƟӡQ;2tуuwJ eBHVjA @ǸOI^*NNd*:gZ(Ziݻ.Xz bEوpD-{2,$3! b)81ȫZSdl_m-. @tWR=2ra(w7?!ja/?KP `R楇!:)m}k2[a E髬^l^8Y)(tDkc, L`Rf~}&ᕉuѺR$$ zǭZbBbz*5 m@ԥD>HO p`:+sM89XyY߀`t955[ @)@31DUʿ5R t\=E۟j]ݏ~ppb5@"7M$y8% !QS>?mE5E*?*1|%P ]VcCss([AD9c*W}!Vv ࠡKjM|lfc{C$ CFl )Sطݽ% =v:rf4$)H@%AL9{rV#?; *=~:qn7/~F8k j7%:tӢAGu y(!A`q rUOWu<^NHBD+\CPǼXo|, SUpb2N1Qu.*כO)kY,Ru$mX u%X=U"F:sӿ r!qa+۴ΡY_8uNZ&cABr$ SFF'V1PD(|˷ i$bX+%TBx(+*- =M%Ӽj ?>TWV7:xl#d > rh'.|nK-5>QgvҊ9H>?aʼnq>?sO1Uì Xb[ӎ_V;E@;+LtSfCS04/ 9.XX\3Pȴ5T SC|g "f!!*dWnV@ )/rw0xp)酻0V&'u"}׮&T}֡/  ;>p8$ Hnc#ڜC@XQrгM\И =zb+B5D4SjQdfSjz"by/9;"HO)VXotg#ӳ臥1ִGƴoK=P -Hbn% 4 *n4X}=1HJȂ!Ҋz-a8ч7E= &VeHT?})tkd縬).:t=` !A3 3Yٮ[L5f}b0 q5g %k2y"hF|Ҋ!O٭ov[,hc `hUzOu8ז~ɩb[Bx<۲X@; OKm! eFލ.#rwi^`aLR`Xq *?+ D+8Jl;wpџӁC_ڼٳT ߡd 8 qe/ 053YłT^~mqQ1dvQj!mx9DÔla)'Kso=IRvJw5S0n&)Th=j dMGg [9ݏԤl+&,VL +S fjԅp$o[H|,3png +@ W{[DoYjS mz5>Vg}t5]A@ȆrC3%y D %O76XaX[֜Þ>ePAdJW,rՙ|We"hfb6-#-[4!mB5 \ , ʶs5y$c}!D:(0V `Q*S{DN ɾ'*P ]ktNM%HYtH9X;5dӆB.lO(O'jqp:!WL`Y1Y, D1.gYĪH_^+d"B@Ikul8Iih&)r] @9/],2&?"1 H6&u56-@qA>$as? R:Nvu*fYap1M kE}`wt]uju&76r%D12(9ofHY:y'`j 05xy⥗N#ON/+gϜi_&ܛQ.ҵeaaXz&>1YNo/J[]@'*}ýDT$ygջ$b!#A| jWk(Sb$bQAlYG"99HL`*@ۇ⁇! ]DcE!wN =! U K#N_HsoK͗.]jTqġy9/^yoY,VCk77XzI0#>^U}manbs؍D~(:źbX";L=EQmݸa흝 /3V;-Ncqzd ݪŠ2y||fO*[ ԘϙiuFUe3 EYdźv,Ķ]ϟ:od(@iE0d#*4{V7_ӗbj"sD{tA:9j~ů7SDzk`,wDsUb!E?2Jl#i Y'qeh;_m#wo}?xAbR};/ v6 T&3rPe<DIY4} x|c3a<~9XLenu4meH>{.?!R9t"~35%񃰚-.́6$ KVsC?gODN% SXW1mQ8?~~8h煸;MYg:&3j*Xa-7mFD5h',ؘ>ߪ9 CRP J`vûģ *~m\ 8jY3DB!ܕ!W$ީBHcKccS# ܛ'?aLFw**@w{}11BTq͗ΝjFտw_Ъ3ˏߛ)Zpl`yQ5yS]]QH.tb?3Z[5\8hjiljm֖ъ>6|md6ʶ`~YYks#G?jvsk[kk9`{gݶqEY#SGRD&0V.qN}oL/}ٻ9ك.T:-EC6~$){w$'`TΝ;6?dz@bf_7<2tASD |c'Raz|0&H((I!ḤnȠe%W<5u r]HSAvLv.H|3!A>valÈ@LFxP~\$4,_=o| >}g_^sSH/X@=`YT2[{(1"F uԕux|1/OПN|ᴅ]; U! 1*b'l&|#c.ca: &(j㩃81ّzrevG j7o-ladJk|exxD"(x<ةGs@v@+xyNVwWAH P9xb)C(|hVVߪ/8  <3bV{AB*N1nA@HgS+T?Iщ<> O.͆tΤ[K1*xe-@`Iv;`AR ?kh\AsRlJ}{\ӱX{F48+Rithl|l|| 7{;+q;Zwqg3#hs\ľh ^Bu»~j`9 z550xyD34|rzjjjzz*&jfCSӸ3!:?fH6=7=%qӧ~ SzDt?V!a#ܥ6E$Zm 10'L:f sU Ղ@ÂsIfP_ÌP/p /FXq2"|,wd [?'I" A-4dQRӓD<iWH+S }U #d$1JM;Ǿw UxBhC)l{1qlzZ*zA:M 2 7)ȩS~=X:HѶҏXaR i "rShjAzUZapZiZ X~IF ! ;!dC0$̃FtAv|\_/g+wat"@ ʒy BQ+1Hh^ `A#q L!+5y%6@h!,UsFC@R Iˁ:& :Myo/F@<2 U,\L2pWb'WJE?@yK cWbЂ|ho@<֊=( hM'KKKewph6o<ZmW"tWq"YZ\@v2 ׍XG. [a8į/,K/\ f\VcvŨZ,n,Ja\,$@6zSBV q:hf'(b-(q^.xXeۖg\)RcFn}IKg8/[,$7,t"k oBm?R <9y[#Xt? L0B4Af&V2+Xaznfe0{S<2&Vbe ;d+Jz hL| :P~">*q$LA;9r:MA&!%'7ѷ^X\2pГ% @F`1b}Fg@8@'(^$Qڄ,8 (QR|vQztƿ#"|hDЍB7Sno?@ >@N~ڶ(^Gk7JhTzzq8q],s/iπ &:Ht~RCذg TB) 1cHȚYPCqEc&8p@A _!4i c("jβ]x~k ;HhӞ={eKԴCFʒĉv%"KhCjCdY:HͭvکU"lIԁ$+!> _q.^DQDa'u\zT]ď7dt62.^dYuSD  Vm$ fJ-H,&[_]ROiHVT y]oHzS]k H2}}3Κ3 @ u]]]fo4:yU*/cղG)F L(Ռ cY߂aBL? +G!Y_[@arnJt$}BztP'n+FN` ATy^kuGM€]6X?BPT b^ީ1DGRuLHhTʫ[3vv|xjiA'\hU/8HoбX,% [ j -0cdediqIOtD bԔzyC@tp' WX;٧/i7_.''QNI!lq*5xVmhby T oN[[d wWU7tTWW=OCHjjafol6hzZr!~ 뀘`+EɹmۭwlAYVYȩE!u'hKJKh+Q3͡[*_X ei!!YPQHkjAW:hezi=~~=Z|WtjiHYZ%ȑ$MDks~ aث3 ܯzQ4!,Z^zߒ]&J 1Mi JO8 *r -Hln!1U @L,H &{a)q:϶lm[}1FV"!`f_~^ btVT +x.G~E-_'K1RH$b@fyNEau SmꮒC nk% Ap'Kфn8Uu_X"Ed.0DhoaA~msՔ<;6d~ .,봕䈩27fUtI& b^؃AЬ& ,*yYjH{ǖ𰖖J!P*U -zV}ihЉ8 7]|1g崓mͿZT'j#K HKNyb _] qTdE@0+Cr ͋Kd30 1'L"4;Kt*l\Rb)7me;X P.VƺfpƲ@&@t#k/({jYoe}D GL@MѨԉ}D }i*bU\)w LȬFQ/RzbҨc]hj1вNů-cS Km!G)(5fg6@ MQ[hn[UZ )ByEWVOI~9uyj`0eb Lttd 6͓-UR+ s-@Lc-G3nrb+aQ^C5ֿ1z6bŒM<>]w  @-ss+F,DbfD"5X$+(F!,z&XvH^:X}fA6\,6x$Ph{NbBr >\ 1E}O9DK- iԻ[zS9hȤk9%NC@K4Kq „`x]7zC dBXĂu>:f44AOzXI+k- 3"э ޿@fG Rv`^,)Hr =< ^`*e CFb)uh f+ȽvB<BIiFG{v@p!8ad'˝<XU7&@F9Yvw}1TA4C>|ь:fD@U+Q bYܥ- O+Eˎ,:[oxьSd| YtaoAM-z{kCL➾- ~iA~Y| 麽Jj!! & qq^oƵ^`B<։{r bh kd/X[Osa@ DCku_NDŌ[W^b`BbQzYmQ !'],޿DXPl| BЛ_ik*5 h4X$N|ZBd9y \w,i&]Z*:[J'Ys}< F6o qe ct\Ec yWg@mZFD76j,5ܫuM-mI lX+vy@,IX Fw"n#DגkRo7boT/bPZݻb ͽgx,X"9 Bݼxl`pɷH1>q:c/pQz)>IK)Ng~^݆*BNmV.ȚA5HNBB߽RŅbkN)FFdЪGt;tϽ53B_kSkO(F(ĖTru!#$IH#AP!Ќ ֍=ў:'z/.FgGGT&Bt'j@FqǬ|2/N(>t)N^~ڂPl~O_O~ =A/[nᶗZ2C;[o#l~ItA/ hӖ~3KPvB{`C9!TQ.t6=mSՀS9#|s[[l$o6r#ヌ8y~gëG\Mjq[ ,˷\󖷼-o]Q@ti %HWjۡ:k~m93B>~kk$]/W'Yt$}='NswN>q>W*tbSh N_пzGNM$>pٳgowNn̝r'Cnp Xo\LTq x9s8CO6嬌Y6{-`j´]UYYYYUOf۷߾vc?tz;>P v|W꟫WWoBVg>#u=tZbثb|KWkjuIK~ۻmũ(OAk~ZQXƪyNv -25_qr g_Nje7-wi۠W^՗Nin6`64Z}n {na ,otMԼ).5Yϗ~|l?t|f]fS&IQj-6}[/kڶ'_:S3ZX*E y.o[Wo띤K ocO?>oqv/ncvf(MU eـ,pԵ#@WP5CQvԁ'B ?>zn`IELXqkPWH'|tx>@{[TnX3@5*Ԥ#ΫeUB]Nd/v]Ͽ8¯>}' ԷB3CYll':f)$BH(͙K]lGn yzXpx䅭.5kPI0޽UaFށpW Z`>JQnیb~/9W{F.@)շJzo>,e\*cle*Y306bBOMvhI^? |*qR;I(q؆H CDeѿ6Js; 87 /!n֯zxj) 22=Q:UW QySIS8 ΅v>%:'rw|Z\h7&X)\X+@UqX2 l8fVsp 6{+Y. Ї_ } acFMw5y&1 dʌ=.@Sre$#{%C%t`ȋVh0JSR,Y9jxD" ܾ HgK/\?ÅXK @d1G^yVTPRm +VTI28Bhs8 G0óC*q<*LL:Bҧ|fB.R9tчAȉ",)weww"9 3\%!W Ԭ*alI&"zbnݚݥ2?ݬy),L܊s/n{[k|Lb9}7O6N̎+@=[|qw-;8J6*.t$ -Z=42Qf88MTs f1 Glp#`ゲsW*'7Tͥ `J6I0e=9sBd BQm5J8F(~u5N*4T38lQIi-B] X=\T$X Bi:|8ΨȄl k O/XĶc@59#Cl ʋ `Oc"ɮjRY8 =1:UXmH"Y0PaJ!"K3XXI-Q@ os Y B g" :$UI` v/O4 sn_y`98&djۖɺL}3hlU< 9f6KJ8eǃJ0<) wLn&;',$A k;4<B5&lh a hL4GC3jErETJ6i+ )"8CI2K؞u~o n>\6@"sm5>Nƀ0B |9OL bՖp痈KL3bMyH;2D-Kr<ans{&*a}BA'xz#ΝҰbC޹9ƐD #w^XY=N s4Us.FaY2r%wȍ:j6|#A+GEuk'4st6i2#jVf/Sz|C  ."'KV!F3pbdV9k!ԾuıUlʅ{ix WET|dx:!Av  "rTy 6vYN2ثX=9Ɣ$XvrTlW 4dI0?0dLOXEEcsH ʜ[&w9{+\rOd&MwqgQ0dux6@@Kj:U~r@3=-,^ʃB4\9;BC6EX@ȏw>3c`Qp8^W<5CCQ u`AV,/JRelK=Ãu(@hYa@cU1Q0DE)sLIDΜ+* H-C$,T0vl~*v&jzmɧвWOD֏$dJY?ykK̏his]BS@q켝w{uu }J*;T oSD“u?aՋuߊѴl^Y7]uF}MoЏ~(tgqى3R$Mar&A(?}yuk֖Ŵ!!3l[;kefW,^U%[[޷&!}R/}ɒb3z}'613~#dNa6Vܶ'~ ^h|ov촸[?ܣX&>W777Wy*麷K?xQ+,/>Cgl -ڔA"He퐄F Mh?]AoHH,DCSCТ5ĢEX H& l3Oz` pn@܈1d˖fK?ۙt#>?Ut²WU,w)V/..A1h7 4HM\>00 !k q88l۔ձy'Mϙ6R86VΜm|?%Ր l yZ2 hl]󣏏rLCl  (RY 4\ m+Vd.MӕpPOӦ)7 b8 ybm @=55=M;l&3lX RIyb'Qh3DWU-Xs=HA,*0P-t g6%K<mh}Z=׊)V% 5bz>cBl.6 u+< qUEmP`wH|#?/7ÀĹ+-eAP5U@pT UZLPtk+ nK幋2$Fl2v&mqlSj(P *^2mN_.V6TgwXu;ڗEw p!GSy mdq,TER!9Y>q@'(4Awn$\K^/@֏5FTzӽ VNUC%җFhCGn ߂sΨ6ob;꩎ AQxE{F.Vj:/iw7rlBTЛ(@'WuW4|*Ln'qdA([vZEW49'+%ۂdL'_+gAtͥՕtF>Aj,$.5f# b ¿Ls3/u# Ovfw;\UЙ̰t 5ftS%[N qЙ:,%Azf»cQu9K'^ "۳6yhOd{t@ǁs.bNbU(nxp!G!-3} 1AĎыPĿ| :YFSr$j]`$O:3QwKΕx xo1nkP2(G}Q)ANrKSW( #ZΫ MH15R aPLjރv xu\kܢq8B :#=Wk;ž$z'=i.jܯ |n'h.3v.'E%]oM ! @:Ãi:E%|M(-ݲb^LhUՇN2J'!mik;jՕ 0x+ n @,Й&D6A2v.- K0a/"߂lT#qx  |[!E%}LNb1_Jג= }o{ d"iݨ2P'{ͩ'aC\*b]t`tSAYl;GߘQ^P 5A\'͐?MyԂΨb!+Qn.t oUeZ'i( ûΨ }{iQB`Ao/3Wlwf 2H/AXl[&Kkbx~( 5 OHgJI!aoBIQOBB?aa6E hLTOߞlH"x5 A9j2R86ѥWRXO|RS<ij fL$τPI*ق G-kEͦq0}T[Iך U:^TXs^e u*cNX)|`G @gDf1 ?3 k_v"ٓIUCt/`_y@^ g 4 ! &?`t`y.LY%-MaGilF9eA@Y}BtP 2Q`A}߈#`B-Yȴ j"耔̀A9Oiq%h=K.AXi.]*FBL$tzqSJ̐\| * &^g#HjK4atЋۺ56{b}I 2, u!ӂānMjӀf;YfjR rX" B7 LAnN FC=o sGSf;~<ɷ .YٔxF*Ar=HFM&gB|^ 3#7Q!3  rL61#HGAT>b呦@|%|>]K|͛F= B[gHA05i_wt3$E [ u3)<0xְ]̳<stFǴYhRd?L9Wedc"Dqʾ* ~UQW,^UO$AL?&{u&0D"CO$Δ@gdFaX^8']ɵy%i12)^Tx,OB:#w^Ve{}MՊS$;_Z:Ө Opn9@J  ^DDH A=;6ϗ0cJnK> NP0٣ٖP7J4o4V3[$aX'+W A:Rءw;I#nU0A'V;zպԵ Sg04 ⹵ݒQke C6d}^\}@wۓFUm!-Nāәjof!< &=HU06;#nj)Nk g40#HjNᓾ ē%Z! H/ ;c(>n5d%vKpl@9ȄacZ 4.^hD BB-Hgo@Z 3fG) g`8<<n`w400wx7Gwݹ;ܿoh{-R ">raQafdLy➒;)tq*+JM+gQWf_?>I?>~o?5(3y_/^P Ҫ2ɮ-Y[Q9%v-Vq@am,cc ̳wѳgϲZlwv'[[[۰moo"*1dz#ⶳtHϗdS&p+`Lh( :T zk9 ڑ>u/n)@ASٽ=IYt*{:{ֳUqs(⮿uB3- : L,/1gKI/QOyb]-~{ۨ v[FÚ'ݝOr!nsc|G|_m/$9bH n{LHlDfgcoxGGRbGv: *}81) l '2 <[4̐em{ٳ @%|rF)9@<&N+ ?321k` -fzxJCrY bѸ Aճ :SL;j@XĆf3D" EA^+ 'ZD؞3ZfLB,/TF3)b-P<, w*|.,\ 2˳Sf ! rv_$gNiںDlPwqq+j&I,LILii[;38R$6{*Xŭ &$/c먶xtLW@۠IB7tDvY ji(#8HHU H4B WBF _"s&#vY6SvZiAkMfm'2=0$V ^d@jY +@҂isL UBX o;G˚lrYnnNBH_(y6EK ;Z6`4}v0 QYլ be:WpLlt-R=-mLYA^DTe'*Ki|{:C/kAHdh]iނVL֦z Ï֪4p\ SqtfbY) ȳHv$fmsZ>3"=39@ ^EB:_.26v ht͐ mbu5X& wl M\ U"B rJ> #a-HQڽq^(&IA jbISFD<#+ݢbwFDB[踮 C ݚ= wZ:xX'ųP?4\-!S.ֽ?!M Y#!LO}jd2ݬ /@Ҳ Y rcv3S2 p5ؕ1?h{񷖩ak 2X3Pm F(잣e 7 Mbc~ `a#n_Wf*H݂, Y)P,k43v'Zb|}.݄(Mz-vrfK٤H::uN SyA}۝I5[$W[x˚ 'cfA#C2 9UCnbc߂2ѡ )'%Z/ ,^$ND p^da p^ sh$[1/l(X9oVfiP<y@hӭkH0@يA^ a f7'E #fHVň a]aP_HJ2p#F*Y(_caΔ&4 R|ai=?Ba;YY1#w OKA40*;Kjwj_$,oRC/QJgZ &Df' A%4N-ejeARJbax2dyOPWrwZR sZ!fh04fk>  R|)AZ#/#o H,ɂɟ۲Wi kK:dJY47@\ 'm|@#/3B,X"4&@0uBPt\dɂ"2z QY7qۯz!@rRDAa ͒޲.VF@ÀĘGU5#vQmYq܀yUe-v-dI]$#`D teUg[gFgF| k`X`hTU =3Sb~PpY⯣\R[nۃ\ ͊Ե!\66,` T~fδ,)@o$䯼-S`y^jf\,-HFќ(),ZsXf? |AB0_,[?>6 ϡeYi3`AL$HHBrRl^y-;ʊ]/@2 7DS;\S3H[G BL:=m =t3'u؈vi<-qBa{r*a/rɯsv\0X_T80-6B 27 LK9',a[䦷rlXȀ<=3bAB"PDFc)O!Tn-J 2:. K eX"X􇖑y/  䦂y!n nڲ=>'M9Sw%;]Dt&+HODǔjU>70v'+='{\p/u`.;˝H6" 3 K5 ?p_֚rQ03%x rp''[Ms iw}lD!y1H&1fbe$m=! ՝fĂ\ymSPEZh& \"S3I=<|Bk0L tMTv E] 3b7~F1m&2.A>&$ 1e@ nDۃ-Y<3L.qaA3@SXn4 RN 'D@RF) [py^֕2+3xόe! [CqyzapqEY$]ٟQ J7םpl<`L4c`.A:6XUHu1Hzƛ{m D6|/&k]Q7$تBx^ b7+Fp<|* r5CX,6n6*Z|@lMvB Ab'˸JE.-",n\4 dhYxDYز$!wWDd"#h"M8@Z$#Uw?UEH^$[:NUd*B}bLHQ B?vҍA? ji @E,,o˽9Āuu[Yٌ61aF/ ~%`>@D+~G'#K͎[U$*͊Eۥnd$_ߣ~ 2RW-LM owSunAK4b=ym .:ׄ1(U@%dYp!5 EY5a97[q}PߘXp lBBi6K ; hCK^ e8˷`|հmp 'U߂ufQJZWp@ | HOBqD.̿hA\_/7Wn+NVIzLҒ̔AhOK3X 2 tHtWYaQ: fBT߂(o~9ќepk+ٸד6H_s" 83\'7>1|!Y րRXO劣 nAlɟemzq]QAl:p1$$X|"PKpgeY܆fqMtfc`aZ t2Ѐ;?Ob# yA,/GKwA\5 #p⦾bj^- ? %O6-N, tm_v&( 'H;Lꘗz--ANT͹jASJkkI <06XKTD(dا1:l !Q=r(XIɂ;/+15Jm䃹t<@֟*f r͈d I<l! AD8];u@&Z:. c\3HBHb0=-2ZiU҂FH+M8^d@Kjat5-) ?$BE4Vow<\,1]-6Op۠`- Q׀<|@TUh&z7W2b ޖx?fq1 K -Ղn,AtU-.R RK,Ȣޅ}XP涎nY9ͥO4ܰ=Vw1? H6! ;րWr{ py8EjvML 2 -ADd\w6. 7!!k@ sjjVLN#{'jc?Z^&[3ˠ-wsP OFBD D,L`tB@ҋOTMoZuҖ1 qCno@*|Sȏ^jsZ1кLFd*J} 2e+), +n;ia[; ,fKv<ҰFw"]mE+&nݷ⮣KZcNA~7Yx'aX$}ez:#U=WbH۫6(cP/X\EqaN`ؕ !Z^]tgi\r$,%-Gmk4$Z"Ă4"d3pho2dZ/:Oc}y ӗ2E݆F[1l\XײAf fWE$_PbZ|@bɐs XDLD^ݓˌ5 i,1P(LGfPy:ܹj QYP4aPl`A J8|4-\Kx%VyWya OYW&nr pYiW]d@n./47a/2Eqѹ[Ds@ZwM(tM\@.@"SȀaX(2·¢ Xu`k5Ikbjڀl R kR lWF ()3wja0m'oϾzmA܇Tq4UExde~yЍE히++ڰa%AHnBK8]Ud0o_? 4 5EgIr'SbcYH@ d9Ye2 &E"8 Hu"c־R"wAsdXoN5 ?"v #PL0nԭ&,r@`M1 Ҹ; Ӷo00j{%ѲXXb SCU~r 0۶wڄ 󰤪k@fXU`@B $&شHZ\hB¥`.1#$bۻ k >|%WlGFh{2Ͱo0כhY #mm`ʭPjJ`0M ՆHL2Z${`1HnR _},6^U\71vo {pm}y[xtS<K'$D|@K D;cʈ܃]AT4@'͋ ?g8^%wnU7 DsM"VoEInv/OKL6*ЍЄWM ="bCK},6iBy"SĊAZsm5Ҷ }VREA@^ 6zPܬ@D4!N'= .Qr@FO"*jA O~.Wn\=8imgt*!D(D=Y])e=Ŷk/eD+`|W 0*Ϲ")\?HdqX[q  mOCTZJ|fWʂmBX)WQ GMڇ)S1t: *>`A2 ћޮbpmj ?j A0 s,CW(dHɂfЦ]>FOW+qѯ2raJ7 !66~\,X틭:V Qr7@jb)s | #NnfAbabAp՚wb+ HhTTsIcᢞ%@(DAcY{XdЈ5!CtNm.#d*UdU/-@IQ<@0vNi:)#]ңH4qb} )&$M@jy1! Bv$.Vc3R$ ->ySFXR T"^V$na nWG5 H?)@ \kX eG *!,7~zBe@8 Ϗ`AVߓn Hu; LHW=LHȂ!gDB s+~8jyAw M5aUG%l! j[x D$.,OO-qӝ.Xt6b * *%)(.V0i 5i@"bѼ):_SJuW] !$74 Lە2Dd`@Aրȓ9VLg rkk$ 2t q۽&^k3S{Deʾϫ`3!ZR@+yLv=,&x 0gǻϟ pPQ· G Jɂ<=^[Q\@G{&@Cq̶P4nG<0FUx&DM YdyeɻOdBFk@vGt?oQL~TKaA!ED$wNĬ[i]+¥z!HO Hq,@D DVhRIvs60C+֡ /  0: AGX@̩^v6h]rM$Wo[I8 Bbs>!d׫bv^h歉h4=/A*KӪdln6N$ܬ$גUudXKXkkQoMK!-t\\ җ:Bgd1̈́ZB@ E fOb)BJ-8P!XW8y R$J(&aKDT/Tv4ǝhsuhk"C)z6+˒*@ ZZ\FDP6do`Vp/ybm yyAey22Cg@.U,H=#1@Ph= D(DsHUE)>Z>1tq&Uo0@X2 c| QfB0UQiAb! R HajDW@Q@ !I`M@@ MB.K$Z]wcm<%[  M8g1hbQJOe`v c &IaTڀ<ܹ& hb^+ @ 0.vB )K$ǔ@[zz}1|Hl@@v4R]Rh@£K+qܨ|7/DɡdL+<" C N2J6"< p4>|ViV$zP !Azv ENU- ÇQbٵoOݕTAe~D; l)/C~4JC;W@>tyAMV Dv&ZT! 9k)kv@p MaM? `QI@%bc4yI? E!5% @Px'R{R=SKJ16O L(DW7AMH*dW}@EZmR|wyY D! }q@= ŔB}@bG %X-qڡMdA%՜ۍߎzS?y1MȔRW`]4B bOD~3̐'P48ٌICϵ#/Tuȼ-1a78mD DB礧,;6|g5H0&p<6jO HIf. x*᭥ -$w(u(Q+vSS8 UWa~r~;D?G"CP{,N91 u/Ah3zsŌA+p,kF pmH\k3Kl2c™m>?%' [TnpV$9S]Kb! wB0$#SIMUTrQ8Z@}@4!X?W VBu*a. ~؀T`< kOI&1ei+%[>9bҠu:ٮ,-ώ S 5+ rKaF1 kuPv†}%\Ez{R=n~_;Am !#N.cf @RKf h;iBicLF0%_5Du(& 6 4k2L@TTo䰞!d@D@ԛ0 &+2BZQ n*$S'hP6ʄ<I3Tuk!7e;s"Q~Ҏr< /ʈr=r$9 cX (իVn}/3mP&@7tD֑ ȕG R,r@!LXS q鸧 "bi2P S 1t{5B׀bH.ŠלvHΠFGE$VU%Qu {iKՉ-9&V[oI 8[ SZHqX#?6~hK R4udT9TSđMcT.~: M41Fʵ7Կ?EE3"l q|@FY=̋M^5AsO%"YCX DQ-,S> \!I_\_O !?չXCɫ݊LJzzyW6;u6?׬͊T ^?k؜JJlb# 7јO _~Ͽ闟~ZT:>us ~8~{y~_q8X?{x(?/r_Ԅ#OeIY WlO֏O݃~-օ\=|.}ٷf(q 0.hss<0AZƯgQGKX#~+30cesZ˶9&Xy &xp]׵&g72 9 k+ӉJ]&QUd.44y{ISuiUTb[ }L0Ŧs"LEDzs* bN[Ņcp^"Ԛ་1wO]0l`fV@S 2-Kci )(?ViT@Eٹyb햘6دַy aXʔQGո18ީj!i HCײqYpc>#]m]9Ti4 JۼU/=u0]D%&?9!LU~PCbt^D4s^ gU|kAu<-rTz6e|0mTux]nBLIfUv?,[f\ylqa٦>8~j]bqbmj|>Wm?J 風%xxM/ n{Yz9a~/c{}Ҥӹ׏aql2>?-1]^%ڭn`]j[#[rөe'/*^+X#ٲf055## }<WZ?FE{krVٯ%?\=yωZNv"Ǐ~s ?K?kiI7ÿgGl/k'GW_;򖗫ӝcRq}sssqѽ}uv5~-kG]M{\wBUu׬>5/jPwzbuGkPʨc>K(GJ~H4Ե9$w٥7q?UgD^d^9Y>RSrlHfR*Ca+Cw 9[k?OLvP`],\X,唷3O%Ox6Tj2cVl߾iݜjkr!8\T;_j2}Wyڥha-]I,ig 4fgkc]%aj$^lZ(3l\0d|gModV.TdwNbv zu~!;;(fn֧W)wغn%)m{-xQh咆!_lRIE}5z^fWd>V-7ƸF[ -l;OSkyzL8ś GU=R`zt/u1:j6:PzB [-l?+ kI@fpI1&Brl捤RT+jEKqbA \а"И[/ D&0:B8ik"OorFBzHz`I<}+SI`^MUkĈ+%U6E/=$6#Vrj~|4wohp5 ɩ}ODoxuhaTd6&yujK FjhSHӣ>2Liy JƆa%чظ&h+5%^4b3ݡOYTڢQ!#@C8`$T` ˧P:gwS981<]Pd:XFu2wZ-u_.bPG^Xo4(I\ & RRhpIH'j/'4̛ )ɕ`EP.?g9k[id1B`WtJf#^ϟD>|p~\ 7g]2s0} x`, MEb|Ār*LXeJ 6ohI$0.2U1Ήt %IØeA5G `ЂطT %>NctJ׽zr|s~k6DZTR,%Q)OK%@t. $iXe{Fg{%4X&B1BȳL.1ET>+A"B( U$TlehQ蟸ն+B!{xXuC3tKvth (Er5.T&9D*&dƻ:%v]yM&F/­S .&Xe( YP.IpF h&zC,ϗuЊ crYQ<=BjlbzBSZ!Oo`(DC F^Me IES 4jQq Qd * '&D1A"NG!SWFEZŎ~{5rbV+>l ;sp =D*e%V_r}^ix_RΌIKs-SGĽB`R;-*Rd9pM͊X`dPtY7]ˉ1 I ,Sl`TU~uRE>Bp,.ꏿ% aeMˆ`d4I;Oa j-RY PqS-?~{S6iY DTHH7gIAhWoL)ﱐ!LLϞ?_;E]&bP<[Y1iŵ,mS;$]WQ^v_ǁ-( DeE@m ؚT`47^n&"jŠo@}!=*h՟$ ^g.ȹᛸ8'q20<H&C DDY8 TIVDz&cVJHap4 iYɊP1a_sLT|d= XP%X22FdAHk[:(ɍC{Zku=t'<Ãf`s,s d|t%|XX0"Րƈ ðNY8  eB.6!B*f L^Gw8zeM{вXO'W9{Py )6 +I@sѢ jm|>HHX "੘lbR:U8S)!>tt4?9Qn5jYM!CaQiȬ^CX-%3` }֞SaC˳u>!si٘5lc5$9]]7yiڄĐ9DBP$ˣu@ Lgz\^ O>^-1n h0+%D<R\ЋӢHO2r4W #!\ܷR(%ZBMCC3Z+rCL%= gK-*I"|1.xÃu!?u꽋/L:{R?UKwWfuuOU@9t'*ya^YF~P9r x9jzdz[Q_z~ѓ a1A*$[4wxaaXQ(Uhh"x?=@M/[iq Ƒ18#u*䋀gu.;;],]:9/YM' ߥιw)_;Hj R%yRL" |9l;uIxy3DY8K0/_z;~h֥J[vT ExPF?9s8>ݯ6›7cz*d5?gcH>;{d4NުםqXTg$QRodۊ"PA (!(€41sM*c@VmP]xid Ó"&yӤ~'HkmӚefoE 8*Ź%s؆9QA%C!yugΫfձ 5 9/?O5 F'";y_^&SoF L3dqO Aa!F,M=(sjȆ=쩗:ջPB DN6{0(EP*UFLa<Vy:wvêli?^|ÙC"]_B_؎)ٌ,ÈD[;avo!*\nχp;\8K_7H}X ]sbUaD`hS7VnKwA9=eR1Cҋp^q ًbYti~|,}铣'7@Fޜ&ZlEj@4hW~[$KG&>@&] GRk10|>o](,^\b~R9TQnI>?HHWv^ ihkpNY(V%ë륽yerkZ7{o/E*\8TD6  UM/HR2Fky^2,C眸~ gü)L&~#:J`!PHA~muukcc aisss<HP>Q¯~&ve5Inl]:3dʔ]x+|tm!ț9mP7>~sw\vZDWf]z6HgzjsXi&,Q Pn7FvP*Wvd';Xxwe|n;R@QBam3&ɊXhEgot H}]f&QdeK ˰6 rN|~Wǯ^hȫ'/hB:?&# #8;$e$@U&k3<İ}U{!-l:w80Og 3C6,FRi4ۀHxgќ`yk ؀^yVO:υn/nYU:M7-V&BزIB?dl[+ ҋȫW8:~~|z )edNK9 gyogXvZHd;Sa~BBsF2 -s@ t:@98FQ<Vh.x6gٸJ\m:\ *|;q Ҕ,c9r2LK!mXpK'rς7|BE!} dyN :^$~==yMڦr9#1srn\Q{ /r㗤$w%7aҬ?Ԙ|gϢ[zscr\}'+/E|uQc2]!  :d08Ysq$8lKzW:cBUځ!Y]YwA͑4q 0+.iFUhه7פ]80X݁S it_<u1^pU#;>Avg]*j1\Ѯ:z ycY7x5mg:dA dt ^p:ׇ3Vser6]9i@]&H(FCğjb05~-} Ea.}w /7d߭'DxY^d a0MC#L'?_ڭxn2 ~-d VđbT;W\D oÃ3ȳZrEWksmq$a"J~n8AZ7ldԒlh/w ^&'_3v\ӀwGD~g2W?P ~?/'8hAoF76qQ#r0zURyrr7v#-,@Zg #x*<^%a7_ -(<9_,6GӠ͟jGYUռ$șǒW,wzۓŹ%p+_ad`fT$~rv$;zd&>s*ihAxV2BXem7 .-$}i.s>]x#I0s)ڞP*[uz%whrGr\oYÒ#EW=hp-L72[~IV%0橦ԋ#ߖ`4(7Mۑhf(A>au{ %8q.m9Z*[Tx107[):ctޓMG3!E"֫ݹa[p lX9<ѹ2A鯒gZRzF{ĕSkQPҎ$C{6J~3&@Jm*>'lRWUs}5:SȹR_4$Ab/ I{3#uZzN7^ hEQȜ ,飌 T@/"H Cs>P"~oXgz(O4N<п.<t;FË?yyt˱Z+(v4.3GP1V/R E©NVQ Q]R&PBKH !w * IWbB"5 FH؀IPn2_ΓXBBD# pDpD1lWq;FEtVml3?^@ARUZ;Y)z^{$J4 /Z6`"2O*:A~-;{*›J"zQdm݃4jZDn0͛ag0TU~.+퓮մO<+P q𷝯ڵZYl4 Y]A_WHliJU0#8؟36& Ga\d "I,9uI4LkD΅oAdBޞ>Yp!C6DX͢Y~Qz=aiv9:ySdt+Rp\H]%C )"uRqq^ݜ.?UeѤu%@@A)QYv[, ؅ $(l[>e:DSg$Ĵg)4hNY^܉sDoY !2d ́ @m1.OyMt)E !ir `BtxG 8rՀaBi=Fgr5a SKdyCU*Tǝ:Z¥WjGI^RZ],F$Qƶ\I`sk ]*YWvr~&Gz4 O5sxμ׿? li '}˦z.'W 4;`ԑ̼GraPogk=*xπGv!j7[Hwt 4) jZ2|J|0(<>h9KSruWiIтYQG2e8RF;ʿ l 'E?@gʜbD*}>VU^dX.%OM` zmyd'Bnޭ~M|е.ͪn]8h+iJ/%-%Te)֤h%as^ȷ wLp' ɾ`͝ hgZ6@euu  :rml`ŵDCBy ;8VKIm}}v{!:ƌMU';I! FEfiF@0"!lZh|h= ly/9u$$C R @R\VPԬٍUK EVxv~V%wiH8 1(_ ^8ާCaC{Ճ:ֳ ~0r+T&؝}[yyjjE%"PhDPx82&D"޼j3JqIuu.%x|IDkZrKbY_B+o{s߾F/"BB-Q_6v~k^j_W~ѥBamh>􍯁H F g2 #q9-^"R$YJ"[b]xwz / K0T7 YQ8ƺ $=;&$Dyrԃ \4]W^Vػn6KM8Z,-4c1yUxej !_?#/hC#mX{ *)*&b ]\wC._:ݪAfݰ`{qZ:8z#*;y,*"++kt*9ȻaL!A]d]ƕg1Zky-q ~mӮlðztl࿝NyA.Jfg7\G#*G~+  ,j<^^ Yny\b* kݪ}{w8~=0{9.t/mV;zg hV%n+l[Cphq;)6oj@ڳG ]Q1,al#}g$5Nv¼dIn^nfA^dCG߫9jXuUqD"j6g M4ÖGCN6u{H Qauˁl8,>aW5;ErfB]/+eg5Ӈ .!n#m~j*N|r!AHj?ZFd!(P6VS>M@8PyDi}ujPxcBf.OQqDT+Ooh_%=sn!|#V #v&dCqyUl s/#WaLWP>m*՛cF1Ya J."Ã3"E T`p3S/ȭ8m/fxI_׵JJ/_m2F-,>X@h) ,/ik~'-TmGp(\Ǐ9J( ׿p:L].KcdVlld_zuj5Vdb}]NУzyS4Utү 5$z@T݃DhQјliޣ{=~&^,ԝvoic"d$S1/!;!j-M4ÃGH.B0bhe_TWv¥0%nu2,aD>.KU\:{* B^ |G+@HI/s`@/kwvI*l˗4PlT}!ޚ6(*|9`7^!GVl(^h+(xxޞ  .v?)@hw}m-PnnI9$$,\3Ӻ('MR`rм!@ww n @Ebx r Qy>.x+.8X`1b r^RA#Ds qhZX(/aIU3A8(uT'39az&H×Ԃ;yg+[W5ɢ/`ov?&B>؂!J-+s%΀nEW P@ڤ]G&aoZiB6ˏFCNɵ/S'K,.d=A0 L,*.^,e5ɫ˥;uNdHQB02M~}gjr\]AUF-CQi kC(WV6H ƝCacJVSuNű8${$=|kqW~dB)LN/\"zbO <NL|u>k D(#DHJ>*L7xʻ*JO1E{${"g?cj kBZR&huJsX{/jT^Dc8cG/lGFi x8 ^$wو}Z,uRr- Ãjе~: NɋdžC]s)C,q>y'5Qp ' BӤe'ܻVfw鋗\/)!>uI@,&Y!A. 8)HCHz@t8` v$ Qc>QڞX9-do:+N|kqoaL"ۜ/k0 ~+q.Oh"ѢH-@Rpvv˟_/?~:{5':..}΋ Q&t+ T 0 IնǨnإ2Aay';Bx(-+pv'523~_l?Z6;sQm!e&prιE&N#/>Ԭn > .k9XP'%s1>!| nO.]?mq( \x ?_K~*Ƀ= 9Tb:, K3Ҭ֡t|Ύj}0hT_A8iaͽ.MK`K%^aU\PLkBht&&~8JNÊ ֣ܺTh0/gR 6/G<$>>$"Y6D: kdʨrd$2_?fk[jM8L| ^)U+ @'=#@jT8YA6$8@<_8ŠN&i}Q^;e}(צ'~.J0!$j/7Ab>8#r%sW5 r&x prCpi)om0Uw4nksGa>u"(^7 ]{CDX 9F)"iȓMiQ`5bUM8VMF гQ7 JTwK뛽hM hRR8*ʬH,$ .Z3sLT-WR\%D !gg?(bȹ~Rr)냸9P%fRn&ȳ P٦;w1IX=cTڊկ2d}T0F0B]Ģ̹YYzd5n 55^)ʮ&מكrUt`#~wg NVtֿ|۶t$+v]V޸m96I `YCbן.痱)f-?:}m]#X#+%V} &f$ x[޹kӅ^"q 0hA}<\uB4|BHrq^fWm-$;`=tTGA4x'^3B8IW-Zacjn^*Z mD}ZIgCż4>xVAYlM޻MHl!ch=ϳSl_!."G`e gXи4epſA 5]r{ ɲ-hHWngLD@˰2ݷ|pxd )ˊ>zvQeČ, cS$6RC;c3q&6sNlrNє>h!'(a^A ; Θeeq.DTֺ^vU$:>I!mAnW n[{Еreyu5y sCҩm=bp{@ ,?8bDs3i@ 51X'b ᒦq'$!I EE'):tAHw.C'5 YKV&vO-RT8@72Ku,B=th@s_ԳvÉ |1flUWm(ňSOk"SX{6Q1Q1qHL1ͦ-d b;k5f 1MZS-Ó%$ rPdxW`xCB0g,iMR#2&x$A2f"z,0<yn gk@_yeM'4b@ _?7#uA5Mu9{.?ܽZhj|7(B{X2F&K[0JVkc$ˆ|jFMYZh~']GW{k_< OFU^46T Jއ4@u,B|82{qS]!|ޙt&Ġϓ+wCl5uHnLi ^A_3b3CaQ\~5@‹ɇ-!JJEn7*T(Y`QF cɵ zsyv`AAhou6W(6%O~p@j844ؙV^`t1yzX8 ~`]7Bnn.xM9voO*!xY[N9EN #dXQ!bk[&MK 1 4G;$>#(-Zo0x[+`u@J[ 8d# ?Xqpq+ <QVQo;Ȟ'޾o>=L0u9׸$->!)!KAB6ضT*<|0B nm%4b[ X=pw/A,PSwŇ!/H&jɣ`yAOMLTRT'BK@VS6dM6+At >LXXZ94 ka[KD3,.t=ҩASE嫗;~(4MEW) Af0 & odI=2oߒ60„ 0) 9Qm[@?[0|c~~EVftH2[(|\hn9BHerS;Qq\z:?j7id Gu{v5r ]r7 ua DCiHV8+(la$d$v@{C5x7t Gn4D;z§_^ByM>4S5-kVn %tY`CޟUIxp'aѷYHNVE.h/Y'$Ksc(ǐQ&|ر\Cv[|D#7:2烉3b 9@HŹ|F\EyUWo8 |*rpuvaalvr[eN\۽A>6O8̘۞"~tvOGx4@4 JWHZ@F-ú FZ!n ZoAVi:W,NȰg>Ux;PuBAbfn¤.eiYc^L[UM#FM̴KMt̆@ }+}`-֓y1vi*UDuر!gRsMEԴیl:H=QOL%EYUz <4>+-󜕔X-J?Y7g #Um,Qvnn)<{ٳba0zgE\, RfəP50D-Î 1u|&zMM&LPg:mx[2qt<"+SSݢr3:`27Vhu:@A4ܣ b[o^9 =0J4II6`0!bnP |;ߦ 8AL chl3r践R4 rah/񲭄egՖägG1t)!3$w9@;D)0tKM Yl٥w 6BL z OO$AR_ %l)~v8:l ?WŮ2E:OD8W vrJNs@xΓUsHk`|M4'_.`&|#$gG16 Wey&>I}TyT1zOK"|qw["b!ǪV[:vꀯ?-NΧo/Il83VE$Ux:$w)jΉ5lo#2J.Ϝ٦2V!R/{ƶyd=r29xNZ>i%3R/r9}o݄mmů^\5?ǘc~52H*ʉH}o\CypKTϸm*n-k ^R 5jSN?Ff~$Jf%榅pSEaPHY2m5`n+6B)owi*<,XeRv.H}$rvÒ} MȻa.}蕒wkLl/p4;_DȷU`Jذ;9Ky!!)qqJLs+6[\d,)PATBzEΠ9 bGTE"=@P". <͔4!M7d/~1dD$Bbi,Ʉ9ٵrHl?ĹRC@Pj"D~B\:ʠu0mYD@;cM> :i*Tl(!42O2@f@`i@ox$ک4;1Ԙv).I} Y|n;&IƔaLHu4m* w[54Y^5H8Ќ3|(޳$SZ8J yc IA!,B~=";0iLC5VYxn>rZ! Ww7كaR!U/WnI@U",^4јl @=MDd}i67tv$=u?6pbJ˫0$ ,{\&4. 44x :Go1oQ X}׏Bw|H -S2j}O Q#Q(!7(6 8=rwBVOH"mޣA֔hr%Di DH/xwWO{n>Oַxł:T/.]$:78Xq,MlA/>%ƛ 5=\Mشa wH2Rhi i }0L]1#t8FX4 {>ѲJ0AU:o qL=E?37 v~yG/ bajDö)Ul%P\牾љ4czC٤~uhz>Po7 ~FW{'7917\1?{an/ei_72x@߃O.@~rghAGؑ`6쒲^64ʳE*-bz@@ 7GﳘWo'!U++ N~x @N}V4 _}< `Wł0o"p4\Τfҿ9V߯7v9Sd1R \,aC'dS6ޗ}` >9p$z :?r! /g)"5TxQ#urGR.fSf`6Pu̡?%|d\$6. c ?) h9{Zl: a,- [rB(4L:{a'|b8ܧ?eJ oe],ocݧw'Yfm D"rDf㞥b*cl G",3>L`ɘM8 ç!IoK}xwBE//iBoP(tyP#N?>؂mָ- B )T/H?JJKp$#6 1~Eu|5OyFA0T:$; d 0| BX> ںw(qE[=Ve @.Ɏj*Q:%s,B̎YSx[7dsE >AvOATM M.C8Enֽ 2Fx|𘫳 ([ JȵzAQ N"@ڧ2Ebo<gls8 V5QdDs!!Ι%WOrg IXʃ@N Q> roҙDC$Y=8@%v6&`3p; U& y*b|̮f?+qFVb%J 5D}qVr\,F%ʤ2s*<9o4"/Ϊ/;\O Jݴ^'0L$XSrsJ2 \eH&]hJbTseC+m("-׊P$rU00O "TعlˋxCrYRk?  l;4O$&5ҬĖL$yϙ4ȟoL ~)C& It^<,Xp876Kv4NqX|H>j0@C7ɒwXUWcrOIq l@0HzTDNG& 0 0@rl)x@͉bR%i[zODA^Q nQ4D0ZhUG5 ^GYwByɩ.xQNaŶvmi5mRhAW@A%'V_h=acZq]cH6WiDLVB85QS8X>  +H9R.SWĻ kQcCH hy, 9Yxv~TajӺaΠ E< J (}$?a}fyTHp#Y_MJ8j#jf$r׫OMkqms ʼ a҉: ;!ڐILǪ,k DVT>!z\O>L1.VoM*Vs>fD º?<rE+OvNeDr'Yܜ B(F! Tk1qv P~D|i yzBiڽ Cj>@(3ߪ 3dfi`ҰZ)dAR$X7dzc$7kAL66X?)qjR1I?Tb[˫L 6" kd`vrww$iw$Hef5&DǥR;ҮGAa8"EZ7v,,dVLy_BA]Gb^i mv9|r,/[-T2@z68!rX9tqr3/$p]X='tOON'&d*/?.a9F̣:#4Ң6 !j8 _Јf!ЋQ׭ Mp/߂HIhz`x{uSķ>p٦`FR뺖z:Xv}#=Q dyo!/̄-gZur(%R#7UDFAC5/ǔa;t E@f_" n* Uᣱ]lG 9! E^Wt@ˤdU ,X-oL=}68kĬDڈ, &=.f[XLD+'wTtFĈ[u.VXG~7]8Z'l(]H,;}ql,ȋWylX0 <ž_l20 -F@Qq`ĞRGzp*xmt[N;dO~ˋS|á+jb!VR+ LL%D(>_4&⦞_{{SE4Uu{TA: [nr't`c@iE yJXX] X~PE86Jf;$|4QZ E^sO—ؤYM9c>|_ޜ @{(+܂UTlp ?q[SLjR'm/(T426$301Qppz0!'f;#|ML-w&?;90#mʠ;!LծS6>4ZsE;Yњkd{ t]Jޡ5Yxb;#Fo.K,0O !%F\7>v8j G!gŭ8R%:JA3>|ᩅ}X*DxDdϓfA7_ZzHk[w / Xvv[P~(>6ڢBD!s,5Jt.RoA0qsX-]\ŕȄŸ@_ǯ]P&[_k& tYx,+zy@ *,?"p Hm gtTMY8$)5 FAHZ!θŒv3G'Hg|eP㐙 |zƧrgGT+ ^Hn_8"wَgA( 𰋔V_|~ 9St#..4x鈡{-!_ %uq;U -_q+}:,`pyhG2 2~iFBՈqv}2 '4~ڑrE+83Q$4\ am~lNv#i@&ǵv(;BIw1q]+Q1pu }V3'7vzIU&yXx+l?;A1ΫRء8ź(PI1c䍁&,䏳!x0&$?– ǥ$J6LHXDy݂6 u <ӫ hĺauQ~pȹGM*t~HvȲA(gm hzeV$e _?e#(lF&pP1ossW}"{bC_ynaOGGJ\ (t+@0sy@ (P--~WxnN7W?BrP Bw YeIT8izbŌo!e7/6%׍"YNQCV"poU蒋'@sT I2L@6VgsȇHwnsz,$wZ< 6$,5ڥ%rjt.nuHf Rc\S) aS'Xi Ǻ-uSB`BN{ E|t||; K\\aSA#i]J UnFu;\L:#teGƄ&NZMB\~\9fIH 3AtvDQp(z2N/@.`8Mrq4zܒRn"W3B܍U5(:>A_ X7p7AZan6YYc װ6Е^'d\xBu4}CL$,0R k  ^89 XƎbU ^IV!-~ES<6khhZ .,WO@f7W^X_zY-e(Sa> ]^a0m)gũF NEG󱙗Ti5r 1A < Z8*Ei;Z\ e7^.JIAʫOO)s g @R__h$r>iC]PQX NTSblN8%- l %G!5u{YsdyyO>\uu)٣ehm2NR o @&hOD`l"yލl&@*M ɿv{ R QD@Zi&q|2 g-$\ZCzPaT>;08f`]ܚlF'Kv] ̋ׯL%@>+qT&Ob1ïQcTigغf.48ODp-* B mR9]ƄH↎}$* ni{:>:4#:z[#mHa#aЮ28MXkkCP Ppz,qU Q8R{[lɌDD\T.!X \SaC6G!LvM!wC^ S"V? WhqܛF>j5)}V ȆlRo:G74]b&7R̮A\f)u}KVjDoƆ#6ԁr0jwuzF6_QijBhv=1O=%Hk+ 'uhj" 6.PwnΚlq[?ih\h8Hqk{wgw5ɋ(TY&".TDRIͲXL|@P/gsNٵ.*L V3a:9Z4>)$;@pBF%ۭblXҬ`"]F?."8GgUZuf"TQB\[vEi჏)ڕw[YmdٜDcMo@ @VPL2 I%p Z5ADQp&.|8. R{pХy<èN38:8 0yk悠{#%V])%8 Y輋"wkLy:g~`2ؔd80MlJQvnRJ0t$mS5~Bo >Dںm?Rn. 滸ݖn \TRaVẠ2_@`?\!jݩ? mi [e]hٚ_+ [9d噺_a*#>A#C*,@B1CH"!!"\}p76vȼ g,X<3Pr'!.wA+.CrrB/>@v -4& cgIw BaB`Aټw,* 6n^;Q*iMӑ=ё]6ۅVqoTAFxeR&Yܧ[;ƆU@ѐ!L,!շf^uU?H Dd =M ~AGc 19(ofh#1J ZbNDĎDNcs5kj1ATj 8%}%Y;Us"hF^qw!sfTK$ :ZnǤ-9 輛RQi2 &{|DcZvxVe㉏=f#IB7:{oUqA6V55c۪Ƙh”$\T| l ؉f$iDAE۷;eoH"8QIJgĄ^ʵf @)G~XH0VXAG8WuTc2Ê}N;^p5"V#]ɀC x; @x2GS }H.7R̪MHO _47I#T'D5]Wi:cHE 7!xy!mNnh@H `+pQQ^&&z+w%ds0 0|S/%DGx"=!^|~ii)xf\y)L&F(ZA v,\cBL1bhMdkdR QHZV%j7C0s((v*`{NEXqiy(\rIy^`lH TX0G'<_賹'[y H8YZZ_ߚyU[sT:$|ɚTh){ﱕ(3bc}y9?o)M%,.,_>~ͯ,x,ᵸ@dgȃ>p,l'Q $^ύ8¡@;(HF3H<0msU`MfIE>رx^d nB *4%$ס9:fq!"bz :/Al2Z<|iUٸ'OA!2}`S}`kmZ܅X"C! D ZvpqVtJ0+1} &=,.‹ ?Oe ٝj Y,~X6>Pqs d~kpa,' K/f b>ܖs&Nl#M[.-!qt+%iHR E+=b3P}d@fhW:@„@ȗ1+wsh(W$#1kbJM |Ec[px2ٹG3Kd0g$u_p^gTu+vh׼/'C:15vƅhcbQh0Qa# )s(L_;t @g<\!|, Rf Ϙ6x(:_5Az$ ,!\Z^waAr>d/~f}`CvoiP)9v+ "kڒĴja%!M[!;+xhJB6|)B;NMW5@0.a`T($Xӛtb-EGr[y,r~In$Qؗ}` G}`"\v%ZC0T>q 1Ph8BܔHۥ[!Juǿh2T.;@h(@ڄ2S@\7\"|<@.>{l /@L LcpPq$缏:FvE5z4}|~y_xwwXa4Zg 3(~LL %?:3<'̛/ѹ9^<|mnr+k j)n8 [bkK=QQM\P!{m; lBq̉NVRT6 LBNݯV# L=n! "e x7vJC ݂7.Sܗ!#VQ~;./eH v; ԡ^PU!ф+dOD*17tb%e #ᤸX3/(z`SQ;RbaI}q7L!}+@.|($:V\DU^>پYt$pıƎ]A 䍤Uj6K1 $}!',-û%)0/"'̯}-X=6y;*,`AĀ V]5zAC (|& >,k<4da(|+(>,0Q`F4x:}l@1 &,-8O|"7gv=Ve G` ?0'reRb[ T! s- ` H3|Ztnr&cQik1YRyT$ VL':1x--kBOXż5 fAԤ7fx 4ʂn,>!gc>ETwUWhG 6|R()X7ub^'Śy셯2 )rU0 =`8a^FN,[HڀAU`3b[6P :}`TQ::|#+@ Sޗ[JҮS;~8 cs|@B ^˱Yd~A\8Q֪,A ds "iߩwS7Au%l|>}0& /!ܱwi._AOϓvnǴXTX iF$@Pظ:^&|r>mHwn < ~ ؐY5`*2Hl]/GC"U'5F2 A#9GsY_SpG )[wRxGkKǰ`=f @ p.#[U5 O ~糋NUYRi~jw@MY&H#cpƷo.:FPXVy;8(w:ʆ[D)?DuU,9fywAwJɘrm[kݠ =Oˀdi%??   p[kfohMOD&J(Wk(އ $)Ȭ9_ИPưT*'۩~C<^!9IPΞ_`8*pmCif㗓_2@ב,~)u]2-Υ-ȁ^$TDgr(UijCcڊ1 שt<#.l1& Z Psk߽'C#Em7Ss*P+\׃s9xtdkIG0χqC˝n;^.z{pAʈW. Y~)`kyB%B{$}z82dFC$ m%/I  "4DUoǩߛT9Ts[ G@^n◞8YzpXZ6O4>\PCQꓸ8; < &꯺xy~~%z^=;a Խ[&T=y=愌˭lDk!;WsS煞'bHv TU1sQ_*@XJԩ&%Yn ;@b~s5jKOg/U(p|8 aZ' x;S]bqD̎RZFXY|Mm6nhih g.=]JrЫ`mF۵(VXNB.%څH<#".'}Yj~e='Hޕ\Eg-/3>|S3,dfj|?O` >:*ODghOyH= /ZԞè~;lλ>K㖅82 JlS@t AL4;X/n"|X~sbbf^nQ-XPp\}ub@%o "3;Edfs͵;qiuqu&p D:x-,0<|Лs^>='e<@H B@? O\\sTwH_QM*L73yI|_T!n>0x8aT2d{Qj(ǚDEp=H@qqʍD<&FvAF1:7YZb|䷶V Bϑm|X [ L\ͬ+qK# /`YbZ(sWM =;yRƪ8Tk&3Kqn˱*rr# ߁,&#UhIQ y&@#51K,s9q8 n3ȗ`YyWy0J#8|իŹYwd8:\,Nf]B ѺVɫBI70\ɷذA Ĥ$YJ>&6բFsF +BWD !I9ćQOޏR+ kZ_G8!՝9W Y WZ@"}!QEb\E̅B=*vϒe{4MCf7,Yt/WT/ؤ;r={W$vNfyϥCj/~Ϊv׮ڒKcv@ %$  @f d>ϒ}<&y9/i_cɽ@s"R| X0@ XbY-@ǹy_Z7-E'?O !HC8?8dA..Da6c%89WFgH׾Ztwj]]^[5< ߞz~eU:sVl A,?Ԋnr $4no}q/@gsO_e$ nG{2v[H#JW%.*⡱d@AO64ͯK4F~ F^ci}|pmK0@ y%#™1R8v附O~Tar %Xh%t "ss7]}Cױ@"J,RwjxB*^f:`naeq 斆Ura\yxyūU3KyDZޕë'ۣSSW\|0zSWZJHELJ YL_>?Ij}:t<'KC"zpH˞sT@B-&qkN . B^j# JMo c-4'`0N#+7_p,萅B,(BhVy6Ԃ4h1~}t+S͕`/!dn"hl^;QwUTm!E=Oйj>A*68/ $,~~~'g׃sdy+OL5 MgKXy)\@d eP5.,f3 "q:wr[Kd^ jtW깫R״+OvTZ?ƫ46uyBd 'ɷHg MCQだ,j>eI|:42>RHchs{5$rI2ԕ DS*ELQ4J:f) -aH3F(;е^]bMy?u=W|(g)_]\Ք?h&ѬE˦Bىװb>'pN|9,hi5k:W:wQJoWkpBh͚eh:E48AUz=+֎T-·*C͔閨tXs@ғǨ(f(cHj*񑰴7i%yG & N>!ogݻv~0W:WBRrZxC#xsA/ ǓC)@:5bcJS^[^LՄ6dHZgo^87/ҺjVBυX,\/^8mG nW.59f§–BAf@%[pEBWd}]ï}0qf{A>V2{cixa*&i"s8AQ)TJMz[{x%@/%\a ȃy([noZp8ÚRtr3ڶȚ. HȿXڃf(qZڔs{m/g]*J hfE\I4[ͶI}w߽Ka96Ւl]j-і3ְ3D 3v~@.='^ͩ'Uq3*Um]sW"J :AaP6ea#*|[)ǫq2.<&l䒷eo JrR'#͒+Hy)\9j>zZሾc4!3So)ah:8 MGr e0g=>0 sJUkW`L3{~o X̼nJ5g;{h,a&?n 9˰ü`F4[#7enU /͋zj-L:Gޜ2 Nux>Xb۰RT?@@iAmT;C<o1P룸S2Ne؉om"q5izg%ڧpˋm%y`Wtb…Z}ZV 햵+8- DB)򑗳F1NbAQڠR+FؕT&1X ͞H/ZZ bpݹtX;l֨#rX.g,k,CkʹEcR.ґfPNr|&mlkٖGŽ赛8~a'r-@y]/Ex(aKXC͋qGzæ_x -Get *aU4q$h cxl$=哀XE4q;t{ԏ]$|x /sh9/~'mFk,8G3o`8 ~7(9Ok@>4t! ^ " I$<҇u鈱u abל 5iis+Ѫ |uL9Qvcs`*5 ~ւ(5Q~ƾU,DR xw”`QvQȯ4׵R.DUUY4KmKۨN'5>%쎫[@)huwŬu !bӽ[+,:g~XjۃYiQqďc6/W(UjQ\&=1ikTXh) 4Hdsp@>`B 󻰹.b[un \BXEY-9P4:HIө_[YYFLt%,f (dݒzLDʕϿx&\Xr-t$/B/<' #uɑ Itv}H @^9t. =Q2?OjeuZ!%<ؽ!NS<}BFOU/S-$ ɶ'Jk@(?xX!;'D1@K* 8N0qت6!dR :# QA WO`Cx[fJIV &:~c'eۉWOwra"EB5mY;28i`Fmڇ&s;da-63k7θyՕ;10 nk 5i3X+C?;A6L,s!- /]Y,Y2PZ'zMUM)Y.^9QRGIh w7!v~\JXm-Vd.)s^y5*y%+'#aˋ7A KMxnDqv;Nn 9|Op|&-@V*!ﱂXSȅn¤.O$ Q`v$E-zAX:S\ueśhAծr ޽6P>c2IJZqon6'[cnbiP !#ĜK†DrX9QAi^bV.|X@3&|uΊnΡQ1-KȰzbѤtƺ:v,swnLuʬKD{'Үxo 5^=BEg.hvJ! 6󬆒DpN2ewhBuxqsD%H5 ˾@!,$w6\bfFGz gWn,u{"izwҎh'8%YG3P {cHD0k/ wPo=Dh&R8RҜ&zmFю>Y^ `Hm:ź }gҒuD]QAnVxY ,&1r\oH9xO>; ' .ÂTV,̓9R2!1|EE:T l!Hî&G9Ѱu  7q E 1)1!@EK=tvqOC3Ar?ZEDloN  MIh/BxXe)q7LU6%C^ cцO!U*$f nQ3OQXϬY n 0+u@Rf*?3; g\s:ܣXyiY% h R#i8E:2DC!YF$\8 RTT&m(Y'Lp hy DS ְ!^#}gZ I0UV9C䮸^l).7 puX4:`6#@)|/r0}`MʺA:yssK@8ٹI)v,yJd9}gwh:Nn©X0F}vya7XmaZan]i׾}Rѽ4"fB& $)h^:& ,úRp ]-m%r7]Dl62e DPjWYi;-}BE,|"|$N&M Nax'tnsXz@.26|N?i8xy~ƥr:Ml!bѝ;0{O\sR9- x_YcAW  vpJ~x٢KX!$hb#~\goiy%ՐEiSW oLM<{]ఐl;pыWP?}62WVӦL\F]rJ\wz>jر IiSǹx5Gp0ly@q|VY{z"/j9`CEvPA\J7@ߜs6ld(z %!)JM:Am 6Β;C0k I KRp |Y{dQ)1E*?~ztot}ork[r{ug<y-hF ;Ͷ|g+T!ĭq [Sw}0NnFgLt=S HSA^dsG vp<ڨKkq2k>-]X+lig슚=) ^MG$_.ƺIhgiqUSUU3.\H֖zXk D(WDL喕X4RMIN2QN ?ȶwvIo(C98 øy18-r%KCz96d,מb'5ァ1X`֥s'?O8z0-ХtI쭈dd8{VbYnRu˴cƒLDYpIҕiF̱4u - Pl@ 85#[ovuDX竃 'UYrբ&*]2 l=SxѢ6fVо!EE [!I9_'J&"G1ӼU< i7Hw^BDU'o/e'ǽu$yWq4INbvEyQb$k9kK?~wˆ $euX"\ZgȎt\ Oa=+grfB(TLu^a?}+H}x Ѐ) @usA#>}p+d2zqԏ^`*-9&9I%0 -._pM]搠Ҟ"\Vgcml}'|. T LcaLgS5;;G?OIE&:׮v״l^%I%Fx~0qIyqݰS^ur|J< RVg>N6`ʅ( BQk0^W箃Ёq.:˂TGoN/ObCYBZwQ :Ꚑe˭|5MۈKC?)/ Xp(#/N MsJMjx-aa=|:BB1 'yl_$\pA"` q.lSKuT}N9(x(SMՊe;&!&QD:MnKb8/_E@ucQNɳx[QձCڢ+7C(q5! ϳ_ټ=bl:1ԙ @ur1T9# c1ZΞmg\3c2]8o١<%'}LĆ^gaBh6E7=UWGL ۤ4J;lG&ջ:~ U)4f'cu+9" !5^W6x U8>M@;sFNf2ULDCK}I&k^utl#N9WĆBqMd!`&6lJue>#E$ͽjdtt-KYQv;=6q|[2۟!8JJYz,v oݙo"'ednquegw8Z_ai pڄ(J@MP M+` ج4H&bD%]Ux2o"+,p,gP \PA^yrqeؓ|to;{_o֐祃}px'fDҚߕs 1 pEzEk2".%!3bRC*Qh}"Kswm||vb-9dkAFs pj&4E)+Q~RXJi{w`J7AbVH-o7+R\eBrPk۰A~ af j^Տ@$Wm\.%e\efn@mHBhۑ7h|:f1#M㣩L*7@| ,m,7ë́t6hӧ]@(d@,\<]dԯ}r"!>8lU$!Z 4XmHR_aWq^m񠄊qPr$$#D`5 ;vr䥗oa$0y4YVhB4pyXK4&:zj| a`LF2t D_Q)_](f̽E|9\%L)A8pEٙ&&~ʍկ-+9^E|Cp&_~gnjVƃSjpLG%yxknc-b!:ε2놧I%QU}kK`҅!9d#2[,ݨ_'Ar">s-/ uzl9MC#Oc̑HL֊Z{uip-$h Z|[]`WF?Mi;T2$U&iw#V>a! @ƨmHTײ3fߖ :AAԱJ v+0,hP"Z߰-PդTG;ody*7j!F#^_K%!?R'Aobt6jn) ÕRBX wqNءf W '+*B;ongg6M|4{ҰF - ԦBIze`(KJRĒY}\=#twGd]Jw J[>t '3a|C~b)Ҟ%c}JEٯ/8uE Pb.,WJf}@>~1BůDZhvS.fwe:fb EgD֫m$`@-hU$Ÿ6{l!Yku d@U!dKhi[B Jju$eopkrA:.]f g#惵;9 8Lb<ڌrn{򉜰6^!jaȔvnO"&4lNI]dm 8EYC+E'Vζdb}ŷ9e21f./Ser[[(Hjb,z %$ ۃ89.\ '#,6Hƒ8?cy\%û,fNurSж1܇STRa"(Ea.t AnG,)lXe)C9Ѳ [[Up\) )/BvpA ׯFCn ʔ"X]vk09x򁿟.6i`Gl_>[N@=w;!hg ƙ9su:^76K.I _oQRz5Mwȸ6vi iM_X&'1`{2[3'@_p+FlJX?vdv,5$"* Q_)QLlS|phPksi/y[$Ux1g^sX" IbuSx ,CU݀QxW&Όy;F'J5æ̫EݐeëcOwx=Dr|W[ gw;nV5:bs%SIr򵃣sDUȣG[D5[/9aV\Yȧ1 p)a^J3Ƥ,BcɸEF=8~) n 4eT "~'kO1Aj `Բ()3( w&MJ\9zs9j3gB.QH7NZW?,p9o yĚ;`TwC>٘ @4@X.GHAI.|sEZS@#0L:'m,\e, <猥mmQЯ*c,*Wd1f"2bE 8}.iϨI7xXkE&d.],rIcYc/CdJ %@MMd qhcΣ#] P0Ez1-CD qzyB^zwvk^V-V՟6,XH}J:d0h є̜c'ח5kOc`ҿ_"@(!c8```HJ\?Nj͎Z_,?PS/_S 8z)@H/1ˣj%hU ꐒPދ{$MY\679|cC]磴{X;n"7:8@dZh á4f je[kAjy#2b,aȂ+%  "@X7ҡÈc}C!Pˣ^ KMY*0q [.:h(@>*3EiGjsr2!#4!rm7e)B)L仟l qd,tV~is`qB!%yI(eDTH^&:4hϡ>=&2D :?Z BRH^Є݌3&}j)krfx -Q8Yq׎}:%гm'>B-uo ή{u{P{p";n}F3x_$SJ|?$<#%A}z$5 FyOGk"EYȕC]xCXcj;$qp")z3@9<@Ą ؘb"֕đ^#H)W#@{U0&5m):06a1[ uH׶ѼJ6y@._…!+;beg'>:͗Ve @ I$,?laB WwΪ;-`T\=Yn*,42׵,:wUܟ&g'|"z zSS@Jdb#UXeSaAǠHlGfƻ Ez@bj r4&xp L'sd5e*H2DY @<wkַ@1֣gL v:)WrFrU3;vNbў^'M=ba8cٛe9x =A\ GA͒>%3i" ,Eq(Og cXzSwٹi w>=dאaL<(HAoG"(݊$m3θ^ig.XgU,E4"b"jfKXxȒi4:=3<2:‚Kс~Lf sO Nq݅ Avns33}6*~8zI:zٗ-%>KG/- :~Hh9C_*BAHP!E(۔uBM$B(U}Y|]=щWD%o_(;hQn<-H&M p$&8d9GN]2=bst\N ӝ+M YN}X2hAJ|FJr0Ri9{|& OZ>%i+Kt,MTW+ܫ)g x?>=ٮ"t;K"UK7o]B&7wpJR$,Yd*3P R$m@柁hճSpoh¥iPT)&qXCO` @2S Џ{bQi/<#$@QI!se>dG=@ʜe+Ur%J/抓v8&m#Ӓ:d݌>E sc:U~]>_Ns~-s}8G!?A>EH4rUbH qwYTq8Q~VDny x>D/][<@x !? a)g4vEaz7=R)͍ft4$n>ˡ&1 Wy[[Hɗ$*wPн\.}!p;/Je-N[DF)j V F)a[4t3;xâ[.BΙ|Qf G/N n!FN{,,LҢc? 1‰dyr^MnŬ\ :VI,F7 GxIt&Wn}v'FzAN|)J4!@@ N2 e96*,ph/j ,lU7NJQq|=^S:TZ+aNC0z`"2_Cշ\I:-P"ؘ(^8 ʺ ,k@'(@t Q"7oݾsArjT5/cɓ<`;wBmM-:4\v";F` 5Ar^ yW$IrkK󑋏\f M o H^_]W3 )בO!0,xM0 [8$$LƒL ',Byevpyn;({gD2G^rH l{ bB:t:,.O/6n6[<({5QjA wsQۨ5ckqR&h(Ypë+oܿεs㶑s__X:>#'"d7%;(Rya,Q(sl9;̓C kS "w- CIB => D8bo DێL)\M!>2&z[N " }׫kkk^=C2?[te q""t [P97IFhŐ%݀ah$4E|+Y]Ng2AiOҷv:-xB_&9#'}N:j,>Z,21L b7QLsDtI|dV펽5}w݃l%r Y'_f/[[ƴ߹u°H7A,DNd@EWYuzP[h9!lĆI٨. ~Q0Zw|pd`9i;!.sh\lI剄*}Id+?2.jᷝK։ pAEOd-5;?|ƘO\Eð1C < !qs(ˉ[qc\y J>7"TIq /)K[9\":X\"yp6 Sd3JͲ܂SXZVF]Z%4\nPx3--گ6@%&"v*# h3 hF`^tt-@_--ƎP`C! "h_>R71c<6@8h6}]A",<:AHH=4^GōZ C#ЎA27 7V(B>o6HRiܨJbY Bl)EԲ 'նDa~j<*QJ FM1mP~#^ "s f P`b Pcr؏qGs"6? /'`" cWub y\+!8m8SHMS)fGr"8BdGMe} |*dhD,V<&_RZzZaXV6?,wW/d+߻uS "<5$Fj:=Ɏ 6&ȥnR$ `2_~m7aG %É0n$ Ջҧ59<ȖeIs[P/έK7./ ] r@`'/5@lho^DpD(V X6!&8[}ҡVnHT`߯}v txxPe,!Ak%\yr(>Zr59FNp;wܾ}MU\$I 0hE 3ĎXXωDh# A̜XMZ*+.>R)fkו'$suYBb╮28sn63nR׊Ϳ~͟v>}֥ek\ÄBPG~Z&?X6 ;vN~3LlrRf9kzBw~ [JС"̒`$ANE3eIo҂'n k "Q 7CX懲CXG+{5/{e^?ҜA4 y!!f]ӵbL _ ^jvյ TxP<oCLd9{ٶ$b]`MьBX6H @Ugn6D-n  wl G߾}&hNi6'?k2x0|J72!  jA|o K(mG}$4c\ 1dֿS 2@j.[p$us>C!uykPNt+#fGj}?{]AРڲ wB_h "=$_A\ yw5y'6Mq@N!x1u[1ϚvT k}8?ü+"ݮCz^׽D M }d7S± JΥS[>J>Ŋ,JکX? [X;X]\1|5AoZXѪbgXH,^'DO,[^Ro2\J Q^UM ; z◮N&=n,g;ޛ@.|x4ք aekzL})W-{-dw"ܷƔ/qA_Pl0TP*j`$ $V@8w޶OCE\ X $ܝ Ofxeuu67N1"Z2++/.NW氭9][ elJJ9iA=3,ou8 ρÇ٘<zQ9F |_}K&'bIKQbLbZ!@lnIIi8 ]1KBy@ OJh3=f!$~tɋHg䏋rQiƄ*<9D,G+xC_$`nkܾ  ߬4B>&px&)XRl}Lg0mDjmhbD*|j[]䌚HEa\J{M*t;U)xNjo.m6J4U#M(P,'HXU6W|ׇvbh@{UzĤJSEo hARrǹH |? l.H1G0ChK<`!=D`YS0ݨLX> F$AP{ A،82Zns4muZ0kKK:x?z0E,1%-M(i}5k(r k2j",Pɿ!E65ąļ-M֖AD:I Fb{g:ElV }'ԯU7J(q C /aFLBkض 9Yxup\RƐy5nf: ⎮/]K4;]$:`8=ws8KTk-m)FD`U= }-PVDHz szgwvY[z -1"d ӅH'f8ct)!פT|_:p !_]"i3;̝Դ2ѨI8m"Y`#Q,_6P3͚jSaGCps=33$~ b!-a)GbqM>?^Ld |[=ڄN$t%wLm!JA)4xvAII%7~&b?n^0v# s*#Iv^5{N\CvR|Cx-Kxeq7N=1 BYRNG2T` PvpSӍ-DzY2~arZ3DX$gzBM E1>bG S WhPJnbٚȣ.$,M{!ÊӉ(W_(-^T0rnaRP_;b_ρ҅BF5EMH焋d-Bv)lU 1^%XNvf.nR ~CEl)OR=pdtsM"Yn]م :pOB1閟ւJ켵۵vV$wo aJfyҏCr0|ߙG`vz%`k@+mY򠣮µR+A~vacUP,߿UifJ1Q7bҳYfEK b+:D}a& +铭d{2vG>k4iZU6eJřЃ^;0h;lou fsK9;*T7jnP4gS@v昢% G6t4邰8{>iy l.?+١+.$XJ97,̚}]2W Xs9m.&WĤSiAPbΠM,# C a 7ݜ'AX|WbYr4 Uy3IJYwCƭWGWH `DouPb (ɼZ簎t{m,0Xl ]sl#0`$|{Gcm #\%قLVX,GTIs@Yn V骴[) :>I Ib4ʆ X'Vyi6Z_?a˼}W0(e UqXTϷ,{΀R;j"du+:>PTm$ kpk L 6l =vҼαyX;cP-(m)2I>YXb'n򵧸4N#t\@AL>--H_+8Zz'" 7>ۖ: GӁ~eq˳E~KLWFpIr.E鑍 iږ7,w!&tEWN^ydcHZ% !u3(X75VLbyerJ8$,a lR5܉Ǫ`';~% 86 ڄ/;h}I {βwxwx/5|*-a4>^2@>Xs*o&/n ڇhVJ‚I\b 29lXDTS#" -#"\/Tڣ|Sg+{K'B #CSNitnk@ҫIEZ`zqwg;H97֪t^B7>eܽt>.&|/ҤR1j,.":wg~֕{KIF@\#㊃* V =Od?*Rk>@ H 8:w[QsXdskrM6Gyw#kx.iH vpT>g~[C~1VL*mG#%Dw.Nَ•V?G+2>XdmnMUj1|U`Y w*yKR^5Fc]*>kƯ <}~rudWKθR4OHViĵ)Z- !amy 26`ϧ .KWMbM'!Lzb Tr(E,$2LZ_Ȇ& .<ʒKf*m~ *鑨ZXMFB-r 5IxP+g&E8u2-RCC`>ʀr?|t#l:' ξFFΟi"7>kέ%V( {\S갨c'6t5*aXj{9g~3m9դve{s Ft~L;g{|?gۻDbNl꩙Q7˵+cwleʣ3Ϟ=g?hkCjg)& Wpck) #Z\XIrAڀ8hQl5:|&& m`3(lA9c9 ѯE0 aGY0Zkڰ@:`Y?fUS,AJTz[Ā`n "rb 31҆yG[+/e3XEE7V PSFxKտ?pUG;c3i> ҤʴJL9};dR9 *?{޽{݇Xxqk"7>l29u=XbfymPh]v-&bgQ8>\ ~,Cb5HXM2-~?%C:qJed0((ya.(=F /NϾz>Rq߂ .#^}Re9|{ÎJdV8c->Dl=nSL"gÓĤVDA5< BTi:I{'k>p1VлU /bY}u A@BdJ~#XM<yceo̔tȍXMN1郹6hȭa_4-Zfd[}:p7oW&u}5k矝%}~k 4p?fa< KuV1I1h_fhjd, lVLבcɬ^TVشS(<Y#,!y\9->Rks%E.jZ9q"Օelf+ ZHTa˚W𫖜GDžֽ .I2HyL/[%o &&b(t.3i| bL@!urwwv ([kHZ}'X9! p<&,vW j&%=b5a\!`ڄG ҈p̳'+ ]ڐVKCJԭK=K.!WܥTjU:8R( Vd$6KekaWWmZEբ}oD޻oJIļ=RܢͶV%k[ #\AN>(UD񎿋fAel©5 ;1xw#ȓ+ŲdT)וG ә&p)Rad|^Wq/c%rֱ"8fQ P_sUH sQB%-xC,ZZs5|yxoVtA$[]w* P$J6_4)XA 4X$RE'ńmᣪ~@J &*nYAWf:3*%;ȋNGݧ߮Ė_A0Uh[-zcٞ#pV_ Iqy39^`x >VZ p_4p2pJGrz\<7jQhj.ҭ5Jă<~x~˼Ͼ}l0@\U.o~TT?G8|$8QhĸjLj{2A{˘D1}4N<%ikx&b&Dsmc{*|3 iuB@~˼ +A8o𾂒WX_èbʂ +نznxLe)bL,N﵏k*t&F(w B (.w l  BAo X+$ r7+rK@(22m4׆\BUbSxkTL&Q>U?E;pyOVj m-ўN3LX#~M8gBjS^Ok L00#ha )0p2/Gю_i4y0v)i) txءk*tƷgԠJJҒԓ[®WEn47-&ᒦWcW/\@!y݋[+nSq=m |,%ӊ)GwvL0łF1DXbŘEa!-*@A]%MقpD=57 e7է=`nNy<Q$ў86v R(\s/T1%ݙN̊Cgs:cH-|sCa6 F 򔣶dU#V&@*E9Ip#t$1HV +|e-6kk{yӪjj0e;] *#HO1.)*\KXH`i v drl H!$' 2ϵd EIA>~tȇez싮y(]KmrT OqfLQe5 EW-U8e-@k}FKWOe"աyز(RRyOeŷjx[_ox;@ `V?B6dEUPx6+2v !GqKx9zjod!-撩7^{Iuy,HjkW QXI]Igl3@:QA@8,"yZؗi"Yt}k RD$sֲpo.Pu3Ñvr>&TO(k!/[\u`Z 6d, &s\VR<ݝUq%Gi".{ sWhXAOY95X: [5io9Hڦ*- 5UTj,_Q{2$MĜg\=GC{drnG뺟?y0†ŤkԸ4ިd> p|ވy߆]I,BRƓ&>דsao= *JBBhV3JOlܛ}OxYkZN"/>y+6|vw-#mM33ao8+ICny޺Øj(c"hW4akmO ZD)HvfgjeiMHhۖ^[]4D,7A 뼈 @OLW S%е5B/\@Q{異Xj)a!k@d!ga0rmI.B+-0"BJA,<3#eiEd.ǵ4Ru}^'9ȝ .D YJQBd #IPRrI A<@?YzJlTIa%$#Eڨ7e5Vw0LqE,lӚK$7 PԈQ.#rx3@*Vfw_=W*b5b)DIaWgGroW*Wˍ\do9DbIqĵhRx/q+8 WV@E$bysb%@jyv/4͔~g% t(\_^5]W59:/PCê(*L9ޭLF|{_/u/vF\ U{MkR2ٿX³}zn ȫ 'x˻6~ت*2Ƶ4xU kDU8c_y. E,ݍҵ;+XeWdUњ>\CHX!}X*XKȔW'B]5)iMХ,,O >Mqg# AH:kaC|/m9"ڮty+{y[MgcV1D>R.F?DvA.O:qcQve:,@z%ނKx ?޻Yh/']TңzH#~ݲ2@z 76 0f @VPP-v~hˑ4*M@so7u2w][E kM~m`|ۧ_to) /1/L&.|:o0GF"ٞ3EW$8}bV|S0@L6@~YcbWߢU@>'$O&MĎXN CzN&H xV'p&L;22 Aiƴ)KCu4y fA.ivx 1$W5P#̺fPX $2XySƲ -A lڇ5Jf7Aų` 6z&5:w掎( qN>PkEljf,zDq뿛I~X7ă9w?r)iiȊFZ^ ` hX*WUnboc^^ygDIH(Rb&3393?,pxȳ>{w.wFT2IQty۷K}Pd#kHM:dn䑗T̪mD/{2TE$Sگ d w}v^%wE]d]/QWUH2z] t4ElHM|DFRZZ1BTC$DF !;kz#+oWbq)3r’Zq s#Cȕfb4(l,M1me1YE|;F SuC^Nx}Vs.Y><D<(W%5GO+ҿ>^1@DI+|"M $#j("rENq%]j6xm6ٸuֻQ,_I7g-޴{%KE57@I3@9]v7ɸ[Pz1Ū2>#QWl/o$@B"@>XS6/UX /nuV(˼oBZNv+;/G @.N [E#leQ#n㏇?K͢Xfli!e_aꚆ/@`m 6xꨑRtk @)4 EzyGOVp[>gdBVԾX: $c.EI&|=&*XQkj!yy%/&:T B[}, ۥ`r8Dz_7*z^޷в)vYn /^r>]f?`3d'c/ O4x V.X(yҊ>E@ިӘ(5R=_uAoatEZ:tP.>Eprh*pE"5$vIJ3JzX%49In@}}~Kd4Fq[@6M^eXpF`D{MN]j+(6q5`mW> "}@{˼fl>rz.07!D7 A!HmYn!7p{uUwOx !y'oAL.ظõaN|CF^;cMV~gU!m<, 8KfjB'[Yq-wV?bEa%I@D% .T"\-+W^x2C_zJiQQqưr>.lr͐te8 cT|c'Cҕ \m/f%&NQZn#p1'ּWKzɲ!SѮ]KWG9,+|XNN`ɔ߯hQ h*zʮj]C"N\MrFYAʃP;ȵYk猼z=my [Jx*¦/:)VM ۵Խ4N"u#VOUR8GJOE ҏi9Af@R',)!h/2 tTĪ"UREYCHEJF:nUvQiDY-u*dyҁiDHmY¬xA>x,SO~֟wC؅?p!؂n#+A,5ղ]/-:7?[5@^uRҀ@ĀM,="ݴ*8]w]Q鑮)Qo|YD)7䞱xȽQ:*xze1cceel׹YwFB +zzX\\n@VЫZs#]M*h6Y@"[l?Bz%'[t'`:L#M\9XdorWd'.@ 1;C8 Ff<n?GG^n,M؞2QŢ LjX  DR/ 7smH\)ki¦Kz ^$Gz3O! ͨtfnG@ 08gXxOD.//Y/:\r 'NOO O|_%*ƛ^,!-Tu vw\WIMDX 1p|y~ڟa˳&|bc~ jxc1:S1Q":R&V}OArmX x: ,_}@ln)52 @TvUL.<d/gTI86b'PÓB3J`&%1֯4VFowmE O A 9@J-*Kr,!uosmKH.:D Ρ&VdعFZ̮MfCe;c&aVBQwr&Ml֢}XubX+c f^R)+D@\d ,q=9[T͓2<jWǷoy d u+-^RPӯ`M;=Dl-4vIt>VS:gy+\IDHϵp 8 ק#_,΄c6P1iiqjx`YV SCeԆNJoaL0@PCtH 8PzI=}!#IIuJy[SU*װRƳ:Jkak>/yA+LMϧkzaO: DRG˪h`g&S,2X:$!ю4lXʗQ`Ia!9p[oXZ9@w  9q\&ԺM6! 5DP_xHt.<3$N6 BSͬ́4x9|d-"|jʕ: JtN.G(J&$-HsDu9bfh\ iֲ=z %]Arn#*\%3(RgJ 9SR,tP9taFu&h ߽Vij_}X†!| x_ Nzi8{@B9V bǗq )a˼׾Rx JNChnb\QB[.7=ڇI_+7 6yjDj8FnBR'nAĕaIjFv>.E^Niĉ~4, )rlbg[G/ՙd~%[R9V1eoH^|mPimHiM5װxK9i @$&}c]ryt9k2{:"0'$gI"ysĎVO< ?=kot/NGs~OϦSu;)O#ɀ"?U. AVGz{gGBUc2F/dɷOr<+:yUf@`[!P>Z 6GG?sLXm>ƬkY,10BL )Îΐ+iG{W|#;cqoJSsG&BZ"7 hm\WpU-7.E-b6۞0z/lyy::/y).zP^Ú{XGgRk4Tu5 +ܼe&+˴;^(GW+ od&C >g4fjX c#y'P1ҕG(@#n0hI26{36u6Ȣ6c݂kB/|~h|ش-A ]}[؇41X}W)q=cVCtԥ N}5tv9 a5ӡKP y;gSN0`Y=uT?3^Ll.X>Jp0*R1£RGE \*D‡ݚTtt?QĮ* J(YP؀doLs~ܟD@ gb)99Ҭ-ze΄ u]"n}(DhHDCY"k`4j[^r(i/^JcoJ\f?/~o,!&;r3~wK'|k~z' pӓ汛'괯od0Eϩ@HkAK*y&c,s?t9U$ {g~bu(3+!kl75_ oSD8gS˹d8ИO%  _($8 vU\(  }ZD..2Xċhx+1W坬~tQ# ًQ&G#5b1Nꘔ˳UCUX`2ҞggH@)5xI pAqQ!HWS,ݮ/"dQAˬΛ̅ ΕQj;@GvO ~"\>.mq~KXl <xNݶwx Mv*GZP]%TU!j> L 1^#x5ȋFmYkb-錚# /"ME)*v7k<$ԡ7QԴBୋ=g0ey,Xş]ơ*T>z,^7H_ ?@ͻ,+DKɭ@HN 8Ă:^zb \93LnS,FO|[šd9JW("cb4 bWM${2Zaxy壗/ qX)/P$[39WR˲cEsfq%SAq.m6c&ZM hݮHYU7ԏXf ~R1@Q ?;9Ø=%r$18e{!JCbq֬&pr|ݝyڳc@UnV}` y(p.$68.2"h8{PPF) a6§5$$sA f" m9u1+99Ps5.њچ G=iE} "E i$9GRŤȈPQNP.PS +̷͔!芊?mۇl?# ܉, W=tA~ @ @tߦxcr>E.ֿ9[5s]7C,vhvWLxo>v)Ґ\Bj̜C|rMt9gE \1,f`o0t,v#9#\[c>, (dѪG_Z^K/yٝ9tۖA050|\{EGŨ+86LC3.lmn)=lN# T4M]Mj" f={oN}`ӭ/MmH|Dͦ=:^R0MRʡ6':%4`YL ʩm5IR7ҟ1B&1ZWI\S>3CGaP5rQtCw*i| XI;?壣O9:v{|GCeOBĊ]a5aEooOQH--.Sje*#âqfU+\:2:oX.PbY)횈s]EQ(UXp:6%xCWqieWF~/Mct,KΥOvV;}Ð#RletǕj(_ޡ.;9}bc(K`+bc.~^CpCU(E^.%/Giqa$!CZPMֲGqNc,_U,H_WЭ/Khlt^[@wE%[&_`V! .ICxY3 E4`B? "_f_IN"مHG8긚wwFad#  6::3qLd]r_O:e^co5DJK,i S( E#Vw2¦RNeGx%ЇW`fpШ ā/ǯR J?>3֥-R{}/EgI "S'ĵ %nv6Lٝ^G"H3H= Jg~h=-y -OڰJG&`}bQd Zz%5hF(}l^MH0`nb}` Z?߻?+YT=Iafr4d7 i22 sPgM;f\ӵX?W/" |/۹(rf>CL; Nrb?v7u"W ,Gȭ @Yb٨6!1/5,ǸtJR3H,GbK#דj,Ї\F%@, zV Wе&_RE)/r49z1oLr1'[,_7bm7vT[_ ? b= &ѿ->V,ްhd+yLH^7 sSAiWIKT4CE$ 5>IڃMR3ǖY۲np& ˍJ~Z"u?1Zi0QY&Yӛ͊v.0aCKA#l*G Ͼ|NJBʕGYޤ>e7XnJb\Z${= 鑇s$`yp [O@aQ44,P2 Vcz12Ku}@G;Plҿ4omk XaE(cq9YbMz+[Z {xKڭޥi:1|bC;|J5󚣧-SdNAg1"i=*킑Lx9JyTX@ <.r?"D{I8Sy^%n`)g(ICAo # &Z"ʠ*<G @ Ƃ+-KUÖD*idGI)ASңy0֔*]f +3ltfE?M`3`ה6ɑ*ڳ8yjy9J &yzB3ubh7vxWBX6+THuEKI AɫMJH)\E XY(cN>i*#otB6dq^&M@azB'gTɎ-< ˋ4":A 0'y@X:l0Svpd,.n}]@4dmX !>T)[X慕;mUge B\Ы7x]7‡^**}lZ;@Q%~fZ63BR0"/f IJ D¾kc%5cĠ?SMSһHRDJ!P܋ɻfU9@6y>.qoN"+FЂf@|ܿi8\qP¦]hN*XI`,hUU>U@tsPa…\#}+gtѭJ7?=Pp<'TArpؓZ6׉bqHb^)@(VUG9B6Pت+0z= g:n &p5)릃辡X hd&S)f7"4" ڽ"};PͅDŨYaEC|ΞkGQ+ϛzC&O8r}={~$:ˮ[ .]" ]ɒMZ?Oy=2g.!Lʤ|-dM@4}ҥW1yGxkb9Ljocx7{V:썑f*OV}r [Y/vԪqZlzJ&0|u59IRpKS%Eĕf BtI\Xmj%M-Dg T&f.zTi'=*%0Ksj7 זd:y_yxU+%u~`6Jҥd29tzWywgW^( MҒ E,ZV'YyE c d`hY2[ |gu^=}ǹpׯy]m$RNsqL|c=DL}=gR)`=P85 4Ģh8VlCZ,z҈0c>nuFuwX@,bqe^/ gdz˝r}uGVC=zKc@Zjh#Hߩ(A50¦.|:όNA"K,~g q!jln6|8+_7ݝu7k%G@Rc~'JXFS/H P7E!BҳrgdR.CSwyփ^糦ڿ?E]޹N}uFEKKvno =eSG'ߍjVɄd9N&B 4^Aˬ{ll mNNhҭv[O !'Z7S/"^3:p}^@%k>fPֆȲt84cv6hv_z+ yF\o-q>YܝBeJ~iM!"1G5,P)xك}\r!K>pmp_[P"Xפwn}U4DY-ff*C<Ґ18نѶwk0?}g>P!:ÀЀbC "c&pmOn;(4 :ēq99Zzia5iKK1;^|dtyR*+`hUN| g^?Iu C03E e{Jd*['' Hig9En 1s8@}K,ᧃ2{u\[Uqhf&ȯvAIL-FP4Re=.d 4M*%$4b0jՔnX %cHDA9!cRSө5Cr>b^ABLDCg޽r)#w5.*v9R B6xLRZVl¨,K+ɂUuCQwkUO`e#s9T߮ Ì BX'I5}q۱k *=<>Fe֡w$TĥTЩM$ʝu̒ ʲ=98 2Ρ^cX(X-V]X Y~<6͸t7ToJ>zR(RDVr|^~Әè?7z=TԛzYmiytdzQ&ymOOO>$J*U=_~j4.ԏ0bGb5)XM0f#+ME6Y!Hy $/@33n]>&1IKExWɻ<;Į8Eorb n¶&,rdaHcp{\YfZycUOocTW߯Rze\3i`2YX@BY/!NS}:GS&d*2Y5^>3p0@\쮉Cx8 eS%Ј[ G/Ґtoѧ.`sũ ddÎ&R4*ě!*V pc[!&i:ϧYܙDžR-!2. i>8*uuʒ z]-uֆb(1 uBp!:A, 6IƬE ¬U#yDqf].scq4(t#z<;G#MK)@vU_QB}1~|o]'mFwCyy쭦XA`!ﺮG"MF%lvXj"8.Ó%#mnY0vs7w I<ˮ[oʏ4|kp)Ŀ9"*)?N OO͔QX%xєwi0 Lwk1LS2jv*B\^6r h7놬QAP D]6-3銵Ru*E9%mЏ^n$͡ (>zձ ]+fCO 1 B6)r(hb%efWmP3Bj?*ڼB:erc]$nR>zbadO{+fR{臵 ?L"#낹{j}]K (QE"ڂȀDܵ F"x6FFZ_b7Rqh=EFVæp#N9Ff N[o۝ra7js6mXWYa"`q6n#&$wʢ97޼?q 6 Q$lH١ܹq mLzV鐣[{ޖQ&j$,rf^EL>Zը4~75!&/lXML|0]gR;W]R[P*eHQ`ugNqG!mf."ѮU\+tO-"R` q"UVq.M)@V@ITtrfͶz8҉%[@jY2hj2w/IuiX9xeN ,-xga":L(](\$,RŔқ]g珏O`[[;!>@۫CpiU~:$aLz/d$s~6T2ZǏ,["4I[/~g,:&:oLK.OUSg~BgߟaO6zm(vw"Lɡy#P gҩ렫42GI,EQJ/I4qii*D*^/Z <6on84m_>4:}Oe?:^ݣԚϹ||{zNeFވD\mRr{I]F{"{q( K _XBL毶ҷoz>K79%Ǚfc{g "a(|9u mj%I2S!ڒQnby9U&d31vaMҠ]Aӷ%j"ǐ~ݶvץPmc`:>>>=uЇrT u iԵMRdK *IC+hS 8D=!!pVgrS!YdC0͋SkH!^{gu{ 1(mzL?;%.hmbyM7ElRVsmXMAEBjs3gxHI(Cj9"RJ;n#R"+փ$ Ew/~WF,|$^V 86IGZ*j߉A^ҤUj@9=W#՚ (TWzvjv=Q#'`: ˃ wU,(ЕW;wݹ-E[J(Kݏ>ŧ$aOčX?0)HXkƎ[D~J ^&Is٠8]3*JHSG;gk87H@'VG]S#Џ?#-~-ώٮu# zÎ̉ ޹q;wo߽ E)}ѽ{O:䣟띷??NZ''~I߼mW@MY$B~/Kj}iW p|gw_mEH7Fpw)l^ _ ՠ" 2ዧVN<"O{ܻս؍_xSO|_Ư>M7n|<%䣒33uv7ZKR,;Eǩ9U_{I>wj ûDrI7}G4Z 8*/Usw4.HV9F&igЧa >:}dɱ<7jTˏ=}JBcY t  ӟٗFIZ@cQ 6Z K:]ƚpRpI}>F˯.IVnN3gAsbQ"48 ѣL+O Aڰsɉs)w79E>rID^r4S$!bS}қ^ݺ@W\.pt:NQL;_x#x;EDRL; Gn&2Y۶c' 5 $yhrŒWl$4|5>i2X$֯oL4[[JҪVXDziaiikiaksssg>|%ZşɗխDLijѲk^'fkaKonV6}F$?B³N3 &H)BN.!~3O& J1+?S I+J\ ܍8dc1o{עI`-$3鿒O~޺up Nɯe{7oG![z'f#;i (9'5M%՘>Nё<4>yW7~ƿ1zaڈӗ.X""I*gFlЗ ;Li'+!Czi~v)oiQGfq͐@)qoZ0TT YcHV݂;pI`{N1r^XAwN7P6 =ew&OT/NO t9^hg72<G{eMF뛈 ZX,E?Uo|Q++@X4o7}[髺 ?`/6z<9w,ٟ &5F+ rJu>>u!eR;?N^QטG~H2e f1tJM|k3H93 *CFnyq%=Ϧ)1 R^O *>}F`NQjĭn'3b#D:@:3V[-=N`lTR[@β@$%[_Af2maN׭vKrx:ʻe1L "7{=,'ߠWC҉J,΍),JSb1K҈^Hk,$ lqHҸHKmXcUw 4j!X2Incwdc1N56bD4א k`U]i R/;eO@WD$2&Pi'/}1KJccE A^rfrMm–NRJRo 5/l%{Z]tZ^@@P-PI ꤩ$wXPdEȻg -qKj5 CvXO_H,B} -W mmU \,Q@ )T",]+'Av3;ID $)}2zf"mgǂ$f.!\@ʍ&.#L_xEP"("5b[mAH{?tA Y@ AS xH6z܊Xg 0}vj0x F{2nH0"IK!ݥANޤQo$b%&_\Spp2.YTHj #'/Bƾӟg Jt'3ұN9yӈGr/~0DEύғ1/}i!z,_NRϏ?Dn.77/1 0d #26Ό=Kfm b1%яy5F~f-2/tw?z^{s|z.W.NP%d#83ISXCm:8/?|p_zuMfL>ڥnsApBSX@'xx!-7\K񳟑 |DyDA y9W Z<$Ϲz-Ǿ؝`"昽_@@dܬ$0W(]ArRU kݎcf >Ks ]U%F5 @r\w"$@D.7fWs|%y,M9xn>'J *2WG\r5 %$˴?9V kE16N@.&}5_.nβS.1IHpJpBG 2G @'*wsV{ dm\OMmh<@eʿ"|RrRir\o l#T3ɬd#pݣ$=]Hj`6#kD&KFA=/\'{!s^yTtYQ'qy6kuK]ӆ U N@˳i3։WM@:{ ڎ3Q-m^"!̕PVوgR$:g)Ffۂ0fx ?LaVĻ*0fu̟P0yfn}5QtGN\<9y-Va*$85@''U I"*&ٵ\σyXNYX("IyM!7kd~U:5_5Q*0ɬ̈́+oexf>h*{D,L\nk9W29H,D)" mB<> p;\+Rƾ"La^<(l?FGuQ ZgT)[cx'%m O2"e3XQZ*~[y*ENl[v)q{z` Bcȃ `J "ˬ-caoc;xdٶلd dp7*_!B!3 㯵&-Y ߍaR=W*I3or=<>.Cd ͝|MYODBOzpbO_ #me>4 ؝("i8L!#bG%!"=ix{P+d5hS‘/!ix? kFtϪ^䥞ԑ/JQ `@g!񵃔eޏ^cuw-p2Af@,SпakB La~",qAT,Z@ 0cFV ,2!/x^sVvZbS=}+clyb]O*_y&R{9qzXZz'N)A3Cq3=յªRٸ tZ^ZZÍ2 c{1#Nw{W{p _G T`2;>FMoU@k@} ~9@ٕA zͬ+$Tj;;"=:Rޏlx:Wh(}c XH6T @ #x *PvvP,bO7Bp%Pl[ \hlco! a!> K ~BPܞUAN 9e!`{QEJH2x!8?PD{( azycd #BP~s-(;!D}wHjMB7B"pB b\`IO&;6,>2 ?K~L2GI@P~lP>X $1:+qrʆl!f`aG B>DB~hndS1px>%ù@WB~f䱐84v 94*i # >/ڛ` `Bc~ MzǓ0zN0ޠ2\HHd[ %D_ m!@eAs\CcG;C | A1Ht'ʱz[ X(F7A֞Dy,䚻"NJJd*{ [+ t\nya:"Mj!(@9tUbA s0lCsD!O4>H3|e*rfAF[r;}eC /EG#^hF2@DV0FsCSx@"_muOacP1#x~&v#EcUwJahHOjn_ $ՄQwF[8 rV5N}d!0D"oG:X $|T*=1c⏺㺤D@2ÕӬN3(qнD\tkn\sew$B(Uuihj-'Ό,4t0Qt*OWZպKi:0, /8*Vk>e$ >|i/H/r|~dS01.{%UzE6lЪ(& M-z2Ԙzj27PId0{Eb!eڨ:lVׇ@T[^,5Riqks}$T. ;_q_>!:j┖8Je! D8M~aexDG|Jt"쬐eE6aX"& )V :j_,`>*UWy]\\Zlܤne8(ͤ^xT7H!1+9zz>jL0ڛ|#zSHOWPHPƖ8:>o[_! ,BIZ*䩇,'PH_ʯ𯌦D XOa6Aީ֢ժe(*PHب_} }+؇Z%1b.R\|+($\9)UeYu-Q+$9Ci 06&e[ ei, Bُ5x5.?UHerb0ɼh-R<ӢԱiy'_-9˺UvnsYI6(h}yWm48(r 2_ E;w[ srE9̭iafj\O4;v9oH|go FF/UL!ޘxLfE"RMȩ fjjH:B(b!?J>"j:?D}eA.X ۷?ݝwܻw玷ۓ u\A MMMm<~e{.--- K R\.ʥG[[[6IC$&:zs32EgCP~k2_Xm@bBh0ɰaI Apw?~B C{wwsgd'۹s/Ae*jTn륧eU-uK2qJ%re$Aߕ2m50"D!TBp;PѪk}4:pK.V?8,g9@Cɐ4X]R!FA&Âx?;6+ #qvP,KJ>+NQR i#Q. *AyNn!+hC䐠!lc QE Cp4;KݭJDɆ$#~fvY,,XQBocgJ.WKb8=*Tz4?t)CO4dL~`h5KT=:ȿ-| BvY"}?2N?hk 'V.cihn<4WY牍E,r;Dw.Q(9b6ڲi$;%fN(l9ӸLGuCQZ  b~DcFd+%\8x@ 7̝ܸE&r{G_ dov'H f"h 8tǔ+Y k)J(ry?H;ߙR&PƸP$[a-OZie4%8%?<hv !7}qS^'B"l_RJ|X?"-AbL< #5R^O']~2\yַuXDq"~3- g)QDK㭁CrTH]qc+etnC!3D%ժ5qP_)Dpw\"xmB a {f8 a{"YL# #r0HH"we>G& &lQC:RnV(,mQ.A;c_IJ!+ /&trPi bQ//{+Ht"PB ". PNnZ. c 1 `hs=:Pv_wF/x!rHז@j5Z񧧊*b({wPWpJ{BYoo+bwc&2 #iO5hVhP3>ޢ)Y~ɳ*~+ t2ܯ"2sM7.ZܩS:(˷b?`'% %w^(hu@`MC 5U$fBcx&Zq$R^ HN|[@[Bn1!@H'Gxn|ʒE2Ƹ_.YB"FY ˺N ')Vʊk+ Gl)tb tҬHEW~8IHH7*2 iE.W9Yhh~X4Ff],+@6J-BDv}2N&S@yu>KR:n:a-@D놡:" 'Gdo]yȥ oGʷœzj &$>>Ȝ -ormU--7uYm's\&f3u<]bɿ2tq, R;5F8<\v}@^z.JV{#E:$L `/ Qǭ_㚣GX&< ^7 %,J%'D~"MMSHƒ *B@<.lp,ϫ5x̔DXut@ڟG;KK|_7tVӢN 7X 1dHfeU@|R@iգ*V_YK2F&ԓ7:H;p믤jVl}[6)ǁX(!AtK/A"&Cc 8$|$IVi=ʣ Gͫ Q-S&5ʏ'S;NׇT>8nHTABTW-sٞZe MuH?e+nODbռ,D9{ˆtf33r~]Ѥ U9Б7YGr"iKG/]O={Dvdu.|Xm͑>1[ݙBavb̭ ($9&wn*2C®! : GtvADz4}}llR_p|N\*9>:hmOȋTZ) uц1U+k־?3_Iq" :+:,.Zz@~%FX k;@Y!j/<ݗpïzdX>11q288O jAT_!>L6Iv"+?sy]R>J p\}Ӎ޷@)=-gg4Of HYHp F 5hrc/?$HBc'|V:d?G=|G~=<2r212,n`ɟyIpfZ NTiYcr{cg$@K-_WN֪aV Qw}oJsX^W֨DLeh:;TJӛ:F OEVC ЅxI€e7;br` hrp0B<1Db" Zڻ?_3YtUp:7E|H^D'D<~ܳ^W/$֏H>==6mkkNI3ы ĸ@%!tK9}lxvK멚vH.. chxĆ-C0"V8!k3\ O\z=knKyD'sؑcCy S1AZhiYg/>Qu^=`#OTnX8$)Ir^DLDb4"0w//EVhc@܋c7|+E:"Ls 35q^gD,/z}g/qrddxxP$v\s`<`F0=(|l>;K HB3}y.Yi5@uqsO~ӧOnovmZq<*᪴=(hF />IOo`"u4{̉HƐc90/Cf#Ҫ`TiQjb"1VѪ!ұG=xr?rA,t-=slF$V[c瞡 le8Ut/{_u1=|7/Vwoec MHap(X҃!JF2eƁKƔfl0iB U/fd Qs|mtёv1;r}Ϟ!^b+,v의d"Owp[lH4w,4F>DBd2|0#vbެl>*_i^Tυ'nS t/E*7Pa۞  |5{s󟟟MdFjc5$!ZI+!v97K9B8|t~vޞH3DyQ+sў̀: St,/ ~3d"XKXV@ r"Y-*< S|`Yre¯R344>qkb까g5CGӚػzb :hsMc@_|0i]:5{En<&0ҡ.\Yꆅ8u. k2 0ȁ._.O&3o] yX-ukFaꃏ1 hfȟ1osizcg+w<=15ǀ驝; /n-(Tr/+op ]A^uV_j~W'ܹ3i$pgh4]YǴǵ G~9!ʯyI%cp4 Xw<liR֙\_W l0kL!ґH mjE BG4 a T0*%;;Ɋ,_\e rYւ^X0us 9I~Ǣ?ZpZu~T0H`ad& TݾCu@V):2 n˨S~F]SG8qhx"g`JONBv#˟p҆PV)8uhpxsǰ@FF@T(ѕ1T^Zh(>*:٤۳j=E|8U3H%K#&w>$):m_X ;"\ @;a{ øoxi0<gdsNw>IX U}Պ d-l'VUNx?ϫa R' `C.D변e'v*.G= 0:xZ0Лz A$L %;EJlQXlwpqyKqUz@.0X%,[.0hĠ7QٞWtb lo`(Ru p+G+F?ʫtfbqts5^OeWqbr*Yܝɐ>9:35ُ]rºD\ $c ˦ctWS`|XB > (FQU{j0H#VxD s^]-&RA3;Xo_@%B^^9/X2T2pwFm3H[Ld !+{>!D).tCr@aaM ҧ:KA¹ń1F`ҲA6kYZz ")L" RqA׺W[]XyÊxP!U[ڤط `6ţ_PmC 8 Gfh|'=  Hs s£EIiUsm/H?N.bEHRf_GRZl]Ib WdIL+"jjW>_|d&%M]lI#o .<!.)Ƅ5crGqͱΣ +]g2QGsBAX/@{'~X g8{[y *)7yK&Y10E; VJixpa1ʭxR r6@a\J\C-I\~j;`8E-/O"b ՉbZ e^.hELB>w|4 q=FHe١p&A!`77Eb+v> IcK47X-C:-..RJ^8ng% 7Xl^0  IKw`'p J'.zu=X'QT)tqىQ b$HwK1lÅ_qz؁ht8XYߩ< tWl&mnMmaH-txuyEK< }5';4ve{Lak:(DZ:Pbi؍f5$W83^?~V@R_$;!<6E _S(|T~4;^|'?k1M<[ȾJzI|H^ y &½`W ;6I<^MǛ&Q9T9x *NxeJS1iX&&-S$y$+ [v%@?xI+ë>U@>*`ea[;A`>#Q^:4ۥ1VQc].x>Ž>6{oL<i`\nDL9Gs$_ .f*7No6|\F5=kwcf=ilL!=Ǖ*oX@ϳIs6pZc6\p>4Ƀn* ~Ty ~3ە@ ;&z^;j ~BIRx`HҬ t "`ohfoٙ` 7pH@2<)xP7$r,G47@!pX|b]:t ?m"_ԥ?8d?4pS_a2''sP`mͨJةDj!QD((i2$'AFQ~*ENnD+Il FD&CVlD|Al>88SǫR6'-f$ԲqB HQ1:pR&%2MYAɾ >(0섃%B(S[1G! vCܬNĎ+&IBtK<@?& %8@3-׉[\aj. j%J3rk R $A(w ♋}w@TlQ5CkHueD$5)oTz3K~Qa!s@7u34}- wƕ[d^߁q|DQ>A@wd<ɐCD!1RGېu˓hlN#ք|mU4U '2 4VV.9kso^='t?8 B>(g sCr/|nKw@H&0J= 1E揤.1NNa|> @!O\* ir<҉!='&*^@@jT,A7v/u[UI; ѕ~vJJeqi|T}qo߮2H(m™bVhB`L$ lX=ĭοJQo0$)$Gy*n7x@*%.>J4' BTh 6sA"i^(Tv#~f\6ANQV(/>̌Be8ºΘ+@]PVrsGr=ڧ>XKnhԻGΝ#D= ^~Ȟ˧'Ԧ e9G"r* reGZ&& ۊsմvyhMW71:Z(_`]XN&"[Ki st|RrG /(>D;-DE`1)LoV‡eǾqWd$0zlT '57,PMC&Td7%ULdpMZ =G>A*bKM:V1!n9U/ wѝչJɕ:+d%T \^ȱMՄ@o) " TQ`ɮ.~$w7 Z'!'瑹g^4(d#GUVXRGVaqb,q򜱁^vua wC Gw_aT)jKP^~>'BZ|,sY"pR›Bʺ Q%|!~*c#o7 q"'>ξz2B| #_YmQX#nXx>U㰄D^D G"3R$IӲSg\?;Z0@Ai.sZxSrm`[rd $&%bz GwM׹[>B " z?) ̋xE_O(S@^ R%aZYxQR;\@{%'>`h;f\_T)<K 9>^DAh :J!3> Rm=+:N}(ҭ7$LJ7Kg_`xj<'WH0L'<)%C\k&W6=lk=V%%D( [2% ԹL:b[b0Ht8jWPH t _7`5GPd/$eU'd ç"9,. B&@[W > GfHn&7¦~Wu+/2@7Kߺ짾!jD:z_Lb n*gy}z`"iC)97ZkHtBϬ*Ѫ]tG'_Z"t)y!bGi3?jU4+1g,Kł9$MOD#) h'BXgߺY) SG{ц]&ab<z>xuv"а.,Oğ4U,;l4Ze('I~ Y*3 e쭦 Py_UUDaXBT"ѫB0\|波 NTb$.mESu5{>X)@ 访=uT@/fgE(p,"@J$.բW0B8diX -eJک_] h\|jc1t0g؆I1zK"v/*E?BwqobFo)#۳ga>sLoXcnҲL<*M59́v.Q+- |_B^2+wͥ(W߼B9&) YanQ0F4\%R+vDJ1|OUo#(/ $r5I'ă]P]xµi Pn8r  @DH=, sLG2M+n m j(腴}xdSG4+5NC!]^UZZK' [|zbo?%ZyMīA({)DvR[ QC<\ApiB;g&Z➠Vfp,G | BqWzGN?I'dM ̠(vW0Tz&%Ft%ˡV(VWn~*O;A`_%{2)q71>[(v+|ד$7S cM~9'`Lo@'H e*9y4]^ksTĉ@AI~W/熆vWWGAЀ)IpaIAf"iɳWKbz踓aD7~|V7'>8~ E;=}^mgί 1|pڱ[Ga| $Aհ$pⷯEYtuB,E7 % ]>i5#3ҷYb=Ԭwم[U߯{WU@rG,Ɛ4CaBYrࡩ=mXJV"-(8,9ujOUq­jVhA@L@f,i\K:#dC^/ b_`sR|[c[\yhʙ 0rpad*,4+@I0m,h* A{FG ?\^)/oo`fWJ٭h^TwAGAﳏM`Iqs'ש7,&h4. /H@w̸.HV^ U.ze=ePY@dBtԇkbUbhE\yt?3abJm PR[PhQ /  2C`A`;e QxٹR<ی xYyyï7L J!fIr#{iQw@*aԻDPܪ>:C7nqZ /5a\G:9>BLg#k#]rf[R.iLJӣPm&Qؼqg{!7<3uǻ$ffbAf s/TvnG0qQ" \5P}l` " LN&]|oόU}{g3 .c 2V 4)dБ.zDRQnz_|ӚZh.\W|(>mXsN3a^PdaJWuOb%@[eQoNXq tCyP,2 !\D`˔.K͝XqFIB znbgy xrR ?T*eb W`%Z>ßX\ŭඡ [#4 BW,?FjYjJ @d 1TSs¬"W&X P3c!a-9荻 Gn,9{GDt"CYLg:#Ar,=?n`S"ptd徦yP-qlb9!fu4@p-k89{{4ޕ4hYA~Jn`XZ(l؊o#޸\,P#7o^ᵫ\aZ S‘| eҕB h"h ld`ܣd 6!IĻRPg`d=6/*Ô *Зʵx5UaQؔh.f _AP5$ejE n@@#b=U޴o*!X$sdʺy- ̅>"ՀE D<&B%VvGj]^SsJ*Z(E<גx. @!Jևŧ)@Ā`Gy{Fj8Zn׍Wt z",HL"ײ}lWj\lg}஼qkn?6Po8s{.y<`V55T*rR]S ~w nc``~ow(gx=Jĝ`"_[GB ۬v2ɗ&6e#ݻG;ʡʳ) ̡)F!L pһ6=@btdX_QtXHtoBPܳ?l >sX,JĴ6f C?N0qV]?< {~]GuF8U* F$񻊍kVx+W.ջ!0r/mŧ'{M2 DV0k*I*`k{V^Ju˪X.wK||Y͈Io'#_p~GwUTRjTJ#i&}U ^DrCdyV'9JP 3@r[ DКYX1;pV? `# 0`63 AR&]>)^o@pYyf M c XS=\fw+ y : F+sU4'\96ka}yp ЏFÃ\ Bz ]K" m 4tlqfr3yZz rOtx/4VL5uK{tN >D D$ٗ!a ړimRB1khzrad?.VGRVra' RG]M1VsՓL|4W7zxԶfsm(&{ .7;' c w=E_E{8g3K $a0K7_K8_ʛ=7&C -&jBq('X`@+oq%rp!ڏ1b!-:7XcaǮIP}jܟ9=r}fv ¶R "`2PY0X|W~ͅCRhȻSU(> !յ]a|i -hBPqPH:r;Uve24zU!ْDKMlOlWeXȊRdh\w[pSk0Qg qH5p-V .Jjǯ]=y3/ gA # a>=ȚY|ptj:cGr8tulK>[`@҄MrürSv@<q#'R(<9NGCM 0cc 1JP KqW3ެ^Ă6B>!hS̺E!T8Yr9ʮXX:dq+78a0vD! /rFͅ *j1M%}S3,_mk>6Bwy:6!+ @வ:rplZK yM X.!ӽe*1l^+-!Z0@B_h۞]a?塗9>* ́\Ο&BSkCPtI;Ԇ"l&#񝽜Z\G&Pޜ+Wr ~I20\8{A @tPpHƍ+: Sá{n0$kԇMȒe.}I3 ^k&O-U*EM`\VSF?+7sEe&g֦Ul=T~$.O9­ӈH0ba'Lת؎#[Hg$Jm~bfyO"T9o !pp(`*wK#ob:힏G|G3I@0X_;6-]+߇\OlA}te7I\]yޘ[J"1$($¶D2ߤaKYh0 hu.vc漣KB` $n q!{ot&Hˉ}t;ԙB"TR@ XM <;}nxUJ}lx֥:EċʞC7Q^  zwp!gni dzg[ %w| n#2*AG 2ZY}&dXuBwUkGuk7N8x<'#DH ~%;;E7!Ӟ;<@_{,/CS(ԕ@Y$yx"l>MOÑbl,HZ}t^!\>DHZzfEX2DŽdT#9<::2? PaP㇡$; ,AM* )LQJf)w̑Q B:b!xAqrB}Pq'i8M`q+ @2@ü1Ϣ&†! 6 %~wM|@x_&?/APKT녬}U #ScHPsSDڃTd`' Au!%S1aٺ v  ; av!{@Cr>tWT5Q R`D%R0U|ǠŚ<3G>}< ؝Cj>43>!5kk7nTH UŪ!XU$R"s 8 ]/ܿDCp!QP"a58B.iNFJOpȬ-ESZ*AMMfD46Lg#/aK_53grzj͘%!~<4G[a\#aۜÜ=b5R;wOq&;P8}7ByCӑ0}LΐsDKSe{XЙbjVZ!;A) ^Xo:xN]@Ht$NS{ Їq &n=X[o1<QUe 0CO @v%,vCR9@UV%Z6j!RV߂!;Fdn##ET"ױ!'O]O{BzNn`wo=X~j+H5^0U`E])<9,Zd+mIݘhl1 Y]ɏey zq#T7AB:ΤVO#+@EY?4^(J䱡>X!hA@B !o<\.Ս?B? R+9G16Q@t=+h[ioIexAF{BH۽y /ZX@QdcC/NyOtK C='~mqІ_ot0+]8 f r{t1 )fcF6.+Ĺ`ct=DpFM k Lɇt2؄dAW#lk:FOĆhÁ<B#>Z]%A5A20u.yՎdf\ͦLee>0 Ӂhxʄ SBkPٰ-3pl۝jtlߴ? fk:١!o1''R%CH*xn+t#~t)\3Y/l# WN gI %3u3M' 2H_)'1n^3@X_NAЌ(5q$&jE۶{2:*Hx VtA;<y0{^y:#3>n}N9NMT#`rk3DH'2rv?$|Ƕ| &|QtC]hyÀ0 G1oSC"o^* }(G p %-CCC}Z B^!XAKT]S$'0rhfӪf`! 2|$,^aLf> ځ;2@wBPq%&1ҟE',j[>jEHZs|EwI[jѴI=ͳ`{+ P/X%Bc'IdbyZ b5|9QLന d _qk^T rzjLϥB<7M3@7^@DO2!ڡVSRz~ 4PNҥ Ŏz–>2цvdȑh'wriaBgP>m^7= XJ@ck~Y^D=Ԭ9:|pG'Яwj5O)gәDձAL9b~:Rs*_/PopHw%)'bKnx&~`Pun؎ե$%RƄ f=+m`X~CոH"_Nc"o@_u(;+ WAr[=/;V-Oh \B˟l/‡lU!lUDFIwS" {Gs+S :xc/!Fr"U):΅$ҰѦ3HNQ%[#NH=h5.?A>fL)O|ʦ1!p:r<`#/ox[~h=Rv>~D =XA=XvGm.;`2ԥDmtCz4 ! >ME. %΅[h6S~̠kˢw&Ϫ}rKe$[,lՏ{_@?^2zu +G@ j#F4PYX-]2/RT"DM)K,bq&I *M9Q!g}Q߹Zn>ZN=HНue2*'R{*\*FL=stSIpBCDHfnU/ 4P*ԻbCLk~ @0RLsyΣ;+ϻ h_fEJa-ߔqa` Fur$[lwG-_."\Q xuR(4ce@>L~M^1L_̇5C H~_ݻwV]'7hݛ_kIЅ ΟЃ,|.H( g+P~/؇x1J8HԻxpDDij2l8hDk{>8c "bty|\U+WYH Ns$M<^dݧo±,?Ƞn=dA0jZȇPq ה̔^KN=ASؒH  /gJA1L"B=s8+g"sZ4_]E=z Ċ߇>w_Cf8/8c j EYۍ:O@"WɴvX9_YY-o>w8v[mzD1azIb P L璇گxQg3Ol߿sy~~ȝ!m{oCkouiq';ჇfWK.=ؾO:VMϑ `Z $ŨaȒI=Bpwڿ7Go5q^K\&Uz579 KD}0bp M@.[ wi"?\_ww=+3 3Zy@Pf3?9I|U4|VY!WȄ Vn"F<\qne%H$u,rVXlCNiOd?M#`y%$`We"D2S cDzE?'񷆈v^b;ͻKbY4eV-)$^q>iq NùYm̔%>̀kDWaX˜]!X티N6'd~`NGi䑣xVK$j,.2L$qz 1'$3gq%%xY؇qNUR.ƞrZ qe ]=J`ȌmLn@~pՉIw@>x!`͢+Ոz&&#yx& ʄ*ApVqu?0J)g]C4390L#y ͖u!%!{+ȏF) DEӻٮ럂 90svx8 ??S@" "iaH +c@ iG„᳓F)= Dn -OM ͭ-"n@B8Sq}J+QOFQLTD716ڑ@8|4сpne7bT2`+-ܒ W!҃ +o=o|B&A`=T!/Cu$%O,Lufj0[A1=S) AtQ>QOf֎h|Xꉆ &"C{H8ڐB6IL]CT.&d"9=sI\6vWЉׇ_ }O'IAu :]KGnJ5\PEHp#sFK7lLG)t%b,4P~ncfЇho5᎓Iwt{64wQUg[M5 )uݐvH!AM jci |4M3HNYd$ Zօ)l5{)o94?Lf{%}9}y( v&SSS1ĺ^ҒxgrD0< +x"ގǷ3V<- 99c(We:Wp v,ة~'>`'݀s<__:,"O "Oyf ="#?{)u/| 0|,I4J~K nTNBJvEΩ+Yyxv$=ؓ2%J{;CpL@0%M#c;w(Db'x6\<gl1}wgńmBk# ;wdoL+?LLiJ{V)ʔ;?n' †D;'w>7ȯym>)b?$7=Jw9NE壗~xB˲YuG%,c+_ zH+ S%p "4}=dNHCl!" 8Y/ y%!^I3!ۡS(+z]!!Dⲭ(I#Ѱ+Z~# Æ!''"75X9w['Z[XeG*Yb?TEr)BN: }CW%$O <2%L|nD%c-=/9եwMAne\./'B>[ghb#=?dR!Jrtzsߊ 5$K(9Okb2bډ D,=w~bxH~\@~M!A!ҠQ8\L̏ya~,0I1;Mb?gN7 >845"p?1g7lb=$YBLb̿;^MՀELDBn䒲C:os%"uU$Rߡ;֫ bB.K}C\,9GMlH&zcDJ/_PGt|FDz R >TF 4JYe? ecfdNWWEB674IcHAWdr @U {athB]R!k>VHHSJکTCWnı /}{zb2t7 !JE Wg,@'ne׏z{{ՏVwp]-;O1!K|Kz+l% #H@I)u6O\Y `>O).Ć! 䘏fR(<; YLNPJ!˄aWǰ+|r겼t! o\)8XN7.,Lh!-Z[-oc#gˁ-I|QSA$4q.ܐ*Gse>C4.fJA)$0VҺ'hsTb} 6 ^K$2IBv6$!,o$&!S3wC<0xT"~LEHՎݬIRnbY&n@̆܌:o\NZ$5}ߤd!ΠkZ)SՅHRJCXa\s~Um1W1n:| Gb@5U}YuE\[+--yHV* !IX !]xC[|TdF$a:7H9e?s^5bɡ8'+?Oк-g +ԓC!%Շ:;UFU:"Ct=A% ٨ *NJ{2.{%a RMJ~\Trvd%c8<>Ydz&+X*7F%aB^Rijs!ڥxN' /0D_"J*̬:-حn@(= !] .:k4-"AȏUzʊVb8 CueYbD B3|4含6| |Ubw H#C4! tIH(*uC;~~ rNx?ʙ:e}r]jؑp/d?T!eFa"[^e8#OAvg]*yˊu85B›U;a?RYY ayCH "uZ,( IV/0э7.}Hi9϶bn 1)- CG>> C*DV̟[n;AI>*xZߩg" EaEH!,zƆЩS` NGwe(%A-|2Ca{ qBBL,+eaQo_.@~|R-HC"g_~|bd9CJXoONO6=L+ n4MOqVq*bxB?K;59+N0r(G6,FNGޭe19J/z}u I9||YN6Y-E 6u]A8KZ 0XŲj)PzgqI?4"#"S迀{0%N')dc+ nѩϽ R1.jvA%|\>P >k_E9/VGvi͹ 1|MfuW-I2W䚛 /+M/+#MB07/dKz&h6!d3U{Y-o m&bzkg&gE>D2' :0fr W/CLHy@ܳuGCVNW&Ds Ԏ|! ّC||dzQg =F*=`|s?8R, .քCCG-ʟ\@TWM%!mu|AqzYJQ~"XwOR7oE~+ X)wxl_UZ"ҝfK|{&CkgAYU5gQ9~$M-@'ٲ!d>zh:C0K4=đ4K(=#!uk}]' r{Qn iXVDIځA+;K;ZG9[0 t,6ITAOP;_M󡕌mn r2[8 JS22GNJƾz"2ǽU8\;/:lJJv_-!ǽ$DE~`!;~XP0z!}b?+z[zӞ68>d$K.> |bRL/пbSvd% [{#1,10TQ$ɫw˿87<!h(4)^%e=M*E_ۄK!rvqR=L;*_o1 Bj*xo\((4jg傺$|v½)MlkQV|451=r y |TT5ೠY q% nMq@e1\8eX-I1cydly$9s=]Dl2| B[d9!Je뵄P#CB?DlBZ>'P(Զh!|0tBy演~D<nfPsP~d5$ CTZ;`]E>fMM8Ӄ9ɖWw،9jxb mUcp0U@+BDՠ: H1[K>WM/c~|&9Y&Ry,I,^m9wbS!G%RYnlZ&Jwh(%"eWX/J;(\΀ 2[  u~8 [nJ DYE(D-8$D~Oųz8^~ \-o% ~rERǵ"\q&#mmᏹ$WRXƷ˜Q*6F-}ܜ}Lz>WUQ;>9.P )/ JDAq4!W$ETw%q݅T1Vo!"oMDfN͕WMYnӾG>~i9[t&:3g8+HF_缏YXȾح%^B1ȡ ;@mxP"UJum M^5?FQ9+?cwJǐĨ:Z+I1.]^x%ͽ(b,AGqk\ĉo-仁og`'!ttN  x^AACSjn{eDJPH[Xp } >2ی7E> PK%" H$J$BqM} E#~EH9ή|ӶgACY2=!w9A>$u^fs=Zzt;#yBŷ؂4-ZxJv PxwU}sCi?9PηsBuб@? j9Hh*U0>Z4a9C#s:RB;W EUZh?oes3q3feؐ<I!HJ[l3U*x>  C Ez9nP@x3[HByopr51v~V_=Aj.Z0ll d @p CeGOe{5[ipJy&FK2&AodǨK( A,9ś+\^ӠT0.\hLkn-)!='pk22~ I=bRd=%Bjt@w.˙<ᢱ~8 =݁ t_DuY>&dDvCaxS< '˸bh"9pZhh"RcҼ|󩗫ᆬ("w,# c>&K"!=5˲=)TZцxиu=c:|UHfH,r!GIJ =cWuꛑ5]x"UƐz_Niu5IRRi5zR?KΟGv 9?2>o1FA59Dh-Om*S~$2䧹zӽyISXWd]RFPv+=!ts#Bj%iSf,J=EQ_w,\d6e2ՙ>$X |T?56~5H#ȕwz`&&b(ZV?N M txW}uNzc|0r"v.38eȍʨ߉MAoe|9!_%AlcMhwtDP\,t&<9JkH`0EB`AiIkzeCdΑgMo3)k{fNr5{MH \Opw>ǡ~Э rw_5|8#(,i9H .+ ycSQG)XL,0fcYNogd݃{Psu!*W#|CgB^`iSC*"` ˲,t@7%@8'gM2SP5 Csi(^֓~Ƚ! ~ɱ>dJA@IYLB`B]r‡țf}z>L[&8dAs{)7SICwFj6a4o#@r&ƃC+[yrLgxe Vt OqjH PInm>{c F{ZFɭ"ô!yg2,& bY FIH{b"ʖHTk{[K<.{xe[##}WgA< F#.SbՉș?6֔,[Յ&0T^ՂK(>n:R~P I1gpf]E{ԇ ҟη\dY1E,|s iT:$AB$c3)̈́wȒv_L G&X . 9 HrlQFwd\䄣DF}>̍hwLJ*Q7V Y[W`Cq2B J8:dr:Dſu28O׭97qXfzLrAi=J{TOr%!\lx"Kpɩ;}K"?3N g]AMOwi vPh6j;(ʃV/xƿ{gN6 |_r1É r]T7{*R\zM_De/6AHV&1*"^X|H4fcؽ&dAlS.Ӂ$cBWC/[;x~"+QRJuǧzG2NQGVɇ.` ݋*T_IC,E5!K :%t$B!c1cPCeP+DEw;{z|{{`0n*<u ``z% D!ƊaZE,զ.)EH gLk29쳾nj9,iWfF0h^U[{wύGuƒovc<! R/wn>^k>j1ʦR`F9i= 򑏕5n>U~U 0zDą2ADt ~?UZgz|/$.m/>D;ʆz["c{)Lt vh}Er= "y8ma{[M~<޽zX hL 8WsWP僝5Fo-䣹%\c)dgϥo Ob<?zX)k AGZP%SQ\ӡP"+6 kW|T2[9"D.K|b_J}{nb9wFA6GY)Y3[Bhx*:0b9NrENs ]ojH\5ޔxUʓzo O;;'K jʥAdUq&8t>J)?WQ?oz(!P vȇj%"yIIC;J("Y%DhDJ;cq5!Q']nBl RQ5$J("qv"߹zirM J 6 }7FK":jO|thq2P1&P}.զYٚ~Y UP [ BQ!,0j͇VKIZn@8wJU0RJ˹|@kQ}aY}~ڒЅADl6{C{_0=E\ ? ^cK3+W;oj"I@\ Ɨ%+Bd&&P58 "d;o59y_V?Vi?ޏoj>=AATp*xKpXƦ.px'"_r0)B;fIpQe:~Uk>OK$ '"-z/)N/9(uK̊Ѐ@ !T@ 0l9Ù;)*u0&\j~n +j3 &t:+@Mָ\ă$][7@9eH"kEH6 BPsNC5WZMœk}mFwa@>M]nuMW^'1':x|ٍ_iNu33W|DȺA$7aR_l)1ksQIF d| ֑ N gK,L/zut8g&3'`6!UW %!>F d* ; DFw>Jص)d% |@@NOƣ~?뷇fA,mFk@ Y{,^d!D>%QZa?8+ B{*<1d`? "‏R|bq+C$-HApqi 6*))>st`Cb YR\T8~~'v{\]2/Fm?_{dyY3zdܥj  p7PSq.[ (ғmX:1EHn>ì\~U剾ΰXQ1tqjHmW,2vTzis: !r\@U !!b:RLV:\O]RËHgts?dixԇȻ  Qx5z\,SGi>!hJ퐢Aq`ÆG6p~Wc,%ux.B7Z%rXP+#dI+G13a8O)5!P^vAB!WJM]z]k],y$W`u!*QyPG[I菀G3ADW!.TiTw8@s?}S{59Rr| ;.F] =\Uy^Sh"UjFzY!cNd)iC*,IPOB2 d!°!!pJ4]j]W=an!*̩raaԘ+Nqll bZC>>W C Xpڿtj&n%{35!`!2X=X)^ {xC0,'>ʔ!TXnvu aN#!J L>۰IZ_X4,ʭSkWg7N7!qHӂ̠.}w)>,w+-xJ%쇷kt%zիJZa^:E:J]뛲%9h#qtjՇy+>)FC< ¸]l"!tH6~c'&7yƗ)NfպX~]A9Yax!EX~` :$13:䠗5^IϘ0T&8_te~̲Wɏy1 H`qpz;:Qu>kQ5w>u$1$ > LߵS6!'}0gp&14 ەzm$},Q/_" !Q<3_ 1 Ij=a4^0l8{?tqbc֚ fT7Q98|k}éy9w Bxt:Wfܫpj CՅBB!^$_N:F=[r,?:+qHXT@r+DyX+ϰw-,5bi]^4 ~Hc`ԞM}%jCKmR*"b bPan&vSwjD)ͅy A@0N(Ǝ[^emz&Ϯ?R7޽V{Z=KHz,ԉHÞN }R\M2J~EuW^lhtؚ~*KkP >t 8Arhd2R۫F32B΀/لknsU@n!QTzB?ȩr6>n)n ׮?*YrJv3!_fA ։TֆqȠa7 9\=F>P'6Wte榋EP؜L AyIL+;fImZGx>9䑿,* "YҋM& 12*VZ*b;yE{">Z]x'2"mcSzw! V̻ qɯNIJd1 l"V H>_A`. ~xYUҕAx85>"I_UmuEBU}4^crϚ=[A[>M8GekPXʲ< @3:/͇BfXWM~$WMPm̸mLzHוqv3Zx؇|90=e~\al٪r{]!uJ'χW62\n^q!LFD`ph%CWJqu7CڨCn qNͅ.n]H\qVCmk*1(b%ebuzNtR%bDBx8䇙~srh߽re~ԏrp|Op}{ɏ(?d[X*< =XJxJ=*& D3H*.bE@ +ud8S_p"YC't:\}|ym_͜^=U4'wun|0F'p!Ϗtxl>3ZEd(!0 ĸ΍:<s!Bn|uOmKsb{yՆ {-}?/x>2ckO6eD\n1@7Q>d#VCFը/t8~ t.'e!iwx(yh fW`˗GBc8j޿{^xxBq}V$u4!'&6ɎH9qU/ÁR" ͂bi]abP|GtC7bh5 <;k7PHTX}w +GGυǏi?DFM-S1|̩CTUyz1Kww^!H{|X)]niZ_LYqQ84.F# Z\Z},K}\ʑ^UZոprdʋҳMIJ!*TF0 K7ؘrGp0bNoYSI-Ez-{L@)޶c>%ƥ[x1?뗈hJp4-ɰ)ڡv5T' n1Ê2+@@Hu!dw@ءw||sJ@,iOB}YHvd7ei?8T%xUy"P5k\H_o!LaU1\:^Z jǹnt^I@"! )u" BtB]ޠ H/Nӵn? +q=,v U<-R:wc 'ZѤUIͮ\8ŵۃNXӚA.}K#7y;YKU^4M/k'M:Qw%yUeEI@ĺdni؎a*pủյ?)A\z X .z뤁zΛyvzHRqɬ9GU͌ܗ:g :."FZ9Ɯ#68Wky\VB ҳeT& WTflݻ2ax;:aC</kKuE˯j+y-z/r8݀gKvU5;Ա-ցiPazR5.hY&$savR)YTKa s!+@?5ÞN~7 @DKU$hzB9i.Bd!DC,: E?]Ah[Y*t ]xLq g^f5EkI䕱ILW-v-^L@]c/3H %AAC5TUMbwb%,J#~ws-ܯjF$2x?*e:sRÕ[ۛoW|gbs-8|4.fQ~ksE;1^Rg7bw,D#y{C0糇J8A@LdY8i.'Y\l&K%y6yKAv%pW$6W?:}CM‡ӗ){ӕz&m8IcA ^< u)+A OEH((g'eX~Y!*;{˕j=?ˢ ղj~|^Vݎ"Lt+Y: } ńΦKk>@eY3w3<P||8vkkT'>1m#iRf ]@(Nppco\s%唕g` "gdPa,Su'F';rgAkdY'ޝ'i>#x,R63\;j?wYS3yah꠻C>Z'Vh)pJI4%z< YV*C(]2EԶR );OSW7,kC͂\-+\o"eX 6>T}pk1;\\ P~?۶/ADO3!HbAID4bwc=vl~2^0tEuU8K/ljJGtRm7ω8ZV-Yu:P;$@*7~ЬH^q}˗4<эC]c "ȉc%5GDt0*S9JϩN=-(|KwUΧˉ hҢX7|pG Zc~eKy,0>b#Ggs4v!AQni88sl>v,GQ,<;0!+,%Wòx=gty%PLcv鮊IR'yZFSLYJJ=Eȩ!Yo;n˻ _xUpq!%`Y`yBS2$)9E:B^A~<]q*&>h& wC *8ş&Wh=\c:/BBgƻD G%}׿~C_IY6+sRmg61eȽsW#}ڃA}͵(B֨) y xbCv- XvhI"'lJY hYp"9y/ӻ܏xI9pج//Ox. xڂ`)>PA '9-wpp_'|Py7a gz(O*\`(^8,u5?P6 Hh>SyQǴB^y9Bz<ZX3?q/ >C@՚&6pI>(xG yMRp?CO݌+`$(nb#)"&;3(Uw|%&a-ʲ+Z>?CMnJy!Ŏ0%??7rƺSLQX&'5&` EBGi?I1Rdf~TeA;9TBh\!Vqn$X e= \Ù惕1u28Q1ٜ<࠲( nz#]l|W'G)nlC`=4Y,n-yxytswǧ?jTFmNr<9id+qIbj!|E30p];pe%)S E~Em9YZңltV>9\!)^h*7IA~\p|ͯLq4No_r *U~'.7W 珷JgX%Q)揩>hpsDrmSCSV|޹< B6kfYmZ7[)N(,O7L"cfatYˆMb9}lՖ>.OJ&|4lzr⠭>?&A?|JGL&gd7XXDܢ "E:E4+ ?ϕp?5(0k@;\ڵ'aN|‘9::fhfr,MlmߖJpȱsFJ8pݥVx4hm*]:FX2ćZwxL9N*܁ ֽ;Thx8 ɛ>KdU#9be~~ΰ˅|O+OsyfQzǔdzci>ǽ_UW7;>2kn#*UMe$;O U.Rl 濣7z0wG(nm; Lc΃g wNObՠw"~#⨹GRm^Wqq9q!Xi:-CEc2I!Ϯ*4htIX;x7Z͍ $jhǀ 0~?U0Wnv)V|<2B赖Ϗ{1k?vNv4F$+)ݬ6+>TlK Ĥ!q3ҍ+ĕ˄FZc\9䉫._y|])u>AEe_7[1q,cR(jU+̊mdos '/?1L9Oo!ɃպˢBR0uok?r{-V3fEAƨ&kkX^ vdi rsgEd61%R>~^20#R,]HG(c&ŧx3|TYC/N>D262~0lL}5|뭉j#H~)Q21v\#`͋/Y©l˰>uAjZ[_/O"aVRY  :fUsHAV^esj(ftBgHAu(v40,n#,0 O4֟q[ԄJp] wN<]^-N&K7ZY=|$@"Hyaފ y zDqoD tGO̊HzY&ǽGIcmeMĆzlgT)?ޡ m1Jc}x$԰D`\u.K\#J>+}Bd@*da$;;HI8f\ *Xbr-8@$R +8OGW츤v{dR4'Aé˯&nY{XO_:S޼#T6Bc Et]H|dIG逓4(99ZNhsq囻98?cXH,V&= ɤhUeh' Lnòm'*Ze^Ahz96䦣(~N>&yi@>1NqǗNFge{ĐbGQqa݆npsDŌ̜b᫞bdkV!>nqi8y~m0F +\m`!J-dBRVDPN"A@{>˭cԚ62O\}pbS)FwBdPJͣ[AL}Ŗ`8=/%*X X"4HT}2 Ik46/_fa`4(% bA.8{2x-S̉g^F"hdvAt)V`ߍ jpi?_cAsH:zԖKe-*DII-*yhW8"u{*)BH-Lz'YZZj{!StҸm}Tbޚ:َͯtxM)h"+uQY7 PRAv( vMs@#}"ʬ Å3I^~y~'})C jnB,Uz[n9­hNIEYQÄ?ћ9U`@ie(  zh@$}Ȟ_8ûGi,;Ejtj Vh[/{R>NʬiOgkGma3nAfāF=g`^I*[C/a2 ˾wOoS2xYV n?|TFDp{T h?g(D m3骕 1dDX-״ώV彽29$K#D_A\22iT%P\W8Z; V`KfS0bMd )@K k pޚJts-d !sAӄw:WCxpkE+@y DyIbRyN+J2/gEJh:>\-sQvZ~jU=k@҃E"eP{*,zX0Sjm6}U0oR4/a0)$F j쥶zA+W;jA< o&1 s; Bο7NwAl9tP! X^88B)n(zqŏ9)t*kk~ zOW`͙M'zRj^6OiIEU(kDh{}&)[Dn.9g@?:x0j~:1A0X W&w:x( vtpQїEQSRNCe^5ʲT"}IfH붽y١SNN}-ɘ,GJ}ѵH/V~5z"l uBU>"CP>mحFRӤvw1s%l6\ Q;DrL~f\V 6.f FֽH*'O>UƟUjbsGCbѩHī??ҫi9UVJ&pJgbpQūUiu!1= VF諕O6+ow˵zGikv]w\mz˻=„> |-3UH{3]Hb5 VE!z4"= A'HwDஅYԨ9| 47:4A0{CY(afQ%G0K)^jkؚ_}US 9jXqsii,tor$`A.D}lp?b=}23A>l"v  gBK=_b4tCzwш),>܌u"~e9Bg`S]?)`/OdC!\Z&^.d:!v\Kvpiߝ3h.[ckf R]}) g@(OB`Y4)}V<0E̶XX0@PmA# JYr:"Ǧr@*.i~&!hH˯*# O`T`&Wu `uiPTBtB?` \rk X5;8ّdHc{*,'-(`QhSӰ>G;!RpT4?.jO !cW^ÇOŎxҔ=ȨXL_B0ĝrseahOPe-J%%,uz#b@(~i|! G~S_`e8I/LѲx+IuR*IzQWRh^ϑkٱ!zeo03\5"6&|3<Н aO$Â$;bX }~c&8Xf &ґ#"/sc?׽&mUS$h&yaÎp*%ǫR,tu,0E>NMbje^wJZtERʠ3j9z}O1˲YSQT*rZ6+ż?G=&0Y:$DǍX,`]ɀtA_BrE}%ek{mjZM -܃ 96lP׊koO*iRF!x}%~#(x667aR JB!Q&:GOM]}}$_ 67 3@Ŋj.eS+:R0M[)WlR2Z|WR{ЀM׀'"aw╘mPLl4ŅϹBo>*ʂ\˷EM$>nqVU*2@HktDgTڤD"a5B:I*>daqH=&VB+2̵ )/5cP #$WHas 0H!O/xJM,W[_+(K2Őyi͂|et@퍁jÆd5;$11M/&J mbB!W,VfC9G2hDKWHTZbO` 2#+Ab#z/5a򬤟sk>Wk^Hmyw.vw[i[T.遁'>a<_) ?~ÏBf}L@=jcx))Wԍ̵{٣9t=@B%Շ4:KsIƽk+jQOc-Aa&&m`] xX Xܸ# VZꄐxUɏ[@/9ߕx1-q1੼*̻3δA8X@OYɦZ׋g_,! D=?ьV\#BƖO#_%8 ( _I/n!)*XkX՞a&< j6JյIB _o~Srgåp$±K~CR{r':۟%5_n ^ф$0X[}ݩ@Anj8%:?Ad!*fl$x A#fj: $KtXŵ;R9'1|y R~޶-%!!#dyS%7ƤV1Gzߐc|  XJź߇raj19r%6A 7f̶Zq&4@zQXh&&O$0 sA.$>k:5vtxASiR?}ghP:]E$,Nm!9w "ȵ.hEs捠PƻwD㶞d,ܨj$(Ed/p$?rl:a knË@4 HV D\,lށ?+7ݼ4#֣nE[cozI;A0"7@`bw~?4mXbr #R/ѪSJl$6 )DBB1> |L r ipE!\/&6^c 4JC8ŝR` .>8FlU (MWg;Cj{E;;fėE|r%Ȫif-JH$lLjpRY0יAUC_8剎8N*ѣ^.+-d$R(*}Q\; H/bQ= _s bZ* :\)ǫlU`0ʣoDo-pr$ؙ~p4 sQ:N@[k<,R.f8**3H3 W. ( jJlq'yS@fVMHa ٯY?`MwRhsWo7RE ư$$P=|/0S Rv*OHxSWӥ]achrXir}~d ؿw7QolgNTh$%c,rP; n{lV<0>"1“fysh~>l)p-1;BL5C}(<('$NA/xcRObZJbqq(gk=BVӋgk&fJL@|O&4)= "jי?F!<3j(&u+3Z۾^3ܟÇٳ[؜Ê8:B AI%WlZ#mNIAjQ[OOF6\2$U8=BVn}l']KLbqȼJǑ>@׺(?{%>ƒbv}fX5(*3^NPVU˭+8iw8PB/eU2M[)\^ׯZJ̉9q#O;7w?zջWݴ -PqS\z7]f0YRS!| ـ^" hBJk6saÑW̶GO~OxtP%8ӄ:'}3+D=˲ͫ%juDb~tX ߮>g#׼A!5GиɲFGDLXHh9 $^:^̱9zfjL<ܮ|̓GC1HM2mWC_BECF!cRKWŃ*)Bp%كjDGIwq07#ym TJ,c;DZU E֜udl`9A^?HHE6EUtIcnWgQ;N K%{[10+ ql;u˗ _v(r)O oF}~IU X/$!f1H} G@Ȅ&$dQ~˪JA)YI_e.KX#;<3%'͂G"V|rϏ~|1d"Yiob4lRJ(`u؃3GOxDշ!W!qJ 1N'< R{e7ڳr,\Ƕp.YPPW^,哧W/-H-69g)UNdžh9WZܼCi5s+L Eeyu (2$Ĭ!:F^ke.]95rc&1a_.7gϮum6hEV54y<7u_nk0ۛ9#.~ b@mr5mf}7ΖzG#$C8ߨZJX9+kh:bx{!sbY9 ̸S^^܄Ye1c^@"#TqE5psJP֙ro'@)qhǟ]vM{y;6le><E!{E̎T \6gepy}xP(WKoѲey}|U*1v2|쩟9w؂SJ4սȯ~]蟭!N&!r4}(%X+AJyK&;5"A9< ج~^8,}PF248%) 5z$=v,%&vG\Ϸ,Gr хQn~'廽![IY>Aڥ?hV)U"-\^G[Tmh${]%9M,g jrh"Hu rzUrV_uB ">uInQ?[k:`ywۚ%7c0PYaCtKj6y,笥LAuW1+oQꐙcqY]0dN2zrؐÌ7 ᢨe91'oaqw=a^t4%mF/~~y F !So$8i[ p NSDP9݃j'RRMY5  Mȁ@e̶UԑPCk  S쬽,33oE8MD}w*|X`*^w2lď:& y~f }*Ðof4g홳X^;IP~rTLR^&XYӟa.p)_ *eL;M82ˬJ[{ @E[_{|BLYf2S)}"b1G͉T iCg>:i7ͨCz,$ؚS߃f=AL}YMK J Ŋt,я*`Rޞxtp.k2s0_B]<s!]C*JC%{HiZџSThod΀61|w(X)YCׅ+TubfjR rbS}7[i%b3%à0T֡UE%HMIțL%F+7ZWOiRTx3[QZn1N}Y,P:O!OUcnk5k͐.i®Y1h ){r:j8vVYg 9va'gīmB?k8XIF,;sf3kJR$p?$*0#0E#EyaYHIi{ѝ+Qn"@݀Z:LG74Ir{f p}Tu&E1R }GICP;csHvMY}ǚ&due W5+T@;^s*@U`VX'ϔq LP_YA8ҨcZm}kJJ)Yj$J-LaoNDYO\_"F)SQk[̆-U/yA6U[<(b/|]Q=9,o=z}vw\V? ,= F+(BLҢKG+_Sl[+].pfr kuzq?&2jϪUqJ873TbC.&։EUBrKfɅw&F[`VJ/̴|˛7g+R֣re=b=P2,3NV%;[B UaxV؎s(r2+4+p[,ăP\1'2jQM3͖?@],?&։,52!y"I#|rY!애'ܲcMެiW\+V7~znwHPD`i@F?@7Xj$8VЙ( u $b@YWq3Y]k.~ %6aaҞ"PgtqVE 2ؕ/_|,Wɺ0oq2y}n0ۣf_DvDwtl'.w *dAg!Õ,Z5^-g\ gs0^3 )'ׇEl6԰ujY<%8AigiÇ ÿ>O|+jǓ'OV<~BeGWkGcy[*$2كgٷbs2QfRIZ|HEefIPOo_+˂:N+c1Yx^t"e ޿G[Ii wƽuTQf{WFƘ362͵"cĎ;ӐtKc[Rh: +@ X1帤Vs6H?B)k}dg8T#}H_qa@9hBs K)5;ˣg[: L̖>l~=`6jc`A[o* (.wlj*5) iv}t&\KbJIC[EMcU^m؆ =v"f Wwϛs ,xYv"~C)eWEb2!+BH+!I9=!%\[;L.b᪢CCSM>Kt6}3Lp 9<01Զ0?fov7%Q L$Yr;V6"O v8"Fy@8dzUΓ'~qbLU:YYE,WK'b?ig d2Ȝ ҝ8eh6Ӷ͐jMb7;mֺ̋<Nj .e \{V`Ri3!N󄡸MTjmeemeiXZ[Z{p=ig@`$ª 4H j(n2Au5f)b緎ZdbvX9mD>+OJ+okv8'f ;e&X"3DgZ`CuBi'보bh?88hZCZ N:̓CId(*`;5Y^bFY5i8XhFLqI"bKF0j .~|D^l>ќᙉ ~b~j%&-:}qȑp(WЩځi唳G W1y Ɗ)Sg*_Ѿ.b[""mĔY֊垳 rOvq9+QC&6 Ab (u;?_\\x¢WnyuȨVG<կ zjC,@6a \I $y}&GHߥ2),8P EKO~MG2[Z %kP [d:Ҋth4646!&,ê"hodmd-e6΃Rev[$xзBC*Hb,jPcq0@.f Q:yUw0l9i}nE\>9)"P"2rI#A; ,G &NakKdԼIxhWw*gǕzu\%ӕa)2~ >2[5DzTFHA["Z$dC7꥛WQ$f%?,m,&ݽ^#\#t€^{o8*fVqװ <@C"S4F Y$0o8ab'2ژ.cCԁ7u1Dg/2AZ|pN5Atmûﷻe%n`(,j4kˍpD!>#X.Db c[  `|A '=.y +𾣯Cy 0l6dR;X|k-,).{pQQT/Dmh&3#e O)4_>;[٘JvrSIg$F-|oQXDȳ\mgA{! D FO衽]{2v°XaZ.@K~/n)@$=YĚ[N4\y -LA9`;dY I+֖!뺌͖"ffz3io~;wuPvnr/ 4 V4QS /d7xzs/-=B~ν;a$8;]+8$K-2BDaHG8Ix ,339ڝ7 NӒ7wް^ӏBzH5^lߟ\2Ad̴ؔT6#]4Q.Z skVۥL( ˫,Dqif*㜞lٱ[ >M(W]eC XxO>D81Gދf`3"ux2*m.dnLWb)(7`ďg2P!<&}ĴW:!|C,5NXb0u{#(i.3(42凇f g-䨿(* hL҆~yAr:XVd=nWA_JC?#N5D 'k⍍ſ+M8u>rl$9=9c͈4(T_PO5LG"4U`6uZZ|ep+)n+5d]u{+y(q*x'ǹGg'zjB.v̎rok9F@ "!dY  7kC&?Pt%Mf?+Xe )$9E3m#ݮqW!Brzf Ra+2t]ӧ . RhTƎ=978 ?r79'is7R)gR*oWc2&$5Afֳ{]-Qc}\yD/rDDZnh)m RĀ),frUp."$}![+$B>=gaƀ3tG%L?]CO_J`cGό9a4X峣;/[)'w9zX~ Ife<uX!? L+K%a˛p@MʔQВ`>YHNd06 2sЯѠ"@%uxveJ2Oi)5/D1EmqU$m1+9k`;0YY[j~(РDxiG=QYZi62)]qgNԽuVK*{9έn,d'ȍW~9aeMs(ai'9&7"`ȉ&D%rʬq"8t\Z˾V0V2jKqoYL{6A:T7-m+ ,@;m,(v7tj[N:ĝXRS<gg>tHn?n5ġ}B;1IV UM՚pXtٕ;=T樃!2Bma @ĺˢmz͛=J\Xx, җOY2__0=07/L/[DG%MRy,&b>@k0 r3oGM5dx1U_ `Eݵ~[{lJ\BJ["u帜F X*XTj` cwE)3@Dh^}kb~eFM?J7p8-P@Zس0荥ʷSSMuһڮ1d*>]% eHמ /QDJwC@ƺ3./[| EC Y,7Ҕܢ^sd/[|/}ر?8 8/5}M~ ]'&)2|KaEJE-ͷ/0O=+Vbt?4dOl69k}턢?a i"ʅ{r[; X=%w?g> &ȚmN',an;Wev><lP^ acXȧŒϏB&8Y,C:AŽk2X&?!̭rffza iWw&q9d:qXE[ok| э546vo/&P9Qfn? Xbku`C%jbAŢAvDzz8f7xclʥQi;c榌y3֖B]~ǣW~&!ڇ3߰[;^~/ގ{ZCҫ8@2MCh:"hOZmM]>p*EUqyC%-Cw2vvV.1%|:Y={<\D74bPemŽ@Sv>5dflY~(&,̳̾ ] i"poBŠOu[|o#ǐfH[#LtgX6C>@>!gkV<ХB~f__0흮r-JCYH.L{bw=56-rOaHv|f`4JsJz&Ydgwomw+LTÚH0Ϧ\R7uxi$'=!H `РGL˻H]c v +x`Js/E擇sRK6v`k2';R3&Jfv~Rvfk?/*!TuCuVԝЁ3єLz=c`eTb.60/goWC w)v ˒\L^LB|<ĤHyFQ?,?ڊ}%dv:kZ&\dg@nxOiMɆ~28: T|ߖ( M(NyiecIXS-iŒ3m6Vr.@|7ɊB{+O2ƋPBi_Zle1W B|4R/̀5Д6iL2:blPj&!?}pn믵у".1 ,_2K!Uio 7ld$ cWQN*&,K;#iާ^D=}á"{ %?\h5V 0@,J>~_)W҂ծSApt+8G *vh%bz{<~A2~lRє,TP=Rg@l`v&}ԩS44vcr#tlN(m;*e8 PW,naQ;X2ae+CѦ1Lsfp[2f.ۧMA?J@VEnH(;pz:`ݞZVb!Whv0:~w||n3Nj=s=5+<?lίAqz:s0'=}p뗏՗ݷ=/IayEl򕅎-b1͊<>cŒr\u@V 2E}ti1-n<~r cF. A*|oصkus~̛B,LYihz$An-zH'`NzHu{{0< 'I¸׳0Bey0spf5ВMq 0rh<,+\kiRGLpǽ&syz%yXQZ]G8R7.Nggȗ wRQ}&!2B߀BS.^hRX˛]d_޹yy DWц;FSD AG+ޯo^2!d7`q#cx99IH>ӢGH;T}NJ:-f4 PriC9/@ >֞ƽ_,A#|≖3.~l|?*<2?ݱsmy[針qk 1DFUUы u W!h2#+BtO]hpm9.:3ia k=W5f}΀|%ԓһ)4෠' =4tXx_0X_YO;A9Xh˹ϙj ΀RI8ҿWH3L5}ֳ;}hۘƇPn w.\pT$5Hޕ_^(լkS_ 5zN|dJ}]*:TVNV?WLȶvv ~eV)RYF7Y=˯zOwS\WgBƇ!ՓhȤ$*ȅV -of;#,DnX)ZɌAux7}گ^B: Vx L~.&T6<* '2w+f#a~ = /%d"r̎ț\/54S hUrA?nWe/*#υ*:ÞKXG {k?UخU)z‡X+6s.Q:jGѰC> 5 Wj L[RCB!I č?}T]\hBH/|"BU}Sv5с)z=x .ja\ǩ--iK-?^ܹ6v&^k{EX:K#.6~$oQ XCty2okE͂mldrKYc \VݼՁ)a[ήi-m!e+ ɕTqۺD5&JCA2`RV@y0'CQ,H[[N m2PJ) {bjUÝ4P J?|nc=+'L9Wrd/ppVK/>^ф[AEj @ߨ2PKc cR.JT/@ Oo߹37n6^s1ix6616l[PkX5)@hSLVǘa 7E9DAYۅrjŶ >k?z_KŚRXX>܌Dt:b /iȑqX a&iWra[,Îwou Z(а-x weƐ9fCVԻ.|"i{V2)#.N,,2{С&8~ry9c-rxcb #\!7ϝț5<ۮ=SRBv ECZG* Wk':,ޅ'}cE +'408r p-ē '/rBYp8O)=}1 3'|"@17,}$vޝ;wW=fjڇӤ<*a탣Tu=&.]CnHGWx$|BeEsV֎ooɑN(:V#ȟ 5-v!n,䘔b\$@=PL8'I^Yw=sPPB >H;wx)u8>(#èiv J2 Ȫ~` |/՛L५˙WŲj!*N 7`/A b9Oŀ`f[s(Ca6˙Яxٮ%dEyG.@g j#!W_}_L=c7Q['Dr!|\9]D&e <*Zg u/R8=I:_2: fVb^#5J DC*8"?L?wYg&@ +*k - D)# ˀExb=bN 3y- zDhڇZ :"iIAأ^Kp(],E͠$]m ] ݴP BGŁ=Եz2D"4ltyEVq9o2e̲%LʐA (5B5!&P:@r ""(87zO"׶ C;}pȇ!Rm?ŀtun^:&:܂ Du<\aː`6?Y`B)̗3_~魙[p=skf˙a$NijRhjr 0&' MM9x%aR =x߮>{#I[/i>/Q`0rq Db\,d2,dd%?l !b֡oYL Nf3JC3#a/+)@4.g_v $M gz giM4{2 *@v/K>zmpV. V30Lw݊WjRnXr yYJ ݘ{6mw+|/XvXH`0 ZQ B+ӷfANMb[C3.fr޺5MVٖ1= w<2a^ʚa; @oH[ou>Q/nly(1)\dJO a ,ĩov갞u2 C3*bd, YAȆw4~/Dg x CN-@t̰Dyŝ!qvIJ5`]ÂMpGdvϸPxiMAS#NNJdamF\˿kg? ZI֮HL\(*.ҧiI Na.#E+kD,AfT,eg@6 ilJ.py𤜱tR ??0cݦdN:@EC V9 3x,g!Dr,^y&9ߥY`+`]%VCa "1q&B Pt"{~L֖7ʚf=<484<<8(GU $Z9Zv喩2}:)wp!fl%%b`*۾!ω~b^|'b8M^/b=Ae\wET%̋K^2Ćh%,Ys۹j% vDW:4{~9#3 "KolS |e.0΍ ˒3E14r mzM ԡ!9qy?K|ñQ)SuݽRuH +}֫GLC2y{v(Հo'o%>d<=zIE\ɺ,>XO``mvKaZQ2܈G0z8dSopyfdf @@M2,ЄAMaRΤp1i2An j̭EW`e+Y<zΥUt \K pd3\z-0BD%!Lt_j6=32)*?==K HRQ@p+HqrtYlJsXiCTt$w;`kXw2VOrEQ&[Ulj,-jShHICgǩtL ER$JLWCoQe}M2\XCBr{57#@j]sfP.aIxȲ@)!(`;k*x׽XHc.!BB,H!ߍeGhMy64Rm_Wvոk!4iK14X8bQE, ,WXWrPjO_Rq7T_.+UEXIwsk)J4d-*RuAr "_bWj~Pn鉟NYC+ 3 eE?0o+b 5hZ: L%%tHN51S=wXCo C/m9>pB{Vh{QJFOт4X@&72U!JY9N{Vt*5x@kAVo d0k$ByGK5?}њ?zjHdžPPr⭄di$P'buw[[eŲݬ~HŠD|@j yzzhGh2[LO,4ThD]b-Let^gD3R'*ք/ BmEu@PG8/!ܼ+}PgYPVۏr.唌-<[Df⥕fކwO < Kzi ['f`)k]5~|,Ebh ǙM@QEcI xrBmu e|_B3>fYIDXXHہedp<1X4XƂE[)'܊D c& XKzu~Q ʸ+C@`M3)u}XA )s[Rk8Cbw˦[R%Oz.B@=qpAȱXXOw[A%mͷ{en,u-D-'D±XS f='.ъS?7* #J2%5Ib^ҩUI:OsRi֔u-<Ժ(SJEM{\aMDTry3ZTƋXr.te"똕CXV$-BB ]+ITߋH(@V?%֐Cd;ken\wރR4ymkW:uѯP2jqqT'!k5`/N,Դ¬ ˵J nFCCLwJ?Xy=x n{j).ڈ WWh?K@O}>Dޡ lw ӃDEd\Y?wnue+US֬;U#b7R؇4eiY\"dTTB Pk@5 eMUuIS$V救{ +>~}Kls8MZ*~ SZ5Zj +t,bhj5e XQ:i'FȌBNJELH(&7UMjH{ [ziebDQ{}hKu@X:V }{c` ׃>5i|sc'&%MHVg ;6d@+E _ٯ%|AhiUI%`fjlY+VdeJ a_J.kFG:HD N5p#(GU,JCgXH|58 ?g?Onn=.8i0#y@STAg[ ~f4F YSX?O=7NIS˜Gv(۲ #D{N!KWt&;\R/R\%7r%bmMGQ< S pDg<[鳻!l E5g[OٸĽ iDAU5jU$7hi1=A4 ho@R,SX&CCU~"ژ  m]v쌞 rxU[^)S(GlSOE` =Y =S_+tյ(]M!yid3IvlT>(K4|GǙ7bimVm͍ݱ4Kk{q4cĴ!&B\HCor’U:u5Ga,dnQ#*aU/үw͇JrA%/ ]EHNPݺPb@T &A V/ws֪QviiЎWDk8Ɍ1TB# nBxY=9Z +@Fk)_m wX;E.pXBb?SC/+Cg A%"!lnގ(%F-cÙ \*f zw._ Kxy[[Bo鱼5tVLI`Cqb.Z% 'O H |ǹBn 3:R^Tm}_G7Ou̓ArL$oMd ;Aج3ukg QBm-o =,\>썽&mYH^XŕjH^9G9eّJugbQē'[7Wgڜ'X_RRz} X.oSE}Dh gںOFs<#!b.ٮ 篶rnG!Pr~tm^@gWqjHu0 dslh -9 L&,X]+ytja{* y$_9}~@LCAy$_ Ͷ @vVrqEq֟I:QI(7{uBY@7Oz,Co D?,0VEp&-!8uA#)'dr8j9#vndYCN`+V-y*c^+w:DiDRϡ"sP"nMLV$0?O?Zu[uoX"3F2~ok6m@G/7Iᦦq+d x9+ѰR 'lZ%|<{A .G0lQù}xU\\U鳟~6$E3v+iYQ[d{WRi}x^.;U#Av(P>q5kZ%LUzs܄E֩+W^V5/0駫أP'>.ЄC }ƛUܫ R5QGCMHA<,5g!R>BA|7*%GGy#`  {8}ą V]2$DMk=]$LaU: %䳟N{:V"!XAg St==T-OV \>D*.W %KVB  `>:Au$Dtol",O> .\ZX:&F ܏6&(|\نN**$]&AyqL Hڻdxbrx.B*R0"j}pԥh^LPUlmbg'c 5+}ƻ݁N֫Grի'JUWA\!B྅R1 ^X5$u5ln~9~ ʷ*;Dw IA!WF*4*6mLx1 uW$pPA*wt8^%k,DibP@ի 5$tϽ-ے{槠Ǜ)%*P:Kkx 1$pḟ5jׯzP}Os؃O?ݼ)髷<#:('aF&B `s҅\M%@Ν?5@p ʀM! flnF-?LZr. $F$2&M2{cݍ q%=%VU=ڌMñL_@-!e~7ulee X=MқG7]f ZͭdIWi>K8ڈ!TޅY֯=9#VwkjHo,5]\\Z^,/w.vvv,/_RVөK++ˠCG.+J&74 ITwjovsyӹ\ j щ6es.na%Ĥ6Pf^OȕF?,5yq@csKA=p\D//괭hfQ%av? \,NBb!o0d7&/Hۋ+6&^%9FpY&, Xk/|B#>Ur,C>(\rD& B~K^ԘH@n&k~{`Ha顡EZ?:@m5ܑ(uc㕝\c;s3y-e ۑ RmHي58} qeEւV1 pQzOpt;}PAO":D{o5B包@' ţw]gDw=5 Z(Zx59[wN2X[ "%h %VY{4XN?>!(Q™C@16^ IN 쵙!6ca@)gU`U*]d3 Y)>:w\Gh|~g p @X ]hAƌn[Y)*Ľ*?C{~2؇1H#NWR =}cO%aY!$*7/)[ 5L:C$ l".MH9w9D:ڄ橣rhhk{[Fz|^Tt&luTg R eZYPCB3/l纫XEg]b||J_8<1<|~;6%_IͶƚp"zIN_x2)͑p9IHrIµx桟.@.! Hz/n6!)!u"KOU{\|4#-d%WhOmFŢpɼ|5$yU |ZfgN)CxXE[)L&RXa rBso|)&$_Aa DIo\^Pk d^B̋B tZ&r}o͌--RVni2DzlRXTq!Jc0Ѵ8^!{1be$J֫yezv߫7}@jΪ\(IRoxC1_|GB[,yuKE8"aT,)ɇE ߖ(=w߈ϻ0FEΠO@uQ/Y!]CLb^ύ1)S%lj˭zn,6uf{{r҇c?8.=~ H}.NY漻}=ۘOlv$)q&|@Te IYz::WUܺBP:W'#|4:naLHcJ5|F\ Ju (u}/gqޜY.b:9 x|#H9x&M ]&YU *77^-kwD96=iSFG;xB;T#CgbhCs@VbҲep?rE2 L ESN8z)Q]}O3 q>|HX/u06F"f,ܛR|:cCUwO| ,evԡb,Fi&q0[C)|>~pܫ ]`LHM 뛞 _?" tO$O [|!%PܸAE2O- g)1AT=(DŽ}=}WI_H*_K` O?eB8ǫBV] [Ce@FEGcdJ|Rʤw͢ G({p( Dx2 %o.*Ī'J(W֘ё Xk.jI62T$Jlc-%(B"Pk?npð^`i lkIPP cK D4C}!=oqC/S i*]U9b@4\Tz(Er9HW94"S a/9D9k*M r`t0Hlw"* Gre*.d8,.}O,rDX?K{neC.6x^րFϢ oq}"DуfOp@:惆PaDMEMX.2r"{ߺ ޱrW~ 0fROf`J3 TE?*HAk irBB /!\ϸ<ؐxb3*|`V@<a Lf.ci,; E{;<^1X on:G![ S$HaU[&qOo.hBt6 t|TQ>z#P1c6eTDa]_k /%؅ M˥FU:2YlN?/_J ? ŝ}Wid) !3!8xWu/ LznHBSB;!N 4:9 hh聞 tzgMhMSԕյ/WŐ ?jP- ]c(jZy,ʄP &DŽ(%s=n!z |j)0g5BzRŹȆ+~v8q̨0W_Nl2:ACx<V*|}!!7鸕p9b> S~M@RZ5ЗG(-%5,ʏptr0de  u]ՆrPY痍x;# 1Œsk1ՔC\MYXj;e, #,,֡~Enѧ7<'6A^+`ՀbOdή (jPx'_,۠t/ʹ̖isIo|?brP>*V]MĒ9+Vܾ>d -RҠ0+=A5x؋g2tڍ`UlOp$ yuߪCjOqC@L!aB![$FpޭMR|?`>W{:b}S[bȆ)F!g 2B{93dJ =oiGB+!8&ύf~d;yeCTШe1,r07OpʰKEic|%d`5&t!cIMF$%jI12N]z|~?sܨ(Dtt[i Fq<˂}eI}ZXz;𠭻T2ClMC AWaXFgSKg*|_rzrOqC/\:X2l:iEKXȑ#k{[O% dUo6ך3*FhtWsBDr^q >k&['(@Be>|AX0|/箏汲TUUq! uOнCG u = Va6LդnZ݆`1n#kҮ$p!kĎ8D>Yx<5#.0vjT-xE1ޤR@ξ[3R8Xdf{tbP!Szn\eX*\/f?Usl3Rȉ**Xj| KV ^/:/qh@fq4մ2gܠd* `'ÖJԸFOz 8|ħ dhb~o|hv^ >$ֽu"D5[6 $ <]2~:{ڍ /g uRgBJgcYi$Ê.o냦&WI!VLEtq }{1 !1CoQPo>idp+ٳ^"A`Ksd h6Ig':iX~u}G+L'7|"^o˔::F OKю,M,ӫcD<ڃdX+Gp\ 9'r„_m@gqU!n%Y:_8BNFD8^.Ht cA!ʆl<E{R?yY ^rͳFV&TmDt6N~/E/^5lR ւ/Qa~"ߵp}c}Qj9 n'YF/; @+يj5*uŔ-gKUF}fy5?+!%0vm$2U ~()WޑꗞiߔKĎcH'3w) ,d}QwA_ຯKR6L'+z U H~ !.r{vH& uպȈ^Xċ!M{d/,!$$d❠< rw..&v!VO2f€T s.vr瑞;cSSܟ dljżq y]&eBVF[6:G=)^ӑ#:KH0A"(a495 niqάOy1Q~Q?ɻM~A  e:aoUg\F΃04?&+ylQd;lZ2]kk]Mi_P‚.LQ 6à <3iBo~7p b,X!_Bf?fƂߐ߅B_ևDȉx*NG`xaroyd8%Nt"1+ H[LJδ}_8¨ ɺZW9^׸7-"Y<)íMd ~&-3@Nz…KI&Dꁀ/.M'?5o69~%t-5K~o~o\})GKSnx?{uS": (q\\pڎU믚R/b^\íJu0zf|Asخɐr766 U%r ^z…dE"tC W*61a%_8QNă3 (+tF|}锄2tt^¶fB5.wk6Y,=8o z^lz bnwy7[`?"ֈff^8<51؈S@ȃ R:'6=@@e_1ޤ!PN[ųxo6Wӹ?X%D 6kBXR6,//׊EWNOF|{o[$GܺU˿ztJ Vt^:yRXyx[  @f]KҮ L60NFWp!!q"빅B^c !V,O *geP%]H4j^YaBFz;E8 1~'7Cvʳ/tl#Syrqv"B,&6 DApf%/̦NTYoΠGRk(4Uah 3Ņh=kFF6s+Uԓ_#^W6BRdPX>(^ύ:`5q_uXɊb2g]n$(s:alBX,2 z;N7u asy~:: s/Fb,wP-*Y]}TnX/֖$J[,h1ڜy_/>2=dْ-;}/Y۩0بÖ< zfm5pVx5u ~mUbg~=]߅[tɹd  H4fGlu6X +}_}tn s:dKvB%FRJC6qm~ĚdrF<ŏf:DqXiS!}WeP\p:V-c\ATT=*6m${E_>OJ3)g2k_"@ҖR~6l;;zYt]F? VJoj$*|v3f!Vr#չS؃DC!QNTo| \\(H|k[}-rQ~P2[?shBYHqdDsOp:^ *rH՛M}BZ B7 >-89!#'ImV׳HBHgEj:)ַى 3(@؉|76MƂD"yHg/\n@Χdg9daKET(z%CZDȏJBWy[>GdLAXxb{!Dvkdktkʇg<`lr@ffzWBvmꎝݗj~Ë]  .j A<N DۚR">Ϟ B(S;eY8>B9wy9( MNjoF.N^854!c;Ei 2f uxSM36NDYyZKbr.dAr=㴣 wJXGsG֣t}dzC S4ogJ7H 6ŠHb/:OZw&97N]3PqY_yM$cuXB j C* z^E}'wINZ}%^ Tp톻Ij~PEI]vep&gPL4+"<2#.U*W^ ԳuKԃElr-H뛲ѝ=(V ]y)!A"!ҏ^yإ:zդo.w?sIgBBv愠d:!UIH4AZ,ܥ2xoH-rti >_ rҬ̈́ޝϰЅ?6@zZ/~UJ}{k&ZԚOjEń| O留SaL Q0z!!yb!Ī5Dȑ39ƺ{Mƒ,<xϭbF:86m'83Q9j6ʲB^uT׮u9Xg߹z 7mza4RyO*ޕ),+W^hB2w}n";H0jwP Ʈ``N\k9ѮT뵆,wrIeó7m>gX`yCb{}eQXD>)?j`8h4n Q&y"m{YV6tx^*~fgc %|A 6`m&c.V{{Je^jM,ʙ*}5֬NZou9.= Eâ,6>D + 9] B76aٜ@u:b?p8^mkZR/#ƒ U sx|سvz6e(.{dJRe19/n/MR!Ϥ@%D $1Z}@B+4~0)׼޶H7ϙ{Nri%mx^k aw!+v,WjzhUqX4t8E[T kYқ n5Z濃~서>Ȋ'^ypzUG))|@Fƀ`ɃN'ڊMuw*~b (nyKBIB1τ NdYgWǍ)![%FZf]a_W aA֜ Ͼ N(ƏUu is;)TqDFc"}.֝ ]>Q"Ũ=zfzX2T B7[ ۲VnO8"[S{1x0mNH\O?bȋ\mK"=&Oj_ekM6I{w>Mi]2\Ji4 Bl"iF$Hd4"^!(hw H}]VH{ B5s}v ^T]TB8zWML.S>8#թ]> x72zvU566vr)6ϯf!#&M^;-i׺"Di{iZ a F I$^zq]1qu|vE/Nȃu!^CX .rbda W Zn;</C{0kfx$k[nt6d:!-kjQ԰hZ &l`^ X۳NE@E>Z)9qTcjb/D4Ct,ϽTLD!;)@ Z >~a>^mstlj8tRC8;+F Jnዚ%my}04ef,ƫ|Tƴ)tT84d( ɾS7W.PDIb[?ث-,iMK lB6HU^Z*oЈigwyIoL}/f[aM&MN~+w,KQ~FuyF"O_˦ +&쨖\MD!=o;>yWe :U/-h\ msZ#+v!6Ȉ~zR#$+45XgjsV%nM< "QH뀴khQYNS7i@b4I~Z_CRmXUC= 4V!֚XJ);6J˭P`uLg!"$l9:kt!}¦Ґ.$0o(+`Ke@x9Bj~% YJj\Rtȅ㈰֫g]G'Y賷 s;Zk< _B< 2 B_H OB>L^i;B0Uwd:|!G˂,Q䣷Mjr?"| =ΚDG}]o˧ d4JJ񱦯E7q'] {2A/qY"!.\ݧ|fjC& ~Rn@1:chQO80B<%ޯg||Ћ]z SgW.! +;s&/6z|U%nPY_?H,ikyDpAJj֯ꡛсy!Si&T&Xm퍥iGX|R6@}Y'YH͕R<$v%zEmf7BG|JFHY tHGZvʤ)ZV(i`{ojsG2CB nw HgEY➺jc;mu=>oc敻UUZCim^^vR(B|L7 "#;C]7f4_жizbϸArct Ț>ζ>{1O ۽`F5+h@Y {z l ]!W|@ «H4ﭭv$@ZŢF>ĎئCɄ<Bm۱'Bիsǐ,zf.C]}n;d.奻l-@fji1.BJ|ЪXyKJyEo.E,L}T.oTZi1~~UA /[h PB֧Ui6=M@.J7E%Nt!yz^MHfG}J3LG2Kf}R$4ϋP6 1A DEYlU?U_dk42 }U4/GxB\tsYuwR}[i a Idkp0]Gӥj.+b$g<5 LY0~b!R..ΧD$LlGCTpl?^-yrȳYXN-DP˓lDʽgYf3.Py9^YC0t s lvP|lk"0Jg(TG@*= $@@S"Vw>-9"AVTRu3[Fi$>gn?/>w\~Gv"b2fU`X:5 wn-Q-LQx@dh1,\_*T`q,Nxm@!Ã)v: :7)"]Cޏ_\TLMjNRl LmGtS_ĄV!b J=,$&xip*C2 eLmDsV@/lybDrÉDnIܺ2% ԏܷZBDF/!ri fuXB* w!Bt!xq()qZR*"tlo>x{1x >~)wB)g-\q 8G :5|w +_wu RGc q] qW!YXЏڣ=(-gvjt@tŃ cU(a@=H|i`6mzdxF o~j ߿ >Scɑkd;;{;{ٞ ˔rIGf@ko DBˠ8 ,Գ ɡXb1&c6Z#!FjN6/6[T%m!piK*⟺8w1g-OOKu0' ?yOGcT8Puk=+uՠ_{/@m6. Sn:} aE$gY 0e]XuFhS$ϱuBtE/cI,xLPGgRd"οגX\riJ#;a= &@"ÈPϟ:1g(m ͼ784޹s?=PP]9|} or㜤M^1&8?7?͝:w1~U#@ Fu+nƀ]#CI9~F+i7uԷGS.BZ#IAv[#,iLOutcE*0O5龡E?9p@&<a>ӓz7g>+n _+e]T8}Xb{;7C!>FM moP |F vQRUz D#;'Ѭ9b-)]cD7~"͐@Z[ n,6[ .Z\G2O;ȅaEդJ"#nЍX7;HW钡^Q+%4R€t_WL S`G7 !}2io|7M/B„%yxA Q_/vBŀH0NzxÊV>o41m|w,z:8EO$:-oS,GRLw·&*ʱte <|g::{6't0h>;Hp#~V7Cg={=;|4@1VUy@oS/E9v6KǑ!Þ0QH~R={-gs 5_bQ(}OFOo)€H%H!EKw^wà7aT܀!o_N|+ KJP"XzZQ9$t+ ( 2(۬CWt@"?r:@.2k9CE$v%  ,[e% -J $bAf󁏚H.BQrT  A Yx$G歚6'l' !cB:H #d B LOAm #e̝_;Fq'nb!b W|mtZ YRo6tlu|1}B&% #zb9soUJb #z@2/ YgwdDzhDmbrH0"y[ OmPe7w]Չcl|=!P+§˘{`CXю~cX;Ew/Nt1`gZ@rt:GzBT~$O!^' N_ rVX1"t1`e} UZ<D,1`.@@r @čyNC"%^pҹ-aBdhQL$VYa7@tt#8dB@zQ2N$ntMK.>M ZN:ĀTd$CWc'uўXUߓ -JC=}K=x8dIMnTcyfOY$G*oQX 9Ї# $OW;C9]t^+0xm ~0F$zxxtL$ 80}z|/eNYR e1F- x0ӧLJ çD#ZK0V^;8CDG84$FT0"_4Cz !H4txFH"g@JFӾkBHg 4}R֧4rFb!b \VB.k!}iHdnB4H2(D^/hT]ICcH7D=uRH% m/ǭ;ѨzUv%ȒwXֆP\$>吉1u $:t@$J!-m[!ğoK7dj3 !R[co""1!2Im !f!2d"^ ,%|He6RXœ[_^Y 𦞚{_9BI-4"|4z{gq8?KjD$=pamh}v]kL1o|jn殎zK[0F8JL0y_/٪Gth9S>{^tz) ?_u|_AAAAAAAAAAAAAAAAAAAAA kj"x,RUJ >bg9$H*A섏\(,~x,ݯ H|!'g9Jt(iJҢbqq"D>\?2 (-Q~HP4 F+d"HAk_uzU^,+DeA3lS!Jn}t@‡tJpФ7CW-a,R(#W z8. Da1jM/s0CXD1 pNg׀B@"zYp(&!Nz ACʋwt9B$WТC4, fAPa@x+y>x3ARZ| Jp1Fa-t3Ƞ-,H*`4`Bd#$$E]yH׉`0:^i湜el%J^Fi@=_+H{^o/P^+@J É&?- <t seq┺f~b0@<3EPk{*(iQuvml6td66_ĕ-.lu5(Pha%j(DՒUp()|ᇥu,&۲"+dA%1@jkqkYTz-z.-ht Z=xd YQB X[!X`O?uN| uuZ[ES_H*jE#XE:?ٌ ,QBK[~u *J @ 6\x+bH5bd@#O^ ]MHwt~C1+>2%܆w ]yǫVqjZ6⅊N[6ZPku ,H!"4 H?ܹ+Cf^ 2IhLE4;,MKM]Ǎ\/lvveӯ;ޒAܨkm]][wG= nW_g'Xr䭀S.U*5^ʞ2U]}mS kCZo7Z kۊhZ86CntGGOf@EAwc& 2#gIWB/mSdMRarD<|& "> vFiTE?HN:mg.+Nh!JmchGj*ocbD p:$-H28ˣ Xnؒ_wkVF̦|=lDpQ?nWD"/_|ҋ?y!}j`6փ>KbbNcq̪Vg$ v .vA!ޞYq6/)e|(BP ̮Kv cmX-> yVݬ7TΟnHg\YyUN> 1"f bl/pP4m( Uo069%ry%\B뒼x s\xfkT*:ȵWm Q090>+9޼7A2wm j/Ձ} DF;F#b/ti/<\^C950BZa5ԫ4lSa%;pnWlta:4Xɧ0 $ h&珑d:QEa=r6>rr^&<C77_~yBh:_[ *6ɤ-OYiwІz0gU {|]Egd;0=?5BG?\!Ч)rV/o֬mek]65yChyx BK*YXFw{ށ3"EdtwՌ\h[v7>{ S5k$!1uB:_CO>D-/L ?{KS!!uj dU |wH= 8\ PL 0UiYzb`{-B~h+ֲ6p O&Cpx.!gDxy9~0 @Ȋ/C+\ $#y55|OlYG'v+_=cp(YrPx9z w{u؁c}xFG}/=_{Ԃ:U x43j/gq#1MPzC%rtbjr$K9+#m>ocAen %-hlwMS6?,d2|<׿9oM݄HO*yp뛻w~6r<uԩcItd=|`g֢5IWB0ɢ:Xyf a~8hnynŹjBNy ]g4~j8<3&E%~~drO2z[_}F<"E\mJ!֬zFXNan0dBb8R:YGC}cuc}mŞ$oٕG`}9[xu端n񘐫IA=KhYb2 }xqjOW<6w\ 9.ChO-.5~"`k@t:앧nɞ ^y2_q(/ݛ˻[ kbk9p ?޺s7ߍSk\6O'mx)SSm|=x%X@|Qod(տAۧ$z <}D.ZCkhL2xXkϓ+^'N3a{ tIz3q{ll$ȱ,JGi?nʰT@8cLq-LqBbMf!$?ijdS.osX5)N )x?q8~QA(޺A &Uc[C@@M ƬpdX4>E q˯m@·IǑߩO>ƕ\_Qm(<|š/vo)Ոi x n#ȽF+ł*|1s~C45ׇuRB=sr ƵS&1ͫ%6n$Z ؞~ЄƖe&nm}1>k>y7|\φrA샳4EB̅5F?_^,>m8uW>u?(|sa(b1jz`V~`s~́kk-QNDu{Ϧ3خ7Q̰uҡƌB-z+fߝ"` 񵛘<0~54sBwuc Z>: l8 pbohUcGz# ޻yivjH]++c9 &l\ͥfM$Y/fPHM :ɨJt aJ{}Jq&q01zcO%AWw)-  ]|uI%qFIA6^EH&R}{Zn$ Fw''7'ϼC6uK_]2maT 9= t ;_Lz|:do>=deK5\"̮EM$~'v )RY&}pTiqqIIY%c[  ]!qX7M`5v<ݻ;]kϰqlH42ǿ[>PIYɡ a:*E^}/>0K6ܦFCam?'sT:˝ ׃ݨ)ݘ=շڲ B9$ , Dx;_fܝ|g`hܺ@,Q ѮOKea1NU— g6OoKwkq ;B܅557'|K(EWyPˁx@?;wI%C7r_@ HdwnA+۰e7DBqg;v;oX\b(Uv4MUO7B!WS"ׂwPJb=IDRJAMn'EF`[d,XXف˚^{SҶ mY fX9qPjîBg-@rBO߾{ jTuHY:&uSN!d%j}J Z}#wL]NR H ʓj/ȼO5{| p0NS˟|f^Oa֥ 0(W]5#ܝ_D?"@gʁХNO_)nmqӥ9jE2VPVh4wwn:$>~7[|×&D3_Ye7U V< [7_H9Af#a2_wB 8 ) ,HWf)M\X/gGXyۛM.cpמ1:#> FYśp[BvIȊUsc$1˥QC_YAt VPd[&tiLՅV&? krRI,E"kӈY<- $ #c33+ P6jNPd?z33. <<ډx Cz~y, sr)i ćTm#fQeϹ{p=!+97W `Ǽ ~ŤU4!&Q Ŕ\XLIeyX9G 2mTH$W\T_s2Qqnp{h#PVhf"cezӔ@ѣK&@P8|o^| GL Z ))ik2LBsztLnSorM d<)CX~DƱ"R L!#Y0Gk(BbUWzsf2[Jy|Px!&oy9iί"rm W쀵%I7_*M"ՠQS`].%abE2s_J%zƫĒb;-=9RȘRyXW^a"% Klh(Lp{qqq|&+G8t4w·H#y ֨7'R#|s( p+đ3Ex~9OE=]ŧω'YTlm~ҟ<Ӷ x>ؙ;j<)>Ў*cswUm`F+OVm\@Rȥl| ]˾%Y s]zvc#RT{"{'E'O@mgJO!&O<{3%zfDGrbN2oKcp0/~ƺuoO)R4knjc`VP1 :j91ƼGߑtʮ; lYۂ ;{cr&b7##r_A*:g|Ћwj3W͕V.RwAD5%Cc@N$,5ơP + 5B{%>};9Ձiw18[p Oo 7ԧ,*(>_%>- Ѻ%HZ>!qW;z L_&ݩh62#,Dލ޾ ac9Q:ׯV9Sɔ*"KK\|:{˜;:,"/tVK!t#p[5N_mwn%i8WnD6H^Ι@Z@>Suf,6555hJOF"S4-HۿnV%feX\G<ϩ"_k:-Q7PmHNm/15 Clw}X$S*b+|GS3B5A* &?t^lsKDŚb})[N)R0}{1 T̒E+f+<nL! ڕsԶ{FX|nW7R_\#>N~~у+eh n "}PοAXLΨ̱->_e#r 9oė3lm9 >@vwL# zܦt[&dp2 { [RSPrI%:@Gtzzu}%O Y%1[8;_g9""Ka0^^fXn@9zHkD]`xkM~S]rr  ALji.b 2˻&˻@A6^2l܎Dbs h%NFKs@G!M7д:/^Qƨ93VqI1ϫ"D*`" c4xr\Fǭ@+Y|p1mS3)\H(ǘB*#V s{zXO+@hs.CX1_9e:&^ht_468Bý)K]OEsjvW@:C:z$rқ6@ʰAbjt˦ƓD`kO(cpjj U% HOI'm|38F$# pt[S89_=5G+)QЏR?~@60N[]6aTt c=qlc5EHٶ~4IOQw7+sL*+/"sTA eGCj>{Y흻(?`}))$3z| q uLܼ33ssbp:+|{>;QV1:./xs @ sـO()ѠOixF{Á`1qj8Z5"FζJ Aru:X""|xrx{Ͳ6?(|XN*NV|dQ߹>i(x\E>ފ!UCN%VfãcؘY3w&XmMڤwAxOdc*;1{Ԛ7j`WXz?z5d፫K+M~mzJE;H@jܥr/JqMX!F-HA)'R<ڭNӡ0wzVTiNxlE{"}pua cbf}) h2 ;${ 6I[.:‘+ r'-{6^TepBFO4֐ Ga'׆ r\& :<-:YWo? ՋS]7f2E1fUU5cxR/F P94N1|xƵFZj,זWiu MYk,S7x=vM3;5D\A^mӬݖm=}"&ZAxv| q]D21£(SyoVL d[o,S+8Պ8RSNDQh5V{[ clbJ(ZoFT1#Z{ ƧikUm͸(y.ax}C32`asnHs9jD3ZeV^Ft`rRWRF[[1,pkkb[f1jk|B,q9 O `\jQbMN/ ?Mgpݟ#O A3~Gϩ͉]ӕS܋8?C=EO($韽IܛڣOuAchpw'ƚ9ХKX^*wx\Ci5DB.HdsQYƾKkFNo0s5 [eu;wz I~eڬ<|51GƅLm dNؿ -ߧ{5V^csAD_QWwɥ`6@Z+xt7kv%1Fi+N ItfĶɃo}_cS-lasde 昀<7`jJN-HË2pU*Ƞ{闶G1!M5 }Y7T>yZЄ@*+yA\XgMj]Va:qZw3^3HǦ]bcPR^IMɊrl$Ďv-_S_ XܥmiV2yh]P?>5__ҵX`.ЛJPcyjjA0JsSS!\821%LF BP8ė瑻4/_ꞼSO⺂DҺ=vݱ[:M(?Eo\ TxP!J|y 0Z މ*@\J9x2g<:jo I. BpWp4ݎHN1Nilp@!; L0t'n 9K(bb3Эvh? .w*5.b$&S,*k Na t(9Ff˓9kQA8 RaႬvK3d[^¼VYO9|5F'c2.c N N\&-BF6@F`C$arpxxFY|h:&(dvU[B"*$0,9D5iX@Uh>Ҁ(eSfQFH-7(m^+tbz) E9+Ma-2@3fO Wf=X ;cVu-Jb6$ Kv:BF[%eZc=W^ OKUCdp`WGV{Œ2ŋAgXehB*-dϽtC090G\I|5N`B%h52ztPx\l,_F#;CX&^[|IOM!i б'> DNHc%] P&"b芢јC@SP+euS{ѕkK^.*Lv'VvܴX !6z"eJ";RkC L*yX=@=Q\%LZ> %hj(*g u:EP8'@RGϨ0:m\M{z K!L\;n!"& @9e' =b"`lS@Fn 1|NJSZ*9z,țEȮHӳ%՟772qv6}>w@`CH+ÂXG;!aj;D djqBUr5O 0Ff#XHwrr4bv`/o:MYUY6Bo}*b+h{ɽ>+\>晌K,ᇽNtP*uN 5˷~;8ދ?` ݂|ple 9r)|,4FoV\"ƥ2f]н|)N :o@"'="%Gͪ0~tTHOʃalvvnjke쓽m魶sîA;d횮-RVLL.-3IIJ}De}Ye I/ '+J{mDMS -C1f'?TLˣ.4G1u}yE J9qmfgR;b B!)Dypr/w?co/򇊗>[)g`0Mf4!j 7}M<8&Jػ$<2T:IzmI :#L 8BƵ[@fpRQ4Z]fBq5 su*NQa$9%b?J*@*cnLvuqc2ZwoDw8~[t8_WBl/WDw_|wAR\:ϛGˌPyu]R2Z5ߠk<5j0ڄ",H5E%Kwxdq1H\V9)J6ӯYAjIqcۓRaVwcr Q$>M \M]cD:@4S iey EcF=JIod +ٕiP=!}P9\_@ e~Osyt+tW8dT^^W{C:O'6ԇzU~>fCޢ!cR(*ɟku4_Qq=)_=hwKcF^`)Byk8/dbKh@u)w3<gn~/;ϯ~ ?K-=Lo%e t>ti%?|!46[nKM?ceE|X v!.RCoTxjG9v)!Q"t9G'* HW7j-[[O2:Y/%xX0@R_Pr_Tjh:E&bh$h3?MeVD$^vAO5^ /gMyžZ*QN >4wN]]s38QT=6-/8=嵝a ))ax,"ph7+zmv n1H:h sf]d))M6!BڰjP4v[DvϏ  i$g?7k@(>d` T2^GV2yE.AI)y~sY-t1c`๸F:2V9+,,!nc,ܻ` nPeIc,::M^r >qum&]P;tkUK:+yeTx|ĵjlFHvh|01!;&qN+:lȼV⁠OT8 Ο5pu 0XSq~L,)Dgs޴l8 eSF~mX`xR;2}XMSbeu,k/Se\Ԓ+ kf뜅n4^`,jkJ!@ҺaJ\$C^71"!I XV=4.W*5kEDzonm=.!@"t8pm.W /kB7m?K]"q'28c3}/ou >$"/0oeLhr)Jw o?? GZ+)AffC>yZ50ӏ5OT==K-Ya- L! JDzxn.7 +K{FFSe*$`A׳aZ amǣw&q)$?B@䵝@OoB!gxIgTkh #@nbS C"/"k/Dq^g K%oM>? iY4/&rCjcH dފ! B%5).z}Ե8'a/dk0+by{&nJmT!PֹGr%R.h$hBZ ):#>].$qq㆟l&K7!,v5c}Km27>}fxriR;|0vֆqA>7OuQ@ߘ+_R+;I]|sPonn ሀ)nG{(ㅔom{UU{Vw#CZB@zո]d%V #ܸqOZ} m>yHحdjL!-"fMӹU3f/p$hv%Iiudt\á] wuQy0!LE-g2;:,mzI/wPq3*fQ> w1^| d};6>^ps )Ec5apDxe pv>P-סGWk{h#6z1xqX`&7*f8e. _]@ivcW猴[[,/V"ď83էӤɀuzb% /LW+Rs R^>Xu=ǃckZb% f׶!F(ĸ1|^֬[T=FbTbu_&UYv}n{ywh`ve`[w' "sЙ0 EJ=G0^_Y ᑝkw'ߝi&= 5,=jOI2iy+h +@΃[5jE`Cc~tՠC4^Y]Fw$ X=84`FPEq}J=~L. =8=.Lyl#lAccL,ondr!^H0< %ҾcMEFO@4@\&َ NK|H/@7tuا?}_TMX'&Ŷ&k>.[Ds4Ƌׂm |,[tUHݱ&<'\ \rWQa0T"3Z'JX J ;6Y PQ("NI.`WAV!{?GJ!uIz: VN xfFי aM~:9hͦ"q'*zg$- PZb=G;9 քd&}PVa//mBi, AKaXx,?v=tk)DuN4jÅ@I& }Prcv޵U\ .+ u?aJ]@C5.I(ͥ~>}d3oR/.BV}ovRs%qʋ}v-*TbnkU@DWe8o?{isu(<1ҁINKF}Шxg_H%~T^8wZlnT{ %c ]dEWqFnJƬNDd&SS`Ϝ-c(r }qbazL*Fds!(Qh·#7Ww&xTVZpeVXG!>ȚX]lRl](}QI2= (aBSra!*N<ʻSs&W&ra;`O7< -`5RNs4$%I~fiC !=~~h7Of5;>w|NyNa:j_h4+9;˥&)B*`p8C_ކNѤ=%!> ;nCW':n~2]8Cl@&[Cn&VحW,\na qe svyZ|YbN N* ًq<3 Ilj*a_`|piLuQ^VY-#,aVbӊEr[_>,K4Yų ޸0]n(AH [MVNX{_L3wd4#ouN`C Aܙ_&/ȭDpw[l8?.%{}lʰ\oLVM2W)#\Z.y[}VݝkC<w4X~t!]"xnB=4oP709KcRZ&K7l{k+ 謯㉗ @Tf)\Ҋ!S{M݃Z_0.zۮ]YmMmnс%&,sEsqC~Jȫ]ȍY-{>f*M]QF$+=P"[)yĉjn1 Khk =Fd{)DGݶph퇙J53JHw ΚBu̐Wx+gGjI II YG>=.@1o\wi]& .zn!p: c~$<9M.!쬮Fp\S\y[lB4D@*C%8Isf[Pi^[QМVUczEp%B@w3!-Pb-%@W[} wou73jxSj4T8bD. hprbfWWKz*W)e)~gxHt\=|f  {`Kc7w) 8啃B C97g 6G*.GHluB:dXS`q!L7"O+=TYB L \fM%3̃Ǎuν`9N{Y#!8&TsH dp_U'D)L0e@ >Nr~,dgS _l#ť̠0҄ݳ8a^`b/ o%H|E+WGji;%M96=67@r"p O#07JΑHn]y8=[`/b܁\[= Ȋ E@@F~~\*FeF,g⠠(Y eLu1Õ@t Y;;](XADz/GچYqvH;k߽s%|?Ry[O8?oG٪p^% )WXдxAG|[Udɹxs:J6XFXc *ɠs܊,ΗO VaP&4|H#@ҫ,!${D#(9!fEzUVǠZrr=H;N`wJ/$Z}Kֿ%Y<>7,DG !f |J[+P"]I cov !prQL,=?|{A]ןy?4#<B7޷k, `*njޝo*]?3-+W}^r0わpEAH8B7W"XdOf|H ER-d[@{ŏ?>O?(Qh8uAsA&p"bdIZsBg ,9DS8=gEtһ(<';W{9Xt&;TR?wf<k,<VX`mM-g%[ t :IAK+~4rw:LA BN3~,DJf-?|'ƍHN}ً/ ƃ0}u=:.$l.d>+ܽluǫ&ԐgXF4x7RZ[4p]NcaЊ t&0?ې4)fM2MrJ0?<Ҽj cf: 7~$r(uMP3{0iC'^mzvf~TR壒lJbMPyu&irIEtсP@WExm}vM\tf4` xǟ,ɧ2M0-:Ҡ]6%>;?_Y6ȢC0q*ԩҳ97_22GvqzU2|'ZY?(~⏾ȵPy)m@XasζV\{-J^&s ɌzbLNJء]tHkV{x'7vg@}){*J>yo*n_JZ5v x.At |:u!PF"2&0L ))ҵ5O ^y qE]oD([t8i l ҁk4A|.87h;yBW;<2sRd3r3Nw 7ֺ$w C`|_K ϟi}/~~=U5рmH9 Nvo04q( x>`16ۏ$:@0@6_۔х  9\GMSSHDRsJ |:[;cL1j=3l#dAiHKY$?Z+:邾i(e=Q#V[ty367cxHlsKNVi{%ʹMx(b՚ !PwYOG(>fk yE5O UfB2:<HuQ5i[vb&ؾTF=Л,xm=ۛ>gkȥΠ-U&sRH2j`URv4#-5BFDxL2տkpUg._`[Ɏsr_~ +mfY52 * E ]cݘ o+}d]K( 8`d~)#Li͐*A/NHC/ Aj2|7-Жjr򍁆߾ʳ\a}1jjP`˜ʓ'ǷXה"H'oJtqaat ňR&fOT NKlt(\Ngߣjc.DYe$[Pn)Ĉb:*P9R_5n6ϣ)tǷsx}znxE9<ΝXjqc or+o^ֈ-.DݦKqpWo}Ynѥ(.FnQtbc%'jB &]@$w m t)I!P(x*Edߣ3߀+ J]օrgkR5^P `Xp3 ff+Ġ dIUoY5c5xUE"}YN)mg |9~Hދ}k{tVUA&v"8^$/Cu=ֿ]OtA0G4::&o19֑6|9 1s[:ΕAxE]ͅF/t7ެu|W3!u< DZ8_(|5H|TV"*S63/7B)!4kڅ.K>%܇Er1{ k+16B0—@ȳك؊J~ͼ}(5Яu}y5eXarԩ՘_h8hw?ϸ{#"r]\Զ9+LO:<5kFJW@tN(d7ٹդ 8+痺Id-\ιP}@8eC0?t:|~; YmC^¢Pbe^*#8\Y{l)ȢӳxP8bE}hd_0[#GZۇM(f2"#[|j$k,{)xEbau0q17ilQ 9QÍt%5>K~I324Nj%(}'@@]}KkB }+uܨ):jv #ma $ !@NcQ5+"Qr0<h/bmSӥ(OI|{,ԊoDp6r3Q뭶$"h)?Ofrz#rNڇE,8Zzu2gǡ4.[Twm[ZElXBfoVmbE])ϰڿ> (pև߅tJBІ< %biJ1¶OU/:.vwrsssfB{8VooM k?|x(sU:GΚ;ll96`Lo셙3}{uJwy0(ϤՅ--169qV;d7pV(PXmH!Ш?{BDѣˏq@KWd? _=/h=zU~0/p<k7vck,ea^צ ,*} t gQzz1Jk34Mfd(L4NbD:,&1P!;J@=9kxI6] `21f߅Tj6U o=L*j4ʓN&KB"*)ۨuS}`YYJ#\5?~]H #lC؄J/+Mɨ#9\ix 4Y8!zݐr6&86 K_Vɬ5b'lS}Л4wB@@29 :=G'@SxӇxӭ]]] oC?z nz~,?[J-8!m$>79;%.EpQ;d5Jd+y" UZxp3,с _ Mܤ?r>>쒍FOKQP3w}KYz+Ec18>bt)n49D~Eeǣѐ$W5Q I Mo{G}|"1\ɯ:Z |ء~ !.ML0cرTTtG^g9 P'uUـX,;:>}9UmA%h2^V:Վ(DOyZ/BϿRl4(e,**Pm~`3wV*`e6,ƹM[#dǢQEQY<ŜA~ݟsrCXehZe1h*?8C/˕9w!m;N zgn]ze}abmGo<}I ^IG«2n`IRH˙O -<+F"\b(nZ ^kڍW2X?{횛^MEIIgLA˥-8=R&5N:xZݟˬQ"-uSvnHuqvKӴ׊~w(t67ycMU FL!=؆<{5<ԬM{%VSks.{D*:,MǫnMZ}0Q" U)亙TQ1B7iz' g5h<3!_J8Ӻڬ ,pV!Qy4(^Rq9 rz3Rly?2NPY=Rq2ֱeF%8<(z yf/.[ׂR?g;'z`qchXV{mȋYgSV V2;ES)KN|L tݔeF 9x)S&v朞.DXv˃m`xQaQhg4"OZ'v~|;'? G~Q*d:sgNc oݏ'7z Y0d@rar #^(v'}ǻl}9=FEֳ|g}3 ~WW mz"‹^7= @^0B1&@8DtLp~68?ƪ5B[BQybFNjq<ߐk~UP_RA]4w?zgעK))鏒dYJX}jp?G8s'AsQǂ :CσbH !(5ҎAֶDVmZ54F%A+g%(oܸO });F~Ѩ+ې GXxw!m ,kS4I-tX!!>+F:;,iC?OmMΚ"W1FM# Ew9݌JE1H'Q rq {R);E{/1箨<"-[Ҝ4rE@)`3qRů0qH>fvIa -bhu>hЁ(eLv1}r`q7t,w-ݦW=B o. { Ks)t:cfo1T Lxf_/䒌ld0@AŲme ZX *QȡBTl"CHo߅g)RH†t۲ 8b֯:Uʞ@5mN]cR |ԕ]g6D aw !IH IdÞ'}LtyX׃XZ+ -j-LH>Q5~>Jg]59omMw2O*kFXca.H\9-UVo <1^/Rb]*,R5Tr}YZ;S^t!=yEǓ{8mC65(ƞܫD?pʜǣQ;p&Σry $$?!O22)3ψ.G}J$@O*E(|P{WMGȘXyh55o tPW4o5G59769:0g >{.bHO?i8(}y&2>>iDK21miR#-el^WgVaA453P"+kMؖ?ih$7gC)>cm]qW((UXut=6i[]4!ӄ44R`P>@A>D|BkǮ6!*8\3 o݂0!eԌ!m6mɅ.Y55]b9ak'1}k+=}I! Y5LcjGK3 Xh}Wv9Qw]M3IKՇOdZ̰O/y5d,Ky4  tp_3*["LC}*p61/bpIl("ӿ~BNU?\XZcKGA[I#-_MhqH蘫5mD<DžH]4!:/!>- 7`mXSDDu03r؁ɫ[Y-Oa^ކ"5a.ï)]IX56?T_Ś`|ѻ,JQn_g*dE3'18}Rab5pGkk惰(8d-Q '$ys@0нqi!Ahj~UV^,dDoZqL֟6Uw(gؘ㸓 y7;?.c8n2XP#K{RuuwSꮝg&҃4˪:e9x!六G!_TYm[b w[[O]w6]U/ B)΢t!W@5D蓰8~삷H * M[$(uw'_ozx릾?*<n@tcy*kfsrg0j^3yc>ٗGf}ҒB\iᄩ } "(DzfʣXǘE#q1]"][!M)_n7ób}`|#I[j< |Yr6-.6," TC#'#(Uʫ̶8y3ƫFNkL7fQkvtTE1<(:Ttni5D>F2gK58m?Lf!= Cׁcu,!Wp/ȗ@qi|dQ˱)R@z)W5gB-AΧ„e)F#k> wLLLtt0Ѥ eO?7]ϒi@R6@*eЄOObo4Y:]_V'A(VES eo urSu^-cL&"$d.:&8^.ŕhVSAGi_@ iX̠ T|prvkXmxXYk^U kLܼ93]ZZZsgNI҆Xyo //~񋏿¾} ?[;gVކ+k0ƲDK77i#+V:\QsRë?4uphK^t Gfvk7ڇG|4a50E`stti9{++Kt9i>>d.jT<țDL}gǸYZ]' ML =eb/~_W/_Y4-zF(^URRw2LaY{^ny)(2RW%n{~08,j`s6XY(6m3^[ ILf&]0ف̭F9T>5G]'fJ/:}?uofgZ{RXPWJW#q]E 6@ )R8iHvfղ]6RjH(osQRLz[ MONKp2=}}^R;+I')0>YQg62ߕDY -tԇ^yOf)}"5} /^QqH , RҮ>B|=rt& >(Brp W,E I uBS/ON`bb&oi6}OH"*tr~Ux1.68rbL*JJ/&^(GL1[K]Aՠ{ЀUpVQƱfC&[;_# C߸zu26C5oV&RGb8r @^!bx*+K+2X@3&DP%< "j+$~yPZ !Fh|mth' %'kS~8*]~YgSYCR6EՅt:kse*PuCuSDHې@R,Kjظ~G94D~󽠓27kí{:@Cgc> ( k9_r6R?Mf1}fܒY܇qvBb;3 Zo'V/څm:SH'OV~W $rwJ>p*t]u5rx 5D@`Ka09SyOhkA&ԉWhx77ۈuhl>~[vaаYM|'Ї"@R| id:tS^d?0)_LvZ>C&> \y囯!/~^4f YM&\~*\)SNW/wvhC<Ȫf`w!9糶;w;P@(e$%z-mR_V*1@(}f`ExV=tX\ɭp b9U&?Dw.0K,kx0?@}WߟϘy5Y^A< Ergz */(~0f;1.%d9P#Gt[էOU3(zu ll9 A .i5v\DPA[^_R ˲8v=o@VR52݌ Q-Hàի>rB?mf*I Y|t5"T|ŋNK-~ d\nЋ/ݸj{x'kc?y.ǽ@$s88^FWj#!"= U.BPBt9}>PT{iv6elן?Ol^ mg@DV1~MN,/87hύ/ZK`69U@_Ntl8\bS DŴ~z.B ] ?wJHSWF&CG6EWc%ܦ) /]%3aM~+ݻiםv|V5zyց:B8Mі奸8»E xљؠ 2_q`xKdy˼9GkAԫPNCb|G?S><|M5KY _ 7v{nH/Qc䭫A7!b'fJ%n'~|@$nCwؠ+@}DֆH!V:- ܹ;_ <m[xL5̾rO_AY'%Nx~@྆cE=A)8M 3 HBiB˫kf ZLG>z-\KfB?vE܅WWzA)i&ڢPN+~i' ?t(~,qR1EA&& ?@{@ZJ!4ȋR3VC/8ƭ%L PX!^&Iu[yCwӂиX,mmn>VL;]e(B 0~or ]ScMUESyvqANrRS1ǭҰY~d~IRU/SsiG8& w&B֧{qX 7`Reu(J׃*1+z3Kgm 4 !xul SY.plp@ R6>XnB@\Dv>pseqwa!B R1g@>~yA)@yu#H8@8Om4 Kn+V\/i\&(N0A>ab^1a sP-k?7杺È3;XuLdJ6[& fL:|A8V9։Dž#Sֆzjيt,ڻܖ:'VT[wO ujGmL!ůjidυQ轤y-H)B6}1͏5\/݈yl+ YWZNL!;h!撮|aRIJ7RM{\x63:Kޝ~c~juoǦ#4)=DHZh/>BwKAR \jc1@4|U7?V7/WLjfPL7܅6[3hTg5$ Ru!I &*B,N W7Nv#doO4`G(+y ytkH"XFKOn++Ŝ,v݃915$QM8mS$չ +é݀9 ‹}N566`ƈL #ϢV`Q6?0&PЏŨי*Om,*+tn`5Kl7|ϐŔt\-L˳bי$ 2>!DyP/5E O ?/Vxa>s?*D6jT@&2)jc d0?od_ӁB. _|[9$NkahͨBk jdgLgY">fEKaF,' Ed֡<N_ F5h3 z-%V& }ʫ6YFSTcLB128ggᥡEpxB2 pk)9"+,|1oR gXE r,c=kFŘ-a>ٗ>Y 5y/AIqJ0wrHރݺY2~wn.`4?5Ix؏m]Њ>`iNz- 8;Ea/{5H)0.[@Zg#[~⳶l qƊ"ɻ=GdR[.uڇ\n|iBIz03AgX% kÃSSb+%.; pdg; h)G|E] =9 !8G| xK^B1f7=HFѤ܂7Lgl,v d{>H4IvBe^BCe5U¿w)_ ѥ6/_76AzNd@5cѸ/9TQI> MM<Dj;ХS+k?Le2Qs!|Nn F|Hkۖ"o@(h;`D"F_|䤣dЫ}A0 ">w fm kDaYowZ2+9\ ʢey83Lƒ! 杵9:` 9IxhљA%&+JZDF;'8*/GyMN/:$/dAIgRD`eP50r`w;w;LxWo7&ki$Z2v!==CSK_[1QkPZʻ2R7_IXrlpWP(2&)B krHx8?9{\cAC ^ŁEjX~Z" *R(plLLh 2VpK~Vۭ"Fit( &{/Nܕ w~}ԣ-|]@r`` 7DtyU%0N_!l$; y@aYC {ByA_xUAǶ3BKZs^V;\mCBפU -"pn*W&4޼]@;XbA_DaH)@IEC! D}ω.2 Pr7ɤ1cy6'Уh~Z~?`߫Qi@>X1Y{acf/X|dc}F;- Rȓ2 K`〙yO| 2KM̪i22WGjvP2$}hыļ3AiP&c6Y@l]'1Hs=GqyH {{{cx Zp(n!^$)VIIqSZצQcḢ5MWkҳ74)zFJ ]3@Z3a ܖL*Z-5ǨWcpT sU525!HEJ4h(X͇YWEFZ_}_H%*`Hqe)xADpYK2}b.je \[q 9fiߧ˫ޏʱhFL?D9QfYzHҀ;[!v!%̡%)D*2J+ mb#[6%t"wrDca'u 6!ŗ@|-pY%!l_M)L=b0UARtKȭ,׷Mf0߬ SP]ɏȑ@e|G迢S~q*`= 逇g+]fnȡbU0~WS YdTl9Tb֑/sڐ1CHoHQ򰠅u׾Ṵ38l@Ϡ'J1?KQ)h ;f;^E`YBDw#\favK@j"twERMC쵀:tMp FbA,\0%W6ifQD0͢aXJn]c=T/fƸ{S;צy}Zӆpo=ڡ9074o+ָ4ɂH*vEVVE", w?4EnPIǥ_t78 yفP/Vv5⊷ Ww)Bys’CLwh.R93|Y&M3;)4!ET B_~oV L9jY3O)d˭uֳ 0e <mom>44%h՚1| 2TWB9G!.F$oybSx_;i9'̭xو/,-!.03pΛSĩ6<^.TgJuna>E/J9w Z.ߟ[x,Mv@@`ީbGh~+=CVU:uޔ?53pbk]>&! h|MuF^ DKSLbR0tVW8R$Q?so Y8XU0@=|0FK[qXFkKowan4f@,;庀2s&Шˇ+Z?hQ^~ss×{&681J@0=f(SOHc+>S*E}`$?@Iw!ai/uЂ36jFC-R[n*aɘ@,ti#G+ͅ%jKZS "Umlw₊j:J\I>9+xZ[踴-pm5Yy36~q? h6d±HiXNCFkOkf0_=ޚk_ǾߵD@f["-my Ks&>FEa{ M*2v7k0e6iɳ#1X2ZF2 .,!!4ߞl̩)KL>i[B'$pM)>j?FEޥT`[T _uucd1¯ )C@h߄n5nT(QAM-]n$ݲ: !@λ{So):B̯C闃*Ϩj23J ;EkQwH}XX"gQLCz 9|$HҧM}cE'f.&}**| ?349Myʬ^aGS X Oz †̾bNG,6[Yh@؇hDIyum=$@}aR*ԭ)I F6D MKz_)w%%B&9YBu$(B=,YtA~5W~)p7:A(7"@JACh&J {i}Pf0.APd#pq^S/_|)d 7W ;لl ә @F]lva "#TU0q`(3qmV!gz9tob $vvؖBՇBsRXsA0u~JwU*W/h4eVVf: ~u944tbљP4gbH(=Y{ B"ㄈ(|{"vnJ=_Ŏf i.B]_SH K-@xL: nJ@UU}!NN[y'ʤUˮX&|]Z&)v!Yb]>@N slnʘoq}TP6pބZV{QdfNf=EE!C dWz .ϩoVX|Z$2t,Y/E[Rf0Y IlDR74aA^I#F|OyıydN`]ZfD}ʺQ|VZKEE])rɠ3.ndqE9k̗YB0cpE2)FX˃.Qpr):exzSݩ]H{Ü?Rl,싡=%ve>ٍ՚jeqB&ȗ"^0d$( G!Ϫ>]yej9JTȺj0jiju1WntV0Z-!h:FcC\|uMzc#YxdTFck)XlqҰn+-Hjү]ոj}!f2 SJInj:qYcNV(yfCZ! CბJO8ӆdtjCNF𚀾_Lrʝ p1'.;YxG(sƩRqoyL$N(2՗t"c䂻^_422 h: qaqfSڿw Dad9+BN{'m ggo5}s<7v5g7^AiBg\vffY,6SmF'(FxmFQVD v& 샀#;Y؁k=iJqɺŚZzI96DP=,܀[F 5QQdR;qh"KQNMǧٲ~+* -!WWk! hdIփbYW8*KI `t+X3UTK ĥ*YQU G!ʃ:˗L!@ @Dt#chA&_D|Ea$wrMvCGHksЁhgg?%N76FHjJڮz3Mghbz F X@T%@M EllYJdQ?NUXDW ,(VFI}]/4i[$n0O2-UQPY8.{L}Qu E ϊ˅gEx.>6?(JF?N66 Ot*=$CjD@w=}FQ-['xR (%RLJƻk1,nLLm9}ZǟvXFr#]`Wb _De5 +6į/ڝ6[}V[EZ~ԔfFT 1_rjΕk :}Z)DbuyW,I -o9-I(=C\!9D)hV)/;H:/ZttWψjͅC}|5gIK(>:K΢:]EWaT=LS%p/fL?^._!'H!n g/$BY^*aE}4BތBrb8ewxDF;VvE?8]-`w |EV-A$@~>n&-{~ j GJ_ڔ:[y{%Չ &Hf03F;/3F 8o&#cM 'c8m2n)ꧼ&~F\)EJYe\+RCB\Φ(De~@%yсh?LcKB#Y*-"@}hIC9P4LJfb郯~_v, 8W|dU W1Ce1b44ƿ~ѤE׳*ekB^, q-A -ȇMCjDVXia+uZ,C7N(Mxv("㻋l3DSXkx ]mT cݶqTC=^SB&s;Ld U9r1D!ˬg@L :сJi-Ap{C#! #;[[@dZ/5{& +);-y6%zwq*&<% OLzkOpr5&}'$l$@Q w3LFI! v*]Г#];KC>6 ,S !@p7 88_\Q"=хSuM΢Wk؈j5!HibaE2IoarN͢k@֟57%F_Tk7G|y0ݺ:!&Bg bsDx x}QT{GX KA/MF]~jiWY<5uz 3.e>[Im1u KPG|_.0n1zCIQUX>J,2Q-U| g|1o&^Gחp0scB(5% 708Hf;AOυnC%}.*B^$}hty] c|A"*@$^R|q [O +tl.Sc`۾x4ڡTaAf{e^WI&^٣MXP`YU^ v_N T|@xmu9^٠  = ais N!"o/ܧS+~|,H1-aC !ŽP^Te2{vffW?wӑDF԰X)9wia?)%e~L$@i[^ֱtUC,Ta 9jϻKIY!uwU9Jˏ&PN?"bw[I)6qMT_zs1`xZۅh C ^?0oN X oLm>~}|`#8tA~m!<[lH<:@A}/@$0ѝV7_)xHp{ p{z]s>̈́{!aѠ,iwG&zVČP6ɤVFU5a+$@# ͸v 0i@Re! gN: =jgobaڸRT@5O!k :K.⮚'g8[C3(R>\/@>Xudoa-2uøFC3ƃiXxȑmd,ҩ #TbXJ0n!J),`b#x 89>jWqƨ~T:pPiZWIvSs%흝5^ v"|,pudU+@  e|7?Bjq4|o=C!@n%jd9L&byv[Q~O:VkZt+dpj3/S,Ugova-&9p"s43,nd 7v$A?vtikRVu}ccc&٧teao2O5=zdԗ~^ɻFfBp4 ԹTkUvgV~!{0D™&@d֤n2+3,7mu/mGȍUOѯRYO)MM ˹2g nqE!Lp!rI7LU)n"nR">bS➄V7@$: N+K !B7+hpTqR]h:rEu r RB0 :PխMN H:*4gZZ:jJe6GKuź+\Wguا)^ <;ڋs0W?ݢe ;݊B'BR4v $D({%EW<(YZ4hon>ugS4+ͧ C(MܜS_іP@ꮼԔA]E5+?ጺ%pjj%i1X?Zu6f,mXזּ0|HoK;Q'#|TQ# OTor%)o-ބ9)v@R#1Y*+nBB(k9cBvjsX uN;4iW w78YHJeDBlc2l" {B̫ܝJ!i)k P%@d/ѝ_aE9?H}[D'E&qO6EוOQ{$\JXvq"kh+avNm?}~DENC ڬe،wd 4 `mXtٹZ@" xnU:xZW"@so10XɯU( (ti+wz./Z1yrOqnHjR4Lwu}!ח%J,nuj0$3[lC#,smrǼs%pJ,ȧ(+@*' +"h Fq}9P di#i@?~z$LFr5Hk.UJ"6K3"ReKǿW4<,3S!RH^Q>5ّ.\z R)(j|;!sUCPҋkJX$۹3KEf=5tDgdRO!lA Z? z5E*C]yׯNJ!.wlr,%eڻO?D% {)`(nnpٽ|Ӣ1/f+m`oe֕g ÷B>2MFʑUFӧ1a.̈́L 6WMD ~M฾RƔ>cu_.HGon i(+?zuoCIY;0ZwfG!+Jik. M|["JxshMA:hfXlKE@ fّ)K(xd{oA: ^t(؍zq(`{~~t")L /Π%MDh!> lpI(aU0y )o^| g0+B A7g.GC_:+!| ; dhQ5Ta=\Q嚬d"r~G1O2| 7#CV9췱>"u|o' "7ts hwd ,7L>2A*~X4 \{#=`0-Uczt],@|P_J&yu9g}WO~Hi&eV $ez ǟ_"eby)l(RTckSp`:Hrh1б81X:#t,q99V*s<0ctR8[ @K_Q5-[gW7WKekv0q ~zWMHqB1w(6RJH_3l:~ ?,Ѽ)tO j>q0N*c|bZyK5络@9wN\v N,=>0SP+NZPޚR1Ї[ֲ{G&灙1Vu:ZQ^uU-%/2> rtZhhM[1ʹaiRkAؘ|dbmCg^r>f V-_jB ?zζLRȯ_")~r|2¾@pw[HP~ףM70mfRUK{djNBh} PS_r},+_   e@yVoh!qҘŨ׬ivIV7v! !7,t!za}f0^B.̶.ʼnM/~PLDŽ*t',:,B&rcC ;ܢ+7>h]~agW:ٟ0 /l~g rzDe>Pak(iA)ޟD(9-. :V)'Ń P %?u !kj7 >@ΈF%RTM\: >[}f:=*C:p}}M{yr /!|g͠*WCUV%Dp>vJ3l|EF^+}BMjL@ ~H2<ϟB_vK<&e9JM2u(YU|\Cncc)NJjFb@2J B|>y)Ç-ܜ1&tGfǍ"՞5Q wJ h֡FI=3,mSG8>3Aub2WɌfC(d qW:l{W\TWU7~%JO kD`n`ۨ(G? U!QVΈ?U*-Tm6Q^w7[l^93vׯ2@>O$o6tSP'O]kk:#Hu-PD)VRȳX]n7nD@\ #\t(\dYhh*4^d鼪sT$nHͦKG<΋D qS^1Yi)ğ=S[uo@'ߐTO(w͵oL_xLl:,|r͗O|,и@CdfLw0#=R)k=32oTE*{-شt,Yj >1$ۊ؁|pA?ymtÍ|~l[iֹDe;tAEYs3հGc9jջy1Ƣ>QP @Vm=!w@;8_ Yݐq Q &[Y νxajhOxL!!-Gf'^v1%ujaa~=CPIڗSWCy>0I_Ÿ¯zb'#S,+L KH4*.V._>;OF/#TsZ~G 2Gs#c)eLyÃXSmM0a0j e&RpW1r7Yݢ RRp5kϤMw?`Lu?]}7w=83Bud2;CE,Xνvfg;0xWTc9Bx?JCrWF:z}NM5d}Xl t*tyUM'x6a/)o2@]zOm;F3bjATJWO,ۗbVSm̍zJjћ\EDŽf/\lȿN3r۟o夺G׆|ZƇJί9 cO|"1oPv!bE8.r0kAܙ44;iBLd qYD&p0Be7 `KG(DI|hSI&s]葜7+n&*kNl8xش\Y$;*D$ ]bTф0D+!L󑘾v2mv͐ZF{,u{-TCSв F*DASD@D]*F9`^WQQO#, Ot{1`dE^\y p||I1 Ilͣwɏ+!ak!MWm*T6%]8Xz(XSbvK|(Qڋ!x^`zn)@C{frFCvnp6ϷQOi&I&o*QeVz5$DS{P!EOdC7bL"}\'Kg?hy?YVvնpQK{ޜO7 ) :Dt! #9`Io@I]{ECz/uy)rm4JRh=5*=19ÿ> M][vKFܫBP<;D53(Li e Aa&a䗻mgOwMJKmT_\?֨X1ۈ=}o2\~˖woz$O@Đٌ+v8biU"mTA%ggVM&H(i/RyуهsW.x F@B,$|'c,Rҩ XQpn˲9{__E97)sWCPc)p졛ns:g7wU:2TЇ1HϮs+Ph\ƚUCc'1@yvrUG=9ja*Wa=ۺ&|c*fĭ~q)5g!x9ZBQqd #@S/Gk>o'߹j,"Ir\FsW4^AtovFXG1TJCPbC~x~#3I= {d#%f\dsO2,V-qyCXx)˝ 7R&hA71uhӛ=LTacf<'{[-Xc^}1]aQ8ǚz|3v;N>-;*f{LU9WxD{}XQ p.{[ec2cB]mџSP>=a/RK!b!5KCY1!0wMo\ oOM AWAĤ.KH1IޓdN@쎜([. 7 TˏB(hgDip &e\ xr>VY#9``Iy3?BH\$] GkU]EZOsTjBڠl$2ѣckx22gT`m@ƪD )k]QOz[[TǗ<unwd痿Ni kD@e >զkeiFAeFdR 4V׶ڦFfu6$Ź=1> ฎx65/_..|t/Zqz[hQT%5@(ÄH޽[)y]n < {#qGݺ\I"q- b_/+{RB&V49AxbpDQ$Sf".ڝz3B k?$ڙxFR+~A 'vvdka䫯Fΰ]ZK _"᙭$KK۩z aGdDSEqX!..+IX?6 w (f#L5vt& m vTP6#׍R?+5JLػj͞H$em(+|u`gէí;X*I}b"-߳bʘWPž6u0xX_ϒ,["J7lw=p@muMoS/.,)fytD<O01)(+mLC3OR ~z,@CJwA&) T)07TCо[Gӣ^Dd;:S 7DПȺJa~YX=kDQe r7 QEJ 0 9p{5YCDMq)ڿe& 1tHm!P>Fr+҇^*ʅ)~sǔ9"dfG1Ө:jMg'XyXO\O1z+7E @|^o |''Qh< )K 7Ey[c-2W';r[stlHCsm=T*!UU!#XU|?#/P~^n5 @hj<4!r{6Lk͠!LbNA~=tyu90~xL?%$7+biLu>.y$ˮ|)ħ=mܖNJʝJR$Y)ogТ($jS@<5U7BgWAΈV͛u݇~&jE:p=T$pR+Hy=_J)h9r?q gtp&Dfdw6d"YL h:vőf۴J@%{ A .o]^ |7INK,N=TݓtYj&Nr{UDX4\BGplҞ}*ŲF Ae3DwV݊rhrxJřQc˹#B)ĔN@aL5i撩~ =|&L>3\Eyt^@hX69K3C{ax>ȰꂄZfJ 2sBɟP4X|,3|^{҇}##(&4Ƽ sۉ!~`hӗL9""]ĔOʄ(yVNsu7?L`,$~ՇO,қ1 SBg' ioS`R@ >}J ދ#:]/Nn!F9Yw :S xTv4VAy#"sIy[d2X|z~0܅zI{CѸGX-~QuAb!<u4d֎~J jJ RXk|Z] gD )z/ J,3 |7_w@9N藷ǩcƯU rcЀ3) 12˷ yړv'!;  |L#Y5*/?|&ox+Ɉ2FAH ǚ>2O }7uA8xDvϠe[Z@f 6#ڡG?ѻX}y:קb@ {ea͋l a(M3xզE,0 ;HrgL 3~ KҷO?GʑPaNr~oƇBGM} ,a> *aXdC*4v  #aҁui Ħ.]#Eo0$ǵW#};}ƀq=|NqSh>AVڍ 2<(pfa@QB"Sku&CBG8U%dU MX TW%.;_Ѿxw me1m#_xu#>Hy:N.i=, τ;Ⱏل֒mLFq9?4Wm$s{dBNؙ+O`[XMM`X@(KֈV'$*$D&F6* HZ~6ML:4eM{O[ZU^2S*2>]̜6;P$0p|@3.i'_Hb ^罫_Krm`ֺ/(!.)>Mz38'P7RMȲeCoG.b)VXQ(.0ZEXDi痊Eseim+фEk\}?mFȑy0N3ڕBRk"p~|';` lo-NF &NR6ቘI qZtJ[DW N"f3 ) (5%Ib̪QwʣdRQVV_]R5CDY)7k4bTR\lHybGǟ:Blsy ǔKG1aEfS!D9moDGjW%$dBeLNMW/{ C}[a{hɥP߉ @Ш7%QhFo:Bȥߠ4ꓪN/fpi!D@IpNfU?MU-DY K[iN)7] ƙ'g%@%Ѩz+X&Spsԫ\x\7¹/ j )-u[Kܞ`tD`/XaDO vHLGל.Ζ~ϩ/楹9r1] qۢKezh aXM ]bJRjq|tҏH&2ksm[,"XL+2So @y&9F*npF7 (;GK5-'l@3Z:-I , @<ۿӍ8~BT#Ķo%]K zʗ+`. VX*bS)׻\n(V9"JK+ obYt-N.>Y2ʣV̭%O8c*͖h>Tgg;lHS8+:'`c!7 :M#wrW кV5%CԲ-"Gx%4rfzc~XzͶKzctPM1[SU5%qh~]qey}rr͹짏YL/oE->3=Gb%$9oJ>ػy+J1jՊHܨs䚄ߢ@O&eѕr3ǿlzi0@RCw 4nQ+>)PWUh̔јwP4{Q]"%Lj ;7Rn\ӈֿF*Gh%t y3O&/PƙJjh8^n2 2|J:X/ۆzv^.'vtmt(C =Yeխ$@h4m"++5hi d\ʏTXl/*M4U(2S\En>B9-os3[,=jvۍj|DW{5>ne褖VUP Z}9ć̛)І4>a0BSCi3>RWTiW9@.AN((8TB:'wa;ZzC21iu7~MѰIV] ą{'zb׿viF,HO0bP40lˇz}VU m:lH=wI,?X$׆77YsPO@@>w6JX,T$C,֚Tn ]ɹ] :DCTyz>4SLY "~ >\:ُ'z{3r}ĭMEw|^.b3fX!!N2Zٟ|拁o*-,^@bA#P!:0{߿|UFwI^H/IU(ݻݿ3֑0/[Edv'>@EUP QټxJꀿجNg"?p}39N rLfۇ1!L7Mz"!oz Y?cD:Ӫ 3C}K*bl= @234+7\FS`-lJk4n_7>0Dr+ą0 -MUZ'bIK;RB]7B ,; tyPypm|tX}g[iMHÊј* df}L{n,.!P!Czgh 0g4 XGDH?h_}v~m!R>j%UțtT ur.57J*2ƐMw{~zG/}&y!͗ /<!Ib]o trۅ&f:KRrŤABKI ByD'Sڎ/>›q%Mvzښt0\X3d4"88 $\ݙ*Z' nB,v]|L@Μ:Mm*o5HIFz37KS;H md}8hxA<[ ңiz/*gVD@~;&(suw?iZw3ѹ==(_ -{TqNQRQ(B ;`Ӽvӏ7'Uڏ}\dPIlB'.]XXqDXS59ͩ@lzGuv[}t|L%2 wmbdBH=vbb1b ;*ytƬevB|F1ߜ𷲄YdeMP_0Qbw[pC?a5ԗV+Hw麣C ЂC JƉ]_3sP!Onndii9҈o2Be$z;? +kޭ07f Q$6-|Rf:Sa?}⾊!TWbh/&)budʲ$@ZmÏ˪ATS|Sdo-)ȯD87\*D#=W#7~-; O=xzVVSU)͊W~%b&Ad|Ytx{+dp?f&BDB{;,re] >0}<W.aA.3YO3CjS/ qV%Y3 ʥ&uNl~ u>|!)%ef{UO*:3z9|{sB+7(RBJE)Q,+.ItU8#uBw jun @l > zZNmH!'r^tD, Fxc1H o} D{?=ҦdaI]%eQh{UĔ<{k8Njjw-`@5 K!`jvyTŷjof ,S8.A0yo|uM;bN7eoznse^⏑YJt=Ge >Fe[kL^a=c&=F]HO! (mN=& 0@$ xYPRoߓoM(fP1SK;Ex8y˅ *\ 9v Ohoeq>o,rS9t{YDNGG5rɼV91Peqk, ?zׯ[*KvSEMLD&gn )/Y9;"BA  \Hq-^ M/n,.N/eƻOtm)nKs )Y_ ]^D?'@Rcx$~LM,s ̫dV # y&H[ڱ_xMQ:[/pG7Ǩ2ZNlfu h?ZCћy)'n!$ܰXmqφo 0NX cY pBPcJOn 7il&[_ T@ h?:Hg %WLpQE LYddrMЄn{\Z,bNt?i*@^ _*8V0ohӷl?VQ3{c)@/7(} X*2bh3 Yd3E"xWǾk,F_iB@u m.ϵѥ'&/.a%a!d1Sԏش{6}سS6rLaWd`wM+/6D"Y@R^;CvXZ5Pw~X?nP@"Rg:q}u_!mQ#ΨCDZ_Ih.3ݦ5Vwp{2x{Dr~g1cnc-e a*:Xy@W|΋Ý-^؆#?JxܻBf5@zΝfʣiaa~헯B\" WI699 0:7"YRhM,3vX" .CJ6o{oPD";e-?7 QVxDܟaݗ'O-&OabƵh kaڹUٛG|ؤ߷[eA`|7_M[xYL]ڒO&%h9mޡxoI{甅9!2} O_]2odi!]U$q vmZih镞3]@eQ\Dَ]9n2H !ɵ Lt n$?Ƌ(#w9U\rP7 WP6SxY5ʹkwqoBXꇳYŝ<{}" QawV QADK YM3%ʛ[{b9fgΩW.U7X|!?"䇬X/ )x[4Pmq?%lXe^-zk.|B0nPV 5@@9:tԯdbEK͔KQO]$Da5c+Iljk~$dwq4OSX{8۹P! ?yH0,DJpſq[GQijy;zD#H!iDޛ‡D+2'o>nS4|  =(T6ԟ5.}"E…PiWUjV?S7C)健, )x۽T/Ud=cLj+H(򿭟4D40 3F鿐l}c F|EXOna8+Sfw:'V_R^|nNj%xfƆ#~Nӝ+aK=t!zYwqo`-oV7&]j@hHYNql9k6;_@6: D6]~b q# %o xvv Z4@8J)9nB٤ KtZ}q[N|c/|P8%fw Ey/wtb&&@؝-!%ssi:{X PN5"c53Rq`16,B Jo9_eP4|ռ5‹ Et+Yb񵊩s-+7 /_ùx9<# ?%6"6 KS_8C,mb5d}h'ۆI7ozIq/oa⃎e-\L?_rڏaIJlrVTA:*Nڙ`-P"p3!iEI(#/dՔ'V6HD,JD(dz2ud'7 A^(@L|D]WȮgp=+:Ea_J- mq2\Jo%e !I[dTcMh*b!FLV٬jrDlv3X |J{xNŠB7OWәkB%ֿ"˼&a#?/"DL߂lIB_K,1Mɭ;Hh;Zuv'|J $ؕ[@491ߐ\3= rT z 9"6"AnÒ'͹Ç6>LdU/eXM;\ݤohj/ /|m3r:VȑY/^R7G4HC=gw&ے8ZDw. B٩ce-*Soy;:^3VLLL}M+yIMf(z(|L1LM^va0f$_&| v/ ZKhѱ;5 \$SHd4C6HE07b|aƯTL2l Z=$:HaYMaFiT)ZUyG-I @ޓ4Ilm Nk\E'Ve%`zЫ*)zkT>NoZ$* t IZ)uS㥥U!X LTE%)CvV.ZWX;jnʏkQT`[m^'G6pYrWBd1M]wtG# Fro"B̭P}5W), s*}T|d2(4>yKo3W>d%uu(QFsW'.^7\<`/+\|Ruiuta8#X3,YlbFFxn C{*`H8\ފSFWZf4Ou~F]"9qW R~Zdd5!㢮}::$HE4>fijM 򻚻Ђz׶+7NeֿU@ ]ٝi!fދ82`+R(,-ĚSݛUBYūlT!7<-GMn*Hi ^rd4>sxI beL8c&cș7 ;GV(I&!̝-ZN vKUy򉖝lD$$AqCF5>'$DWxbzY<4E(/nV\b>2С#RˡzF8A_h?Hr1Tk3H/bz C\}J|C tsbtXJBʈXdRZE-U %k44V:5Ael |:JR-p:OJNAS^r jIEoDnR^-—>) A((ʲ": ;Q; q"4#&;TpXa#/a {4ά'.^vD:]pM6HNɩ`i, :tk[!2ʧBpD1">t>m/UZ d>s_ؾEmٕˣZH&#Sbbj~WnIϜ&@hD0scMf#k"Ө"<M !'= [:d2U@mgNP8'C˴YC Ae321c,BH jX=,8asH!4vȣ5]CR(}HH'@Zmj4%?CowخK ~%Bѡnlʫ^<~_A/עGi1_3l& b=XXI<";9u5L(pmbpP3mtCt2 ΰedW$>R߂㒮 j{w" k*ȯSY*.J2~>oR0=۽R`"'OgӰI:O t֨:|G@֫@?,1{ K8&ۆaov.|5,'\GWn~k҈ϭ.6{ɉ<:B%,\$K>1.%FZe׫PwU׿<+@̑ZG$.wR DMvkZ<|? Q0_ HRT9L^٪Mɰ'tV4>tCNOkp_kb),iG)6_CJuqRfɞvD")aYiUY8v=.:2L&`*9ab._V#c?F!:ۅ, lR酸q#t+o9uȎ\sZ1|~qc1đe+0iTd>$oFSs!@{RPܝZÖ1=7 0 d<-xLdG 8AsuuҌ3BPX/x, ,(*$!w_l4RI mb{Ԃw_o+G4qǃwîE Nygnnx)8pb"D"7ɸ? ~OVAzok\d!IgXL*dOs\15ݢI@rEB;2[N@W8jaĎd o/ȣJ-R]QS,+2:>I z9#D _3z %TcRC0H"JzduW @!sW{ƬzBow#j ZI8f#'Tۥ~ ixs 8Q h@ A%iu!tѭRae/,WCV,XD(yi l'8)JQ[RFpvf ߿wΏ)7;M+Rh)vE"u sm9\(GxjE]$G`PeIRȅn = S]~aiOj UG = 9-[Ȓ^b4>xr7oc-WQR|@i#Hy:ya䋰h=hu 6Y3` ʑYkt ]{cSx($nbz<>HfdTWLJćxzeYy_)IryUAۆrRsߌbXlU>GB xc.Ė j뤈*D:vaºOXeW)H6}lw`*WMJy{6G]\0))W1jo]6F]τ}I`#Q(H;sxlBsd/:R7]t;@3s9  %r1T}]0LEoj"AGV3,BEwII'@D^Cg,z˄\ԘHr@P͵0bɀ DCH%@nf2Tgl;^^Q28!Y7xNOhCgق3ԙ nO+uwd@ ܃'z=Ȁ[IP|y D6A0plhZC2N95S0Wq 0{=AªSGX ;rD#$E6WĈ<gf4kàЦ<(lZ<(^kucd+p"?P}m+h+rvZtD}} 9l9׎UChg#up՝XIsc.q6ɍb*XT ~Bii @۱ֽjo|^4wu73f_b%q0@~Wq b*)r~reEÔk\œ]oMt/Z ~']G5O_[lm 9Av?|բ9nI|sJ!\n4!p-Z'EUA[V'.2-uH!dh@ EFk\qHY:>23^!Zn|+KωV $zWCg{0~E:kfE’ ho<;;jAeu6ovr I;aS gZcMpze뷞# 4N[g$^{l٥(ôNz.iǞfmQq@A*y.zsKzY f@x{ȳ{|Hb8?8}^l.w4#$WOCTiyyy~i wT=o~R:d`~)*G ?mؗQ$pw<߶y!被`ǵNlQPK:&Vs !RYT~ b:_aȋk[[O*|k`3]kFpn <Iq0Kp>RS~&b6/2IЃNIUlI܄٢ gz/>:F)P&qq!P5ppv?6weեƊBx bDH M q5]M|=#T/vM=pnѕ2(T9:Nм̜O`$C6$f<0U] \ "aJvbѺ-7 vwe |0Miʞ~27ƄBZ Mdgh{%@DunZrRl&b`T^7п$D{@: [Wub>Įu;d'>V2n('!A=tˊ>Etq/?  s/TbeԜo*GiK#>%O)\F+v8,b6*j,\7ldm*s@K9_7 C=e jU>w<×ٜYPv*r ܣ´!ZOCe@6c<~厘dX́s0lnAaGLu?:”u ץXlYcbР`A?5jCrvmET_ "H@ zWn__n@&@l"xaI͖KTC>XO\Ip 7<;zcd}]Q{qR GE"rpܑ:鸽DĦBK(%rhP)zSύV`Pce%&()zCfZ㕞MK5kԿUO2)ϑ!=, !rpT(ۖ+3EYfQx-aw" ͋eCDTt?VL!߂;{ 5yWk.@8Jw֯ >w©ߵ|9wXʪ>XH,S%>!F$HHb,E5$#L޳=/;t d <\:\8t@bg2b_IU9 ȳa&/o4 CZƃp_Iqаp "sv+pt FcCx7|t81"V!Xԑ*q&Q6=_NPA\k"\/$D|÷#QK6@:MsILK*ũY'CZuNt$ܨR&L@*G!|+˼]*>~D޴ bqm K/4zdD ą@ݛ51Y˽J[ȋ;*T1q`dvDa`Cry:Yus$r}DQ(7[^) "5/UUHСc NO C=8><$ 2feǴW.B4щGnOD[$Z̮Rَ];I?x-\a9|P' ]^OZ/_MsBV:ْtq !keb^zS;JmZ̰AؘoHm~՗A0*&T2)@r2TOB5JGV[ W: y;Ʋ($(>ǭX[IL;z@hn,¢JdA4NereZIw u/їm!=v 8m DD {?k6@">dy(袅q$+L0 BSh2 rB?@sW@^`n向5E8ҲԳ1q0 -.R^LzL/xRne-Y[ϙ}klsn劐{TΔd#@X(͍Ʀₛb@kᴞ=@ᇸ2)Ⱥwmjtݖy߻FJ>קǸ; 7HZ&CH'.Łes{.[Ẏ9aӄUѫbD[Bzdida†VcOf)fa=[5Mi@o6 a,t'[, dmhV}$? aYRWCS8o/"MQqW&+aW& ΰ9؋Lnt &]Xk5ǂi*DwDJ1,K)ȈP٩M5%%\**Wosj~N3A;s@Z}ܠaze= <p/G%ۨ-bcN YH=%Vxk #ј6Mo~-14RoHll t!FV~lzUЄДM~9i%j| ]B2N*RȢsBvOqe.Z-xL;$yПlD}M4"ss^tS.myc>&s>%󅴏+S!,Zԋi}yoe:`8kё\ddp.+N~??<HIzz }2aw?:D9(:]; h!O['&L\w޳|5?<5_T랳{vY_Y/9U>AdCK~ti|4Y%BHFy y7 *jF Xb ?rJ$ w&M#b)rܟB_KIBY+h1 su,#  Bz._mɯMV$ 4neI`WeVhCGc-t@u(!bVfP焜$.: |z$4HE;볻 Ñ2A $B)(c;!DS f@x&QGCeA|xmGzX2Kb8_zEH㔢lTqo?αt((>|oO(G Tv_jn Ϫ>4_SR.IiOo bA7r,V!:8z $XjuB0ca`wLcdf=QC-v30WԶ+%2lc?_/+Mm^^ȼc>v EEƬg`AY +&@zSҌU jA`Gq1GEH?0 A+!nzYѺu(n7'dzR#t v3W5]ćGhƘ0 |!d,pknS !x ߻ol  4 _MS}ҫRH5۝ Q? 1!;T,.s So XrNtgbl2G& D3&E.*;h"=<@x6XnK B ,]-о(OgۗM =8?}d&v5SZ{cA1b?#MWXlr:7vϮPߴ{Bz^,-/*"VXU#C枺E`g s^۶,-zlRoaaPLαCȘP3j#a6)#W,0I'i9*_ @" G` QTQAGzcs &4A,EԆ #Ak#n b^p@CM_ B<'Z,fVz܋=Y0 ?o9O:攲J 4#A|!u|.9H9-=dͣSOgV̉?ՅhsCOa 7 k':r e!@[:=ЀX ̰XP`HK}E] JHVi 90~ϱ0qXf{._m(Q,}V>S%ŇLV*& !~N7S (F-f@K>Km^uI4]nʶܣR1m{TZt2 SocUrO^d2wª` MiW.sϝ켨J$O_ iuv˄Y 3ctƜ| C"osbzw#=5j~0"_y ZG% A=~1of{*Pb/}_ Z&E$"}W{z >>7:co뼸MP碂CwFž I۝3?+FLI/S͊_nt(M3b67Ѯ{,8l6l AKʸa}+/!|2L Hw\\v1^Z' oyfR_AnVӌ ȥ|u /co:u̿BN/E]c$#=Ӥbu<8ռF\ @fyqK0'eeq%d\Zİ9:WሻQkl}s~L?aZy 1 {Auqfy\.6uS(q(ٹ[H' + H YtȂ" PA#W?I f{рeM/߼+PAu8=ӧ%@P0_HywG; )3$϶QsR԰Q:h|Ͳҝ|*ݍu$ w,% ?*0E:@H\uU _ _fF F@@W]8Y`fwo?Rphhd$, mIPXxpꆐFSbm0ה KOɽc7kwg?EYe0~[ޭ2F)p:_߽ @tGqws5>ARm;Ԁ A"p`G,p@*"x QV-Nuǥ]#Rx$=ͭ €tjPuK5kk |Qh5V/Xn}}B p:W(,cz{0ǗO|9+6@ @Ȩ/ӈ[,4z];_P*Dh+}T vggY, δ BՇpuq\j_$ jdܯl@p5$tje<̻^s~O).ld|}eV48W,i"̍"<8oZ>su]ׯi 4XۗM4 h\)˅݇PH8DTw`# ݹ]1Bpa׃!^y~b?L̡XCt%"(D}3HPB$'JC^VMN':"~ ^uhWQ.RtP TxIL1(`ڢ>W9V[]5cFo㸲\A?ݣ(?j 1uewi aKzDjFU(8"> K Q#@(JMO8aР *C/ոYI,M!LH6BT" =iC2So4G{ F6`ztѣmPdJtD͘a"αܸ_ HQ,5S|8r@0RkY4\qAб;7 W|{/cT.Ə`n2'dW[wR:@>W۝wU=z5}hlggZR]@y.X+"Qũܮl K6roD, 7ZjЙc [lbn+ 𙮛">į- /! c5{ >V?땃db9jBλ.dFpCMMpd6rE`9b:M[`i"RM^dGvX]4MZqyen0܅*:GF&U"JIJHӪo.1*5ĘzO즺 o7<R1ATXh򅂉AbaE%ąE;r[_6ɣ&>ÇLIt|1+[!8{X(3|0xB0RI/<(~ny8â;<щQ z壆M+ :;b(әbҰcn-4de{#fv7.loMy>kލTL1yu6,D d o^b)'b'eE_Y]/^4r;uָǺ~ ^0txB!?ql'JBܷ Jc|wa؏ы]Z*rR jZwH i1|ZR04dç@=o*8vdzX;'wpjl$SB vUan nq޾Lt`e ivRPSE-\t-6}DU *2!x>M4]`g wTƏV{\tI|<)ŵ]|虻ཽfcM_ eD~ BGE:yQhЇ48ذ˛mbpDE);B0Me5yO1Mb ! CaWvm&{DGۘ7{mb7G^p]5 BJczN4mmW,YSQ3_ypR'.*Jjo[\k7*X hz?[3.R=6ǺwO5Zzk-})S<ɍ&{izəl&j4jy[s{B93;oD;,9Rh  ? +$tkӣM҉ď%dɃcyamPPxJ \[t)CsT4_՛M?Y,\2D${&861)V y]N]) X@݁)4}lO{/&yaƫހBy)փVE9}փ:k8*dVg\(/$ eh(Jc$~~yǺ^7]sZlX1NOGW(N!M, >rc*i XM:o *X&R吗:q\Z`4px7 ʣ$b!2~|$fx2d5[@@?PCAyC>zd̘ t-A1Bnqxa*ܣGs /rgez)< `dtBFeMkTnBSV K&pY߄Ƭ9} 5@\N^'32[%fJ& bEV&PZg?(S G !aΥ@ $'$нP @mKvdA$6KN!t>X{}O0uGnA?LW>‡ tFn|?)U3zŠ4c?/%T?X'WA1 ӱt?wnQZmhu~=Y;d?D ¢ѡVH):I;D$q楘0aL<2aϵL N^a 3TjV$.zc g  >/ldgi҅  R?JÿCb*nrzpY2-q*N݄b [zH1z!1g_!˳KlTKZDKFaU "\à-e'2mi}p0<'݁QZBˀܴgpb$1sMʹ)IT`^>%6AFG&̽QXOUXy $z) &6i^[Y/.LVs.]:1 ò,GW$0hxA z'2ɒlSXak= ,^ rX!9$|}:\  Js@4H25c38E7Q/3Mg $o5$tNY+(eaecpFr\md3L oXg]8McM57,L}2ucǵ^74!G2 LtI&dm\KC 5~ep.~4Cm0R]ؤ 'XD!j$:;o-v񚧈QIǿ(e6˕JeƧvX1Dw-`>=ӓ(!L :tc9g SPWN*=.lM<Ą"Y !7B |5>Pl@Ё·Iuaי(x{\JIڍ- 4dɦ t@Lϒ^7,c *c O7"@ rv>}g;BqWE7& wL ~LJb`FݎăJCia VjwNjzFsK(8ֹvFˈW1>0Ibz݄VNo#ǃk=>iR #kUvr>An֦z""dC5:BS=Q^yi|"G7 ۛBd+cxN1ux u a99wI92+7#zO S& i`} 2mi0H .1F p%}TBGX$ a%)یIDU,.< 28jȷ4^WޢM3הR%U1ХH[9?d:бW}@"ޓe9ºͼbd\pƂ[!;аPBD3{TP~5"5gX!i8'_*b I=hT@$z8_齀ie<_u@/!H>|dKୗ”Be8"F=򿫴9o oB== 70ʠ W3< 19Тt]#`6٥{]7o;=VX)LywyBamU{}&K}ꋣEVRYcG81g@ '\XP n )~]I1o7~\!yFdߡO&0/w x~jdI A:ʄg =l ŖP޳Dj؏Wdy)iU(5G}baxO|!J{͆{B{:|Po8UJ)%sO/z@y3<m| 7Ymu@\;Be\AwBlWo~{&FFDCD/dauoװBljBj1%O N{s]o/όNfrAK4ͳLCG%G@Xe@;; wN=v^2koͤ&<$(H*]7~bPoR_ܛY L [z6Hr'` jn'fdihJP[nk % @dz0t)v D\TΦ8:$Iմm! 64|0()>Hǥ$a^H'U2[/1*`$ ON+gW > +LsMV?j&F9$"B~6iW5a̩NFz;a4$*y%@I\⨀ 0*rl"x1֑6_A-DQBRF*B(ӥKW Ds4UW!=HMU^0EC{ Vg E!-x 1tע{X\ J ԕSxC09aVΒnCv!wRB ;=t/QJ%Wф@э$dT&ac/hK P*W0$H[]& ֓eƥ C-uʵxi3ʏ-3EcH]*AQ^/`# !0hDcTWu0Oó%~5&Z@u8c 2XY1OdPLsO!RM{E*={T=F- +5!*Hd_*,fn\ٍ6-QY9 Ѻf#Eq3]]펍h'@p*Iζj#$3^| F, bQ"|֧@aq%(ڑslUҁ,JRtAHrz%YoCǬXɋ^iDI"@nxLJ~A(Ł!/X f52;Ϯf.'K+'FJscG9}![ %P#mvoԝY/PA ?@(l " 'NV# ce-Bn^Xb@P4y?Z(F&dfvR=62w@3 e+ ȾDz$Qsd['1md);3tޤVVՄ‡v^Xxɳ'0_/e^cͤ AG>>Т:tKBՂڅ_ W/%5$E#ap4谜+IQu2Z{<&@Vsw>yr ; ,^f1Or F8ۆ5jUtdY?DqT@X-ćcC6 e݀yX 5Z`[@&Xm?xҍ<a}B̏%.M+ +@ i|)m B,& ITK"c8,BH>>]0Ү;.q~A ,8&>yyۃp}Cd\y4QqEH,ݳH,AX m˷NEL)3O{3 ~|h@CABjNީQ޹`rwX%܍ޘs.9H^>ȾV$Xh/ T3 mc } @zߚLG(5ad6PzA"xjMŝqY7!@DGq&:x'kssprų۳,_7Jo`1Q ?H إB"cz%= pJ@.@<=V O^px7p "K<\M3G5I nѳܢUHP,X-JqJ,yn-󀋌ջV #(`Y Nut;mnU`ܾڕ]yuM!όٷQys=+=8z)tNU,k8'Y9&Lj6\ZOF"x&V瀌v?lBC-$?g-/\_z8숤PxXr MlnuI3զY9ʲ?>lۥ VkVL􏲚hoBr| mғG3|Y$|V#n*d5AV>Yy=l;N;Sɔ,3PPT 90 UDaׁMq~8 ޜw?o6.O!̘@|BE'm-a%-O'=ahݜmo7#%do]nX_Ď, (lĈDE=Br &.!-lb,I*vxO,DHFkj6?d頷"яRcTr e,"5x C[JB h1?:Eo|*dkL"z}\!/o2")ٜT(ȏ0Eǁ!4-ӘU\J҈_`}Juo}ق )pKHkd21!awaAiz%!$LLMmyTubj1$y06 `؎+lwe :d(EW7fR oʗ ?#Ewfz;?Q[B!iD[i7fp\76OᕄD"֡@@Y\|I+* 0EEB鹫~ #[/#s=?{nlb,"DHVH/㱪/ šIU PNxem')q>0xy&ԈaPe2u "5j' IrM#6b/>B!CNx\ኲHq}>`#BM5M#XaY6" }<4E-G h_pϳE\ڌc{5%bO}WaJc3ND4KLrlK<T YIjz~>W.pdz~U=n>C쫷>PuVNiWy^wrCǴXRY* _' oF:DRU%b>&SN[Iϛ,S(')zK@(nV 9jkdSC霗CIfZ[ocerG@w < _f1D[I6q|#*^Uu}UT")@lrʊ{ fb_ RH=2[{βyK :TMc*ٯ 5m!T0Wvz mi>Eu?_GÏoWk tpVkeêCܕ ߤ4 kΝIVC3| 9ճ'(!!H]{U5*:^|JXQOϟ=6Hig{1V ς~z?Ez9j7RBfriv&>s1BpRwJ KAT }iboYkksBͺ%r ? K8  BA2^HFBr)Ї{@71x e5fr /! qwg̊5? xD Jx,!b={WF{0`{\'DTEcPY%v ,s@ 9Dii4vDm|W>l%~a4mvf:*}I4}J+_*GУ1OX͸?,`Q*b Vp]/layתτx0FT%ei#di9[Rd9UhaVmVbna r06rrt:Wt-eَ2Bv&-Rzyiq&֐U+ĺ-L8&Q%fNR ' mjbbb|xC&a!^ER&_#!vUs0 ]v1ukj R$g&QEn"8a%u?1+Vϙ%R!O үxW|5DvO..:mBm Cr%}`ɤ4KWY6`º_x$)gO'>D Pt^\\\v^GTpUK2D4T!߂Uo 3R"\W~oF8[F|ǻW.N:vFyW8i#!!9 ,AlA֛n /Ow̫e$*[H}T>}綑uLX;g2W" =W.N;uJ ے!x/o6g9j`stZ|`GVN0C*Z} KXQ6;vx\t Iѯv \:}ͽLbϘ ٶզ{r>"|ͫ* V4ˑ K\/bXrWCvyl#bY8!T^ /&8~E^`0YvqX,+/N/J6޼fˏJF + t NE_}Z K9G0CaHqR (PXW&"T&s$qA@uo͟` )q*kr¡(RGA+cYJWb`O6!N< <.V^,Wk7ɋP{r:6U%#,"<>ba-ZSQ;gw/T_*gF: ^ju 2ҏ..;Ű&2 [n/@d'ek٘*B(+{9<u"P'HGKv8/Ԫřl_ ;'\['mU8v$|:Y&gl 仝q [ׇ.ATK0fWzXŞ9rR*mtf+J GcdM9~A36O Qo5;v XChX[z_aX0B$T0A`;΂_Xta ) HHTr iW z9 zv^0?@ <ŝlur1plojXz8eFa/p~x Hb-Y囌Fa5St&%k$[6c^MCXW"MYl)0XF|rVP#gnUDbq bPYB!l06+[-^UH3HkaL0!_1ƈ&1n)?o P V7Sa qC\ >1;gdQ$ED .Jː"m|zu\kdҺi`U39Eg9ˈ`ov30^%ոi?Aa uS9x'H􏝦JƚqEa|z6!-#bP .#?9El< &yBqgPOL':6dZ fHFz`Zv LD0| ?ٴD2D!l|u|G@CmEEZv<:0f݊DZH&{gF%C3&Je-BcASbZͽÓq5ZysF8vp&ϒ@ŐZNNy N$ Dpk{p8\y8w3ݽ6E~$@mŽX4j2ë*U^ N,M%P:7a@c -R Yg|#CZvUdXtD8wC( L  fȠV"D#@vB^;&.hDB~['TZM%{;7E]pwR~QVp,kc@bIYc~D(*@< a0 aC"+!j,/0 &AVTz3Cݟ))X nZ3RhjT}\&*Bb w7x% ٗri8 lT$ש?BOyC6 - IQf5--ӵk?=q>>B}OY/7\}!jLQN0*Mh~!h@yv?;AA'Lr#WWNXk Y/XPۅ>#$agu9<!Xksw?\N`l3Bc;Gyiw:1֌[ReƂ̐t`o "mbz,?f$" oa mcDdk>Qݓb[ F:؈FBJp2r81*!Ů* FT%l?HrW2$[BS@h|/A\~z_"eX)Ug(#~y폒ϐos"an(rPn݋L|Km%I|FjTI;o5CN$C>֎PǙXgr=u/ew,}3+/(i–Z*BrEZs; 3mj0 EIY"z@JVld΢%QIV,=P$܃a'q bNnOcY+gH?iW-yxO3f=B(*^P,Zwf]$|O>1ܛ4v[.6%d\j 8UG?@'PW~-)wu^Bxb<6X_JVxlc)i!cs_dj*:{>mb46i[?ЦB)/BBޞ`&mlnK Eufjc'OP-jޘb (O{{~kd:vHU|ԭC?\Bpy>G;uђ:jMɈ_SρJl'o˔Y>50Fuf_z|:2us8Ý }?:AQ鴢 דmu/yDԫg>.E{Mqe ϷnmTqr!机"[GfTD >1WNɣ#RR,޴ūqXWn qb1{69fBqv'98 o`h"h*(MxRP-JtfNBKЁ: |d89/!2bh"e' y0ԚAK0k3VG_:-C-i|~,ہL]Qlq`qx 1o@wwMyiοҢΆ$%-zj4VG&SM:3L-k%;yݾݬ|U ƣeNc+ ݽS/cX^df~o@K S(ڮJ_3~VJ#!>aX[Xyt D-jT zXl='#x>. tvRI0DA,"h`&Bng=D>4_ Dd }5@.-& P>d_ocj/uc3|񳣛Y\]m?7T ,@>/ʦӊ !2mՊ9%-1[R4H5ggFnn\mJo7pmoQcOdGa0TE1* xN`98oԡg$-*ˇ^4oʼn+֩&Wtk ׄ l!1qcnA ' !XZZ,0M;L!j= I|&c sd؎,Q /i? g3!z_5$0 'fQcpۊ/P\%-TVitƠAr.IE$Se}GP%+IZzÞ 4>v(F#~/|.>tQw],T Qz x9i!cS.tdJmrDK0i]'k1`?RUw*̢jZ*)uWQ&\ 2`(m C7!ЃܑfexPA>:gU3:<}[M>E{._.,t"jSk&kW6Y+1ꐈ8T 鬘K@ @r?PMbtRӦ'=HtH3#eRu n3L|ӈkȲtJbA1귝IՉZ\" 嵵; rŇ@C>t:sΗssimk.L7iEP0b>Hi:.]/M,=ъP3Ֆd[q tV*e:ƽao$YsBiY}`eeyyeVWW~/`J׃ɍEVx&' X|^v'瓅O;b0TFW{ % U!GebXyۼRre`p Lvmq-Sv1q <髭9Z70krړE*V[pH>p"BiLBh vئpA2fqBL_h=qhۄi ar5]p~ oVjNkCAm45 x35JZ9^woQN6/5!DEJ߱^eZeXx2;_"baIeq}<Dzc=eM@a bX4k! 5mbF*Ϋ?\>oaQ}X5m$J`g7(ηwY:eeoZqN1s2hն5+XK<2i!+A%Ewp8kE[Zk@+VɆT*U!UJ7n;^3"c%sYX8[1]chN"ʚt!WU3-xpdlMF됄~Ղ<ۨifuA6B7Kax{)9*ERZ*YF}tfを3!qqimb6+ό/}6+E6$á=|H6$r~pf͗"`k[g|c@BdlsaNoJ#ރNiC@p 5fibfdShߘA̝Xt>Eߡ ;$Xo?|Hȟx,""vGou9%vc+ϏgQL1d7M/-C ~lYRDВP| C;1[s.3-f+"AǔD<}e#,H9~yN{!p<ΧkM&3>T2 ;Y#6Lp}ښoN ?09T;*԰oz:q,mGka& Wen=ܷݘ}.%2%(O>݊\EWh}cMOf țgR+k|ao&׾vD,_k9ۦ#M-CxL/92e呙XȘ?Č ?Ct&a;OfAwrrk!*2M/` (H]`)4 S{7Y`K<\-DiF2&9&gT+{2"IG&wa~{ȫWw$"S-699 A<:$c5TPB251B051fd[pq MXs|ÇB*#F Qν5zDT!cZ@?= 7 2nmU U貺a2t|3NdKnYyдdEOwI&:Gp(3vv~zQa:jGY!&1,ߤ*heV'7t4#2 MϐCb)?zdîll'HI,$7E@e$N^}rA'Ru M2rs5#-GwWkKx7w:`79zx_?-"7$z[Zg,Bޥ^8% l,NePЍv1hq! !>XZ۬B߹Q'n7-.9A K8v_JEî'-o(|lTH2#c֞z8 _Nݻ}T%GFeX^BĺH ,=oj-~m5?ϛ._*[cXZT0`&r ^\1r(`F[H^kyrj+Z㰳|rk-!twJHJ92ͭWN'`H*2A՘"3@ Y)J')V# A4ex|la =әebYjZ/p v!IYrf+NVYQ"$ "$ c:LB^䇉ƹ bQBݍ2zPce/c1$fQf > =kv} io_A,qqfˆPY?A#nt2eϑ,wİKpN 8Cw_kqn s Y[ښ B`AK{V_-GaOw T-,ugdIe !X A':tF8)o$ր"!0XXXA`W.#?;.ͻumfͮLr}]dM5E;2eݐ1!֓?:ՙGMn(OBj[qq,W"!Xѡ%cg` 0aC7yH.SabMk0ՋX#zl\H mc.;"oɊ @c$E ~p/ IGq]r`s mY롷w.O"!ܦ J,l}FWC1TÉރ 5ǡz $\dqve%oT0)ђ$X/=!/{W*;tnkxsV_eֵmH53NOV {{ Hř7z'/T2BCv%dA ^I[6⪶)`Ŷ5EVi4=r[A^S0Xwy쳳kSa]3-OE={.$\AU;.^y~a~{mQ8^hжWy QH7!"] buL3Zz wߩ{˩\9ā,ڼn09S*'N-_VD7m9mp"WRh3U(S1)wSGI)d{CsE@Fzb:KsIFnWxev]Z_E$KϺ< ʑP֧Ό|gg<H lBmBw#zx7/x\nTָ& ;zZpo@J kd4l6'n!ݦC^bq*⃍8 =piA7<3#ޭPG]B<6 h*BݢθG0xtwjͣ+Bۆ)(2aR]JO.B]:pG2Kμ\E~Pl圈R8HsUWXU(!r@@:!Ūzbb2{|8pHC-ID+![k&x xkdZK{HpV[AMЉVa 㖜8 ,:d$o6S%([8.eDDG*KH"t1 1LU{nVʁnVVنޮuND|#.?͘.$ IHpx'X7![C& Id?؁(Cv)r߿7W+cHk];CSlw ڄ*ȎOz8pEqI}:<@w;ANc@_߀Y+'dɶog})wZSⒷ/+%JUDvCP_=\8uմWC x(;QIdXB|Y@fM2Q~09y㴕Z"ψޣ·)ϐbs:2/)x=!p&ͼ쬾{r bN懮a+E19QD}dvy@FÓwksG9dh0D$dYrv!  o\v UQ06 a})q;Q_=,a%8t8k;G$k7K㺜69M`u_U@Q:w(mL6ͶLͅZF:%~ *dCUb ()Wz$RJ:tD셌ED/f?@jhiR:UP#NJ" /Hlq{ɏ+LATr6\Ie o+7#~X>9?Q9r L$$ %(_BӃa" *qT6R瀱&\br ,&GE1,w]MԖ܊qh6DvK3kmIY5MĤ&:RB|-^. ^L d(/Lb;'tE bD&0^8twi1׫t1 6\qa8d(/L$aAPlӽ2H j(}b`\|2pRl' b<`LU+ݒ/#w踡d t"\Mr.Kdj`( ؖzz-`,evLu=7 1~Mʱ3jFn n y[Vl=EIENDB`PK!?hhimages/privacy.pngnu[PNG  IHDRhW6PLTE|qʙ1?hltQ\=Jir=pĸڔ IDATx(Y@iWܑ9g-2L,(vſdvCO0Au0wtZoC_ʴUxc` !9j_aL[xVKv|h7XN} XdYǐF -Y<9A˲;FCc[*sEܓ ">Ĵ0Dmb#hҬe;Qʛ:$->kmc[!v88vZVܑ5瞚?Q$ȳ-D >h{XU Z-1eZv8UƱbg47 Z0l;Q㾳}aZAA+yL0U1}Zu~ŹM(#|a  Co `w[cB{<D L Ѯ7ScWߺl3DkCwMXUbR%{|T7(vCЦvcqcy Q3X]@I; 2&ZQui!UA-lJsz13=Zhp?hӥ/[ lFAۿT |s}D8f+i ~~Z8&,4UKc)YeK}>5n|Ĉy Z]DǘxXWn, ؕGy Ѯ 0x5GL~_M\O]09p=cv% eXM!Bk|d|8~?~HѮhSȊ2"OllhoӾ\*G.vhL[{k7rJ2vSJ8^|!M`xyjˁD[5rDbtLbuV|`c//҆Z]51 <6k3E oAxoLȳyh7+Z\2-(ۀ^eZQ ։VTr,1bAƚuF2+j2$ L$w_AB`4ק|Wc\ >qB2mVAL4m6iev|;@ =i pK#_Pm@DT>Xu·8 0惦yTL Dp8TP`sǏ .D^+Ni&RCf^.` NW<*Zzvj5L>U-6BrDkjAKvM0JIj:DnF³ :_P"&r։VC*c16a&~-Vj$K:`@}y-Ǎαq$"**bapXlXM6mۉ(ZH&Ա-,5_jWmDK [V0 _m>Ӿo i!2 M"ӥ!)-p8h_l (hY2UdT{K(%i5ޫ9@> % 8#zn7 ZM?pG%i!چcry<3UyR!Wa^³ovݛ'Z s*mL?=φ1\9 qӾFC͖h%Ͼ7l`Z\g8FE?emUboYԨdqM2-aNӲymV6_$F9oƠ1eȴXb6Ѷ^K214#lGOhC~eZӂuTcmRxNdQ1>l4³ڗ| rv3u\@m 2TEfahGF'iqR ZJ,[0)^)ÛZq/eN&: ->m&g\~caȼPC8pW>֩6;#jUEЊ\Fqߗ hAKqtLl+%ǦS+ VP\yvY|;(d-˒=݂ N%A]MOǤ4_ L}za %KjHӞe)ЎPԐ4hWd=lkۮ!Fʭ=8Lx6@iu~ fP"* |Jׂ5ij"ġH @)q`=X1qUӊ{#,hzW&oO=_'d:1kZLy@[DkQ%6}ųOȳ) ӾO+ Ul3/{ AWfIty7`Ќ2S^jL6z{jlt>MgWMPf緗{~V{lB ,.ij'hy縸Ǫ\08B63r6h2$kG {Og*>X+n]GI/bŻdb??#Q<)p|mgMV0gSHFX!li_=V=<.ZeIۓ? Z}Tx*pLm5nx= /Li5NFAK?-1u_B~Lp5g f|B6>aFӠiM+VN/a#?M,L+kTw&6װe5AH.Bs_/csX C'iVpG&hMυq|݀|&8-wȀS͟քj=>8KUZG.2mxUAg*i9EH"6kH'h/PD{fhÙFF_HzM>l7O52MIњXѴ'MSBL+ |?!ZU<_M[ ZO *hYLU8 +cxrV!ZzK*!Of=i$OKVs2f6 豱A;soJ*%w ?+is؈Ң 8ƳÐǾɇmukkS[bqB۹_IXPX~>tM5K Xk j$8v1 15j1%ٜ;*Dݼ8x {(`a%fT"!chkF{!@i4أc8֫㔙gI_kqTNilq-~WKP  J KFÆ|Z!]`q"ѷZ#ٱɮ@.vdݕbפ7 jZ{ -vf t˞z mq@#}䑌vIy|+~WZlHA5JXdK ώg#"*lCWiE#thW{dIc}ᩱq ܥY{g\Hu {qܡLBЦQDe6 3;Ը-NX]ĦO~dl!k5ηGdpQ>VZt̷8K*_%hmIhKb4Nw8!Lb-i> e 9"p>^J i;5E@ZȟiኼMM%(4JUXd m#! U&L@Zpr$MhiGiyV-*o9^uї},';E7i-"OZh_l۶ZxS6 Jb'|6D cKg1oҚ>;-8ٻ8z]ḺM^Qm`9!֦šrG Z15h1rVه`{4r?4If5MS)BBk|; ŶN Z } zÕCk !H}+iSYP<)' -f{Ecl3+汮YDk LT:tO8ir iY;@Edj K:mZ`VQ»S=,^=`H˔o܊Lr`;z.8 ]'a cj^I6-_)m#b#su_,S(mioPV?l~SCti'tޒЦŊVNhE3 4A BAV?^lw4eH5l΁ KЦeV8=&lMeB{+^瑇bG<4s"q(TZ8j\Bkѡ݌\mbc8 禓w|jJ?E9<vXI#±*~'Ig6~5 ұ}qN$n/SUoKm?^!9DbGrB -Pq,mU,]۳hIm1d [NHj_lg~bL!M`WD")_֙^$ͮV&b#Y-sľ?a>D]Jd&|~% @-=}ّ*D,OOd2`;1x1&)69e5vbCNjU r5r6N+ h9F`+#hvͪd3ƫZGw\3\XqІ3QZiF*%)6}6LgF|-لvfk\t~H9>ARl Ҁ)OcjW?1ǜK#V[F_G֩S;Xxg)]# R+{ aS>€`D(l'>3@vl۔ttPkXXmdSt_qI޿~a(SY kP'b?B{{d<Q 0(m#koHd\c[ﰖlx츸cH1EV*YIR*LG4Og]Ov21ֶZx<8p&I}.{bN,8,/FY@+(ǰ 5mac)wm] |e@`6s23p` Ҋڢr EE.Ts,*O[7L-B0bWNX~P;vQGh]qJz c%Tͽ2榨S]?Ϙs'`1ZǪb6a3|N(m#g*TDZGk%T͒ H}/ز01VUZ͊&VM T`ٴXIr(I@kCB)bX{b1,@?8ϣ_ OUc"V}^=f8DWTW+xlW-% YxƵ%rUZ`^l+Bc+$i$E Zp^V/P|y*%G$Qyr;TSYt<]vMI8eʡqE^΍ZN=ːIy׹@*WI*cT;r52|C- U(i/U7h~[%mQlcOՉgĸx`)PZܜSZjh⨰BRweA[Y4rf(c+OhB[8tf)m@)ܙ,2vvt%w 'UZ:C9~k8DqO^ SeMt1O)mC>kk"eUc1tֶ>E@|l@yikZj Y̲@ {eO(i ,o8Iw->'崢mr -m1QBX=x\e婋؞`{62[ri~[|]IC;nh&Z\1&׎W,kuy!j l^io'>vWd- E}gT.η$c,O`+=AaS!\ậ]n]hM-Fxr\,pVdy[{]v",jtz{֋v|{O 5S-S7ۿYXnH{?K->o$a1mOJf%j.FQD@YNZ{~B6R25zd]h=r*m; eis0®vk$RY Z|&%ě7mㅁ8RNrv m9FVdyzmv[ N~ Y !؃v 16C9B+֒=hO$,OG@{ ǽIkCp6j`@;hHg*tI3ކ k7U r#H+oa-i">Kjג8 o[d <cw;=bcAHthQf`c`Kv;c3QKF@[ E}cQW]/;,J.v֘cLXiuQ%G"-: <0mXbo`YwK+0DѼuF8ŞQ1hyZk3lao&kZP$+@M+##.|-ILKt:TS%mWijsiQ6B.aWt0kU 'JڮFà_sᾹұ{?7Ay'5U]*'ˎmAW(E(Zn9 ξZkǕlSz@[ɥ#(lQmv)4θԷEΦ7sh=W?u 3hm Zb=ZCiÊ} _T bV2YrQ(Z%IWX)hŃǞC1$k]\۽AYlXNە̭ [F{%%jA!&O, @k[1%] PJEi;HN6۵&6svWFZ${GipY7AgWe˨=PR8K;jQ&J{::S '`/92K -/ _$lgM*[񢢥Z 5SC/-v: ;A;:!4"gI:^.F~~_ax!1S M7h)U{BBb9&KZ фU%"Deތӫ%ٰ7EI*8OV٤=f|R"Eq>Xݹp[v%jNrrhzb i*/fڜ2J>09aH{e-ʔӤb^ٞ//BaUF-ԏ`"ϳpF'<zZEsSAm,-y7*NP|e4h+\PB4m 9Z&SP,SZ*ZE)uVl&E;~YZL_!Hm:=ُY3$˴R(a|WJf vw gƉA~}.eEl\?SsC n`R:5X;=NeE ]38ңyxVyS**_a~rhˇŷՎ9Y"h%L7۳(rvg5]P!q먫I[)h[d#+ڥzi~՚NO|%N Zm056im/qG Aڕ~؏aI[/h! %m76*9 5imP\9 ZŠ}>)Iߔe_m`lN-Qqj(o:1J-d0rv]{Gk)("y̧f*hPv]74hMh.4=|oԍmxo{x³>HZä}X9 !QMډ_7 6BX|؟Aq}@8/{we~y{oUb@sI;EU .M96h98%ii!AQz&-ߋ:A vV*&m)oڮ Ey~|\ivUg.Kj}T6EW#RB[ H ۤ%?ShFA(h5}ZVJzIBNˇ:8,-%χ>-ߢM/ԙd&dd-LMڑzLoZ6A{rrv6L֦͒T'+9 _۠MIm6ۣs 1Jh+ڼuŗDԅ3>LW]CQɞhӋ)Z!m+D+*mפDV V;cmJtgZ~<?n177@UX;>v9+MZmc)~Oסh ڻFOݣ<[fR7YDqWJ\r mhhT$mc-'P +UR L;_Ӂo{ JQ+ v*=6|_nhZB.e&Hw̠riԎapf!*5R:w!J:1m*#hMZ|aeA{W`bآmrn,UGtKJ׬W꿺ݒSFyV|gn6]4 HjOMn jȠeо1﫠[v)0+%>SL,Wlm&- ZCo/9G X>?U$Ho.9Zá[=;5 ))tt Z iKLUjw5a |F-hyc 1ybG3hA{F(5ݳ4$FmzIˆ+/813FAiCU߫mpʎ1=ZǠ_|E@(gyh#EvDyd8wb~mh N%ޣUM90=" USmeX^`fxiG| 52hDkI h`-l+*/mNR؈|uiݺlѺBL]7f;TKTt(Ԥ]*0~185x!6a[sY q,i/#Ħ`DC/ |&P-7WU-MS^߳JfMкsgd`6C+.mu<p{kvqMMڊ@`3vSF3;NiW|5[հiv{M &h=qA7c:TcMrCUZo]=Ud;.-Զf_ـ!{%)ѴA& كl.gu᜺ШBꞇy*IC toEh A֝4i倶1PvnAr@$(h7IϷЮ釶qq|OE뼿uf8ՍMnъo= ZBmMÆ_]lSXWYq3W 1.N@V9>\ Zij?>0嶺6VIFLVA{kIU#mn3?>f7m-\v6g4pmsܱgPXS*$QF?lɝoZ]Yyڱ+Jx!x1n()ŋ긦UJ.myLxA$K.1ZsI96m.֌[Xڐܪ#$|n:^X{& ZhOwԎ;5.7<cHU>pjtQ -}ؤ-1#$(Z|mb Ӗ )E˖s,胴Ε١aѽ mw ڲW` olOR1{L3/jW p䲳Mt,nۣ2n(9RЖX(-ZbY|LBt[⬠ *؎Oњn9&)ƙ:dܤVx{+g7F!E)کTiD0&aLgl ڲR@ ivl+I)hE-xV+hŹj?d7tXjc0j]) 7iwIH -mY: |ǺهSw|8|\$Fm1퓴=L6yGXh[2ܳ W⩢XRN= ZQ=&i[yb;Z$^(*Z;y혮ܗccHc Z^) # Ei U/{R9 Z,8h;WUMxl}R:7mb[H;bl"@tpUZd7[m% t:^g%Ac `!f7 v[rA >Hk9kC;W]16gt$NaZQ/>Ak.tiG%KP>)hJIv<ڦ=lǽVAߟ"8h#Dzt-h݇Cܠ -׎VA'(?BCw{٠vCT1CjО Q=¡$Es?)['/YцYA[QZEj6GC)hyQhln52l"@kmH*l>]Qc2AAFx@=ZNI欧AYqxhiNР-=^@Q/cmC~o[cK&AkLdy0r6zaf1 dY%*v,w9nm7hEm;W3nT:^-zv70q?4/QAUЎmc mة?I`4hЦ!UJ^AXjѾ,@k6؎{WP=Twnh=,1'C]%aczCh=sW~tO7DJNhDwh h=pin:MRx@6 U/zBRЃQ>hs<;qCj&ךۧ^B6_P9/u`.M*h˴_B<-JZgam._AZ荴hv=seAX`2 a,ێq ypt\ǜY//XN&mV7iJZ'+Ѵ|w(Z^ )c9ޓO[xsAۮcyU{L˕p{-v"/vgkH=ڬe}S-\qڜVl)H&KvT~Eyd6/T JTȠ td-8hT3TҤ@m;9hey1R2O Z9=ZQ`zNB ?E1U^;сeI6nZb55 h՜'=6ONhG~6j~LjT u6ױ8WX1[rWHumأbHѪdYqОLAn*Dچo#q3hm1ɢppX ~ڮeU) EϱG֠W Ah~r ePVtO٠6ZŢU踂b׬A)ȦsAkn+Th6yC hO7N(cqоx}tq-]s̜3him:;SV5?X}e7=I).&7)_+Zt\101EX@{ZG=/Fp) hbĢc:ʎÇ wQW +uhw!yɤ6* B+&iC3.J hI/̃1JY?%7Җ ~3l2`xNNnPڷV hؙߛr~Q յLb)EAPAڑ+hhޠ:n{>ohM0VZ('h`U?P<5&9hڏvS]@ЖQuYH ch/'.zv*0 hvS5hiiX t0Tٍ_UC釫i;ZM/,vb(5]P ۧgZ!h/@\zAy5iu?Z.M>}?6~N)M߳<MOtCهolGꐴ`jzY&64 jKfł ʘM\s@u/;}`Ȯ&orws[r.\fhsǂ6_N@Ux/:f6Mhﮅ.. h5B%+4fiN^'>]hw,܀A`0?bIZòYLnHvbut&^o3fuݬaw°y{mh]v6mSghFZІT%ZmWʣ r/ӷ<_Qwq|xJ:0"xݘ$bLv~tߑ*h+QD):-Թ!=Z>&C=t܌| #1EK4Nfo ڌJl.P"4P>`ΞN ~MbU hvg*(6v-  \am8 C}uCGE8Vb8bĘ5(Őy|F٦G7/ :h׽&i U*h;E}& K%ԣVޓ^h 1?MTV{B2E%]xakzw @׬Z8 `0BS hE<=8ڄZ=-*ZC3h/(ZQGې1L@+,hgEՠ5T Mc -jnAB# h(h:B*.Pj*(-dwAKY.]$[EB5T#Z$tL hUQW\ C@ h#̪4G@ hzm<"A3!oeFT*hP=U+GJ@~4Ak?khL[̎b +3E t1Mgh%i_$h=]K[5TeR4.Pjm;;#v0ND6\=po5LOUUCkK{O* Q')e{}6Hܐqgy7=s[왞!މ=hk mfrkK.-C^4 -i63ͦ.\m!7~6lIu{|#-8"s@k+jFҠ̈́pNuޝPex6dy ڪr6f=ڳl֩hef]aZjq*`v֎Lm3㦟mշ nd6"AU: +ٱVQopW-h)˧Q,m6+=qj3G% ZG4'}ZQCǪ*I;VO`7-cI,ΡڦFNh0F,h^NkgOHV-V <<mP?bhY"hb(&ǼcrIӸqmL&$vGkh0:3Z }Z/v-q{0 hOF[rf LV 7⦼~Ǘ"ưYm*fNd1&ڡбߔ h?m%Q_E&f-bf9wO)ظ:mLmAYs)UAexOM%V@&h[Fm7 { PmN7fQ[;(jDxW1P&IEk0Q5v=,1;Vu FcgBc)zInK1ڜ)gZ0"mV[ \CUP2OHT@o'жvh3̪:LMg(6h6^[gE`E2X\Dq] ZX8#-7*Q- A[M_! ZAр9j^:J4S-qZ[^mcW@+4ɠ%h֛ l(h;jmZT@ 2WS`A54-?ЪV@{'zn1yiͽ@@+EK6hS S g@[tYZ-h=\nmx (oiNf#-MZ#~ɉHs+E/#+Ж=ccGj,bn>=6HrVo* mv`t@86h,cTST)RhGm;dq|{eZBs .;VжZQwhv`6@+h3a)v@ h@ $h8l%hIZS@: hoCue-Xʎ=ʨxV9LҴ.s6̑ mH6=)Z5)Zho܎hwOҘ@ۄޯj\NwWl͒; F#z.㦡XenhOZQ7lcDv%ǖ384. QdyO85+@ڳV@0A @l#hDq}WG1\0Cy1vrB0dF:@KЯ"=V7+*@Ks)|h͢+$qYk}|3z'wG0CYǤ}Ӈ|\[<AKґ ZD!9%Qj$5U1kq1$|Fm6i}i *ho$NMǕ,? `.u*hZr0 h hiH}DlyGkjE}mY9CkF9H4͏j5UXoߒaV@{Ef*%F_30fBm?UShƺ~ǧ;ϊY|1h!hG(^UJfj<;II;T۟Cu ؛SSCݰsѻSip RAK,\'E{ dR$6U");֍OXm4wTNPP0Y@-ͺf$UC h7q:vT  Ƭ,j;ÅF@-ekaq-бqOGrse5TFȣ|8QR<D^԰ IDAT?)y47tTFYwf<sHhs+6 }[5(E{2 ~>Ļ\vLœy4 th ZnN@+3)Z1M6*ā0jkѯh)FK⬚!^yPx=hfƏoY*A/,w+v*hug4EOxNb}`ڱX@+3SK  Y# :ESvFhZI{JSIgѺ@(^c.E;NL8;'6 hw;fВysۣm#e:̩ۥOVchP%DcLzx<hY@+q8hcI iQwZ9ޛ[0G{ hb}/.F--*WGQu hދEEKکo14-.,f|80c(1O^.EWq>ÃXZ^5֏8֐M8F V~Y'1vPΠ xEJ(ZղJhўFk|c@jBϝH3{~K] IոAՃ=iOZ%:8x5 }oؼ/(ܯ s8>PY*DӪN@+} uMH핺h>Z3!tUض4\8MeNkKkYN Z7i6y&tWw@ڣV@t*lmmX1P\p!>Sk֙0|ym#i+fFnTAmQhPUJ@IEKg5JE[sY-?#}q0hي_yBο3z7WZA響Meн1 h-]К߃oBњ?QK?K^VD-Uǽ:hxxqi`Rt|:/b(=\ aΠճdqm-[jy4 'v$w=6dXZp88ZƢhaU "5:o\vt$P*S\橡sOع::֧#hU%ӶZ-kVDk}sQ"n:S.[ 93Zͭol%xw& :T~7ThѾh>=+F hYV/fj\ZC ָc}ʕ~v &jC:t r;mjm'} ,x)ڙuuʄX9FXH-=|p)C ȱJk9@ L);F1(OpwA45/-EA˧XuyrBI@=J!mW&"mOp6]BǸ@$/9FP: h7)fsjV{R?C}vRzO? r~U)x:amnCհBUzZi(-e2v S/#Y,V|*?$i*Z77AѦLSDѾ _.V3h WC şGIlLZjXc1R*}m`*mmےjQHIPGh@{UGsL,U(Z՞떣8 c!%dtih&%3sC*괼eZ=vH)@kR b G{\тGG+Vv8ւ]HHPLU)ڵzoȟǨcc(=کH0M: wS@ 6k`۳CYǩ2BAX::}5О*p hlI`ԇ1җŮHr(J@ /EOTXΒU{)Ў:zZeh:=P+ Q hЩo`# Кf9Ahi m_ۢ$@;; eKGvhh5Z}z6d?hi;caz@v'Sma *Ұ h/~nCZw,֎:@k}v !bA:[TY6О \={r"FɜuA hhhidEU @{chiHUh#OQZƍ.mn= QI` R!Lq Eo>YZgÇ-yğ9\4d(үg2d^*0 iOi]-muR:yh bcj4%Q8gqВB]g٧})IzvmhAkhh+){'O:hcS)p> OGzhm} %OhM>@I؎t|&J5m^ ߓvP7~pW@J`RvN)3h ǎܻ[0Ixՠ-+@EO2%Ѯ߂VCq #mVBvHJbpZ@+:[<$٠ReʟԱWr H+ 68^ۤh6n;KU{D̞@@>!d D6^H(oVuB͢e#85O`SsxTڷ7AC4{X$$1'Cڳ]_;N(7hڎǫn$QW6i;'Þ.MuZ@krP}RZPTsz#hJdv9v2e)Ga]6 9\Z P+ֲ- 쮑 E ڷcF+ g@^wmqv{y=AKvSq-8"H{ibYog>*Ev܇Հm0T-U05/cá(ǎq- 󂋥[HunGr7hO:0[@;݈{Ot DmR7гIk vݣ|؂v*Pn=0 KbOuN>ǎIA[kڟv{qX+<}aR@{CJ|h'կ=Vc(T,{m~yh2Zwq:tTh+IB^h w ϣBm+q++ZpT%U1tͫIIO+9XFZܧýegiIgf[hW#Z 8@to=Zojp fRS5h!bR\6h7oВNݧ~A iIAM^v[\^C ЍS@{JC;g0>t!D-&i@[; ZLsZdK޽S5e0 Z>ZEXWށqAqcjJUp4s4E器UM{Zv>ĝ3Z_Gf=Jm@{o=r;h䍴"j׎? r|+{R6! oqz&T1O-KΎP:* ~3&c֠u*18wS *[H ѢdpI,gJ0T΅2y"H<8927hԎ/>.-{FѠ,!?P;^[9&0Rqr= %inxvPkJ1XGkN6hA(5hӵ,qcٰW FmƬxЖ\5H=G { .ɐ=S4hA\dF3/"ؤ]iVsf6)ڹ,:uwgg'*hajz4О`L'G`*a ZG`7ʧ|F[4,GVDBa9dxiy5vCsS-sE۩[cWƎ9+Z*Zd7ioE=~.Cg2 bI`pɯC@{B{(о ZEL3?{^h3i-{a8Sb+e6KZJ=M `^y3?LR{',MRkʂxxYr+=@&د aq3f!pvǠƖcfm%[0ŀQT[-Sk$ף#eѢwE8̠mjHQZvm&ѱf-8/93pڟ\{|NZMږ-YᇧIRt!!|c/SAA{ hY4iVccdںfnG@;1k(ӱ%%k %▩bIgOYv,M@kY: ^ӯ-/r֧%)-etg3lQ t3Ҥ".릠=\-9h[zS-h;hx&;VbgҥJ6-lt=`b(˪ ;hl/QSP -1ZMԉ1Ts'KB<#lڵ:~ ͶBF~Vтx*Xx{>ldb+]AK6=he=jO>A+1~n%LC,\5QAwڬ]hn#"iRu <j g(Ar6㧷hF;qY+ h5eZAUЃI`[smJf=F뇲G%A{xΤP JA 2d鞼ˎM[.XRh heuwm@cXcځv$Fx3> .,&l:1uŶib":\: \jv2vJUVZ VP/ON6CY9 ZhDM3i+hB9=AcaɎs6Ai~bs(}YtL ˊ &͠;hm6'zm=֦m9G{FB)m-r&1q=ֲ<R8捴{!nSЖ)!;hOtLkz\w"CqPDM9VdcMZKMP €Oo(ܥMtLX GTLr-/gY *Z?xbx9`AX–ki;EЬP6??}%\3ڋ"­gNAJJM-{SnTqx=ڟ7ih ̊ Z/ђ.k[9lS:6.:>ܙYBJwО7H;HhŸɎӞs,紮sFk[hDǔ;21 ZA{ iǧJ }t:i){C5ރـQ(":p{VmIua$|6HjRrMs'aan2 ڬzЬQ A{cvMi48͎6y ܭ>Z(U`Cmcm.`Z:xsuv hg=yʪ -G6m^Ϛ.^oDK@z沎^oe'3ڣuga4&$>m63l=W!;i[3h Dt/JڳiMZE8ݏerK FԠ$A2%ȅB}tvkҮSҠ-eRPTHۣ#^ڇhmZ5meڳ.x'P;vA{ځ֞M +m/9Tosȧ{I ޿ IDAT0']:b{gKWKI:K8v+n:/j(uоԣG14ՄV[DَLJ|wVb\utI;Rho8 IFͩD ꭙEǖdn) )MSJڳ{Lj"Fo))6Ɏqx1"*0v1[v֚&hUY4*xՎ'5 A{|syX6>}g=f}Sic_,Xy!B}hxbd -%y,8YfdsDEpzؼj6mD5`rBG  hɠm1I-Zg(zוwڄ;vV &^'֤9`F 'wZb&F'BcS@{ِ6o\v1Ɏ%ƌ頽3V#tLޕF^~WvbQٚ[< Y2`Pfmz?%CE_x^ Z@[ܲP2ZɱV<Ǫ6C Zm}0zܲϮG;h\ӛ g2G+ʋ3yĒ7+dq_G{}F!Q sgr=V"bwG.ԪWcXh}=2 eZ(Ԡuj(6֤.׏.Pb"wp3`YOڪk*UcGzak|6  5h3 %xdeGV)i[,6iM\Z@W@ߠ?b#h2ZIjui)B2xwPAs5\Z.@Rw<<߃׋^sۓCW6iт6kN4Ct&L^p6*/hA'1ڱV^gѽD٢ +P-A;}j_;Rl7 %cc=KH  +hCl}=y_j Z&nvPh$e<(y :}A0IHXG ~ǯj oH YpVl!0`ilD\JZD[0ڑ]布S]==0y}fcCA_:ucpp{NkCtT &{6i7GlMZdJXcI)akm*O-P)+0v?~۔nX_9줏N %%@#-T稉6]3jJ AI;}nN&9HpĠBHMZit'1mXM k(TwvlApҕ(Fdݎ%>5T!cbirj(aI ZuϦ gIb|Pb(w˘XY@PDj o\g֎ae(jIXb:h;hmD +M8&n"::h$oe :iIA{ePVh8&֢-Tc~taPfQ-bV+9oФE]v8 4)SE+ E;I[7NN|ȱ8`VmcXtMA3쓂`/=w"Nh$I9qؠvlhhؚ]wMт1yFGPnAaOZ{uc{&#&lOQct %FP8*Bwkw|79Kձ,h'ZQu?N R+3ՎhŰ;.ΥbEht Ƙ ,|eU/d e3v@G:#g"-yh4uMjh@=Zs pv{F@;*о hG іcycҪFMUs8cD'.6ZȆ`0(zvg1.J@]6-W;1fǡJ9{d#^6vOO' hڱ C500Hh>yf;{[^(ڿXYq~x 5t{"ӸAUFWZ[X]g=J2\(;DDP//)ꢴ  }b4Übj Ҵjh! s+n5Z:8;:ah-Hf<r8Tmm* "-KƔfANA%PY(+xl\9fQ z(mE+c%uJ=#­m~F;]"(E Oy֮cTi饍- =qf!V(d]h ІNi=}F61ښ(mhK@ c{~u:P,U .^@F; ag^Y#mRik:f?8fc$gCiD;+о hKUTR<̗̅QQLh(!@.໑:Ҿ4Tŭ۶SȟTDM@=hg&"*9ϠD;+о%bDd<62!Cqrik`۟-rCT*8b܊. ]`F^+^6L)|_EV79֐kM;WXfֿ(5-L=^،B8$.f2zC }̊Pŷ`_+ZpBt!b-IjR}H (Ə P. p9k|PJ4~9/jSW -1^06k/Ԭ@&vJ0Vʾ?[{*Q_ʱ,JSm@;cr4 lw78׎;X)c+"Ys' B;fI mg@+@Eک鋣Yy18Ҳx_}~-EΧژZ-& mh@3@v@XTAe +z1v籮Z 8yeB FPmh't$߱5LS ̖wi+~DzskQRVWјD .*A6Nzf˹4VOl 3ZN=TEICcm#@ |CX ZiYo$C*"w,:|,i**оME߱]95py"n(ZӒX $6<4 RcƦ*RPB. ڡr+α8hX ٷʱ,siMmhDYw^[K -ڲr<DhO0(idVڨt(Q*zm>8̣`+q'-9Dڎ]MHFPvPZlhXZp dmk"gRPR'њr@XniYiAⱮ?Y˚ yHhN$%v6 5th'6Ɯ]yۡc]Vֳ6RTY0JI[~sm;@EZp(Qrexay2Zϡ%B;ci1y枆hyChxkQOc*:/ĶƜ"T(AvT!k]twI(m :> Xʴ> m!u -R %i]Ak6 -mF`옇cƮc]O(܅Osh!;V(I(ѶІ\i"mCx?T Qa>oOI= x|3+(5͍k hœNڱ98unZ]%}}i:hP*{ J-mȵcc6bW+mONН_SyJiu}JhϏ4sRZ<fJ +&hX;1ٳXmara"/Gn7pծ8Ҕ2aA1cOJad]e;Lb,gDC:u}-a${JОb%zA m26١ qG[̡H vw]e>`sO[@ool1Y1 UءR:c]t6 ;]z"]ۖ(4F*v (ݏ;$g#)̸PH(=g_wΕ,)(D26ɋ@P:6b$ el=6qTr&fJ#m $Rt3}~>6ОN۶Bm %m(ޱT9ٱCP߻A |v`~ߦϞ+ 3FGІ]2h@kҹPPx lT&e@CG|ˡBdOI TgS}me1 shD5 c,/WTa7z(=|pli870 jCHs4%ؾ1//#V`C9Oc=Yw{Y ]/B0̈́VVvW-i۪6Z"C -7zꂖqm2 Jh%{i90tI49*S&-+i'5{ g8]ca@fKĻ[/ E iigmNxB%5*#hO5Ⓐ! mw0cu5q1}'0;&O9z8sAl5oeR(-/(H[cmK 㕽l["$^оƄex m(`HZfY PB]]gw׎$H 0sC ZRޕ Jݬm8/cT1Ԫm9VaDFG&жbi*%V#rZLqn@RSy Hnt'IXٱ5 bwpl`_2({F%"cvJN-Jd2Ml@8[\>:=SQ4Vv5c*BIZno J<-rZ@*ɬR(4';9Ce-ж^s#r&RZ8ю[h hOwB@钷&m=w}[ck<AvZZ$ hmYޞ5|YNNKxmyi`Zs܁VX"bٞmym wZf<8}X<rZP26b) 2 d7?u fUPAem%Zr:9i C g=Ȭ_˟S1ݞ `Hc}n!96UX$FHkuQډG/2w0uj枿xcoێ, =@+yr,hpu?MY3u?gsfN#P7,|\+ };kGQSb?x*-ӒkGJK?3~5BhjB{^l-a@ȥP;ѓc@uǖ:H6UԪqvfB{ |Itlyb4QxdͱPgcNi{9+QGPm -hɱ\XisG02ڙ<3~bD=jɞ w113"BҬ8{n7-4M9+{r,hRڌ8 h-fZ]Un9Q9휃cY7E7C*R8*8uÖv?.q~ѕKvN8ۨ,ҎV%ޥP(:9Vݱ=?5$ ~c@;̎K_-;SZ[%@M9|0:{T:dIefpvlJ|\X1}i'YvsК& Kی5q ^m);ڥkl= iv^brZ8i stp37 avl -1WRRwHq\*gHH -edr,h?fˊ{"PZLF@H+@{Y:IhǬbUJhgZ6;NLh-y[t$<8 _fڏq\RZgj>XBw3g+MLxqN vmT*-ޞ-,c"Dm=Z&@ɾhh}PkJDRb =";REΎ+wqѶhyf%mŰ6qv|[$!gCmwe2p) ĚU1X{CYJ<&6;&9 pMVzosZ]^s,Ő]KLUJ(>S&Kڬ8LDP(mOJBZvuNH{i-|4`6 ; Mf"@KTo}/RzZۊ<6Yق4FkȡRt(X1DzVB2.6emD$fD;Ff8j \YISqH+_\Xe\Kfڱ}]p츧Fg% Skc61TAlJ 5Ў1ЁC1U5Tk[SN{}>z!E{ τJNiCp$ګYi#=rv\mMh"M|ֻЖxfJ%eBIOI Ʀh[|4uꟽU%K:vDf9Z(m'vt$Se~_g-'OUZDvhJ1mܕ+e=$!І1B :V(n5IG.L5>^m={vJؠڰVıBqmmr%mPSy<K9i%48wS?;> @'|tA*'-f?}b_-׍'+cw䬏zECTrm= M(jKuOcj-J >[A ,i|Dqr_DΦW;^Bi(/ ټڟш$'6e^z~']znr#ܑ6lpP\= A[ ]Q}MZ<眶tu=G=C=ɾ)YZ Mi%F(c{ӴY7~~[ 91%@S$Kv(k3F I]|sJTwJ0+eZW$-Jj NF]yfq~WmձBq-qyD!2Y)/rr8)jZIZΒs\b{EX'sz\b]P-Gơ. S$HDeWYgKg"vlЎJRt=Za5$=ۢ8 g_m Ճ8޸ghf6pVVO9IҚ4L)j@7c/Io%_#sM䥞J佤Ұ ԄOZ/kq@ǎ{S86ik]rmhΌU'E)Zep9e5Uۥ8j«@]xIRfGe ڸZQAx6зO̸[$v[0Oی 6BuƒyR۴-_FI[mZ܄qia?cKtǪ'ohSRm Z-C+JZMx̤Mh:dY H9K\kõ*m?BLx ZƠmIZzTM۩m9y0gqZBKYג-AcIݘ[Ҵs8<}ُ_IcwvDVsV2QLҊ8$(mZcp7Zizc;R)oGlTcF1^^<@+>qxNrbaboe{4EZΠC+LHԥM;E{u_>A=tcfzW8nQ"-kR; -wґ6_/E{~cW]Fm+>zH p,} A RHZݗigܔWu?|.9t87:&; u"C-&ZХ _iH[$'4٘ @8-ڐ Z!7h9xIgq6&mZR5A;-дYysb8tILՍL hBA[ c;'JN?]6C|NÓ1Ce Ƅ ymm1(u_mx|dY =2ζJҾP>.f(]7ctROvVxV JZ_%hEhjhzQ,cB6p69{}= HmKJw~ɫ7J[z5fB-aVh Hچ%*b$M!W}`n^8z&PF-ЎHZ8᧟Lr~VLzXGB)|lrR:h5sl*E+N*g7I4$-z<z8W9|HKR:{g }z~(A+/ua $m:6K~i>n127619k5CpZaCYHlCMZx_]7Μ67'Δ*ZyVh͆7EŜiqZ\נC_Ǿ= ǡ}cZ$E M@Ϟvg{ٸ؈ӥʪ2jW! 8ۣ6Wm hwJɛ3|;/{f>N>6(<'8e]UF5台Ț0[y@Zl,e𝙺_0;Kp[ܣkgqoж5->Zz%bdL[DZ7F gx`4fEf"v D"mh71~(cqw%PŰBB\A+j[-ex㱊nHi?&bжAi&e9-enyv/+jxGMgmfaOnPŶ=}vm J!!J}5}-Qi]6Fb }=!-Iv=g6 05uPkp,^ŏ> p@=JS@u|1`#Z KfW8w:+lԡJx@h$ -(%ކM>7tƫH >/@۠@e 1+x%pcLYB"d7LHˉl_sDj6h-cp},d6lM:ژzi=[Cڽtʳڜaty$#[͆!%M-?"O4VNk[V$#/c9pvʳ;usH1&6Kh#RԆH|vi|˳ }%kʏ};`wOA48|aWE qCH>jiq6 3V~)6mlQ:nL="l 6@i%NA-֊ӏ\2lP8(:>+I|[!G lihe!.њJiQU~ S Hucڎ98I( FDiC#N;j"hWN;?nɀQg@ *ЍESF76s\$-ޔ%Ycա-qE?߬j.g-S*q4|" 5LjV[{Zڤa 6urw5 .'m8;fτ Zٕ2졟Vq/=Jж GJW'% SsgM{j5.i|Ogq8Kn@: /֞P8"+i `Ts5^C 20t}8k|')Nh[C=nIv~ژжhb~SK>i{)L~㳣cL>kmIYCh[ڴHюMJ^Ok9cTHkakիp8;)Ɨoʠ[6èi֞ m@iHOקv+.sh7e!e\qV#r2҂h uڋrpucIXkc,V|T(dy76c:Er~(gX? 6|v4Cic\x:[E\x|c9zSq 7ˮ㞶NhZsr̈TJm`J8;a"18ՙg%@ Jko^h=ҎE$꫄wԺ1Q(*6*g,G2)#;o-Ђf\Q<;2-^,EM'Myõ*5h ,t:Մu@{G$hTR~lvev9 u=Y|thZ|gUZ#F[e3?mWψK8#UhAhin(*ʔb qc(_bεg 5)hYM@H+bH ;?pSPě9Q "X/aV"IC8(-N͙DiᩩeQP't` #P 5ZKh!h~(JT[GN SM}yRgg8wZ+n_BqCe@+A--Hiexnp2ҠVE ǷMQE0 ĩf"?BrH`&ZmҺฦm --5m#;>Y6Q2U`PvMIDATX^|PZjOCFi+$I1wLjV6vKcU8,UHB8Жcwrp~ (} cDLi1Q^6cjc%J!(riB'V"Ᵽ8A:k<5]) Zj1T\Kc jǵB: W%@['({9UCK7<_Rkd=::&p!hOP!8?CdRLFWhc* B% Tଠ!@m2A%Pe) 8{G;6)}GڿFV۸ QA= $QACD]#fJk,iYPK)RQQ @{zV[DD|.xM^؝%Euv3.>uKBl2J`y^0V'ҚUw@(r W m>յ@mlvxg*5$λRk?_\eL|0t㲻nyy: &$Y|P51%5D i  0⯾Ļial鬂ڣ?d< R/i)cmxkq{=[ t ؑꏮ5o^g_Lec،/KJZ8u{.{/SZDlBfp^Wucڍ2W3C*oj h !IA{@mآxdBto8h!RY:[iBYB# t B EizG8`~̩yRZGgGH4rYgG CIB@[7q֏m3]s+p6h>t;J=p / j 6+ Jx;񫗁TIff< X'}NzT./=1ZhcAMʄԚysǶ|ݟeU㙍Z6 cec[EU44P9xcTqulqV $c\o(mPݿY lq-՚ `1K&àpkcwcm϶qyNY^ @|[,P.Bt cbr{MCciS'R+mO};VST:j%O>ϞL3jNlPU11@{p`VM(o`8Wz77n%_72yE658c~LJ g<6t`x|PMyn)jIaP>8hKChӇʺT jNdݐd9jwNȠ)>̎Ao>B1罻L&lLs%N^20V7YVXoIJ>qPvzʃu 6TD1h+xTy}yc [s q !o߀6\X9ӪA +}ܣ:fq[<[,7v7cylTWl B>=;`8 >_gd}϶zh-3m%q tz{?bӚ!`3?lewe:۴qYcxn5%P>b;*4JDE^\P't.F8hǏLYv|m_# wYִd2FkƸ7>Fho^;v Y gYJ-f]PQ f8{8hϑiSFZg#V%'צ2}L][杞Jz:HI;>xy, U1YMi 'Z|@v}qVzgz/8Iq|GQ<}7dF-TC-n(:8awNO{yoCm7dv?2摝ڎk4 @+܈ܲ}Qg(M#B3z\6&3u;gnPV/b7mk8h#] Jo45Eٞcꤵ;\ڒY7Y`WZkv|۸52fǮMQ-u\ql9κjE݉E2l5J@Q͵A7OW֊-ܰ"iXg\1 {cKcsZjyӑ[)[6Oás~G6ӫկ[g5aԥ|Y2ݨƨJKBYaӇzFX n!جJ5` Z2ɴ!TߌZj ;EFū|Ԣ"hWT iS֕Hftd&5N'~~ݽ|֣'Ϫe}L+!ǩ҄)n YyORcY3iVƚ!ܬbYZ2mu^Ѥg!`8\QF1F::Nj6 Q1_dBh_Ar+@CDqZ|`Ql%.lH0N4/F(s Qm8M23O);\5+J_#=ƺUne{c CqEIƨT[r43gVc\#-@ (Ӻ8opg.:TvzfTY~$LCC> Zz֖u6lء~,v`֐x&ɔZPg!mr+ئ=;d"զ\jFfmii>@I[:eUHEI@hZ-9Pɴ!l"՞?vKPkz 08oMkab~CT hej  ?zk)!q'+`VR+FZZ Qmʭf;_YaGP0d!SK20o @ 4w5h!*$tr{Z2vo+D큶˪ 9<۰s]% \^uD+ܖ6M7hg{kbb98K]рϮyߘD 괵Y|6 "ھ.CpV)ʉl;"F(ȴr^ FC:SmO<@}>7+xH5"_d?OY:@mL23/Hˎ:}7z[iKF(*/%DE@uNVQYˌ2=]Pv3c0K&F(G!aU~ZapGPYسhߓ2NkX7Q| ("_Y8 miu=:ٲ[V>5h_X,)mC"@ |]p_#>v}~ˉhfJSԅH?WUIENDB`PK! ''edit-tag-form.phpnu[PK!URE 'profile.phpnu[PK!Uۅ&")includes/class-wp-links-list-table.phpnu[PK!hHincludes/class-pclzip.phpnu[PK!R._,YFincludes/class-walker-nav-menu-checklist.phpnu[PK!]o,Zincludes/class-bulk-plugin-upgrader-skin.phpnu[PK!aŹAA+bincludes/class-wp-filesystem-ftpsockets.phpnu[PK!dEdE&"includes/class-wp-users-list-table.phpnu[PK!vZ''&includes/class-custom-image-header.phpnu[PK!w]3 (Yincludes/class-wp-ajax-upgrader-skin.phpnu[PK!71maincludes/credits.phpnu[PK!_jNNincludes/plugin.phpnu[PK!%EIEIincludes/file.phpnu[PK!k  Pdincludes/list-table.phpnu[PK!|??qincludes/media.phpnu[PK!]=S22,: includes/class-ftp-pure.phpnu[PK!dMMO includes/privacy-tools.phpnu[PK!@!'@ includes/class-wp-list-table-compat.phpnu[PK!Y633+p includes/class-bulk-theme-upgrader-skin.phpnu[PK!98 includes/screen.phpnu[PK!Pؽ% includes/class-bulk-upgrader-skin.phpnu[PK!&" includes/class-theme-upgrader-skin.phpnu[PK!i$9zz(m includes/class-wp-plugins-list-table.phpnu[PK!Ѕ"" ? includes/translation-install.phpnu[PK!"!,M0 includes/plugin-install.phpnu[PK!fn includes/theme.phpnu[PK!,+<+<.T includes/class-wp-theme-install-list-table.phpnu[PK!g)s//'W includes/class-walker-nav-menu-edit.phpnu[PK!4\\&& includes/class-wp-media-list-table.phpnu[PK!&G includes/class-wp-posts-list-table.phpnu[PK!UïJJ&W includes/class-wp-terms-list-table.phpnu[PK!Uxvv);includes/class-wp-comments-list-table.phpnu[PK!WzMzM!includes/class-wp-site-health.phpnu[PK!- 77)_includes/class-wp-ms-users-list-table.phpnu[PK! V22includes/schema.phpnu[PK!kj6]]Lincludes/image.phpnu[PK!&aaAincludes/network.phpnu[PK!o=àà includes/class-wp-list-table.phpnu[PK!fJ Eincludes/deprecated.phpnu[PK!2Bc 'Xincludes/class-plugin-upgrader-skin.phpnu[PK!Y |includes/ms-deprecated.phpnu[PK!+փ'includes/class-wp-automatic-updater.phpnu[PK!pwincludes/edit-tag-messages.phpnu[PK!7v~~bincludes/class-wp-upgrader.phpnu[PK!(%.Vincludes/comment.phpnu[PK! 3446%nincludes/class-wp-application-passwords-list-table.phpnu[PK!F&includes/class-wp-site-icon.phpnu[PK!m; q``includes/ms-admin-filters.phpnu[PK!ʻʦincludes/nav-menu.phpnu[PK!͘UU%\includes/class-wp-filesystem-ssh2.phpnu[PK!G  #includes/class-wp-upgrader-skin.phpnu[PK!H5F00'Oincludes/class-theme-installer-skin.phpnu[PK!J8 8 'Fincludes/class-file-upload-upgrader.phpnu[PK!5i#-- includes/taxonomy.phpnu[PK!n=G)includes/theme-install.phpnu[PK!33,JCincludes/class-wp-privacy-requests-table.phpnu[PK!Q8dvincludes/class-wp-screen.phpnu[PK!dJ:J:)includes/class-language-pack-upgrader.phpnu[PK!` ?jHjH&Bincludes/class-wp-community-events.phpnu[PK!wx!aahincludes/class-wp-importer.phpnu[PK!TnI1>1>includes/revision.phpnu[PK!ؓOwZZ%includes/class-wp-filesystem-base.phpnu[PK!-1^Bincludes/upgrade.phpnu[PK! 3OO)includes/class-wp-ms-sites-list-table.phpnu[PK!fCjCj;includes/class-ftp.phpnu[PK!GgJZi:i: ]includes/class-core-upgrader.phpnu[PK!:L L .includes/class-language-pack-upgrader-skin.phpnu[PK!R,includes/class-wp-privacy-policy-content.phpnu[PK!J\7mincludes/image-edit.phpnu[PK!S)+3+3.includes/class-wp-site-health-auto-updates.phpnu[PK!<=)=).includes/post.phpnu[PK!3QQWincludes/continents-cities.phpnu[PK!l^includes/options.phpnu[PK!j7Q7Q$Uincludes/class-custom-background.phpnu[PK!''' includes/class-wp-themes-list-table.phpnu[PK!\%%,3includes/class-walker-category-checklist.phpnu[PK!ˌSS"Dincludes/class-plugin-upgrader.phpnu[PK!aq .includes/class-wp-post-comments-list-table.phpnu[PK!lmlmОincludes/template.phpnu[PK!lL includes/import.phpnu[PK!nȍOO& includes/user.phpnu[PK!j\W{N{N'v includes/class-wp-filesystem-ftpext.phpnu[PK!9## includes/menu.phpnu[PK!bS includes/update-core.phpnu[PK!w**!includes/bookmark.phpnu[PK!!,,!includes/dashboard.phpnu[PK! yCC  "includes/class-wp-debug-data.phpnu[PK!wAf$#includes/class-wp-upgrader-skins.phpnu[PK!  =#includes/class-wp-privacy-data-export-requests-list-table.phpnu[PK!h #includes/admin.phpnu[PK!,=!!$includes/class-ftp-sockets.phpnu[PK!|{$(j(j*P)$includes/class-wp-ms-themes-list-table.phpnu[PK!?<<>ғ$includes/class-wp-privacy-data-removal-requests-list-table.phpnu[PK!U66|$includes/ajax-actions.phpnu[PK!Ka[5`5`!&includes/class-theme-upgrader.phpnu[PK!K$7B'includes/meta-boxes.phpnu[PK!_J:(includes/admin-filters.phpnu[PK!ʼn *T(includes/class-automatic-upgrader-skin.phpnu[PK! 'b(includes/class-wp-internal-pointers.phpnu[PK!t(includes/ms.phpnu[PK!m`>>(includes/noop.phpnu[PK!O[+@@'D(includes/class-wp-filesystem-direct.phpnu[PK!m?)includes/misc.phpnu[PK!3**)includes/widgets.phpnu[PK!CL C.C.(*includes/class-plugin-installer-skin.phpnu[PK!X>D*includes/update.phpnu[PK!F,ZZ/*includes/class-wp-plugin-install-list-table.phpnu[PK!!Y \ \'+includes/export.phpnu[PK!EH4H4 Ѓ+credits.phpnu[PK!aS+custom-header.phpnu[PK!>+ms-upgrade-network.phpnu[PK!c _+media.phpnu[PK!ov+custom-background.phpnu[PK!Ecel33[+moderation.phpnu[PK!Uφ+ms-options.phpnu[PK! +themes.phpnu[PK!/u>C,admin-ajax.phpnu[PK!g|f,plugin-install.phpnu[PK![7D },nav-menus.phpnu[PK!Vy{{`-link-manager.phpnu[PK! dN__sq-contribute.phpnu[PK!Ap66 -upload.phpnu[PK!h;;-network/site-themes.phpnu[PK!]Z}z-network/profile.phpnu[PK!$F^-network/credits.phpnu[PK!yh'RR-network/settings.phpnu[PK!>>L..network/themes.phpnu[PK!kh'']m.network/site-info.phpnu[PK!yyɉ.network/plugin-install.phpnu[PK!v̫.network/contribute.phpnu[PK!33ь.network/sites.phpnu[PK!(.network/site-settings.phpnu[PK!V.network/plugins.phpnu[PK!t`Z.network/edit.phpnu[PK!.>vv.network/theme-install.phpnu[PK!އ[S--.network/site-users.phpnu[PK!Ɩ$$ /network/users.phpnu[PK!/APP0/network/upgrade.phpnu[PK!s<*D/network/setup.phpnu[PK!q1t{${$bE/network/site-new.phpnu[PK!w,!j/network/user-edit.phpnu[PK!, , ck/network/index.phpnu[PK!dv/network/freedoms.phpnu[PK!x/network/theme-editor.phpnu[PK! Zy/network/privacy.phpnu[PK!S"z/network/menu.phpnu[PK!]/network/about.phpnu[PK!4/network/update-core.phpnu[PK!Ph ׏/network/admin.phpnu[PK!3/network/plugin-editor.phpnu[PK!s f/network/update.phpnu[PK!8S  j/network/user-new.phpnu[PK!#/widgets-form-blocks.phpnu[PK!/< ߾/network.phpnu[PK!h_UU/upgrade-functions.phpnu[PK!GKGK/options-permalink.phpnu[PK!D!0site-health.phpnu[PK!aC  60media-new.phpnu[PK!=x'L(L( CC0customize.phpnu[PK!kqq k0plugins.phpnu[PK!tޜ 0export-personal-data.phpnu[PK!~3p,, 0comment.phpnu[PK! zJJJ1edit.phpnu[PK!πږb1admin-functions.phpnu[PK! d1post-new.phpnu[PK!W Zo1ms-edit.phpnu[PK!UUmp1theme-install.phpnu[PK!"**1images/align-left.pngnu[PK!1images/media-button-music.gifnu[PK!!1images/post-formats32.pngnu[PK!a1images/w-logo-white.pngnu[PK!1images/align-center-2x.pngnu[PK!1images/align-right-2x.pngnu[PK!]rr1images/comment-grey-bubble.pngnu[PK!3JRRN1images/media-button-2x.pngnu[PK!bUrg1images/list.pngnu[PK!1images/wheel.pngnu[PK!lK2images/menu.pngnu[PK!)SS)2images/icons32-vs-2x.pngnu[PK!*99}2images/xit-2x.gifnu[PK!4{72images/align-none.pngnu[PK!|6h2images/date-button-2x.gifnu[PK!% J2images/generic.pngnu[PK!0EE[2images/contribute-main.svgnu[PK!Uaay2images/sort-2x.gifnu[PK!@ˑ""2images/contribute-no-code.svgnu[PK!tFF[2images/resize-rtl.gifnu[PK!^82images/imgedit-icons-2x.pngnu[PK!""!3images/wpspin_light-2x.gifnu[PK!9s63images/freedom-1.svgnu[PK!0?E11<3images/menu-2x.pngnu[PK!m3images/about-release-badge.svgnu[PK!7^n р3images/post-formats-vs.pngnu[PK!V3images/imgedit-icons.pngnu[PK!5 " U U̚3images/icons32-2x.pngnu[PK!yp#3images/menu-vs.pngnu[PK!t  ;4images/dashboard-background.svgnu[PK!ӷ(!4images/comment-grey-bubble-2x.pngnu[PK!!04images/xit.gifnu[PK!) ǰ 4images/wordpress-logo.pngnu[PK!}j4images/align-right.pngnu[PK! )gg 4images/wordpress-logo-white.svgnu[PK!_nhh&4images/marker.pngnu[PK!ʮ,HH{(4images/spinner.gifnu[PK!H74images/media-button-video.gifnu[PK!pp74images/spinner-2x.gifnu[PK!mIZGGU4images/icons32-vs.pngnu[PK!W u4images/bubble_bg-2x.gifnu[PK!Vo77w4images/sort.gifnu[PK!{7}w4images/mask.pngnu[PK!(CC4images/media-button.pngnu[PK!axx 4images/se.pngnu[PK!@@́4images/resize.gifnu[PK!~[M4images/bubble_bg.gifnu[PK!Ӈ4images/date-button.gifnu[PK!) 7I4images/wordpress-logo.svgnu[PK![w}G /4images/freedom-4.svgnu[PK!S4images/stars.pngnu[PK!go4images/arrows.pngnu[PK!8j__4images/arrows-2x.pngnu[PK!S4images/media-button-other.gifnu[PK!WW4images/icons32.pngnu[PK!v4images/yes.pngnu[PK!L4images/about-texture.pngnu[PK!V6images/freedom-2.svgnu[PK!Pqv6images/align-left-2x.pngnu[PK! w6images/no.pngnu[PK!1_z6images/stars-2x.pngnu[PK! 4h6images/resize-rtl-2x.gifnu[PK! !(!!π6images/freedom-3.svgnu[PK!}46images/resize-2x.gifnu[PK!n6images/browser-rtl.pngnu[PK!;}DD$$?&7images/contribute-code.svgnu[PK!& \\K7images/loading.gifnu[PK!Qmm$Q7images/post-formats.pngnu[PK!s0Y7images/post-formats32-vs.pngnu[PK!F Sn7images/media-button-image.gifnu[PK!,}) ) 0o7images/w-logo-blue.pngnu[PK!3L-{7images/wpspin_light.gifnu[PK!UD7images/list-2x.pngnu[PK!(ѣyy7images/align-none-2x.pngnu[PK!?E007images/menu-vs-2x.pngnu[PK!y""ʻ7images/align-center.pngnu[PK!S37images/privacy.svgnu[PK!DⲞ7images/browser.pngnu[PK!a8load-styles.phpnu[PK!q!!@j8admin-header.phpnu[PK!7J::,8edit-form-blocks.phpnu[PK!]ajy&& '8my-sites.phpnu[PK!"=II8privacy-policy-guide.phpnu[PK!5h++8js/tags-box.jsnu[PK!Ljn9js/tags-suggest.min.jsnu[PK!`tȵ 9js/common.jsnu[PK!- 9js/user-suggest.jsnu[PK!QC9js/custom-background.min.jsnu[PK!dUU9js/customize-nav-menus.jsnu[PK!#մi;js/tags-suggest.jsnu[PK!F_;js/language-chooser.min.jsnu[PK!nBL ;js/accordion.jsnu[PK!;J1J1i;js/widgets.min.jsnu[PK!֢";js/site-health.min.jsnu[PK!2jvll<js/set-post-thumbnail.min.jsnu[PK!ߋ;;<js/edit-comments.min.jsnu[PK!!t@<js/updates.min.jsnu[PK!:<js/application-passwords.jsnu[PK!37ޙ <js/inline-edit-tax.min.jsnu[PK!-wp&++=js/image-edit.min.jsnu[PK!dX X 1=js/svg-painter.min.jsnu[PK!\AA:=js/inline-edit-tax.jsnu[PK!tk   ?Y=js/gallery.jsnu[PK!Y3YqYqo=js/customize-controls.jsnu[PK!B## 'Ajs/link.jsnu[PK!=E44Ajs/editor-expand.min.jsnu[PK!'{++f%Bjs/user-profile.jsnu[PK!iD-D-sQBjs/code-editor.jsnu[PK!GEE~Bjs/revisions.min.jsnu[PK!X 1Bjs/tags-box.min.jsnu[PK!G ccGBjs/site-icon.jsnu[PK!1jjBjs/accordion.min.jsnu[PK!dBBBjs/postbox.min.jsnu[PK!} n n Cjs/updates.jsnu[PK!& ( (cvDjs/privacy-tools.jsnu[PK!MJIJIƞDjs/post.min.jsnu[PK! M MNDjs/common.min.jsnu[PK!J5Ejs/privacy-tools.min.jsnu[PK!;;aHEjs/password-toggle.jsnu[PK!zvu__!MEjs/password-strength-meter.min.jsnu[PK!qpREjs/custom-header.jsnu[PK!QԃZEjs/customize-controls.min.jsnu[PK!T9~~ Gjs/tags.jsnu[PK!wpV@V@w#Gjs/inline-edit-post.jsnu[PK!  dGjs/farbtastic.jsnu[PK!.!3434\Gjs/editor.min.jsnu[PK!s  ϶Gjs/comment.min.jsnu[PK!7tGjs/customize-nav-menus.min.jsnu[PK!OѨ= = ToHjs/comment.jsnu[PK!^#{{zHjs/media-upload.min.jsnu[PK!8Hjs/user-suggest.min.jsnu[PK!h..Hjs/theme-plugin-editor.min.jsnu[PK!r-00Hjs/edit-comments.jsnu[PK! c cYBIjs/theme-plugin-editor.jsnu[PK! Ijs/xfn.min.jsnu[PK!ħIjs/site-icon.min.jsnu[PK!l;OOհIjs/password-toggle.min.jsnu[PK!} n nmIjs/customize-widgets.min.jsnu[PK!5ZZ "Jjs/widgets.jsnu[PK!tc) /}Jjs/media-upload.jsnu[PK!niniJjs/theme.min.jsnu[PK! Jjs/revisions.jsnu[PK!S!! _yKjs/post.jsnu[PK!11Ljs/site-health.jsnu[PK!!`c c DLjs/plugin-install.min.jsnu[PK!QQ NLjs/theme.jsnu[PK!kB4A  (Mjs/color-picker.min.jsnu[PK!h|Ո5Mjs/password-strength-meter.jsnu[PK!$ FMjs/editor.jsnu[PK!)H H Mjs/application-passwords.min.jsnu[PK!]1Njs/link.min.jsnu[PK!*V Njs/nav-menu.jsnu[PK!<̤kIkI Njs/postbox.jsnu[PK!.Ojs/customize-widgets.jsnu[PK!e\VV$Pjs/tags.min.jsnu[PK!NQy[ [ Pjs/custom-background.jsnu[PK!=ooZ-Pjs/editor-expand.jsnu[PK!Mn&& Pjs/color-picker.jsnu[PK!P[\[\PPjs/iris.min.jsnu[PK!9ՒUUVQjs/nav-menu.min.jsnu[PK!ȽB"" Qjs/media.jsnu[PK!OH( xQjs/xfn.jsnu[PK!,jQjs/word-count.jsnu[PK!c9Qjs/svg-painter.jsnu[PK!w Qjs/media.min.jsnu[PK!-X   Rjs/code-editor.min.jsnu[PK!KggpRjs/media-gallery.min.jsnu[PK!ON|Rjs/plugin-install.jsnu[PK!D1s,Rjs/word-count.min.jsnu[PK!W.ll.3Rjs/set-post-thumbnail.jsnu[PK!Eii6Rjs/language-chooser.jsnu[PK!^݋kk:Rjs/dashboard.jsnu[PK!Ǭw|w|[Rjs/image-edit.jsnu[PK!7l"l"#Sjs/dashboard.min.jsnu[PK!d1ESjs/auth-app.min.jsnu[PK!(hhNSjs/auth-app.jsnu[PK!cSjs/gallery.min.jsnu[PK!@sSjs/inline-edit-post.min.jsnu[PK!JIr(r("7Sjs/widgets/media-gallery-widget.jsnu[PK!E1 Sjs/widgets/media-audio-widget.jsnu[PK!S$Sjs/widgets/media-audio-widget.min.jsnu[PK!E $Sjs/widgets/media-video-widget.min.jsnu[PK!2kUSjs/widgets/text-widgets.min.jsnu[PK!^ll Sjs/widgets/media-video-widget.jsnu[PK!Vd$=Tjs/widgets/media-image-widget.min.jsnu[PK!+ -%Tjs/widgets/custom-html-widgets.min.jsnu[PK!8v\\ ,Tjs/widgets/media-image-widget.jsnu[PK!pZ77LBTjs/widgets/media-widgets.min.jsnu[PK!Z&qzTjs/widgets/media-gallery-widget.min.jsnu[PK!'rFFTjs/widgets/text-widgets.jsnu[PK! ==!Tjs/widgets/custom-html-widgets.jsnu[PK! Ujs/widgets/media-widgets.jsnu[PK!3}(^^Ujs/user-profile.min.jsnu[PK!UUjs/media-gallery.jsnu[PK!h*R R Upress-this.phpnu[PK!Q==Usetup-config.phpnu[PK!fj Vms-sites.phpnu[PK!@3Vinstall-helper.phpnu[PK!550Vedit-comments.phpnu[PK! fVrevision.phpnu[PK!C`MM e|Vusers.phpnu[PK! I oVupgrade.phpnu[PK!>Vcss/l10n-rtl.cssnu[PK! q`_`_XVcss/media-rtl.cssnu[PK!`jjNWcss/about-rtl.cssnu[PK!k3  IWcss/color-picker-rtl.cssnu[PK!GvLLWcss/media-rtl.min.cssnu[PK!,G:/:/Xcss/nav-menus.min.cssnu[PK!|+gKgKTEXcss/dashboard.min.cssnu[PK!H# # Xcss/color-picker-rtl.min.cssnu[PK!}oXcss/list-tables-rtl.cssnu[PK!%غ"s:Ycss/customize-controls-rtl.min.cssnu[PK!ԨssZcss/login-rtl.min.cssnu[PK!ćt<t<G2Zcss/nav-menus-rtl.cssnu[PK!goZcss/site-health.min.cssnu[PK!K0Zcss/customize-controls.min.cssnu[PK!sBt%%j[css/customize-widgets.min.cssnu[PK!:A& & D[css/revisions-rtl.min.cssnu[PK!_[css/edit-rtl.cssnu[PK! m``2\css/dashboard.cssnu[PK!Y; \css/deprecated-media-rtl.min.cssnu[PK!v8v8\css/widgets-rtl.min.cssnu[PK!9''\css/code-editor.cssnu[PK!EtFF#\css/customize-nav-menus-rtl.min.cssnu[PK!/]css/list-tables.cssnu[PK!]css/site-icon.cssnu[PK! DD]css/widgets-rtl.cssnu[PK!RQQN^css/about-rtl.min.cssnu[PK!v&&{g^css/wp-admin-rtl.min.cssnu[PK!Z*X==i^css/customize-controls-rtl.cssnu[PK!g7  tx_css/deprecated-media-rtl.cssnu[PK!vʹcc̒_css/edit-rtl.min.cssnu[PK!)' V/V/_css/nav-menus-rtl.min.cssnu[PK!źx &`css/forms.cssnu[PK!11٦`css/customize-widgets-rtl.cssnu[PK!9'SS`css/common.min.cssnu[PK! X  acss/customize-controls.cssnu[PK!dabcss/site-health.cssnu[PK![ e bcss/l10n-rtl.min.cssnu[PK!'taabcss/forms.min.cssnu[PK!R@'@'1Iccss/revisions-rtl.cssnu[PK!occpccss/farbtastic.cssnu[PK!X[sccss/deprecated-media.cssnu[PK!X0ccss/deprecated-media.min.cssnu[PK!w{{Sccss/themes-rtl.cssnu[PK!߹Ddcss/wp-admin.cssnu[PK!X_G V VEdcss/customize-nav-menus-rtl.cssnu[PK!{NNJdcss/code-editor-rtl.cssnu[PK!We_ߢdcss/wp-admin.min.cssnu[PK!eJJ dcss/admin-menu.cssnu[PK!c9..dcss/site-health-rtl.cssnu[PK!ii [ecss/l10n.cssnu[PK!-,LLecss/media.min.cssnu[PK!dcc)kecss/edit.min.cssnu[PK! Uecss/color-picker.min.cssnu[PK!-v ecss/login.cssnu[PK!̷ecss/code-editor.min.cssnu[PK!LCUUecss/customize-nav-menus.cssnu[PK!WJJRfcss/admin-menu-rtl.cssnu[PK!##ȝfcss/forms-rtl.cssnu[PK!9'؁,gcss/site-health-rtl.min.cssnu[PK!_J  I8gcss/revisions.min.cssnu[PK!_  Xgcss/edit.cssnu[PK!0h%%!gcss/customize-widgets-rtl.min.cssnu[PK!r}'gcss/wp-admin-rtl.cssnu[PK!\EEGhcss/themes.cssnu[PK!Y<Y<ʡhcss/admin-menu.min.cssnu[PK!oaaihcss/forms-rtl.min.cssnu[PK!ARn@icss/login-rtl.cssnu[PK!;`}}[icss/themes.min.cssnu[PK!ncicss/code-editor-rtl.min.cssnu[PK!vz~~icss/list-tables.min.cssnu[PK!TIl^jcss/farbtastic-rtl.cssnu[PK!'ʡnnfajcss/login.min.cssnu[PK!nh}}wjcss/themes-rtl.min.cssnu[PK!r- Rjcss/install-rtl.min.cssnu[PK!v11kcss/customize-widgets.cssnu[PK!oN:kcss/common.cssnu[PK!##Wlcss/common-rtl.cssnu[PK!GGumcss/install-rtl.cssnu[PK!r"dKdK-mcss/dashboard-rtl.min.cssnu[PK!ƀ! mcss/l10n.min.cssnu[PK!{+mcss/install.min.cssnu[PK!=F5<5<mcss/nav-menus.cssnu[PK!!aas8s83ncss/widgets.min.cssnu[PK!dQQkncss/about.min.cssnu[PK!FܞFFԽncss/customize-nav-menus.min.cssnu[PK!^ocss/common-rtl.min.cssnu[PK!2_2_ ocss/media.cssnu[PK!*r__:pcss/colors/light/colors.scssnu[PK!B%eNeN?pcss/colors/light/colors.cssnu[PK!‚DDPpcss/colors/light/colors.min.cssnu[PK!tڷDD#pcss/colors/light/colors-rtl.min.cssnu[PK!, z$fNfNqcss/colors/light/colors-rtl.cssnu[PK!j99gqcss/colors/_mixins.scssnu[PK!< LLkqcss/colors/_admin.scssnu[PK!7jjqcss/colors/midnight/colors.scssnu[PK!n-_KKqcss/colors/midnight/colors.cssnu[PK!'C'C"rcss/colors/midnight/colors.min.cssnu[PK!N &(C(C&[Hrcss/colors/midnight/colors-rtl.min.cssnu[PK!GKK"ًrcss/colors/midnight/colors-rtl.cssnu[PK!znnrcss/colors/_variables.scssnu[PK!>J*rcss/colors/modern/colors.scssnu[PK!ZMKKrcss/colors/modern/colors.cssnu[PK!GM'C'C 9.scss/colors/modern/colors.min.cssnu[PK!c(C(C$qscss/colors/modern/colors-rtl.min.cssnu[PK!W`KK ,scss/colors/modern/colors-rtl.cssnu[PK!mtcss/colors/coffee/colors.scssnu[PK!™EIEI^tcss/colors/coffee/colors.cssnu[PK!J~@@ Ktcss/colors/coffee/colors.min.cssnu[PK!nd@@$tcss/colors/coffee/colors-rtl.min.cssnu[PK!ԵMFIFI i user/freedoms.phpnu[PK!:9hS user/privacy.phpnu[PK!C)F  user/menu.phpnu[PK!D user/about.phpnu[PK!aa user/admin.phpnu[PK!7.rT<T<options-discussion.phpnu[PK!X COlink-add.phpnu[PK!1]f FRerase-personal-data.phpnu[PK!2 4 45_plugin-editor.phpnu[PK!*{ÒNN widgets.phpnu[PK!EX&&Ooptions-reading.phpnu[PK!bB  ms-admin.phpnu[PK!ςl00  update.phpnu[PK!Ƴ6]] 9;user-new.phpnu[PK!~xms-delete-site.phpnu[PK!}#site-health-info.phpnu[PK!qt** export.phpnu[PK!Z u uimages/freedoms.pngnu[PK!?hh6aimages/privacy.pngnu[PK>>]5