web/wp-admin/import/mt.php
author hurons@caf4f556-3d62-0410-8435-a86758001935
Tue, 02 Feb 2010 15:44:16 +0000
branchwordpress
changeset 132 4d4862461b8d
parent 109 03b0d1493584
permissions -rw-r--r--
Update Wordpress 2.9.1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
132
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
     1
<?php
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
     2
/**
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
     3
 * Movable Type and TypePad Importer
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
     4
 *
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
     5
 * @package WordPress
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
     6
 * @subpackage Importer
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
     7
 */
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
     8
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
     9
/**
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    10
 * Moveable Type and TypePad Importer class
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    11
 *
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    12
 * Upload your exported Movable Type or TypePad entries into WordPress.
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    13
 *
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    14
 * @since unknown
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    15
 */
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    16
class MT_Import {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    17
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    18
	var $posts = array ();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    19
	var $file;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    20
	var $id;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    21
	var $mtnames = array ();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    22
	var $newauthornames = array ();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    23
	var $j = -1;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    24
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    25
	function header() {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    26
		echo '<div class="wrap">';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    27
		screen_icon();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    28
		echo '<h2>'.__('Import Movable Type or TypePad').'</h2>';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    29
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    30
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    31
	function footer() {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    32
		echo '</div>';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    33
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    34
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    35
	function greet() {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    36
		$this->header();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    37
?>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    38
<div class="narrow">
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    39
<p><?php _e('Howdy! We&#8217;re about to begin importing all of your Movable Type or TypePad entries into WordPress. To begin, either choose a file to upload and click &#8220;Upload file and import&#8221;, or use FTP to upload your MT export file as <code>mt-export.txt</code> in your <code>/wp-content/</code> directory and then click "Import mt-export.txt"'); ?></p>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    40
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    41
<?php wp_import_upload_form( add_query_arg('step', 1) ); ?>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    42
<form method="post" action="<?php echo esc_attr(add_query_arg('step', 1)); ?>" class="import-upload-form">
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    43
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    44
<?php wp_nonce_field('import-upload'); ?>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    45
<p>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    46
	<input type="hidden" name="upload_type" value="ftp" />
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    47
<?php _e('Or use <code>mt-export.txt</code> in your <code>/wp-content/</code> directory'); ?></p>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    48
<p class="submit">
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    49
<input type="submit" class="button" value="<?php esc_attr_e('Import mt-export.txt'); ?>" />
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    50
</p>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    51
</form>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    52
<p><?php _e('The importer is smart enough not to import duplicates, so you can run this multiple times without worry if&#8212;for whatever reason&#8212;it doesn&#8217;t finish. If you get an <strong>out of memory</strong> error try splitting up the import file into pieces.'); ?> </p>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    53
</div>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    54
<?php
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    55
		$this->footer();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    56
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    57
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    58
	function users_form($n) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    59
		global $wpdb;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    60
		$users = $wpdb->get_results("SELECT * FROM $wpdb->users ORDER BY ID");
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    61
?><select name="userselect[<?php echo $n; ?>]">
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    62
	<option value="#NONE#"><?php _e('- Select -') ?></option>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    63
	<?php
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    64
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    65
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    66
		foreach ($users as $user) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    67
			echo '<option value="'.$user->user_login.'">'.$user->user_login.'</option>';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    68
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    69
?>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    70
	</select>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    71
	<?php
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    72
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    73
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    74
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    75
	function has_gzip() {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    76
		return is_callable('gzopen');
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    77
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    78
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    79
	function fopen($filename, $mode='r') {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    80
		if ( $this->has_gzip() )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    81
			return gzopen($filename, $mode);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    82
		return fopen($filename, $mode);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    83
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    84
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    85
	function feof($fp) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    86
		if ( $this->has_gzip() )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    87
			return gzeof($fp);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    88
		return feof($fp);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    89
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    90
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    91
	function fgets($fp, $len=8192) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    92
		if ( $this->has_gzip() )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    93
			return gzgets($fp, $len);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    94
		return fgets($fp, $len);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    95
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    96
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    97
	function fclose($fp) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    98
		if ( $this->has_gzip() )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
    99
			return gzclose($fp);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   100
		return fclose($fp);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   101
 	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   102
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   103
	//function to check the authorname and do the mapping
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   104
	function checkauthor($author) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   105
		//mtnames is an array with the names in the mt import file
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   106
		$pass = wp_generate_password();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   107
		if (!(in_array($author, $this->mtnames))) { //a new mt author name is found
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   108
			++ $this->j;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   109
			$this->mtnames[$this->j] = $author; //add that new mt author name to an array
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   110
			$user_id = username_exists($this->newauthornames[$this->j]); //check if the new author name defined by the user is a pre-existing wp user
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   111
			if (!$user_id) { //banging my head against the desk now.
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   112
				if ($this->newauthornames[$this->j] == 'left_blank') { //check if the user does not want to change the authorname
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   113
					$user_id = wp_create_user($author, $pass);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   114
					$this->newauthornames[$this->j] = $author; //now we have a name, in the place of left_blank.
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   115
				} else {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   116
					$user_id = wp_create_user($this->newauthornames[$this->j], $pass);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   117
				}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   118
			} else {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   119
				return $user_id; // return pre-existing wp username if it exists
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   120
			}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   121
		} else {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   122
			$key = array_search($author, $this->mtnames); //find the array key for $author in the $mtnames array
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   123
			$user_id = username_exists($this->newauthornames[$key]); //use that key to get the value of the author's name from $newauthornames
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   124
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   125
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   126
		return $user_id;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   127
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   128
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   129
	function get_mt_authors() {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   130
		$temp = array();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   131
		$authors = array();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   132
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   133
		$handle = $this->fopen($this->file, 'r');
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   134
		if ( $handle == null )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   135
			return false;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   136
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   137
		$in_comment = false;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   138
		while ( $line = $this->fgets($handle) ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   139
			$line = trim($line);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   140
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   141
			if ( 'COMMENT:' == $line )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   142
				$in_comment = true;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   143
			else if ( '-----' == $line )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   144
				$in_comment = false;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   145
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   146
			if ( $in_comment || 0 !== strpos($line,"AUTHOR:") )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   147
				continue;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   148
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   149
			$temp[] = trim( substr($line, strlen("AUTHOR:")) );
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   150
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   151
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   152
		//we need to find unique values of author names, while preserving the order, so this function emulates the unique_value(); php function, without the sorting.
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   153
		$authors[0] = array_shift($temp);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   154
		$y = count($temp) + 1;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   155
		for ($x = 1; $x < $y; $x ++) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   156
			$next = array_shift($temp);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   157
			if (!(in_array($next, $authors)))
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   158
				array_push($authors, "$next");
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   159
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   160
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   161
		$this->fclose($handle);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   162
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   163
		return $authors;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   164
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   165
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   166
	function get_authors_from_post() {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   167
		$formnames = array ();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   168
		$selectnames = array ();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   169
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   170
		foreach ($_POST['user'] as $key => $line) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   171
			$newname = trim(stripslashes($line));
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   172
			if ($newname == '')
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   173
				$newname = 'left_blank'; //passing author names from step 1 to step 2 is accomplished by using POST. left_blank denotes an empty entry in the form.
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   174
			array_push($formnames, "$newname");
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   175
		} // $formnames is the array with the form entered names
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   176
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   177
		foreach ($_POST['userselect'] as $user => $key) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   178
			$selected = trim(stripslashes($key));
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   179
			array_push($selectnames, "$selected");
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   180
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   181
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   182
		$count = count($formnames);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   183
		for ($i = 0; $i < $count; $i ++) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   184
			if ($selectnames[$i] != '#NONE#') { //if no name was selected from the select menu, use the name entered in the form
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   185
				array_push($this->newauthornames, "$selectnames[$i]");
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   186
			} else {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   187
				array_push($this->newauthornames, "$formnames[$i]");
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   188
			}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   189
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   190
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   191
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   192
	function mt_authors_form() {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   193
?>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   194
<div class="wrap">
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   195
<?php screen_icon(); ?>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   196
<h2><?php _e('Assign Authors'); ?></h2>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   197
<p><?php _e('To make it easier for you to edit and save the imported posts and drafts, you may want to change the name of the author of the posts. For example, you may want to import all the entries as admin&#8217;s entries.'); ?></p>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   198
<p><?php _e('Below, you can see the names of the authors of the MovableType posts in <em>italics</em>. For each of these names, you can either pick an author in your WordPress installation from the menu, or enter a name for the author in the textbox.'); ?></p>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   199
<p><?php _e('If a new user is created by WordPress, a password will be randomly generated. Manually change the user&#8217;s details if necessary.'); ?></p>
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   200
	<?php
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   201
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   202
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   203
		$authors = $this->get_mt_authors();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   204
		echo '<ol id="authors">';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   205
		echo '<form action="?import=mt&amp;step=2&amp;id=' . $this->id . '" method="post">';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   206
		wp_nonce_field('import-mt');
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   207
		$j = -1;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   208
		foreach ($authors as $author) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   209
			++ $j;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   210
			echo '<li><label>'.__('Current author:').' <strong>'.$author.'</strong><br />'.sprintf(__('Create user %1$s or map to existing'), ' <input type="text" value="'. esc_attr($author) .'" name="'.'user[]'.'" maxlength="30"> <br />');
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   211
			$this->users_form($j);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   212
			echo '</label></li>';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   213
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   214
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   215
		echo '<p class="submit"><input type="submit" class="button" value="'.esc_attr__('Submit').'"></p>'.'<br />';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   216
		echo '</form>';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   217
		echo '</ol></div>';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   218
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   219
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   220
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   221
	function select_authors() {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   222
		if ( $_POST['upload_type'] === 'ftp' ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   223
			$file['file'] = WP_CONTENT_DIR . '/mt-export.txt';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   224
			if ( !file_exists($file['file']) )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   225
				$file['error'] = __('<code>mt-export.txt</code> does not exist');
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   226
		} else {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   227
			$file = wp_import_handle_upload();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   228
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   229
		if ( isset($file['error']) ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   230
			$this->header();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   231
			echo '<p>'.__('Sorry, there has been an error').'.</p>';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   232
			echo '<p><strong>' . $file['error'] . '</strong></p>';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   233
			$this->footer();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   234
			return;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   235
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   236
		$this->file = $file['file'];
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   237
		$this->id = (int) $file['id'];
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   238
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   239
		$this->mt_authors_form();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   240
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   241
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   242
	function save_post(&$post, &$comments, &$pings) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   243
		// Reset the counter
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   244
		set_time_limit(30);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   245
		$post = get_object_vars($post);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   246
		$post = add_magic_quotes($post);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   247
		$post = (object) $post;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   248
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   249
		if ( $post_id = post_exists($post->post_title, '', $post->post_date) ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   250
			echo '<li>';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   251
			printf(__('Post <em>%s</em> already exists.'), stripslashes($post->post_title));
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   252
		} else {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   253
			echo '<li>';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   254
			printf(__('Importing post <em>%s</em>...'), stripslashes($post->post_title));
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   255
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   256
			if ( '' != trim( $post->extended ) )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   257
					$post->post_content .= "\n<!--more-->\n$post->extended";
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   258
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   259
			$post->post_author = $this->checkauthor($post->post_author); //just so that if a post already exists, new users are not created by checkauthor
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   260
			$post_id = wp_insert_post($post);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   261
			if ( is_wp_error( $post_id ) )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   262
				return $post_id;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   263
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   264
			// Add categories.
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   265
			if ( 0 != count($post->categories) ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   266
				wp_create_categories($post->categories, $post_id);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   267
			}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   268
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   269
			 // Add tags or keywords
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   270
			if ( 1 < strlen($post->post_keywords) ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   271
			 	// Keywords exist.
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   272
				printf(__('<br />Adding tags <i>%s</i>...'), stripslashes($post->post_keywords));
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   273
				wp_add_post_tags($post_id, $post->post_keywords);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   274
			}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   275
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   276
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   277
		$num_comments = 0;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   278
		foreach ( $comments as $comment ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   279
			$comment = get_object_vars($comment);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   280
			$comment = add_magic_quotes($comment);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   281
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   282
			if ( !comment_exists($comment['comment_author'], $comment['comment_date'])) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   283
				$comment['comment_post_ID'] = $post_id;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   284
				$comment = wp_filter_comment($comment);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   285
				wp_insert_comment($comment);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   286
				$num_comments++;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   287
			}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   288
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   289
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   290
		if ( $num_comments )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   291
			printf(' '._n('(%s comment)', '(%s comments)', $num_comments), $num_comments);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   292
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   293
		$num_pings = 0;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   294
		foreach ( $pings as $ping ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   295
			$ping = get_object_vars($ping);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   296
			$ping = add_magic_quotes($ping);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   297
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   298
			if ( !comment_exists($ping['comment_author'], $ping['comment_date'])) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   299
				$ping['comment_content'] = "<strong>{$ping['title']}</strong>\n\n{$ping['comment_content']}";
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   300
				$ping['comment_post_ID'] = $post_id;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   301
				$ping = wp_filter_comment($ping);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   302
				wp_insert_comment($ping);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   303
				$num_pings++;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   304
			}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   305
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   306
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   307
		if ( $num_pings )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   308
			printf(' '._n('(%s ping)', '(%s pings)', $num_pings), $num_pings);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   309
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   310
		echo "</li>";
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   311
		//ob_flush();flush();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   312
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   313
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   314
	function process_posts() {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   315
		global $wpdb;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   316
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   317
		$handle = $this->fopen($this->file, 'r');
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   318
		if ( $handle == null )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   319
			return false;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   320
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   321
		$context = '';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   322
		$post = new StdClass();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   323
		$comment = new StdClass();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   324
		$comments = array();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   325
		$ping = new StdClass();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   326
		$pings = array();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   327
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   328
		echo "<div class='wrap'><ol>";
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   329
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   330
		while ( $line = $this->fgets($handle) ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   331
			$line = trim($line);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   332
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   333
			if ( '-----' == $line ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   334
				// Finishing a multi-line field
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   335
				if ( 'comment' == $context ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   336
					$comments[] = $comment;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   337
					$comment = new StdClass();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   338
				} else if ( 'ping' == $context ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   339
					$pings[] = $ping;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   340
					$ping = new StdClass();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   341
				}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   342
				$context = '';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   343
			} else if ( '--------' == $line ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   344
				// Finishing a post.
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   345
				$context = '';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   346
				$result = $this->save_post($post, $comments, $pings);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   347
				if ( is_wp_error( $result ) )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   348
					return $result;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   349
				$post = new StdClass;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   350
				$comment = new StdClass();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   351
				$ping = new StdClass();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   352
				$comments = array();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   353
				$pings = array();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   354
			} else if ( 'BODY:' == $line ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   355
				$context = 'body';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   356
			} else if ( 'EXTENDED BODY:' == $line ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   357
				$context = 'extended';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   358
			} else if ( 'EXCERPT:' == $line ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   359
				$context = 'excerpt';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   360
			} else if ( 'KEYWORDS:' == $line ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   361
				$context = 'keywords';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   362
			} else if ( 'COMMENT:' == $line ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   363
				$context = 'comment';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   364
			} else if ( 'PING:' == $line ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   365
				$context = 'ping';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   366
			} else if ( 0 === strpos($line, "AUTHOR:") ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   367
				$author = trim( substr($line, strlen("AUTHOR:")) );
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   368
				if ( '' == $context )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   369
					$post->post_author = $author;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   370
				else if ( 'comment' == $context )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   371
					 $comment->comment_author = $author;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   372
			} else if ( 0 === strpos($line, "TITLE:") ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   373
				$title = trim( substr($line, strlen("TITLE:")) );
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   374
				if ( '' == $context )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   375
					$post->post_title = $title;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   376
				else if ( 'ping' == $context )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   377
					$ping->title = $title;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   378
			} else if ( 0 === strpos($line, "STATUS:") ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   379
				$status = trim( strtolower( substr($line, strlen("STATUS:")) ) );
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   380
				if ( empty($status) )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   381
					$status = 'publish';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   382
				$post->post_status = $status;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   383
			} else if ( 0 === strpos($line, "ALLOW COMMENTS:") ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   384
				$allow = trim( substr($line, strlen("ALLOW COMMENTS:")) );
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   385
				if ( $allow == 1 )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   386
					$post->comment_status = 'open';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   387
				else
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   388
					$post->comment_status = 'closed';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   389
			} else if ( 0 === strpos($line, "ALLOW PINGS:") ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   390
				$allow = trim( substr($line, strlen("ALLOW PINGS:")) );
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   391
				if ( $allow == 1 )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   392
					$post->ping_status = 'open';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   393
				else
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   394
					$post->ping_status = 'closed';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   395
			} else if ( 0 === strpos($line, "CATEGORY:") ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   396
				$category = trim( substr($line, strlen("CATEGORY:")) );
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   397
				if ( '' != $category )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   398
					$post->categories[] = $category;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   399
			} else if ( 0 === strpos($line, "PRIMARY CATEGORY:") ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   400
				$category = trim( substr($line, strlen("PRIMARY CATEGORY:")) );
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   401
				if ( '' != $category )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   402
					$post->categories[] = $category;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   403
			} else if ( 0 === strpos($line, "DATE:") ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   404
				$date = trim( substr($line, strlen("DATE:")) );
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   405
				$date = strtotime($date);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   406
				$date = date('Y-m-d H:i:s', $date);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   407
				$date_gmt = get_gmt_from_date($date);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   408
				if ( '' == $context ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   409
					$post->post_modified = $date;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   410
					$post->post_modified_gmt = $date_gmt;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   411
					$post->post_date = $date;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   412
					$post->post_date_gmt = $date_gmt;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   413
				} else if ( 'comment' == $context ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   414
					$comment->comment_date = $date;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   415
				} else if ( 'ping' == $context ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   416
					$ping->comment_date = $date;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   417
				}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   418
			} else if ( 0 === strpos($line, "EMAIL:") ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   419
				$email = trim( substr($line, strlen("EMAIL:")) );
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   420
				if ( 'comment' == $context )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   421
					$comment->comment_author_email = $email;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   422
				else
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   423
					$ping->comment_author_email = '';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   424
			} else if ( 0 === strpos($line, "IP:") ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   425
				$ip = trim( substr($line, strlen("IP:")) );
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   426
				if ( 'comment' == $context )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   427
					$comment->comment_author_IP = $ip;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   428
				else
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   429
					$ping->comment_author_IP = $ip;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   430
			} else if ( 0 === strpos($line, "URL:") ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   431
				$url = trim( substr($line, strlen("URL:")) );
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   432
				if ( 'comment' == $context )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   433
					$comment->comment_author_url = $url;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   434
				else
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   435
					$ping->comment_author_url = $url;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   436
			} else if ( 0 === strpos($line, "BLOG NAME:") ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   437
				$blog = trim( substr($line, strlen("BLOG NAME:")) );
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   438
				$ping->comment_author = $blog;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   439
			} else {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   440
				// Processing multi-line field, check context.
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   441
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   442
				if( !empty($line) )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   443
					$line .= "\n";
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   444
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   445
				if ( 'body' == $context ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   446
					$post->post_content .= $line;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   447
				} else if ( 'extended' ==  $context ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   448
					$post->extended .= $line;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   449
				} else if ( 'excerpt' == $context ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   450
					$post->post_excerpt .= $line;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   451
				} else if ( 'keywords' == $context ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   452
					$post->post_keywords .= $line;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   453
				} else if ( 'comment' == $context ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   454
					$comment->comment_content .= $line;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   455
				} else if ( 'ping' == $context ) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   456
					$ping->comment_content .= $line;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   457
				}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   458
			}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   459
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   460
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   461
		$this->fclose($handle);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   462
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   463
		echo '</ol>';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   464
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   465
		wp_import_cleanup($this->id);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   466
		do_action('import_done', 'mt');
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   467
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   468
		echo '<h3>'.sprintf(__('All done. <a href="%s">Have fun!</a>'), get_option('home')).'</h3></div>';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   469
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   470
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   471
	function import() {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   472
		$this->id = (int) $_GET['id'];
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   473
		if ( $this->id == 0 )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   474
			$this->file = WP_CONTENT_DIR . '/mt-export.txt';
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   475
		else
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   476
			$this->file = get_attached_file($this->id);
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   477
		$this->get_authors_from_post();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   478
		$result = $this->process_posts();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   479
		if ( is_wp_error( $result ) )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   480
			return $result;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   481
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   482
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   483
	function dispatch() {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   484
		if (empty ($_GET['step']))
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   485
			$step = 0;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   486
		else
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   487
			$step = (int) $_GET['step'];
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   488
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   489
		switch ($step) {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   490
			case 0 :
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   491
				$this->greet();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   492
				break;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   493
			case 1 :
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   494
				check_admin_referer('import-upload');
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   495
				$this->select_authors();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   496
				break;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   497
			case 2:
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   498
				check_admin_referer('import-mt');
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   499
				$result = $this->import();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   500
				if ( is_wp_error( $result ) )
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   501
					echo $result->get_error_message();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   502
				break;
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   503
		}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   504
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   505
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   506
	function MT_Import() {
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   507
		// Nothing.
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   508
	}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   509
}
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   510
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   511
$mt_import = new MT_Import();
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   512
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   513
register_importer('mt', __('Movable Type and TypePad'), __('Import posts and comments from a Movable Type or TypePad blog.'), array ($mt_import, 'dispatch'));
4d4862461b8d Update Wordpress 2.9.1
hurons@caf4f556-3d62-0410-8435-a86758001935
parents: 109
diff changeset
   514
?>
gE1 %ۈJ=CO3ؚxP|?%dU?uiO 6G}L"O}:Zk`g{mj_^]Ku>{>k3cWxX3gŀut+ 7hfDtxQCIݠ陚YPRsΊy]}ov{379%^t| {t=ǧ{>;vq9uRM5JUPK{\{z}-]{WP@w׾5zpkY-` c㮆Msq*};wtws}ڇȯUzz:޽>7p;b+vn`^}V{g}On{v0=؛dl> {;oz^.fw[wl }i3]4Z7fݜW|W=#^[єgutxpϡtϼܦwu9 Ph"J;[mo{ãϯ}V6rVwy_>z;A@ t@vU*A@} }} >}J&(֢Jn{mmd^$0iXQJ[YmYJiˣ{АV`A&ggϱLL:٩^ӛa"U[NMjҬsn*֖U%yjf((5?P#(P4""==>, rTE@7雗N"ehzĊYoVfM;ZFjZ4N&klʙ̙J\,T&;zQfH(_F$E`qDAA QE!P "*!b@G)H*D-*@ P(E0 *dJ/M _TP"| 90 ):0A9aTN(2s %L*TUp#=0KX?UBܱ?hGZw&?r(z"J$KP ߘSo?i(DTG=HP_Ώ+9D:/آjS3AAT'=% Mf*`3EN #H`וsgE'InO!or7I 5$bR 7:;k -~B,F&7?,BdM] anԝC)DRbJ lA{}B$;(GʸQm+FRH"h+Syru:Ql>lq4DDWXQ2lvhۇr.H"Dۀp0AD5Y7CW9gb?Nn2n}}1 ?;:`dT;֤_gpҧFžkYYJ,T[[BQP06%zq W >%zT{iLvÂ-hyexTbؘ/esUN~QW U{nqR,91Tsf;#zM%E@{hK oT%bPT~'3Ӗٯ=Iǧ 3g9 V2Fi !}Ǒ(MeKiM)jJLGj"iԌZyue.%J-(}̯,<ϕK•r)_Rڙ?I?H>/D/ ~2)+,8F.5ADMUcߝƨ"KeFaM%{ (*b|td(_gpB"a?2Q?brR4ٚk - 4[tiK*8(qeSc`bIH 4߃;e^JZ a(yC[FX8-*}a`ԢC ZjTM'}Βkj!bU]_>_2S-5)`Z0* 9AlJZ}2ζ aY®v:`3kQ*k .Yձḑ( 4#9{I>/5"}2,^%nK `~yNv#EU* ć(C7m>Yc]w];p02ccVАHB Ϭ^֔%#fJ!]wwG$ 9/{q}sZ^qЩ ¹cR+U x8PUX.pZ|:tea ehQ=bYvKE6-!aTf/U ǥ5I+]'D1  >qmҨ A4/b u,KQФ ɡ)fR}4{ `pfzw D?B35fYDTI#QQUQUUQzlOOw ~P[I/L °f )TQ(~CDb1QK@Ae1 #@D'ͼG/;5Da#>.83Dղk"AQE{I<WM! /a&¢6F(}حg>&] I1  LTP4Hh i6@g_Fkn5O=G#'Q~ |Yʽs7%5E'iʊJj" M:1On?|>C"(xB$NƚS%)Ap"J 0 f{C$C"1#hF"4XR+ E!:"e4hI:U!ɨ\/{}rH|x=)C$~8> w hbH;֜կGГ7Msz"D'PJ??QF:kE0<^w4)|a)'x6QB.J!b#BI $@ -& FQ$B*cI <gI=0xEv QJ ~1? EIV%;J}fw!'xh $-0F!g8 !d!BPwIʿ5D?e"O>gp=@Dmfc4O7! U(,:LaEWX#ɇƜF0D`1AcD}2GDBDb!$P*d͡>8Ɔ߫M:_p+& AbrHg]&ͺm+ VMQjt-44m]x{ @A"(B f Fe%(jŠp(/虑DN<[֘.jܾP-V[! p†ʠ%#>ӕhu~_N|ףYO 1Rv2Wv Ƞj $@*'"Wy=T~ @,RKIAO`©1/>]!y;8=;Uv}*k]-!zD "?۔*Q%#N{BD1I01P%#J)H"SH4(#a~lPS[^O;ݼ?q}^@dt`p+ zrj^30Ӽƾ1srn$eu8Dz΍<ނ: >1'N)l{A~O&g3kYS{(YUO;il F+:az)s~ېkd2Hn\m<ƒwꃰmU]0WQGیe;iupo3KE(/׵V9%e @{shu3?ҲW߁_w<#&E{s{oyr˕^&" )*IxsV_SO] N^(OTlfRU˖N'3U(TWШ9!ԒGFg2=#o(`Qi6${r''K].Ae#B,QUR"|9XL Xxa45p0՞f@ T$tRTAEk.4N1$ph)H Y3o |oQ4*T!0@ )Boհ(CE #@J #ERRPL!4T HME$550R4HАURU%"D\LAJЈR"LHMH$KCnI7sֲ#̃U=3(<b9^b:4{h.i*La(Nv7BQPTC21/v(c` =bD8!f$_r˗o%<7SA }NTE^Zg7[5dL< xY~@m> p ncVw]Ϊ)Ӧf5ҕ`r?8 $CJq`?ċkjhn>#??Jhx'My Y(@~'k4f˓+dT.1 _kRMϫY83DKTLGiԟy5DQcP]'bJ?U%d ,$&L"&0n8pe N2ɒPL! ɆyA~'8^뇌`@&(zQ`EO?9(,Ј@s8az1(l/ džXáDT67(:!tQ[h 3.oamN!*^ݹNpPUPN!QG PʈUxU80ime)j[[m&vvbm$MFQGTP:JR$4)CCuD#JH J97 %7d4 lR%Zf(LTAu ,} zCgӰw>14U)zx9pPP#٭ ʀr(<5X!q@Aboes(":-1u# 49-v͆a&"ޣlکq9 !vFRga%b FBskOt_n-hʡ+OȪo ZyiuXF)bIKQh2|ULAS4;ˈj: "*"ND0Wm$RTc˻Y4D4&3"f *l|wJ5׎s?e'tnEC!mXH0?43$8c$ԕRz( Q3-m"S1L8;u)t !()U <,cb?w[׏C(a yG{ᓮ~]9+o8'@E!|9g??GȁQ~1g/ -`DD>Z<0HDN)eDZs$Ǽiuޚ:9t}:e6f'x,S?ΊS I biP9;LaݍaOLAJa) ~AfMf\f&;hR`Uw'q!|齾4Μ̯L- N ?||"W(xFȺɺY\@bDo+:OpL0T^z 7\_Z2DȌ2F6l OU߽Xq8Mc($ &Í&im?~ĢO[O-$D5ہZFv}FZ q~ۊOYkFنMY$26Tʭ{M)D*^tMb A9)Mu)tCj*(%2ft ~_cuq0e h"THH@`"i@ d @ Z(  J( (* )P(ʦH "ܛ!/tzԋk:{=ݶHJcan̒gק6~ o #Z뮺\RB MO?Q|(uUaDJ.ej/ɵY?~[w"oPJn)#Tmv>C.|}L6 9g^GA' G\ćo2r1a|Dԍ3$yD@uG8=i{D`=  F0B DTА0p識q:|H ")Y.w>=҉^VS;NM81|o4A(R4FAȁyUURPKu9jsg&Ø:,''^ \B %*=u JA~4,${ svIw- 5NړiQ h ϯ؜>ag_ފ շ(j69!$ [6[L" PnB,FC@{@>-1F2򒟦8Fӌz^uN^fDo"*xL{o=bOO|z=O켣ui.zVg9u>H|sh-U{0BjPukwn%%T 쇧2oϵEBbh^рTLِ_n Jh^˩k߷Vj%O(Pi o Q׉JULeMf2)Zָ:\o% quͥ }JԁQRΊ/ ޵{ddK1J;HQ&98O50ՙ\hii6_,Ej $fdB(mt#(F(=x(lvZ.]u 3CTv᪙9W6J=ruO"9~2fOC|~AsS>OmGˡxv ?6^mDmفApR#GdDPJ.EDA5Zim˾b(F  轟`GTLK:-NdU @Hn檾-()??Ӂspv o9)">QTkLJyIwf7Oyt =<)hxߞCq`"9(={xᣖBdߗ vn=5)7\=0)˧ljGy|GmRۂIe!ЪyJ D@ ' ?1d>?[Ű>O>}FL$8IeݴҷZI2T㐄ĭQf;[jх]W7H$we0~uh㙍 9p ?ƏeZIIy;e3G/ԙfjԍ/cC}ǮOf }!gՓ;= zKץJP 'xg*0v#l7 (2ah%3Rx~pdt9R">{3ïpxOy)#ى>j/T밧܇V~< |x.*[!&mZ.*;k󰮟BGpQ:d{.ӄv&DB׊̂B>_QF>>;GrplC ;ݐP" p8G~?Ȍl`,tE?0<>eοWɭ2'_@̜OqqWWpB{& 'Gi L;GR||ϗ_<\KU 3Ҿ5@xM(0'#G f9}$L(@9+#Aw.v$J պ)(&DbԈnoirr'L6%V)wUO~O@ PU~AA!ݯ0`8$4|={-W{(OIq"D7e #QbD 6<`&nٛ]a\3j8Wq*j!g$#$VĎe ((讖.E&4jT"x Aa zvTt:0D~C%\֊ }%9/E-GАiz9{됩aXZf~+=* .5h۷a:xB(H/'S;b"DOf"$¸I6K ØSS^ G ;>]7LAKGo/w&Lx J]G|${2-wYa2 -t/p $^ Q9GliڝgUSۗ}.S5$7Kk۾C||xNJ d%]1NIB{f_f} { h?R' TGtg_v(NےSMCʞeeQ JQ(&дwewcˎB:slġ(Uu4+S' BCg`}(O' F^X!͝x(A1B OuyC۵и#Ш]avyДwij#83"ҎfP joй6ʻްݟ)% 1LT*!3 l}nyl×^0( @L(D =8~@N w!jy79׭Q;а..[He.^"A߰QƆv>ОY0;p@1ȏϦ }jG> ?+dCڏ3ӏ}( h}5Xv'*[;+Z@yIqO_$ z.4EzyFV7 @0>zёû6 8'p&K 2Ĩe'aDJy6`Cdk!̽e?xFa~9ķ]¤%S"}b't}?)"hXb'ҳ",㤐qpෝpsy6Ӻױr4!@`DmOjP)QdQSKe_m[ȜT $#6DZA#ڟnP鳇C<Dm1pztIҲyM4L M ۺ @7ZuP`M'M=CpS{1 &dzͣ@hgtY׎Q4-~RsE1IsgS-ơn%][)5̧Lنl3s8KȔᢥ$@(Chf}eBPnDk1q$aHPLA2oBP=uͨ1 ~Ϙb=D DO$d;țZM~^a3PFhYC7ַ;W'MFR:vbwޘ7e=A(Ȣ/.nQ@G-EĆ`lSG@o\1׾$%s؉0xMx@~qPH'O[ ='#B PӽAnG<Ԣ2UOG2ʋY󔞓oBU xb`O{sJUyFWh3YnIe$P2o8Twbpp6тҔէ:][x\òB.L"/M/]ƤX>:Ly}[u֡IQHmlzqc}1m+6.Y –im HdQI݀h&⁅Ki"EuL G[gf%v`ovNNO+Ig%mT0r`Q M1A&cwfS n< k%)E!b^s}3k^|y5;xl &4Ue2%y |ʭ9yGc19[ЇUt^ٯX-p4]2p%rii5y*0РYn;F+(*;Ņjx!{\uxn-NިSz8hjVf>w6 rG$/=oQ[$!$j_cϕNc*@Iks*N@VG؃tOV_UJwf AW _bs)BiBvGue T^OBj {ROBY鈘! 8VR_*RVw)/ʠTgBNe6l9ER)0%X)Nj#NNcɐA&L# OeOvz}kNr'igi֯g,|;g`HȪުG̫%yG=:5.PqBbEE9U3NRPzEۄy OV=W-8qƞ=s恌. g< Ag%pQ?Q ݇=4f})ǶN>p9/ ҷ7^cٯ9{V{D@L݀F"B@*$Q̤[}yq:GQ*R- lyP*Hj`EM2gf]T|PX–.Af–VA4{ʧ&gV/PF(RNxH"FK5"aLփ>}h+ȵR\՚GBmw"D,j!Pte2;gmδhqot>%&Q뜦iӦ6S}X#ia'5K /N=*L0%\d>}x+ZU'<DXP4V 0l,vx@/yGo* ÓV4S/9B+Wu2QF¸p)>`0UٯNrTN$܏:'WH70(!#2P"♢O)-/ :Jw79*E[e)Xю+G\z`*%8u<9>B5b)FwA7oÌ&6! %$3Z;X^ z@:bBzúȀ6e&Z.s Z `6VS(8W;9e[w4wZ W1] 7U6Q Fy??RRL 85h4$0<+1&b6uW)+ *zCN1TfM:?s{r <ΐ80cLVׯ4=úye"Z@ d!HPؙƓz:I1T(WADST9^DPs~rZZ7&ʰf*XNHdXNVuV"BՓO+H>0As7iЍ[L9d=3vsZn*9 sEMXX7XlKE#*^Q'A#NYRTǔy#]%aqNRV|7suUګlPKv΃2rwTl(IJ2l-)w;V0ƛ>)4=h|#g~FGךsU$ƕ|uv%{ӌVSyRϕMMB(jMrUZpy1S̺̔abL4Y`H7ENs, Ajl"ԎR!7mHS1&LAX=)DE>k'7 *f򢸺(I X=#J-#hW!iVJ4x:"gq?.0"QCCQ""E> !b`nxBg[YMQs㵯u/lhR8p ˅zi2̳+%%b]}Im{Rb&_?_0znR1 (]bE8FP+Tr蠹q@fhD1|#697$m+-KIֺDzϾ]6{0WNq`ps0C:8s?:y1߶^\.@IfY(w/:![^F^`F@7I_NHYfAuqr1TBJkUa 10^ ͶYڎ+p;@dueŝfg*U#=q+a fйU^zS]j8}7}ㆫ 6D2Ȉ6>9e9te,ubO 4"-,klRL˺݁8#֥A8Wmqh,ZؓEHH55L:㉡ӉlKq6~.FkM/X &є@^R޵_a*F$(avKD>mc'4yrdD`b]!I%X+ u:rx,.32gwDjq`U4GWyU`,8B )JN Dp6TS[DHj!q+jUVA8u7UO6eqWQ=gƅW A(Qs~8 BbIc]:_Z7{I}Ӵէs>AG];2~ Ha4Jd{Q+ǚa~ ]i,Nt_9"uI9zHX E?AݔJ;6U|q_E }%5d+Iɒ:7()VZkѡQkؐsHTv".N: D@ un׸7\vꂓJM`[l^mf"ߺ8]s>@ B*".D:n6v0>`J :Ċ*yim1;ĨoMX R)w]lNğu 4J_yHI%ЊYPx ٳiH ,ԜbPOv:vy^lUlTtYT+e]n [ VdžPwo~;$itQ+bi9x]*=M]ֽ1LM' p;G~cvI+.JSgD'%M|r\EEdӉj{€:cO]kjy;SCйOlF3qusx^BkB 3 2S}߱5@N%;W͸Gm9>Gmgs"eac9*hm/8qʜ[:<cGVdmk34 =lmD>amʰ nrF uN79c ^2i- '^[{&)4Z1@n p4o'"֗5uvC x˥&:ffd]I9w?A,li3FWZQYp ID*Ӝ#>ѭZx{l Aχ.7(H%4 A0(s%nǴt7 ga#ՁM`Gk-D9N#`v,<1-(Y.etl*65 P7:MACe +pG ޚe̸\o*Rʼ;Oșp@Uu GwH JME^C$^AE. T4 I50f\v>FQoI.r1]8T3ЏU8~KbX*It0Rj MRUz椁Ҝ˓@mCVG9Յϯ!u {3b-C#lF)R˘&a؇jbjP)(I p U3c.Ze;@7h $EU B=ˊ30M$zĎM2!{>9~U⋂`vUJs+(pEWDǍ-Yws[\O&c,t1.3i2̞8zo~gc/X͢K/Zf^xg8?#e/V#lHN#dr45׶ "VM.bZ4$b|7^lKs\ԭگ84 w%ďi2c DyS2Fu&fMGBo2ZJ)hdU^fPqd`qAPZ} jyoyodA#`ꝑ̅Mh/"yCJX ñ2wB֛ |6Y/$u\3 A,Ȏ55<nq=sޜ;*iB:gŃcp1dybz-@;92NZ C6bYƻP$fB-WۨZ4/&)&ԩDRw}f` V`["r<_-Lv!Wo4HbnP?\?Y~L,a=({'Ktxs]5OWNq.UeG8ǟU^]a(GP%S4ң2O:!{<OnUʏ$60言LەJ rwXޏBDi_ %xus=ƀ5BXAm{fd M x`~vHAcGnr s>MJ;KHNA8Qik`gtv%&n>_U[;n}9I#*)WJS߅h$vͫ]->dk; )|\䙪B߉N3]l8]ldw(J|.LE~*!܎ٛezMԮ.P-)g^qQ)$6+Q$7҈\tLjw|7Rg-m/=)(`V*3QGA2#hCr^Nɡ$^tlZdJѽm\y$Ib;|{>{2XK[; G,0 )l@-g$9EQƯsȃٯ߉dtҫh@V5R5 ,fIAEd/>=᛻ 﩮Bh, ;]]YY`TgIlhEgjd1wɳ)kE"S\}[ QFu[i}Q)ج}Qʫ֬;siKqye\εm:*2 eyh)ƜfBഅS0[@|I6Jk.3 Ч!o~-O8.N<O_~0^Cg3N\~.-ҏmۛdk ̤-"2UH+/Y]Zɹr ,$S H@3)@I~:wi.(j[6 HfOuZX9o#J̰X)wJ ə3Q)q.rNrpud *A~ޢ`(MDd(6oCLj0y$u@Jp0@zS.aI `TM X&*B/68fUSA&Ij> <KFe"t!AqUBETr2e4h 9GJb;&̅mX@4p&w 3NKJ[<<_ɳbOTuƕXd~FEkcHyW5E d >x { \d%&1>r.RĢ,fUl& '9yPlF))YU1&g:P,난(9J8TxOLUI48S 1UU3TɁ&lnm=Q0&,ǪJH{'E~\֮pT0I u@4N`Kh\UuK?'XHWU('E|AV:U+6KHx*J &.qH[Zd¡ 0jYhД(A%:f}}V"lUySfzLQ UN;P~5rŸB1k.EIOU$(IK.\:DFRrgP $P7BEw1 -5 lZ!Jޝ(̋} ݛc>}reF2T6Κ[338u)TuVj;Q_ |z|;壽28P%K@kVHw! &*_OƵ&xwx VR=;gHN 8#,|# ] *4H0;鋶8cXazDμw{ UgL"%"^_$:zߴrS1\݆xW %'QeGLZ 4ߞ̮vCB*OtK-IQy(hX .KdFI+Bëg-F E|IFF8F*"_E\ (齢S֯kPg魬}Fg3wRUv'~N’Jӄ}T|MNcRMĠ~v4IBx:CEJn1pRĀq9]ҥHɐ7NDך6a1Y&kƚwE-//aD߼灄m,RR~8%4u1`,7Ѧ )MQ'K43hb ;=*5qϙt9!EwQ湣G{7/a(SUlVscZhF/({fx.`RjZ2iw3[5ж'u.+ R#9g,܁$`|֘=,aT|W݊"ԦYrfȺ͆iVC> Š2r (̪Fj; z_= >=ǧOb Hӌ0vdߣĭDҍF |$UkP3-&b!0QJ^%R \0j/y F_o^9S0Ύ= %UVY+i_q9PXw;ԉ/ʉ i(n=0W|զf}iw>餃! a5Ukd03-3el')5ckWAnQʂPR-% B:28p&&tgU2NKZpoG_[ĜkO *ILK Qަ|j7\_vW)"Ь?PlYnm&V: ˽U֚oQ$7!U*Q\RTg(L=rm;sZRr_nh>;TI5$ncw#z;i~J;YIh2Y`OVVرyj"Ǯ.,lfȴ&d:k|ΦfweJW>x0e|V(ӹx01(O.&s |enOB\j`h>ʶPaoQ3|8~ηXjuRG;5Az?4)?dI]{MڣX( 7 7HWRyʖeٱ`ߴӄL\8XW[F2)%LOBb/ v_%5UqRoTe4Ee-|buLk.wY~SpHkH+?!3| # :CꢸJL+NʔE0GF"e QIb#OzwpO O>:>TZ#ID *ZET.晬q|&SBL sCQjbXl[G=E'Vp:Vbw+} [PR ;0! ƿ 'Fd(d)p/a,[)ZohsCxlAr # 6Sw[,>CZ|.!ERQpC'׳ғvONy,M2J4&r f`O8z24!:Ƽ{1}Vzk*&ȯ]2dje< r#[뼻"}E6I 8ɞAf\zk~K[V j6\_NsJ8Tk(..<6UZ*݇9("pFiJW=,c Tzo̠>ZY-el'Mm4Q!);d 1 O^%y1Vup7XRs (qHb8QY wlEhy;_:.lֳBL5P!% =WGc)e@Gv۪R+&9R>( Ymᄂ~>)xח> h0yR›4>.X ӕʨex7i?;/>̷+6 3- 'x/6뙢ijO&P峳>V{Aace쬢+:[Q)0syPOuӧ| Qt }~qH=ţ Yh J# `ŕeft%lĺs&ᗋug._5q5̵I(7V>ֹA1Ja;zM5Ob,l+7=boGn~.}v'_kҹnQ*2pҪ*ƨ4Kmb0)P&/%,UgLؐ LP9pk 1+\eP|)"j=`L437*V^5a|2oa;zGL:ި?AEnr%Ff7jD[vtxu'lL`q^N`ۏS^ )XfmбgO.*4X~Ӧ*,7P"xd0.Dl `'՜pZ`7m[k&?y#d@S{ vJ'FuC,i>gdE4ez@$COs@ɎÊ#]3ň3VNOrv|?PIFJ*&A%/F ?0f{ !B~ ghvTe {Vnj,hcD px$+IFS*Y3O θz*d4=p y]E*mRŘ%E4V A࡝yȎ \o`Le-9USQx )^Fk$q'%r 30cfU,A)nbY{e<$'nmzPUV ^yrqS6?i'4U XW2P@SK>M(I(_$0j? @ GQ{d#nGv^+!qQAdB[M{V͆VQh^s`:*?Z4t L)畓pN I% Wcqk'2ݟؽJ2 I'MFL;#$|G8}`?GǙ-˄B0`9 Hv vTTP.q:0|I`=ް^hPC\4&Q91)?#@JG"ϔ*XHD@0+WttJ^.q7υ |xDŽi a*G~}c6/,DGw ڬۑEbDv[;Uky:vR cNlVfss TLLnr#;!/#A}xwρs}n O]{snI" dE|A ӧ3fLy}^YĂ07^YB `␷q@_Y/<1!qԗ-m)x^<$>`=gs˻9}3o$Qk& k$|.VCx~-% g!fBe\$9d4iҫ/g REdu>ơͮYi՘vIje :xLO|4߅z7e\]-v,:Ac X6%} ЦR=AÁ7VwQ,Qx3>Nߏͥ3ăS\ X$~H05}oL\+Ѥ&iX1VQuC#W1賂\)Qs \aex,0V[L aeFF5]P2W"Y_l:dl-cJVL&YV$`>Lsha{b,N[51!b>"gs|CSvgM%sѫpΧJk)gB-J&BOl&Sd)TP!RU2ʮttND‡|(AdUYB7^",pjge˚IGE:ڎ2ec0V ZEl-MI$En铼}Yt|'ooxl45Jb]R}yi 8Ԧ+KG0.GI]KN[dr֕Uƕs$ŻƄw'OoiּO!k@jDs0YݖYT2d3x!Fy&~E>=23tvqQz+@A($|~ߙ(<]~$ef d FyP;]! bLiDT QipHJF!z|O :&j 'ӑР cn) #gÆopS~  {i<1';YI*NX|P1o~c:Eޱlމ$ T 3TQaq}UH2p,`oQMh EZE˕B5wfpuKZ\/D% O2Qj`Y+5g.Gs'zz"_0i>>?5 ?:Of$[ < ?H ݀>+MzI =TsU-fن!mVܞv>Ki<&S5CU\5oLIcS*3D%ez\ȼ9 9p9:L"kgx*ni$VKo>@䨚!QLV,r *EY&3~C&e< cZHrMkU ͵0ƥ; !ȕ癓wP̫Qŗ:n$vI Հ}"b~co7@G"[&B v@Vfrf@ 1?H|v|n M ٢@v:fcq6 % ^.D}{(kzCE޻*K'nyrv>+y#R>[r1[."}$sІ>H́{ S ѓV+TC}FKib=ezԜ##vQQ$*(PllPge~4bﭷp3Ep|} :G|Ma_ =qOpBEh$#JnP+꤭7L0" 9g@-U't7(,6ֆjua՜]/4Ȩ!d9] Pr9Ֆ!yH'o8` ~1$i[.JvtaL1rim}f.;{wG2>OM_S!v{x8!퇺t}I;`1ԏhg@\r{Earf,N-j8G[BYlyd3UmVDoUI>Uޜ9\*3;hq%2n[XU̔3 N̚sk™jl3ć.tdHQ'e1LYͰaG2L%GEC:; USi^{sjyç!0G[åPP& Q 5I-hDQMu QTg޳GK_ @A,W'fIz Yp[_(SgVK--q.scpi5Xc+/z<2yg=_6{e>$ d5F(Z{EVUxȞ@OGLlJGRuruCZ%OHܞ>{(BF4%(fDwNn7*cԫI6a2eI;%1^N&ҍLq)fyQ)w iV_pl.kzʱ7ܬ;k˧Ȼ\v8XoIӌ, J߀nĜX>$t,XՕR>mՓ e" d:,6\,GtZ i鉑Vɹ.:J`OR=ҏ?^yX-mxԚQ-m #J:m #bFKI4PB)}R2:B1҆Tqܙ'%hb٨~2X6LV(dX\4%Ru(6FڠH(Bw 6L8>U}Jx =.]M{Ln$;])LHUvں\Dp ,*F+yFmXZMf0LΉ*UiI*Y KvAJINE^:HckxzeJTAJ)y2`;NA1%ALJ&^4kB )n|kMH[8*RȖ|szQHpZx" 3^#L*0"ǵ1KxrT(w#gLW D2~ $򓕼|u5`Xn|BqaQie #@{ b~X1 KP>Sӂ(8H]NJYэn}0n0|1M.G.KׁNq/!mǘGB##1JRCٸp7ei2]B8EWf Kڞfh8# YI ص}+J (iJ{Hq Ȧ0<tk0lgiOyq?5|VlU%YIڱ  QW[=j)Nzl^X_aR{p(pTt8pyPqi'Ó#rI @ %{Fl% :jBi#ɄY 8D>Y<#6THt!F4J=$hpxNSI\$i8l$z|8bmy};d: [$(920FXJs} 'c$C (@==IAL`8t,ɐ #4A|?vIӄVvXb4>.l=%:8遬NU c2QD@*GۛfSp{o _LvGd38#Q0nT#}`}DF;m@@9ӚPOvSBk˲xvRᵥiO]oO X P 1! bp!&F'xQ:8=8PQ׿l`?xwu [uq$j?U@!;.ej"l 27j2 &vK,ԙ kHGG2eI-{l8IT)`#X^ Cv^4Pq08&/((eV`$ _0Pz"%+Z{ 0"ntpN'vd {?z=9c0,:/p!m6oc@_`!!;w(Nt8۽w!ۡdx T0H|:@tPCBPܡ(J C@dWǝpW"!?Dx?˯g ]#א:9eՍsIxZ@^yР}& -`ʉ;¾qe ({M:C1 fYׇ;́&q~6x879 M51DPvҢ  4lC" v) ęQ<ܰVA00"ˏg>vC>F{0=}O3HN^IA1MmzJÎ^}RA6~XR *eO2dR(o&2P{˞P>ּ/|>Ah[@a$QF8aLA[`B q"+ Tz8PeC 6cXu6@0!4P&ߝ Ltؘɬ?`ޗ$JazJ",kmk&v'XĠaԹBP`WBOs_l C&BN-a/Sn UJE &P҄t& 8p"C@D]+Res!@%p@I tCU7&Pit&дIӠ4CHi_*+qd1W?H*F:Q]ܔ@pÈLwzFj5R>rq}~v=1 n:"G. pz!. 莌i9壃u2L8prFD0gMeĈBs#}xQAt` &@<н62Iv{VHE|j1 _ۦ9eQ$D%=l?b}KOyBn>1LӀh1=Ιw{T?2כ㮸l: Y"ho3}xN;f'lYϠv`ÀpW[5]y"n BG,X_POUDŽ%t!EF`2զMzRL6٥1(!,Ʌ_uM7_+ R]vs?WuS~8\7bߺx8>Åuͳa2Ϫ1ӯ^ð0ٿxFAȸ8 *R#c%H$ B{r1 R?wJ'vI]?]<ɳ%8`>Ҵ'k')8m<dza&" " {#z.1<&` 4|Z b(8?8$3vH!p`ONP,TBc5)R smMbmN:ii'q 8"6P'}>yvOS}zr{SR.fqg5ɔL)I)*lPRk6aWZV3mq*⌊Ms[Yj%PdV]h/fJxh~~^gF s3& biViꤖkyMMDAK80P (Je@RZo>2J]$'qU,FF*"cSkֽ`ur!KճS7Nޝ: <>ۇ<ZǵabTT(2In2+h]v(ta !* ~i%j;y|fM(;/<7}Ƈ=dDP 0Մǥg G/&FӃ=[I|mB9_YXT#܂~TF 4p a182PY86a8qSP#7(m.S;bZva!%WQq\WJWbH\T {q wY%(m9z7uÌ:dpQ*j؛ ~IOg en?s8Gy?ї.Zg'O L0”0>nYNcXs #!SI&~b 4($H/I š6 È$ WE1@` AH ߃DU{Sc(߽?Yv7*ʡ`/~^'Og!O+_nǶYͧcyCSgȗi*Fɹdl-??@Voe ʁUY lTehώNNN 0{!a 96(}J(eCPN54D< 3=G&׫Jl ^t)Z7( #ˆ:R&qHZu?Hc`ᲣpOklfy 8#@G|ٌk}4k|?v46u=?߷DߤC;9q|ٓ:o^5L_=_?ۈh)𙂅u|糟v{7~!  ٧^:L1r/?FtwӲ`hw+7s $JPAvyB '^ʫ2ԭlZ|Y}yai<(u~_R79E|ģAxRP 4#O-laX7Q&C.!9%Զ$OL]3 EϮéo=ɿ>0q>@)}; B)B)B)B)B)Bnc{`Hn f WΓz"CM@m9<^d4xJXL8G@L/^hi{wx}C곳'C bq#$Tiub?5[5rhuc,'?َVtzaN|D,J@@E,<{^ 0px|=4<;5 t\?j\DK9٘qv:Y:aMh\v_1ݼ$D|p0L' vAi]9*,;E $-5+; V}ڈ9(>HM1ō|wp7霵dרc9Nm+ݧFQ94r4K&WC6>]:+ӡQP8CədtaUÃX0zm=^:(|#}Lt(c!ТzݲVwkdyIt3u336=OdhTO/??}j~?.Vyp#ũTSڌ;øg!9<txMܒRI-}_?Gu  |N?6c/.O/y.OWyO9<_>u;.ZJ#yI3+U~̨Ңy:u$T@d2`>e~OPqJQ̎Ϗ3l[jnaro&wܩ$O`c8 U(R3,.LIE݇G,x^bT0a7qI<2Tt'Q)S Q"iwqÓQC#h>g{6c!~ Q!rH 9z 4lfQ˱05GD(N`mEpQ &dXK紑iORI3ۍh~~#J%{ QTLcg R0c _$$u *ldZi/X~#׺It 2D%&R-(xH:K{( dM17rJU2$)T'|CDfs="AFh uG:?Ԩlv맋x](o+(M-N31ї/wqTIsgG%]7FpfLLODϸp7\|N3h">G)1T}qA6\IMd%ӂlFT:|DEZʟ&_Qq f(㣆e t:w*YIUUϧ|POH>kO.E[%x!Ej/_KGE$:di t ::#{n863]~gDcY!_$$_^l})V^&?U4k%yh4wCC8ttxg}ֱDܴ8E#$oz(4v?>g3QY Pzm2 Jp s2J]>hh[D=(B: &"b ҳ }0?;qqӏAVKU![1L(L43jtQBEKwdhAZp2ABc{N&PUE)TK0GF6#~JFt (8آ2g :FJ((&Q:io(0QE^ADmLpxލQEb9F;c(q煊(*s'8n65Ź#X(@g4ODr(˺ w;87F90φRTzOzL^WWg35Jwz*|g!^>z{y4~ @$|7Lԅo2j>R!| |yvz qqb7LZH뭬,KIOo?#G,'^*!]b\ kԡr|Meb=҅ .a' .#i{܅(xnKĢgFg$cxLLe=%?s홄%DQC=_O_}ͺ~Gi1=9~4{a,Ht*D'ݿ?=;۱N&_B!33!8$Ol!({ `:܎5;@뎬Ti0ҁ;f:JB@ 땇Hy`JN ui  H=U>Mg1£N_'}z& n_aܜESnU1[4b(-n΁X%M>GoAv ̽7U .sC"OW"AVMNNra܁P߷EHfeQRKXreD=\Y'twίtuZco&{pEs~)sou| t &4%??c @O4ya W߇AO`E[FC$mb;o!TvM)TNz(] 6MnVTId!("˫f0i i^Y$)K*b(tXsBrBqZ픡%.: O+Uå>_NRF A數)UkBYӞq:o7%oEFo+0N8KQ12 HQʰ{CaNؒ?*% bs!\s0}-j F Q 1rf:tUh b=f=|{H6݁Y狮]3;֔)C~0o͠ pߠR6X ߔJ!>$> 'e3o0f rB$?@M?CmaJ=])*pVj'|P s=btI+"eLN#4!J#q7΍F׺*7{T seVo2:1w%aH!H(fw@/|"{kxk ZqI- Ekn3}|kO|B7HUmTLk@ƴ| BAB~N@:& (!ǨuJtC ĂKŠC$=ش-y! +cA 02 @ *:>Js"9Ѝ`A6qλ#Gנo7}}r|3< a8#?c060Pd>A2H0XxRbuu  #YU*s';}>/N@Ƞ[?A)MŵA0\}%x/ Qa#0͚$Փb;H_#@Bp`hHR]PN˶RHwx JcvgQ"DۀtAmr!9LP jC2Ӟ D@ t'-<`>$" ':˿EM;5\NE5}.6rBl8(3z@ =憮¹ {yj<2b>TDz3u7G 8ڜ)ϱATn $0>H"{}k|oO;}QSGC`L;ܓe ,GQ<!ݻPCTCn""hl9\qFh56ϧ@L" =Qžl58N B`@#x݃D@A %ATH Q1$:jCɸ ;pNkxg1B{;mj  g;9'3Vͫ\89;4Y=q{}ylhpI M㗥[ERQt]v/~dmڇҙ04g̊|@t-6Qز"h! `H%N?^=l K=ƐBqH~@Q A&ɳ=_+<=sOf@@h&6o=usgb;Ù)׉O'PWBx%ÛA>GBAs@Fa&A%q?y>;(י`ebd}MxD~q˳1PR=px@G8vfQZùT|,ͅAkX^vuvYw4?g7zXsV4<ɚkFpk[eo{$Pl7w,6Dל)f/XzatwY^ZtJA δK.n ݜ9zgt仭 b?b)raYOM5Z$T`ֻe98J"),3׉+>WckIfݩZm)iG眅V?)+l[E:䧜ڔ۔|.ؓ놈!& (>]R>VvVԠzDiHd 탒n)rjܠ|eP$Z֜YAulH;KΘ{uD3(~eL2;YSsx)E*Phιzd$@9ayvcw *(ƍi'}ǮAu3Xe)).W%fj-i6lzY{os\+g_spM9<&qy}hYe@ OA&#u5WYURzqŅL*} YM{zTvFq}d,2IVt!Hv s$XḁH${NqUK!N&$t Lտkox#/Omrhן6ζ5,ꯅºJ {투L׎pi7,Frҭ>m1k(Ɇ@YUlZL*AhƆ|MScPc*VyeG1e'q0`z>ʹ^fȝL/FYgFGAYp׏'[*TWnӔϝ[DZYц4%OE衈Ք39\緭P4d/\jM&2A,܇09Z֯Xp=733P+nئ(k9V TOqΣC/߽C_3Zosp1ᇻ=a*ih4OSIչ0L&FK? N> 7li,6po%jLr9Ga#C)}WvNfxkMu:Unm/ZFgi[*v'߉֓؍h=aҵ{ٱE3Z! db\Z´zeufDIetv5襕֣(4ˏG-;x>=es%L'[HlKsmZ1(lMYqJç\44<2\tRf:ާ8y%N%'u~Rh0j;,5puHd|t)LQ"'9Ip,0@Dޏ )l8Ƀ&q#qP  rY3Tɜ;\2͘nWmg::JH!,rT8#"EV{@3! {ϱ?K[w}sK}/~_CO;W_????~/?_K_</?w~?{O?I=2HO@H??_\φj[.]L3.BUr-TCP77 s}"?͝xUNFN! JpvA?},FU)9OI%$A-^^\ouIK#z|c/yaEbnTI91$ ?*ҷz]Aqh$)Gs8c*scOx1i8D5IY ! ƥUgeZRW-j3vB *@fZЄrdF0W4EH1 pk;.N rLҫ<(APcU2e7Ia_s?"N*BVIMlB̅ngC.pHLS-vcHnD>[O;%PqT;zB!ą!LO zH";eC [!z|@e܁cxNt;;z?Яn<7.#TH64: 2C'vfg h5Ċ |qD f%<u־c7:P3oY/~Aqv#BN6.nj!0myN^LN]%\8kfx6; Oc7']mQP&sizuvv{d|ɨ]T?gArB'CӾȕ/IjWFWf<D:ԏMsQp jl43c9znﳁhQPF̃QG q*TOD$7#=}ysnߙy=_S PP iC\#붳b`PDj: zaϨ (%e>.b2dP|8o9&Ed*TcUPédB0(1SR gJ4IV_,m8t;A `^#AB˦MPӐשCzCs(cHaInq =ylBA Qj ͌ޙكsVo.UC&09gʞ٨vOg96/?88rnu1 !9;Cl/2tW\cg{ c Gv{&ɹےL5C2f@gO3(ftmb8~=?QqK{׶5 #,) ߯m'K"# p.=Pò"-bFɾݸ%  ,}9+ORbw@ͬhqg_rs|58g]@<7i`Wqhtt)Jπ!#`9Cމa_eQuukTF5vl-kEa {R0?^~|ܒ{|?Il?c)woXH $Ӎ:۩7-,h̖c(f '7QMs3OC!ᝠ< rO VyHkș7!!Pl&7 !f?E76z~דLC _o'݄;;,G(!@SCؙ` tD3ݹT?M6} =kV!U1\L@{@W|K331PmD_9MvDI9 N03Ztf(#{T@aVQSDJZԘJGRrpJF VQ <;"=Lj "t;L;!yyVte?"U0ƃsо`|E@=='<:RF=bQ!$ c= "Q0a,o??nvO[O1S<6ݣ.KQF\ZcYZtui8/QL^ +AG}7DE@%R"߰4}je~Еr 6easc[iARsIPERХ*Q*QT"^ziZK5͚0Cdm*֢ S7-)Zb@ѥқ{&"+M. g*pctnxF\K5j޶h]˷Ny_+|jĈT!H ׆wKvW{b *jCúB wwʼ=\Cp MQjGI(c=LG3xJy*؊xo([ˮ|x{D`%9җ`h߹m. Lxf&8+0 qeʏ#nb4݇7ܙeߺ*\@` ~mU qϤ.eD`w,kϗ$7z={2!Bږ'&iLJ\6W%u%&2߿_ 句O>Q;3~aI7?@46"Mv`G%Ifd ))4tL|x >|{'qb]lB3(HUЁke 2z`Nmu 9jmafN9ک{L1D8|WZڬqy]rrCr\H+(U3j̎ x @1m5VljPvN~>N>U50EA`1?fV G,37g< P@~Q S_> W^0i>cYtzX?E?'^ cvO@bD`v> *hS~?4шH״HcF n4A7{!2{!x,y[ϹVHa?OOOu?TCAL/&| dK<"dT*xz0-HƊlu]l|ʎxԖ'RJFО?j[&KA> /߽Oy$|вL&) %[rƾQqŪ-+k&/\q&#CQ‘ԈC.#~!) m: X} I Lṱ xV5ホ6fV̸] @H" q;?;|Iɑ7uJZSpnCq zuΞ㏳G89gr"綃S.wL٣1۱o(}&7zs>TJ*)ZRjlf"?>:=tmx9Zِ'"(ڣoTF?UW@0cf"ީ 28CkaCOtH"2 `悍脢TqOԊd4DR b(/6 L %PHaQOSMBR̠>C:O>I:yݺcm$wzCW0?%oRM -AEF@~Fv՛PF" JPP:֐;Cv@`@KP:'B?.;@t(h';˜)|D$|glg€,SOUty's[|Az8{yrEDߟ:fQ#S`# ٸ #ߩ~?+Lkҟ=k=r,Zw"K{oz">YWn5\"b 9z6WU@AT|ڀ" g.U]Hus1}pp躾P h DŽDfH֦jU^&Vֺq(;.^ 1'I$W*b @!´Ҳ}p UJNh͝-Kי$ykφMI(D@[ZCH^D>bN:쫱A{o}"D@gz-B+c HMM@BTvW%/gU|JqaRtN['&9YxUu^ʕ2Y_xe+z ز]L|%7daہh;}oR?Iܾyp.BblNaCM"j3b9yHBcQMA'arTfDrk؁UKZ 3P)E5Vk3o A:8 #?Mūhb[xyB8 c3$=~c Um-RuTa糘m@ FKL^4N>*w|:\RbAR`y %oog_. g K'_ LsX#awOV" rKdtj+ZxNx)iUx,u T""bڭyh1 DDW g:SʆPC a;b`E8"sqUfjD@+=C"\oOָ{ 6˒óo}.Ja QrajY%>JJh.(6$#g4@}!+5lͅ%$VfW:GFc5}*i@D\1rQ(D sKrA-9 םi%OSUuRg-!#ۥoADʜ<ΦCl-qxV,UGצ́e%<23̲Fb?'boMBFhIe 0 ; C@,DilfȬG%22pD8[]J"%C|6{#21is'?1 E",Q(h>]Ggu6 Q$C%l?Rݓjس o;6o x8S={[oH`0RLP 8]oU  u N#p*p?4H(GU2s!u>eZ`1^gW:bz4 "1@=QqnD *5GmJ9TC|ƢHIkDGTzYڅϊn wDK}Bbꢐ#'͟ҫqַD;'L0A:}Y(a c7U4Qhklvr'u7C9g7Q82 F BiA<'c;ϠrưOS𬭄z qkw07onHe"ʣdO?ˇzQL9chHVcY5_3%f&eK)l=\='5{cD Ax?Nq$T FZ Y)gpgiʚ S5Ę +LGD &!GS27R!E>@{"Ѐ/g;Hd ]T1)Q9"Xז>8ZEUF DU 8a"Pp@ ⼾ a (tfsEQgfyF&a>_]"ֺ&*_Ӡqƒ꒎䐌>BaL5#<.ݫ~q3`)V Q9 / [UH@9h/#X0I~4 isͭ|[ ?MQ[6`#O~ L|Q]l;Z>fEBIz ֺ0TcR6!Dog( Z``?= QѲ\"=vਅѹ C4VA9A˕84u%2$GQHW 75nsU4A@vtoDuYIJ\S(A 0$G;3)͌ cHsX.SRx!Gg}@N!,Ne@mrBi.: 4QrV3E(@C ADmSb$8fiWL@ D&!0cQr1;z;˰e(W 4$hEDDQ B|ˇ쓂ѭ㣐Chv1$N00?tO(z^CPBC w2`r*Pal֕ £ρD=F& I  1U $  䱄# e\JbRE4E+ $ J f ыP[D&`D&c@AܺgAlƈj#&aA7)áw,R5HUK0xHE#ðv3HPKs,1FXbM 4!a !(bQ! 0AHR`3gHC ``I̔lA ?AdLJBH`X`ţt C Е,&a ( ,a`h1r xypT2Dq;]b!ph19aL2DHm&Y,2j0$ (' dT5HE$lj,`$ 6J9$F]6sd`!NSM!ɈbR"H`8H\$`A5Dp?Cj0վ<a>f$Ѥ漛c0e`2P5+/SD@"՞UGN{P +,ۭc1*"*F6iV/t/1ӵ0<96_7u[d +j0ƖEl 0F3N80&"h|m-08N4i_*L-C ڏ'RR-b׳1JR6#4>AA'1I18H4z$C=er')/9N}q&oj鳜ת%EǧAP,Is)ip_A]/̦ .~=%ڏU)8GgG)@]$%y&i:6r]WZNeEf)EWX3 L d/!A4Qцg3,l>pBebP_y>lzx#lZ"_(o,a <0K}:xbM}otLŜ>t~1gpBP\xOL3 T ЧU %w&1 1=bΊ$@(v0P+A48h!P@?%81|I _>CE5EiZJ P60W@ġCJT,:%ة"b!`hh()jF( V"Y!EQ$CQDQQID/Ijjh bHXi*jb)%$) cS$PAL?d=UIP CDPPcEEG׏Sz 9vDۘۇ6 R4a$p^;!@j"C!z!Aʔ@ v Cv#C|&sxNpz@=6PS4UXsLnjarQGˠoc*YPjeYEy)MѬarĞP!!̍8Bl/W-(ih_b"Hۡp{)w8J)2D5 =:uKԐܜCe6t=bLd"vȯl.:NHV7 h.uR{]̴ ,†IV%Zryx2} {8 C}'v )y$47i Ht$C=8" :%HPEP9XQٶ#n۲4#PU!TT"B$R6990#  H'PPSB{@m?@vJDhl !GSAp@$ L kx D C"Ğ 1DN+ade8>^ zSziB`HAXHsp*C8TNq3NN<5;/a4npyߟ)i.)I@G4{3n8tmpLF jAbmt$Eo00QCT}' !jDdbC#*8NF`:Dj>D&s땨Cpj)§ [ hBo/3F|- J._u} !K1{yb!̮L Ğ=4[#cX(qǧ4ox(2t5L+D)(c2M,%ӨN (! V dEQJrl}"{}*23:qPPu:;o)UUUUUUUUUUUUVdJ}vrG%ZЮ!"*|Fi'ٜCz7${1tn&s'6GÎ5f^]"GAťȀPVDޔLj&0{#vL@vAǍAFgHJ Q K b(\УO`9'11ʨ&~8T>w!yVn6}kxuygIq??=<0ǔ?.~?W??);} n7>q1"r3㳰?2(쿷6l X?T0CB*AѶ{c?>8BP A Ov0n1Ϣ md3,<_$-iF1`{Rx[A|;; IHk:Fb#f?{mqRvCFS lmo >N<WB{sER :E+0xA!3}w:w SŁ c_CGt}mN`|p{-Y3xDhjB%33TGCl \cȟNQ3CSޙ3d$ 1fz+R!x֠9MH=/_-Jtl* 6>8yDM)gAݐlHs?q}q\WYp!}n!C|Gm>c_݃:Jg# G뙙MnFHhp[-Dp >*~W4>~ =w BJ!i\W@D*Usީi} Jg4CcںGp )+PHЅD>!Ǧ^>g=8|t83{]1uq'~v\PrUӓjiJ1a5MPE I2zϾ~p'M6tPHڇT8<gaǟ!E _!*# pb Qgs</!3@iS+l?}#D"bp><B_}qkݵ(jY FrbBt-7M Ad^~/gtht/x[4+'͓ jvkd`mw 砌e:=|mT9^=>7`''^7_/)*~o`, O ́L0 S-0>mhtބLI>.@BIC vӂqO}uy~~Tڃ.ll?L/h;˜ `t'#2r:#j f)o ğ/? ^VVaps goYP|DJ.]I. j,~z8ECޏ,6MFT{Xl|p7&CeP# 63>pjP7v`5dNAI?N{j& Aۀ`>؞LYaG/=v:C867M tz<"'#3 8|O^Hv;CaCemݑ$? S7"z?l~x>3.csÀ%=/,')s1)>vӼlA~P&5?hױ]wtt?gFY&# (a90@aP0R1ooӞ?Sr@b|aN<1 2`:7gb}'t!,arduNۺ>Șr Dr& O@-9=;k3P`! ށu)`=oCdMBC(~|Dq UJM( M`Xc^r T5@ ҋC} Hz&C*b~;G62l.ChT9Qu2~xreu*{btÆ]y|zOu3 1p10Fr-Db-3!ST.L{g~e''{Cu;ӆےe)ȳɤi@hSDÛRM_f`u>S?Gt>}-Н& JC0QEQEQ? at?ff<\fM(zAoQ4'By =*3#R|y6DŠדNM$@2YIR%q)qb(pp?`qu(oL; O{*~|eWY 8q0iIG4aߡK;X}wܺ2O2w$%-ҙHRM]oL^N; dFD3>rY)D>nǰP"D~F]'YRv"h'I;^=~{OSXx)\~S$A~̘FE1#Tsi 793D31`2ߑ={p)oщ[a??1 fL2%8LPj1פݵiSޞ炎 q+ AӟBgCGr l n  oaYE_jOGay\:Hx`/?c=k::' "!npW7fpo;ٌ'J) ULsPCC c>˕0* k* ?s @oW_9Lv @%#[aG0QhdX1ӣ1~9! ⡸ 6ruS}Z|xvksl2`QCh{Sr!'~7t(`!=LUE~}A:N+DFQdbM |SC_oy~۪/(6?m?~ x>B\)~9ȩ}_#/Mj} ~\i"y_+qAs%1rIlRqH&?w1(=~̄B_ˌUrT\"pHA8w=d׫DyMxdI߳G @rA@I|h ;?UCg,#R9?`"4"Es|ښ¡4;;:9~ߥ4Z'O.h/Ϛ"[{ @:>wH>/9I;Cx9y` !Gu'. ha~\zϚvC/ǟwyptO?ϟ'0HXЀX>'6(~ePi9M-?][IM/8vܿp=O/WdG`ן8Ȉiܻ ! CiHЏǹt:;͑r<|ʴ`ÄoG]P%}9 ?~hr3'4 v{F>r`Ć7A)תS\!1zFi9Xx޺`| fCBOK%Jg°:R؃Nd?3wG9ݦvGt0N(B'r`Ј#,g9S/ z/8S?o3>qA!"~bޙϱ8̓)Mȃ`8MD>Үx!ёpdum|2 Y}v0NL™7x;ylh~l`ћQ@?j;+ FH`j+z4XqZ%P0SSEQ,*ui` lN"huNr:hKeSIuևleezםbs5%J^m)?%w#6zx%.|IM31%yjvڂբ V=IjQE)5/DS?:o >>KQ5: !%2m|t󢨪fUbHdLX\6l8;TE>Gݟ ;P N`6Xgff07s@qY,y hl0`GT`94xwoPʅ:S[CV-7 ~DI79~>st8JN?f:) 8/[TuC +"߆8$+-iuWM a0fBk8G?Y4 +EABD0(JK.܊lN4vhԤ:QQPc?dG::&pvp ITqeU.>sʩ~^qe (t ڈh,!tc݌]۞axڞDQurۉ[QԞjMQo4Y4 |Wj&720b(GEx2t(xf@D BN҆OԡdH97e_F H9Hr"` w)ּ?_NSj5!XQ1?[;7$4CmyUhx|ގh!}!`6B}M"_BU'ӆrzB"iJVJU "~|?OdSFsٖ*&gA?4SCSJ֦BRy;|&o|)̪i#f#2ecY4<Im/;jM +%y6?dVbUWڕz3"^K3Ra灔E깾Yk\ /'9gdؽqaX ,C~7UP8 Q߱W^x5΅!'sH |E mO$̎3/0y t6j*! Kfb0P l G+R)WFD Oz|RSJeoyy !~i*.'9C<" PG(P#D}((ǿ"llF&&$yD5]gK&'Vε(Ȥ)#M!CۭE5mK6Tн Z-Yx?{)DePQ|q-xuvebR6Ԭw4qb '^{h|:C\,i&u*XkQ>kF0eh &2첖VgH!X7彨e9vv:qݧ( TݔRr_g,/v#5CûO@²dD+ ػycҿ{r)Q[ Rh`~>TD P/h|@A( t!R!2r ¹FCA4 MҺ4&פB*ZhHbd|.|}t#Hh(T ~ȁ+sFHo6DH`=xq !pR2l@-#(ZH߇WiB^ƈa0it@?$sB`3(UGh>I餬1Csܕ5#5{g?z\fY~w=OݦLrn QP?5 wk{yJk 1P:^^dz ֔=TNB"F_eD1ުY*;+bbچکb^kpPgT7֌$$OsW6Dhor19-h)O%@$wjʬ";% 8:ZR0]wt@]ЈW)u wn!s760BM4B@DQ}󹈺:J" _?"|0nx_.J `Cl&P:E)_iJ(&i FFBI?m:u֘8raZހ _Qqn!@A)wmaFҠ*EF d v;;0߻ "8c Oq0tpjhb<͓S 3+Cve*>ckJ}`$ 2B?*Q@dĥìC*['!8d`Ď ;3!J~R8TP&C H~` XMAPQP @*0T-CsE>i:$ș=L0Ccm?,a:Bv*S2\J zۚbl`dYJ^ XTe@$FiJ) Ei"(F&R B%bHv0 rJ@?>s҇6î>>j(z>[Md0Âq <q傌M4n٦c\+TR)1bZ=mixc=w_Lk7BX8*rQ&N0Χl޴׮aaz\C.^yx6 Ƴ q;'$a Y6uaU;} mh ̚ٽm]FalQI %CDɋjwνL::|< Z3^Gݴh<^6kC|̎$PQѓ>3 IdEЎlL>s0NfM v5e¡?|) aCQaS #9y9tcXy aX1{?NP1y%}Oxvz|0B{k3sDhJ,vC/(JXH>o(9?|l|Oԟ6=M?;>=2P0#vݜp4ħ@ ID:D"1 !!BBHR0QA#CBP$'@g=b[(x>p7B# Z~aLƆ 8#Z/{"/u@a;;Fѣ͈8tOK$ NmC"^  )2#4,ѪAO=((3>c3UW`ca[~NXUtD40LP:q&,=OQ!.D>$b1f,-L+ӛ&/L Q OXz" 鮁;B~(X)@UGW?9q{%$xir݅ѓGNdFeҎN#~C c$8p`B_V#DA5h.&vyg֘,e(˴&eC~dzHq@- %9 =Pl ε+RAkNl^\W6^Ba""D"0-SLPD$ LAPSD4P{Mhv@\χQ(?\+ڟewLDJgg)1 =p SKI =C-L2B N؜M.1TM/N"\}<٥ f)*Y}q=G@@i(Q0(J#J1*"]y!CJS0z G ~&r.j~C~Ѐ4̴&ZeZ|(S$`܄Gp>.ay(`ćD>ILW\f0+@?\e|+& NT0A$D56*F.cW>#Cyzr{hM-!$BP  Ih7*<,gy"\>? QD3}I]DܒU$T!sZ Ythߡw:`&42\ $ !Dh|-*bowL$vL0:9f"15\ΪII#iMI\Y4"@MZ(aY%.f,ʓ_5!8ҁ&X0Ǭٹ%&8HGgc[EacD0q:gWeq3+ NippwKaNYta͸mA5! r&6̠-:9rrشڪDJ'|\2t]J&L[&.mkw0U82Sj!(2; s 18 K8. i\Y{/3Xjf{WU 䎦 I4l0͘c={$k PMBR"si@ (;WL Qt5e,lBp屃uUY|6-Vpa[gp3Q2 I Nc4 FSr_:OLz .TfDFm kZzOMntCWr"r@@쇌 Gxa3V q:t݀b`M~˶ܪ:6rCݪf9?v5bD4jLQ$_2c``ceē2R-q"V[]I r;X] UTx _Áq$zڋY1$Peh~, I(NgF;3`ʴN87a`$}Z<(ݐCx?/Ir:9#e# zQn.4)AN3}\ЊttS+xH9F%V| CL SDć'()GGLYgL=?ykpD4R%TDDΘ0LNzD}oc;v@rʡYXeHcQ}}p i(ux6{? nq)Jp:ZI&#bxu:>c&9cA@^`n'jj8Z N}S>:4D0 ߿Û <"E$Q&dedɈjm}>Ի9}=iz?A('vYɘ3g;`]Cn8 9r1eV;WOB;7pO?!lv8"a2tt |(ɨtn|X!))Ćh&9`^q?ώ'1ςbD4 8j%"Co&rJ/$z}0 (@@a (hn-y(里"caBf i":mAZJ?{~&ӎth Kҡݷ2|~C陖=YN^( h 6@q~cx8 6ʧr xUHR =%sp8SQEh)i>s׉LzeBt iso1( +%@!&%ER$ O?fA_JIL-eb4! oY ֕Lh {FK b Wa)8G[5ʃ ̝ HyД& 8aZ`dm<đՍdK#M8H:Syv^mb/8aPӅ&2Qrރ}>sFxR,hO\`h/~'Gʏ5VAPɻnG-u0d pMthR'ҟK@D$C$Мzzt^x$0mݢ{#0 Ae~(xGf u<<&(&0xCh\]tĝݶd՟6zA\|EQ"S(``KsL+^ĉJJ.'D2g8v,II{8g,u/\w f?nvF4D9a4DQ{2R(PxNA4`#rQE^h`\ #|nt9@8it؀Άs5T1윫}؆J_|!ihY#p;@QvDJ{&0LY'x(x QSH|yrU[^ jgrg"]@PҎ0c iQMK8`v5 *ͰC)"pɜ@PԴۭڋ {p"/&H5ҺR 4+4~P q&`)@e!QS`A'Nہ(cuq!$; uK_Dx*PhbWWd5M- ~g~MrGЬ'AÈyߞCX^0Qed DdQF&JD|w3ްjD#7ߓF[/i81$uP @I7UBTHd*0DDhYYLuǮglkt>2ta͒12Κ&׳h=#<(^@>ԪzY =!}u=^ھ/Ea:Rn|SR@t] 0D@/XM?낂CBR vHbKy0c63CÜGhZG>ObQPL2t%pN", 0&?'fT;%M쎚wGAy@jˉK]8!i*G^NXo3%Aq;[9ѹm,("6}8'4k @)MM#{@ڼ=XZ=^1eTޝw|yz|<銷7[t"#sZay`lG<ڪ1o }kg2浾N*+(TOmƏDa+r-GNH>Oz]]DTJbKrQۓTǎNZ1^Nmm*u{Y9JdęeS :wCEmKe遌ށq(6#rx| HI֍SixѓO) h4zR%(J7`>  /ySi?1^DO'zw{ɩ/" &[E緾 }`#ty Y%2c tÜ?YgFNYC- ,Lm DEّnQ[74Jhxr @r$Y۶$A%3vt0%o;~O *=u)-hTG1.[BrhmPY5ěJ4&* ey\nyF(nF#ǟ/*fH @:r8;y>#֏J *hKD/4:b N.*CHm` [Jál͠^, NއDz' qN)UVe*HJF9CI4Զ6?-rA5 k8a' 3ƙWn6֕0;ݡ<$* $ɶ) n;ןOЙEynƯwKK,[mbz;DD:"'B)7y5B!IB5DI2T-(Ȳ%KAB({MG0YACEDLS4EM$RSDRObP _ S@)ӆ 31Hv^rlԂmKl VTJkI/ã Wq ] ZJZ 0yU(Qt6bhXe Ld*!4Mhe½7{1rIJg|eD{ qPc?s:O9hC1\heC(7*prX RɷB0#{6z@𗿠 ͉7d bbhu^|!{\ AG';@1.dgT@>ŕ:V 5_N8:i(Z8N*#88'ue_!1( .|bRH,2 b(**DS锂vLBD 흆+jWQH谞{ݥ=!4):*&5: 4֓l s/CZFN\a וEC!;v׼Αh@MڃǜF!xCHC0C j:c\93o”`vSVI~onUХ:Ƌ͎To r80 QFaPKD҂ 4Tʶ楻 D=I;K"zniG L!t6]!DMLhOOޗ ||r9ů"*jb"# dĢv ͊9L&^>I(t!k˸=BNG]1ggG:u!LzNKIV!S'`d#ùDBãhr@y qp $'ݤ4sM7U~j7Ɏn#"{=ga(P/LN\e0 MK/mʒ6wRZ QQ;OD~wd>Cq@~qةJ,F/K8#%HK'BSbhI O$h5P4PFtF9Jm,xa,`i-7!v09ӆ 3W6f9"^@^cvNs5IPtl7<{\qi%$$PpZ)ך<~fρU6W%({ʕV)E7)h g%D'+KUцKZ|bTe*Zo~&n&/ 0у ,NI:EvleV|>wz|s0Zpzً&tj<#  ~c'5OE&9Z1&YS1AЗK Rb/C̉M_|]}Xw`x90aKLTt&.\ߦ9T8".E6|B!GOXJ@)R#! h)BcrC%v5oG rl1`%-(\JWС/o3xK7͍HO~}gz2.esw}u(s߹*&8(KcOuL&vQ|f>S<؆\#34^:dTxA%_$'ϊP!^wJ )Ƀq 8`8Ps#<ۗ&v=FAWۋiGdcxނJ,Bw#DD#[i}3Y ը&fJjJYq4mJwȭ{] y Nf )Aȓi'h77npdjCKP)j"`G)?1QȎx&᪾"f8#.šl@rQEpSs2:㫃\@m Қ@L痏si![Fb0I_RÈ@zUxjhENSTDv:EaZ32e=Z[Q]]FX5P#7[D@5&+\#bk88 #!F8bBJ6 _s'gdrt G 7 (a' X#%i}rbE"$"WuIf XlH\5V|+F&O jiAmqWP0fb)ʋ] 0}H:^Iڶ6 2;6CG x쐥jQ^cV8;;G =PUr|*6yF *tޠN!5p$iTw8*B6l~  OD^08]8[ , MbVTAʛ|J .W LVZ)ϥ7s8,wZaʍswA@E/#۽G26|(eZa yAPjcH3{lbڊ綼؍0q&~ͮ sIq!}7?Y7LqT_L|)d]C pW.Kާ ),U }ܡ鴇r=^׭2.tIcpn Fyh(\-aMMXd$*3G$SWwӽf!nksSvBi=X<B xg3am.Xh26 6*$ȈwkccR,iU TZLX6ۉ6+{s Afiqel`lTy#zI6W+V9VLP$sw]? 14 w H8F(59tƭSj_ww@o5,'N!Nj=$Z2}ɂ$zyZ-MR|+°J.-7pȝ=_4(X͛!PMB:8m;YSB#;ij4>&4IOiVlkqr "m00$ᐋ#gdnbiQz42} ׷}.܄$t( nZ9d $g;ѢCIc.;p㱾dx& fT|uUݡO ZA]8a '$"@h,0Ԑ̞Ge!ʊ\"5l蘲u*$$ ꘛ|LĔ8@JأQ}$hA(Ch|ѷ[7Vpopd@X8%T|淄V]7#"{G$xQIբ^-n:4H0hC898{H`"2n'! "|Lx`3n"4Ąl4\"4s+[*eIVYZխ̄ҕJkVi (I |AQ]rhHnMi槷8i twWMjUmql.,wBR Dq ]F3bc8ݾ0\okUaRdpƠC#i'2/cA 4G0 I:H'E\j+"&IN]ZN NJk mn / 栄ntɴce"Cecd7hNH*):fNt%]9T"+3hEWnDQDH!$DIqt j ֎KWQH[}$;K̳yƋR5=[ՄZ8GWk= swͩFx݅e`+6q(͜U3)F3 b57(R'P#U`f7kY )` ^^xrt zGg8^RQSQǾ~w5,ԛvGbq6P(jkwz zNѓod szRdhtM s D$EyBϏcGs$`cpcȐz0x 4}/>M2F  hbH(!_}׷׶z^8%3_Hԃ8dQJS9q )cFwӪ!wuMbBtt-u$0:ƈp!D/8}Μ(rHI'5Ui@oa)*4̐Qu;ܤ"# :Jy4 B;c*Q*kUɇ p^m /^::P\GK)HrCF/(,2z'5YzӚ!s;2Qq:҂vTpS.Z19 d1}ܛ)_}oiOWU;X&@OY 9pZOkz$d.d?*;1V$9t<8CC9WKj}T!.b,erΣsqȤPjP,d8Ȅ,gAʀk"H0QU4}c#* %)H%(4PB w1U+;|fxDm-uǃVH5+,V֚A\el`3Uu3_gx;kZmyJP}ߐ>cyd*,@ bhH 4& _ػ9,/i!C|.&BQ:8@/e}{ К!?w0{<ͼSd!@4h8T*>O^D(Eux13az4r=Ab|3s d>.QP ICwhԘNQu$7`TOL&Gp6da<4Dl_1fM0q,%HfO9'  4s4 w>O᠄ce,ˆ IfK>| '9‘TgGk t:)C*p+HO@; bԐS#Zvj9M7^F#*=ғ@$4Un l~QJ%5/b*(5i>OF`0WQЈACAX/S1rL:j(;TPR] * <xte>"(͚ʪ;pJZnN0N&f2qPUw1L8z|›N&Xb=uyxsGk? Y^ڰ:.ô k>}_UQL_GdԏG~/xl?o~pli on-v(j?ɏ2}%71CM\G+py4Y Rl!\ԓXC‰D:th4)LD0̅BR$F G Q_fjQ"I+" B샗XNYuiD(bhi1`m Hc!$:A9 $Nb{ʰpa ç /Cȝyz_#y46`!4h?t1H2faLJV:n6PjoRW rZ0b9 BֳHXul_*&ANGd7] 9|3"DTU ģ@P"@F6bB d iB ;!J ;wXN +h F:8!d9Zb92u? DEo_NDwç;^ʩ@ N2̌_P8(5?QAD9! ذO|+ M CI{$_߮ 3y9R bZ*FEf?ig&t &NTVW{WrD(>;RNK|iaѹ 82/ ,#0uy:ĝG^Y0Sp3,ȍ&@w`| ZZ 4RI!,W"bfHI@leuVE$DԄ{X!8uݪ(zE*Q'\5SvN8X(W2Ȧs%˅Nh8(o|> ]xrGDXDV%ƈ)IC-[]ʇCӲ J1. xQ-LXbB?oqpIcMz\\ ",ژ{`^8V9 w2nq .j$L%|^m=PœWm7-?AMALݯ/JcARAӂ?Ce,8~ӳ9UL~/o@ʛG:qnl`<#eI&DZ%ڝݞ/-(f6of 9bWMDzE$a}=o|#<. \-4-"Jb#/s[L9Rg3qMGs:{ο|;'Sݤn퉉dT1YR$'Xb#$Wm m)T+Ya 9r czBI04PCB(׶`vܹyʞz{cxQro0qX".]6w.IguͪNT [χN` S,8*Hesq֦98R[uN-hW@A؏;q 1Jv:c'2*ݮz BBy%BKܧ` ÏZyceN(U[i$(j0)nP8%e $fחW }͈¯xC2pW̳%\Dʔ2$] kJc?ϘTN8~e;XVbSuC dWY$yM* lp>mZ4G WǦqH 6IMT1Qܲj(t‰Uֱi&"fgLESQMGkDtj p$j"?Մ 8.84! ۧר)|s0 RCMa"@٬ QbJug'Ref:D(e%@BIZ$PbM o1NL8;iaGxnb/玁w4JXȃT0?(A w GnТ"J(bѣȂfh&u)ܝRk."ϼ;D@3S^dYK F*.мԓ^(UusZYB"⸮4zUuE VF\7Tga?[k ufCO'ɫ"i[ ;FPYZf5I9}:zN5\Sps:*|d^Yy,|.į6'8㩢z tB- IlÎvf2%(8f!XhXo$<sJzLD@)jfpC*Fl7~|U$@!LHJ{pVt&9CP\a#nԏ ߇<(o* {HMX`x7B\0=t6] A 7\o{882.8ɻ qQ:f-*Vyr!Bonvy{7]vy+۰#pE!1{\u p඀D&`1x904SX( D.?HME8X3l*&\?c%}Z)i0f-Ŏe6z,d/}zJG%LH"bW*afjiHr=o}|Bb%YHENȩ<mCД>u H>II8=Cp2c0|a=GhǢ$p.!{DⲆ%?17z!u񽑪Zͧ15:6L9EQ;p^Kaݖ܄֎ݞiQ! ]CMPj&4t&49Nat[;2o%ɼdɑľ.l%SYNeфk$#siT9ڹrV҈B|*/5^ v?XuԘ{ O8TC!A1H% PDL~iAlH0֫Fg!Te) $ab4’8Bx(1qȫ<3©#o@\dď˵/0fS B6"\J;^^,'߿n5\(~ 1"ܱgdް-K-P$=Yg3EŊgkYpMLVOfV a5 V7Lw:Eq QQ9-E>=-a]UU!9R|n'SqP=z9ݒr+D>+i4A})/=Q5 !Š͑ +<븛Ld.<{xT9n"IdLxdYeW\Z#N*uk2$Z*kaŠ{]qtt􈐥Ѽ79KԼ}n{܈71g}\ 'P7˛ c&%5DR]1uL_JT?D gڸ5Jm%(`h,m蘤,&ZiO#@PRc IBe_;D HLHR {DӒ" HZH`%! aeXA%"jX!bQ6O hc1R!=%DL2s!Z!|f%BId$BP;FSPS,!3 (D2O !hI! H@!"ppD0|1Փ21RpwXGa;QH I˚BlRE&O8ZDB &JDZD̐qpjz.%LtbhajN _nP0t4"Ǘߴ&/#BU:(T D{eu@C%LS 9ydMN3Cp~}4 2AbD U#IdiOth iGKѤi҆P ],EoImjiQɣY61Kz6Z[w3 d,SذJ#g=QGad!hv,gd^U/oX29p Og5s4'Mz9Q`y+Ān0}h X{e,Ad0"@Mrib=rR Js"LbG ] i{ˤ`ECOCrGHhSlӐ#n =saA 2C2UWh;c$ ႚeÞ5X&~9\Jk4DU%2aׇ@WDxaSB ). 𕊀i'w <zzIAS U1Ql2c LyEAnUQO$Mq7 /%ȀNl:|>T?5c#A_aC8f""ZKA}'gc zVx.a :4GMIaߚ:&B*D*7-ss08S;y!Ӭ[GNca"}IW̹W\JHR=Py`c| GӍO tWj bkWߐyd?;/6p!p@Mؙ{탨i xsDc}Hj&G_R~X|*XWQZ##br@]J (ZI&([oCalj_V]<1 ǼYW,DF[APzrvLg0o(4yPϏ|Ls @v齒¨b~2 "'@;_!2 &x/* EC0"zOA˄WV*ہݡwA513\ތk&Qcɒ<:rLCo") |;<8"d{ J-rHu<&C9;8qDIO7۔3Peؐ "JE_4N~oDrz0f=UlBB׳ m2.6@y=̩tHCqQ1" ҩ9 Cm%D"d2f  :t2eV]s/*!$5!@G$vB̎h>JPAeL@t%4 #:>Cs $Z(Z](:RCZ'K )&LxRܱPn`! CLBT):4(щ M:USO) `C0! D<,foqit-`2Άz:vKb0J0*\A<"yȴ7'S:u'H!J/8 "!O~UUwX#Sm ;!E*'o&82 N  @b#bT KLj!Qg:n$!Spjb wNCyxez`a!U@ ^񪂵_ 22DF)t@F1F9̃! K`NhD;%k@i{qլZtF5$۠k`b 爆 * V6!f)IeBLQ֚Idmb)%GmOY1tS3RK P=h5N& 1hVuɦ& :0Sݱlht̆$lS# tTmchۈ⬙5&ӓT%-EiHn41V1E2UL-kX赣w Qi`p H! Q\x\P>ud,/+ dV9Dew^$4:??*;ENb!_'z1~aOYdu.S^Qh*HbihaP hP DUJ^:C(5#Ep.dTQLT}R'\4T>['L%Sh09?_B=PqO0i ? Л")u'Q{N/ ,O@( H(F @DJhb(* BJ"bR*JFb)(b)$+J(TTRTRDAT@K,%Э3 ́KTRP0JPD@PčQEDL%ATTE$E$US5EA@KE4 A D-DBU4IHTDJSH% %h)SHJP"i(&B)J(" (eJ"i$hZD)"b`i QJ)! *)JhRJ@iBH&e  ! " @ReiR"A"IA(B((&"HY")J4LLS)H̅ ij PJB$?t=8C":w!d s0$%*DD5LD 4Ju(! >|O4VխzI~1Hxg"t.5K,RشC4J)pJIE8Z44v:;`8T?Th`BD49:E|R#@*"u$^aW1đ0>r* ڢkɪ}7xq?/yda_c6u;m ]"#j,FPq]55]s=YsY1KA2 A kABd$\G&Vb#ȿȃ/o|չ,ՂYCL SXl(h- BP)2 V-k-Pڰw3cq#B3WJ)\;K.ZtNp 8YD#oJC(BHɗ fȃE d4bl$gVˢ'@s_Ϙh|o'1ߐ': j%hI ˌ $s;:HQ2 3ѩrx|F9AzSo1bTߠx%IM aSQu׸-->dCn9 >s>6|NSAzLQB LAIJQ )6- drk[ TiL2^ %RETyE.z )|mX Ha6S n%̗E A !EP34TRT) $4D5 5TEPAPKAQ 4DPA0#S D5AKE5P 0DKHBDKJB4M TL2ML 8w3ФqQr'$(p!`P8X ,sl"JRaC.|K0<¤ië2qQm;/?7{KEյq.0;Ҥ1f^;M_kG5AH>tBE1LL@DD T0,HKB5H0$ATLJES|a)(_ϟЛg2iTٌ,L"f _ލh "d)J%4"ZDQC(a($I#")@R(P47{?X{}"~J'Ol+D2f:ή5A1̳E˪w?)סLH${RV Nr`#a$J@#nUBk5w'Xӿ:D%`BE `,%0P(G`)"d PI-ٕ9 1DTz%vxuJZ $)*ab)&X)J *3&dsMb ˲&:P,ĪD)3 EC.QI$HTT$NMy24T5AP EL տ1bB&(@5!;@hБ(LT4 $HDGG_L@xlGb:P$@d #-,ܞ? CW_fF#@!<f T4@@AA 8)q (iI'ȥG0L ;L3]4'9%DD]:R3S,;Ep zG!Z20R@%) thuL#Ŭ"7O(@lwoB))l:&Nəbú ׃_7_] 䕠ᚦSd :T.@U:Iuq(n=-Ww^w | L5Eq̵ _. $@(eI,D !&B1\Kk@f?OO\'^|+ '= eLơ&" 8GƧd$6kx0 3SS%L}!(vEa~@2v_:#9" =v o!18ʆryL@D~<(n'}>GqvP&RXln)f*풂`QAde l=^C@'0ߊ ä/ݸ w *G_ұJѱSFwbȣij\ŶqmG,m])K̮a'!7y ÷)>xIjo 8hkpF!}]D@9k`S 6 ]D)2Eų\\+kTvD|OhI)$p7hʞ`skZ񌛗$:\.*C ;meG{,ƮNNfBExzt s& lC5g;`d[q2q9[>RjNmywPvjaz2\Ζǜ6.^z^呖:g.`w&JY4d)2֎2u[Tas<ųP$*eFgqsTD+PT eD5T)pB*F&jXU4s'0S/Q"Dk{FLPhM^ozk- ׳4E߳5]9LfzU)]ΦNnכjfaH*DEM}wǵM@j]& =senFoi-Oͻ{ )<,/&k٥M@1k>AeUBD'\:drmsS#䤱-E<9hلrmt0&2GgA!^ۮO3y!D׿3Gi{Cšt(Q4I2!(sM]?xyA 珓Gʪ  ʐarLN&cI8=~x>;5$>{h32V3X}yۿSo{:K~b 4`j~#PS &a<&ǫkdȸO7Zzds lk*ڵa3]tƏ4ɸ; 1\P7_t"pq!W HS } + "R "sP^>ꓛUCuP!z$7G %ӄ=poЩQB{vFNF45a@ܔΒ=*)^'U(Vh)?ST=@)Z *@]!h*(ii4(JX N )%$ J "@48"))F  Pbi%)R)ZӠ&*aEQ PSEQAK4DKUT%DLC1 2?FN p?}qRRT5oM T:yo;. 57 /HBCx~,;OTgdŌX`HČ$X'MD ۱ٮ l/:RaFJh/SmN\zNf!~5!"?! CfF I T팅(bHpdA-hcA2RS %)YXabB]`X|ypbXBQ0' JEc0̟CD@@q6!\ G3l B8{pA@"??d@6gX>y='H:XLyu\a2RՁ3,4|ȧSF;]*\ Q_A6'Jlz%T rtl045Hu- e"FIE9 48S`m9y/쿘̾¥4U)P$A4;gCp Bm(Nzw'@OƸu&ʛ`6t.Qp~_i2fiQ zj2=_R@H5$O϶RŽmid#roeE-hchBB ,: ڦ`Ga3'ר'.h#q%k"nlqICŀ~PMBXgzFO!_! 'BÂ?܊;cIFNQ&v(B٦{?w1X$z& m_t&k8arh*J„|=iJ> @ќ]lNa+6NL52CDPz`< v_;'RE6fbV I5bh`1CˍT;ammlQYS Ό V k}6؀C^ Hc?>&=&>FsA 0ݿy҉ק`|XHo,;azJ ɆGl2wJ&$Ť zXq} TZCAJ.ϵ4 "b3Iձ@3U  C'{ʂJ{`n0N`TA C1È0F sV%@1[~GMu@h0ТPISH>Zui%e*U#,2os͞DXnd. 6D2\w>QxΈWQ@% FP@ssiJf  { mMFKv/:z{lA{ *5|ۑә}L-4Q'f9,:]`Iq%ͬL[${%cBHԟ/yOe"N3kQX(}I:2 *D {< LOŶu3hpXbEs1Bm$jї12z {蘐>쇷hfmРhDÜp&K ;8m؎o8D7fi)cpҔ!\LeݒÔHSS(mΏѼ凋{Ii^=ds)kH/bDRKqڋw k'&Zֻ1LyD;Q1 bz!@<7?o!t?9P2+Ow;GQ3)42=K}P;ۂNK=7y {_d)BG(moLEY3*ejKJ,%r]f=vɦN{p oRI ]E\CaȂq-rp1>!AFdCBU&30JE۞Md$ȗl*aҢ* r$d8iR(L 0zu B$i͐@mK\ڍ$n,STJ*A{)Xܨ=Mɑj)ҋ^Dt\;޻BK2X2n\ 6aYU-7%HNerL:w\4gK thr͵ JL`T܆wfͰ&B 1Հ4hXIj&نl4l*5sAK U*[J.^bZmM4U^ldؾnBQK:8? \N4M$0 Ċ@D҆H\ ݍKU1PNK)zR*33i7< l>} ȏD} QTlW A* lHDLZ iS WU C(x3t$`C ȝ^-юeCXfm r8'ۖӇ_J";/ UT,"OPō:SKht( 4@BL%LS4JP蘛Ya=6f-h6"5 ԛM[sP~S9f+>":!AzŏT:H%SpRpp9|B" a&cԯQ5E<ilt:`$饛ḍsCr"YSeaq,D&by?;!=e H &R@[Kj8TT0>A@@"*J J ^/d@ۀ@E0h"yj 1ODEws WP!R) qrha 7$ cz/ + p;ߩy[(* 0+_EM` n -L7}w)8&_hR>^g6}܂@&zd6,;9`4:34?Z39C=2/!ev]<T*Лd:LxlC|:kr%QP3LTDQQ,A1,DTAN}"~ڌѿL8~*@S6]J}CϷvRAIp` tPNMp`(Mԛc@i+jj )j#IC| qCxeD| )"FVx:΄1 6(+($&Bk|d9zՀ$/drا;K3 DTP-,´C}$ #ӱCq@0qo"=:! #f(DI2\V pА!'JIɎLӌ?0#{9!VjG͜6>`qSCD8)[Vi>h\>a ^!}Fh|ݎnƿؒ&0yl$Nw @r `(T?ktyao-]CZι5f{{ǢETPCe&v m" `B>Hj?D%D"?HȨRv`$J)^`B `Hb hi)B!da &Sa8C^BB7ø0 (AI;8h[Y\VC{\syiGltb c-P[c?1hBb(yq<mFִj:; :zC'`gS_`B8kjTKX[Kkl)=쇵/)(-i? tqʥ6^_#)[z@ sk6l]x7c*aclFs mP RQ D/lmmϸe}FO<8e:z e$ʩ2a$b>s3T-7LΑBtkFu;L( M0|7 5DT욉I&YxA=f0 sFzwrA`.*+Ҳ@3 ʐ@&@Tr=nxd!:DZ~Y\/tb_PBZd(tc6ă`)OP(r R'F*jՒ v ~Ncڞsс6߿Eys$A>nNjLwSx[z<} g'}Y|lͪ *C1Up7!id=oQd@zff`|<]HAF QTGH]u ߘb~ITh "W(PUJNڨ`8 kjx!PC 4DK0% --"I,H7TDT K&(Bt΂j e~xN6>Zb!D۩(n64 :!E,j4q2eRʐP3o U 3mNI' 0עM͏|F76# wu\{o)zS%ppZh<[;]m=%Pm S!'ʋb˄WhZѣLĕzF mA='E~Ty5Z٭Q.q]8L|ydc3K9\˶"X"v֚)H+G[z"vD%DNX Zb/<>b(*=fHd@ $6ҫPu݋t! 刮ϰy -<8c%wk+dh!wt'|.ljN)*XJF B">{8qTbGnm @nserD4%r{S6<7h@3M;՚q?\ћjՉ&Ԣ{R28~Cr-ݧc[JKFnƭaY:k p-mJ&2sD lD|" HkU6ɞr!_>`(?G܌n_5paCPJ9jՔ-Er&ūX^ҕXg%-\bEa1 e @Ǣ $Rđ) D#5A X裣]_GՎNZG׻66J rfE\2"eD=1X<\u)p3,;R;yt`qJ'aЦf!w00J%$\]%vJrJV^4ClnhJ8 ECRDGFFMhTa$1,!|Dq1@XTi$4+XCH;"~Yu>Lym")YErPKûFCTmZESA35l!ƂaPK8b vw>2/8>C&d[C]ɦ|rR>f bf.)[e#cIEՌ1Lv?{k&L` Dx%V)?F#PRT152ֱ4PhliBh :P  wS1Aa@f xIy˪ Jh kEB1w/@|C@EI004@PU Љ`#N#\.4%|U#>JI=؈|J4 'zƑGJ.;zP)ԎIj5!LSQGIDO ^e FUFRa4I$l3&n[|^MR}c2]6dx@=P8|Z*dH|;a =f{C*ȧ !aZ:|#F2#h /Ϭ;i6il.a4!R s`l3gQǑ3 &0A ˓P F206'$%Jf%d!9i0!j % !f$ =1T$>ͧW=n4]v\Aja\nhq2qwƖkާ~xC!8_߉%.AF!1%fBqm g)C`1h96F躓)0*tz{q?6w4NLAyaIG3fӰr (yFq{-;@Aց u!$!B-   ]^cACN$ЈL  snjdaՍ'݈8T;(Y EY JenrYqe!e e* 8Th0WZ]<KHGG'2 (i z~ G/~"=83H oir2xS9HE!\9`? zH!$#*D0+HP(TbbH0h@&}ATUTĭ4"ZKlCi̠)@s!BTt$䀥)O GCHCh ΆE@Ż  b(F $lȄ/ɀN"P0H)ЅCkB:A^`82g7OY]6OM}H<44 JRV$6""$ ˈ@J;Q2@o6z~}9!r1(= דsX/YѽlOE i85X7%`y0!EĂ4GU䧑a6E?88b"{oXVJagn>;w!Id )r#L-sæFm? Iù' păP  j ]8RV*&*Z* R&*B%B"@EJEXR)hJGW  }ʮ?z(}D>Ca0Cs~2|W@1L zXhO?kxpI"@ V%fxBRH) xTABP & PNc.8ȕКLtZ2&DI_ 'lvҹŲThβmqbəjvX$Ql%,m51A 1`4$`(j0bi& b$HRi5yCV,HLR "30]y SFW>yK5W\*'eRI|"E$#AJLDS8II #Hj=axlWm!JB% R*L CD*1R D!2,(PAHn?  H*o:P ^a^@(_>?^IZeR @Т&ANQL)̦2~OHz Ib"`GP R~cP?a ̏z&c6 DaMQ(bWV~{)V~ɢ;IɈ%BBː&! &H K#۶CPLU;Ŏ8 d)EE 4U]G0E4L B$:."bΡdgE-T 1 Kb7\cEKGD~z'ub T{ CjP "d߬DوIS_@>6'cǼ4UKRI%߅1]IKjb()eHiB!Jz^p"yMY!ـ]*PzJg<)|V@/—H?D.bꑂsɚ4KM;8$#u֦)4#y !pA"{dba E Neh)g!N0dHRv*PS)2!àKdK `jZ#9K\K}ʌ/KaiD @?]Z)h4P8^) Э" J+|J]d2cOÑtl?g0-|TBtujw_?b= 9Q1( D(b?ɠvFNfJ_'הmP@~h/dtm[8$2^LNہԔ/< 錛G{ KgK]My|Y^>'>` *$쀑D|E|D4"EQD$CJ (AQ$@  6ð.l@Y zنfO7hod[Z[|,ņ4_Rw." |iM:J}zrLDE|Z(Ne̓ڠZ(ArhG亽)ۀ:r7djJ%h m^3(<܏ԇሸ9B%VA=3del{P|| W*BSd%ߑwdr Bc^HEE%ucwcKd(s llMz\*t)B(@\j\|OD$@Ue j%=4 hFJ.lWQKl}"c6RJ ISDAr <{%J֝r1CrT1w!ղ?!?!ޞJ0N"CLj%Ӽ9Poz▷~I탶23UESNb TIPmwS ,*1$B6nÉ.[t \sɹ8eD* *C'QW.Ma'o,%ٹ=T()3C0;ػ<^ _e )F *I)H?^cLŠM-p1 r(irlHN@3#-~ Ěӄ@MIv"\!L 9PzO EPSQ )@B= 6P_){TTPU@JUER4=9e CQ !L@ǍZԆN*#6Zm 1lX4h5c`p?:d$!1&a Sh)d N1O TRAB~ h( (`- l}!C @30IKE0p\dzY2("h!WHlp@B0=¤ب ETɢb-nl) մQܜ:.O*!15L9dɏO0|'7L,32(jTGE0gTbI-`#5llaҘ`&% : $̸:S`3"Fg<=ȝ`aMM;C+Kߨ!fNuD v@|KRy{_6||E>N%b"} ǐq gË@&KsrE*F̠ÂV &ti tZ|lQ$|S䡼?-h+ǷvM!W_ ,bPB1 -]P* f0A y bD42hu<@+M'9 ⿃dw6Y):f! 餰C 4-ٗC=X!hP2OXP$ D PPc80[2F_&fzѷHu-@EPI˕po.3D1 tq$Sgl#$,N4UIQ~*z?B'aX=<$C9G%#DTCHL4(!t01ow?`vrpD_>~V#j0 wӈ?BP*QY'|yдM v@0$) H$B+4, J^#s;s.ұy3}Pb>td8!hwM1[L̆)!J!@GSSgw>:>6G5"gPGl4PFyln9c TpBc MVá{T~fP! RD=8&`LDu@i r@ub6Byv &N_5@$zH7bha gZR*(aT."Jb8 ,T! %ؾ+  GL5 `);GtgO|OIH`Gt sdYĂ|'O1{wyVϽ[|J{mP}OQ6 N t/bCC RcNDՏ=lAgFܷJTB&IXd$!CpAvcN@mR&i+DA=P:xX(:",)B4“-4QCp`"& `̲M QHC*C _@҂E#s%I+dPiJf!HB e)Y%6΃{ i)8 WϦ1} \Yf_Nx z{UNpBNHOծ.P "FzB"ui(l>(Jp7}F$yY`?;w+` >TBʦ^l\aEK *k!r|RDÂq\i-xIq<~8"퓕B7P wrf@;c&?̜=VG!cH'!D@X<`|4M 5 0aʉ@ ?{.1=>7V')T%ǻM+MvMG141\k(5NaFntu28H)6G=D;u:D1  &~???K .)D1!Nt&C볋:`飨تc{޾+xZf'Pq$RT3Q>N5b%]9;`mRLRD YݐGT|uT:0[uE?M8ǷP::ay4`5'<*:=냤a ѪJQ@4? P1  &q$ֲV5гQA y#b`2>$2)=%RvH1b65(U7`M4}fl8cL,#*R3=HOrB+CAOw㰈u'D-82! 3CL{P BiB%L'DWMuD"ݒ `,D"0A&TI@ 1+ x?dz +M&dk K ٲL \пeIt MMnGIk*up,gd.B astxxn$+>*dCsvI*7nҬ@Kz?1dMOroA'"@%,C, (11RL7!'0*EJ~&BeLdȞ>&*yAKTı0KI$U-I\ty`an,(]qDi%:Ռ}LH"GDe$RɥỹƉozdyk(̂FkONy<1d8 ~E:P g e|u<&J>'*\|yժQ};(FlRD A9o!FbL06Rcc z6v޲=~aB5*?5y--1 w>6_yh4 \73?5s{g$eQH#-3 LIzZU1ڴI'm,Z"R! D(V<<G"bNX`C93Ł:[8wI (6BKpۓt2m#|}ϱZ>~yO{Os_{6F$s:mE"[)қJTC=-ovwh)v a< > -5 cXH>0D ?>1ărOmt? "'ԀHv1ԑ @?LP/ȑf.J+yN|[Bl>iB5򫼐 (3FP|gRC!|4w)aA4 /`~5U5t @4$J=( J&MJ%*rz(3 8Mx8",Cͥb4>JD8(wFI1Lh:_$DJ S)Ԍ! HJ!}чd2> 3%N9hZ.Yyj4HzIusMDPhl,5.T1CQ/M) &phQ,6(|D$;@^モr@F&DĨ8+bd ;gP"yQD HȄBN&*=T33ߟCb<)T8BBĞ;J1I PĻa!dO:}p`GTP~[(bK B?zbtA BD^qN @We( 2GFDtԪ'ĀDUy>a J+qq^T8AD(R)B%RXO CX `pD-i"9B8W!NY8YTBxNAU E0PDACUSI5I1$TS)%QāEnzyR"G&MKT`ijUo.@W*B#!%"S2a] pQ02@Px=@hӗw2lx= l2`9d?,2blM|>yυ8jMVm"mr%* $$1r"B:XtQicI.?v9 ~9+H 1A~>Mx.of`QybUYY^9~ƻ&5;\磓ɣFM2J㻍^wScxeV*q7#D8x+zS 7lhu8+P2Dq9֣5)-$&jBYK+)'.EdC6Fz5qnِm}  `iG?Kk$]UK)iELt|<;E{&?Jv %F=}f`.z*i W@)"K)\2} UQ|'zXk2>f¹c'Y;,=aQx3A{jA;6smwxھ\!":W#Ў&g$#->\sJV|VBDӉ_4%DK2Ҵ|/v"RX̸ؔPe\ʪi蘵 NT  2{eXTCWMRJЏyvuM*maY].z$pM> x.%Ԓg5Js3>G՛NWۋ74s>2v&nKվ2蚔3 I,nV4;iePb  CLm6La5ExkcFwM!dUrtVhPEVcs*6b!(e]WbZK*wiz|8s3$+5Ծf} !$Y:fvv~& rAHŭl۹GTЖ\שުb;*}\vcA" p㙭VK`MD[T^ZfFIUxލpTv=,1ԧ|I x[qY~[Hf&~ָL71SG)"cgyK)FvnO/ G~ы˘WvJ}֜bRJV+IJɩK${e&\DA!4v(y,_^TFǂӍ5Fq(ycZieD.`>ثz]Q֚.rE5 y ;2s߻ġ7.{t zv+YSy^mQH&L7=[EBigq-HI[}vw̑I|L !5qj2;0 '0xQ;PXG\<޼8n -#>\,ؑzgm]ãJ!ؑo2Z(ClЮjFna5C$xgj;8;%ǖ[Aәqq;TФH$ t}8n20@pB<`V\rIp%{f̛<ݚ݊zz=k&51 @&4RWzZv1цA@% (F qA?|hz.1LpC#X&);m|hk9YGkjN\Iԧi̖Yz k3i-a^u; w|ΌhSr B\Mv ;i ,1:p,kx{*0R ge'N 3`OR;J>/^.I4f( X JEp g+.*y4Ē%yc60Q&ȍb4ܵCH ILVNK铹/ftc=؇{- ۩CDt?s9珻 n ۵RM4s&'3ڪD„#ĩs/[7hX1fr<:`AO0(ⲐKbJKkcjDa+Z:P[:uN,9IM1;Wzφ5#Gчu4κgxsAK}QˎaU⢎ΈpiJ5[zM^턞kT3ZxϠȬ+gŤpUb "˼ha(i#z =uoq8UameS'~֠O$bY}k7au 舢 cn32=!r;$ꢡ)P]i`oVqTi"Komh|( T:)Qmp0$@0B=v(!rlهꓽz}$Bԍ N!C%ɳ羗žYiLc0 $o啈Д#B, ]@Dh"ȷtԡi3EA~qPbRiȎuRT+|p}w &I2c$)Ҕ$?PIuU3r=  c23yѩ{l|FTZ@]g uygN࣪l5D#pa @h SPtFm~D5 TDukQԉ6gm%bq@A#i!mS$waLE *e@kj~Q>_| ` ޟ7ƨ#1)}bLHHupr 99~#(؏(6w|T~ g1]|=܀;X$!U&U6IM#Eϣ1 aF#*{I_y!d`nB, eTjX!gX E6;:P냘T@yq_fL҂MaU)5DjA y6V745ϗlf/|y\ZQ ĉFE4*t>4O LwXtw&b( J! mj\S--NՐnc!5B8 aJa HO94a0&t ^! 2yE-%_:i!)̡ +,'djb;HCL![#s"0yy;Nt;B"yA|f-=8>.szz=1ՌXYto*B͢~c ּ)&%_8~Hy5Q[S2K*Ll6Cb,#V1B6┱*s#t(sed9aßG?z)N7G=qPy -b6tnÜ >0 =z;c2&pT9= z}\z5Mb d'K1ĺTmAB/ɒ%0t"HBr%}p;Ô]=>m7 trd$/orv 2"cNNrwXϑG 1!dQn0׷vix'(,A럑--(zċ~=T3>NAp:,Ggfl;7lϡD=wH91 e@awOWZ,VX!DJL-1|/>GHўnxrJ3Rbd(>YbH)h9Փ5Smơ**`cᡦzkHn|H^5#}1SB`۰ry|ǖ];\H^x>OySG9z@^k"c_hJ.]e+E8|"p: %@E,uJ.Z;H)ٍ<Ɔd(h 0>فGrzUFJ0D@8륦&+h:RƲ+CP "|v0E@!~%T^]u4݋Nξn#@ _ QpuuJa%M".A";娕 W-(Ma[3\`M6DӧIVaajFa%9%N,.L.UVUYdؚ/7u69ܚ]6Ӂ`^+@U\\ХVհ4~o)yI. jTO$(K Kv#% lzllq>yݏ gU崴+DTI C rd $U.edMAH<Be;k'}se4iB+ @%<1.8$RdxtwjwQi o!9E{AD8$OSuP&Ϸc15QA3PM'/xTbF;OEb_/_43W]S [ƚ j@Ru'=id(z?DH` +2":(hfRJrE0Dq??_* 4k4H6C{'|ĴqAWaK]48C~SO@}wnT1;x@t6BPWO:1\~ }zrfrП8ah~D9Pl,/X*nAH UZS14?Ng vtL,/#Oig`HoFji svr[<T(r.9|ѧuQ K#8y_*47j5kGRW825b)fo:gQh+MD]MSMʭDыd@tDXs 9*-EV5<n|6`#p hOS-7lG+:nRQ(_\QQU3 /}>"1TL/c\Q<0%5k .ƒhFvӚ3@hި'j2$\oWunږqe(WDm̴f(U8qƴsw,Ip-7.g{+ -CfݸHYr3>{2&(vq^p9ɪ!i z(f=~w%'}.[ԔJ8Rv1"d%0 P<ƠT°e*J)l [Zc!3(hGp#_5۫DK'W=84oZPV8k2Nt4(¹7g:}D'HR;ƻްqvʪ3j5i*Ĉ !42 kJhlb-tsWtBNB$T9tEyXWpfQDFfN%,rQh㉸{<' Wb97<\I:ԏet~eD@"BʓhJaI% j*v`RC.#ʝ-d1o-+b'VeR? 1kofUΤ\fPMCR>Y[Za7yZGtGN.rrJ{n"a.Ef"Pb9[(nrꯅ][ ,QfW6IskAxp0(FPx~1. 3{tCof:\qoj [/:Ct|ko*5Y1/#ԾAp)x])g R[y5)Rv P$.US/YD 5]NY]YU]SLssV$< aEz1 B&T3Fx#pa_q8)I  β|8DZ>ԩoϫ PU#w3-bY-Ugl[ZژIe+9S=YL;.bMg]mR$$5ؚ|uVś;xĝ0ǘ7A(ZO)I{GJbiKʁK2)]W4F4٩MO^O&C#I)Op˅E)SD(ŵ(5Sg*1Q:׳+"[AkT^rq(|ާR$!iV-Hzoxɵ2KdsjwowAmrTE A#:꬙AZڸ@3Gi!=.jݚB,AIq2b@(CWJ\,U,C"KV ð27vPi%v=iuEx4ĨnDrą}Е |ʖmӗ'KA^5%y{VX$r0I*H3Ca=A7=/Z$CdY { SWpEFQxWE"s )agP8D@!PD*2CA!LQ%892jhhoJ1 ]\gx1zCZʔũ˺ kTb"p, V)!d0D⪸YC*"'& 8cou7qVĒ}lwS?ȩ; { h82I֓d< 'ܔށ(, DZe kˮi2"6QȞu (4ډʖJb$&S*({Sڊ`Ƃ(S()[Nla¤%61}6Cn2&?Tx6Uja1%Ԙ 3K!ChVzq rv -:U9EJ. g*vtRNRt3 PT`Q`DID,>zMw쑥Cp?+PLaI/OrB8ć ?׋48ֵN¸˂:Y+MGfN)(ܭ>kJeBM8ZabdU^7d}y(=mJ.vRRqFEC/@37Jf" ֵuUWȠ896hT ҂b&2n0DDCp& HYch ;s]3:t$+j@"LB ;&$v)W4iR3^Է*u.Xl& `TSV}fSGOmAvtE9ocv0my"M s"`ޠ`sx5fy Lʘ ^4H9 * GT% &!'@gMX'ɹ~s 3)eT"{ xE%=@%JR2O{y4|]\c[zLA,)voyo@ A;T@$sjeZE ^C] *ЀR 1EC@P@(J= BB 4UhTP~E8^%@ezCJ@{" %B|IQV0L1"fpiDuSøNJ㣏Hb% tDl|fE2QERD&($$..5U_gN2OXzgҙQGuH"j"";4ry}Gm1z8k01ХNѦ\̨:' j"7G9E=rWz$pb0F)^y<TSr &J8C$D>yAЍg3zAyJ!+t$sm *H "ܦcC'J Ÿ=\wRFϢ6 /ЍrrG9˕{A5[3DRR2Mm,(ᔒ}qU"_qqItcidT5!.fe&& I  C7Ȳ᛬90Mtbm,d{Ѿt6iwcӺnҀ5SPN(Ly,Htf2b N4E;g J=@MGZ&G4h;ۙ,eٰ7cm9@o;=wN/mEy] N]v_SUy2i/1Ya(aMeZ-Km3)ӽ݌b1c'f26( &;*U8gi8ŋCD^]y ;s*bŇEQmݶUKcj'$쇧#"}EECr35^]QDEPp;!珜F(юVݹcnœ|EםjlyyY\krt)q\𜝓hhT>7cRj#N١4g܈|T7)>'֯.c:ĴVʤR >H"PD}8- &RR8v"c!`_(@E%6N8:U BĞ BT*P4(DCBQ@2!@-vBbhJH8Ct"WT i > (2R%JP*-&# CJ yP!BB H1!BPL- KHˉ""JQ( )NySZx'1xwMi߇9Ng/{ϳ.w}\pw"u ]r䜆&)3A"eW*,zJ-<ߧIzg˕!KZѶT˄D캟Y1hׅϗcSls~BiQF@P !!r/70Mfy PT{ 65+8JLH9ȹYWwW}ῥSxJ!At@=~9tM S+C B ,a0qj0|B TQDDQQK@K01a^dE̦-bjK(SfMTMԤo"O2 :qvᶝTU-$gL5AEUH "t:D=QiJZH!'sE@om{{nR%Ɣ,>gwW<^@x͜"#>QzzV@(\ 8A2d:rĶ~Ip{!DB.#?v0Yb(H}^ߠ!~!>Pa!*@d0NJ,@̕A~J b ۞F'I@L?F4!Dpl{ /$O/ 1rGHv>|<78COWB6D@RT9pi;AMQPsC0pX_ S6cun㢲G$ Yih)"_xjstx+@UPsy}>]# g8P^ (b! i""ӡ WDJQB=(E>M9}x5w0"R` LI!|/GQaAM%C0cPO$ `V==~cX6C& -Phԟ* J)U:P)REC@UH!J-(CzS lLyMD0H4 !JE S3- Ԑ$@BP#ӁO "AB4-!U@p3p C$b>v-1  $U!LDR:tY} ȓlNN'c!d>srzeZP IViPr'/8@8_n!6 ?a}=Lnȅ 9Sv0nIPȚ }@ ~uGbil~[j8І]aв^YD50aGcj5@W@ƜPYDE R,Z`ѴaHo.kXV rF >~xv9A~{Tg\.ߐؽ/Ra`y8?ԓK,pޞa azj<` ]&iDكMNNzrmVOH v/Xae:S: h )R iPhf"P=@l}g?&věV@aO|Pn%pSe)^BY^a0dzIBD0O'}CD\@_?>}>s?$C J`s 'H$b`{ ?d<1Q᏶Qh&S~@]!(P7e0BsH-vd!%1c Vp_U Sa2B$SQtRR !1BYmMap tE_ : m6` j!ѳeC6e9}& .缴@!BA=ܙ'gӐ1Z+eR@藚Oic%.r(yzP<QNHSa!p'UUUUUUz/$Ҧ,K@#yl>E "PP !p)]x5P{#È Y*Ū18H\CmdLP+m&0rYEMmE4םޙjwp2-!h:FM<$HFJ*_gS>j!$(VP ()B$Z*jQfbZXfT%f("IBW80QDH! T @1;2~rݜMtln3DqE:QCb%N΀ͷF D!AARXrjr;Ѷ$:i3ip>,wy}nRq`m]fs8(>(܀N#B 9:H8Q|DGNfR7⢌2 ĺU;~ I8ǤOYd7kCT^{ zM0n ^|ŗ!)IO )$HH#j1 %EL ITݕ14BTDT…R4"I$"GlR,BH$HQK4RADP 4 REI,DH"R0E) (@ 04pj@&#UJDU Scla(Hd@D R "k1MO?SSs6 )]!M敬d81d=8CTjE2  yW RP'Lt†`nwPN B4d)CN)zBtPLB?!ʨsIHbTmueg$AM焆 #Qqt7/C[ٽi @˭:*qCpco02I-_jٲET.9X";-%Liy9%J"(?0{KN8|Fu j `!NO1d &nu۫#0f()e' ZANiX\sa=x˒ !^fbkUz"(ߎc=;^[)VȍT}OGN" [j1(h7f;K8Lj>49P?4bm#iJ^,Ji6l5 RoN+q_fj$!z7VKA D~:O5&b240#&lv{tʢVsoHdZ8{h t=_SG|0]6PFPJT(`!%ğ7pK²uc( r5YF`pt%$^(oty(J"V b~AR & &jj"Z")fR)"( `& hwBva{=ѻJ5]9ww#@} ?ڊ**%u?3'FaC%wHBE! 5Zd#!hX-. YL9q5d?O^m(J+ Gj$efI'k447a!4Aժεާٔ/\>kƒ)sǢ|{\BB3Ht45&vE?HW4(9ⅩC jm!թg K.iE  ْBQ{j'*bmGdoV9&ID!mP=],p˘IlP&D2fgƻ9($>ryˉvFhVb%G\ҖQBO;cfcׇ-7}s7TΣq ZA(CeKf#-l;uu %҆NS cm7&31"IB.x*attc NX$@jYHz]4̜L LLoLQ7K\P憰6s3"g; P FRJ+UvK ټ|eDZ߻ΖUܺZB?m%=z6ɳ*pq8 kVUou?pg}+BZ)Aߑ' WSQCSv~" ?Bq_MkjG x6eƃJ~ʼe/8# l̆zq ,dOL>DV0qں E$BFfHĦeDn 5&je(ŹMTժ tF1Ę:ߩ e*">Rl66G۫ɽ40 y=l cru*t;ˊD (6W<EA猀8 } 2 hߵ5ß׼0: u좥~UOkfn]S.~Ǽ6o) ت=9@nM;zl𖋺Q˭fa'n:CXRܯ SD(RD)@BV^G?E:I@s庡Os,' Q( UaHGWx7ָrxBC-$K1b "ڃrD4s8CY† R|hCv@p%0!nP< `{/wז# d bvA @A& Ti=p`aۇ`!8bPp( - З8!<ΜC*rhKPsԁTAO &s6*9Ձ٦N׭=ԝ>Lآ"nppog48C#ƺ/ V9:QI1i>I|v?lJZ"Q4D Rb3)10P IC$ H@P ?VqH^"DiR'"/eUk ~xO]e5d~XNrluyCC֝2x{z+!9ȝ?{Mhb%h'b!N _d>v":g@GPJd`tQiFb#L:@` )O|Y0̼ա^8}@aW5J  P7I 9bH Qզ+0z6Q)A&Pa o_(rCiGv1`29#X44'v{ySl70q!tyÿy^؎jucH{)g8U/秀{=GAs3Ƃ 'DŽBx"0=[(!_?ͻ#k,pHBCC O^S잝@Ee5T&p* `“gH׳^KIP0MMOH򌞠&GP 1&!@%?2mxi`& &0a0`2ia"= S 22hiU$k3`aH X@Kg鄏AOg0rt ։vl'>!j3үg~22݀g,.yIg[z6sDe"u`cc06C{ [j}1#,hh8lV[x8++Vo{%ppc&zK UgxJs#N4<9 ׋;#f"0<g=n3D8f>jh~C6K6\2e.؍MUͿ0Aa,X :A.S^.kY3P#<@r6d5ArSZ0cVWjrVޤBԱm-KNQyOүbO{uj3ߝg'oE;w (z Z[ m [Y,6y %ȫLJHw*ez)xn /;B^8r_X򐷀:V]^3qbtk҆wwA_AUhRvCd7aC5G2?8DTm藪\:H*Edti"TRe8[Om4*LEv_v4\#tGdK9^/ch O+NcJU] /]fdzoV.lccxd LdHUmR/*GI?-nfn,!^;dFN__3=.=&Ӯ36QqY7XS@q8ëfh^a!XuS`"sqkRND v2q">MY b[׻ .it=+Nx ËqqKP xMMP~뮈Ro\T-=w2 ހcCfQT<1*zv\\*)U*ۣ]`F:z%g e59gڡ8Q.UH!64a ][@r:21GLKf!ҮFKѐs42٠(  $X&ıd؛6N*Diei). 63`? D!bvϒXܖ•K͞U\OBm3%XcR$(b1ia | ̱jޞAݵ4Q"P*Vs,,T%h˂#AI@NjHul9]cnP3B[l@U.hi-@E1&W`5;N6/L2.dY/ zVm² (edSk3!(V-f ~ cCZ0ϵڡMQ7