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

Signing you up...

Thank you for signing up!

PHP Decode

eval("?>".base64_decode("PD9waHANCmRlZmluZWQoJ0JBU0VQQVRIJykgT1IgZXhpdCgnTm8gZGlyZWN0IHNjc..

Decoded Output download

?>b'<?php
defined(\'BASEPATH\') OR exit(\'No direct script access allowed\');

/**
 * @package		Online Shop Reseller
 * @author		Crews LibsCode (https://libscode.com)
 * @license		Protection
 */

/**
 * LICENSE
 */
define(\'LICENSE_CURLOPT_URL\', \'http://aktivasi.apikweb.com\');

/**
 * GLOBAL VARIABLE
 */
define(\'MASTER\', \'Master\');
define(\'RESELLER\', \'Reseller\');
define(\'USER\', \'User\');

class App_Public extends CI_Controller
{
	function __construct()
	{
		parent::__construct();

		if (!$this->db->table_exists(\'session\')) {
			echo $this->lang->line(\'not_install\');
			exit;
		}

		$this->_license();

		$this->load->library(\'session\');
		$this->load->library(\'cart\');
	}

	function _license()
	{
		if (!is_curl_installed()) {
			echo "cURL is not installed on this server";
			exit;
		} else {
			$curl = curl_init();
			curl_setopt_array($curl, array(
			    CURLOPT_RETURNTRANSFER => TRUE,
			    CURLOPT_URL            => LICENSE_CURLOPT_URL,
			    CURLOPT_USERAGENT      => $this->app_libs->setting(\'company_name\'),
			    CURLOPT_POST           => TRUE,
			    CURLOPT_POSTFIELDS     => array(
			        \'license_domain\' => $_SERVER[\'SERVER_NAME\'],
			        \'license_key\'    => $this->config->item(\'license_key\')
			    )
			));
			$resp = curl_exec($curl);
			curl_close($curl);
			$license = json_decode($resp);
			if (!empty($license)) {
				foreach ($license as $data) {
					if ($data->status === TRUE) {
						return TRUE;
					} else {
						echo "Error License! Please contact developer for this application.";
						exit;
					}
				}
			} else {
				echo "Error License! Please contact developer for this application.";
				exit;
			}
		}
	}

	function _generate($content, $data = NULL)
	{
		$data = array(
			\'head\'		=> $this->load->view(\'everywhere/head\', $data, TRUE),
			\'content\'	=> $this->load->view($content, $data, TRUE),
			\'foot\'		=> $this->load->view(\'everywhere/foot\', $data, TRUE),
			);
		$this->load->view(\'main\', $data);
    }
	
	function _AlphaNumberSpace($str)
	{
		if (preg_match(\'/^[a-zA-Z0-9\s]+$/\', $str))
		{
			return TRUE;
		}
		else
		{
			$this->form_validation->set_message(\'_AlphaNumberSpace\', $this->lang->line(\'error_callback\'));
			return FALSE;
		}
	}
}

class App_Master extends CI_Controller
{
	function __construct()
	{
		parent::__construct();

		if (!$this->db->table_exists(\'session\')) {
			echo $this->lang->line(\'not_install\');
			exit;
		}

		$this->_license();

		$this->load->library(\'session\');

		if ($this->app_libs->id_user())
		{
			if ($this->app_libs->is_master())
			{
				return TRUE;
			}
			else
			{
				show_404();
				return FALSE;
			}
		}
		else
		{
			show_404();
			return FALSE;
		}
	}

	function _license()
	{
		if (!is_curl_installed()) {
			echo "cURL is not installed on this server";
			exit;
		} else {
			$curl = curl_init();
			curl_setopt_array($curl, array(
			    CURLOPT_RETURNTRANSFER => TRUE,
			    CURLOPT_URL            => LICENSE_CURLOPT_URL,
			    CURLOPT_USERAGENT      => $this->app_libs->setting(\'company_name\'),
			    CURLOPT_POST           => TRUE,
			    CURLOPT_POSTFIELDS     => array(
			        \'license_domain\' => $_SERVER[\'SERVER_NAME\'],
			        \'license_key\'    => $this->config->item(\'license_key\')
			    )
			));
			$resp = curl_exec($curl);
			curl_close($curl);
			$license = json_decode($resp);
			if (!empty($license)) {
				foreach ($license as $data) {
					if ($data->status === TRUE) {
						return TRUE;
					} else {
						echo "Error License! Please contact developer for this application.";
						exit;
					}
				}
			} else {
				echo "Error License! Please contact developer for this application.";
				exit;
			}
		}
	}

	function _generate($content, $data = NULL)
	{
		$data = array(
			\'head\'		=> $this->load->view(\'everywhere/head\', $data, TRUE),
			\'content\'	=> $this->load->view($content, $data, TRUE),
			\'foot\'		=> $this->load->view(\'everywhere/foot\', $data, TRUE),
			);
		$this->load->view(\'main\', $data);
    }

	function _do_resize()
	{
		$filename = $this->input->post(\'new_val\');
		$source_path = $_SERVER[\'DOCUMENT_ROOT\'] .\'/\'. $this->config->item(\'file_upload_product\') . $filename;
		$target_path = $_SERVER[\'DOCUMENT_ROOT\'] .\'/\'. $this->config->item(\'file_upload_product\');
		$config_manip = array(
			\'image_library\' => \'gd2\',
	        \'source_image\' => $source_path,
	        \'new_image\' => $target_path,
	        \'maintain_ratio\' => TRUE,
	        \'create_thumb\' => TRUE,
	        \'thumb_marker\' => \'_thumb\',
	        \'width\' => 150,
	        \'height\' => 150
	    );
	    $this->load->library(\'image_lib\', $config_manip);
	    if (!$this->image_lib->resize()) {
	        echo $this->image_lib->display_errors();
	    }
	    $this->image_lib->clear();
	}

    function _color_master_private($str)
    {
		if ($str == \'skin-blue\' || $str == \'skin-black\' || $str == \'skin-purple\' || $str == \'skin-green\' || $str == \'skin-red\' || $str == \'skin-yellow\' || $str == \'skin-blue-light\' || $str == \'skin-black-light\' || $str == \'skin-purple-light\' || $str == \'skin-green-light\' || $str == \'skin-red-light\' || $str == \'skin-yellow-light\') {
			return TRUE;
		} else {
			$this->form_validation->set_message(\'_color_master_private\', $this->lang->line(\'error_callback_option\'));
			return FALSE;
		}
    }

    function _color_master_public($str)
    {
		if ($str == \'darcula\' || $str == \'pink\' || $str == \'navy\' || $str == \'red\' || $str == \'green\' || $str == \'orange\') {
			return TRUE;
		} else {
			$this->form_validation->set_message(\'_color_master_public\', $this->lang->line(\'error_callback_option\'));
			return FALSE;
		}
    }
	
	function _website($domain)
	{
		if (preg_match(\'/^(https?:\/\/)+([a-z0-9.-])*[a-z0-9]+\.[a-z]+[\/]$/\', strtolower($domain))) {
			return TRUE;
		} else {
			$this->form_validation->set_message(\'_website\', $this->lang->line(\'error_callback\'));
			return FALSE;
		}
	}

	function csrf()
	{
		echo \'<input type="hidden" name="\'.$this->security->get_csrf_token_name().\'" value="\'.$this->security->get_csrf_hash().\'">\';
	}
}

class App_Reseller extends CI_Controller
{
	function __construct()
	{
		parent::__construct();

		if (!$this->db->table_exists(\'session\')) {
			echo $this->lang->line(\'not_install\');
			exit;
		}

		$this->_license();

		$this->load->library(\'session\');

		if ($this->app_libs->id_user())
		{
			if ($this->app_libs->is_reseller())
			{
				return TRUE;
			}
			else
			{
				show_404();
				return FALSE;
			}
		}
		else
		{
			show_404();
			return FALSE;
		}
	}

	function _license()
	{
		if (!is_curl_installed()) {
			echo "cURL is not installed on this server";
			exit;
		} else {
			$curl = curl_init();
			curl_setopt_array($curl, array(
			    CURLOPT_RETURNTRANSFER => TRUE,
			    CURLOPT_URL            => LICENSE_CURLOPT_URL,
			    CURLOPT_USERAGENT      => $this->app_libs->setting(\'company_name\'),
			    CURLOPT_POST           => TRUE,
			    CURLOPT_POSTFIELDS     => array(
			        \'license_domain\' => $_SERVER[\'SERVER_NAME\'],
			        \'license_key\'    => $this->config->item(\'license_key\')
			    )
			));
			$resp = curl_exec($curl);
			curl_close($curl);
			$license = json_decode($resp);
			if (!empty($license)) {
				foreach ($license as $data) {
					if ($data->status === TRUE) {
						return TRUE;
					} else {
						echo "Error License! Please contact developer for this application.";
						exit;
					}
				}
			} else {
				echo "Error License! Please contact developer for this application.";
				exit;
			}
		}
	}

	function _generate($content, $data = NULL)
	{
		$data = array(
			\'head\'		=> $this->load->view(\'everywhere/head\', $data, TRUE),
			\'content\'	=> $this->load->view($content, $data, TRUE),
			\'foot\'		=> $this->load->view(\'everywhere/foot\', $data, TRUE),
			);
		$this->load->view(\'main\', $data);
    }

    function _color_reseller_public($str)
    {
		if ($str == \'darcula\' || $str == \'pink\' || $str == \'navy\' || $str == \'red\' || $str == \'green\' || $str == \'orange\') {
			return TRUE;
		} else {
			$this->form_validation->set_message(\'_color_master_public\', $this->lang->line(\'error_callback_option\'));
			return FALSE;
		}
    }
}

class App_Install extends CI_Controller
{
	function __construct()
	{
		parent::__construct();

		$this->load->library(\'migration\');
	}

	function _generate($content, $data = NULL)
	{
		$data = array(
			\'head\'		=> $this->load->view(\'everywhere/head\', $data, TRUE),
			\'content\'	=> $this->load->view($content, $data, TRUE),
			\'foot\'		=> $this->load->view(\'everywhere/foot\', $data, TRUE),
			);
		$this->load->view(\'main\', $data);
    }
}
'

Did this file decode correctly?

Original Code

eval("?>".base64_decode("PD9waHANCmRlZmluZWQoJ0JBU0VQQVRIJykgT1IgZXhpdCgnTm8gZGlyZWN0IHNjcmlwdCBhY2Nlc3MgYWxsb3dlZCcpOw0KDQovKioNCiAqIEBwYWNrYWdlCQlPbmxpbmUgU2hvcCBSZXNlbGxlcg0KICogQGF1dGhvcgkJQ3Jld3MgTGlic0NvZGUgKGh0dHBzOi8vbGlic2NvZGUuY29tKQ0KICogQGxpY2Vuc2UJCVByb3RlY3Rpb24NCiAqLw0KDQovKioNCiAqIExJQ0VOU0UNCiAqLw0KZGVmaW5lKCdMSUNFTlNFX0NVUkxPUFRfVVJMJywgJ2h0dHA6Ly9ha3RpdmFzaS5hcGlrd2ViLmNvbScpOw0KDQovKioNCiAqIEdMT0JBTCBWQVJJQUJMRQ0KICovDQpkZWZpbmUoJ01BU1RFUicsICdNYXN0ZXInKTsNCmRlZmluZSgnUkVTRUxMRVInLCAnUmVzZWxsZXInKTsNCmRlZmluZSgnVVNFUicsICdVc2VyJyk7DQoNCmNsYXNzIEFwcF9QdWJsaWMgZXh0ZW5kcyBDSV9Db250cm9sbGVyDQp7DQoJZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQ0KCXsNCgkJcGFyZW50OjpfX2NvbnN0cnVjdCgpOw0KDQoJCWlmICghJHRoaXMtPmRiLT50YWJsZV9leGlzdHMoJ3Nlc3Npb24nKSkgew0KCQkJZWNobyAkdGhpcy0+bGFuZy0+bGluZSgnbm90X2luc3RhbGwnKTsNCgkJCWV4aXQ7DQoJCX0NCg0KCQkkdGhpcy0+X2xpY2Vuc2UoKTsNCg0KCQkkdGhpcy0+bG9hZC0+bGlicmFyeSgnc2Vzc2lvbicpOw0KCQkkdGhpcy0+bG9hZC0+bGlicmFyeSgnY2FydCcpOw0KCX0NCg0KCWZ1bmN0aW9uIF9saWNlbnNlKCkNCgl7DQoJCWlmICghaXNfY3VybF9pbnN0YWxsZWQoKSkgew0KCQkJZWNobyAiY1VSTCBpcyBub3QgaW5zdGFsbGVkIG9uIHRoaXMgc2VydmVyIjsNCgkJCWV4aXQ7DQoJCX0gZWxzZSB7DQoJCQkkY3VybCA9IGN1cmxfaW5pdCgpOw0KCQkJY3VybF9zZXRvcHRfYXJyYXkoJGN1cmwsIGFycmF5KA0KCQkJICAgIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gVFJVRSwNCgkJCSAgICBDVVJMT1BUX1VSTCAgICAgICAgICAgID0+IExJQ0VOU0VfQ1VSTE9QVF9VUkwsDQoJCQkgICAgQ1VSTE9QVF9VU0VSQUdFTlQgICAgICA9PiAkdGhpcy0+YXBwX2xpYnMtPnNldHRpbmcoJ2NvbXBhbnlfbmFtZScpLA0KCQkJICAgIENVUkxPUFRfUE9TVCAgICAgICAgICAgPT4gVFJVRSwNCgkJCSAgICBDVVJMT1BUX1BPU1RGSUVMRFMgICAgID0+IGFycmF5KA0KCQkJICAgICAgICAnbGljZW5zZV9kb21haW4nID0+ICRfU0VSVkVSWydTRVJWRVJfTkFNRSddLA0KCQkJICAgICAgICAnbGljZW5zZV9rZXknICAgID0+ICR0aGlzLT5jb25maWctPml0ZW0oJ2xpY2Vuc2Vfa2V5JykNCgkJCSAgICApDQoJCQkpKTsNCgkJCSRyZXNwID0gY3VybF9leGVjKCRjdXJsKTsNCgkJCWN1cmxfY2xvc2UoJGN1cmwpOw0KCQkJJGxpY2Vuc2UgPSBqc29uX2RlY29kZSgkcmVzcCk7DQoJCQlpZiAoIWVtcHR5KCRsaWNlbnNlKSkgew0KCQkJCWZvcmVhY2ggKCRsaWNlbnNlIGFzICRkYXRhKSB7DQoJCQkJCWlmICgkZGF0YS0+c3RhdHVzID09PSBUUlVFKSB7DQoJCQkJCQlyZXR1cm4gVFJVRTsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCWVjaG8gIkVycm9yIExpY2Vuc2UhIFBsZWFzZSBjb250YWN0IGRldmVsb3BlciBmb3IgdGhpcyBhcHBsaWNhdGlvbi4iOw0KCQkJCQkJZXhpdDsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAiRXJyb3IgTGljZW5zZSEgUGxlYXNlIGNvbnRhY3QgZGV2ZWxvcGVyIGZvciB0aGlzIGFwcGxpY2F0aW9uLiI7DQoJCQkJZXhpdDsNCgkJCX0NCgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIF9nZW5lcmF0ZSgkY29udGVudCwgJGRhdGEgPSBOVUxMKQ0KCXsNCgkJJGRhdGEgPSBhcnJheSgNCgkJCSdoZWFkJwkJPT4gJHRoaXMtPmxvYWQtPnZpZXcoJ2V2ZXJ5d2hlcmUvaGVhZCcsICRkYXRhLCBUUlVFKSwNCgkJCSdjb250ZW50Jwk9PiAkdGhpcy0+bG9hZC0+dmlldygkY29udGVudCwgJGRhdGEsIFRSVUUpLA0KCQkJJ2Zvb3QnCQk9PiAkdGhpcy0+bG9hZC0+dmlldygnZXZlcnl3aGVyZS9mb290JywgJGRhdGEsIFRSVUUpLA0KCQkJKTsNCgkJJHRoaXMtPmxvYWQtPnZpZXcoJ21haW4nLCAkZGF0YSk7DQogICAgfQ0KCQ0KCWZ1bmN0aW9uIF9BbHBoYU51bWJlclNwYWNlKCRzdHIpDQoJew0KCQlpZiAocHJlZ19tYXRjaCgnL15bYS16QS1aMC05XHNdKyQvJywgJHN0cikpDQoJCXsNCgkJCXJldHVybiBUUlVFOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJHRoaXMtPmZvcm1fdmFsaWRhdGlvbi0+c2V0X21lc3NhZ2UoJ19BbHBoYU51bWJlclNwYWNlJywgJHRoaXMtPmxhbmctPmxpbmUoJ2Vycm9yX2NhbGxiYWNrJykpOw0KCQkJcmV0dXJuIEZBTFNFOw0KCQl9DQoJfQ0KfQ0KDQpjbGFzcyBBcHBfTWFzdGVyIGV4dGVuZHMgQ0lfQ29udHJvbGxlcg0Kew0KCWZ1bmN0aW9uIF9fY29uc3RydWN0KCkNCgl7DQoJCXBhcmVudDo6X19jb25zdHJ1Y3QoKTsNCg0KCQlpZiAoISR0aGlzLT5kYi0+dGFibGVfZXhpc3RzKCdzZXNzaW9uJykpIHsNCgkJCWVjaG8gJHRoaXMtPmxhbmctPmxpbmUoJ25vdF9pbnN0YWxsJyk7DQoJCQlleGl0Ow0KCQl9DQoNCgkJJHRoaXMtPl9saWNlbnNlKCk7DQoNCgkJJHRoaXMtPmxvYWQtPmxpYnJhcnkoJ3Nlc3Npb24nKTsNCg0KCQlpZiAoJHRoaXMtPmFwcF9saWJzLT5pZF91c2VyKCkpDQoJCXsNCgkJCWlmICgkdGhpcy0+YXBwX2xpYnMtPmlzX21hc3RlcigpKQ0KCQkJew0KCQkJCXJldHVybiBUUlVFOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCXNob3dfNDA0KCk7DQoJCQkJcmV0dXJuIEZBTFNFOw0KCQkJfQ0KCQl9DQoJCWVsc2UNCgkJew0KCQkJc2hvd180MDQoKTsNCgkJCXJldHVybiBGQUxTRTsNCgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIF9saWNlbnNlKCkNCgl7DQoJCWlmICghaXNfY3VybF9pbnN0YWxsZWQoKSkgew0KCQkJZWNobyAiY1VSTCBpcyBub3QgaW5zdGFsbGVkIG9uIHRoaXMgc2VydmVyIjsNCgkJCWV4aXQ7DQoJCX0gZWxzZSB7DQoJCQkkY3VybCA9IGN1cmxfaW5pdCgpOw0KCQkJY3VybF9zZXRvcHRfYXJyYXkoJGN1cmwsIGFycmF5KA0KCQkJICAgIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gVFJVRSwNCgkJCSAgICBDVVJMT1BUX1VSTCAgICAgICAgICAgID0+IExJQ0VOU0VfQ1VSTE9QVF9VUkwsDQoJCQkgICAgQ1VSTE9QVF9VU0VSQUdFTlQgICAgICA9PiAkdGhpcy0+YXBwX2xpYnMtPnNldHRpbmcoJ2NvbXBhbnlfbmFtZScpLA0KCQkJICAgIENVUkxPUFRfUE9TVCAgICAgICAgICAgPT4gVFJVRSwNCgkJCSAgICBDVVJMT1BUX1BPU1RGSUVMRFMgICAgID0+IGFycmF5KA0KCQkJICAgICAgICAnbGljZW5zZV9kb21haW4nID0+ICRfU0VSVkVSWydTRVJWRVJfTkFNRSddLA0KCQkJICAgICAgICAnbGljZW5zZV9rZXknICAgID0+ICR0aGlzLT5jb25maWctPml0ZW0oJ2xpY2Vuc2Vfa2V5JykNCgkJCSAgICApDQoJCQkpKTsNCgkJCSRyZXNwID0gY3VybF9leGVjKCRjdXJsKTsNCgkJCWN1cmxfY2xvc2UoJGN1cmwpOw0KCQkJJGxpY2Vuc2UgPSBqc29uX2RlY29kZSgkcmVzcCk7DQoJCQlpZiAoIWVtcHR5KCRsaWNlbnNlKSkgew0KCQkJCWZvcmVhY2ggKCRsaWNlbnNlIGFzICRkYXRhKSB7DQoJCQkJCWlmICgkZGF0YS0+c3RhdHVzID09PSBUUlVFKSB7DQoJCQkJCQlyZXR1cm4gVFJVRTsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCWVjaG8gIkVycm9yIExpY2Vuc2UhIFBsZWFzZSBjb250YWN0IGRldmVsb3BlciBmb3IgdGhpcyBhcHBsaWNhdGlvbi4iOw0KCQkJCQkJZXhpdDsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAiRXJyb3IgTGljZW5zZSEgUGxlYXNlIGNvbnRhY3QgZGV2ZWxvcGVyIGZvciB0aGlzIGFwcGxpY2F0aW9uLiI7DQoJCQkJZXhpdDsNCgkJCX0NCgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIF9nZW5lcmF0ZSgkY29udGVudCwgJGRhdGEgPSBOVUxMKQ0KCXsNCgkJJGRhdGEgPSBhcnJheSgNCgkJCSdoZWFkJwkJPT4gJHRoaXMtPmxvYWQtPnZpZXcoJ2V2ZXJ5d2hlcmUvaGVhZCcsICRkYXRhLCBUUlVFKSwNCgkJCSdjb250ZW50Jwk9PiAkdGhpcy0+bG9hZC0+dmlldygkY29udGVudCwgJGRhdGEsIFRSVUUpLA0KCQkJJ2Zvb3QnCQk9PiAkdGhpcy0+bG9hZC0+dmlldygnZXZlcnl3aGVyZS9mb290JywgJGRhdGEsIFRSVUUpLA0KCQkJKTsNCgkJJHRoaXMtPmxvYWQtPnZpZXcoJ21haW4nLCAkZGF0YSk7DQogICAgfQ0KDQoJZnVuY3Rpb24gX2RvX3Jlc2l6ZSgpDQoJew0KCQkkZmlsZW5hbWUgPSAkdGhpcy0+aW5wdXQtPnBvc3QoJ25ld192YWwnKTsNCgkJJHNvdXJjZV9wYXRoID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuJy8nLiAkdGhpcy0+Y29uZmlnLT5pdGVtKCdmaWxlX3VwbG9hZF9wcm9kdWN0JykgLiAkZmlsZW5hbWU7DQoJCSR0YXJnZXRfcGF0aCA9ICRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLicvJy4gJHRoaXMtPmNvbmZpZy0+aXRlbSgnZmlsZV91cGxvYWRfcHJvZHVjdCcpOw0KCQkkY29uZmlnX21hbmlwID0gYXJyYXkoDQoJCQknaW1hZ2VfbGlicmFyeScgPT4gJ2dkMicsDQoJICAgICAgICAnc291cmNlX2ltYWdlJyA9PiAkc291cmNlX3BhdGgsDQoJICAgICAgICAnbmV3X2ltYWdlJyA9PiAkdGFyZ2V0X3BhdGgsDQoJICAgICAgICAnbWFpbnRhaW5fcmF0aW8nID0+IFRSVUUsDQoJICAgICAgICAnY3JlYXRlX3RodW1iJyA9PiBUUlVFLA0KCSAgICAgICAgJ3RodW1iX21hcmtlcicgPT4gJ190aHVtYicsDQoJICAgICAgICAnd2lkdGgnID0+IDE1MCwNCgkgICAgICAgICdoZWlnaHQnID0+IDE1MA0KCSAgICApOw0KCSAgICAkdGhpcy0+bG9hZC0+bGlicmFyeSgnaW1hZ2VfbGliJywgJGNvbmZpZ19tYW5pcCk7DQoJICAgIGlmICghJHRoaXMtPmltYWdlX2xpYi0+cmVzaXplKCkpIHsNCgkgICAgICAgIGVjaG8gJHRoaXMtPmltYWdlX2xpYi0+ZGlzcGxheV9lcnJvcnMoKTsNCgkgICAgfQ0KCSAgICAkdGhpcy0+aW1hZ2VfbGliLT5jbGVhcigpOw0KCX0NCg0KICAgIGZ1bmN0aW9uIF9jb2xvcl9tYXN0ZXJfcHJpdmF0ZSgkc3RyKQ0KICAgIHsNCgkJaWYgKCRzdHIgPT0gJ3NraW4tYmx1ZScgfHwgJHN0ciA9PSAnc2tpbi1ibGFjaycgfHwgJHN0ciA9PSAnc2tpbi1wdXJwbGUnIHx8ICRzdHIgPT0gJ3NraW4tZ3JlZW4nIHx8ICRzdHIgPT0gJ3NraW4tcmVkJyB8fCAkc3RyID09ICdza2luLXllbGxvdycgfHwgJHN0ciA9PSAnc2tpbi1ibHVlLWxpZ2h0JyB8fCAkc3RyID09ICdza2luLWJsYWNrLWxpZ2h0JyB8fCAkc3RyID09ICdza2luLXB1cnBsZS1saWdodCcgfHwgJHN0ciA9PSAnc2tpbi1ncmVlbi1saWdodCcgfHwgJHN0ciA9PSAnc2tpbi1yZWQtbGlnaHQnIHx8ICRzdHIgPT0gJ3NraW4teWVsbG93LWxpZ2h0Jykgew0KCQkJcmV0dXJuIFRSVUU7DQoJCX0gZWxzZSB7DQoJCQkkdGhpcy0+Zm9ybV92YWxpZGF0aW9uLT5zZXRfbWVzc2FnZSgnX2NvbG9yX21hc3Rlcl9wcml2YXRlJywgJHRoaXMtPmxhbmctPmxpbmUoJ2Vycm9yX2NhbGxiYWNrX29wdGlvbicpKTsNCgkJCXJldHVybiBGQUxTRTsNCgkJfQ0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIF9jb2xvcl9tYXN0ZXJfcHVibGljKCRzdHIpDQogICAgew0KCQlpZiAoJHN0ciA9PSAnZGFyY3VsYScgfHwgJHN0ciA9PSAncGluaycgfHwgJHN0ciA9PSAnbmF2eScgfHwgJHN0ciA9PSAncmVkJyB8fCAkc3RyID09ICdncmVlbicgfHwgJHN0ciA9PSAnb3JhbmdlJykgew0KCQkJcmV0dXJuIFRSVUU7DQoJCX0gZWxzZSB7DQoJCQkkdGhpcy0+Zm9ybV92YWxpZGF0aW9uLT5zZXRfbWVzc2FnZSgnX2NvbG9yX21hc3Rlcl9wdWJsaWMnLCAkdGhpcy0+bGFuZy0+bGluZSgnZXJyb3JfY2FsbGJhY2tfb3B0aW9uJykpOw0KCQkJcmV0dXJuIEZBTFNFOw0KCQl9DQogICAgfQ0KCQ0KCWZ1bmN0aW9uIF93ZWJzaXRlKCRkb21haW4pDQoJew0KCQlpZiAocHJlZ19tYXRjaCgnL14oaHR0cHM/OlwvXC8pKyhbYS16MC05Li1dKSpbYS16MC05XStcLlthLXpdK1tcL10kLycsIHN0cnRvbG93ZXIoJGRvbWFpbikpKSB7DQoJCQlyZXR1cm4gVFJVRTsNCgkJfSBlbHNlIHsNCgkJCSR0aGlzLT5mb3JtX3ZhbGlkYXRpb24tPnNldF9tZXNzYWdlKCdfd2Vic2l0ZScsICR0aGlzLT5sYW5nLT5saW5lKCdlcnJvcl9jYWxsYmFjaycpKTsNCgkJCXJldHVybiBGQUxTRTsNCgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIGNzcmYoKQ0KCXsNCgkJZWNobyAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJy4kdGhpcy0+c2VjdXJpdHktPmdldF9jc3JmX3Rva2VuX25hbWUoKS4nIiB2YWx1ZT0iJy4kdGhpcy0+c2VjdXJpdHktPmdldF9jc3JmX2hhc2goKS4nIj4nOw0KCX0NCn0NCg0KY2xhc3MgQXBwX1Jlc2VsbGVyIGV4dGVuZHMgQ0lfQ29udHJvbGxlcg0Kew0KCWZ1bmN0aW9uIF9fY29uc3RydWN0KCkNCgl7DQoJCXBhcmVudDo6X19jb25zdHJ1Y3QoKTsNCg0KCQlpZiAoISR0aGlzLT5kYi0+dGFibGVfZXhpc3RzKCdzZXNzaW9uJykpIHsNCgkJCWVjaG8gJHRoaXMtPmxhbmctPmxpbmUoJ25vdF9pbnN0YWxsJyk7DQoJCQlleGl0Ow0KCQl9DQoNCgkJJHRoaXMtPl9saWNlbnNlKCk7DQoNCgkJJHRoaXMtPmxvYWQtPmxpYnJhcnkoJ3Nlc3Npb24nKTsNCg0KCQlpZiAoJHRoaXMtPmFwcF9saWJzLT5pZF91c2VyKCkpDQoJCXsNCgkJCWlmICgkdGhpcy0+YXBwX2xpYnMtPmlzX3Jlc2VsbGVyKCkpDQoJCQl7DQoJCQkJcmV0dXJuIFRSVUU7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJc2hvd180MDQoKTsNCgkJCQlyZXR1cm4gRkFMU0U7DQoJCQl9DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQlzaG93XzQwNCgpOw0KCQkJcmV0dXJuIEZBTFNFOw0KCQl9DQoJfQ0KDQoJZnVuY3Rpb24gX2xpY2Vuc2UoKQ0KCXsNCgkJaWYgKCFpc19jdXJsX2luc3RhbGxlZCgpKSB7DQoJCQllY2hvICJjVVJMIGlzIG5vdCBpbnN0YWxsZWQgb24gdGhpcyBzZXJ2ZXIiOw0KCQkJZXhpdDsNCgkJfSBlbHNlIHsNCgkJCSRjdXJsID0gY3VybF9pbml0KCk7DQoJCQljdXJsX3NldG9wdF9hcnJheSgkY3VybCwgYXJyYXkoDQoJCQkgICAgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiA9PiBUUlVFLA0KCQkJICAgIENVUkxPUFRfVVJMICAgICAgICAgICAgPT4gTElDRU5TRV9DVVJMT1BUX1VSTCwNCgkJCSAgICBDVVJMT1BUX1VTRVJBR0VOVCAgICAgID0+ICR0aGlzLT5hcHBfbGlicy0+c2V0dGluZygnY29tcGFueV9uYW1lJyksDQoJCQkgICAgQ1VSTE9QVF9QT1NUICAgICAgICAgICA9PiBUUlVFLA0KCQkJICAgIENVUkxPUFRfUE9TVEZJRUxEUyAgICAgPT4gYXJyYXkoDQoJCQkgICAgICAgICdsaWNlbnNlX2RvbWFpbicgPT4gJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10sDQoJCQkgICAgICAgICdsaWNlbnNlX2tleScgICAgPT4gJHRoaXMtPmNvbmZpZy0+aXRlbSgnbGljZW5zZV9rZXknKQ0KCQkJICAgICkNCgkJCSkpOw0KCQkJJHJlc3AgPSBjdXJsX2V4ZWMoJGN1cmwpOw0KCQkJY3VybF9jbG9zZSgkY3VybCk7DQoJCQkkbGljZW5zZSA9IGpzb25fZGVjb2RlKCRyZXNwKTsNCgkJCWlmICghZW1wdHkoJGxpY2Vuc2UpKSB7DQoJCQkJZm9yZWFjaCAoJGxpY2Vuc2UgYXMgJGRhdGEpIHsNCgkJCQkJaWYgKCRkYXRhLT5zdGF0dXMgPT09IFRSVUUpIHsNCgkJCQkJCXJldHVybiBUUlVFOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJZWNobyAiRXJyb3IgTGljZW5zZSEgUGxlYXNlIGNvbnRhY3QgZGV2ZWxvcGVyIGZvciB0aGlzIGFwcGxpY2F0aW9uLiI7DQoJCQkJCQlleGl0Ow0KCQkJCQl9DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQllY2hvICJFcnJvciBMaWNlbnNlISBQbGVhc2UgY29udGFjdCBkZXZlbG9wZXIgZm9yIHRoaXMgYXBwbGljYXRpb24uIjsNCgkJCQlleGl0Ow0KCQkJfQ0KCQl9DQoJfQ0KDQoJZnVuY3Rpb24gX2dlbmVyYXRlKCRjb250ZW50LCAkZGF0YSA9IE5VTEwpDQoJew0KCQkkZGF0YSA9IGFycmF5KA0KCQkJJ2hlYWQnCQk9PiAkdGhpcy0+bG9hZC0+dmlldygnZXZlcnl3aGVyZS9oZWFkJywgJGRhdGEsIFRSVUUpLA0KCQkJJ2NvbnRlbnQnCT0+ICR0aGlzLT5sb2FkLT52aWV3KCRjb250ZW50LCAkZGF0YSwgVFJVRSksDQoJCQknZm9vdCcJCT0+ICR0aGlzLT5sb2FkLT52aWV3KCdldmVyeXdoZXJlL2Zvb3QnLCAkZGF0YSwgVFJVRSksDQoJCQkpOw0KCQkkdGhpcy0+bG9hZC0+dmlldygnbWFpbicsICRkYXRhKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBfY29sb3JfcmVzZWxsZXJfcHVibGljKCRzdHIpDQogICAgew0KCQlpZiAoJHN0ciA9PSAnZGFyY3VsYScgfHwgJHN0ciA9PSAncGluaycgfHwgJHN0ciA9PSAnbmF2eScgfHwgJHN0ciA9PSAncmVkJyB8fCAkc3RyID09ICdncmVlbicgfHwgJHN0ciA9PSAnb3JhbmdlJykgew0KCQkJcmV0dXJuIFRSVUU7DQoJCX0gZWxzZSB7DQoJCQkkdGhpcy0+Zm9ybV92YWxpZGF0aW9uLT5zZXRfbWVzc2FnZSgnX2NvbG9yX21hc3Rlcl9wdWJsaWMnLCAkdGhpcy0+bGFuZy0+bGluZSgnZXJyb3JfY2FsbGJhY2tfb3B0aW9uJykpOw0KCQkJcmV0dXJuIEZBTFNFOw0KCQl9DQogICAgfQ0KfQ0KDQpjbGFzcyBBcHBfSW5zdGFsbCBleHRlbmRzIENJX0NvbnRyb2xsZXINCnsNCglmdW5jdGlvbiBfX2NvbnN0cnVjdCgpDQoJew0KCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCk7DQoNCgkJJHRoaXMtPmxvYWQtPmxpYnJhcnkoJ21pZ3JhdGlvbicpOw0KCX0NCg0KCWZ1bmN0aW9uIF9nZW5lcmF0ZSgkY29udGVudCwgJGRhdGEgPSBOVUxMKQ0KCXsNCgkJJGRhdGEgPSBhcnJheSgNCgkJCSdoZWFkJwkJPT4gJHRoaXMtPmxvYWQtPnZpZXcoJ2V2ZXJ5d2hlcmUvaGVhZCcsICRkYXRhLCBUUlVFKSwNCgkJCSdjb250ZW50Jwk9PiAkdGhpcy0+bG9hZC0+dmlldygkY29udGVudCwgJGRhdGEsIFRSVUUpLA0KCQkJJ2Zvb3QnCQk9PiAkdGhpcy0+bG9hZC0+dmlldygnZXZlcnl3aGVyZS9mb290JywgJGRhdGEsIFRSVUUpLA0KCQkJKTsNCgkJJHRoaXMtPmxvYWQtPnZpZXcoJ21haW4nLCAkZGF0YSk7DQogICAgfQ0KfQ0K"));

Function Calls

base64_decode 1

Variables

None

Stats

MD5 5479d3f2ac6411b65764641281f40969
Eval Count 1
Decode Time 89 ms