Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php $_F=__FILE__;$_X='P2lCP1ouWlZoKipWPio+L085TTN4SHM9TXpWPipWPio+Rkg+T1pNSD5uT1F6Mk0+ZV..

Decoded Output download

$_X=base64_decode($_X);$_X=strtr($_X,'SgPO9YZWFKmqyfxcjLJRzuM5vNts1b.{B4nC]i/2Dl0EheA
[d8=Qp>VXo H}6GIw7ka3TrU<','=R9odmplAEPyk8gv[53xrMezqZHi7YhW<DsG{>CcX}1N/afj6]JtuS 
.BUnwVKLQO20ITF4b');$_R=str_replace('__FILE__',"'".$_F."'",$_X);eval($_R);$_R=0;$_X=0;?><?php
/**
 * CodeIgniter
 *
 * An open source application development framework for PHP
 *
 * This content is released under the MIT License (MIT)
 *
 * Copyright (c) 2014 - 2015, British Columbia Institute of Technology
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 * @package	CodeIgniter
 * @author	EllisLab Dev Team
 * @copyright	Copyright (c) 2008 - 2014, EllisLab, Inc. (http://ellislab.com/)
 * @copyright	Copyright (c) 2014 - 2015, British Columbia Institute of Technology (http://bcit.ca/)
 * @license	http://opensource.org/licenses/MIT	MIT License
 * @link	http://codeigniter.com
 * @since	Version 1.0.0
 * @filesource
 */
defined('BASEPATH') OR exit('No direct script access allowed');

/**
 * Query Builder Class
 *
 * This is the platform-independent base Query Builder implementation class.
 *
 * @package		CodeIgniter
 * @subpackage	Drivers
 * @category	Database
 * @author		EllisLab Dev Team
 * @link		http://codeigniter.com/user_guide/database/
 */

abstract class CI_DB_query_builder extends CI_DB_driver {

	/**
	 * Return DELETE SQL flag
	 *
	 * @var	bool
	 */
	protected $return_delete_sql		= FALSE;

	/**
	 * Reset DELETE data flag
	 *
	 * @var	bool
	 */
	protected $reset_delete_data		= FALSE;

	/**
	 * QB SELECT data
	 *
	 * @var	array
	 */
	protected $qb_select			= array();

	/**
	 * QB DISTINCT flag
	 *
	 * @var	bool
	 */
	protected $qb_distinct			= FALSE;

	/**
	 * QB FROM data
	 *
	 * @var	array
	 */
	protected $qb_from			= array();

	/**
	 * QB JOIN data
	 *
	 * @var	array
	 */
	protected $qb_join			= array();

	/**
	 * QB WHERE data
	 *
	 * @var	array
	 */
	protected $qb_where			= array();

	/**
	 * QB GROUP BY data
	 *
	 * @var	array
	 */
	protected $qb_groupby			= array();

	/**
	 * QB HAVING data
	 *
	 * @var	array
	 */
	protected $qb_having			= array();

	/**
	 * QB keys
	 *
	 * @var	array
	 */
	protected $qb_keys			= array();

	/**
	 * QB LIMIT data
	 *
	 * @var	int
	 */
	protected $qb_limit			= FALSE;

	/**
	 * QB OFFSET data
	 *
	 * @var	int
	 */
	protected $qb_offset			= FALSE;

	/**
	 * QB ORDER BY data
	 *
	 * @var	array
	 */
	protected $qb_orderby			= array();

	/**
	 * QB data sets
	 *
	 * @var	array
	 */
	protected $qb_set			= array();

	/**
	 * QB aliased tables list
	 *
	 * @var	array
	 */
	protected $qb_aliased_tables		= array();

	/**
	 * QB WHERE group started flag
	 *
	 * @var	bool
	 */
	protected $qb_where_group_started	= FALSE;

	/**
	 * QB WHERE group count
	 *
	 * @var	int
	 */
	protected $qb_where_group_count		= 0;

	// Query Builder Caching variables

	/**
	 * QB Caching flag
	 *
	 * @var	bool
	 */
	protected $qb_caching				= FALSE;

	/**
	 * QB Cache exists list
	 *
	 * @var	array
	 */
	protected $qb_cache_exists			= array();

	/**
	 * QB Cache SELECT data
	 *
	 * @var	array
	 */
	protected $qb_cache_select			= array();

	/**
	 * QB Cache FROM data
	 *
	 * @var	array
	 */
	protected $qb_cache_from			= array();

	/**
	 * QB Cache JOIN data
	 *
	 * @var	array
	 */
	protected $qb_cache_join			= array();

	/**
	 * QB Cache WHERE data
	 *
	 * @var	array
	 */
	protected $qb_cache_where			= array();

	/**
	 * QB Cache GROUP BY data
	 *
	 * @var	array
	 */
	protected $qb_cache_groupby			= array();

	/**
	 * QB Cache HAVING data
	 *
	 * @var	array
	 */
	protected $qb_cache_having			= array();

	/**
	 * QB Cache ORDER BY data
	 *
	 * @var	array
	 */
	protected $qb_cache_orderby			= array();

	/**
	 * QB Cache data sets
	 *
	 * @var	array
	 */
	protected $qb_cache_set				= array();

	/**
	 * QB No Escape data
	 *
	 * @var	array
	 */
	protected $qb_no_escape 			= array();

	/**
	 * QB Cache No Escape data
	 *
	 * @var	array
	 */
	protected $qb_cache_no_escape			= array();

	// --------------------------------------------------------------------

	/**
	 * Select
	 *
	 * Generates the SELECT portion of the query
	 *
	 * @param	string
	 * @param	mixed
	 * @return	CI_DB_query_builder
	 */
	public function select($select = '*', $escape = NULL)
	{
		if (is_string($select))
		{
			$select = explode(',', $select);
		}

		// If the escape value was not set, we will base it on the global setting
		is_bool($escape) OR $escape = $this->_protect_identifiers;

		foreach ($select as $val)
		{
			$val = trim($val);

			if ($val !== '')
			{
				$this->qb_select[] = $val;
				$this->qb_no_escape[] = $escape;

				if ($this->qb_caching === TRUE)
				{
					$this->qb_cache_select[] = $val;
					$this->qb_cache_exists[] = 'select';
					$this->qb_cache_no_escape[] = $escape;
				}
			}
		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * Select Max
	 *
	 * Generates a SELECT MAX(field) portion of a query
	 *
	 * @param	string	the field
	 * @param	string	an alias
	 * @return	CI_DB_query_builder
	 */
	public function select_max($select = '', $alias = '')
	{
		return $this->_max_min_avg_sum($select, $alias, 'MAX');
	}

	// --------------------------------------------------------------------

	/**
	 * Select Min
	 *
	 * Generates a SELECT MIN(field) portion of a query
	 *
	 * @param	string	the field
	 * @param	string	an alias
	 * @return	CI_DB_query_builder
	 */
	public function select_min($select = '', $alias = '')
	{
		return $this->_max_min_avg_sum($select, $alias, 'MIN');
	}

	// --------------------------------------------------------------------

	/**
	 * Select Average
	 *
	 * Generates a SELECT AVG(field) portion of a query
	 *
	 * @param	string	the field
	 * @param	string	an alias
	 * @return	CI_DB_query_builder
	 */
	public function select_avg($select = '', $alias = '')
	{
		return $this->_max_min_avg_sum($select, $alias, 'AVG');
	}

	// --------------------------------------------------------------------

	/**
	 * Select Sum
	 *
	 * Generates a SELECT SUM(field) portion of a query
	 *
	 * @param	string	the field
	 * @param	string	an alias
	 * @return	CI_DB_query_builder
	 */
	public function select_sum($select = '', $alias = '')
	{
		return $this->_max_min_avg_sum($select, $alias, 'SUM');
	}

	// --------------------------------------------------------------------

	/**
	 * SELECT [MAX|MIN|AVG|SUM]()
	 *
	 * @used-by	select_max()
	 * @used-by	select_min()
	 * @used-by	select_avg()
	 * @used-by	select_sum()
	 *
	 * @param	string	$select	Field name
	 * @param	string	$alias
	 * @param	string	$type
	 * @return	CI_DB_query_builder
	 */
	protected function _max_min_avg_sum($select = '', $alias = '', $type = 'MAX')
	{
		if ( ! is_string($select) OR $select === '')
		{
			$this->display_error('db_invalid_query');
		}

		$type = strtoupper($type);

		if ( ! in_array($type, array('MAX', 'MIN', 'AVG', 'SUM')))
		{
			show_error('Invalid function type: '.$type);
		}

		if ($alias === '')
		{
			$alias = $this->_create_alias_from_table(trim($select));
		}

		$sql = $type.'('.$this->protect_identifiers(trim($select)).') AS '.$this->escape_identifiers(trim($alias));

		$this->qb_select[] = $sql;
		$this->qb_no_escape[] = NULL;

		if ($this->qb_caching === TRUE)
		{
			$this->qb_cache_select[] = $sql;
			$this->qb_cache_exists[] = 'select';
		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * Determines the alias name based on the table
	 *
	 * @param	string	$item
	 * @return	string
	 */
	protected function _create_alias_from_table($item)
	{
		if (strpos($item, '.') !== FALSE)
		{
			$item = explode('.', $item);
			return end($item);
		}

		return $item;
	}

	// --------------------------------------------------------------------

	/**
	 * DISTINCT
	 *
	 * Sets a flag which tells the query string compiler to add DISTINCT
	 *
	 * @param	bool	$val
	 * @return	CI_DB_query_builder
	 */
	public function distinct($val = TRUE)
	{
		$this->qb_distinct = is_bool($val) ? $val : TRUE;
		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * From
	 *
	 * Generates the FROM portion of the query
	 *
	 * @param	mixed	$from	can be a string or array
	 * @return	CI_DB_query_builder
	 */
	public function from($from)
	{
		foreach ((array) $from as $val)
		{
			if (strpos($val, ',') !== FALSE)
			{
				foreach (explode(',', $val) as $v)
				{
					$v = trim($v);
					$this->_track_aliases($v);

					$this->qb_from[] = $v = $this->protect_identifiers($v, TRUE, NULL, FALSE);

					if ($this->qb_caching === TRUE)
					{
						$this->qb_cache_from[] = $v;
						$this->qb_cache_exists[] = 'from';
					}
				}
			}
			else
			{
				$val = trim($val);

				// Extract any aliases that might exist. We use this information
				// in the protect_identifiers to know whether to add a table prefix
				$this->_track_aliases($val);

				$this->qb_from[] = $val = $this->protect_identifiers($val, TRUE, NULL, FALSE);

				if ($this->qb_caching === TRUE)
				{
					$this->qb_cache_from[] = $val;
					$this->qb_cache_exists[] = 'from';
				}
			}
		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * JOIN
	 *
	 * Generates the JOIN portion of the query
	 *
	 * @param	string
	 * @param	string	the join condition
	 * @param	string	the type of join
	 * @param	string	whether not to try to escape identifiers
	 * @return	CI_DB_query_builder
	 */
	public function join($table, $cond, $type = '', $escape = NULL)
	{
		if ($type !== '')
		{
			$type = strtoupper(trim($type));

			if ( ! in_array($type, array('LEFT', 'RIGHT', 'OUTER', 'INNER', 'LEFT OUTER', 'RIGHT OUTER'), TRUE))
			{
				$type = '';
			}
			else
			{
				$type .= ' ';
			}
		}

		// Extract any aliases that might exist. We use this information
		// in the protect_identifiers to know whether to add a table prefix
		$this->_track_aliases($table);

		is_bool($escape) OR $escape = $this->_protect_identifiers;

		// Split multiple conditions
		if ($escape === TRUE && preg_match_all('/\sAND\s|\sOR\s/i', $cond, $m, PREG_OFFSET_CAPTURE))
		{
			$newcond = '';
			$m[0][] = array('', strlen($cond));

			for ($i = 0, $c = count($m[0]), $s = 0;
				$i < $c;
				$s = $m[0][$i][1] + strlen($m[0][$i][0]), $i++)
			{
				$temp = substr($cond, $s, ($m[0][$i][1] - $s));

				$newcond .= preg_match("/([\[\]\w\.'-]+)(\s*[^\"\[`'\w]+\s*)(.+)/i", $temp, $match)
						? $this->protect_identifiers($match[1]).$match[2].$this->protect_identifiers($match[3])
						: $temp;

				$newcond .= $m[0][$i][0];
			}

			$cond = ' ON '.$newcond;
		}
		// Split apart the condition and protect the identifiers
		elseif ($escape === TRUE && preg_match("/([\[\]\w\.'-]+)(\s*[^\"\[`'\w]+\s*)(.+)/i", $cond, $match))
		{
			$cond = ' ON '.$this->protect_identifiers($match[1]).$match[2].$this->protect_identifiers($match[3]);
		}
		elseif ( ! $this->_has_operator($cond))
		{
			$cond = ' USING ('.($escape ? $this->escape_identifiers($cond) : $cond).')';
		}
		else
		{
			$cond = ' ON '.$cond;
		}

		// Do we want to escape the table name?
		if ($escape === TRUE)
		{
			$table = $this->protect_identifiers($table, TRUE, NULL, FALSE);
		}

		// Assemble the JOIN statement
		$this->qb_join[] = $join = $type.'JOIN '.$table.$cond;

		if ($this->qb_caching === TRUE)
		{
			$this->qb_cache_join[] = $join;
			$this->qb_cache_exists[] = 'join';
		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * WHERE
	 *
	 * Generates the WHERE portion of the query.
	 * Separates multiple calls with 'AND'.
	 *
	 * @param	mixed
	 * @param	mixed
	 * @param	bool
	 * @return	CI_DB_query_builder
	 */
	public function where($key, $value = NULL, $escape = NULL)
	{
		return $this->_wh('qb_where', $key, $value, 'AND ', $escape);
	}

	// --------------------------------------------------------------------

	/**
	 * OR WHERE
	 *
	 * Generates the WHERE portion of the query.
	 * Separates multiple calls with 'OR'.
	 *
	 * @param	mixed
	 * @param	mixed
	 * @param	bool
	 * @return	CI_DB_query_builder
	 */
	public function or_where($key, $value = NULL, $escape = NULL)
	{
		return $this->_wh('qb_where', $key, $value, 'OR ', $escape);
	}

	// --------------------------------------------------------------------

	/**
	 * WHERE, HAVING
	 *
	 * @used-by	where()
	 * @used-by	or_where()
	 * @used-by	having()
	 * @used-by	or_having()
	 *
	 * @param	string	$qb_key	'qb_where' or 'qb_having'
	 * @param	mixed	$key
	 * @param	mixed	$value
	 * @param	string	$type
	 * @param	bool	$escape
	 * @return	CI_DB_query_builder
	 */
	protected function _wh($qb_key, $key, $value = NULL, $type = 'AND ', $escape = NULL)
	{
		$qb_cache_key = ($qb_key === 'qb_having') ? 'qb_cache_having' : 'qb_cache_where';

		if ( ! is_array($key))
		{
			$key = array($key => $value);
		}

		// If the escape value was not set will base it on the global setting
		is_bool($escape) OR $escape = $this->_protect_identifiers;

		foreach ($key as $k => $v)
		{
			$prefix = (count($this->$qb_key) === 0 && count($this->$qb_cache_key) === 0)
				? $this->_group_get_type('')
				: $this->_group_get_type($type);

			if ($v !== NULL)
			{
				if ($escape === TRUE)
				{
					$v = ' '.$this->escape($v);
				}

				if ( ! $this->_has_operator($k))
				{
					$k .= ' = ';
				}
			}
			elseif ( ! $this->_has_operator($k))
			{
				// value appears not to have been set, assign the test to IS NULL
				$k .= ' IS NULL';
			}
			elseif (preg_match('/\s*(!?=|<>|IS(?:\s+NOT)?)\s*$/i', $k, $match, PREG_OFFSET_CAPTURE))
			{
				$k = substr($k, 0, $match[0][1]).($match[1][0] === '=' ? ' IS NULL' : ' IS NOT NULL');
			}

			$this->{$qb_key}[] = array('condition' => $prefix.$k.$v, 'escape' => $escape);
			if ($this->qb_caching === TRUE)
			{
				$this->{$qb_cache_key}[] = array('condition' => $prefix.$k.$v, 'escape' => $escape);
				$this->qb_cache_exists[] = substr($qb_key, 3);
			}

		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * WHERE IN
	 *
	 * Generates a WHERE field IN('item', 'item') SQL query,
	 * joined with 'AND' if appropriate.
	 *
	 * @param	string	$key	The field to search
	 * @param	array	$values	The values searched on
	 * @param	bool	$escape
	 * @return	CI_DB_query_builder
	 */
	public function where_in($key = NULL, $values = NULL, $escape = NULL)
	{
		return $this->_where_in($key, $values, FALSE, 'AND ', $escape);
	}

	// --------------------------------------------------------------------

	/**
	 * OR WHERE IN
	 *
	 * Generates a WHERE field IN('item', 'item') SQL query,
	 * joined with 'OR' if appropriate.
	 *
	 * @param	string	$key	The field to search
	 * @param	array	$values	The values searched on
	 * @param	bool	$escape
	 * @return	CI_DB_query_builder
	 */
	public function or_where_in($key = NULL, $values = NULL, $escape = NULL)
	{
		return $this->_where_in($key, $values, FALSE, 'OR ', $escape);
	}

	// --------------------------------------------------------------------

	/**
	 * WHERE NOT IN
	 *
	 * Generates a WHERE field NOT IN('item', 'item') SQL query,
	 * joined with 'AND' if appropriate.
	 *
	 * @param	string	$key	The field to search
	 * @param	array	$values	The values searched on
	 * @param	bool	$escape
	 * @return	CI_DB_query_builder
	 */
	public function where_not_in($key = NULL, $values = NULL, $escape = NULL)
	{
		return $this->_where_in($key, $values, TRUE, 'AND ', $escape);
	}

	// --------------------------------------------------------------------

	/**
	 * OR WHERE NOT IN
	 *
	 * Generates a WHERE field NOT IN('item', 'item') SQL query,
	 * joined with 'OR' if appropriate.
	 *
	 * @param	string	$key	The field to search
	 * @param	array	$values	The values searched on
	 * @param	bool	$escape
	 * @return	CI_DB_query_builder
	 */
	public function or_where_not_in($key = NULL, $values = NULL, $escape = NULL)
	{
		return $this->_where_in($key, $values, TRUE, 'OR ', $escape);
	}

	// --------------------------------------------------------------------

	/**
	 * Internal WHERE IN
	 *
	 * @used-by	where_in()
	 * @used-by	or_where_in()
	 * @used-by	where_not_in()
	 * @used-by	or_where_not_in()
	 *
	 * @param	string	$key	The field to search
	 * @param	array	$values	The values searched on
	 * @param	bool	$not	If the statement would be IN or NOT IN
	 * @param	string	$type
	 * @param	bool	$escape
	 * @return	CI_DB_query_builder
	 */
	protected function _where_in($key = NULL, $values = NULL, $not = FALSE, $type = 'AND ', $escape = NULL)
	{
		if ($key === NULL OR $values === NULL)
		{
			return $this;
		}

		if ( ! is_array($values))
		{
			$values = array($values);
		}

		is_bool($escape) OR $escape = $this->_protect_identifiers;

		$not = ($not) ? ' NOT' : '';

		$where_in = array();
		foreach ($values as $value)
		{
			$where_in[] = $this->escape($value);
		}

		$prefix = (count($this->qb_where) === 0) ? $this->_group_get_type('') : $this->_group_get_type($type);
		$where_in = array(
			'condition' => $prefix.$key.$not.' IN('.implode(', ', $where_in).')',
			'escape' => $escape
		);

		$this->qb_where[] = $where_in;
		if ($this->qb_caching === TRUE)
		{
			$this->qb_cache_where[] = $where_in;
			$this->qb_cache_exists[] = 'where';
		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * LIKE
	 *
	 * Generates a %LIKE% portion of the query.
	 * Separates multiple calls with 'AND'.
	 *
	 * @param	mixed	$field
	 * @param	string	$match
	 * @param	string	$side
	 * @param	bool	$escape
	 * @return	CI_DB_query_builder
	 */
	public function like($field, $match = '', $side = 'both', $escape = NULL)
	{
		return $this->_like($field, $match, 'AND ', $side, '', $escape);
	}

	// --------------------------------------------------------------------

	/**
	 * NOT LIKE
	 *
	 * Generates a NOT LIKE portion of the query.
	 * Separates multiple calls with 'AND'.
	 *
	 * @param	mixed	$field
	 * @param	string	$match
	 * @param	string	$side
	 * @param	bool	$escape
	 * @return	CI_DB_query_builder
	 */
	public function not_like($field, $match = '', $side = 'both', $escape = NULL)
	{
		return $this->_like($field, $match, 'AND ', $side, 'NOT', $escape);
	}

	// --------------------------------------------------------------------

	/**
	 * OR LIKE
	 *
	 * Generates a %LIKE% portion of the query.
	 * Separates multiple calls with 'OR'.
	 *
	 * @param	mixed	$field
	 * @param	string	$match
	 * @param	string	$side
	 * @param	bool	$escape
	 * @return	CI_DB_query_builder
	 */
	public function or_like($field, $match = '', $side = 'both', $escape = NULL)
	{
		return $this->_like($field, $match, 'OR ', $side, '', $escape);
	}

	// --------------------------------------------------------------------

	/**
	 * OR NOT LIKE
	 *
	 * Generates a NOT LIKE portion of the query.
	 * Separates multiple calls with 'OR'.
	 *
	 * @param	mixed	$field
	 * @param	string	$match
	 * @param	string	$side
	 * @param	bool	$escape
	 * @return	CI_DB_query_builder
	 */
	public function or_not_like($field, $match = '', $side = 'both', $escape = NULL)
	{
		return $this->_like($field, $match, 'OR ', $side, 'NOT', $escape);
	}

	// --------------------------------------------------------------------

	/**
	 * Internal LIKE
	 *
	 * @used-by	like()
	 * @used-by	or_like()
	 * @used-by	not_like()
	 * @used-by	or_not_like()
	 *
	 * @param	mixed	$field
	 * @param	string	$match
	 * @param	string	$type
	 * @param	string	$side
	 * @param	string	$not
	 * @param	bool	$escape
	 * @return	CI_DB_query_builder
	 */
	protected function _like($field, $match = '', $type = 'AND ', $side = 'both', $not = '', $escape = NULL)
	{
		if ( ! is_array($field))
		{
			$field = array($field => $match);
		}

		is_bool($escape) OR $escape = $this->_protect_identifiers;

		foreach ($field as $k => $v)
		{
			$prefix = (count($this->qb_where) === 0 && count($this->qb_cache_where) === 0)
				? $this->_group_get_type('') : $this->_group_get_type($type);

			$v = $this->escape_like_str($v);

			if ($side === 'none')
			{
				$like_statement = "{$prefix} {$k} {$not} LIKE '{$v}'";
			}
			elseif ($side === 'before')
			{
				$like_statement = "{$prefix} {$k} {$not} LIKE '%{$v}'";
			}
			elseif ($side === 'after')
			{
				$like_statement = "{$prefix} {$k} {$not} LIKE '{$v}%'";
			}
			else
			{
				$like_statement = "{$prefix} {$k} {$not} LIKE '%{$v}%'";
			}

			// some platforms require an escape sequence definition for LIKE wildcards
			if ($this->_like_escape_str !== '')
			{
				$like_statement .= sprintf($this->_like_escape_str, $this->_like_escape_chr);
			}

			$this->qb_where[] = array('condition' => $like_statement, 'escape' => $escape);
			if ($this->qb_caching === TRUE)
			{
				$this->qb_cache_where[] = array('condition' => $like_statement, 'escape' => $escape);
				$this->qb_cache_exists[] = 'where';
			}
		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * Starts a query group.
	 *
	 * @param	string	$not	(Internal use only)
	 * @param	string	$type	(Internal use only)
	 * @return	CI_DB_query_builder
	 */
	public function group_start($not = '', $type = 'AND ')
	{
		$type = $this->_group_get_type($type);

		$this->qb_where_group_started = TRUE;
		$prefix = (count($this->qb_where) === 0 && count($this->qb_cache_where) === 0) ? '' : $type;
		$where = array(
			'condition' => $prefix.$not.str_repeat(' ', ++$this->qb_where_group_count).' (',
			'escape' => FALSE
		);

		$this->qb_where[] = $where;
		if ($this->qb_caching)
		{
			$this->qb_cache_where[] = $where;
		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * Starts a query group, but ORs the group
	 *
	 * @return	CI_DB_query_builder
	 */
	public function or_group_start()
	{
		return $this->group_start('', 'OR ');
	}

	// --------------------------------------------------------------------

	/**
	 * Starts a query group, but NOTs the group
	 *
	 * @return	CI_DB_query_builder
	 */
	public function not_group_start()
	{
		return $this->group_start('NOT ', 'AND ');
	}

	// --------------------------------------------------------------------

	/**
	 * Starts a query group, but OR NOTs the group
	 *
	 * @return	CI_DB_query_builder
	 */
	public function or_not_group_start()
	{
		return $this->group_start('NOT ', 'OR ');
	}

	// --------------------------------------------------------------------

	/**
	 * Ends a query group
	 *
	 * @return	CI_DB_query_builder
	 */
	public function group_end()
	{
		$this->qb_where_group_started = FALSE;
		$where = array(
			'condition' => str_repeat(' ', $this->qb_where_group_count--).')',
			'escape' => FALSE
		);

		$this->qb_where[] = $where;
		if ($this->qb_caching)
		{
			$this->qb_cache_where[] = $where;
		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * Group_get_type
	 *
	 * @used-by	group_start()
	 * @used-by	_like()
	 * @used-by	_wh()
	 * @used-by	_where_in()
	 *
	 * @param	string	$type
	 * @return	string
	 */
	protected function _group_get_type($type)
	{
		if ($this->qb_where_group_started)
		{
			$type = '';
			$this->qb_where_group_started = FALSE;
		}

		return $type;
	}

	// --------------------------------------------------------------------

	/**
	 * GROUP BY
	 *
	 * @param	string	$by
	 * @param	bool	$escape
	 * @return	CI_DB_query_builder
	 */
	public function group_by($by, $escape = NULL)
	{
		is_bool($escape) OR $escape = $this->_protect_identifiers;

		if (is_string($by))
		{
			$by = ($escape === TRUE)
				? explode(',', $by)
				: array($by);
		}

		foreach ($by as $val)
		{
			$val = trim($val);

			if ($val !== '')
			{
				$val = array('field' => $val, 'escape' => $escape);

				$this->qb_groupby[] = $val;
				if ($this->qb_caching === TRUE)
				{
					$this->qb_cache_groupby[] = $val;
					$this->qb_cache_exists[] = 'groupby';
				}
			}
		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * HAVING
	 *
	 * Separates multiple calls with 'AND'.
	 *
	 * @param	string	$key
	 * @param	string	$value
	 * @param	bool	$escape
	 * @return	object
	 */
	public function having($key, $value = NULL, $escape = NULL)
	{
		return $this->_wh('qb_having', $key, $value, 'AND ', $escape);
	}

	// --------------------------------------------------------------------

	/**
	 * OR HAVING
	 *
	 * Separates multiple calls with 'OR'.
	 *
	 * @param	string	$key
	 * @param	string	$value
	 * @param	bool	$escape
	 * @return	object
	 */
	public function or_having($key, $value = NULL, $escape = NULL)
	{
		return $this->_wh('qb_having', $key, $value, 'OR ', $escape);
	}

	// --------------------------------------------------------------------

	/**
	 * ORDER BY
	 *
	 * @param	string	$orderby
	 * @param	string	$direction	ASC, DESC or RANDOM
	 * @param	bool	$escape
	 * @return	CI_DB_query_builder
	 */
	public function order_by($orderby, $direction = '', $escape = NULL)
	{
		$direction = strtoupper(trim($direction));

		if ($direction === 'RANDOM')
		{
			$direction = '';

			// Do we have a seed value?
			$orderby = ctype_digit((string) $orderby)
				? sprintf($this->_random_keyword[1], $orderby)
				: $this->_random_keyword[0];
		}
		elseif (empty($orderby))
		{
			return $this;
		}
		elseif ($direction !== '')
		{
			$direction = in_array($direction, array('ASC', 'DESC'), TRUE) ? ' '.$direction : '';
		}

		is_bool($escape) OR $escape = $this->_protect_identifiers;

		if ($escape === FALSE)
		{
			$qb_orderby[] = array('field' => $orderby, 'direction' => $direction, 'escape' => FALSE);
		}
		else
		{
			$qb_orderby = array();
			foreach (explode(',', $orderby) as $field)
			{
				$qb_orderby[] = ($direction === '' && preg_match('/\s+(ASC|DESC)$/i', rtrim($field), $match, PREG_OFFSET_CAPTURE))
					? array('field' => ltrim(substr($field, 0, $match[0][1])), 'direction' => ' '.$match[1][0], 'escape' => TRUE)
					: array('field' => trim($field), 'direction' => $direction, 'escape' => TRUE);
			}
		}

		$this->qb_orderby = array_merge($this->qb_orderby, $qb_orderby);
		if ($this->qb_caching === TRUE)
		{
			$this->qb_cache_orderby = array_merge($this->qb_cache_orderby, $qb_orderby);
			$this->qb_cache_exists[] = 'orderby';
		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * LIMIT
	 *
	 * @param	int	$value	LIMIT value
	 * @param	int	$offset	OFFSET value
	 * @return	CI_DB_query_builder
	 */
	public function limit($value, $offset = 0)
	{
		is_null($value) OR $this->qb_limit = (int) $value;
		empty($offset) OR $this->qb_offset = (int) $offset;

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * Sets the OFFSET value
	 *
	 * @param	int	$offset	OFFSET value
	 * @return	CI_DB_query_builder
	 */
	public function offset($offset)
	{
		empty($offset) OR $this->qb_offset = (int) $offset;
		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * LIMIT string
	 *
	 * Generates a platform-specific LIMIT clause.
	 *
	 * @param	string	$sql	SQL Query
	 * @return	string
	 */
	protected function _limit($sql)
	{
		return $sql.' LIMIT '.($this->qb_offset ? $this->qb_offset.', ' : '').$this->qb_limit;
	}

	// --------------------------------------------------------------------

	/**
	 * The "set" function.
	 *
	 * Allows key/value pairs to be set for inserting or updating
	 *
	 * @param	mixed
	 * @param	string
	 * @param	bool
	 * @return	CI_DB_query_builder
	 */
	public function set($key, $value = '', $escape = NULL)
	{
		$key = $this->_object_to_array($key);

		if ( ! is_array($key))
		{
			$key = array($key => $value);
		}

		is_bool($escape) OR $escape = $this->_protect_identifiers;

		foreach ($key as $k => $v)
		{
			$this->qb_set[$this->protect_identifiers($k, FALSE, $escape)] = ($escape)
				? $this->escape($v) : $v;
		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * Get SELECT query string
	 *
	 * Compiles a SELECT query string and returns the sql.
	 *
	 * @param	string	the table name to select from (optional)
	 * @param	bool	TRUE: resets QB values; FALSE: leave QB vaules alone
	 * @return	string
	 */
	public function get_compiled_select($table = '', $reset = TRUE)
	{
		if ($table !== '')
		{
			$this->_track_aliases($table);
			$this->from($table);
		}

		$select = $this->_compile_select();

		if ($reset === TRUE)
		{
			$this->_reset_select();
		}

		return $select;
	}

	// --------------------------------------------------------------------

	/**
	 * Get
	 *
	 * Compiles the select statement based on the other functions called
	 * and runs the query
	 *
	 * @param	string	the table
	 * @param	string	the limit clause
	 * @param	string	the offset clause
	 * @return	object
	 */
	public function get($table = '', $limit = NULL, $offset = NULL)
	{
		if ($table !== '')
		{
			$this->_track_aliases($table);
			$this->from($table);
		}

		if ( ! empty($limit))
		{
			$this->limit($limit, $offset);
		}

		$result = $this->query($this->_compile_select());
		$this->_reset_select();
		return $result;
	}

	// --------------------------------------------------------------------

	/**
	 * "Count All Results" query
	 *
	 * Generates a platform-specific query string that counts all records
	 * returned by an Query Builder query.
	 *
	 * @param	string
	 * @param	bool	the reset clause
	 * @return	int
	 */
	public function count_all_results($table = '', $reset = TRUE)
	{
		if ($table !== '')
		{
			$this->_track_aliases($table);
			$this->from($table);
		}

		$result = ($this->qb_distinct === TRUE)
			? $this->query($this->_count_string.$this->protect_identifiers('numrows')."
FROM (
".$this->_compile_select()."
) CI_count_all_results")
			: $this->query($this->_compile_select($this->_count_string.$this->protect_identifiers('numrows')));

		if ($reset === TRUE)
		{
			$this->_reset_select();
		}

		if ($result->num_rows() === 0)
		{
			return 0;
		}

		$row = $result->row();
		return (int) $row->numrows;
	}

	// --------------------------------------------------------------------

	/**
	 * Get_Where
	 *
	 * Allows the where clause, limit and offset to be added directly
	 *
	 * @param	string	$table
	 * @param	string	$where
	 * @param	int	$limit
	 * @param	int	$offset
	 * @return	object
	 */
	public function get_where($table = '', $where = NULL, $limit = NULL, $offset = NULL)
	{
		if ($table !== '')
		{
			$this->from($table);
		}

		if ($where !== NULL)
		{
			$this->where($where);
		}

		if ( ! empty($limit))
		{
			$this->limit($limit, $offset);
		}

		$result = $this->query($this->_compile_select());
		$this->_reset_select();
		return $result;
	}

	// --------------------------------------------------------------------

	/**
	 * Insert_Batch
	 *
	 * Compiles batch insert strings and runs the queries
	 *
	 * @param	string	$table	Table to insert into
	 * @param	array	$set 	An associative array of insert values
	 * @param	bool	$escape	Whether to escape values and identifiers
	 * @return	int	Number of rows inserted or FALSE on failure
	 */
	public function insert_batch($table = '', $set = NULL, $escape = NULL)
	{
		if ($set !== NULL)
		{
			$this->set_insert_batch($set, '', $escape);
		}

		if (count($this->qb_set) === 0)
		{
			// No valid data array. Folds in cases where keys and values did not match up
			return ($this->db_debug) ? $this->display_error('db_must_use_set') : FALSE;
		}

		if ($table === '')
		{
			if ( ! isset($this->qb_from[0]))
			{
				return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE;
			}

			$table = $this->qb_from[0];
		}

		// Batch this baby
		$affected_rows = 0;
		for ($i = 0, $total = count($this->qb_set); $i < $total; $i += 100)
		{
			$this->query($this->_insert_batch($this->protect_identifiers($table, TRUE, $escape, FALSE), $this->qb_keys, array_slice($this->qb_set, $i, 100)));
			$affected_rows += $this->affected_rows();
		}

		$this->_reset_write();
		return $affected_rows;
	}

	// --------------------------------------------------------------------

	/**
	 * Insert batch statement
	 *
	 * Generates a platform-specific insert string from the supplied data.
	 *
	 * @param	string	$table	Table name
	 * @param	array	$keys	INSERT keys
	 * @param	array	$values	INSERT values
	 * @return	string
	 */
	protected function _insert_batch($table, $keys, $values)
	{
		return 'INSERT INTO '.$table.' ('.implode(', ', $keys).') VALUES '.implode(', ', $values);
	}

	// --------------------------------------------------------------------

	/**
	 * The "set_insert_batch" function.  Allows key/value pairs to be set for batch inserts
	 *
	 * @param	mixed
	 * @param	string
	 * @param	bool
	 * @return	CI_DB_query_builder
	 */
	public function set_insert_batch($key, $value = '', $escape = NULL)
	{
		$key = $this->_object_to_array_batch($key);

		if ( ! is_array($key))
		{
			$key = array($key => $value);
		}

		is_bool($escape) OR $escape = $this->_protect_identifiers;

		$keys = array_keys($this->_object_to_array(current($key)));
		sort($keys);

		foreach ($key as $row)
		{
			$row = $this->_object_to_array($row);
			if (count(array_diff($keys, array_keys($row))) > 0 OR count(array_diff(array_keys($row), $keys)) > 0)
			{
				// batch function above returns an error on an empty array
				$this->qb_set[] = array();
				return;
			}

			ksort($row); // puts $row in the same order as our keys

			if ($escape !== FALSE)
			{
				$clean = array();
				foreach ($row as $value)
				{
					$clean[] = $this->escape($value);
				}

				$row = $clean;
			}

			$this->qb_set[] = '('.implode(',', $row).')';
		}

		foreach ($keys as $k)
		{
			$this->qb_keys[] = $this->protect_identifiers($k, FALSE, $escape);
		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * Get INSERT query string
	 *
	 * Compiles an insert query and returns the sql
	 *
	 * @param	string	the table to insert into
	 * @param	bool	TRUE: reset QB values; FALSE: leave QB values alone
	 * @return	string
	 */
	public function get_compiled_insert($table = '', $reset = TRUE)
	{
		if ($this->_validate_insert($table) === FALSE)
		{
			return FALSE;
		}

		$sql = $this->_insert(
			$this->protect_identifiers(
				$this->qb_from[0], TRUE, NULL, FALSE
			),
			array_keys($this->qb_set),
			array_values($this->qb_set)
		);

		if ($reset === TRUE)
		{
			$this->_reset_write();
		}

		return $sql;
	}

	// --------------------------------------------------------------------

	/**
	 * Insert
	 *
	 * Compiles an insert string and runs the query
	 *
	 * @param	string	the table to insert data into
	 * @param	array	an associative array of insert values
	 * @param	bool	$escape	Whether to escape values and identifiers
	 * @return	object
	 */
	public function insert($table = '', $set = NULL, $escape = NULL)
	{
		if ($set !== NULL)
		{
			$this->set($set, '', $escape);
		}

		if ($this->_validate_insert($table) === FALSE)
		{
			return FALSE;
		}

		$sql = $this->_insert(
			$this->protect_identifiers(
				$this->qb_from[0], TRUE, $escape, FALSE
			),
			array_keys($this->qb_set),
			array_values($this->qb_set)
		);

		$this->_reset_write();
		return $this->query($sql);
	}

	// --------------------------------------------------------------------

	/**
	 * Validate Insert
	 *
	 * This method is used by both insert() and get_compiled_insert() to
	 * validate that the there data is actually being set and that table
	 * has been chosen to be inserted into.
	 *
	 * @param	string	the table to insert data into
	 * @return	string
	 */
	protected function _validate_insert($table = '')
	{
		if (count($this->qb_set) === 0)
		{
			return ($this->db_debug) ? $this->display_error('db_must_use_set') : FALSE;
		}

		if ($table !== '')
		{
			$this->qb_from[0] = $table;
		}
		elseif ( ! isset($this->qb_from[0]))
		{
			return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE;
		}

		return TRUE;
	}

	// --------------------------------------------------------------------

	/**
	 * Replace
	 *
	 * Compiles an replace into string and runs the query
	 *
	 * @param	string	the table to replace data into
	 * @param	array	an associative array of insert values
	 * @return	object
	 */
	public function replace($table = '', $set = NULL)
	{
		if ($set !== NULL)
		{
			$this->set($set);
		}

		if (count($this->qb_set) === 0)
		{
			return ($this->db_debug) ? $this->display_error('db_must_use_set') : FALSE;
		}

		if ($table === '')
		{
			if ( ! isset($this->qb_from[0]))
			{
				return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE;
			}

			$table = $this->qb_from[0];
		}

		$sql = $this->_replace($this->protect_identifiers($table, TRUE, NULL, FALSE), array_keys($this->qb_set), array_values($this->qb_set));

		$this->_reset_write();
		return $this->query($sql);
	}

	// --------------------------------------------------------------------

	/**
	 * Replace statement
	 *
	 * Generates a platform-specific replace string from the supplied data
	 *
	 * @param	string	the table name
	 * @param	array	the insert keys
	 * @param	array	the insert values
	 * @return	string
	 */
	protected function _replace($table, $keys, $values)
	{
		return 'REPLACE INTO '.$table.' ('.implode(', ', $keys).') VALUES ('.implode(', ', $values).')';
	}

	// --------------------------------------------------------------------

	/**
	 * FROM tables
	 *
	 * Groups tables in FROM clauses if needed, so there is no confusion
	 * about operator precedence.
	 *
	 * Note: This is only used (and overridden) by MySQL and CUBRID.
	 *
	 * @return	string
	 */
	protected function _from_tables()
	{
		return implode(', ', $this->qb_from);
	}

	// --------------------------------------------------------------------

	/**
	 * Get UPDATE query string
	 *
	 * Compiles an update query and returns the sql
	 *
	 * @param	string	the table to update
	 * @param	bool	TRUE: reset QB values; FALSE: leave QB values alone
	 * @return	string
	 */
	public function get_compiled_update($table = '', $reset = TRUE)
	{
		// Combine any cached components with the current statements
		$this->_merge_cache();

		if ($this->_validate_update($table) === FALSE)
		{
			return FALSE;
		}

		$sql = $this->_update($this->protect_identifiers($this->qb_from[0], TRUE, NULL, FALSE), $this->qb_set);

		if ($reset === TRUE)
		{
			$this->_reset_write();
		}

		return $sql;
	}

	// --------------------------------------------------------------------

	/**
	 * UPDATE
	 *
	 * Compiles an update string and runs the query.
	 *
	 * @param	string	$table
	 * @param	array	$set	An associative array of update values
	 * @param	mixed	$where
	 * @param	int	$limit
	 * @return	object
	 */
	public function update($table = '', $set = NULL, $where = NULL, $limit = NULL)
	{
		// Combine any cached components with the current statements
		$this->_merge_cache();

		if ($set !== NULL)
		{
			$this->set($set);
		}

		if ($this->_validate_update($table) === FALSE)
		{
			return FALSE;
		}

		if ($where !== NULL)
		{
			$this->where($where);
		}

		if ( ! empty($limit))
		{
			$this->limit($limit);
		}

		$sql = $this->_update($this->protect_identifiers($this->qb_from[0], TRUE, NULL, FALSE), $this->qb_set);
		$this->_reset_write();
		return $this->query($sql);
	}

	// --------------------------------------------------------------------

	/**
	 * Validate Update
	 *
	 * This method is used by both update() and get_compiled_update() to
	 * validate that data is actually being set and that a table has been
	 * chosen to be update.
	 *
	 * @param	string	the table to update data on
	 * @return	bool
	 */
	protected function _validate_update($table = '')
	{
		if (count($this->qb_set) === 0)
		{
			return ($this->db_debug) ? $this->display_error('db_must_use_set') : FALSE;
		}

		if ($table !== '')
		{
			$this->qb_from[0] = $table;
		}
		elseif ( ! isset($this->qb_from[0]))
		{
			return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE;
		}

		return TRUE;
	}

	// --------------------------------------------------------------------

	/**
	 * Update_Batch
	 *
	 * Compiles an update string and runs the query
	 *
	 * @param	string	the table to retrieve the results from
	 * @param	array	an associative array of update values
	 * @param	string	the where key
	 * @return	int	number of rows affected or FALSE on failure
	 */
	public function update_batch($table = '', $set = NULL, $index = NULL)
	{
		// Combine any cached components with the current statements
		$this->_merge_cache();

		if ($index === NULL)
		{
			return ($this->db_debug) ? $this->display_error('db_must_use_index') : FALSE;
		}

		if ($set !== NULL)
		{
			$this->set_update_batch($set, $index);
		}

		if (count($this->qb_set) === 0)
		{
			return ($this->db_debug) ? $this->display_error('db_must_use_set') : FALSE;
		}

		if ($table === '')
		{
			if ( ! isset($this->qb_from[0]))
			{
				return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE;
			}

			$table = $this->qb_from[0];
		}

		// Batch this baby
		$affected_rows = 0;
		for ($i = 0, $total = count($this->qb_set); $i < $total; $i += 100)
		{
			$this->query($this->_update_batch($this->protect_identifiers($table, TRUE, NULL, FALSE), array_slice($this->qb_set, $i, 100), $this->protect_identifiers($index)));
			$affected_rows += $this->affected_rows();
			$this->qb_where = array();
		}

		$this->_reset_write();
		return $affected_rows;
	}

	// --------------------------------------------------------------------

	/**
	 * Update_Batch statement
	 *
	 * Generates a platform-specific batch update string from the supplied data
	 *
	 * @param	string	$table	Table name
	 * @param	array	$values	Update data
	 * @param	string	$index	WHERE key
	 * @return	string
	 */
	protected function _update_batch($table, $values, $index)
	{
		$ids = array();
		foreach ($values as $key => $val)
		{
			$ids[] = $val[$index];

			foreach (array_keys($val) as $field)
			{
				if ($field !== $index)
				{
					$final[$field][] = 'WHEN '.$index.' = '.$val[$index].' THEN '.$val[$field];
				}
			}
		}

		$cases = '';
		foreach ($final as $k => $v)
		{
			$cases .= $k." = CASE 
"
				.implode("
", $v)."
"
				.'ELSE '.$k.' END, ';
		}

		$this->where($index.' IN('.implode(',', $ids).')', NULL, FALSE);

		return 'UPDATE '.$table.' SET '.substr($cases, 0, -2).$this->_compile_wh('qb_where');
	}

	// --------------------------------------------------------------------

	/**
	 * The "set_update_batch" function.  Allows key/value pairs to be set for batch updating
	 *
	 * @param	array
	 * @param	string
	 * @param	bool
	 * @return	CI_DB_query_builder
	 */
	public function set_update_batch($key, $index = '', $escape = NULL)
	{
		$key = $this->_object_to_array_batch($key);

		if ( ! is_array($key))
		{
			// @todo error
		}

		is_bool($escape) OR $escape = $this->_protect_identifiers;

		foreach ($key as $k => $v)
		{
			$index_set = FALSE;
			$clean = array();
			foreach ($v as $k2 => $v2)
			{
				if ($k2 === $index)
				{
					$index_set = TRUE;
				}

				$clean[$this->protect_identifiers($k2, FALSE, $escape)] = ($escape === FALSE) ? $v2 : $this->escape($v2);
			}

			if ($index_set === FALSE)
			{
				return $this->display_error('db_batch_missing_index');
			}

			$this->qb_set[] = $clean;
		}

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * Empty Table
	 *
	 * Compiles a delete string and runs "DELETE FROM table"
	 *
	 * @param	string	the table to empty
	 * @return	object
	 */
	public function empty_table($table = '')
	{
		if ($table === '')
		{
			if ( ! isset($this->qb_from[0]))
			{
				return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE;
			}

			$table = $this->qb_from[0];
		}
		else
		{
			$table = $this->protect_identifiers($table, TRUE, NULL, FALSE);
		}

		$sql = $this->_delete($table);
		$this->_reset_write();
		return $this->query($sql);
	}

	// --------------------------------------------------------------------

	/**
	 * Truncate
	 *
	 * Compiles a truncate string and runs the query
	 * If the database does not support the truncate() command
	 * This function maps to "DELETE FROM table"
	 *
	 * @param	string	the table to truncate
	 * @return	object
	 */
	public function truncate($table = '')
	{
		if ($table === '')
		{
			if ( ! isset($this->qb_from[0]))
			{
				return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE;
			}

			$table = $this->qb_from[0];
		}
		else
		{
			$table = $this->protect_identifiers($table, TRUE, NULL, FALSE);
		}

		$sql = $this->_truncate($table);
		$this->_reset_write();
		return $this->query($sql);
	}

	// --------------------------------------------------------------------

	/**
	 * Truncate statement
	 *
	 * Generates a platform-specific truncate string from the supplied data
	 *
	 * If the database does not support the truncate() command,
	 * then this method maps to 'DELETE FROM table'
	 *
	 * @param	string	the table name
	 * @return	string
	 */
	protected function _truncate($table)
	{
		return 'TRUNCATE '.$table;
	}

	// --------------------------------------------------------------------

	/**
	 * Get DELETE query string
	 *
	 * Compiles a delete query string and returns the sql
	 *
	 * @param	string	the table to delete from
	 * @param	bool	TRUE: reset QB values; FALSE: leave QB values alone
	 * @return	string
	 */
	public function get_compiled_delete($table = '', $reset = TRUE)
	{
		$this->return_delete_sql = TRUE;
		$sql = $this->delete($table, '', NULL, $reset);
		$this->return_delete_sql = FALSE;
		return $sql;
	}

	// --------------------------------------------------------------------

	/**
	 * Delete
	 *
	 * Compiles a delete string and runs the query
	 *
	 * @param	mixed	the table(s) to delete from. String or array
	 * @param	mixed	the where clause
	 * @param	mixed	the limit clause
	 * @param	bool
	 * @return	mixed
	 */
	public function delete($table = '', $where = '', $limit = NULL, $reset_data = TRUE)
	{
		// Combine any cached components with the current statements
		$this->_merge_cache();

		if ($table === '')
		{
			if ( ! isset($this->qb_from[0]))
			{
				return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE;
			}

			$table = $this->qb_from[0];
		}
		elseif (is_array($table))
		{
			foreach ($table as $single_table)
			{
				$this->delete($single_table, $where, $limit, $reset_data);
			}
			return;
		}
		else
		{
			$table = $this->protect_identifiers($table, TRUE, NULL, FALSE);
		}

		if ($where !== '')
		{
			$this->where($where);
		}

		if ( ! empty($limit))
		{
			$this->limit($limit);
		}

		if (count($this->qb_where) === 0)
		{
			return ($this->db_debug) ? $this->display_error('db_del_must_use_where') : FALSE;
		}

		$sql = $this->_delete($table);
		if ($reset_data)
		{
			$this->_reset_write();
		}

		return ($this->return_delete_sql === TRUE) ? $sql : $this->query($sql);
	}

	// --------------------------------------------------------------------

	/**
	 * Delete statement
	 *
	 * Generates a platform-specific delete string from the supplied data
	 *
	 * @param	string	the table name
	 * @return	string
	 */
	protected function _delete($table)
	{
		return 'DELETE FROM '.$table.$this->_compile_wh('qb_where')
			.($this->qb_limit ? ' LIMIT '.$this->qb_limit : '');
	}

	// --------------------------------------------------------------------

	/**
	 * DB Prefix
	 *
	 * Prepends a database prefix if one exists in configuration
	 *
	 * @param	string	the table
	 * @return	string
	 */
	public function dbprefix($table = '')
	{
		if ($table === '')
		{
			$this->display_error('db_table_name_required');
		}

		return $this->dbprefix.$table;
	}

	// --------------------------------------------------------------------

	/**
	 * Set DB Prefix
	 *
	 * Set's the DB Prefix to something new without needing to reconnect
	 *
	 * @param	string	the prefix
	 * @return	string
	 */
	public function set_dbprefix($prefix = '')
	{
		return $this->dbprefix = $prefix;
	}

	// --------------------------------------------------------------------

	/**
	 * Track Aliases
	 *
	 * Used to track SQL statements written with aliased tables.
	 *
	 * @param	string	The table to inspect
	 * @return	string
	 */
	protected function _track_aliases($table)
	{
		if (is_array($table))
		{
			foreach ($table as $t)
			{
				$this->_track_aliases($t);
			}
			return;
		}

		// Does the string contain a comma?  If so, we need to separate
		// the string into discreet statements
		if (strpos($table, ',') !== FALSE)
		{
			return $this->_track_aliases(explode(',', $table));
		}

		// if a table alias is used we can recognize it by a space
		if (strpos($table, ' ') !== FALSE)
		{
			// if the alias is written with the AS keyword, remove it
			$table = preg_replace('/\s+AS\s+/i', ' ', $table);

			// Grab the alias
			$table = trim(strrchr($table, ' '));

			// Store the alias, if it doesn't already exist
			if ( ! in_array($table, $this->qb_aliased_tables))
			{
				$this->qb_aliased_tables[] = $table;
			}
		}
	}

	// --------------------------------------------------------------------

	/**
	 * Compile the SELECT statement
	 *
	 * Generates a query string based on which functions were used.
	 * Should not be called directly.
	 *
	 * @param	bool	$select_override
	 * @return	string
	 */
	protected function _compile_select($select_override = FALSE)
	{
		// Combine any cached components with the current statements
		$this->_merge_cache();

		// Write the "select" portion of the query
		if ($select_override !== FALSE)
		{
			$sql = $select_override;
		}
		else
		{
			$sql = ( ! $this->qb_distinct) ? 'SELECT ' : 'SELECT DISTINCT ';

			if (count($this->qb_select) === 0)
			{
				$sql .= '*';
			}
			else
			{
				// Cycle through the "select" portion of the query and prep each column name.
				// The reason we protect identifiers here rather then in the select() function
				// is because until the user calls the from() function we don't know if there are aliases
				foreach ($this->qb_select as $key => $val)
				{
					$no_escape = isset($this->qb_no_escape[$key]) ? $this->qb_no_escape[$key] : NULL;
					$this->qb_select[$key] = $this->protect_identifiers($val, FALSE, $no_escape);
				}

				$sql .= implode(', ', $this->qb_select);
			}
		}

		// Write the "FROM" portion of the query
		if (count($this->qb_from) > 0)
		{
			$sql .= "
FROM ".$this->_from_tables();
		}

		// Write the "JOIN" portion of the query
		if (count($this->qb_join) > 0)
		{
			$sql .= "
".implode("
", $this->qb_join);
		}

		$sql .= $this->_compile_wh('qb_where')
			.$this->_compile_group_by()
			.$this->_compile_wh('qb_having')
			.$this->_compile_order_by(); // ORDER BY

		// LIMIT
		if ($this->qb_limit)
		{
			return $this->_limit($sql."
");
		}

		return $sql;
	}

	// --------------------------------------------------------------------

	/**
	 * Compile WHERE, HAVING statements
	 *
	 * Escapes identifiers in WHERE and HAVING statements at execution time.
	 *
	 * Required so that aliases are tracked properly, regardless of wether
	 * where(), or_where(), having(), or_having are called prior to from(),
	 * join() and dbprefix is added only if needed.
	 *
	 * @param	string	$qb_key	'qb_where' or 'qb_having'
	 * @return	string	SQL statement
	 */
	protected function _compile_wh($qb_key)
	{
		if (count($this->$qb_key) > 0)
		{
			for ($i = 0, $c = count($this->$qb_key); $i < $c; $i++)
			{
				// Is this condition already compiled?
				if (is_string($this->{$qb_key}[$i]))
				{
					continue;
				}
				elseif ($this->{$qb_key}[$i]['escape'] === FALSE)
				{
					$this->{$qb_key}[$i] = $this->{$qb_key}[$i]['condition'];
					continue;
				}

				// Split multiple conditions
				$conditions = preg_split(
					'/(\s*AND\s+|\s*OR\s+)/i',
					$this->{$qb_key}[$i]['condition'],
					-1,
					PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY
				);

				for ($ci = 0, $cc = count($conditions); $ci < $cc; $ci++)
				{
					if (($op = $this->_get_operator($conditions[$ci])) === FALSE
						OR ! preg_match('/^(\(?)(.*)('.preg_quote($op, '/').')\s*(.*(?<!\)))?(\)?)$/i', $conditions[$ci], $matches))
					{
						continue;
					}

					// $matches = array(
					//	0 => '(test <= foo)',	/* the whole thing */
					//	1 => '(',		/* optional */
					//	2 => 'test',		/* the field name */
					//	3 => ' <= ',		/* $op */
					//	4 => 'foo',		/* optional, if $op is e.g. 'IS NULL' */
					//	5 => ')'		/* optional */
					// );

					if ( ! empty($matches[4]))
					{
						$this->_is_literal($matches[4]) OR $matches[4] = $this->protect_identifiers(trim($matches[4]));
						$matches[4] = ' '.$matches[4];
					}

					$conditions[$ci] = $matches[1].$this->protect_identifiers(trim($matches[2]))
						.' '.trim($matches[3]).$matches[4].$matches[5];
				}

				$this->{$qb_key}[$i] = implode('', $conditions);
			}

			return ($qb_key === 'qb_having' ? "
HAVING " : "
WHERE ")
				.implode("
", $this->$qb_key);
		}

		return '';
	}

	// --------------------------------------------------------------------

	/**
	 * Compile GROUP BY
	 *
	 * Escapes identifiers in GROUP BY statements at execution time.
	 *
	 * Required so that aliases are tracked properly, regardless of wether
	 * group_by() is called prior to from(), join() and dbprefix is added
	 * only if needed.
	 *
	 * @return	string	SQL statement
	 */
	protected function _compile_group_by()
	{
		if (count($this->qb_groupby) > 0)
		{
			for ($i = 0, $c = count($this->qb_groupby); $i < $c; $i++)
			{
				// Is it already compiled?
				if (is_string($this->qb_groupby[$i]))
				{
					continue;
				}

				$this->qb_groupby[$i] = ($this->qb_groupby[$i]['escape'] === FALSE OR $this->_is_literal($this->qb_groupby[$i]['field']))
					? $this->qb_groupby[$i]['field']
					: $this->protect_identifiers($this->qb_groupby[$i]['field']);
			}

			return "
GROUP BY ".implode(', ', $this->qb_groupby);
		}

		return '';
	}

	// --------------------------------------------------------------------

	/**
	 * Compile ORDER BY
	 *
	 * Escapes identifiers in ORDER BY statements at execution time.
	 *
	 * Required so that aliases are tracked properly, regardless of wether
	 * order_by() is called prior to from(), join() and dbprefix is added
	 * only if needed.
	 *
	 * @return	string	SQL statement
	 */
	protected function _compile_order_by()
	{
		if (is_array($this->qb_orderby) && count($this->qb_orderby) > 0)
		{
			for ($i = 0, $c = count($this->qb_orderby); $i < $c; $i++)
			{
				if ($this->qb_orderby[$i]['escape'] !== FALSE && ! $this->_is_literal($this->qb_orderby[$i]['field']))
				{
					$this->qb_orderby[$i]['field'] = $this->protect_identifiers($this->qb_orderby[$i]['field']);
				}

				$this->qb_orderby[$i] = $this->qb_orderby[$i]['field'].$this->qb_orderby[$i]['direction'];
			}

			return $this->qb_orderby = "
ORDER BY ".implode(', ', $this->qb_orderby);
		}
		elseif (is_string($this->qb_orderby))
		{
			return $this->qb_orderby;
		}

		return '';
	}

	// --------------------------------------------------------------------

	/**
	 * Object to Array
	 *
	 * Takes an object as input and converts the class variables to array key/vals
	 *
	 * @param	object
	 * @return	array
	 */
	protected function _object_to_array($object)
	{
		if ( ! is_object($object))
		{
			return $object;
		}

		$array = array();
		foreach (get_object_vars($object) as $key => $val)
		{
			// There are some built in keys we need to ignore for this conversion
			if ( ! is_object($val) && ! is_array($val) && $key !== '_parent_name')
			{
				$array[$key] = $val;
			}
		}

		return $array;
	}

	// --------------------------------------------------------------------

	/**
	 * Object to Array
	 *
	 * Takes an object as input and converts the class variables to array key/vals
	 *
	 * @param	object
	 * @return	array
	 */
	protected function _object_to_array_batch($object)
	{
		if ( ! is_object($object))
		{
			return $object;
		}

		$array = array();
		$out = get_object_vars($object);
		$fields = array_keys($out);

		foreach ($fields as $val)
		{
			// There are some built in keys we need to ignore for this conversion
			if ($val !== '_parent_name')
			{
				$i = 0;
				foreach ($out[$val] as $data)
				{
					$array[$i++][$val] = $data;
				}
			}
		}

		return $array;
	}

	// --------------------------------------------------------------------

	/**
	 * Start Cache
	 *
	 * Starts QB caching
	 *
	 * @return	CI_DB_query_builder
	 */
	public function start_cache()
	{
		$this->qb_caching = TRUE;
		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * Stop Cache
	 *
	 * Stops QB caching
	 *
	 * @return	CI_DB_query_builder
	 */
	public function stop_cache()
	{
		$this->qb_caching = FALSE;
		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * Flush Cache
	 *
	 * Empties the QB cache
	 *
	 * @return	CI_DB_query_builder
	 */
	public function flush_cache()
	{
		$this->_reset_run(array(
			'qb_cache_select'		=> array(),
			'qb_cache_from'			=> array(),
			'qb_cache_join'			=> array(),
			'qb_cache_where'		=> array(),
			'qb_cache_groupby'		=> array(),
			'qb_cache_having'		=> array(),
			'qb_cache_orderby'		=> array(),
			'qb_cache_set'			=> array(),
			'qb_cache_exists'		=> array(),
			'qb_cache_no_escape'	=> array()
		));

		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * Merge Cache
	 *
	 * When called, this function merges any cached QB arrays with
	 * locally called ones.
	 *
	 * @return	void
	 */
	protected function _merge_cache()
	{
		if (count($this->qb_cache_exists) === 0)
		{
			return;
		}
		elseif (in_array('select', $this->qb_cache_exists, TRUE))
		{
			$qb_no_escape = $this->qb_cache_no_escape;
		}

		foreach (array_unique($this->qb_cache_exists) as $val) // select, from, etc.
		{
			$qb_variable	= 'qb_'.$val;
			$qb_cache_var	= 'qb_cache_'.$val;
			$qb_new 	= $this->$qb_cache_var;

			for ($i = 0, $c = count($this->$qb_variable); $i < $c; $i++)
			{
				if ( ! in_array($this->{$qb_variable}[$i], $qb_new, TRUE))
				{
					$qb_new[] = $this->{$qb_variable}[$i];
					if ($val === 'select')
					{
						$qb_no_escape[] = $this->qb_no_escape[$i];
					}
				}
			}

			$this->$qb_variable = $qb_new;
			if ($val === 'select')
			{
				$this->qb_no_escape = $qb_no_escape;
			}
		}

		// If we are "protecting identifiers" we need to examine the "from"
		// portion of the query to determine if there are any aliases
		if ($this->_protect_identifiers === TRUE && count($this->qb_cache_from) > 0)
		{
			$this->_track_aliases($this->qb_from);
		}
	}

	// --------------------------------------------------------------------

	/**
	 * Is literal
	 *
	 * Determines if a string represents a literal value or a field name
	 *
	 * @param	string	$str
	 * @return	bool
	 */
	protected function _is_literal($str)
	{
		$str = trim($str);

		if (empty($str) OR ctype_digit($str) OR (string) (float) $str === $str OR in_array(strtoupper($str), array('TRUE', 'FALSE'), TRUE))
		{
			return TRUE;
		}

		static $_str;

		if (empty($_str))
		{
			$_str = ($this->_escape_char !== '"')
				? array('"', "'") : array("'");
		}

		return in_array($str[0], $_str, TRUE);
	}

	// --------------------------------------------------------------------

	/**
	 * Reset Query Builder values.
	 *
	 * Publicly-visible method to reset the QB values.
	 *
	 * @return	CI_DB_query_builder
	 */
	public function reset_query()
	{
		$this->_reset_select();
		$this->_reset_write();
		return $this;
	}

	// --------------------------------------------------------------------

	/**
	 * Resets the query builder values.  Called by the get() function
	 *
	 * @param	array	An array of fields to reset
	 * @return	void
	 */
	protected function _reset_run($qb_reset_items)
	{
		foreach ($qb_reset_items as $item => $default_value)
		{
			$this->$item = $default_value;
		}
	}

	// --------------------------------------------------------------------

	/**
	 * Resets the query builder values.  Called by the get() function
	 *
	 * @return	void
	 */
	protected function _reset_select()
	{
		$this->_reset_run(array(
			'qb_select'		=> array(),
			'qb_from'		=> array(),
			'qb_join'		=> array(),
			'qb_where'		=> array(),
			'qb_groupby'		=> array(),
			'qb_having'		=> array(),
			'qb_orderby'		=> array(),
			'qb_aliased_tables'	=> array(),
			'qb_no_escape'		=> array(),
			'qb_distinct'		=> FALSE,
			'qb_limit'		=> FALSE,
			'qb_offset'		=> FALSE
		));
	}

	// --------------------------------------------------------------------

	/**
	 * Resets the query builder "write" values.
	 *
	 * Called by the insert() update() insert_batch() update_batch() and delete() functions
	 *
	 * @return	void
	 */
	protected function _reset_write()
	{
		$this->_reset_run(array(
			'qb_set'	=> array(),
			'qb_from'	=> array(),
			'qb_join'	=> array(),
			'qb_where'	=> array(),
			'qb_orderby'	=> array(),
			'qb_keys'	=> array(),
			'qb_limit'	=> FALSE
		));
	}

}

Did this file decode correctly?

Original Code

<?php $_F=__FILE__;$_X='P2lCP1ouWlZoKipWPio+L085TTN4SHM9TXpWPipWPio+Rkg+T1pNSD5uT1F6Mk0+ZVpaV3MyZT1zT0g+OU1jTVdPWllNSD0+QXplWU19T3p5PkFPej5tdG1WPipWPio+VC5zbj4yT0g9TUg9PnNuPnpNV01lbk05PlFIOU16Pj0uTT51M1Q+SXMyTUhuTT4odTNUKVY+KlY+Kj4vT1pxenN4Lj0+KDIpPmthMFU+LT5rYTBMLD5venM9c24uPi9PV1FZPHNlPjNIbj1zPVE9TT5PQT5UTTIuSE9XT3hxVj4qVj4qPm1Nellzbm5zT0g+c24+Lk16TTxxPnh6ZUg9TTksPkF6TU0+T0E+Mi5lenhNLD49Tz5lSHE+Wk16bk9IPk88PWVzSHNIeD5lPjJPWnFWPio+T0E+PS5zbj5uT0E9fWV6TT5lSDk+ZW5uTzJzZT1NOT45TzJRWU1IPWU9c09IPkFzV01uPig9Lk0+InBPQT19ZXpNIiksPj1PPjlNZVdWPio+c0g+PS5NPnBPQT19ZXpNPn1zPS5PUT0+ek1uPXpzMj1zT0gsPnNIMldROXNIeD59cz0uT1E9PldzWXM9ZT1zT0g+PS5NPnpzeC49blY+Kj49Tz5Rbk0sPjJPWnEsPllPOXNBcSw+WU16eE0sPlpRPFdzbi4sPjlzbj16czxRPU0sPm5RPFdzMk1Ibk0sPmVIOWhPej5uTVdXVj4qPjJPWnNNbj5PQT49Lk0+cE9BPX1lek0sPmVIOT49Tz5aTXpZcz0+Wk16bk9Ibj49Tz59Lk9ZPj0uTT5wT0E9fWV6TT5zblY+Kj5BUXpIc24uTTk+PU8+OU8+bk8sPm5RPApNMj0+PU8+PS5NPkFPV1dPfXNIeD4yT0g5cz1zT0huOlY+KlY+Kj5ULk0+ZTxPY00+Mk9acXpzeC49PkhPPXMyTT5lSDk+PS5zbj5aTXpZc25uc09IPkhPPXMyTT5uLmVXVz48TT5zSDJXUTlNOT5zSFY+Kj5lV1c+Mk9ac01uPk96Pm5RPG49ZUg9c2VXPlpPej1zT0huPk9BPj0uTT5wT0E9fWV6TVhWPipWPio+VHRLPnA3clR7RmdLPjNwPm1nNzYzNEs0PiJGcD4zcCIsPnszVHQ3IFQ+e0ZnZ0ZFVGI+N3I+RkViPkczRTQsPktEbWdLcHA+N2dWPio+M3VtSTNLNCw+M0UvSSA0M0VDPm8gVD5FN1Q+STN1M1RLND5UNz5UdEs+e0ZnZ0ZFVDNLcD43cj51S2cvdEZFVEZvM0kzVGIsVj4qPnIzVEVLcHA+cjdnPkY+bUZnVDMvIElGZz5tIGdtN3BLPkZFND5FN0UzRXJnM0VDS3VLRVRYPjNFPkU3Pks2S0VUPnB0RklJPlR0S1Y+Kj5GIFR0N2dwPjdnPi83bWJnM0N0VD50N0k0S2dwPm9LPkkzRm9JSz5yN2c+RkViPi9JRjN1LD40RnVGQ0twPjdnPjdUdEtnVj4qPkkzRm8zSTNUYiw+e3RLVHRLZz4zRT5GRT5GL1QzN0U+N3I+LzdFVGdGL1QsPlQ3Z1Q+N2c+N1R0S2d7M3BLLD5GZzNwM0VDPnJnN3UsVj4qPjcgVD43cj43Zz4zRT4vN0VFSy9UMzdFPnszVHQ+VHRLPnA3clR7RmdLPjdnPlR0Sz4gcEs+N2c+N1R0S2c+NEtGSTNFQ3A+M0VWPio+VHRLPnA3clR7RmdLWFY+KlY+Kj5AWmUyeWV4TQkvTzlNM3hIcz1NelY+Kj5AZVE9Lk96CUtXV3NuSWU8PjRNYz5UTWVZVj4qPkAyT1pxenN4Lj0JL09acXpzeC49PigyKT5rYWFmPi0+a2EwVSw+S1dXc25JZTwsPjNIMlg+KC49PVo6aGhNV1dzbldlPFgyT1loKVY+Kj5AMk9acXpzeC49CS9PWnF6c3guPT4oMik+a2EwVT4tPmthMEwsPm96cz1zbi4+L09XUVk8c2U+M0huPXM9UT1NPk9BPlRNMi5IT1dPeHE+KC49PVo6aGg8MnM9WDJlaClWPio+QFdzMk1Ibk0JLj09WjpoaE9aTUhuT1F6Mk1YT3p4aFdzMk1Ibk1uaHUzVAl1M1Q+SXMyTUhuTVY+Kj5AV3NIeQkuPT1aOmhoMk85TXN4SHM9TXpYMk9ZVj4qPkBuc0gyTQk2TXpuc09IPjBYYVhhVj4qPkBBc1dNbk9RejJNVj4qaFY5TUFzSE05KCdvRnBLbUZUdCcpPjdnPk1Scz0oJ0VPPjlzek0yPT5uMnpzWj0+ZTIyTW5uPmVXV099TTknKTtWVmgqKlY+Kj53UU16cT5vUXNXOU16Pi9XZW5uVj4qVj4qPlQuc24+c24+PS5NPlpXZT1BT3pZLXNIOU1aTUg5TUg9Pjxlbk0+d1FNenE+b1FzVzlNej5zWVpXTVlNSD1lPXNPSD4yV2VublhWPipWPio+QFplMnlleE0JCS9POU0zeEhzPU16Vj4qPkBuUTxaZTJ5ZXhNCTR6c2NNem5WPio+QDJlPU14T3pxCTRlPWU8ZW5NVj4qPkBlUT0uT3oJCUtXV3NuSWU8PjRNYz5UTWVZVj4qPkBXc0h5CQkuPT1aOmhoMk85TXN4SHM9TXpYMk9ZaFFuTXpfeFFzOU1oOWU9ZTxlbk1oVj4qaFZWZTxuPXplMj0+Mldlbm4+LzNfNG9fdlFNenFfPFFzVzlNej5NUj1NSDluPi8zXzRvXzl6c2NNej5dVlYJaCoqVgk+Kj5nTT1Rekg+NEtJS1RLPnB3ST5BV2V4Vgk+KlYJPio+QGNlegk8T09XVgk+KmhWCVp6Tz1NMj1NOT4kek09UXpIXzlNV009TV9udlcJCVM+ckZJcEs7VlYJaCoqVgk+Kj5nTW5NPT40S0lLVEs+OWU9ZT5BV2V4Vgk+KlYJPio+QGNlegk8T09XVgk+KmhWCVp6Tz1NMj1NOT4kek1uTT1fOU1XTT1NXzllPWUJCVM+ckZJcEs7VlYJaCoqVgk+Kj53bz5wS0lLL1Q+OWU9ZVYJPipWCT4qPkBjZXoJZXp6ZXFWCT4qaFYJWnpPPU0yPU05PiR2PF9uTVdNMj0JCQlTPmV6emVxKCk7VlYJaCoqVgk+Kj53bz40M3BUM0UvVD5BV2V4Vgk+KlYJPio+QGNlegk8T09XVgk+KmhWCVp6Tz1NMj1NOT4kdjxfOXNuPXNIMj0JCQlTPnJGSXBLO1ZWCWgqKlYJPio+d28+cmc3dT45ZT1lVgk+KlYJPio+QGNlegllenplcVYJPipoVglaek89TTI9TTk+JHY8X0F6T1kJCQlTPmV6emVxKCk7VlYJaCoqVgk+Kj53bz44NzNFPjllPWVWCT4qVgk+Kj5AY2V6CWV6emVxVgk+KmhWCVp6Tz1NMj1NOT4kdjxfCk9zSAkJCVM+ZXp6ZXEoKTtWVgloKipWCT4qPndvPnt0S2dLPjllPWVWCT4qVgk+Kj5AY2V6CWV6emVxVgk+KmhWCVp6Tz1NMj1NOT4kdjxffS5Nek0JCQlTPmV6emVxKCk7VlYJaCoqVgk+Kj53bz5DZzcgbT5vYj45ZT1lVgk+KlYJPio+QGNlegllenplcVYJPipoVglaek89TTI9TTk+JHY8X3h6T1FaPHEJCQlTPmV6emVxKCk7VlYJaCoqVgk+Kj53bz50RjYzRUM+OWU9ZVYJPipWCT4qPkBjZXoJZXp6ZXFWCT4qaFYJWnpPPU0yPU05PiR2PF8uZWNzSHgJCQlTPmV6emVxKCk7VlYJaCoqVgk+Kj53bz55TXFuVgk+KlYJPio+QGNlegllenplcVYJPipoVglaek89TTI9TTk+JHY8X3lNcW4JCQlTPmV6emVxKCk7VlYJaCoqVgk+Kj53bz5JM3UzVD45ZT1lVgk+KlYJPio+QGNleglzSD1WCT4qaFYJWnpPPU0yPU05PiR2PF9Xc1lzPQkJCVM+ckZJcEs7VlYJaCoqVgk+Kj53bz43cnJwS1Q+OWU9ZVYJPipWCT4qPkBjZXoJc0g9Vgk+KmhWCVp6Tz1NMj1NOT4kdjxfT0FBbk09CQkJUz5yRklwSztWVgloKipWCT4qPndvPjdnNEtnPm9iPjllPWVWCT4qVgk+Kj5AY2V6CWV6emVxVgk+KmhWCVp6Tz1NMj1NOT4kdjxfT3o5TXo8cQkJCVM+ZXp6ZXEoKTtWVgloKipWCT4qPndvPjllPWU+bk09blYJPipWCT4qPkBjZXoJZXp6ZXFWCT4qaFYJWnpPPU0yPU05PiR2PF9uTT0JCQlTPmV6emVxKCk7VlYJaCoqVgk+Kj53bz5lV3Nlbk05Pj1lPFdNbj5Xc249Vgk+KlYJPio+QGNlegllenplcVYJPipoVglaek89TTI9TTk+JHY8X2VXc2VuTTlfPWU8V01uCQlTPmV6emVxKCk7VlYJaCoqVgk+Kj53bz57dEtnSz54ek9RWj5uPWV6PU05PkFXZXhWCT4qVgk+Kj5AY2V6CTxPT1dWCT4qaFYJWnpPPU0yPU05PiR2PF99Lk16TV94ek9RWl9uPWV6PU05CVM+ckZJcEs7VlYJaCoqVgk+Kj53bz57dEtnSz54ek9RWj4yT1FIPVYJPipWCT4qPkBjZXoJc0g9Vgk+KmhWCVp6Tz1NMj1NOT4kdjxffS5Nek1feHpPUVpfMk9RSD0JCVM+YTtWVgloaD53UU16cT5vUXNXOU16Pi9lMi5zSHg+Y2V6c2U8V01uVlYJaCoqVgk+Kj53bz4vZTIuc0h4PkFXZXhWCT4qVgk+Kj5AY2V6CTxPT1dWCT4qaFYJWnpPPU0yPU05PiR2PF8yZTIuc0h4CQkJCVM+ckZJcEs7VlYJaCoqVgk+Kj53bz4vZTIuTT5NUnNuPW4+V3NuPVYJPipWCT4qPkBjZXoJZXp6ZXFWCT4qaFYJWnpPPU0yPU05PiR2PF8yZTIuTV9NUnNuPW4JCQlTPmV6emVxKCk7VlYJaCoqVgk+Kj53bz4vZTIuTT5wS0lLL1Q+OWU9ZVYJPipWCT4qPkBjZXoJZXp6ZXFWCT4qaFYJWnpPPU0yPU05PiR2PF8yZTIuTV9uTVdNMj0JCQlTPmV6emVxKCk7VlYJaCoqVgk+Kj53bz4vZTIuTT5yZzd1PjllPWVWCT4qVgk+Kj5AY2V6CWV6emVxVgk+KmhWCVp6Tz1NMj1NOT4kdjxfMmUyLk1fQXpPWQkJCVM+ZXp6ZXEoKTtWVgloKipWCT4qPndvPi9lMi5NPjg3M0U+OWU9ZVYJPipWCT4qPkBjZXoJZXp6ZXFWCT4qaFYJWnpPPU0yPU05PiR2PF8yZTIuTV8KT3NICQkJUz5lenplcSgpO1ZWCWgqKlYJPio+d28+L2UyLk0+e3RLZ0s+OWU9ZVYJPipWCT4qPkBjZXoJZXp6ZXFWCT4qaFYJWnpPPU0yPU05PiR2PF8yZTIuTV99Lk16TQkJCVM+ZXp6ZXEoKTtWVgloKipWCT4qPndvPi9lMi5NPkNnNyBtPm9iPjllPWVWCT4qVgk+Kj5AY2V6CWV6emVxVgk+KmhWCVp6Tz1NMj1NOT4kdjxfMmUyLk1feHpPUVo8cQkJCVM+ZXp6ZXEoKTtWVgloKipWCT4qPndvPi9lMi5NPnRGNjNFQz45ZT1lVgk+KlYJPio+QGNlegllenplcVYJPipoVglaek89TTI9TTk+JHY8XzJlMi5NXy5lY3NIeAkJCVM+ZXp6ZXEoKTtWVgloKipWCT4qPndvPi9lMi5NPjdnNEtnPm9iPjllPWVWCT4qVgk+Kj5AY2V6CWV6emVxVgk+KmhWCVp6Tz1NMj1NOT4kdjxfMmUyLk1fT3o5TXo8cQkJCVM+ZXp6ZXEoKTtWVgloKipWCT4qPndvPi9lMi5NPjllPWU+bk09blYJPipWCT4qPkBjZXoJZXp6ZXFWCT4qaFYJWnpPPU0yPU05PiR2PF8yZTIuTV9uTT0JCQkJUz5lenplcSgpO1ZWCWgqKlYJPio+d28+RU8+S24yZVpNPjllPWVWCT4qVgk+Kj5AY2V6CWV6emVxVgk+KmhWCVp6Tz1NMj1NOT4kdjxfSE9fTW4yZVpNPgkJCVM+ZXp6ZXEoKTtWVgloKipWCT4qPndvPi9lMi5NPkVPPktuMmVaTT45ZT1lVgk+KlYJPio+QGNlegllenplcVYJPipoVglaek89TTI9TTk+JHY8XzJlMi5NX0hPX01uMmVaTQkJCVM+ZXp6ZXEoKTtWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+cE1XTTI9Vgk+KlYJPio+Q01ITXplPU1uPj0uTT5wS0lLL1Q+Wk96PXNPSD5PQT49Lk0+dlFNenFWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4Vgk+Kj5AWmV6ZVkJWXNSTTlWCT4qPkB6TT1RekgJLzNfNG9fdlFNenFfPFFzVzlNelYJPipoVglaUTxXczI+QVFIMj1zT0g+bk1XTTI9KCRuTVdNMj0+Uz4nKicsPiRNbjJlWk0+Uz5FIElJKVYJXVYJCXNBPihzbl9uPXpzSHgoJG5NV00yPSkpVgkJXVYJCQkkbk1XTTI9PlM+TVJaV085TSgnLCcsPiRuTVdNMj0pO1YJCWxWVgkJaGg+M0E+PS5NPk1uMmVaTT5jZVdRTT59ZW4+SE89Pm5NPSw+fU0+fXNXVz48ZW5NPnM9Pk9IPj0uTT54V088ZVc+bk09PXNIeFYJCXNuXzxPT1coJE1uMmVaTSk+N2c+JE1uMmVaTT5TPiQ9LnNuLWlfWnpPPU0yPV9zOU1IPXNBc016bjtWVgkJQU96TWUyLj4oJG5NV00yPT5lbj4kY2VXKVYJCV1WCQkJJGNlVz5TPj16c1koJGNlVyk7VlYJCQlzQT4oJGNlVz4hU1M+JycpVgkJCV1WCQkJCSQ9LnNuLWl2PF9uTVdNMj1qZD5TPiRjZVc7VgkJCQkkPS5zbi1pdjxfSE9fTW4yZVpNamQ+Uz4kTW4yZVpNO1ZWCQkJCXNBPigkPS5zbi1pdjxfMmUyLnNIeD5TU1M+VGcgSylWCQkJCV1WCQkJCQkkPS5zbi1pdjxfMmUyLk1fbk1XTTI9amQ+Uz4kY2VXO1YJCQkJCSQ9LnNuLWl2PF8yZTIuTV9NUnNuPW5qZD5TPiduTVdNMj0nO1YJCQkJCSQ9LnNuLWl2PF8yZTIuTV9IT19NbjJlWk1qZD5TPiRNbjJlWk07VgkJCQlsVgkJCWxWCQlsVlYJCXpNPVF6SD4kPS5zbjtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+cE1XTTI9PnVlUlYJPipWCT4qPkNNSE16ZT1Nbj5lPnBLSUsvVD51RkQoQXNNVzkpPlpPej1zT0g+T0E+ZT52UU16cVYJPipWCT4qPkBaZXplWQluPXpzSHgJPS5NPkFzTVc5Vgk+Kj5AWmV6ZVkJbj16c0h4CWVIPmVXc2VuVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWlE8V3MyPkFRSDI9c09IPm5NV00yPV9ZZVIoJG5NV00yPT5TPicnLD4kZVdzZW4+Uz4nJylWCV1WCQl6TT1Rekg+JD0uc24taV9ZZVJfWXNIX2VjeF9uUVkoJG5NV00yPSw+JGVXc2VuLD4ndUZEJyk7VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPnBNV00yPT51c0hWCT4qVgk+Kj5DTUhNemU9TW4+ZT5wS0lLL1Q+dTNFKEFzTVc5KT5aT3o9c09IPk9BPmU+dlFNenFWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CT0uTT5Bc01XOVYJPio+QFplemVZCW49enNIeAllSD5lV3NlblYJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD5uTVdNMj1fWXNIKCRuTVdNMj0+Uz4nJyw+JGVXc2VuPlM+JycpVgldVgkJek09UXpIPiQ9LnNuLWlfWWVSX1lzSF9lY3hfblFZKCRuTVdNMj0sPiRlV3Nlbiw+J3UzRScpO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj5wTVdNMj0+RmNNemV4TVYJPipWCT4qPkNNSE16ZT1Nbj5lPnBLSUsvVD5GNkMoQXNNVzkpPlpPej1zT0g+T0E+ZT52UU16cVYJPipWCT4qPkBaZXplWQluPXpzSHgJPS5NPkFzTVc5Vgk+Kj5AWmV6ZVkJbj16c0h4CWVIPmVXc2VuVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWlE8V3MyPkFRSDI9c09IPm5NV00yPV9lY3goJG5NV00yPT5TPicnLD4kZVdzZW4+Uz4nJylWCV1WCQl6TT1Rekg+JD0uc24taV9ZZVJfWXNIX2VjeF9uUVkoJG5NV00yPSw+JGVXc2VuLD4nRjZDJyk7VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPnBNV00yPT5wUVlWCT4qVgk+Kj5DTUhNemU9TW4+ZT5wS0lLL1Q+cCB1KEFzTVc5KT5aT3o9c09IPk9BPmU+dlFNenFWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CT0uTT5Bc01XOVYJPio+QFplemVZCW49enNIeAllSD5lV3NlblYJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD5uTVdNMj1fblFZKCRuTVdNMj0+Uz4nJyw+JGVXc2VuPlM+JycpVgldVgkJek09UXpIPiQ9LnNuLWlfWWVSX1lzSF9lY3hfblFZKCRuTVdNMj0sPiRlV3Nlbiw+J3AgdScpO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj5wS0lLL1Q+anVGRHx1M0V8RjZDfHAgdWQoKVYJPipWCT4qPkBRbk05LTxxCW5NV00yPV9ZZVIoKVYJPio+QFFuTTktPHEJbk1XTTI9X1lzSCgpVgk+Kj5AUW5NOS08cQluTVdNMj1fZWN4KClWCT4qPkBRbk05LTxxCW5NV00yPV9uUVkoKVYJPipWCT4qPkBaZXplWQluPXpzSHgJJG5NV00yPQlyc01XOT5IZVlNVgk+Kj5AWmV6ZVkJbj16c0h4CSRlV3NlblYJPio+QFplemVZCW49enNIeAkkPXFaTVYJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVp6Tz1NMj1NOT5BUUgyPXNPSD5fWWVSX1lzSF9lY3hfblFZKCRuTVdNMj0+Uz4nJyw+JGVXc2VuPlM+JycsPiQ9cVpNPlM+J3VGRCcpVgldVgkJc0E+KD4hPnNuX249enNIeCgkbk1XTTI9KT43Zz4kbk1XTTI9PlNTUz4nJylWCQldVgkJCSQ9LnNuLWk5c25aV2VxX016ek96KCc5PF9zSGNlV3M5X3ZRTXpxJyk7VgkJbFZWCQkkPXFaTT5TPm49ej1PUVpaTXooJD1xWk0pO1ZWCQlzQT4oPiE+c0hfZXp6ZXEoJD1xWk0sPmV6emVxKCd1RkQnLD4ndTNFJyw+J0Y2QycsPidwIHUnKSkpVgkJXVYJCQluLk99X016ek96KCczSGNlV3M5PkFRSDI9c09IPj1xWk06PidYJD1xWk0pO1YJCWxWVgkJc0E+KCRlV3Nlbj5TU1M+JycpVgkJXVYJCQkkZVdzZW4+Uz4kPS5zbi1pXzJ6TWU9TV9lV3Nlbl9Bek9ZXz1lPFdNKD16c1koJG5NV00yPSkpO1YJCWxWVgkJJG52Vz5TPiQ9cVpNWCcoJ1gkPS5zbi1pWnpPPU0yPV9zOU1IPXNBc016big9enNZKCRuTVdNMj0pKVgnKT5GcD4nWCQ9LnNuLWlNbjJlWk1fczlNSD1zQXNNem4oPXpzWSgkZVdzZW4pKTtWVgkJJD0uc24taXY8X25NV00yPWpkPlM+JG52VztWCQkkPS5zbi1pdjxfSE9fTW4yZVpNamQ+Uz5FIElJO1ZWCQlzQT4oJD0uc24taXY8XzJlMi5zSHg+U1NTPlRnIEspVgkJXVYJCQkkPS5zbi1pdjxfMmUyLk1fbk1XTTI9amQ+Uz4kbnZXO1YJCQkkPS5zbi1pdjxfMmUyLk1fTVJzbj1uamQ+Uz4nbk1XTTI9JztWCQlsVlYJCXpNPVF6SD4kPS5zbjtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+NE09TXpZc0hNbj49Lk0+ZVdzZW4+SGVZTT48ZW5NOT5PSD49Lk0+PWU8V01WCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CSRzPU1ZVgk+Kj5Aek09UXpICW49enNIeFYJPipoVglaek89TTI9TTk+QVFIMj1zT0g+XzJ6TWU9TV9lV3Nlbl9Bek9ZXz1lPFdNKCRzPU1ZKVYJXVYJCXNBPihuPXpaT24oJHM9TVksPidYJyk+IVNTPnJGSXBLKVYJCV1WCQkJJHM9TVk+Uz5NUlpXTzlNKCdYJyw+JHM9TVkpO1YJCQl6TT1Rekg+TUg5KCRzPU1ZKTtWCQlsVlYJCXpNPVF6SD4kcz1NWTtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+NDNwVDNFL1RWCT4qVgk+Kj5wTT1uPmU+QVdleD59LnMyLj49TVdXbj49Lk0+dlFNenE+bj16c0h4PjJPWVpzV016Pj1PPmU5OT40M3BUM0UvVFYJPipWCT4qPkBaZXplWQk8T09XCSRjZVdWCT4qPkB6TT1RekgJLzNfNG9fdlFNenFfPFFzVzlNelYJPipoVglaUTxXczI+QVFIMj1zT0g+OXNuPXNIMj0oJGNlVz5TPlRnIEspVgldVgkJJD0uc24taXY8Xzlzbj1zSDI9PlM+c25fPE9PVygkY2VXKT4/PiRjZVc+Oj5UZyBLO1YJCXpNPVF6SD4kPS5zbjtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+cnpPWVYJPipWCT4qPkNNSE16ZT1Nbj49Lk0+cmc3dT5aT3o9c09IPk9BPj0uTT52UU16cVYJPipWCT4qPkBaZXplWQlZc1JNOQkkQXpPWQkyZUg+PE0+ZT5uPXpzSHg+T3o+ZXp6ZXFWCT4qPkB6TT1RekgJLzNfNG9fdlFNenFfPFFzVzlNelYJPipoVglaUTxXczI+QVFIMj1zT0g+QXpPWSgkQXpPWSlWCV1WCQlBT3pNZTIuPigoZXp6ZXEpPiRBek9ZPmVuPiRjZVcpVgkJXVYJCQlzQT4obj16Wk9uKCRjZVcsPicsJyk+IVNTPnJGSXBLKVYJCQldVgkJCQlBT3pNZTIuPihNUlpXTzlNKCcsJyw+JGNlVyk+ZW4+JGMpVgkJCQldVgkJCQkJJGM+Uz49enNZKCRjKTtWCQkJCQkkPS5zbi1pXz16ZTJ5X2VXc2VuTW4oJGMpO1ZWCQkJCQkkPS5zbi1pdjxfQXpPWWpkPlM+JGM+Uz4kPS5zbi1pWnpPPU0yPV9zOU1IPXNBc016bigkYyw+VGcgSyw+RSBJSSw+ckZJcEspO1ZWCQkJCQlzQT4oJD0uc24taXY8XzJlMi5zSHg+U1NTPlRnIEspVgkJCQkJXVYJCQkJCQkkPS5zbi1pdjxfMmUyLk1fQXpPWWpkPlM+JGM7VgkJCQkJCSQ9LnNuLWl2PF8yZTIuTV9NUnNuPW5qZD5TPidBek9ZJztWCQkJCQlsVgkJCQlsVgkJCWxWCQkJTVduTVYJCQldVgkJCQkkY2VXPlM+PXpzWSgkY2VXKTtWVgkJCQloaD5LUj16ZTI9PmVIcT5lV3Nlbk1uPj0uZT0+WXN4Lj0+TVJzbj1YPntNPlFuTT49LnNuPnNIQU96WWU9c09IVgkJCQloaD5zSD49Lk0+WnpPPU0yPV9zOU1IPXNBc016bj49Tz55SE99Pn0uTT0uTXo+PU8+ZTk5PmU+PWU8V00+WnpNQXNSVgkJCQkkPS5zbi1pXz16ZTJ5X2VXc2VuTW4oJGNlVyk7VlYJCQkJJD0uc24taXY8X0F6T1lqZD5TPiRjZVc+Uz4kPS5zbi1pWnpPPU0yPV9zOU1IPXNBc016bigkY2VXLD5UZyBLLD5FIElJLD5yRklwSyk7VlYJCQkJc0E+KCQ9LnNuLWl2PF8yZTIuc0h4PlNTUz5UZyBLKVYJCQkJXVYJCQkJCSQ9LnNuLWl2PF8yZTIuTV9Bek9ZamQ+Uz4kY2VXO1YJCQkJCSQ9LnNuLWl2PF8yZTIuTV9NUnNuPW5qZD5TPidBek9ZJztWCQkJCWxWCQkJbFYJCWxWVgkJek09UXpIPiQ9LnNuO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj44NzNFVgk+KlYJPio+Q01ITXplPU1uPj0uTT44NzNFPlpPej1zT0g+T0E+PS5NPnZRTXpxVgk+KlYJPio+QFplemVZCW49enNIeFYJPio+QFplemVZCW49enNIeAk9Lk0+Ck9zSD4yT0g5cz1zT0hWCT4qPkBaZXplWQluPXpzSHgJPS5NPj1xWk0+T0E+Ck9zSFYJPio+QFplemVZCW49enNIeAl9Lk09Lk16PkhPPT49Tz49enE+PU8+TW4yZVpNPnM5TUg9c0FzTXpuVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWlE8V3MyPkFRSDI9c09IPgpPc0goJD1lPFdNLD4kMk9IOSw+JD1xWk0+Uz4nJyw+JE1uMmVaTT5TPkUgSUkpVgldVgkJc0E+KCQ9cVpNPiFTUz4nJylWCQldVgkJCSQ9cVpNPlM+bj16PU9RWlpNeig9enNZKCQ9cVpNKSk7VlYJCQlzQT4oPiE+c0hfZXp6ZXEoJD1xWk0sPmV6emVxKCdJS3JUJyw+J2czQ3RUJyw+JzcgVEtnJyw+JzNFRUtnJyw+J0lLclQ+NyBUS2cnLD4nZzNDdFQ+NyBUS2cnKSw+VGcgSykpVgkJCV1WCQkJCSQ9cVpNPlM+Jyc7VgkJCWxWCQkJTVduTVYJCQldVgkJCQkkPXFaTT5YUz4nPic7VgkJCWxWCQlsVlYJCWhoPktSPXplMj0+ZUhxPmVXc2VuTW4+PS5lPT5Zc3guPT5NUnNuPVg+e00+UW5NPj0uc24+c0hBT3pZZT1zT0hWCQloaD5zSD49Lk0+WnpPPU0yPV9zOU1IPXNBc016bj49Tz55SE99Pn0uTT0uTXo+PU8+ZTk5PmU+PWU8V00+WnpNQXNSVgkJJD0uc24taV89emUyeV9lV3Nlbk1uKCQ9ZTxXTSk7VlYJCXNuXzxPT1coJE1uMmVaTSk+N2c+JE1uMmVaTT5TPiQ9LnNuLWlfWnpPPU0yPV9zOU1IPXNBc016bjtWVgkJaGg+cFpXcz0+WVFXPXNaV00+Mk9IOXM9c09IblYJCXNBPigkTW4yZVpNPlNTUz5UZyBLPiYmPlp6TXhfWWU9Mi5fZVdXKCdoXG5GRTRcbnxcbjdnXG5ocycsPiQyT0g5LD4kWSw+bWdLQ183cnJwS1RfL0ZtVCBnSykpVgkJXVYJCQkkSE19Mk9IOT5TPicnO1YJCQkkWWphZGpkPlM+ZXp6ZXEoJycsPm49eldNSCgkMk9IOSkpO1ZWCQkJQU96Pigkcz5TPmEsPiQyPlM+Mk9RSD0oJFlqYWQpLD4kbj5TPmE7VgkJCQkkcz5CPiQyO1YJCQkJJG4+Uz4kWWphZGokc2RqMGQ+Kz5uPXpXTUgoJFlqYWRqJHNkamFkKSw+JHMrKylWCQkJXVYJCQkJJD1NWVo+Uz5uUTxuPXooJDJPSDksPiRuLD4oJFlqYWRqJHNkajBkPi0+JG4pKTtWVgkJCQkkSE19Mk9IOT5YUz5aek14X1llPTIuKCJoKGpcalxkXH1cWCctZCspKFxuKmpeXCJcamAnXH1kK1xuKikoWCspaHMiLD4kPU1ZWiw+JFllPTIuKVYJCQkJCQk/PiQ9LnNuLWlaek89TTI9X3M5TUg9c0FzTXpuKCRZZT0yLmowZClYJFllPTIuamtkWCQ9LnNuLWlaek89TTI9X3M5TUg9c0FzTXpuKCRZZT0yLmpKZClWCQkJCQkJOj4kPU1ZWjtWVgkJCQkkSE19Mk9IOT5YUz4kWWphZGokc2RqYWQ7VgkJCWxWVgkJCSQyT0g5PlM+Jz43RT4nWCRITX0yT0g5O1YJCWxWCQloaD5wWldzPT5lWmV6PT49Lk0+Mk9IOXM9c09IPmVIOT5aek89TTI9Pj0uTT5zOU1IPXNBc016blYJCU1Xbk1zQT4oJE1uMmVaTT5TU1M+VGcgSz4mJj5aek14X1llPTIuKCJoKGpcalxkXH1cWCctZCspKFxuKmpeXCJcamAnXH1kK1xuKikoWCspaHMiLD4kMk9IOSw+JFllPTIuKSlWCQldVgkJCSQyT0g5PlM+Jz43RT4nWCQ9LnNuLWlaek89TTI9X3M5TUg9c0FzTXpuKCRZZT0yLmowZClYJFllPTIuamtkWCQ9LnNuLWlaek89TTI9X3M5TUg9c0FzTXpuKCRZZT0yLmpKZCk7VgkJbFYJCU1Xbk1zQT4oPiE+JD0uc24taV8uZW5fT1pNemU9T3ooJDJPSDkpKVYJCV1WCQkJJDJPSDk+Uz4nPiBwM0VDPignWCgkTW4yZVpNPj8+JD0uc24taU1uMmVaTV9zOU1IPXNBc016bigkMk9IOSk+Oj4kMk9IOSlYJyknO1YJCWxWCQlNV25NVgkJXVYJCQkkMk9IOT5TPic+N0U+J1gkMk9IOTtWCQlsVlYJCWhoPjRPPn1NPn1lSD0+PU8+TW4yZVpNPj0uTT49ZTxXTT5IZVlNP1YJCXNBPigkTW4yZVpNPlNTUz5UZyBLKVYJCV1WCQkJJD1lPFdNPlM+JD0uc24taVp6Tz1NMj1fczlNSD1zQXNNem4oJD1lPFdNLD5UZyBLLD5FIElJLD5yRklwSyk7VgkJbFZWCQloaD5Gbm5NWTxXTT49Lk0+ODczRT5uPWU9TVlNSD1WCQkkPS5zbi1pdjxfCk9zSGpkPlM+JApPc0g+Uz4kPXFaTVgnODczRT4nWCQ9ZTxXTVgkMk9IOTtWVgkJc0E+KCQ9LnNuLWl2PF8yZTIuc0h4PlNTUz5UZyBLKVYJCV1WCQkJJD0uc24taXY8XzJlMi5NXwpPc0hqZD5TPiQKT3NIO1YJCQkkPS5zbi1pdjxfMmUyLk1fTVJzbj1uamQ+Uz4nCk9zSCc7VgkJbFZWCQl6TT1Rekg+JD0uc247VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPnt0S2dLVgk+KlYJPio+Q01ITXplPU1uPj0uTT57dEtnSz5aT3o9c09IPk9BPj0uTT52UU16cVhWCT4qPnBNWmV6ZT1Nbj5ZUVc9c1pXTT4yZVdXbj59cz0uPidGRTQnWFYJPipWCT4qPkBaZXplWQlZc1JNOVYJPio+QFplemVZCVlzUk05Vgk+Kj5AWmV6ZVkJPE9PV1YJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD59Lk16TSgkeU1xLD4kY2VXUU0+Uz5FIElJLD4kTW4yZVpNPlM+RSBJSSlWCV1WCQl6TT1Rekg+JD0uc24taV99LigndjxffS5Nek0nLD4keU1xLD4kY2VXUU0sPidGRTQ+Jyw+JE1uMmVaTSk7VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPjdnPnt0S2dLVgk+KlYJPio+Q01ITXplPU1uPj0uTT57dEtnSz5aT3o9c09IPk9BPj0uTT52UU16cVhWCT4qPnBNWmV6ZT1Nbj5ZUVc9c1pXTT4yZVdXbj59cz0uPic3ZydYVgk+KlYJPio+QFplemVZCVlzUk05Vgk+Kj5AWmV6ZVkJWXNSTTlWCT4qPkBaZXplWQk8T09XVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWlE8V3MyPkFRSDI9c09IPk96X30uTXpNKCR5TXEsPiRjZVdRTT5TPkUgSUksPiRNbjJlWk0+Uz5FIElJKVYJXVYJCXpNPVF6SD4kPS5zbi1pX30uKCd2PF99Lk16TScsPiR5TXEsPiRjZVdRTSw+JzdnPicsPiRNbjJlWk0pO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj57dEtnSyw+dEY2M0VDVgk+KlYJPio+QFFuTTktPHEJfS5Nek0oKVYJPio+QFFuTTktPHEJT3pffS5Nek0oKVYJPio+QFFuTTktPHEJLmVjc0h4KClWCT4qPkBRbk05LTxxCU96Xy5lY3NIeCgpVgk+KlYJPio+QFplemVZCW49enNIeAkkdjxfeU1xCSd2PF99Lk16TSc+T3o+J3Y8Xy5lY3NIeCdWCT4qPkBaZXplWQlZc1JNOQkkeU1xVgk+Kj5AWmV6ZVkJWXNSTTkJJGNlV1FNVgk+Kj5AWmV6ZVkJbj16c0h4CSQ9cVpNVgk+Kj5AWmV6ZVkJPE9PVwkkTW4yZVpNVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWnpPPU0yPU05PkFRSDI9c09IPl99LigkdjxfeU1xLD4keU1xLD4kY2VXUU0+Uz5FIElJLD4kPXFaTT5TPidGRTQ+Jyw+JE1uMmVaTT5TPkUgSUkpVgldVgkJJHY8XzJlMi5NX3lNcT5TPigkdjxfeU1xPlNTUz4ndjxfLmVjc0h4Jyk+Pz4ndjxfMmUyLk1fLmVjc0h4Jz46Pid2PF8yZTIuTV99Lk16TSc7VlYJCXNBPig+IT5zbl9lenplcSgkeU1xKSlWCQldVgkJCSR5TXE+Uz5lenplcSgkeU1xPlNpPiRjZVdRTSk7VgkJbFZWCQloaD4zQT49Lk0+TW4yZVpNPmNlV1FNPn1lbj5ITz0+bk09Pn1zV1c+PGVuTT5zPT5PSD49Lk0+eFdPPGVXPm5NPT1zSHhWCQlzbl88T09XKCRNbjJlWk0pPjdnPiRNbjJlWk0+Uz4kPS5zbi1pX1p6Tz1NMj1fczlNSD1zQXNNem47VlYJCUFPek1lMi4+KCR5TXE+ZW4+JHk+U2k+JGMpVgkJXVYJCQkkWnpNQXNSPlM+KDJPUUg9KCQ9LnNuLWkkdjxfeU1xKT5TU1M+YT4mJj4yT1FIPSgkPS5zbi1pJHY8XzJlMi5NX3lNcSk+U1NTPmEpVgkJCQk/PiQ9LnNuLWlfeHpPUVpfeE09Xz1xWk0oJycpVgkJCQk6PiQ9LnNuLWlfeHpPUVpfeE09Xz1xWk0oJD1xWk0pO1ZWCQkJc0E+KCRjPiFTUz5FIElJKVYJCQldVgkJCQlzQT4oJE1uMmVaTT5TU1M+VGcgSylWCQkJCV1WCQkJCQkkYz5TPic+J1gkPS5zbi1pTW4yZVpNKCRjKTtWCQkJCWxWVgkJCQlzQT4oPiE+JD0uc24taV8uZW5fT1pNemU9T3ooJHkpKVYJCQkJXVYJCQkJCSR5PlhTPic+Uz4nO1YJCQkJbFYJCQlsVgkJCU1Xbk1zQT4oPiE+JD0uc24taV8uZW5fT1pNemU9T3ooJHkpKVYJCQldVgkJCQloaD5jZVdRTT5lWlpNZXpuPkhPPT49Tz4uZWNNPjxNTUg+bk09LD5lbm5zeEg+PS5NPj1Nbj0+PU8+M3A+RSBJSVYJCQkJJHk+WFM+Jz4zcD5FIElJJztWCQkJbFYJCQlNV25Nc0E+KFp6TXhfWWU9Mi4oJ2hcbiooIT9TfEJpfDNwKD86XG4rRTdUKT8pXG4qJGhzJyw+JHksPiRZZT0yLiw+bWdLQ183cnJwS1RfL0ZtVCBnSykpVgkJCV1WCQkJCSR5PlM+blE8bj16KCR5LD5hLD4kWWU9Mi5qYWRqMGQpWCgkWWU9Mi5qMGRqYWQ+U1NTPidTJz4/Pic+M3A+RSBJSSc+Oj4nPjNwPkU3VD5FIElJJyk7VgkJCWxWVgkJCSQ9LnNuLWldJHY8X3lNcWxqZD5TPmV6emVxKCcyT0g5cz1zT0gnPlNpPiRaek1Bc1JYJHlYJGMsPidNbjJlWk0nPlNpPiRNbjJlWk0pO1YJCQlzQT4oJD0uc24taXY8XzJlMi5zSHg+U1NTPlRnIEspVgkJCV1WCQkJCSQ9LnNuLWldJHY8XzJlMi5NX3lNcWxqZD5TPmV6emVxKCcyT0g5cz1zT0gnPlNpPiRaek1Bc1JYJHlYJGMsPidNbjJlWk0nPlNpPiRNbjJlWk0pO1YJCQkJJD0uc24taXY8XzJlMi5NX01Sc249bmpkPlM+blE8bj16KCR2PF95TXEsPkopO1YJCQlsVlYJCWxWVgkJek09UXpIPiQ9LnNuO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj57dEtnSz4zRVYJPipWCT4qPkNNSE16ZT1Nbj5lPnt0S2dLPkFzTVc5PjNFKCdzPU1ZJyw+J3M9TVknKT5wd0k+dlFNenEsVgk+Kj4KT3NITTk+fXM9Lj4nRkU0Jz5zQT5lWlp6T1p6c2U9TVhWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CSR5TXEJVC5NPkFzTVc5Pj1PPm5NZXoyLlYJPio+QFplemVZCWV6emVxCSRjZVdRTW4JVC5NPmNlV1FNbj5uTWV6Mi5NOT5PSFYJPio+QFplemVZCTxPT1cJJE1uMmVaTVYJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD59Lk16TV9zSCgkeU1xPlM+RSBJSSw+JGNlV1FNbj5TPkUgSUksPiRNbjJlWk0+Uz5FIElJKVYJXVYJCXpNPVF6SD4kPS5zbi1pX30uTXpNX3NIKCR5TXEsPiRjZVdRTW4sPnJGSXBLLD4nRkU0PicsPiRNbjJlWk0pO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj43Zz57dEtnSz4zRVYJPipWCT4qPkNNSE16ZT1Nbj5lPnt0S2dLPkFzTVc5PjNFKCdzPU1ZJyw+J3M9TVknKT5wd0k+dlFNenEsVgk+Kj4KT3NITTk+fXM9Lj4nN2cnPnNBPmVaWnpPWnpzZT1NWFYJPipWCT4qPkBaZXplWQluPXpzSHgJJHlNcQlULk0+QXNNVzk+PU8+bk1lejIuVgk+Kj5AWmV6ZVkJZXp6ZXEJJGNlV1FNbglULk0+Y2VXUU1uPm5NZXoyLk05Pk9IVgk+Kj5AWmV6ZVkJPE9PVwkkTW4yZVpNVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWlE8V3MyPkFRSDI9c09IPk96X30uTXpNX3NIKCR5TXE+Uz5FIElJLD4kY2VXUU1uPlM+RSBJSSw+JE1uMmVaTT5TPkUgSUkpVgldVgkJek09UXpIPiQ9LnNuLWlffS5Nek1fc0goJHlNcSw+JGNlV1FNbiw+ckZJcEssPic3Zz4nLD4kTW4yZVpNKTtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+e3RLZ0s+RTdUPjNFVgk+KlYJPio+Q01ITXplPU1uPmU+e3RLZ0s+QXNNVzk+RTdUPjNFKCdzPU1ZJyw+J3M9TVknKT5wd0k+dlFNenEsVgk+Kj4KT3NITTk+fXM9Lj4nRkU0Jz5zQT5lWlp6T1p6c2U9TVhWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CSR5TXEJVC5NPkFzTVc5Pj1PPm5NZXoyLlYJPio+QFplemVZCWV6emVxCSRjZVdRTW4JVC5NPmNlV1FNbj5uTWV6Mi5NOT5PSFYJPio+QFplemVZCTxPT1cJJE1uMmVaTVYJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD59Lk16TV9ITz1fc0goJHlNcT5TPkUgSUksPiRjZVdRTW4+Uz5FIElJLD4kTW4yZVpNPlM+RSBJSSlWCV1WCQl6TT1Rekg+JD0uc24taV99Lk16TV9zSCgkeU1xLD4kY2VXUU1uLD5UZyBLLD4nRkU0PicsPiRNbjJlWk0pO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj43Zz57dEtnSz5FN1Q+M0VWCT4qVgk+Kj5DTUhNemU9TW4+ZT57dEtnSz5Bc01XOT5FN1Q+M0UoJ3M9TVknLD4ncz1NWScpPnB3ST52UU16cSxWCT4qPgpPc0hNOT59cz0uPic3Zyc+c0E+ZVpaek9aenNlPU1YVgk+KlYJPio+QFplemVZCW49enNIeAkkeU1xCVQuTT5Bc01XOT49Tz5uTWV6Mi5WCT4qPkBaZXplWQllenplcQkkY2VXUU1uCVQuTT5jZVdRTW4+bk1lejIuTTk+T0hWCT4qPkBaZXplWQk8T09XCSRNbjJlWk1WCT4qPkB6TT1RekgJLzNfNG9fdlFNenFfPFFzVzlNelYJPipoVglaUTxXczI+QVFIMj1zT0g+T3pffS5Nek1fSE89X3NIKCR5TXE+Uz5FIElJLD4kY2VXUU1uPlM+RSBJSSw+JE1uMmVaTT5TPkUgSUkpVgldVgkJek09UXpIPiQ9LnNuLWlffS5Nek1fc0goJHlNcSw+JGNlV1FNbiw+VGcgSyw+JzdnPicsPiRNbjJlWk0pO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj4zSD1NekhlVz57dEtnSz4zRVYJPipWCT4qPkBRbk05LTxxCX0uTXpNX3NIKClWCT4qPkBRbk05LTxxCU96X30uTXpNX3NIKClWCT4qPkBRbk05LTxxCX0uTXpNX0hPPV9zSCgpVgk+Kj5AUW5NOS08cQlPel99Lk16TV9ITz1fc0goKVYJPipWCT4qPkBaZXplWQluPXpzSHgJJHlNcQlULk0+QXNNVzk+PU8+bk1lejIuVgk+Kj5AWmV6ZVkJZXp6ZXEJJGNlV1FNbglULk0+Y2VXUU1uPm5NZXoyLk05Pk9IVgk+Kj5AWmV6ZVkJPE9PVwkkSE89CTNBPj0uTT5uPWU9TVlNSD0+fU9RVzk+PE0+M0U+T3o+RTdUPjNFVgk+Kj5AWmV6ZVkJbj16c0h4CSQ9cVpNVgk+Kj5AWmV6ZVkJPE9PVwkkTW4yZVpNVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWnpPPU0yPU05PkFRSDI9c09IPl99Lk16TV9zSCgkeU1xPlM+RSBJSSw+JGNlV1FNbj5TPkUgSUksPiRITz0+Uz5yRklwSyw+JD1xWk0+Uz4nRkU0PicsPiRNbjJlWk0+Uz5FIElJKVYJXVYJCXNBPigkeU1xPlNTUz5FIElJPjdnPiRjZVdRTW4+U1NTPkUgSUkpVgkJXVYJCQl6TT1Rekg+JD0uc247VgkJbFZWCQlzQT4oPiE+c25fZXp6ZXEoJGNlV1FNbikpVgkJXVYJCQkkY2VXUU1uPlM+ZXp6ZXEoJGNlV1FNbik7VgkJbFZWCQlzbl88T09XKCRNbjJlWk0pPjdnPiRNbjJlWk0+Uz4kPS5zbi1pX1p6Tz1NMj1fczlNSD1zQXNNem47VlYJCSRITz0+Uz4oJEhPPSk+Pz4nPkU3VCc+Oj4nJztWVgkJJH0uTXpNX3NIPlM+ZXp6ZXEoKTtWCQlBT3pNZTIuPigkY2VXUU1uPmVuPiRjZVdRTSlWCQldVgkJCSR9Lk16TV9zSGpkPlM+JD0uc24taU1uMmVaTSgkY2VXUU0pO1YJCWxWVgkJJFp6TUFzUj5TPigyT1FIPSgkPS5zbi1pdjxffS5Nek0pPlNTUz5hKT4/PiQ9LnNuLWlfeHpPUVpfeE09Xz1xWk0oJycpPjo+JD0uc24taV94ek9RWl94TT1fPXFaTSgkPXFaTSk7VgkJJH0uTXpNX3NIPlM+ZXp6ZXEoVgkJCScyT0g5cz1zT0gnPlNpPiRaek1Bc1JYJHlNcVgkSE89WCc+M0UoJ1hzWVpXTzlNKCcsPicsPiR9Lk16TV9zSClYJyknLFYJCQknTW4yZVpNJz5TaT4kTW4yZVpNVgkJKTtWVgkJJD0uc24taXY8X30uTXpNamQ+Uz4kfS5Nek1fc0g7VgkJc0E+KCQ9LnNuLWl2PF8yZTIuc0h4PlNTUz5UZyBLKVYJCV1WCQkJJD0uc24taXY8XzJlMi5NX30uTXpNamQ+Uz4kfS5Nek1fc0g7VgkJCSQ9LnNuLWl2PF8yZTIuTV9NUnNuPW5qZD5TPid9Lk16TSc7VgkJbFZWCQl6TT1Rekg+JD0uc247VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPkkzR0tWCT4qVgk+Kj5DTUhNemU9TW4+ZT4lSTNHSyU+Wk96PXNPSD5PQT49Lk0+dlFNenFYVgk+Kj5wTVplemU9TW4+WVFXPXNaV00+MmVXV24+fXM9Lj4nRkU0J1hWCT4qVgk+Kj5AWmV6ZVkJWXNSTTkJJEFzTVc5Vgk+Kj5AWmV6ZVkJbj16c0h4CSRZZT0yLlYJPio+QFplemVZCW49enNIeAkkbnM5TVYJPio+QFplemVZCTxPT1cJJE1uMmVaTVYJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD5Xc3lNKCRBc01XOSw+JFllPTIuPlM+JycsPiRuczlNPlM+JzxPPS4nLD4kTW4yZVpNPlM+RSBJSSlWCV1WCQl6TT1Rekg+JD0uc24taV9Xc3lNKCRBc01XOSw+JFllPTIuLD4nRkU0PicsPiRuczlNLD4nJyw+JE1uMmVaTSk7VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPkU3VD5JM0dLVgk+KlYJPio+Q01ITXplPU1uPmU+RTdUPkkzR0s+Wk96PXNPSD5PQT49Lk0+dlFNenFYVgk+Kj5wTVplemU9TW4+WVFXPXNaV00+MmVXV24+fXM9Lj4nRkU0J1hWCT4qVgk+Kj5AWmV6ZVkJWXNSTTkJJEFzTVc5Vgk+Kj5AWmV6ZVkJbj16c0h4CSRZZT0yLlYJPio+QFplemVZCW49enNIeAkkbnM5TVYJPio+QFplemVZCTxPT1cJJE1uMmVaTVYJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD5ITz1fV3N5TSgkQXNNVzksPiRZZT0yLj5TPicnLD4kbnM5TT5TPic8Tz0uJyw+JE1uMmVaTT5TPkUgSUkpVgldVgkJek09UXpIPiQ9LnNuLWlfV3N5TSgkQXNNVzksPiRZZT0yLiw+J0ZFND4nLD4kbnM5TSw+J0U3VCcsPiRNbjJlWk0pO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj43Zz5JM0dLVgk+KlYJPio+Q01ITXplPU1uPmU+JUkzR0slPlpPej1zT0g+T0E+PS5NPnZRTXpxWFYJPio+cE1aZXplPU1uPllRVz1zWldNPjJlV1duPn1zPS4+JzdnJ1hWCT4qVgk+Kj5AWmV6ZVkJWXNSTTkJJEFzTVc5Vgk+Kj5AWmV6ZVkJbj16c0h4CSRZZT0yLlYJPio+QFplemVZCW49enNIeAkkbnM5TVYJPio+QFplemVZCTxPT1cJJE1uMmVaTVYJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD5Pel9Xc3lNKCRBc01XOSw+JFllPTIuPlM+JycsPiRuczlNPlM+JzxPPS4nLD4kTW4yZVpNPlM+RSBJSSlWCV1WCQl6TT1Rekg+JD0uc24taV9Xc3lNKCRBc01XOSw+JFllPTIuLD4nN2c+Jyw+JG5zOU0sPicnLD4kTW4yZVpNKTtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+N2c+RTdUPkkzR0tWCT4qVgk+Kj5DTUhNemU9TW4+ZT5FN1Q+STNHSz5aT3o9c09IPk9BPj0uTT52UU16cVhWCT4qPnBNWmV6ZT1Nbj5ZUVc9c1pXTT4yZVdXbj59cz0uPic3ZydYVgk+KlYJPio+QFplemVZCVlzUk05CSRBc01XOVYJPio+QFplemVZCW49enNIeAkkWWU9Mi5WCT4qPkBaZXplWQluPXpzSHgJJG5zOU1WCT4qPkBaZXplWQk8T09XCSRNbjJlWk1WCT4qPkB6TT1RekgJLzNfNG9fdlFNenFfPFFzVzlNelYJPipoVglaUTxXczI+QVFIMj1zT0g+T3pfSE89X1dzeU0oJEFzTVc5LD4kWWU9Mi4+Uz4nJyw+JG5zOU0+Uz4nPE89LicsPiRNbjJlWk0+Uz5FIElJKVYJXVYJCXpNPVF6SD4kPS5zbi1pX1dzeU0oJEFzTVc5LD4kWWU9Mi4sPic3Zz4nLD4kbnM5TSw+J0U3VCcsPiRNbjJlWk0pO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj4zSD1NekhlVz5JM0dLVgk+KlYJPio+QFFuTTktPHEJV3N5TSgpVgk+Kj5AUW5NOS08cQlPel9Xc3lNKClWCT4qPkBRbk05LTxxCUhPPV9Xc3lNKClWCT4qPkBRbk05LTxxCU96X0hPPV9Xc3lNKClWCT4qVgk+Kj5AWmV6ZVkJWXNSTTkJJEFzTVc5Vgk+Kj5AWmV6ZVkJbj16c0h4CSRZZT0yLlYJPio+QFplemVZCW49enNIeAkkPXFaTVYJPio+QFplemVZCW49enNIeAkkbnM5TVYJPio+QFplemVZCW49enNIeAkkSE89Vgk+Kj5AWmV6ZVkJPE9PVwkkTW4yZVpNVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWnpPPU0yPU05PkFRSDI9c09IPl9Xc3lNKCRBc01XOSw+JFllPTIuPlM+JycsPiQ9cVpNPlM+J0ZFND4nLD4kbnM5TT5TPic8Tz0uJyw+JEhPPT5TPicnLD4kTW4yZVpNPlM+RSBJSSlWCV1WCQlzQT4oPiE+c25fZXp6ZXEoJEFzTVc5KSlWCQldVgkJCSRBc01XOT5TPmV6emVxKCRBc01XOT5TaT4kWWU9Mi4pO1YJCWxWVgkJc25fPE9PVygkTW4yZVpNKT43Zz4kTW4yZVpNPlM+JD0uc24taV9aek89TTI9X3M5TUg9c0FzTXpuO1ZWCQlBT3pNZTIuPigkQXNNVzk+ZW4+JHk+U2k+JGMpVgkJXVYJCQkkWnpNQXNSPlM+KDJPUUg9KCQ9LnNuLWl2PF99Lk16TSk+U1NTPmE+JiY+Mk9RSD0oJD0uc24taXY8XzJlMi5NX30uTXpNKT5TU1M+YSlWCQkJCT8+JD0uc24taV94ek9RWl94TT1fPXFaTSgnJyk+Oj4kPS5zbi1pX3h6T1FaX3hNPV89cVpNKCQ9cVpNKTtWVgkJCSRjPlM+JD0uc24taU1uMmVaTV9Xc3lNX249eigkYyk7VlYJCQlzQT4oJG5zOU0+U1NTPidIT0hNJylWCQkJXVYJCQkJJFdzeU1fbj1lPU1ZTUg9PlM+Il0kWnpNQXNSbD5dJHlsPl0kSE89bD5JM0dLPiddJGNsJyI7VgkJCWxWCQkJTVduTXNBPigkbnM5TT5TU1M+JzxNQU96TScpVgkJCV1WCQkJCSRXc3lNX249ZT1NWU1IPT5TPiJdJFp6TUFzUmw+XSR5bD5dJEhPPWw+STNHSz4nJV0kY2wnIjtWCQkJbFYJCQlNV25Nc0E+KCRuczlNPlNTUz4nZUE9TXonKVYJCQldVgkJCQkkV3N5TV9uPWU9TVlNSD0+Uz4iXSRaek1Bc1JsPl0keWw+XSRITz1sPkkzR0s+J10kY2wlJyI7VgkJCWxWCQkJTVduTVYJCQldVgkJCQkkV3N5TV9uPWU9TVlNSD0+Uz4iXSRaek1Bc1JsPl0keWw+XSRITz1sPkkzR0s+JyVdJGNsJSciO1YJCQlsVlYJCQloaD5uT1lNPlpXZT1BT3pZbj56TXZRc3pNPmVIPk1uMmVaTT5uTXZRTUgyTT45TUFzSHM9c09IPkFPej5JM0dLPn1zVzkyZXo5blYJCQlzQT4oJD0uc24taV9Xc3lNX01uMmVaTV9uPXo+IVNTPicnKVYJCQldVgkJCQkkV3N5TV9uPWU9TVlNSD0+WFM+blp6c0g9QSgkPS5zbi1pX1dzeU1fTW4yZVpNX249eiw+JD0uc24taV9Xc3lNX01uMmVaTV8yLnopO1YJCQlsVlYJCQkkPS5zbi1pdjxffS5Nek1qZD5TPmV6emVxKCcyT0g5cz1zT0gnPlNpPiRXc3lNX249ZT1NWU1IPSw+J01uMmVaTSc+U2k+JE1uMmVaTSk7VgkJCXNBPigkPS5zbi1pdjxfMmUyLnNIeD5TU1M+VGcgSylWCQkJXVYJCQkJJD0uc24taXY8XzJlMi5NX30uTXpNamQ+Uz5lenplcSgnMk9IOXM9c09IJz5TaT4kV3N5TV9uPWU9TVlNSD0sPidNbjJlWk0nPlNpPiRNbjJlWk0pO1YJCQkJJD0uc24taXY8XzJlMi5NX01Sc249bmpkPlM+J30uTXpNJztWCQkJbFYJCWxWVgkJek09UXpIPiQ9LnNuO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj5wPWV6PW4+ZT52UU16cT54ek9RWlhWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CSRITz0JKDNIPU16SGVXPlFuTT5PSFdxKVYJPio+QFplemVZCW49enNIeAkkPXFaTQkoM0g9TXpIZVc+UW5NPk9IV3EpVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWlE8V3MyPkFRSDI9c09IPnh6T1FaX249ZXo9KCRITz0+Uz4nJyw+JD1xWk0+Uz4nRkU0PicpVgldVgkJJD1xWk0+Uz4kPS5zbi1pX3h6T1FaX3hNPV89cVpNKCQ9cVpNKTtWVgkJJD0uc24taXY8X30uTXpNX3h6T1FaX249ZXo9TTk+Uz5UZyBLO1YJCSRaek1Bc1I+Uz4oMk9RSD0oJD0uc24taXY8X30uTXpNKT5TU1M+YT4mJj4yT1FIPSgkPS5zbi1pdjxfMmUyLk1ffS5Nek0pPlNTUz5hKT4/PicnPjo+JD1xWk07VgkJJH0uTXpNPlM+ZXp6ZXEoVgkJCScyT0g5cz1zT0gnPlNpPiRaek1Bc1JYJEhPPVhuPXpfek1aTWU9KCc+Jyw+KyskPS5zbi1pdjxffS5Nek1feHpPUVpfMk9RSD0pWCc+KCcsVgkJCSdNbjJlWk0nPlNpPnJGSXBLVgkJKTtWVgkJJD0uc24taXY8X30uTXpNamQ+Uz4kfS5Nek07VgkJc0E+KCQ9LnNuLWl2PF8yZTIuc0h4KVYJCV1WCQkJJD0uc24taXY8XzJlMi5NX30uTXpNamQ+Uz4kfS5Nek07VgkJbFZWCQl6TT1Rekg+JD0uc247VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPnA9ZXo9bj5lPnZRTXpxPnh6T1FaLD48UT0+N2duPj0uTT54ek9RWlYJPipWCT4qPkB6TT1RekgJLzNfNG9fdlFNenFfPFFzVzlNelYJPipoVglaUTxXczI+QVFIMj1zT0g+T3pfeHpPUVpfbj1lej0oKVYJXVYJCXpNPVF6SD4kPS5zbi1peHpPUVpfbj1lej0oJycsPic3Zz4nKTtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+cD1lej1uPmU+dlFNenE+eHpPUVosPjxRPT5FN1RuPj0uTT54ek9RWlYJPipWCT4qPkB6TT1RekgJLzNfNG9fdlFNenFfPFFzVzlNelYJPipoVglaUTxXczI+QVFIMj1zT0g+SE89X3h6T1FaX249ZXo9KClWCV1WCQl6TT1Rekg+JD0uc24taXh6T1FaX249ZXo9KCdFN1Q+Jyw+J0ZFND4nKTtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+cD1lej1uPmU+dlFNenE+eHpPUVosPjxRPT43Zz5FN1RuPj0uTT54ek9RWlYJPipWCT4qPkB6TT1RekgJLzNfNG9fdlFNenFfPFFzVzlNelYJPipoVglaUTxXczI+QVFIMj1zT0g+T3pfSE89X3h6T1FaX249ZXo9KClWCV1WCQl6TT1Rekg+JD0uc24taXh6T1FaX249ZXo9KCdFN1Q+Jyw+JzdnPicpO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj5LSDluPmU+dlFNenE+eHpPUVpWCT4qVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWlE8V3MyPkFRSDI9c09IPnh6T1FaX01IOSgpVgldVgkJJD0uc24taXY8X30uTXpNX3h6T1FaX249ZXo9TTk+Uz5yRklwSztWCQkkfS5Nek0+Uz5lenplcShWCQkJJzJPSDlzPXNPSCc+U2k+bj16X3pNWk1lPSgnPicsPiQ9LnNuLWl2PF99Lk16TV94ek9RWl8yT1FIPS0tKVgnKScsVgkJCSdNbjJlWk0nPlNpPnJGSXBLVgkJKTtWVgkJJD0uc24taXY8X30uTXpNamQ+Uz4kfS5Nek07VgkJc0E+KCQ9LnNuLWl2PF8yZTIuc0h4KVYJCV1WCQkJJD0uc24taXY8XzJlMi5NX30uTXpNamQ+Uz4kfS5Nek07VgkJbFZWCQl6TT1Rekg+JD0uc247VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPkN6T1FaX3hNPV89cVpNVgk+KlYJPio+QFFuTTktPHEJeHpPUVpfbj1lej0oKVYJPio+QFFuTTktPHEJX1dzeU0oKVYJPio+QFFuTTktPHEJX30uKClWCT4qPkBRbk05LTxxCV99Lk16TV9zSCgpVgk+KlYJPio+QFplemVZCW49enNIeAkkPXFaTVYJPio+QHpNPVF6SAluPXpzSHhWCT4qaFYJWnpPPU0yPU05PkFRSDI9c09IPl94ek9RWl94TT1fPXFaTSgkPXFaTSlWCV1WCQlzQT4oJD0uc24taXY8X30uTXpNX3h6T1FaX249ZXo9TTkpVgkJXVYJCQkkPXFaTT5TPicnO1YJCQkkPS5zbi1pdjxffS5Nek1feHpPUVpfbj1lej1NOT5TPnJGSXBLO1YJCWxWVgkJek09UXpIPiQ9cVpNO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj5DZzcgbT5vYlYJPipWCT4qPkBaZXplWQluPXpzSHgJJDxxVgk+Kj5AWmV6ZVkJPE9PVwkkTW4yZVpNVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWlE8V3MyPkFRSDI9c09IPnh6T1FaXzxxKCQ8cSw+JE1uMmVaTT5TPkUgSUkpVgldVgkJc25fPE9PVygkTW4yZVpNKT43Zz4kTW4yZVpNPlM+JD0uc24taV9aek89TTI9X3M5TUg9c0FzTXpuO1ZWCQlzQT4oc25fbj16c0h4KCQ8cSkpVgkJXVYJCQkkPHE+Uz4oJE1uMmVaTT5TU1M+VGcgSylWCQkJCT8+TVJaV085TSgnLCcsPiQ8cSlWCQkJCTo+ZXp6ZXEoJDxxKTtWCQlsVlYJCUFPek1lMi4+KCQ8cT5lbj4kY2VXKVYJCV1WCQkJJGNlVz5TPj16c1koJGNlVyk7VlYJCQlzQT4oJGNlVz4hU1M+JycpVgkJCV1WCQkJCSRjZVc+Uz5lenplcSgnQXNNVzknPlNpPiRjZVcsPidNbjJlWk0nPlNpPiRNbjJlWk0pO1ZWCQkJCSQ9LnNuLWl2PF94ek9RWjxxamQ+Uz4kY2VXO1YJCQkJc0E+KCQ9LnNuLWl2PF8yZTIuc0h4PlNTUz5UZyBLKVYJCQkJXVYJCQkJCSQ9LnNuLWl2PF8yZTIuTV94ek9RWjxxamQ+Uz4kY2VXO1YJCQkJCSQ9LnNuLWl2PF8yZTIuTV9NUnNuPW5qZD5TPid4ek9RWjxxJztWCQkJCWxWCQkJbFYJCWxWVgkJek09UXpIPiQ9LnNuO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj50RjYzRUNWCT4qVgk+Kj5wTVplemU9TW4+WVFXPXNaV00+MmVXV24+fXM9Lj4nRkU0J1hWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CSR5TXFWCT4qPkBaZXplWQluPXpzSHgJJGNlV1FNVgk+Kj5AWmV6ZVkJPE9PVwkkTW4yZVpNVgk+Kj5Aek09UXpICU88Ck0yPVYJPipoVglaUTxXczI+QVFIMj1zT0g+LmVjc0h4KCR5TXEsPiRjZVdRTT5TPkUgSUksPiRNbjJlWk0+Uz5FIElJKVYJXVYJCXpNPVF6SD4kPS5zbi1pX30uKCd2PF8uZWNzSHgnLD4keU1xLD4kY2VXUU0sPidGRTQ+Jyw+JE1uMmVaTSk7VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPjdnPnRGNjNFQ1YJPipWCT4qPnBNWmV6ZT1Nbj5ZUVc9c1pXTT4yZVdXbj59cz0uPic3ZydYVgk+KlYJPio+QFplemVZCW49enNIeAkkeU1xVgk+Kj5AWmV6ZVkJbj16c0h4CSRjZVdRTVYJPio+QFplemVZCTxPT1cJJE1uMmVaTVYJPio+QHpNPVF6SAlPPApNMj1WCT4qaFYJWlE8V3MyPkFRSDI9c09IPk96Xy5lY3NIeCgkeU1xLD4kY2VXUU0+Uz5FIElJLD4kTW4yZVpNPlM+RSBJSSlWCV1WCQl6TT1Rekg+JD0uc24taV99LigndjxfLmVjc0h4Jyw+JHlNcSw+JGNlV1FNLD4nN2c+Jyw+JE1uMmVaTSk7VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPjdnNEtnPm9iVgk+KlYJPio+QFplemVZCW49enNIeAkkT3o5TXo8cVYJPio+QFplemVZCW49enNIeAkkOXN6TTI9c09ICUZwLyw+NEtwLz5Pej5nRkU0N3VWCT4qPkBaZXplWQk8T09XCSRNbjJlWk1WCT4qPkB6TT1RekgJLzNfNG9fdlFNenFfPFFzVzlNelYJPipoVglaUTxXczI+QVFIMj1zT0g+T3o5TXpfPHEoJE96OU16PHEsPiQ5c3pNMj1zT0g+Uz4nJyw+JE1uMmVaTT5TPkUgSUkpVgldVgkJJDlzek0yPXNPSD5TPm49ej1PUVpaTXooPXpzWSgkOXN6TTI9c09IKSk7VlYJCXNBPigkOXN6TTI9c09IPlNTUz4nZ0ZFNDd1JylWCQldVgkJCSQ5c3pNMj1zT0g+Uz4nJztWVgkJCWhoPjRPPn1NPi5lY00+ZT5uTU05PmNlV1FNP1YJCQkkT3o5TXo8cT5TPjI9cVpNXzlzeHM9KChuPXpzSHgpPiRPejlNejxxKVYJCQkJPz5uWnpzSD1BKCQ9LnNuLWlfemVIOU9ZX3lNcX1PejlqMGQsPiRPejlNejxxKVYJCQkJOj4kPS5zbi1pX3plSDlPWV95TXF9T3o5amFkO1YJCWxWCQlNV25Nc0E+KE1ZWj1xKCRPejlNejxxKSlWCQldVgkJCXpNPVF6SD4kPS5zbjtWCQlsVgkJTVduTXNBPigkOXN6TTI9c09IPiFTUz4nJylWCQldVgkJCSQ5c3pNMj1zT0g+Uz5zSF9lenplcSgkOXN6TTI9c09ILD5lenplcSgnRnAvJyw+JzRLcC8nKSw+VGcgSyk+Pz4nPidYJDlzek0yPXNPSD46PicnO1YJCWxWVgkJc25fPE9PVygkTW4yZVpNKT43Zz4kTW4yZVpNPlM+JD0uc24taV9aek89TTI9X3M5TUg9c0FzTXpuO1ZWCQlzQT4oJE1uMmVaTT5TU1M+ckZJcEspVgkJXVYJCQkkdjxfT3o5TXo8cWpkPlM+ZXp6ZXEoJ0FzTVc5Jz5TaT4kT3o5TXo8cSw+Jzlzek0yPXNPSCc+U2k+JDlzek0yPXNPSCw+J01uMmVaTSc+U2k+ckZJcEspO1YJCWxWCQlNV25NVgkJXVYJCQkkdjxfT3o5TXo8cT5TPmV6emVxKCk7VgkJCUFPek1lMi4+KE1SWldPOU0oJywnLD4kT3o5TXo8cSk+ZW4+JEFzTVc5KVYJCQldVgkJCQkkdjxfT3o5TXo8cWpkPlM+KCQ5c3pNMj1zT0g+U1NTPicnPiYmPlp6TXhfWWU9Mi4oJ2hcbisoRnAvfDRLcC8pJGhzJyw+ej16c1koJEFzTVc5KSw+JFllPTIuLD5tZ0tDXzdycnBLVF8vRm1UIGdLKSlWCQkJCQk/PmV6emVxKCdBc01XOSc+U2k+Vz16c1koblE8bj16KCRBc01XOSw+YSw+JFllPTIuamFkajBkKSksPic5c3pNMj1zT0gnPlNpPic+J1gkWWU9Mi5qMGRqYWQsPidNbjJlWk0nPlNpPlRnIEspVgkJCQkJOj5lenplcSgnQXNNVzknPlNpPj16c1koJEFzTVc5KSw+Jzlzek0yPXNPSCc+U2k+JDlzek0yPXNPSCw+J01uMmVaTSc+U2k+VGcgSyk7VgkJCWxWCQlsVlYJCSQ9LnNuLWl2PF9PejlNejxxPlM+ZXp6ZXFfWU16eE0oJD0uc24taXY8X096OU16PHEsPiR2PF9PejlNejxxKTtWCQlzQT4oJD0uc24taXY8XzJlMi5zSHg+U1NTPlRnIEspVgkJXVYJCQkkPS5zbi1pdjxfMmUyLk1fT3o5TXo8cT5TPmV6emVxX1lNenhNKCQ9LnNuLWl2PF8yZTIuTV9PejlNejxxLD4kdjxfT3o5TXo8cSk7VgkJCSQ9LnNuLWl2PF8yZTIuTV9NUnNuPW5qZD5TPidPejlNejxxJztWCQlsVlYJCXpNPVF6SD4kPS5zbjtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+STN1M1RWCT4qVgk+Kj5AWmV6ZVkJc0g9CSRjZVdRTQlJM3UzVD5jZVdRTVYJPio+QFplemVZCXNIPQkkT0FBbk09CTdycnBLVD5jZVdRTVYJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD5Xc1lzPSgkY2VXUU0sPiRPQUFuTT0+Uz5hKVYJXVYJCXNuX0hRV1coJGNlV1FNKT43Zz4kPS5zbi1pdjxfV3NZcz0+Uz4oc0g9KT4kY2VXUU07VgkJTVlaPXEoJE9BQW5NPSk+N2c+JD0uc24taXY8X09BQW5NPT5TPihzSD0pPiRPQUFuTT07VlYJCXpNPVF6SD4kPS5zbjtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+cE09bj49Lk0+N3JycEtUPmNlV1FNVgk+KlYJPio+QFplemVZCXNIPQkkT0FBbk09CTdycnBLVD5jZVdRTVYJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD5PQUFuTT0oJE9BQW5NPSlWCV1WCQlNWVo9cSgkT0FBbk09KT43Zz4kPS5zbi1pdjxfT0FBbk09PlM+KHNIPSk+JE9BQW5NPTtWCQl6TT1Rekg+JD0uc247VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPkkzdTNUPm49enNIeFYJPipWCT4qPkNNSE16ZT1Nbj5lPlpXZT1BT3pZLW5aTTJzQXMyPkkzdTNUPjJXZVFuTVhWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CSRudlcJcHdJPndRTXpxVgk+Kj5Aek09UXpICW49enNIeFYJPipoVglaek89TTI9TTk+QVFIMj1zT0g+X1dzWXM9KCRudlcpVgldVgkJek09UXpIPiRudldYJz5JM3UzVD4nWCgkPS5zbi1pdjxfT0FBbk09Pj8+JD0uc24taXY8X09BQW5NPVgnLD4nPjo+JycpWCQ9LnNuLWl2PF9Xc1lzPTtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+VC5NPiJuTT0iPkFRSDI9c09IWFYJPipWCT4qPkZXV099bj55TXFoY2VXUU0+WmVzem4+PU8+PE0+bk09PkFPej5zSG5Nej1zSHg+T3o+UVo5ZT1zSHhWCT4qVgk+Kj5AWmV6ZVkJWXNSTTlWCT4qPkBaZXplWQluPXpzSHhWCT4qPkBaZXplWQk8T09XVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWlE8V3MyPkFRSDI9c09IPm5NPSgkeU1xLD4kY2VXUU0+Uz4nJyw+JE1uMmVaTT5TPkUgSUkpVgldVgkJJHlNcT5TPiQ9LnNuLWlfTzwKTTI9Xz1PX2V6emVxKCR5TXEpO1ZWCQlzQT4oPiE+c25fZXp6ZXEoJHlNcSkpVgkJXVYJCQkkeU1xPlM+ZXp6ZXEoJHlNcT5TaT4kY2VXUU0pO1YJCWxWVgkJc25fPE9PVygkTW4yZVpNKT43Zz4kTW4yZVpNPlM+JD0uc24taV9aek89TTI9X3M5TUg9c0FzTXpuO1ZWCQlBT3pNZTIuPigkeU1xPmVuPiR5PlNpPiRjKVYJCV1WCQkJJD0uc24taXY8X25NPWokPS5zbi1pWnpPPU0yPV9zOU1IPXNBc016bigkeSw+ckZJcEssPiRNbjJlWk0pZD5TPigkTW4yZVpNKVYJCQkJPz4kPS5zbi1pTW4yZVpNKCRjKT46PiRjO1YJCWxWVgkJek09UXpIPiQ9LnNuO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj5DTT0+cEtJSy9UPnZRTXpxPm49enNIeFYJPipWCT4qPi9PWVpzV01uPmU+cEtJSy9UPnZRTXpxPm49enNIeD5lSDk+ek09UXpIbj49Lk0+bnZXWFYJPipWCT4qPkBaZXplWQluPXpzSHgJPS5NPj1lPFdNPkhlWU0+PU8+bk1XTTI9PkF6T1k+KE9aPXNPSGVXKVYJPio+QFplemVZCTxPT1cJVGcgSzo+ek1uTT1uPndvPmNlV1FNbjs+ckZJcEs6PldNZWNNPndvPmNlUVdNbj5lV09ITVYJPio+QHpNPVF6SAluPXpzSHhWCT4qaFYJWlE8V3MyPkFRSDI9c09IPnhNPV8yT1lac1dNOV9uTVdNMj0oJD1lPFdNPlM+JycsPiR6TW5NPT5TPlRnIEspVgldVgkJc0E+KCQ9ZTxXTT4hU1M+JycpVgkJXVYJCQkkPS5zbi1pXz16ZTJ5X2VXc2VuTW4oJD1lPFdNKTtWCQkJJD0uc24taUF6T1koJD1lPFdNKTtWCQlsVlYJCSRuTVdNMj0+Uz4kPS5zbi1pXzJPWVpzV01fbk1XTTI9KCk7VlYJCXNBPigkek1uTT0+U1NTPlRnIEspVgkJXVYJCQkkPS5zbi1pX3pNbk09X25NV00yPSgpO1YJCWxWVgkJek09UXpIPiRuTVdNMj07VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPkNNPVYJPipWCT4qPi9PWVpzV01uPj0uTT5uTVdNMj0+bj1lPU1ZTUg9Pjxlbk05Pk9IPj0uTT5PPS5Nej5BUUgyPXNPSG4+MmVXV005Vgk+Kj5lSDk+elFIbj49Lk0+dlFNenFWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CT0uTT49ZTxXTVYJPio+QFplemVZCW49enNIeAk9Lk0+V3NZcz0+MldlUW5NVgk+Kj5AWmV6ZVkJbj16c0h4CT0uTT5PQUFuTT0+MldlUW5NVgk+Kj5Aek09UXpICU88Ck0yPVYJPipoVglaUTxXczI+QVFIMj1zT0g+eE09KCQ9ZTxXTT5TPicnLD4kV3NZcz0+Uz5FIElJLD4kT0FBbk09PlM+RSBJSSlWCV1WCQlzQT4oJD1lPFdNPiFTUz4nJylWCQldVgkJCSQ9LnNuLWlfPXplMnlfZVdzZW5NbigkPWU8V00pO1YJCQkkPS5zbi1pQXpPWSgkPWU8V00pO1YJCWxWVgkJc0E+KD4hPk1ZWj1xKCRXc1lzPSkpVgkJXVYJCQkkPS5zbi1pV3NZcz0oJFdzWXM9LD4kT0FBbk09KTtWCQlsVlYJCSR6TW5RVz0+Uz4kPS5zbi1pdlFNenEoJD0uc24taV8yT1lac1dNX25NV00yPSgpKTtWCQkkPS5zbi1pX3pNbk09X25NV00yPSgpO1YJCXpNPVF6SD4kek1uUVc9O1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj4iL09RSD0+RldXPmdNblFXPW4iPnZRTXpxVgk+KlYJPio+Q01ITXplPU1uPmU+WldlPUFPelktblpNMnNBczI+dlFNenE+bj16c0h4Pj0uZT0+Mk9RSD1uPmVXVz56TTJPejluVgk+Kj56TT1RekhNOT48cT5lSD53UU16cT5vUXNXOU16PnZRTXpxWFYJPipWCT4qPkBaZXplWQluPXpzSHhWCT4qPkBaZXplWQk8T09XCT0uTT56TW5NPT4yV2VRbk1WCT4qPkB6TT1RekgJc0g9Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD4yT1FIPV9lV1dfek1uUVc9bigkPWU8V00+Uz4nJyw+JHpNbk09PlM+VGcgSylWCV1WCQlzQT4oJD1lPFdNPiFTUz4nJylWCQldVgkJCSQ9LnNuLWlfPXplMnlfZVdzZW5NbigkPWU8V00pO1YJCQkkPS5zbi1pQXpPWSgkPWU8V00pO1YJCWxWVgkJJHpNblFXPT5TPigkPS5zbi1pdjxfOXNuPXNIMj0+U1NTPlRnIEspVgkJCT8+JD0uc24taXZRTXpxKCQ9LnNuLWlfMk9RSD1fbj16c0h4WCQ9LnNuLWlaek89TTI9X3M5TUg9c0FzTXpuKCdIUVl6T31uJylYIlxIcmc3dT4oXEgiWCQ9LnNuLWlfMk9ZWnNXTV9uTVdNMj0oKVgiXEgpPi8zXzJPUUg9X2VXV196TW5RVz1uIilWCQkJOj4kPS5zbi1pdlFNenEoJD0uc24taV8yT1lac1dNX25NV00yPSgkPS5zbi1pXzJPUUg9X249enNIeFgkPS5zbi1pWnpPPU0yPV9zOU1IPXNBc016bignSFFZek99bicpKSk7VlYJCXNBPigkek1uTT0+U1NTPlRnIEspVgkJXVYJCQkkPS5zbi1pX3pNbk09X25NV00yPSgpO1YJCWxWVgkJc0E+KCR6TW5RVz0taUhRWV96T31uKCk+U1NTPmEpVgkJXVYJCQl6TT1Rekg+YTtWCQlsVlYJCSR6T30+Uz4kek1uUVc9LWl6T30oKTtWCQl6TT1Rekg+KHNIPSk+JHpPfS1pSFFZek99bjtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+Q009X3suTXpNVgk+KlYJPio+RldXT31uPj0uTT59Lk16TT4yV2VRbk0sPldzWXM9PmVIOT5PQUFuTT0+PU8+PE0+ZTk5TTk+OXN6TTI9V3FWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CSQ9ZTxXTVYJPio+QFplemVZCW49enNIeAkkfS5Nek1WCT4qPkBaZXplWQlzSD0JJFdzWXM9Vgk+Kj5AWmV6ZVkJc0g9CSRPQUFuTT1WCT4qPkB6TT1RekgJTzwKTTI9Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD54TT1ffS5Nek0oJD1lPFdNPlM+JycsPiR9Lk16TT5TPkUgSUksPiRXc1lzPT5TPkUgSUksPiRPQUFuTT0+Uz5FIElJKVYJXVYJCXNBPigkPWU8V00+IVNTPicnKVYJCV1WCQkJJD0uc24taUF6T1koJD1lPFdNKTtWCQlsVlYJCXNBPigkfS5Nek0+IVNTPkUgSUkpVgkJXVYJCQkkPS5zbi1pfS5Nek0oJH0uTXpNKTtWCQlsVlYJCXNBPig+IT5NWVo9cSgkV3NZcz0pKVYJCV1WCQkJJD0uc24taVdzWXM9KCRXc1lzPSw+JE9BQW5NPSk7VgkJbFZWCQkkek1uUVc9PlM+JD0uc24taXZRTXpxKCQ9LnNuLWlfMk9ZWnNXTV9uTVdNMj0oKSk7VgkJJD0uc24taV96TW5NPV9uTVdNMj0oKTtWCQl6TT1Rekg+JHpNblFXPTtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+M0huTXo9X29lPTIuVgk+KlYJPio+L09ZWnNXTW4+PGU9Mi4+c0huTXo9Pm49enNIeG4+ZUg5PnpRSG4+PS5NPnZRTXpzTW5WCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CSQ9ZTxXTQlUZTxXTT49Tz5zSG5Nej0+c0g9T1YJPio+QFplemVZCWV6emVxCSRuTT0+CUZIPmVubk8yc2U9c2NNPmV6emVxPk9BPnNIbk16PT5jZVdRTW5WCT4qPkBaZXplWQk8T09XCSRNbjJlWk0Jey5NPS5Nej49Tz5NbjJlWk0+Y2VXUU1uPmVIOT5zOU1IPXNBc016blYJPio+QHpNPVF6SAlzSD0JRVFZPE16Pk9BPnpPfW4+c0huTXo9TTk+T3o+ckZJcEs+T0g+QWVzV1F6TVYJPipoVglaUTxXczI+QVFIMj1zT0g+c0huTXo9XzxlPTIuKCQ9ZTxXTT5TPicnLD4kbk09PlM+RSBJSSw+JE1uMmVaTT5TPkUgSUkpVgldVgkJc0E+KCRuTT0+IVNTPkUgSUkpVgkJXVYJCQkkPS5zbi1pbk09X3NIbk16PV88ZT0yLigkbk09LD4nJyw+JE1uMmVaTSk7VgkJbFZWCQlzQT4oMk9RSD0oJD0uc24taXY8X25NPSk+U1NTPmEpVgkJXVYJCQloaD5FTz5jZVdzOT45ZT1lPmV6emVxWD5yT1c5bj5zSD4yZW5Nbj59Lk16TT55TXFuPmVIOT5jZVdRTW4+OXM5PkhPPT5ZZT0yLj5RWlYJCQl6TT1Rekg+KCQ9LnNuLWk5PF85TTxReCk+Pz4kPS5zbi1pOXNuWldlcV9NenpPeignOTxfWVFuPV9Rbk1fbk09Jyk+Oj5yRklwSztWCQlsVlYJCXNBPigkPWU8V00+U1NTPicnKVYJCV1WCQkJc0E+KD4hPnNubk09KCQ9LnNuLWl2PF9Bek9ZamFkKSlWCQkJXVYJCQkJek09UXpIPigkPS5zbi1pOTxfOU08UXgpPj8+JD0uc24taTlzblpXZXFfTXp6T3ooJzk8X1lRbj1fbk09Xz1lPFdNJyk+Oj5yRklwSztWCQkJbFZWCQkJJD1lPFdNPlM+JD0uc24taXY8X0F6T1lqYWQ7VgkJbFZWCQloaD5vZT0yLj49LnNuPjxlPHFWCQkkZUFBTTI9TTlfek99bj5TPmE7VgkJQU96Pigkcz5TPmEsPiQ9Tz1lVz5TPjJPUUg9KCQ9LnNuLWl2PF9uTT0pOz4kcz5CPiQ9Tz1lVzs+JHM+K1M+MGFhKVYJCV1WCQkJJD0uc24taXZRTXpxKCQ9LnNuLWlfc0huTXo9XzxlPTIuKCQ9LnNuLWlaek89TTI9X3M5TUg9c0FzTXpuKCQ9ZTxXTSw+VGcgSyw+JE1uMmVaTSw+ckZJcEspLD4kPS5zbi1pdjxfeU1xbiw+ZXp6ZXFfbldzMk0oJD0uc24taXY8X25NPSw+JHMsPjBhYSkpKTtWCQkJJGVBQU0yPU05X3pPfW4+K1M+JD0uc24taWVBQU0yPU05X3pPfW4oKTtWCQlsVlYJCSQ9LnNuLWlfek1uTT1ffXpzPU0oKTtWCQl6TT1Rekg+JGVBQU0yPU05X3pPfW47VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPjNIbk16PT48ZT0yLj5uPWU9TVlNSD1WCT4qVgk+Kj5DTUhNemU9TW4+ZT5aV2U9QU96WS1uWk0yc0FzMj5zSG5Nej0+bj16c0h4PkF6T1k+PS5NPm5RWlpXc005PjllPWVYVgk+KlYJPio+QFplemVZCW49enNIeAkkPWU8V00JVGU8V00+SGVZTVYJPio+QFplemVZCWV6emVxCSR5TXFuCTNFcEtnVD55TXFuVgk+Kj5AWmV6ZVkJZXp6ZXEJJGNlV1FNbgkzRXBLZ1Q+Y2VXUU1uVgk+Kj5Aek09UXpICW49enNIeFYJPipoVglaek89TTI9TTk+QVFIMj1zT0g+X3NIbk16PV88ZT0yLigkPWU8V00sPiR5TXFuLD4kY2VXUU1uKVYJXVYJCXpNPVF6SD4nM0VwS2dUPjNFVDc+J1gkPWU8V01YJz4oJ1hzWVpXTzlNKCcsPicsPiR5TXFuKVgnKT42RkkgS3A+J1hzWVpXTzlNKCcsPicsPiRjZVdRTW4pO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj5ULk0+Im5NPV9zSG5Nej1fPGU9Mi4iPkFRSDI9c09IWD4+RldXT31uPnlNcWhjZVdRTT5aZXN6bj49Tz48TT5uTT0+QU96PjxlPTIuPnNIbk16PW5WCT4qVgk+Kj5AWmV6ZVkJWXNSTTlWCT4qPkBaZXplWQluPXpzSHhWCT4qPkBaZXplWQk8T09XVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWlE8V3MyPkFRSDI9c09IPm5NPV9zSG5Nej1fPGU9Mi4oJHlNcSw+JGNlV1FNPlM+JycsPiRNbjJlWk0+Uz5FIElJKVYJXVYJCSR5TXE+Uz4kPS5zbi1pX088Ck0yPV89T19lenplcV88ZT0yLigkeU1xKTtWVgkJc0E+KD4hPnNuX2V6emVxKCR5TXEpKVYJCV1WCQkJJHlNcT5TPmV6emVxKCR5TXE+U2k+JGNlV1FNKTtWCQlsVlYJCXNuXzxPT1coJE1uMmVaTSk+N2c+JE1uMmVaTT5TPiQ9LnNuLWlfWnpPPU0yPV9zOU1IPXNBc016bjtWVgkJJHlNcW4+Uz5lenplcV95TXFuKCQ9LnNuLWlfTzwKTTI9Xz1PX2V6emVxKDJRenpNSD0oJHlNcSkpKTtWCQluT3o9KCR5TXFuKTtWVgkJQU96TWUyLj4oJHlNcT5lbj4kek99KVYJCV1WCQkJJHpPfT5TPiQ9LnNuLWlfTzwKTTI9Xz1PX2V6emVxKCR6T30pO1YJCQlzQT4oMk9RSD0oZXp6ZXFfOXNBQSgkeU1xbiw+ZXp6ZXFfeU1xbigkek99KSkpPmk+YT43Zz4yT1FIPShlenplcV85c0FBKGV6emVxX3lNcW4oJHpPfSksPiR5TXFuKSk+aT5hKVYJCQldVgkJCQloaD48ZT0yLj5BUUgyPXNPSD5lPE9jTT56TT1RekhuPmVIPk16ek96Pk9IPmVIPk1ZWj1xPmV6emVxVgkJCQkkPS5zbi1pdjxfbk09amQ+Uz5lenplcSgpO1YJCQkJek09UXpIO1YJCQlsVlYJCQl5bk96PSgkek99KTs+aGg+WlE9bj4kek99PnNIPj0uTT5uZVlNPk96OU16PmVuPk9Rej55TXFuVlYJCQlzQT4oJE1uMmVaTT4hU1M+ckZJcEspVgkJCV1WCQkJCSQyV01lSD5TPmV6emVxKCk7VgkJCQlBT3pNZTIuPigkek99PmVuPiRjZVdRTSlWCQkJCV1WCQkJCQkkMldNZUhqZD5TPiQ9LnNuLWlNbjJlWk0oJGNlV1FNKTtWCQkJCWxWVgkJCQkkek99PlM+JDJXTWVIO1YJCQlsVlYJCQkkPS5zbi1pdjxfbk09amQ+Uz4nKCdYc1laV085TSgnLCcsPiR6T30pWCcpJztWCQlsVlYJCUFPek1lMi4+KCR5TXFuPmVuPiR5KVYJCV1WCQkJJD0uc24taXY8X3lNcW5qZD5TPiQ9LnNuLWlaek89TTI9X3M5TUg9c0FzTXpuKCR5LD5yRklwSyw+JE1uMmVaTSk7VgkJbFZWCQl6TT1Rekg+JD0uc247VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPkNNPT4zRXBLZ1Q+dlFNenE+bj16c0h4Vgk+KlYJPio+L09ZWnNXTW4+ZUg+c0huTXo9PnZRTXpxPmVIOT56TT1RekhuPj0uTT5udldWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CT0uTT49ZTxXTT49Tz5zSG5Nej0+c0g9T1YJPio+QFplemVZCTxPT1cJVGcgSzo+ek1uTT0+d28+Y2VXUU1uOz5yRklwSzo+V01lY00+d28+Y2VXUU1uPmVXT0hNVgk+Kj5Aek09UXpICW49enNIeFYJPipoVglaUTxXczI+QVFIMj1zT0g+eE09XzJPWVpzV005X3NIbk16PSgkPWU8V00+Uz4nJyw+JHpNbk09PlM+VGcgSylWCV1WCQlzQT4oJD0uc24taV9jZVdzOWU9TV9zSG5Nej0oJD1lPFdNKT5TU1M+ckZJcEspVgkJXVYJCQl6TT1Rekg+ckZJcEs7VgkJbFZWCQkkbnZXPlM+JD0uc24taV9zSG5Nej0oVgkJCSQ9LnNuLWlaek89TTI9X3M5TUg9c0FzTXpuKFYJCQkJJD0uc24taXY8X0F6T1lqYWQsPlRnIEssPkUgSUksPnJGSXBLVgkJCSksVgkJCWV6emVxX3lNcW4oJD0uc24taXY8X25NPSksVgkJCWV6emVxX2NlV1FNbigkPS5zbi1pdjxfbk09KVYJCSk7VlYJCXNBPigkek1uTT0+U1NTPlRnIEspVgkJXVYJCQkkPS5zbi1pX3pNbk09X316cz1NKCk7VgkJbFZWCQl6TT1Rekg+JG52VztWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+M0huTXo9Vgk+KlYJPio+L09ZWnNXTW4+ZUg+c0huTXo9Pm49enNIeD5lSDk+elFIbj49Lk0+dlFNenFWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CT0uTT49ZTxXTT49Tz5zSG5Nej0+OWU9ZT5zSD1PVgk+Kj5AWmV6ZVkJZXp6ZXEJZUg+ZW5uTzJzZT1zY00+ZXp6ZXE+T0E+c0huTXo9PmNlV1FNblYJPio+QFplemVZCTxPT1cJJE1uMmVaTQl7Lk09Lk16Pj1PPk1uMmVaTT5jZVdRTW4+ZUg5PnM5TUg9c0FzTXpuVgk+Kj5Aek09UXpICU88Ck0yPVYJPipoVglaUTxXczI+QVFIMj1zT0g+c0huTXo9KCQ9ZTxXTT5TPicnLD4kbk09PlM+RSBJSSw+JE1uMmVaTT5TPkUgSUkpVgldVgkJc0E+KCRuTT0+IVNTPkUgSUkpVgkJXVYJCQkkPS5zbi1pbk09KCRuTT0sPicnLD4kTW4yZVpNKTtWCQlsVlYJCXNBPigkPS5zbi1pX2NlV3M5ZT1NX3NIbk16PSgkPWU8V00pPlNTUz5yRklwSylWCQldVgkJCXpNPVF6SD5yRklwSztWCQlsVlYJCSRudlc+Uz4kPS5zbi1pX3NIbk16PShWCQkJJD0uc24taVp6Tz1NMj1fczlNSD1zQXNNem4oVgkJCQkkPS5zbi1pdjxfQXpPWWphZCw+VGcgSyw+JE1uMmVaTSw+ckZJcEtWCQkJKSxWCQkJZXp6ZXFfeU1xbigkPS5zbi1pdjxfbk09KSxWCQkJZXp6ZXFfY2VXUU1uKCQ9LnNuLWl2PF9uTT0pVgkJKTtWVgkJJD0uc24taV96TW5NPV99enM9TSgpO1YJCXpNPVF6SD4kPS5zbi1pdlFNenEoJG52Vyk7VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPjZlV3M5ZT1NPjNIbk16PVYJPipWCT4qPlQuc24+WU09Lk85PnNuPlFuTTk+PHE+PE89Lj5zSG5Nej0oKT5lSDk+eE09XzJPWVpzV005X3NIbk16PSgpPj1PVgk+Kj5jZVdzOWU9TT49LmU9Pj0uTT49Lk16TT45ZT1lPnNuPmUyPVFlV1dxPjxNc0h4Pm5NPT5lSDk+PS5lPT49ZTxXTVYJPio+LmVuPjxNTUg+Mi5Pbk1IPj1PPjxNPnNIbk16PU05PnNIPU9YVgk+KlYJPio+QFplemVZCW49enNIeAk9Lk0+PWU8V00+PU8+c0huTXo9PjllPWU+c0g9T1YJPio+QHpNPVF6SAluPXpzSHhWCT4qaFYJWnpPPU0yPU05PkFRSDI9c09IPl9jZVdzOWU9TV9zSG5Nej0oJD1lPFdNPlM+JycpVgldVgkJc0E+KDJPUUg9KCQ9LnNuLWl2PF9uTT0pPlNTUz5hKVYJCV1WCQkJek09UXpIPigkPS5zbi1pOTxfOU08UXgpPj8+JD0uc24taTlzblpXZXFfTXp6T3ooJzk8X1lRbj1fUW5NX25NPScpPjo+ckZJcEs7VgkJbFZWCQlzQT4oJD1lPFdNPiFTUz4nJylWCQldVgkJCSQ9LnNuLWl2PF9Bek9ZamFkPlM+JD1lPFdNO1YJCWxWCQlNV25Nc0E+KD4hPnNubk09KCQ9LnNuLWl2PF9Bek9ZamFkKSlWCQldVgkJCXpNPVF6SD4oJD0uc24taTk8XzlNPFF4KT4/PiQ9LnNuLWk5c25aV2VxX016ek96KCc5PF9ZUW49X25NPV89ZTxXTScpPjo+ckZJcEs7VgkJbFZWCQl6TT1Rekg+VGcgSztWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+Z01aV2UyTVYJPipWCT4qPi9PWVpzV01uPmVIPnpNWldlMk0+c0g9Tz5uPXpzSHg+ZUg5PnpRSG4+PS5NPnZRTXpxVgk+KlYJPio+QFplemVZCW49enNIeAk9Lk0+PWU8V00+PU8+ek1aV2UyTT45ZT1lPnNIPU9WCT4qPkBaZXplWQllenplcQllSD5lbm5PMnNlPXNjTT5lenplcT5PQT5zSG5Nej0+Y2VXUU1uVgk+Kj5Aek09UXpICU88Ck0yPVYJPipoVglaUTxXczI+QVFIMj1zT0g+ek1aV2UyTSgkPWU8V00+Uz4nJyw+JG5NPT5TPkUgSUkpVgldVgkJc0E+KCRuTT0+IVNTPkUgSUkpVgkJXVYJCQkkPS5zbi1pbk09KCRuTT0pO1YJCWxWVgkJc0E+KDJPUUg9KCQ9LnNuLWl2PF9uTT0pPlNTUz5hKVYJCV1WCQkJek09UXpIPigkPS5zbi1pOTxfOU08UXgpPj8+JD0uc24taTlzblpXZXFfTXp6T3ooJzk8X1lRbj1fUW5NX25NPScpPjo+ckZJcEs7VgkJbFZWCQlzQT4oJD1lPFdNPlNTUz4nJylWCQldVgkJCXNBPig+IT5zbm5NPSgkPS5zbi1pdjxfQXpPWWphZCkpVgkJCV1WCQkJCXpNPVF6SD4oJD0uc24taTk8XzlNPFF4KT4/PiQ9LnNuLWk5c25aV2VxX016ek96KCc5PF9ZUW49X25NPV89ZTxXTScpPjo+ckZJcEs7VgkJCWxWVgkJCSQ9ZTxXTT5TPiQ9LnNuLWl2PF9Bek9ZamFkO1YJCWxWVgkJJG52Vz5TPiQ9LnNuLWlfek1aV2UyTSgkPS5zbi1pWnpPPU0yPV9zOU1IPXNBc016bigkPWU8V00sPlRnIEssPkUgSUksPnJGSXBLKSw+ZXp6ZXFfeU1xbigkPS5zbi1pdjxfbk09KSw+ZXp6ZXFfY2VXUU1uKCQ9LnNuLWl2PF9uTT0pKTtWVgkJJD0uc24taV96TW5NPV99enM9TSgpO1YJCXpNPVF6SD4kPS5zbi1pdlFNenEoJG52Vyk7VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPmdNWldlMk0+bj1lPU1ZTUg9Vgk+KlYJPio+Q01ITXplPU1uPmU+WldlPUFPelktblpNMnNBczI+ek1aV2UyTT5uPXpzSHg+QXpPWT49Lk0+blFaWldzTTk+OWU9ZVYJPipWCT4qPkBaZXplWQluPXpzSHgJPS5NPj1lPFdNPkhlWU1WCT4qPkBaZXplWQllenplcQk9Lk0+c0huTXo9PnlNcW5WCT4qPkBaZXplWQllenplcQk9Lk0+c0huTXo9PmNlV1FNblYJPio+QHpNPVF6SAluPXpzSHhWCT4qaFYJWnpPPU0yPU05PkFRSDI9c09IPl96TVpXZTJNKCQ9ZTxXTSw+JHlNcW4sPiRjZVdRTW4pVgldVgkJek09UXpIPidnS21JRi9LPjNFVDc+J1gkPWU8V01YJz4oJ1hzWVpXTzlNKCcsPicsPiR5TXFuKVgnKT42RkkgS3A+KCdYc1laV085TSgnLD4nLD4kY2VXUU1uKVgnKSc7VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPnJnN3U+PWU8V01uVgk+KlYJPio+Q3pPUVpuPj1lPFdNbj5zSD5yZzd1PjJXZVFuTW4+c0E+SE1NOU05LD5uTz49Lk16TT5zbj5ITz4yT0hBUW5zT0hWCT4qPmU8T1E9Pk9aTXplPU96Plp6TTJNOU1IMk1YVgk+KlYJPio+RU89TTo+VC5zbj5zbj5PSFdxPlFuTTk+KGVIOT5PY016enM5OU1IKT48cT51cXB3ST5lSDk+LyBvZzM0WFYJPipWCT4qPkB6TT1RekgJbj16c0h4Vgk+KmhWCVp6Tz1NMj1NOT5BUUgyPXNPSD5fQXpPWV89ZTxXTW4oKVYJXVYJCXpNPVF6SD5zWVpXTzlNKCcsPicsPiQ9LnNuLWl2PF9Bek9ZKTtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+Q009PiBtNEZUSz52UU16cT5uPXpzSHhWCT4qVgk+Kj4vT1lac1dNbj5lSD5RWjllPU0+dlFNenE+ZUg5PnpNPVF6SG4+PS5NPm52V1YJPipWCT4qPkBaZXplWQluPXpzSHgJPS5NPj1lPFdNPj1PPlFaOWU9TVYJPio+QFplemVZCTxPT1cJVGcgSzo+ek1uTT0+d28+Y2VXUU1uOz5yRklwSzo+V01lY00+d28+Y2VXUU1uPmVXT0hNVgk+Kj5Aek09UXpICW49enNIeFYJPipoVglaUTxXczI+QVFIMj1zT0g+eE09XzJPWVpzV005X1FaOWU9TSgkPWU8V00+Uz4nJyw+JHpNbk09PlM+VGcgSylWCV1WCQloaD4vT1k8c0hNPmVIcT4yZTIuTTk+Mk9ZWk9ITUg9bj59cz0uPj0uTT4yUXp6TUg9Pm49ZT1NWU1IPW5WCQkkPS5zbi1pX1lNenhNXzJlMi5NKCk7VlYJCXNBPigkPS5zbi1pX2NlV3M5ZT1NX1FaOWU9TSgkPWU8V00pPlNTUz5yRklwSylWCQldVgkJCXpNPVF6SD5yRklwSztWCQlsVlYJCSRudlc+Uz4kPS5zbi1pX1FaOWU9TSgkPS5zbi1pWnpPPU0yPV9zOU1IPXNBc016bigkPS5zbi1pdjxfQXpPWWphZCw+VGcgSyw+RSBJSSw+ckZJcEspLD4kPS5zbi1pdjxfbk09KTtWVgkJc0E+KCR6TW5NPT5TU1M+VGcgSylWCQldVgkJCSQ9LnNuLWlfek1uTT1ffXpzPU0oKTtWCQlsVlYJCXpNPVF6SD4kbnZXO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj4gbTRGVEtWCT4qVgk+Kj4vT1lac1dNbj5lSD5RWjllPU0+bj16c0h4PmVIOT56UUhuPj0uTT52UU16cVhWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CSQ9ZTxXTVYJPio+QFplemVZCWV6emVxCSRuTT0JRkg+ZW5uTzJzZT1zY00+ZXp6ZXE+T0E+UVo5ZT1NPmNlV1FNblYJPio+QFplemVZCVlzUk05CSR9Lk16TVYJPio+QFplemVZCXNIPQkkV3NZcz1WCT4qPkB6TT1RekgJTzwKTTI9Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD5RWjllPU0oJD1lPFdNPlM+JycsPiRuTT0+Uz5FIElJLD4kfS5Nek0+Uz5FIElJLD4kV3NZcz0+Uz5FIElJKVYJXVYJCWhoPi9PWTxzSE0+ZUhxPjJlMi5NOT4yT1laT0hNSD1uPn1zPS4+PS5NPjJRenpNSD0+bj1lPU1ZTUg9blYJCSQ9LnNuLWlfWU16eE1fMmUyLk0oKTtWVgkJc0E+KCRuTT0+IVNTPkUgSUkpVgkJXVYJCQkkPS5zbi1pbk09KCRuTT0pO1YJCWxWVgkJc0E+KCQ9LnNuLWlfY2VXczllPU1fUVo5ZT1NKCQ9ZTxXTSk+U1NTPnJGSXBLKVYJCV1WCQkJek09UXpIPnJGSXBLO1YJCWxWVgkJc0E+KCR9Lk16TT4hU1M+RSBJSSlWCQldVgkJCSQ9LnNuLWl9Lk16TSgkfS5Nek0pO1YJCWxWVgkJc0E+KD4hPk1ZWj1xKCRXc1lzPSkpVgkJXVYJCQkkPS5zbi1pV3NZcz0oJFdzWXM9KTtWCQlsVlYJCSRudlc+Uz4kPS5zbi1pX1FaOWU9TSgkPS5zbi1pWnpPPU0yPV9zOU1IPXNBc016bigkPS5zbi1pdjxfQXpPWWphZCw+VGcgSyw+RSBJSSw+ckZJcEspLD4kPS5zbi1pdjxfbk09KTtWCQkkPS5zbi1pX3pNbk09X316cz1NKCk7VgkJek09UXpIPiQ9LnNuLWl2UU16cSgkbnZXKTtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+NmVXczllPU0+IFo5ZT1NVgk+KlYJPio+VC5zbj5ZTT0uTzk+c24+UW5NOT48cT48Tz0uPlFaOWU9TSgpPmVIOT54TT1fMk9ZWnNXTTlfUVo5ZT1NKCk+PU9WCT4qPmNlV3M5ZT1NPj0uZT0+OWU9ZT5zbj5lMj1RZVdXcT48TXNIeD5uTT0+ZUg5Pj0uZT0+ZT49ZTxXTT4uZW4+PE1NSFYJPio+Mi5Pbk1IPj1PPjxNPlFaOWU9TVhWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CT0uTT49ZTxXTT49Tz5RWjllPU0+OWU9ZT5PSFYJPio+QHpNPVF6SAk8T09XVgk+KmhWCVp6Tz1NMj1NOT5BUUgyPXNPSD5fY2VXczllPU1fUVo5ZT1NKCQ9ZTxXTT5TPicnKVYJXVYJCXNBPigyT1FIPSgkPS5zbi1pdjxfbk09KT5TU1M+YSlWCQldVgkJCXpNPVF6SD4oJD0uc24taTk8XzlNPFF4KT4/PiQ9LnNuLWk5c25aV2VxX016ek96KCc5PF9ZUW49X1FuTV9uTT0nKT46PnJGSXBLO1YJCWxWVgkJc0E+KCQ9ZTxXTT4hU1M+JycpVgkJXVYJCQkkPS5zbi1pdjxfQXpPWWphZD5TPiQ9ZTxXTTtWCQlsVgkJTVduTXNBPig+IT5zbm5NPSgkPS5zbi1pdjxfQXpPWWphZCkpVgkJXVYJCQl6TT1Rekg+KCQ9LnNuLWk5PF85TTxReCk+Pz4kPS5zbi1pOXNuWldlcV9NenpPeignOTxfWVFuPV9uTT1fPWU8V00nKT46PnJGSXBLO1YJCWxWVgkJek09UXpIPlRnIEs7VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPiBaOWU9TV9vZT0yLlYJPipWCT4qPi9PWVpzV01uPmVIPlFaOWU9TT5uPXpzSHg+ZUg5PnpRSG4+PS5NPnZRTXpxVgk+KlYJPio+QFplemVZCW49enNIeAk9Lk0+PWU8V00+PU8+ek09enNNY00+PS5NPnpNblFXPW4+QXpPWVYJPio+QFplemVZCWV6emVxCWVIPmVubk8yc2U9c2NNPmV6emVxPk9BPlFaOWU9TT5jZVdRTW5WCT4qPkBaZXplWQluPXpzSHgJPS5NPn0uTXpNPnlNcVYJPio+QHpNPVF6SAlzSD0JSFFZPE16Pk9BPnpPfW4+ZUFBTTI9TTk+T3o+ckZJcEs+T0g+QWVzV1F6TVYJPipoVglaUTxXczI+QVFIMj1zT0g+UVo5ZT1NXzxlPTIuKCQ9ZTxXTT5TPicnLD4kbk09PlM+RSBJSSw+JHNIOU1SPlM+RSBJSSlWCV1WCQloaD4vT1k8c0hNPmVIcT4yZTIuTTk+Mk9ZWk9ITUg9bj59cz0uPj0uTT4yUXp6TUg9Pm49ZT1NWU1IPW5WCQkkPS5zbi1pX1lNenhNXzJlMi5NKCk7VlYJCXNBPigkc0g5TVI+U1NTPkUgSUkpVgkJXVYJCQl6TT1Rekg+KCQ9LnNuLWk5PF85TTxReCk+Pz4kPS5zbi1pOXNuWldlcV9NenpPeignOTxfWVFuPV9Rbk1fc0g5TVInKT46PnJGSXBLO1YJCWxWVgkJc0E+KCRuTT0+IVNTPkUgSUkpVgkJXVYJCQkkPS5zbi1pbk09X1FaOWU9TV88ZT0yLigkbk09LD4kc0g5TVIpO1YJCWxWVgkJc0E+KDJPUUg9KCQ9LnNuLWl2PF9uTT0pPlNTUz5hKVYJCV1WCQkJek09UXpIPigkPS5zbi1pOTxfOU08UXgpPj8+JD0uc24taTlzblpXZXFfTXp6T3ooJzk8X1lRbj1fUW5NX25NPScpPjo+ckZJcEs7VgkJbFZWCQlzQT4oJD1lPFdNPlNTUz4nJylWCQldVgkJCXNBPig+IT5zbm5NPSgkPS5zbi1pdjxfQXpPWWphZCkpVgkJCV1WCQkJCXpNPVF6SD4oJD0uc24taTk8XzlNPFF4KT4/PiQ9LnNuLWk5c25aV2VxX016ek96KCc5PF9ZUW49X25NPV89ZTxXTScpPjo+ckZJcEs7VgkJCWxWVgkJCSQ9ZTxXTT5TPiQ9LnNuLWl2PF9Bek9ZamFkO1YJCWxWVgkJaGg+b2U9Mi4+PS5zbj48ZTxxVgkJJGVBQU0yPU05X3pPfW4+Uz5hO1YJCUFPej4oJHM+Uz5hLD4kPU89ZVc+Uz4yT1FIPSgkPS5zbi1pdjxfbk09KTs+JHM+Qj4kPU89ZVc7PiRzPitTPjBhYSlWCQldVgkJCSQ9LnNuLWl2UU16cSgkPS5zbi1pX1FaOWU9TV88ZT0yLigkPS5zbi1pWnpPPU0yPV9zOU1IPXNBc016bigkPWU8V00sPlRnIEssPkUgSUksPnJGSXBLKSw+ZXp6ZXFfbldzMk0oJD0uc24taXY8X25NPSw+JHMsPjBhYSksPiQ9LnNuLWlaek89TTI9X3M5TUg9c0FzTXpuKCRzSDlNUikpKTtWCQkJJGVBQU0yPU05X3pPfW4+K1M+JD0uc24taWVBQU0yPU05X3pPfW4oKTtWCQkJJD0uc24taXY8X30uTXpNPlM+ZXp6ZXEoKTtWCQlsVlYJCSQ9LnNuLWlfek1uTT1ffXpzPU0oKTtWCQl6TT1Rekg+JGVBQU0yPU05X3pPfW47VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPiBaOWU9TV9vZT0yLj5uPWU9TVlNSD1WCT4qVgk+Kj5DTUhNemU9TW4+ZT5aV2U9QU96WS1uWk0yc0FzMj48ZT0yLj5RWjllPU0+bj16c0h4PkF6T1k+PS5NPm5RWlpXc005PjllPWVWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CSQ9ZTxXTQlUZTxXTT5IZVlNVgk+Kj5AWmV6ZVkJZXp6ZXEJJGNlV1FNbgkgWjllPU0+OWU9ZVYJPio+QFplemVZCW49enNIeAkkc0g5TVIJe3RLZ0s+eU1xVgk+Kj5Aek09UXpICW49enNIeFYJPipoVglaek89TTI9TTk+QVFIMj1zT0g+X1FaOWU9TV88ZT0yLigkPWU8V00sPiRjZVdRTW4sPiRzSDlNUilWCV1WCQkkczluPlM+ZXp6ZXEoKTtWCQlBT3pNZTIuPigkY2VXUU1uPmVuPiR5TXE+U2k+JGNlVylWCQldVgkJCSRzOW5qZD5TPiRjZVdqJHNIOU1SZDtWVgkJCUFPek1lMi4+KGV6emVxX3lNcW4oJGNlVyk+ZW4+JEFzTVc5KVYJCQldVgkJCQlzQT4oJEFzTVc5PiFTUz4kc0g5TVIpVgkJCQldVgkJCQkJJEFzSGVXaiRBc01XOWRqZD5TPid7dEtFPidYJHNIOU1SWCc+Uz4nWCRjZVdqJHNIOU1SZFgnPlR0S0U+J1gkY2VXaiRBc01XOWQ7VgkJCQlsVgkJCWxWCQlsVlYJCSQyZW5Nbj5TPicnO1YJCUFPek1lMi4+KCRBc0hlVz5lbj4keT5TaT4kYylWCQldVgkJCSQyZW5Nbj5YUz4keVgiPlM+L0ZwSz5cSCJWCQkJCVhzWVpXTzlNKCJcSCIsPiRjKVgiXEgiVgkJCQlYJ0tJcEs+J1gkeVgnPktFNCw+JztWCQlsVlYJCSQ9LnNuLWl9Lk16TSgkc0g5TVJYJz4zRSgnWHNZWldPOU0oJywnLD4kczluKVgnKScsPkUgSUksPnJGSXBLKTtWVgkJek09UXpIPicgbTRGVEs+J1gkPWU8V01YJz5wS1Q+J1huUTxuPXooJDJlbk1uLD5hLD4taylYJD0uc24taV8yT1lac1dNX30uKCd2PF99Lk16TScpO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj5ULk0+Im5NPV9RWjllPU1fPGU9Mi4iPkFRSDI9c09IWD4+RldXT31uPnlNcWhjZVdRTT5aZXN6bj49Tz48TT5uTT0+QU96PjxlPTIuPlFaOWU9c0h4Vgk+KlYJPio+QFplemVZCWV6emVxVgk+Kj5AWmV6ZVkJbj16c0h4Vgk+Kj5AWmV6ZVkJPE9PV1YJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD5uTT1fUVo5ZT1NXzxlPTIuKCR5TXEsPiRzSDlNUj5TPicnLD4kTW4yZVpNPlM+RSBJSSlWCV1WCQkkeU1xPlM+JD0uc24taV9PPApNMj1fPU9fZXp6ZXFfPGU9Mi4oJHlNcSk7VlYJCXNBPig+IT5zbl9lenplcSgkeU1xKSlWCQldVgkJCWhoPkA9TzlPPk16ek96VgkJbFZWCQlzbl88T09XKCRNbjJlWk0pPjdnPiRNbjJlWk0+Uz4kPS5zbi1pX1p6Tz1NMj1fczlNSD1zQXNNem47VlYJCUFPek1lMi4+KCR5TXE+ZW4+JHk+U2k+JGMpVgkJXVYJCQkkc0g5TVJfbk09PlM+ckZJcEs7VgkJCSQyV01lSD5TPmV6emVxKCk7VgkJCUFPek1lMi4+KCRjPmVuPiR5az5TaT4kY2spVgkJCV1WCQkJCXNBPigkeWs+U1NTPiRzSDlNUilWCQkJCV1WCQkJCQkkc0g5TVJfbk09PlM+VGcgSztWCQkJCWxWVgkJCQkkMldNZUhqJD0uc24taVp6Tz1NMj1fczlNSD1zQXNNem4oJHlrLD5yRklwSyw+JE1uMmVaTSlkPlM+KCRNbjJlWk0+U1NTPnJGSXBLKT4/PiRjaz46PiQ9LnNuLWlNbjJlWk0oJGNrKTtWCQkJbFZWCQkJc0E+KCRzSDlNUl9uTT0+U1NTPnJGSXBLKVYJCQldVgkJCQl6TT1Rekg+JD0uc24taTlzblpXZXFfTXp6T3ooJzk8XzxlPTIuX1lzbm5zSHhfc0g5TVInKTtWCQkJbFZWCQkJJD0uc24taXY8X25NPWpkPlM+JDJXTWVIO1YJCWxWVgkJek09UXpIPiQ9LnNuO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj5LWVo9cT5UZTxXTVYJPipWCT4qPi9PWVpzV01uPmU+OU1XTT1NPm49enNIeD5lSDk+elFIbj4iNEtJS1RLPnJnN3U+PWU8V00iVgk+KlYJPio+QFplemVZCW49enNIeAk9Lk0+PWU8V00+PU8+TVlaPXFWCT4qPkB6TT1RekgJTzwKTTI9Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD5NWVo9cV89ZTxXTSgkPWU8V00+Uz4nJylWCV1WCQlzQT4oJD1lPFdNPlNTUz4nJylWCQldVgkJCXNBPig+IT5zbm5NPSgkPS5zbi1pdjxfQXpPWWphZCkpVgkJCV1WCQkJCXpNPVF6SD4oJD0uc24taTk8XzlNPFF4KT4/PiQ9LnNuLWk5c25aV2VxX016ek96KCc5PF9ZUW49X25NPV89ZTxXTScpPjo+ckZJcEs7VgkJCWxWVgkJCSQ9ZTxXTT5TPiQ9LnNuLWl2PF9Bek9ZamFkO1YJCWxWCQlNV25NVgkJXVYJCQkkPWU8V00+Uz4kPS5zbi1pWnpPPU0yPV9zOU1IPXNBc016bigkPWU8V00sPlRnIEssPkUgSUksPnJGSXBLKTtWCQlsVlYJCSRudlc+Uz4kPS5zbi1pXzlNV009TSgkPWU8V00pO1YJCSQ9LnNuLWlfek1uTT1ffXpzPU0oKTtWCQl6TT1Rekg+JD0uc24taXZRTXpxKCRudlcpO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj5UelFIMmU9TVYJPipWCT4qPi9PWVpzV01uPmU+PXpRSDJlPU0+bj16c0h4PmVIOT56UUhuPj0uTT52UU16cVYJPio+M0E+PS5NPjllPWU8ZW5NPjlPTW4+SE89Pm5RWlpPej0+PS5NPj16UUgyZT1NKCk+Mk9ZWWVIOVYJPio+VC5zbj5BUUgyPXNPSD5ZZVpuPj1PPiI0S0lLVEs+cmc3dT49ZTxXTSJWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CT0uTT49ZTxXTT49Tz49elFIMmU9TVYJPio+QHpNPVF6SAlPPApNMj1WCT4qaFYJWlE8V3MyPkFRSDI9c09IPj16UUgyZT1NKCQ9ZTxXTT5TPicnKVYJXVYJCXNBPigkPWU8V00+U1NTPicnKVYJCV1WCQkJc0E+KD4hPnNubk09KCQ9LnNuLWl2PF9Bek9ZamFkKSlWCQkJXVYJCQkJek09UXpIPigkPS5zbi1pOTxfOU08UXgpPj8+JD0uc24taTlzblpXZXFfTXp6T3ooJzk8X1lRbj1fbk09Xz1lPFdNJyk+Oj5yRklwSztWCQkJbFZWCQkJJD1lPFdNPlM+JD0uc24taXY8X0F6T1lqYWQ7VgkJbFYJCU1Xbk1WCQldVgkJCSQ9ZTxXTT5TPiQ9LnNuLWlaek89TTI9X3M5TUg9c0FzTXpuKCQ9ZTxXTSw+VGcgSyw+RSBJSSw+ckZJcEspO1YJCWxWVgkJJG52Vz5TPiQ9LnNuLWlfPXpRSDJlPU0oJD1lPFdNKTtWCQkkPS5zbi1pX3pNbk09X316cz1NKCk7VgkJek09UXpIPiQ9LnNuLWl2UU16cSgkbnZXKTtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+VHpRSDJlPU0+bj1lPU1ZTUg9Vgk+KlYJPio+Q01ITXplPU1uPmU+WldlPUFPelktblpNMnNBczI+PXpRSDJlPU0+bj16c0h4PkF6T1k+PS5NPm5RWlpXc005PjllPWVWCT4qVgk+Kj4zQT49Lk0+OWU9ZTxlbk0+OU9Nbj5ITz0+blFaWk96PT49Lk0+PXpRSDJlPU0oKT4yT1lZZUg5LFYJPio+PS5NSD49LnNuPllNPS5POT5ZZVpuPj1PPic0S0lLVEs+cmc3dT49ZTxXTSdWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CT0uTT49ZTxXTT5IZVlNVgk+Kj5Aek09UXpICW49enNIeFYJPipoVglaek89TTI9TTk+QVFIMj1zT0g+Xz16UUgyZT1NKCQ9ZTxXTSlWCV1WCQl6TT1Rekg+J1RnIEUvRlRLPidYJD1lPFdNO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj5DTT0+NEtJS1RLPnZRTXpxPm49enNIeFYJPipWCT4qPi9PWVpzV01uPmU+OU1XTT1NPnZRTXpxPm49enNIeD5lSDk+ek09UXpIbj49Lk0+bnZXVgk+KlYJPio+QFplemVZCW49enNIeAk9Lk0+PWU8V00+PU8+OU1XTT1NPkF6T1lWCT4qPkBaZXplWQk8T09XCVRnIEs6PnpNbk09PndvPmNlV1FNbjs+ckZJcEs6PldNZWNNPndvPmNlV1FNbj5lV09ITVYJPio+QHpNPVF6SAluPXpzSHhWCT4qaFYJWlE8V3MyPkFRSDI9c09IPnhNPV8yT1lac1dNOV85TVdNPU0oJD1lPFdNPlM+JycsPiR6TW5NPT5TPlRnIEspVgldVgkJJD0uc24taXpNPVF6SF85TVdNPU1fbnZXPlM+VGcgSztWCQkkbnZXPlM+JD0uc24taTlNV009TSgkPWU8V00sPicnLD5FIElJLD4kek1uTT0pO1YJCSQ9LnNuLWl6TT1RekhfOU1XTT1NX252Vz5TPnJGSXBLO1YJCXpNPVF6SD4kbnZXO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj40TVdNPU1WCT4qVgk+Kj4vT1lac1dNbj5lPjlNV009TT5uPXpzSHg+ZUg5PnpRSG4+PS5NPnZRTXpxVgk+KlYJPio+QFplemVZCVlzUk05CT0uTT49ZTxXTShuKT49Tz45TVdNPU0+QXpPWVg+cD16c0h4Pk96PmV6emVxVgk+Kj5AWmV6ZVkJWXNSTTkJPS5NPn0uTXpNPjJXZVFuTVYJPio+QFplemVZCVlzUk05CT0uTT5Xc1lzPT4yV2VRbk1WCT4qPkBaZXplWQk8T09XVgk+Kj5Aek09UXpICVlzUk05Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD45TVdNPU0oJD1lPFdNPlM+JycsPiR9Lk16TT5TPicnLD4kV3NZcz0+Uz5FIElJLD4kek1uTT1fOWU9ZT5TPlRnIEspVgldVgkJaGg+L09ZPHNITT5lSHE+MmUyLk05PjJPWVpPSE1IPW4+fXM9Lj49Lk0+MlF6ek1IPT5uPWU9TVlNSD1uVgkJJD0uc24taV9ZTXp4TV8yZTIuTSgpO1ZWCQlzQT4oJD1lPFdNPlNTUz4nJylWCQldVgkJCXNBPig+IT5zbm5NPSgkPS5zbi1pdjxfQXpPWWphZCkpVgkJCV1WCQkJCXpNPVF6SD4oJD0uc24taTk8XzlNPFF4KT4/PiQ9LnNuLWk5c25aV2VxX016ek96KCc5PF9ZUW49X25NPV89ZTxXTScpPjo+ckZJcEs7VgkJCWxWVgkJCSQ9ZTxXTT5TPiQ9LnNuLWl2PF9Bek9ZamFkO1YJCWxWCQlNV25Nc0E+KHNuX2V6emVxKCQ9ZTxXTSkpVgkJXVYJCQlBT3pNZTIuPigkPWU8V00+ZW4+JG5zSHhXTV89ZTxXTSlWCQkJXVYJCQkJJD0uc24taTlNV009TSgkbnNIeFdNXz1lPFdNLD4kfS5Nek0sPiRXc1lzPSw+JHpNbk09XzllPWUpO1YJCQlsVgkJCXpNPVF6SDtWCQlsVgkJTVduTVYJCV1WCQkJJD1lPFdNPlM+JD0uc24taVp6Tz1NMj1fczlNSD1zQXNNem4oJD1lPFdNLD5UZyBLLD5FIElJLD5yRklwSyk7VgkJbFZWCQlzQT4oJH0uTXpNPiFTUz4nJylWCQldVgkJCSQ9LnNuLWl9Lk16TSgkfS5Nek0pO1YJCWxWVgkJc0E+KD4hPk1ZWj1xKCRXc1lzPSkpVgkJXVYJCQkkPS5zbi1pV3NZcz0oJFdzWXM9KTtWCQlsVlYJCXNBPigyT1FIPSgkPS5zbi1pdjxffS5Nek0pPlNTUz5hKVYJCV1WCQkJek09UXpIPigkPS5zbi1pOTxfOU08UXgpPj8+JD0uc24taTlzblpXZXFfTXp6T3ooJzk8XzlNV19ZUW49X1FuTV99Lk16TScpPjo+ckZJcEs7VgkJbFZWCQkkbnZXPlM+JD0uc24taV85TVdNPU0oJD1lPFdNKTtWCQlzQT4oJHpNbk09XzllPWUpVgkJXVYJCQkkPS5zbi1pX3pNbk09X316cz1NKCk7VgkJbFZWCQl6TT1Rekg+KCQ9LnNuLWl6TT1RekhfOU1XTT1NX252Vz5TU1M+VGcgSyk+Pz4kbnZXPjo+JD0uc24taXZRTXpxKCRudlcpO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj40TVdNPU0+bj1lPU1ZTUg9Vgk+KlYJPio+Q01ITXplPU1uPmU+WldlPUFPelktblpNMnNBczI+OU1XTT1NPm49enNIeD5Bek9ZPj0uTT5uUVpaV3NNOT45ZT1lVgk+KlYJPio+QFplemVZCW49enNIeAk9Lk0+PWU8V00+SGVZTVYJPio+QHpNPVF6SAluPXpzSHhWCT4qaFYJWnpPPU0yPU05PkFRSDI9c09IPl85TVdNPU0oJD1lPFdNKVYJXVYJCXpNPVF6SD4nNEtJS1RLPnJnN3U+J1gkPWU8V01YJD0uc24taV8yT1lac1dNX30uKCd2PF99Lk16TScpVgkJCVgoJD0uc24taXY8X1dzWXM9Pj8+Jz5JM3UzVD4nWCQ9LnNuLWl2PF9Xc1lzPT46PicnKTtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+NG8+bXpNQXNSVgk+KlYJPio+bXpNWk1IOW4+ZT45ZT1lPGVuTT5aek1Bc1I+c0E+T0hNPk1Sc249bj5zSD4yT0hBc3hRemU9c09IVgk+KlYJPio+QFplemVZCW49enNIeAk9Lk0+PWU8V01WCT4qPkB6TT1RekgJbj16c0h4Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD45PFp6TUFzUigkPWU8V00+Uz4nJylWCV1WCQlzQT4oJD1lPFdNPlNTUz4nJylWCQldVgkJCSQ9LnNuLWk5c25aV2VxX016ek96KCc5PF89ZTxXTV9IZVlNX3pNdlFzek05Jyk7VgkJbFZWCQl6TT1Rekg+JD0uc24taTk8WnpNQXNSWCQ9ZTxXTTtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+cE09PjRvPm16TUFzUlYJPipWCT4qPnBNPSduPj0uTT40bz5tek1Bc1I+PU8+bk9ZTT0uc0h4PkhNfT59cz0uT1E9PkhNTTlzSHg+PU8+ek0yT0hITTI9Vgk+KlYJPio+QFplemVZCW49enNIeAk9Lk0+WnpNQXNSVgk+Kj5Aek09UXpICW49enNIeFYJPipoVglaUTxXczI+QVFIMj1zT0g+bk09Xzk8WnpNQXNSKCRaek1Bc1I+Uz4nJylWCV1WCQl6TT1Rekg+JD0uc24taTk8WnpNQXNSPlM+JFp6TUFzUjtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+VHplMnk+RldzZW5NblYJPipWCT4qPiBuTTk+PU8+PXplMnk+cHdJPm49ZT1NWU1IPW4+fXpzPT1NSD59cz0uPmVXc2VuTTk+PWU8V01uWFYJPipWCT4qPkBaZXplWQluPXpzSHgJVC5NPj1lPFdNPj1PPnNIblpNMj1WCT4qPkB6TT1RekgJbj16c0h4Vgk+KmhWCVp6Tz1NMj1NOT5BUUgyPXNPSD5fPXplMnlfZVdzZW5NbigkPWU8V00pVgldVgkJc0E+KHNuX2V6emVxKCQ9ZTxXTSkpVgkJXVYJCQlBT3pNZTIuPigkPWU8V00+ZW4+JD0pVgkJCV1WCQkJCSQ9LnNuLWlfPXplMnlfZVdzZW5NbigkPSk7VgkJCWxWCQkJek09UXpIO1YJCWxWVgkJaGg+NE9Nbj49Lk0+bj16c0h4PjJPSD1lc0g+ZT4yT1lZZT8+PjNBPm5PLD59TT5ITU05Pj1PPm5NWmV6ZT1NVgkJaGg+PS5NPm49enNIeD5zSD1PPjlzbjJ6TU09Pm49ZT1NWU1IPW5WCQlzQT4obj16Wk9uKCQ9ZTxXTSw+JywnKT4hU1M+ckZJcEspVgkJXVYJCQl6TT1Rekg+JD0uc24taV89emUyeV9lV3Nlbk1uKE1SWldPOU0oJywnLD4kPWU8V00pKTtWCQlsVlYJCWhoPnNBPmU+PWU8V00+ZVdzZW4+c24+UW5NOT59TT4yZUg+ek0yT3hIczVNPnM9PjxxPmU+blplMk1WCQlzQT4obj16Wk9uKCQ9ZTxXTSw+Jz4nKT4hU1M+ckZJcEspVgkJXVYJCQloaD5zQT49Lk0+ZVdzZW4+c24+fXpzPT1NSD59cz0uPj0uTT5GcD55TXF9T3o5LD56TVlPY00+cz1WCQkJJD1lPFdNPlM+WnpNeF96TVpXZTJNKCdoXG4rRnBcbitocycsPic+Jyw+JD1lPFdNKTtWVgkJCWhoPkN6ZTw+PS5NPmVXc2VuVgkJCSQ9ZTxXTT5TPj16c1kobj16ejIueigkPWU8V00sPic+JykpO1ZWCQkJaGg+cD1Pek0+PS5NPmVXc2VuLD5zQT5zPT45T01uSCc9PmVXek1lOXE+TVJzbj1WCQkJc0E+KD4hPnNIX2V6emVxKCQ9ZTxXTSw+JD0uc24taXY8X2VXc2VuTTlfPWU8V01uKSlWCQkJXVYJCQkJJD0uc24taXY8X2VXc2VuTTlfPWU8V01uamQ+Uz4kPWU8V007VgkJCWxWCQlsVglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPi9PWVpzV00+PS5NPnBLSUsvVD5uPWU9TVlNSD1WCT4qVgk+Kj5DTUhNemU9TW4+ZT52UU16cT5uPXpzSHg+PGVuTTk+T0g+fS5zMi4+QVFIMj1zT0huPn1Nek0+UW5NOVhWCT4qPnAuT1FXOT5ITz0+PE0+MmVXV005Pjlzek0yPVdxWFYJPipWCT4qPkBaZXplWQk8T09XCSRuTVdNMj1fT2NNenpzOU1WCT4qPkB6TT1RekgJbj16c0h4Vgk+KmhWCVp6Tz1NMj1NOT5BUUgyPXNPSD5fMk9ZWnNXTV9uTVdNMj0oJG5NV00yPV9PY016enM5TT5TPnJGSXBLKVYJXVYJCWhoPi9PWTxzSE0+ZUhxPjJlMi5NOT4yT1laT0hNSD1uPn1zPS4+PS5NPjJRenpNSD0+bj1lPU1ZTUg9blYJCSQ9LnNuLWlfWU16eE1fMmUyLk0oKTtWVgkJaGg+e3pzPU0+PS5NPiJuTVdNMj0iPlpPej1zT0g+T0E+PS5NPnZRTXpxVgkJc0E+KCRuTVdNMj1fT2NNenpzOU0+IVNTPnJGSXBLKVYJCV1WCQkJJG52Vz5TPiRuTVdNMj1fT2NNenpzOU07VgkJbFYJCU1Xbk1WCQldVgkJCSRudlc+Uz4oPiE+JD0uc24taXY8Xzlzbj1zSDI9KT4/PidwS0lLL1Q+Jz46PidwS0lLL1Q+NDNwVDNFL1Q+JztWVgkJCXNBPigyT1FIPSgkPS5zbi1pdjxfbk1XTTI9KT5TU1M+YSlWCQkJXVYJCQkJJG52Vz5YUz4nKic7VgkJCWxWCQkJTVduTVYJCQldVgkJCQloaD4vcTJXTT49LnpPUXguPj0uTT4ibk1XTTI9Ij5aT3o9c09IPk9BPj0uTT52UU16cT5lSDk+WnpNWj5NZTIuPjJPV1FZSD5IZVlNWFYJCQkJaGg+VC5NPnpNZW5PSD59TT5aek89TTI9PnM5TUg9c0FzTXpuPi5Nek0+emU9Lk16Pj0uTUg+c0g+PS5NPm5NV00yPSgpPkFRSDI9c09IVgkJCQloaD5zbj48TTJlUW5NPlFIPXNXPj0uTT5Rbk16PjJlV1duPj0uTT5Bek9ZKCk+QVFIMj1zT0g+fU0+OU9IJz0+eUhPfT5zQT49Lk16TT5lek0+ZVdzZW5NblYJCQkJQU96TWUyLj4oJD0uc24taXY8X25NV00yPT5lbj4keU1xPlNpPiRjZVcpVgkJCQldVgkJCQkJJEhPX01uMmVaTT5TPnNubk09KCQ9LnNuLWl2PF9IT19NbjJlWk1qJHlNcWQpPj8+JD0uc24taXY8X0hPX01uMmVaTWokeU1xZD46PkUgSUk7VgkJCQkJJD0uc24taXY8X25NV00yPWokeU1xZD5TPiQ9LnNuLWlaek89TTI9X3M5TUg9c0FzTXpuKCRjZVcsPnJGSXBLLD4kSE9fTW4yZVpNKTtWCQkJCWxWVgkJCQkkbnZXPlhTPnNZWldPOU0oJyw+Jyw+JD0uc24taXY8X25NV00yPSk7VgkJCWxWCQlsVlYJCWhoPnt6cz1NPj0uTT4icmc3dSI+Wk96PXNPSD5PQT49Lk0+dlFNenFWCQlzQT4oMk9RSD0oJD0uc24taXY8X0F6T1kpPmk+YSlWCQldVgkJCSRudlc+WFM+IlxIcmc3dT4iWCQ9LnNuLWlfQXpPWV89ZTxXTW4oKTtWCQlsVlYJCWhoPnt6cz1NPj0uTT4iODczRSI+Wk96PXNPSD5PQT49Lk0+dlFNenFWCQlzQT4oMk9RSD0oJD0uc24taXY8XwpPc0gpPmk+YSlWCQldVgkJCSRudlc+WFM+IlxIIlhzWVpXTzlNKCJcSCIsPiQ9LnNuLWl2PF8KT3NIKTtWCQlsVlYJCSRudlc+WFM+JD0uc24taV8yT1lac1dNX30uKCd2PF99Lk16TScpVgkJCVgkPS5zbi1pXzJPWVpzV01feHpPUVpfPHEoKVYJCQlYJD0uc24taV8yT1lac1dNX30uKCd2PF8uZWNzSHgnKVYJCQlYJD0uc24taV8yT1lac1dNX096OU16XzxxKCk7PmhoPjdnNEtnPm9iVlYJCWhoPkkzdTNUVgkJc0E+KCQ9LnNuLWl2PF9Xc1lzPSlWCQldVgkJCXpNPVF6SD4kPS5zbi1pX1dzWXM9KCRudldYIlxIIik7VgkJbFZWCQl6TT1Rekg+JG52VztWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+L09ZWnNXTT57dEtnSyw+dEY2M0VDPm49ZT1NWU1IPW5WCT4qVgk+Kj5LbjJlWk1uPnM5TUg9c0FzTXpuPnNIPnt0S2dLPmVIOT50RjYzRUM+bj1lPU1ZTUg9bj5lPT5NUk0yUT1zT0g+PXNZTVhWCT4qVgk+Kj5nTXZRc3pNOT5uTz49LmU9PmVXc2VuTW4+ZXpNPj16ZTJ5TTk+WnpPWk16V3EsPnpNeGV6OVdNbm4+T0E+fU09Lk16Vgk+Kj59Lk16TSgpLD5Pel99Lk16TSgpLD4uZWNzSHgoKSw+T3pfLmVjc0h4PmV6TT4yZVdXTTk+WnpzT3o+PU8+QXpPWSgpLFYJPio+Ck9zSCgpPmVIOT45PFp6TUFzUj5zbj5lOTlNOT5PSFdxPnNBPkhNTTlNOVhWCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CSR2PF95TXEJJ3Y8X30uTXpNJz5Pej4ndjxfLmVjc0h4J1YJPio+QHpNPVF6SAluPXpzSHgJcHdJPm49ZT1NWU1IPVYJPipoVglaek89TTI9TTk+QVFIMj1zT0g+XzJPWVpzV01ffS4oJHY8X3lNcSlWCV1WCQlzQT4oMk9RSD0oJD0uc24taSR2PF95TXEpPmk+YSlWCQldVgkJCUFPej4oJHM+Uz5hLD4kMj5TPjJPUUg9KCQ9LnNuLWkkdjxfeU1xKTs+JHM+Qj4kMjs+JHMrKylWCQkJXVYJCQkJaGg+M24+PS5zbj4yT0g5cz1zT0g+ZVd6TWU5cT4yT1lac1dNOT9WCQkJCXNBPihzbl9uPXpzSHgoJD0uc24taV0kdjxfeU1xbGokc2QpKVYJCQkJXVYJCQkJCTJPSD1zSFFNO1YJCQkJbFYJCQkJTVduTXNBPigkPS5zbi1pXSR2PF95TXFsaiRzZGonTW4yZVpNJ2Q+U1NTPnJGSXBLKVYJCQkJXVYJCQkJCSQ9LnNuLWldJHY8X3lNcWxqJHNkPlM+JD0uc24taV0kdjxfeU1xbGokc2RqJzJPSDlzPXNPSCdkO1YJCQkJCTJPSD1zSFFNO1YJCQkJbFZWCQkJCWhoPnBaV3M9PllRVz1zWldNPjJPSDlzPXNPSG5WCQkJCSQyT0g5cz1zT0huPlM+WnpNeF9uWldzPShWCQkJCQknaChcbipGRTRcbit8XG4qN2dcbispaHMnLFYJCQkJCSQ9LnNuLWldJHY8X3lNcWxqJHNkaicyT0g5cz1zT0gnZCxWCQkJCQktMCxWCQkJCQltZ0tDX3BtSTNUXzRLSTN1Xy9GbVQgZ0s+fD5tZ0tDX3BtSTNUX0U3X0t1bVRiVgkJCQkpO1ZWCQkJCUFPej4oJDJzPlM+YSw+JDIyPlM+Mk9RSD0oJDJPSDlzPXNPSG4pOz4kMnM+Qj4kMjI7PiQycysrKVYJCQkJXVYJCQkJCXNBPigoJE9aPlM+JD0uc24taV94TT1fT1pNemU9T3ooJDJPSDlzPXNPSG5qJDJzZCkpPlNTUz5yRklwS1YJCQkJCQk3Zz4hPlp6TXhfWWU9Mi4oJ2heKFwoPykoWCopKCdYWnpNeF92UU89TSgkT1osPidoJylYJylcbiooWCooP0IhXCkpKT8oXCk/KSRocycsPiQyT0g5cz1zT0huaiQyc2QsPiRZZT0yLk1uKSlWCQkJCQldVgkJCQkJCTJPSD1zSFFNO1YJCQkJCWxWVgkJCQkJaGg+JFllPTIuTW4+Uz5lenplcShWCQkJCQloaAlhPlNpPicoPU1uPT5CUz5BT08pJywJaCo+PS5NPn0uT1dNPj0uc0h4PipoVgkJCQkJaGgJMD5TaT4nKCcsCQloKj5PWj1zT0hlVz4qaFYJCQkJCWhoCWs+U2k+Jz1Nbj0nLAkJaCo+PS5NPkFzTVc5PkhlWU0+KmhWCQkJCQloaAlKPlNpPic+QlM+JywJCWgqPiRPWj4qaFYJCQkJCWhoCVU+U2k+J0FPTycsCQloKj5PWj1zT0hlVyw+c0E+JE9aPnNuPk1YeFg+JzNwPkUgSUknPipoVgkJCQkJaGgJTD5TaT4nKScJCWgqPk9aPXNPSGVXPipoVgkJCQkJaGg+KTtWVgkJCQkJc0E+KD4hPk1ZWj1xKCRZZT0yLk1ualVkKSlWCQkJCQldVgkJCQkJCSQ9LnNuLWlfc25fV3M9TXplVygkWWU9Mi5NbmpVZCk+N2c+JFllPTIuTW5qVWQ+Uz4kPS5zbi1pWnpPPU0yPV9zOU1IPXNBc016big9enNZKCRZZT0yLk1ualVkKSk7VgkJCQkJCSRZZT0yLk1ualVkPlM+Jz4nWCRZZT0yLk1ualVkO1YJCQkJCWxWVgkJCQkJJDJPSDlzPXNPSG5qJDJzZD5TPiRZZT0yLk1uajBkWCQ9LnNuLWlaek89TTI9X3M5TUg9c0FzTXpuKD16c1koJFllPTIuTW5qa2QpKVYJCQkJCQlYJz4nWD16c1koJFllPTIuTW5qSmQpWCRZZT0yLk1ualVkWCRZZT0yLk1uakxkO1YJCQkJbFZWCQkJCSQ9LnNuLWldJHY8X3lNcWxqJHNkPlM+c1laV085TSgnJyw+JDJPSDlzPXNPSG4pO1YJCQlsVlYJCQl6TT1Rekg+KCR2PF95TXE+U1NTPid2PF8uZWNzSHgnPj8+IlxIdEY2M0VDPiI+Oj4iXEh7dEtnSz4iKVYJCQkJWHNZWldPOU0oIlxIIiw+JD0uc24taSR2PF95TXEpO1YJCWxWVgkJek09UXpIPicnO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj4vT1lac1dNPkNnNyBtPm9iVgk+KlYJPio+S24yZVpNbj5zOU1IPXNBc016bj5zSD5DZzcgbT5vYj5uPWU9TVlNSD1uPmU9Pk1STTJRPXNPSD49c1lNWFYJPipWCT4qPmdNdlFzek05Pm5PPj0uZT0+ZVdzZW5Nbj5lek0+PXplMnlNOT5aek9aTXpXcSw+ek14ZXo5V01ubj5PQT59TT0uTXpWCT4qPnh6T1FaXzxxKCk+c24+MmVXV005Plp6c096Pj1PPkF6T1koKSw+Ck9zSCgpPmVIOT45PFp6TUFzUj5zbj5lOTlNOVYJPio+T0hXcT5zQT5ITU05TTlYVgk+KlYJPio+QHpNPVF6SAluPXpzSHgJcHdJPm49ZT1NWU1IPVYJPipoVglaek89TTI9TTk+QVFIMj1zT0g+XzJPWVpzV01feHpPUVpfPHEoKVYJXVYJCXNBPigyT1FIPSgkPS5zbi1pdjxfeHpPUVo8cSk+aT5hKVYJCV1WCQkJQU96Pigkcz5TPmEsPiQyPlM+Mk9RSD0oJD0uc24taXY8X3h6T1FaPHEpOz4kcz5CPiQyOz4kcysrKVYJCQldVgkJCQloaD4zbj5zPT5lV3pNZTlxPjJPWVpzV005P1YJCQkJc0E+KHNuX249enNIeCgkPS5zbi1pdjxfeHpPUVo8cWokc2QpKVYJCQkJXVYJCQkJCTJPSD1zSFFNO1YJCQkJbFZWCQkJCSQ9LnNuLWl2PF94ek9RWjxxaiRzZD5TPigkPS5zbi1pdjxfeHpPUVo8cWokc2RqJ01uMmVaTSdkPlNTUz5yRklwSz43Zz4kPS5zbi1pX3NuX1dzPU16ZVcoJD0uc24taXY8X3h6T1FaPHFqJHNkaidBc01XOSdkKSlWCQkJCQk/PiQ9LnNuLWl2PF94ek9RWjxxaiRzZGonQXNNVzknZFYJCQkJCTo+JD0uc24taVp6Tz1NMj1fczlNSD1zQXNNem4oJD0uc24taXY8X3h6T1FaPHFqJHNkaidBc01XOSdkKTtWCQkJbFZWCQkJek09UXpIPiJcSENnNyBtPm9iPiJYc1laV085TSgnLD4nLD4kPS5zbi1pdjxfeHpPUVo8cSk7VgkJbFZWCQl6TT1Rekg+Jyc7VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPi9PWVpzV00+N2c0S2c+b2JWCT4qVgk+Kj5LbjJlWk1uPnM5TUg9c0FzTXpuPnNIPjdnNEtnPm9iPm49ZT1NWU1IPW4+ZT0+TVJNMlE9c09IPj1zWU1YVgk+KlYJPio+Z012UXN6TTk+bk8+PS5lPT5lV3Nlbk1uPmV6TT49emUyeU05Plp6T1pNeldxLD56TXhlejlXTW5uPk9BPn1NPS5NelYJPio+T3o5TXpfPHEoKT5zbj4yZVdXTTk+WnpzT3o+PU8+QXpPWSgpLD4KT3NIKCk+ZUg5Pjk8WnpNQXNSPnNuPmU5OU05Vgk+Kj5PSFdxPnNBPkhNTTlNOVhWCT4qVgk+Kj5Aek09UXpICW49enNIeAlwd0k+bj1lPU1ZTUg9Vgk+KmhWCVp6Tz1NMj1NOT5BUUgyPXNPSD5fMk9ZWnNXTV9PejlNel88cSgpVgldVgkJc0E+KHNuX2V6emVxKCQ9LnNuLWl2PF9PejlNejxxKT4mJj4yT1FIPSgkPS5zbi1pdjxfT3o5TXo8cSk+aT5hKVYJCV1WCQkJQU96Pigkcz5TPmEsPiQyPlM+Mk9RSD0oJD0uc24taXY8X096OU16PHEpOz4kcz5CPiQyOz4kcysrKVYJCQldVgkJCQlzQT4oJD0uc24taXY8X096OU16PHFqJHNkaidNbjJlWk0nZD4hU1M+ckZJcEs+JiY+IT4kPS5zbi1pX3NuX1dzPU16ZVcoJD0uc24taXY8X096OU16PHFqJHNkaidBc01XOSdkKSlWCQkJCV1WCQkJCQkkPS5zbi1pdjxfT3o5TXo8cWokc2RqJ0FzTVc5J2Q+Uz4kPS5zbi1pWnpPPU0yPV9zOU1IPXNBc016bigkPS5zbi1pdjxfT3o5TXo8cWokc2RqJ0FzTVc5J2QpO1YJCQkJbFZWCQkJCSQ9LnNuLWl2PF9PejlNejxxaiRzZD5TPiQ9LnNuLWl2PF9PejlNejxxaiRzZGonQXNNVzknZFgkPS5zbi1pdjxfT3o5TXo8cWokc2RqJzlzek0yPXNPSCdkO1YJCQlsVlYJCQl6TT1Rekg+JD0uc24taXY8X096OU16PHE+Uz4iXEg3ZzRLZz5vYj4iWHNZWldPOU0oJyw+Jyw+JD0uc24taXY8X096OU16PHEpO1YJCWxWCQlNV25Nc0E+KHNuX249enNIeCgkPS5zbi1pdjxfT3o5TXo8cSkpVgkJXVYJCQl6TT1Rekg+JD0uc24taXY8X096OU16PHE7VgkJbFZWCQl6TT1Rekg+Jyc7VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPjc8Ck0yPT49Tz5GenplcVYJPipWCT4qPlRleU1uPmVIPk88Ck0yPT5lbj5zSFpRPT5lSDk+Mk9IY016PW4+PS5NPjJXZW5uPmNlenNlPFdNbj49Tz5lenplcT55TXFoY2VXblYJPipWCT4qPkBaZXplWQlPPApNMj1WCT4qPkB6TT1RekgJZXp6ZXFWCT4qaFYJWnpPPU0yPU05PkFRSDI9c09IPl9PPApNMj1fPU9fZXp6ZXEoJE88Ck0yPSlWCV1WCQlzQT4oPiE+c25fTzwKTTI9KCRPPApNMj0pKVYJCV1WCQkJek09UXpIPiRPPApNMj07VgkJbFZWCQkkZXp6ZXE+Uz5lenplcSgpO1YJCUFPek1lMi4+KHhNPV9PPApNMj1fY2V6bigkTzwKTTI9KT5lbj4keU1xPlNpPiRjZVcpVgkJXVYJCQloaD5ULk16TT5lek0+bk9ZTT48UXNXPT5zSD55TXFuPn1NPkhNTTk+PU8+c3hIT3pNPkFPej49LnNuPjJPSGNNem5zT0hWCQkJc0E+KD4hPnNuX088Ck0yPSgkY2VXKT4mJj4hPnNuX2V6emVxKCRjZVcpPiYmPiR5TXE+IVNTPidfWmV6TUg9X0hlWU0nKVYJCQldVgkJCQkkZXp6ZXFqJHlNcWQ+Uz4kY2VXO1YJCQlsVgkJbFZWCQl6TT1Rekg+JGV6emVxO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj43PApNMj0+PU8+Rnp6ZXFWCT4qVgk+Kj5UZXlNbj5lSD5PPApNMj0+ZW4+c0haUT0+ZUg5PjJPSGNNej1uPj0uTT4yV2Vubj5jZXpzZTxXTW4+PU8+ZXp6ZXE+eU1xaGNlV25WCT4qVgk+Kj5AWmV6ZVkJTzwKTTI9Vgk+Kj5Aek09UXpICWV6emVxVgk+KmhWCVp6Tz1NMj1NOT5BUUgyPXNPSD5fTzwKTTI9Xz1PX2V6emVxXzxlPTIuKCRPPApNMj0pVgldVgkJc0E+KD4hPnNuX088Ck0yPSgkTzwKTTI9KSlWCQldVgkJCXpNPVF6SD4kTzwKTTI9O1YJCWxWVgkJJGV6emVxPlM+ZXp6ZXEoKTtWCQkkT1E9PlM+eE09X088Ck0yPV9jZXpuKCRPPApNMj0pO1YJCSRBc01XOW4+Uz5lenplcV95TXFuKCRPUT0pO1ZWCQlBT3pNZTIuPigkQXNNVzluPmVuPiRjZVcpVgkJXVYJCQloaD5ULk16TT5lek0+bk9ZTT48UXNXPT5zSD55TXFuPn1NPkhNTTk+PU8+c3hIT3pNPkFPej49LnNuPjJPSGNNem5zT0hWCQkJc0E+KCRjZVc+IVNTPidfWmV6TUg9X0hlWU0nKVYJCQldVgkJCQkkcz5TPmE7VgkJCQlBT3pNZTIuPigkT1E9aiRjZVdkPmVuPiQ5ZT1lKVYJCQkJXVYJCQkJCSRlenplcWokcysrZGokY2VXZD5TPiQ5ZT1lO1YJCQkJbFYJCQlsVgkJbFZWCQl6TT1Rekg+JGV6emVxO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj5wPWV6PT4vZTIuTVYJPipWCT4qPnA9ZXo9bj53bz4yZTIuc0h4Vgk+KlYJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD5uPWV6PV8yZTIuTSgpVgldVgkJJD0uc24taXY8XzJlMi5zSHg+Uz5UZyBLO1YJCXpNPVF6SD4kPS5zbjtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+cD1PWj4vZTIuTVYJPipWCT4qPnA9T1puPndvPjJlMi5zSHhWCT4qVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWlE8V3MyPkFRSDI9c09IPm49T1pfMmUyLk0oKVYJXVYJCSQ9LnNuLWl2PF8yZTIuc0h4PlM+ckZJcEs7VgkJek09UXpIPiQ9LnNuO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj5yV1FuLj4vZTIuTVYJPipWCT4qPktZWj1zTW4+PS5NPndvPjJlMi5NVgk+KlYJPio+QHpNPVF6SAkvM180b192UU16cV88UXNXOU16Vgk+KmhWCVpRPFdzMj5BUUgyPXNPSD5BV1FuLl8yZTIuTSgpVgldVgkJJD0uc24taV96TW5NPV96UUgoZXp6ZXEoVgkJCSd2PF8yZTIuTV9uTVdNMj0nCQlTaT5lenplcSgpLFYJCQkndjxfMmUyLk1fQXpPWScJCQlTaT5lenplcSgpLFYJCQkndjxfMmUyLk1fCk9zSCcJCQlTaT5lenplcSgpLFYJCQkndjxfMmUyLk1ffS5Nek0nCQlTaT5lenplcSgpLFYJCQkndjxfMmUyLk1feHpPUVo8cScJCVNpPmV6emVxKCksVgkJCSd2PF8yZTIuTV8uZWNzSHgnCQlTaT5lenplcSgpLFYJCQkndjxfMmUyLk1fT3o5TXo8cScJCVNpPmV6emVxKCksVgkJCSd2PF8yZTIuTV9uTT0nCQkJU2k+ZXp6ZXEoKSxWCQkJJ3Y8XzJlMi5NX01Sc249bicJCVNpPmV6emVxKCksVgkJCSd2PF8yZTIuTV9IT19NbjJlWk0nCVNpPmV6emVxKClWCQkpKTtWVgkJek09UXpIPiQ9LnNuO1YJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj51TXp4TT4vZTIuTVYJPipWCT4qPnsuTUg+MmVXV005LD49LnNuPkFRSDI9c09IPllNenhNbj5lSHE+MmUyLk05PndvPmV6emVxbj59cz0uVgk+Kj5XTzJlV1dxPjJlV1dNOT5PSE1uWFYJPipWCT4qPkB6TT1RekgJY09zOVYJPipoVglaek89TTI9TTk+QVFIMj1zT0g+X1lNenhNXzJlMi5NKClWCV1WCQlzQT4oMk9RSD0oJD0uc24taXY8XzJlMi5NX01Sc249bik+U1NTPmEpVgkJXVYJCQl6TT1Rekg7VgkJbFYJCU1Xbk1zQT4oc0hfZXp6ZXEoJ25NV00yPScsPiQ9LnNuLWl2PF8yZTIuTV9NUnNuPW4sPlRnIEspKVYJCV1WCQkJJHY8X0hPX01uMmVaTT5TPiQ9LnNuLWl2PF8yZTIuTV9IT19NbjJlWk07VgkJbFZWCQlBT3pNZTIuPihlenplcV9RSHN2UU0oJD0uc24taXY8XzJlMi5NX01Sc249bik+ZW4+JGNlVyk+aGg+bk1XTTI9LD5Bek9ZLD5NPTJYVgkJXVYJCQkkdjxfY2V6c2U8V00JUz4ndjxfJ1gkY2VXO1YJCQkkdjxfMmUyLk1fY2V6CVM+J3Y8XzJlMi5NXydYJGNlVztWCQkJJHY8X0hNfT4JUz4kPS5zbi1pJHY8XzJlMi5NX2NlejtWVgkJCUFPej4oJHM+Uz5hLD4kMj5TPjJPUUg9KCQ9LnNuLWkkdjxfY2V6c2U8V00pOz4kcz5CPiQyOz4kcysrKVYJCQldVgkJCQlzQT4oPiE+c0hfZXp6ZXEoJD0uc24taV0kdjxfY2V6c2U8V01saiRzZCw+JHY8X0hNfSw+VGcgSykpVgkJCQldVgkJCQkJJHY8X0hNfWpkPlM+JD0uc24taV0kdjxfY2V6c2U8V01saiRzZDtWCQkJCQlzQT4oJGNlVz5TU1M+J25NV00yPScpVgkJCQkJXVYJCQkJCQkkdjxfSE9fTW4yZVpNamQ+Uz4kPS5zbi1pdjxfSE9fTW4yZVpNaiRzZDtWCQkJCQlsVgkJCQlsVgkJCWxWVgkJCSQ9LnNuLWkkdjxfY2V6c2U8V00+Uz4kdjxfSE19O1YJCQlzQT4oJGNlVz5TU1M+J25NV00yPScpVgkJCV1WCQkJCSQ9LnNuLWl2PF9IT19NbjJlWk0+Uz4kdjxfSE9fTW4yZVpNO1YJCQlsVgkJbFZWCQloaD4zQT59TT5lek0+Ilp6Tz1NMj1zSHg+czlNSD1zQXNNem4iPn1NPkhNTTk+PU8+TVJlWXNITT49Lk0+IkF6T1kiVgkJaGg+Wk96PXNPSD5PQT49Lk0+dlFNenE+PU8+OU09TXpZc0hNPnNBPj0uTXpNPmV6TT5lSHE+ZVdzZW5NblYJCXNBPigkPS5zbi1pX1p6Tz1NMj1fczlNSD1zQXNNem4+U1NTPlRnIEs+JiY+Mk9RSD0oJD0uc24taXY8XzJlMi5NX0F6T1kpPmk+YSlWCQldVgkJCSQ9LnNuLWlfPXplMnlfZVdzZW5NbigkPS5zbi1pdjxfQXpPWSk7VgkJbFYJbFZWCWhoPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVlYJaCoqVgk+Kj4zbj5Xcz1NemVXVgk+KlYJPio+NE09TXpZc0hNbj5zQT5lPm49enNIeD56TVp6TW5NSD1uPmU+V3M9TXplVz5jZVdRTT5Pej5lPkFzTVc5PkhlWU1WCT4qVgk+Kj5AWmV6ZVkJbj16c0h4CSRuPXpWCT4qPkB6TT1RekgJPE9PV1YJPipoVglaek89TTI9TTk+QVFIMj1zT0g+X3NuX1dzPU16ZVcoJG49eilWCV1WCQkkbj16PlM+PXpzWSgkbj16KTtWVgkJc0E+KE1ZWj1xKCRuPXopPjdnPjI9cVpNXzlzeHM9KCRuPXopPjdnPihuPXpzSHgpPihBV09lPSk+JG49ej5TU1M+JG49ej43Zz5zSF9lenplcShuPXo9T1FaWk16KCRuPXopLD5lenplcSgnVGcgSycsPidyRklwSycpLD5UZyBLKSlWCQldVgkJCXpNPVF6SD5UZyBLO1YJCWxWVgkJbj1lPXMyPiRfbj16O1ZWCQlzQT4oTVlaPXEoJF9uPXopKVYJCV1WCQkJJF9uPXo+Uz4oJD0uc24taV9NbjJlWk1fMi5lej4hU1M+JyInKVYJCQkJPz5lenplcSgnIicsPiInIik+Oj5lenplcSgiJyIpO1YJCWxWVgkJek09UXpIPnNIX2V6emVxKCRuPXpqYWQsPiRfbj16LD5UZyBLKTtWCWxWVgloaD4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZWCWgqKlYJPio+Z01uTT0+d1FNenE+b1FzVzlNej5jZVdRTW5YVgk+KlYJPio+bVE8V3MyV3EtY3NuczxXTT5ZTT0uTzk+PU8+ek1uTT0+PS5NPndvPmNlV1FNblhWCT4qVgk+Kj5Aek09UXpICS8zXzRvX3ZRTXpxXzxRc1c5TXpWCT4qaFYJWlE8V3MyPkFRSDI9c09IPnpNbk09X3ZRTXpxKClWCV1WCQkkPS5zbi1pX3pNbk09X25NV00yPSgpO1YJCSQ9LnNuLWlfek1uTT1ffXpzPU0oKTtWCQl6TT1Rekg+JD0uc247VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPmdNbk09bj49Lk0+dlFNenE+PFFzVzlNej5jZVdRTW5YPj4vZVdXTTk+PHE+PS5NPnhNPSgpPkFRSDI9c09IVgk+KlYJPio+QFplemVZCWV6emVxCUZIPmV6emVxPk9BPkFzTVc5bj49Tz56TW5NPVYJPio+QHpNPVF6SAljT3M5Vgk+KmhWCVp6Tz1NMj1NOT5BUUgyPXNPSD5fek1uTT1felFIKCR2PF96TW5NPV9zPU1ZbilWCV1WCQlBT3pNZTIuPigkdjxfek1uTT1fcz1NWW4+ZW4+JHM9TVk+U2k+JDlNQWVRVz1fY2VXUU0pVgkJXVYJCQkkPS5zbi1pJHM9TVk+Uz4kOU1BZVFXPV9jZVdRTTtWCQlsVglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPmdNbk09bj49Lk0+dlFNenE+PFFzVzlNej5jZVdRTW5YPj4vZVdXTTk+PHE+PS5NPnhNPSgpPkFRSDI9c09IVgk+KlYJPio+QHpNPVF6SAljT3M5Vgk+KmhWCVp6Tz1NMj1NOT5BUUgyPXNPSD5fek1uTT1fbk1XTTI9KClWCV1WCQkkPS5zbi1pX3pNbk09X3pRSChlenplcShWCQkJJ3Y8X25NV00yPScJCVNpPmV6emVxKCksVgkJCSd2PF9Bek9ZJwkJU2k+ZXp6ZXEoKSxWCQkJJ3Y8XwpPc0gnCQlTaT5lenplcSgpLFYJCQkndjxffS5Nek0nCQlTaT5lenplcSgpLFYJCQkndjxfeHpPUVo8cScJCVNpPmV6emVxKCksVgkJCSd2PF8uZWNzSHgnCQlTaT5lenplcSgpLFYJCQkndjxfT3o5TXo8cScJCVNpPmV6emVxKCksVgkJCSd2PF9lV3Nlbk05Xz1lPFdNbicJU2k+ZXp6ZXEoKSxWCQkJJ3Y8X0hPX01uMmVaTScJCVNpPmV6emVxKCksVgkJCSd2PF85c249c0gyPScJCVNpPnJGSXBLLFYJCQkndjxfV3NZcz0nCQlTaT5yRklwSyxWCQkJJ3Y8X09BQW5NPScJCVNpPnJGSXBLVgkJKSk7VglsVlYJaGg+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVgloKipWCT4qPmdNbk09bj49Lk0+dlFNenE+PFFzVzlNej4ifXpzPU0iPmNlV1FNblhWCT4qVgk+Kj4vZVdXTTk+PHE+PS5NPnNIbk16PSgpPlFaOWU9TSgpPnNIbk16PV88ZT0yLigpPlFaOWU9TV88ZT0yLigpPmVIOT45TVdNPU0oKT5BUUgyPXNPSG5WCT4qVgk+Kj5Aek09UXpICWNPczlWCT4qaFYJWnpPPU0yPU05PkFRSDI9c09IPl96TW5NPV99enM9TSgpVgldVgkJJD0uc24taV96TW5NPV96UUgoZXp6ZXEoVgkJCSd2PF9uTT0nCVNpPmV6emVxKCksVgkJCSd2PF9Bek9ZJwlTaT5lenplcSgpLFYJCQkndjxfCk9zSCcJU2k+ZXp6ZXEoKSxWCQkJJ3Y8X30uTXpNJwlTaT5lenplcSgpLFYJCQkndjxfT3o5TXo8cScJU2k+ZXp6ZXEoKSxWCQkJJ3Y8X3lNcW4nCVNpPmV6emVxKCksVgkJCSd2PF9Xc1lzPScJU2k+ckZJcEtWCQkpKTtWCWxWVmxW';$_D=strrev('edoced_46esab');eval($_D('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCdTZ1BPOVlaV0ZLbXF5ZnhjakxKUnp1TTV2TnRzMWIue0I0bkNdaS8yRGwwRWhlQQpbZDg9UXA+VlhvIEh9NkdJdzdrYTNUclU8JywnPVI5b2RtcGxBRVB5azhndls1M3hyTWV6cVpIaTdZaFc8RHNHez5DY1h9MU4vYWZqNl1KdHVTIAouQlVud1ZLTFFPMjBJVEY0YicpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw='));?>

Function Calls

strtr 1
strrev 1
defined 1
str_replace 1
base64_decode 2

Variables

$_D base64_decode
$_F index.php
$_R ?><?php /** * CodeIgniter * * An open source application ..
$_X ?><?php /** * CodeIgniter * * An open source application ..

Stats

MD5 11fc2a92ac503386da41c96c59f5d257
Eval Count 2
Decode Time 370 ms