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

Signing you up...

Thank you for signing up!

PHP Decode

<?php $_F=__FILE__;$_C991400668='Pz48PzZJNgoJa2ggKCF0TGhrbEx0KCdfMVFfakJXUVliS18nKSkKCUxGa..

Decoded Output download

?><?php
	if (!defined('_PS_VERSION_'))
	exit;
	if (!function_exists('curl_version'))
		exit;
require_once(_PS_MODULE_DIR_. 'pssms/classes/pssmsapi.php');
	class pssms extends Module
	{
		private $tabs_array;
		private $hooks_array = array(
			array('name' => 'actionCustomerAccountAdd'),
			array('name' => 'actionValidateOrder'),
			array('name' => 'actionOrderStatusUpdate'),
			array('name' => 'actionAdminOrdersTrackingNumberUpdate'),
			array('name' => 'jossmsContactForm', 'custom' => true, 'title' => 'Post submit of contact form',
			'description' => 'This hook is called when a message is sent from contact form')
		);

		public function __construct()
		{
			$this->name = 'pssms';
			$this->tab = 'administration';
			$this->version = '1.5';
			$this->author = 'aktifmagaza.net';
			$this->need_instance = 1;

			parent::__construct();

			$this->displayName = $this->l('PS SMS');

			$config = Configuration::getMultiple(array('JOSSMS_ZENZIVA_USERKEY', 'JOSSMS_ZENZIVA_PASSKEY', 'JOSSMS_ZENZIVA_URL', 'JOSSMS_ZENZIVA_HPADMIN'));
			if (!isset($config['JOSSMS_ZENZIVA_USERKEY']) || !isset($config['JOSSMS_ZENZIVA_PASSKEY'])
			|| !isset($config['JOSSMS_ZENZIVA_URL']) || !isset($config['JOSSMS_ZENZIVA_HPADMIN']))
				$this->warning = $this->l('Herhangi bir api ayar bulunamad !');
			$this->description = $this->l('prestashop iin tam uyumlu sms modl.');
			$this->confirmUninstall = $this->l('Modul Kaldrlacak Eminmisiniz ?');

			$this->tabs_array = array(
				'AdminAccountSettings'			=> 'Hesap Ayarlar', 
				'AdminSmsSettings'	=> 'SMS Ayarlar', 
				'AdminSendMessage' 		=> 'SMS Gnder', 
				'AdminpssmsHistorys' 		=> 'SMS Gemii', 
				'AdminpssmsBuy' 		=> 'Kredi Sorgula/ Satn Al', 
			);
		}

		public function install()
		{
			if (!parent::install() || !$this->createDB() || !$this->createMenu() || !$this->createHooks())
				return false;

			return true;
		}

		public function uninstall()
		{
			if (!parent::uninstall() || !$this->dropDB() || !$this->removeMenu() || !$this->removeSetting() || !$this->removeHooks())
				return false;
			return true;
		}

		private function createDB()
		{
			Db::getInstance()->Execute(
				'CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'jossms_history` (
				  `id_jossms_history` int(10) unsigned NOT NULL auto_increment,
				  `recipient` varchar(100) NOT NULL,
				  `phone` varchar(16) NOT NULL,
				  `event` varchar(64) NOT NULL,
				  `message` text NOT NULL,
				  `status` tinyint(1) NOT NULL default \'0\',
				  `error` varchar(255) default NULL,
				  `date_add` datetime NOT NULL,
				  PRIMARY KEY  (`id_jossms_history`)
				) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;'
			);

			Db::getInstance()->Execute(
				'CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'jossms_phone_prefix` (
				`iso_code` varchar(3) NOT NULL,
				`prefix` int(10) unsigned default NULL,
				PRIMARY KEY  (`iso_code`)
				) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;'
			);

			Db::getInstance()->Execute('
				INSERT INTO `'._DB_PREFIX_."jossms_phone_prefix` (`iso_code`, `prefix`) VALUES
					('AD', 376),('AE', 971),('AF', 93),('AG', 1268),('AI', 1264),('AL', 355),('AM', 374),('AN', 599),('AO', 244),
					('AQ', 672),('AR', 54),('AS', 1684),('AT', 43),('AU', 61),('AW', 297),('AX', NULL),('AZ', 994),('BA', 387),
					('BB', 1246),('BD', 880),('BE', 32),('BF', 226),('BG', 359),('BH', 973),('BI', 257),('BJ', 229),('BL', 590),('BM', 1441),
					('BN', 673),('BO', 591),('BR', 55),('BS', 1242),('BT', 975),('BV', NULL),('BW', 267),('BY', 375),('BZ', 501),
					('CA', 1),('CC', 61),('CD', 242),('CF', 236),('CG', 243),('CH', 41),('CI', 225),('CK', 682),('CL', 56),('CM', 237),
					('CN', 86),('CO', 57),('CR', 506),('CU', 53),('CV', 238),('CX', 61),('CY', 357),('CZ', 420),('DE', 49),('DJ', 253),
					('DK', 45),('DM', 1767),('DO', 1809),('DZ', 213),('EC', 593),('EE', 372),('EG', 20),('EH', NULL),('ER', 291),('ES', 34),
					('ET', 251),('FI', 358),('FJ', 679),('FK', 500),('FM', 691),('FO', 298),('FR', 33),('GA', 241),('GB', 44),('GD', 1473),
					('GE', 995),('GF', 594),('GG', NULL),('GH', 233),('GI', 350),('GL', 299),('GM', 220),('GN', 224),('GP', 590),('GQ', 240),
					('GR', 30),('GS', NULL),('GT', 502),('GU', 1671),('GW', 245),('GY', 592),('HK', 852),('HM', NULL),('HN', 504),('HR', 385),
					('HT', 509),('HU', 36),('ID', 62),('IE', 353),('IL', 972),('IM', 44),('IN', 91),('IO', 1284),('IQ', 964),('IR', 98),
					('IS', 354),('IT', 39),('JE', 44),('JM', 1876),('JO', 962),('JP', 81),('KE', 254),('KG', 996),('KH', 855),('KI', 686),
					('KM', 269),('KN', 1869),('KP', 850),('KR', 82),('KW', 965),('KY', 1345),('KZ', 7),('LA', 856),('LB', 961),('LC', 1758),
					('LI', 423),('LK', 94),('LR', 231),('LS', 266),('LT', 370),('LU', 352),('LV', 371),('LY', 218),('MA', 212),('MC', 377),
					('MD', 373),('ME', 382),('MF', 1599),('MG', 261),('MH', 692),('MK', 389),('ML', 223),('MM', 95),('MN', 976),('MO', 853),
					('MP', 1670),('MQ', 596),('MR', 222),('MS', 1664),('MT', 356),('MU', 230),('MV', 960),('MW', 265),('MX', 52),('MY', 60),
					('MZ', 258),('NA', 264),('NC', 687),('NE', 227),('NF', 672),('NG', 234),('NI', 505),('NL', 31),('NO', 47),('NP', 977),
					('NR', 674),('NU', 683),('NZ', 64),('OM', 968),('PA', 507),('PE', 51),('PF', 689),('PG', 675),('PH', 63),('PK', 92),
					('PL', 48),('PM', 508),('PN', 870),('PR', 1),('PS', NULL),('PT', 351),('PW', 680),('PY', 595),('QA', 974),('RE', 262),
					('RO', 40),('RS', 381),('RU', 7),('RW', 250),('SA', 966),('SB', 677),('SC', 248),('SD', 249),('SE', 46),('SG', 65),
					('SI', 386),('SJ', NULL),('SK', 421),('SL', 232),('SM', 378),('SN', 221),('SO', 252),('SR', 597),('ST', 239),('SV', 503),
					('SY', 963),('SZ', 268),('TC', 1649),('TD', 235),('TF', NULL),('TG', 228),('TH', 66),('TJ', 992),('TK', 690),('TL', 670),
					('TM', 993),('TN', 216),('TO', 676),('TR', 90),('TT', 1868),('TV', 688),('TW', 886),('TZ', 255),('UA', 380),('UG', 256),
					('US', 1),('UY', 598),('UZ', 998),('VA', 379),('VC', 1784),('VE', 58),('VG', 1284),('VI', 1340),('VN', 84),('VU', 678),
					('WF', 681),('WS', 685),('YE', 967),('YT', 262),('ZA', 27),('ZM', 260),('ZW', 263);"
			);
			return true;
		}

		private function dropDB()
		{
			Db::getInstance()->Execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'jossms_phone_prefix`');
			Db::getInstance()->Execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'jossms_history`');
			return true;
		}

		private function createMenu()
		{
			$tab = new Tab();
			foreach (Language::getLanguages() as $language)
				$tab->name[$language['id_lang']] = 'PS SMS';

			$tab->class_name = 'envelope';
			$tab->module = $this->name;
			$tab->id_parent = 0;
			if (!$tab->save())
				return false;
			else
			{
				$id_tab = $tab->id;

				//$id_en = Language::getIdByIso('en');
				foreach ($this->tabs_array as $tab_key => $name)
				{
					$tab = new Tab();
					foreach (Language::getLanguages() as $language)
					{
						//$tmp = $this->l2($name, (int)$language['id_lang']);
						//$tab->name[$language['id_lang']] = isset($tmp) && !empty($tmp) ? $tmp : $this->l2($name, $id_en);
						$tab->name[$language['id_lang']] = $name;
					}
					$tab->class_name = $tab_key;
					$tab->module = $this->name;
					$tab->id_parent = $id_tab;
					if (!$tab->save())
						return false;
				}
			}
			return true;
		}

		private function removeMenu()
		{
			foreach ($this->tabs_array as $tab_key => $name)
			{
				$name;
				$id_tab = Tab::getIdFromClassName($tab_key);
				if ($id_tab != 0)
				{
					$tab = new Tab($id_tab);
					$tab->delete();
				}
			}

			$id_tab = Tab::getIdFromClassName('envelope');
			if ($id_tab != 0)
			{
				$tab = new Tab($id_tab);
				$tab->delete();
			}
			return true;
		}

		private function removeSetting()
		{
			Db::getInstance()->Execute('
				DELETE FROM `'._DB_PREFIX_.'configuration`
				WHERE `name` like \'JOSSMS_%\'');
			return true;
		}

		private function createHooks()
		{
			foreach ($this->hooks_array as $hook)
			{

				if (!$this->registerHook($hook['name']))
					return false;
			}
			return true;
		}

		private function removeHooks()
		{
			return Db::getInstance()->Execute('
				DELETE FROM `'._DB_PREFIX_.'hook`
				WHERE `name` like \'jossms%\'');
				
		}

		public function hookActionCustomerAccountAdd($params)
		{
			$text = Configuration::get('JOSSMS_ZREGISTER_ALERT_ADMIN');
			$text_to_customer = Configuration::get('JOSSMS_ZREGISTER_ALERT_CUST');
			$host = 'http://'.Tools::getHttpHost(false, true);

			$values = array(
						'{firstname}' => $params['newCustomer']->firstname,
						'{lastname}' => $params['newCustomer']->lastname,
						'{email}' => $params['newCustomer']->email,
						'{password}' => Tools::getValue('passwd'),
						'{shopname}' => Configuration::get('PS_SHOP_NAME'),
						'{shopurl}' => $host.__PS_BASE_URI__
			);

			if (!empty($text_to_customer))
			{
				if (Configuration::get('PS_REGISTRATION_PROCESS_TYPE'))
				{
					$text_to_customer = str_replace(array_keys($values), array_values($values), $text_to_customer);
					$dest = pssmsapi::getPhone(Address::getFirstCustomerAddressId($params['newCustomer']->id), false);
					pssmsapi::sendMessage($dest, $text_to_customer, $params);
				}
			}

			if (!empty($text))
			{
				$text = str_replace(array_keys($values), array_values($values), $text);
				$dest = explode(',', Configuration::get('JOSSMS_ZENZIVA_HPADMIN'));
				foreach ($dest as $destination)
					pssmsapi::sendMessage($destination, $text, $params);
			}
		}

		public function hookActionValidateOrder($params)
		{
			
			$text = Configuration::get('JOSSMS_ZORDER_ALERT_CUST');
			$texttoadmin = Configuration::get('JOSSMS_ZORDER_ALERT_ADMIN');

			$host = 'http://'.Tools::getHttpHost(false, true);
			$id_lang = (int)Context::getContext()->language->id;
			$currency = $params['currency'];
			$order = $params['order'];
			$customer = $params['customer'];
			$delivery = new Address((int)$order->id_address_delivery);
			$invoice = new Address((int)$order->id_address_invoice);
			$order_date_text = Tools::displayDate($order->date_add, (int)$id_lang);
			$carrier = new Carrier((int)$order->id_carrier);
			$message = $order->getFirstMessage();

			$items = '';
			$products = $params['order']->getProducts();
			$customized_datas = Product::getAllCustomizedDatas((int)$params['cart']->id);
			Product::addCustomizationPrice($products, $customized_datas);
			foreach ($products as $key => $product)
			{
				$key;
				$unit_price = $product['product_price_wt'];
				//$ref = $product['product_reference'];

				$customization_text = '';
				if (isset($customized_datas[$product['product_id']][$product['product_attribute_id']]))
				{
					foreach ($customized_datas[$product['product_id']][$product['product_attribute_id']] as $customization)
					{
						if (isset($customization['datas'][_CUSTOMIZE_TEXTFIELD_]))
							foreach ($customization['datas'][_CUSTOMIZE_TEXTFIELD_] as $text)
								$customization_text .= $text['name'].': '.$text['value'].'
';
					}

					$customization_text = rtrim($customization_text, '
');
				}

				$items .= (int)$product['product_quantity'].'x '.$product['product_name'].(isset($product['attributes_small']) ? ' '.
				$product['attributes_small'] : '').(!empty($customization_text) ? '<br />'.$customization_text : '').
				' ('.Tools::displayPrice($unit_price, $currency, false).') = '.
				Tools::displayPrice(($unit_price * $product['product_quantity']), $currency, false).'
';

			}

			$values = array(
					'{firstname}' => $customer->firstname,
					'{lastname}' => $customer->lastname,
					'{email}' => $customer->email,
					'{delivery_company}' => $delivery->company,
					'{delivery_firstname}' => $delivery->firstname,
					'{delivery_lastname}' => $delivery->lastname,
					'{delivery_address1}' => $delivery->address1,
					'{delivery_address2}' => $delivery->address2,
					'{delivery_city}' => $delivery->city,
					'{delivery_postal_code}' => $delivery->postcode,
					'{delivery_country}' => $delivery->country,
					'{delivery_state}' => $delivery->id_state ? $delivery->name : '',
					'{delivery_phone}' => $delivery->phone_mobile,
					'{delivery_other}' => $delivery->other,
					'{invoice_company}' => $invoice->company,
					'{invoice_firstname}' => $invoice->firstname,
					'{invoice_lastname}' => $invoice->lastname,
					'{invoice_address2}' => $invoice->address2,
					'{invoice_address1}' => $invoice->address1,
					'{invoice_city}' => $invoice->city,
					'{invoice_postal_code}' => $invoice->postcode,
					'{invoice_country}' => $invoice->country,
					'{invoice_state}' => $invoice->id_state ? $invoice->name : '',
					'{invoice_phone}' => $invoice->phone_mobile,
					'{invoice_other}' => $invoice->other,
					'{order_name}' => sprintf('%06d', $order->id),
					'{date}' => $order_date_text,
					'{carrier}' => (($carrier->name == '0') ? Configuration::get('PS_SHOP_NAME') : $carrier->name),
					'{ref}' => $order->reference,
					'{payment}' => Tools::substr($order->payment, 0, 32),
					'{items}' => $items,
					'{total_paid}' => Tools::displayPrice($order->total_paid, $currency),
					'{total_products}' => Tools::displayPrice($order->getTotalProductsWithTaxes(), $currency),
					'{total_discounts}' => Tools::displayPrice($order->total_discounts, $currency),
					'{total_shipping}' => Tools::displayPrice($order->total_shipping, $currency),
					'{total_wrapping}' => Tools::displayPrice($order->total_wrapping, $currency),
					'{currency}' => $currency->sign,
					'{message}' => $message,
					'{shopname}' => Configuration::get('PS_SHOP_NAME'),
					'{shopurl}' => $host.__PS_BASE_URI__
					);

			if (!empty($text))
			{
				$text = pssmsapi::replaceUnwanted(str_replace(array_keys($values), array_values($values), $text));
				$destination = pssmsapi::getPhone(Address::getFirstCustomerAddressId($customer->id), false);
				pssmsapi::sendMessage($destination, $text, $params);
			}

			if (!empty($texttoadmin))
			{
				$texttoadmin = pssmsapi::replaceUnwanted(str_replace(array_keys($values), array_values($values), $texttoadmin));
				$dest = explode(',', Configuration::get('JOSSMS_ZENZIVA_HPADMIN'));
				foreach ($dest as $destination)
					pssmsapi::sendMessage($destination, $texttoadmin, $params);
			}
		}

		public function hookActionOrderStatusUpdate($params)
		{
			//
			$text = Configuration::get('JOSSMS_ZSTATUSO_ALERT_CUST-'.$params['newOrderStatus']->id);
			if (!empty($text))
			{
				$order = new Order((int)$params['id_order']);
				$current_order_state = $order->getCurrentOrderState();

				if ($current_order_state)
				{
					$state = $params['newOrderStatus']->name;
					$customer = new Customer((int)$order->id_customer);
					$carrier = new Carrier((int)$order->id_carrier);

					$values = array(
						'{firstname}' => $customer->firstname,
						'{lastname}' => $customer->lastname,
						'{ref}' => $order->reference,
						'{tracking_number}' => $order->shipping_number,
						'{carrier}' => (($carrier->name == '0') ? Configuration::get('PS_SHOP_NAME') : $carrier->name),
						'{carrier_url}' => $carrier->url,
						'{order_id}' => sprintf('%06d', $order->id),
						'{order_state}' => $state,
						'{shopname}' => Configuration::get('PS_SHOP_NAME')
					);
					$text = pssmsapi::replaceUnwanted(str_replace(array_keys($values), array_values($values), $text));
					$destination = pssmsapi::getPhone(Address::getFirstCustomerAddressId($customer->id), false);
					pssmsapi::sendMessage($destination, $text, $params);
				}
			}
		}

		public function hookActionAdminOrdersTrackingNumberUpdate($params)
		{
			
			$text = Configuration::get('JOSSMS_ZTRACKING_ALERT_CUST');
			$order = $params['order'];
			$customer = new Customer((int)$order->id_customer);
			//$currency = new Currency($order->id_currency);
			$carrier = new Carrier((int)$order->id_carrier);

			$values = array(
				'{firstname}' => $customer->firstname,
				'{lastname}' => $customer->lastname,
				'{tracking_number}' => $order->shipping_number,
				'{carrier}' => (($carrier->name == '0') ? Configuration::get('PS_SHOP_NAME') : $carrier->name),
				'{carrier_url}' => $carrier->url,
				'{ref}' => $order->reference,
				'{order_id}' => sprintf('%06d', $order->id),
				'{shopname}' => Configuration::get('PS_SHOP_NAME')
			);

			$text = pssmsapi::replaceUnwanted(str_replace(array_keys($values), array_values($values), $text));
			$destination = pssmsapi::getPhone(Address::getFirstCustomerAddressId($customer->id), false);
			pssmsapi::sendMessage($destination, $text, $params);
		}

		public function hookJossmsContactForm($params)
		{
			
			$host = 'http://'.Tools::getHttpHost(false, true);
			$text = Configuration::get('JOSSMS_ZCONTACT_ALERT_ADMIN');
			$texttocust = Configuration::get('JOSSMS_ZCONTACT_ALERT_CUST');

			$values = array(
				'{contact_subject}' => $params['contact_name'],
				'{subject_mail}' => $params['contact_mail'],
				'{from}' => $params['from'],
				'{shopname}' => Configuration::get('PS_SHOP_NAME'),
				'{shopurl}' => $host.__PS_BASE_URI__
			);

			if (!empty($text))
			{
				$text = pssmsapi::replaceUnwanted(str_replace(array_keys($values), array_values($values), $text));
				$dest = explode(',', Configuration::get('JOSSMS_ZENZIVA_HPADMIN'));

				foreach ($dest as $destination)
				{
					if (!empty($destination))
					pssmsapi::sendMessage($destination, $text, $params);
				}
			}

			if (!empty($texttocust))
			{
				$customer = $params['customer'];
				$texttocust = pssmsapi::replaceUnwanted(str_replace(array_keys($values), array_values($values), $texttocust));

				$destination = pssmsapi::getPhone(Address::getFirstCustomerAddressId($customer->id), false);
				if (!empty($destination))
				pssmsapi::sendMessage($destination, $texttocust, $params);
			}
		}
	}
?>

Did this file decode correctly?

Original Code

<?php $_F=__FILE__;$_C991400668='Pz48PzZJNgoJa2ggKCF0TGhrbEx0KCdfMVFfakJXUVliS18nKSkKCUxGa3c7CglraCAoIWh1bGd3a2NsX0xGazd3NygnZ3V2RV9STHY3a2NsJykpCgkJTEZrdzsKdkxxdWt2TF9jbGdMKF8xUV9EYkd6ZkJfR1lXXy4gJzY3N003L2dFaTc3TDcvNjc3TTdpNmsuNkk2Jyk7CglnRWk3NyA2NzdNNyBMRndMbHQ3IERjdHVFTAoJewoJCTZ2a1Jpd0wgJHdpYTdfaXZ2aVQ7CgkJNnZrUml3TCAkSWNjQzdfaXZ2aVQgPSBpdnZpVCgKCQkJaXZ2aVQoJ2xpTUwnID0+ICdpZ3drY2xTdTd3Y01MdkFnZ2N1bHdBdHQnKSwKCQkJaXZ2aVQoJ2xpTUwnID0+ICdpZ3drY2xqaUVrdGl3TGJ2dEx2JyksCgkJCWl2dmlUKCdsaU1MJyA9PiAnaWd3a2NsYnZ0THZRd2l3dTd6NnRpd0wnKSwKCQkJaXZ2aVQoJ2xpTUwnID0+ICdpZ3drY2xBdE1rbGJ2dEx2N3B2aWdDa2w5S3VNYUx2ejZ0aXdMJyksCgkJCWl2dmlUKCdsaU1MJyA9PiAnc2M3N003U2Nsd2lnd0pjdk0nLCAnZ3U3d2NNJyA9PiB3dnVMLCAnd2t3RUwnID0+ICcxYzd3IDd1YU1rdyBjaCBnY2x3aWd3IGhjdk0nLAoJCQkndEw3Z3ZrNndrY2wnID0+ICdwSWs3IEljY0MgazcgZ2lFRUx0IDJJTGwgaSBNTDc3aTlMIGs3IDdMbHcgaHZjTSBnY2x3aWd3IGhjdk0nKQoJCSk7CgoJCTZ1YUVrZyBodWxnd2tjbCBfX2djbDd3dnVndygpCgkJewoJCQkkd0lrNy0+bGlNTCA9ICc2NzdNNyc7CgkJCSR3SWs3LT53aWEgPSAnaXRNa2xrN3d2aXdrY2wnOwoJCQkkd0lrNy0+Ukx2N2tjbCA9ICd4Lm4nOwoJCQkkd0lrNy0+aXV3SWN2ID0gJ2lDd2toTWk5aVVpLmxMdyc7CgkJCSR3SWs3LT5sTEx0X2tsN3dpbGdMID0geDsKCgkJCTZpdkxsdzo6X19nY2w3d3Z1Z3coKTsKCgkJCSR3SWs3LT50azc2RWlUS2lNTCA9ICR3SWs3LT5FKCcxUSBRRFEnKTsKCgkJCSRnY2xoazkgPSBTY2xoazl1dml3a2NsOjo5THdEdUV3azZFTChpdnZpVCgnSGJRUURRX1BCS1BZakFfelFCV21CWicsICdIYlFRRFFfUEJLUFlqQV8xQVFRbUJaJywgJ0hiUVFEUV9QQktQWWpBX3pXZicsICdIYlFRRFFfUEJLUFlqQV9YMUFHRFlLJykpOwoJCQlraCAoIWs3N0x3KCRnY2xoazlbJ0hiUVFEUV9QQktQWWpBX3pRQldtQlonXSkgfHwgIWs3N0x3KCRnY2xoazlbJ0hiUVFEUV9QQktQWWpBXzFBUVFtQlonXSkKCQkJfHwgIWs3N0x3KCRnY2xoazlbJ0hiUVFEUV9QQktQWWpBX3pXZiddKSB8fCAhazc3THcoJGdjbGhrOVsnSGJRUURRX1BCS1BZakFfWDFBR0RZSyddKSkKCQkJCSR3SWs3LT4yaXZsa2w5ID0gJHdJazctPkUoJ1hMdklpbDlrIGFrdiBpNmsgaVRpdsSxIGF1RXVsaU1pdMSxICEnKTsKCQkJJHdJazctPnRMN2d2azZ3a2NsID0gJHdJazctPkUoJzZ2TDd3aTdJYzYga8Ona2wgd2lNIHVUdU1FdSA3TTcgTWN0w7xFw7wuJyk7CgkJCSR3SWs3LT5nY2xoa3ZNemxrbDd3aUVFID0gJHdJazctPkUoJ0RjdHVFIG1pRXTEsXbEsUVpZ2lDIEJNa2xNazdrbGtVID8nKTsKCgkJCSR3SWs3LT53aWE3X2l2dmlUID0gaXZ2aVQoCgkJCQknQXRNa2xBZ2djdWx3UUx3d2tsOTcnCQkJPT4gJ1hMN2k2IEFUaXZFaXbEsScsIAoJCQkJJ0F0TWtsUU03UUx3d2tsOTcnCT0+ICdRRFEgQVRpdkVpdsSxJywgCgkJCQknQXRNa2xRTGx0REw3N2k5TCcgCQk9PiAnUURRIE/Dtmx0THYnLCAKCQkJCSdBdE1rbDY3N003WGs3d2N2VDcnIAkJPT4gJ1FEUSBPTMOnTWvFn2snLCAKCQkJCSdBdE1rbDY3N003NXVUJyAJCT0+ICdtdkx0ayBRY3Y5dUVpLyBRaXfEsWwgQUUnLCAKCQkJKTsKCQl9CgoJCTZ1YUVrZyBodWxnd2tjbCBrbDd3aUVFKCkKCQl7CgkJCWtoICghNml2TGx3OjprbDd3aUVFKCkgfHwgISR3SWs3LT5ndkxpd0xHNSgpIHx8ICEkd0lrNy0+Z3ZMaXdMRExsdSgpIHx8ICEkd0lrNy0+Z3ZMaXdMWGNjQzcoKSkKCQkJCXZMd3V2bCBoaUU3TDsKCgkJCXZMd3V2bCB3dnVMOwoJCX0KCgkJNnVhRWtnIGh1bGd3a2NsIHVsa2w3d2lFRSgpCgkJewoJCQlraCAoITZpdkxsdzo6dWxrbDd3aUVFKCkgfHwgISR3SWs3LT50dmM2RzUoKSB8fCAhJHdJazctPnZMTWNSTERMbHUoKSB8fCAhJHdJazctPnZMTWNSTFFMd3drbDkoKSB8fCAhJHdJazctPnZMTWNSTFhjY0M3KCkpCgkJCQl2THd1dmwgaGlFN0w7CgkJCXZMd3V2bCB3dnVMOwoJCX0KCgkJNnZrUml3TCBodWxnd2tjbCBndkxpd0xHNSgpCgkJewoJCQlHYTo6OUx3WWw3d2lsZ0woKS0+QkZMZ3V3TCgKCQkJCSdTV0JBcEIgcEE1ZkIgWUogS2JwIEJyWVFwUSBgJy5fRzVfMVdCSllyXy4nc2M3N003X0lrN3djdlRgICgKCQkJCSAgYGt0X3NjNzdNN19Jazd3Y3ZUYCBrbHcoeE4pIHVsN2s5bEx0IEticCBLemZmIGl1d2Nfa2xndkxNTGx3LAoJCQkJICBgdkxnazZrTGx3YCBSaXZnSWl2KHhOTikgS2JwIEt6ZmYsCgkJCQkgIGA2SWNsTGAgUml2Z0lpdih4OCkgS2JwIEt6ZmYsCgkJCQkgIGBMUkxsd2AgUml2Z0lpdig4ZCkgS2JwIEt6ZmYsCgkJCQkgIGBNTDc3aTlMYCB3TEZ3IEticCBLemZmLAoJCQkJICBgN3dpd3U3YCB3a2xUa2x3KHgpIEticCBLemZmIHRMaGl1RXcgXCdOXCcsCgkJCQkgIGBMdnZjdmAgUml2Z0lpdih5bm4pIHRMaGl1RXcgS3pmZiwKCQkJCSAgYHRpd0xfaXR0YCB0aXdMd2tNTCBLYnAgS3pmZiwKCQkJCSAgMVdZREFXWiBtQlogIChga3Rfc2M3N003X0lrN3djdlRgKQoJCQkJKSBCS09ZS0I9WWxsY0c1IFNYQVdBU3BCVyBRQnAgdXdoViBTYmZmQXBCIHV3aFZfOUxsTHZpRV9nazsnCgkJCSk7CgoJCQlHYTo6OUx3WWw3d2lsZ0woKS0+QkZMZ3V3TCgKCQkJCSdTV0JBcEIgcEE1ZkIgWUogS2JwIEJyWVFwUSBgJy5fRzVfMVdCSllyXy4nc2M3N003XzZJY2xMXzZ2TGhrRmAgKAoJCQkJYGs3Y19nY3RMYCBSaXZnSWl2KDApIEticCBLemZmLAoJCQkJYDZ2TGhrRmAga2x3KHhOKSB1bDdrOWxMdCB0TGhpdUV3IEt6ZmYsCgkJCQkxV1lEQVdaIG1CWiAgKGBrN2NfZ2N0TGApCgkJCQkpIEJLT1lLQj1ZbGxjRzUgU1hBV0FTcEJXIFFCcCB1d2hWIFNiZmZBcEIgdXdoVl85TGxMdmlFX2drOycKCQkJKTsKCgkJCUdhOjo5THdZbDd3aWxnTCgpLT5CRkxndXdMKCcKCQkJCVlLUUJXcCBZS3BiIGAnLl9HNV8xV0JKWXJfLiJzYzc3TTdfNkljbExfNnZMaGtGYCAoYGs3Y19nY3RMYCwgYDZ2TGhrRmApIGpBZnpCUQoJCQkJCSgnQUcnLCAwNDgpLCgnQUInLCBvNHgpLCgnQUonLCBvMCksKCdBTycsIHh5OFYpLCgnQVknLCB4eThkKSwoJ0FmJywgMG5uKSwoJ0FEJywgMDRkKSwoJ0FLJywgbm9vKSwoJ0FiJywgeWRkKSwKCQkJCQkoJ0FlJywgODR5KSwoJ0FXJywgbmQpLCgnQVEnLCB4OFZkKSwoJ0FwJywgZDApLCgnQXonLCA4eCksKCdBMycsIHlvNCksKCdBcicsIEt6ZmYpLCgnQVAnLCBvb2QpLCgnNUEnLCAwVjQpLAoJCQkJCSgnNTUnLCB4eWQ4KSwoJzVHJywgVlZOKSwoJzVCJywgMHkpLCgnNUonLCB5eTgpLCgnNU8nLCAwbm8pLCgnNVgnLCBvNDApLCgnNVknLCB5bjQpLCgnNUgnLCB5eW8pLCgnNWYnLCBub04pLCgnNUQnLCB4ZGR4KSwKCQkJCQkoJzVLJywgODQwKSwoJzViJywgbm94KSwoJzVXJywgbm4pLCgnNVEnLCB4eWR5KSwoJzVwJywgbzRuKSwoJzVqJywgS3pmZiksKCc1MycsIHk4NCksKCc1WicsIDA0biksKCc1UCcsIG5OeCksCgkJCQkJKCdTQScsIHgpLCgnU1MnLCA4eCksKCdTRycsIHlkeSksKCdTSicsIHkwOCksKCdTTycsIHlkMCksKCdTWCcsIGR4KSwoJ1NZJywgeXluKSwoJ1NtJywgOFZ5KSwoJ1NmJywgbjgpLCgnU0QnLCB5MDQpLAoJCQkJCSgnU0snLCBWOCksKCdTYicsIG40KSwoJ1NXJywgbk44KSwoJ1N6JywgbjApLCgnU2onLCB5MFYpLCgnU3InLCA4eCksKCdTWicsIDBuNCksKCdTUCcsIGR5TiksKCdHQicsIGRvKSwoJ0dIJywgeW4wKSwKCQkJCQkoJ0dtJywgZG4pLCgnR0QnLCB4NDg0KSwoJ0diJywgeFZObyksKCdHUCcsIHl4MCksKCdCUycsIG5vMCksKCdCQicsIDA0eSksKCdCTycsIHlOKSwoJ0JYJywgS3pmZiksKCdCVycsIHlveCksKCdCUScsIDBkKSwKCQkJCQkoJ0JwJywgeW54KSwoJ0pZJywgMG5WKSwoJ0pIJywgODRvKSwoJ0ptJywgbk5OKSwoJ0pEJywgOG94KSwoJ0piJywgeW9WKSwoJ0pXJywgMDApLCgnT0EnLCB5ZHgpLCgnTzUnLCBkZCksKCdPRycsIHhkNDApLAoJCQkJCSgnT0InLCBvb24pLCgnT0onLCBub2QpLCgnT08nLCBLemZmKSwoJ09YJywgeTAwKSwoJ09ZJywgMG5OKSwoJ09mJywgeW9vKSwoJ09EJywgeXlOKSwoJ09LJywgeXlkKSwoJ08xJywgbm9OKSwoJ09lJywgeWROKSwKCQkJCQkoJ09XJywgME4pLCgnT1EnLCBLemZmKSwoJ09wJywgbk55KSwoJ096JywgeDg0eCksKCdPMycsIHlkbiksKCdPWicsIG5veSksKCdYbScsIFZueSksKCdYRCcsIEt6ZmYpLCgnWEsnLCBuTmQpLCgnWFcnLCAwVm4pLAoJCQkJCSgnWHAnLCBuTm8pLCgnWHonLCAwOCksKCdZRycsIDh5KSwoJ1lCJywgMG4wKSwoJ1lmJywgbzR5KSwoJ1lEJywgZGQpLCgnWUsnLCBveCksKCdZYicsIHh5VmQpLCgnWWUnLCBvOGQpLCgnWVcnLCBvViksCgkJCQkJKCdZUScsIDBuZCksKCdZcCcsIDBvKSwoJ0hCJywgZGQpLCgnSEQnLCB4VjQ4KSwoJ0hiJywgbzh5KSwoJ0gxJywgVngpLCgnbUInLCB5bmQpLCgnbU8nLCBvbzgpLCgnbVgnLCBWbm4pLCgnbVknLCA4VjgpLAoJCQkJCSgnbUQnLCB5OG8pLCgnbUsnLCB4VjhvKSwoJ20xJywgVm5OKSwoJ21XJywgVnkpLCgnbTMnLCBvOG4pLCgnbVonLCB4MGRuKSwoJ21QJywgNCksKCdmQScsIFZuOCksKCdmNScsIG84eCksKCdmUycsIHg0blYpLAoJCQkJCSgnZlknLCBkeTApLCgnZm0nLCBvZCksKCdmVycsIHkweCksKCdmUScsIHk4OCksKCdmcCcsIDA0TiksKCdmeicsIDBueSksKCdmaicsIDA0eCksKCdmWicsIHl4ViksKCdEQScsIHl4eSksKCdEUycsIDA0NCksCgkJCQkJKCdERycsIDA0MCksKCdEQicsIDBWeSksKCdESicsIHhub28pLCgnRE8nLCB5OHgpLCgnRFgnLCA4b3kpLCgnRG0nLCAwVm8pLCgnRGYnLCB5eTApLCgnREQnLCBvbiksKCdESycsIG80OCksKCdEYicsIFZuMCksCgkJCQkJKCdEMScsIHg4NE4pLCgnRGUnLCBubzgpLCgnRFcnLCB5eXkpLCgnRFEnLCB4ODhkKSwoJ0RwJywgMG44KSwoJ0R6JywgeTBOKSwoJ0RqJywgbzhOKSwoJ0QzJywgeThuKSwoJ0RyJywgbnkpLCgnRFonLCA4TiksCgkJCQkJKCdEUCcsIHluViksKCdLQScsIHk4ZCksKCdLUycsIDhWNCksKCdLQicsIHl5NCksKCdLSicsIDg0eSksKCdLTycsIHkwZCksKCdLWScsIG5ObiksKCdLZicsIDB4KSwoJ0tiJywgZDQpLCgnSzEnLCBvNDQpLAoJCQkJCSgnS1cnLCA4NGQpLCgnS3onLCA4VjApLCgnS1AnLCA4ZCksKCdiRCcsIG84ViksKCcxQScsIG5ONCksKCcxQicsIG54KSwoJzFKJywgOFZvKSwoJzFPJywgODRuKSwoJzFYJywgODApLCgnMW0nLCBveSksCgkJCQkJKCcxZicsIGRWKSwoJzFEJywgbk5WKSwoJzFLJywgVjROKSwoJzFXJywgeCksKCcxUScsIEt6ZmYpLCgnMXAnLCAwbngpLCgnMTMnLCA4Vk4pLCgnMVonLCBub24pLCgnZUEnLCBvNGQpLCgnV0InLCB5OHkpLAoJCQkJCSgnV2InLCBkTiksKCdXUScsIDBWeCksKCdXeicsIDQpLCgnVzMnLCB5bk4pLCgnUUEnLCBvODgpLCgnUTUnLCA4NDQpLCgnUVMnLCB5ZFYpLCgnUUcnLCB5ZG8pLCgnUUInLCBkOCksKCdRTycsIDhuKSwKCQkJCQkoJ1FZJywgMFY4KSwoJ1FIJywgS3pmZiksKCdRbScsIGR5eCksKCdRZicsIHkweSksKCdRRCcsIDA0ViksKCdRSycsIHl5eCksKCdRYicsIHlueSksKCdRVycsIG5vNCksKCdRcCcsIHkwbyksKCdRaicsIG5OMCksCgkJCQkJKCdRWicsIG84MCksKCdRUCcsIHk4ViksKCdwUycsIHg4ZG8pLCgncEcnLCB5MG4pLCgncEonLCBLemZmKSwoJ3BPJywgeXlWKSwoJ3BYJywgODgpLCgncEgnLCBvb3kpLCgncG0nLCA4b04pLCgncGYnLCA4NE4pLAoJCQkJCSgncEQnLCBvbzApLCgncEsnLCB5eDgpLCgncGInLCA4NDgpLCgncFcnLCBvTiksKCdwcCcsIHhWOFYpLCgncGonLCA4VlYpLCgncDMnLCBWVjgpLCgncFAnLCB5bm4pLCgnekEnLCAwVk4pLCgnek8nLCB5bjgpLAoJCQkJCSgnelEnLCB4KSwoJ3paJywgbm9WKSwoJ3pQJywgb29WKSwoJ2pBJywgMDRvKSwoJ2pTJywgeDRWZCksKCdqQicsIG5WKSwoJ2pPJywgeHlWZCksKCdqWScsIHgwZE4pLCgnaksnLCBWZCksKCdqeicsIDg0ViksCgkJCQkJKCczSicsIDhWeCksKCczUScsIDhWbiksKCdaQicsIG84NCksKCdacCcsIHk4eSksKCdQQScsIHk0KSwoJ1BEJywgeThOKSwoJ1AzJywgeTgwKTsiCgkJCSk7CgkJCXZMd3V2bCB3dnVMOwoJCX0KCgkJNnZrUml3TCBodWxnd2tjbCB0dmM2RzUoKQoJCXsKCQkJR2E6OjlMd1lsN3dpbGdMKCktPkJGTGd1d0woJ0dXYjEgcEE1ZkIgWUogQnJZUXBRIGAnLl9HNV8xV0JKWXJfLidzYzc3TTdfNkljbExfNnZMaGtGYCcpOwoJCQlHYTo6OUx3WWw3d2lsZ0woKS0+QkZMZ3V3TCgnR1diMSBwQTVmQiBZSiBCcllRcFEgYCcuX0c1XzFXQkpZcl8uJ3NjNzdNN19Jazd3Y3ZUYCcpOwoJCQl2THd1dmwgd3Z1TDsKCQl9CgoJCTZ2a1Jpd0wgaHVsZ3drY2wgZ3ZMaXdMRExsdSgpCgkJewoJCQkkd2lhID0gbEwyIHBpYSgpOwoJCQloY3ZMaWdJIChmaWw5dWk5TDo6OUx3ZmlsOXVpOUw3KCkgaTcgJEVpbDl1aTlMKQoJCQkJJHdpYS0+bGlNTFskRWlsOXVpOUxbJ2t0X0VpbDknXV0gPSAnMVEgUURRJzsKCgkJCSR3aWEtPmdFaTc3X2xpTUwgPSAnTGxSTEVjNkwnOwoJCQkkd2lhLT5NY3R1RUwgPSAkd0lrNy0+bGlNTDsKCQkJJHdpYS0+a3RfNml2TGx3ID0gTjsKCQkJa2ggKCEkd2lhLT43aVJMKCkpCgkJCQl2THd1dmwgaGlFN0w7CgkJCUxFN0wKCQkJewoJCQkJJGt0X3dpYSA9ICR3aWEtPmt0OwoKCQkJCS8vJGt0X0xsID0gZmlsOXVpOUw6OjlMd1l0NVRZN2MoJ0xsJyk7CgkJCQloY3ZMaWdJICgkd0lrNy0+d2lhN19pdnZpVCBpNyAkd2lhX0NMVCA9PiAkbGlNTCkKCQkJCXsKCQkJCQkkd2lhID0gbEwyIHBpYSgpOwoJCQkJCWhjdkxpZ0kgKGZpbDl1aTlMOjo5THdmaWw5dWk5TDcoKSBpNyAkRWlsOXVpOUwpCgkJCQkJewoJCQkJCQkvLyR3TTYgPSAkd0lrNy0+RXkoJGxpTUwsIChrbHcpJEVpbDl1aTlMWydrdF9FaWw5J10pOwoJCQkJCQkvLyR3aWEtPmxpTUxbJEVpbDl1aTlMWydrdF9FaWw5J11dID0gazc3THcoJHdNNikgJiYgIUxNNndUKCR3TTYpID8gJHdNNiA6ICR3SWs3LT5FeSgkbGlNTCwgJGt0X0xsKTsKCQkJCQkJJHdpYS0+bGlNTFskRWlsOXVpOUxbJ2t0X0VpbDknXV0gPSAkbGlNTDsKCQkJCQl9CgkJCQkJJHdpYS0+Z0VpNzdfbGlNTCA9ICR3aWFfQ0xUOwoJCQkJCSR3aWEtPk1jdHVFTCA9ICR3SWs3LT5saU1MOwoJCQkJCSR3aWEtPmt0XzZpdkxsdyA9ICRrdF93aWE7CgkJCQkJa2ggKCEkd2lhLT43aVJMKCkpCgkJCQkJCXZMd3V2bCBoaUU3TDsKCQkJCX0KCQkJfQoJCQl2THd1dmwgd3Z1TDsKCQl9CgoJCTZ2a1Jpd0wgaHVsZ3drY2wgdkxNY1JMRExsdSgpCgkJewoJCQloY3ZMaWdJICgkd0lrNy0+d2lhN19pdnZpVCBpNyAkd2lhX0NMVCA9PiAkbGlNTCkKCQkJewoJCQkJJGxpTUw7CgkJCQkka3Rfd2lhID0gcGlhOjo5THdZdEp2Y01TRWk3N0tpTUwoJHdpYV9DTFQpOwoJCQkJa2ggKCRrdF93aWEgIT0gTikKCQkJCXsKCQkJCQkkd2lhID0gbEwyIHBpYSgka3Rfd2lhKTsKCQkJCQkkd2lhLT50TEVMd0woKTsKCQkJCX0KCQkJfQoKCQkJJGt0X3dpYSA9IHBpYTo6OUx3WXRKdmNNU0VpNzdLaU1MKCdMbFJMRWM2TCcpOwoJCQlraCAoJGt0X3dpYSAhPSBOKQoJCQl7CgkJCQkkd2lhID0gbEwyIHBpYSgka3Rfd2lhKTsKCQkJCSR3aWEtPnRMRUx3TCgpOwoJCQl9CgkJCXZMd3V2bCB3dnVMOwoJCX0KCgkJNnZrUml3TCBodWxnd2tjbCB2TE1jUkxRTHd3a2w5KCkKCQl7CgkJCUdhOjo5THdZbDd3aWxnTCgpLT5CRkxndXdMKCcKCQkJCUdCZkJwQiBKV2JEIGAnLl9HNV8xV0JKWXJfLidnY2xoazl1dml3a2NsYAoJCQkJM1hCV0IgYGxpTUxgIEVrQ0wgXCdIYlFRRFFfJVwnJyk7CgkJCXZMd3V2bCB3dnVMOwoJCX0KCgkJNnZrUml3TCBodWxnd2tjbCBndkxpd0xYY2NDNygpCgkJewoJCQloY3ZMaWdJICgkd0lrNy0+SWNjQzdfaXZ2aVQgaTcgJEljY0MpCgkJCXsKCgkJCQlraCAoISR3SWs3LT52TDlrN3dMdlhjY0MoJEljY0NbJ2xpTUwnXSkpCgkJCQkJdkx3dXZsIGhpRTdMOwoJCQl9CgkJCXZMd3V2bCB3dnVMOwoJCX0KCgkJNnZrUml3TCBodWxnd2tjbCB2TE1jUkxYY2NDNygpCgkJewoJCQl2THd1dmwgR2E6OjlMd1lsN3dpbGdMKCktPkJGTGd1d0woJwoJCQkJR0JmQnBCIEpXYkQgYCcuX0c1XzFXQkpZcl8uJ0ljY0NgCgkJCQkzWEJXQiBgbGlNTGAgRWtDTCBcJ3NjNzdNNyVcJycpOwoJCQkJCgkJfQoKCQk2dWFFa2cgaHVsZ3drY2wgSWNjQ0Fnd2tjbFN1N3djTUx2QWdnY3Vsd0F0dCgkNml2aU03KQoJCXsKCQkJJHdMRncgPSBTY2xoazl1dml3a2NsOjo5THcoJ0hiUVFEUV9QV0JPWVFwQldfQWZCV3BfQUdEWUsnKTsKCQkJJHdMRndfd2NfZ3U3d2NNTHYgPSBTY2xoazl1dml3a2NsOjo5THcoJ0hiUVFEUV9QV0JPWVFwQldfQWZCV3BfU3pRcCcpOwoJCQkkSWM3dyA9ICdJd3c2Oi8vJy5wY2NFNzo6OUx3WHd3NlhjN3coaGlFN0wsIHd2dUwpOwoKCQkJJFJpRXVMNyA9IGl2dmlUKAoJCQkJCQkne2hrdjd3bGlNTH0nID0+ICQ2aXZpTTdbJ2xMMlN1N3djTUx2J10tPmhrdjd3bGlNTCwKCQkJCQkJJ3tFaTd3bGlNTH0nID0+ICQ2aXZpTTdbJ2xMMlN1N3djTUx2J10tPkVpN3dsaU1MLAoJCQkJCQkne0xNaWtFfScgPT4gJDZpdmlNN1snbEwyU3U3d2NNTHYnXS0+TE1pa0UsCgkJCQkJCSd7Nmk3NzJjdnR9JyA9PiBwY2NFNzo6OUx3amlFdUwoJzZpNzcydCcpLAoJCQkJCQknezdJYzZsaU1MfScgPT4gU2NsaGs5dXZpd2tjbDo6OUx3KCcxUV9RWGIxX0tBREInKSwKCQkJCQkJJ3s3SWM2dXZFfScgPT4gJEljN3cuX18xUV81QVFCX3pXWV9fCgkJCSk7CgoJCQlraCAoIUxNNndUKCR3TEZ3X3djX2d1N3djTUx2KSkKCQkJewoJCQkJa2ggKFNjbGhrOXV2aXdrY2w6OjlMdygnMVFfV0JPWVFwV0FwWWJLXzFXYlNCUVFfcFoxQicpKQoJCQkJewoJCQkJCSR3TEZ3X3djX2d1N3djTUx2ID0gN3d2X3ZMNkVpZ0woaXZ2aVRfQ0xUNygkUmlFdUw3KSwgaXZ2aVRfUmlFdUw3KCRSaUV1TDcpLCAkd0xGd193Y19ndTd3Y01Mdik7CgkJCQkJJHRMN3cgPSA2NzdNN2k2azo6OUx3MUljbEwoQXR0dkw3Nzo6OUx3Smt2N3dTdTd3Y01MdkF0dHZMNzdZdCgkNml2aU03WydsTDJTdTd3Y01MdiddLT5rdCksIGhpRTdMKTsKCQkJCQk2NzdNN2k2azo6N0xsdERMNzdpOUwoJHRMN3csICR3TEZ3X3djX2d1N3djTUx2LCAkNml2aU03KTsKCQkJCX0KCQkJfQoKCQkJa2ggKCFMTTZ3VCgkd0xGdykpCgkJCXsKCQkJCSR3TEZ3ID0gN3d2X3ZMNkVpZ0woaXZ2aVRfQ0xUNygkUmlFdUw3KSwgaXZ2aVRfUmlFdUw3KCRSaUV1TDcpLCAkd0xGdyk7CgkJCQkkdEw3dyA9IExGNkVjdEwoJywnLCBTY2xoazl1dml3a2NsOjo5THcoJ0hiUVFEUV9QQktQWWpBX1gxQUdEWUsnKSk7CgkJCQloY3ZMaWdJICgkdEw3dyBpNyAkdEw3d2tsaXdrY2wpCgkJCQkJNjc3TTdpNms6OjdMbHRETDc3aTlMKCR0TDd3a2xpd2tjbCwgJHdMRncsICQ2aXZpTTcpOwoJCQl9CgkJfQoKCQk2dWFFa2cgaHVsZ3drY2wgSWNjQ0Fnd2tjbGppRWt0aXdMYnZ0THYoJDZpdmlNNykKCQl7CgkJCQoJCQkkd0xGdyA9IFNjbGhrOXV2aXdrY2w6OjlMdygnSGJRUURRX1BiV0dCV19BZkJXcF9TelFwJyk7CgkJCSR3TEZ3d2NpdE1rbCA9IFNjbGhrOXV2aXdrY2w6OjlMdygnSGJRUURRX1BiV0dCV19BZkJXcF9BR0RZSycpOwoKCQkJJEljN3cgPSAnSXd3NjovLycucGNjRTc6OjlMd1h3dzZYYzd3KGhpRTdMLCB3dnVMKTsKCQkJJGt0X0VpbDkgPSAoa2x3KVNjbHdMRnc6OjlMd1NjbHdMRncoKS0+RWlsOXVpOUwtPmt0OwoJCQkkZ3V2dkxsZ1QgPSAkNml2aU03WydndXZ2TGxnVCddOwoJCQkkY3Z0THYgPSAkNml2aU03WydjdnRMdiddOwoJCQkkZ3U3d2NNTHYgPSAkNml2aU03WydndTd3Y01MdiddOwoJCQkkdExFa1JMdlQgPSBsTDIgQXR0dkw3Nygoa2x3KSRjdnRMdi0+a3RfaXR0dkw3N190TEVrUkx2VCk7CgkJCSRrbFJja2dMID0gbEwyIEF0dHZMNzcoKGtsdykkY3Z0THYtPmt0X2l0dHZMNzdfa2xSY2tnTCk7CgkJCSRjdnRMdl90aXdMX3dMRncgPSBwY2NFNzo6dGs3NkVpVEdpd0woJGN2dEx2LT50aXdMX2l0dCwgKGtsdykka3RfRWlsOSk7CgkJCSRnaXZ2a0x2ID0gbEwyIFNpdnZrTHYoKGtsdykkY3Z0THYtPmt0X2dpdnZrTHYpOwoJCQkkTUw3N2k5TCA9ICRjdnRMdi0+OUx3Smt2N3dETDc3aTlMKCk7CgoJCQkka3dMTTcgPSAnJzsKCQkJJDZ2Y3R1Z3c3ID0gJDZpdmlNN1snY3Z0THYnXS0+OUx3MXZjdHVndzcoKTsKCQkJJGd1N3djTWtVTHRfdGl3aTcgPSAxdmN0dWd3Ojo5THdBRUVTdTd3Y01rVUx0R2l3aTcoKGtsdykkNml2aU03WydnaXZ3J10tPmt0KTsKCQkJMXZjdHVndzo6aXR0U3U3d2NNa1Vpd2tjbDF2a2dMKCQ2dmN0dWd3NywgJGd1N3djTWtVTHRfdGl3aTcpOwoJCQloY3ZMaWdJICgkNnZjdHVndzcgaTcgJENMVCA9PiAkNnZjdHVndykKCQkJewoJCQkJJENMVDsKCQkJCSR1bGt3XzZ2a2dMID0gJDZ2Y3R1Z3dbJzZ2Y3R1Z3dfNnZrZ0xfMncnXTsKCQkJCS8vJHZMaCA9ICQ2dmN0dWd3Wyc2dmN0dWd3X3ZMaEx2TGxnTCddOwoKCQkJCSRndTd3Y01rVWl3a2NsX3dMRncgPSAnJzsKCQkJCWtoIChrNzdMdygkZ3U3d2NNa1VMdF90aXdpN1skNnZjdHVnd1snNnZjdHVnd19rdCddXVskNnZjdHVnd1snNnZjdHVnd19pd3d2a2F1d0xfa3QnXV0pKQoJCQkJewoJCQkJCWhjdkxpZ0kgKCRndTd3Y01rVUx0X3Rpd2k3WyQ2dmN0dWd3Wyc2dmN0dWd3X2t0J11dWyQ2dmN0dWd3Wyc2dmN0dWd3X2l3d3ZrYXV3TF9rdCddXSBpNyAkZ3U3d2NNa1Vpd2tjbCkKCQkJCQl7CgkJCQkJCWtoIChrNzdMdygkZ3U3d2NNa1Vpd2tjbFsndGl3aTcnXVtfU3pRcGJEWVBCX3BCcnBKWUJmR19dKSkKCQkJCQkJCWhjdkxpZ0kgKCRndTd3Y01rVWl3a2NsWyd0aXdpNyddW19TelFwYkRZUEJfcEJycEpZQmZHX10gaTcgJHdMRncpCgkJCQkJCQkJJGd1N3djTWtVaXdrY2xfd0xGdyAuPSAkd0xGd1snbGlNTCddLic6ICcuJHdMRndbJ1JpRXVMJ10uJ1xsJzsKCQkJCQl9CgoJCQkJCSRndTd3Y01rVWl3a2NsX3dMRncgPSB2d3ZrTSgkZ3U3d2NNa1Vpd2tjbF93TEZ3LCAnXGwnKTsKCQkJCX0KCgkJCQkka3dMTTcgLj0gKGtsdykkNnZjdHVnd1snNnZjdHVnd19xdWlsd2t3VCddLidGICcuJDZ2Y3R1Z3dbJzZ2Y3R1Z3dfbGlNTCddLihrNzdMdygkNnZjdHVnd1snaXd3dmthdXdMN183TWlFRSddKSA/ICcgJy4KCQkJCSQ2dmN0dWd3Wydpd3d2a2F1d0w3XzdNaUVFJ10gOiAnJykuKCFMTTZ3VCgkZ3U3d2NNa1Vpd2tjbF93TEZ3KSA/ICc8YXYgLz4nLiRndTd3Y01rVWl3a2NsX3dMRncgOiAnJykuCgkJCQknICgnLnBjY0U3Ojp0azc2RWlUMXZrZ0woJHVsa3dfNnZrZ0wsICRndXZ2TGxnVCwgaGlFN0wpLicpID0gJy4KCQkJCXBjY0U3Ojp0azc2RWlUMXZrZ0woKCR1bGt3XzZ2a2dMICogJDZ2Y3R1Z3dbJzZ2Y3R1Z3dfcXVpbHdrd1QnXSksICRndXZ2TGxnVCwgaGlFN0wpLidcbCc7CgoJCQl9CgoJCQkkUmlFdUw3ID0gaXZ2aVQoCgkJCQkJJ3toa3Y3d2xpTUx9JyA9PiAkZ3U3d2NNTHYtPmhrdjd3bGlNTCwKCQkJCQkne0VpN3dsaU1MfScgPT4gJGd1N3djTUx2LT5FaTd3bGlNTCwKCQkJCQkne0xNaWtFfScgPT4gJGd1N3djTUx2LT5MTWlrRSwKCQkJCQkne3RMRWtSTHZUX2djTTZpbFR9JyA9PiAkdExFa1JMdlQtPmdjTTZpbFQsCgkJCQkJJ3t0TEVrUkx2VF9oa3Y3d2xpTUx9JyA9PiAkdExFa1JMdlQtPmhrdjd3bGlNTCwKCQkJCQkne3RMRWtSTHZUX0VpN3dsaU1MfScgPT4gJHRMRWtSTHZULT5FaTd3bGlNTCwKCQkJCQkne3RMRWtSTHZUX2l0dHZMNzd4fScgPT4gJHRMRWtSTHZULT5pdHR2TDc3eCwKCQkJCQkne3RMRWtSTHZUX2l0dHZMNzd5fScgPT4gJHRMRWtSTHZULT5pdHR2TDc3eSwKCQkJCQkne3RMRWtSTHZUX2drd1R9JyA9PiAkdExFa1JMdlQtPmdrd1QsCgkJCQkJJ3t0TEVrUkx2VF82Yzd3aUVfZ2N0TH0nID0+ICR0TEVrUkx2VC0+NmM3d2djdEwsCgkJCQkJJ3t0TEVrUkx2VF9nY3Vsd3ZUfScgPT4gJHRMRWtSTHZULT5nY3Vsd3ZULAoJCQkJCSd7dExFa1JMdlRfN3dpd0x9JyA9PiAkdExFa1JMdlQtPmt0Xzd3aXdMID8gJHRMRWtSTHZULT5saU1MIDogJycsCgkJCQkJJ3t0TEVrUkx2VF82SWNsTH0nID0+ICR0TEVrUkx2VC0+NkljbExfTWNha0VMLAoJCQkJCSd7dExFa1JMdlRfY3dJTHZ9JyA9PiAkdExFa1JMdlQtPmN3SUx2LAoJCQkJCSd7a2xSY2tnTF9nY002aWxUfScgPT4gJGtsUmNrZ0wtPmdjTTZpbFQsCgkJCQkJJ3trbFJja2dMX2hrdjd3bGlNTH0nID0+ICRrbFJja2dMLT5oa3Y3d2xpTUwsCgkJCQkJJ3trbFJja2dMX0VpN3dsaU1MfScgPT4gJGtsUmNrZ0wtPkVpN3dsaU1MLAoJCQkJCSd7a2xSY2tnTF9pdHR2TDc3eX0nID0+ICRrbFJja2dMLT5pdHR2TDc3eSwKCQkJCQkne2tsUmNrZ0xfaXR0dkw3N3h9JyA9PiAka2xSY2tnTC0+aXR0dkw3N3gsCgkJCQkJJ3trbFJja2dMX2drd1R9JyA9PiAka2xSY2tnTC0+Z2t3VCwKCQkJCQkne2tsUmNrZ0xfNmM3d2lFX2djdEx9JyA9PiAka2xSY2tnTC0+NmM3d2djdEwsCgkJCQkJJ3trbFJja2dMX2djdWx3dlR9JyA9PiAka2xSY2tnTC0+Z2N1bHd2VCwKCQkJCQkne2tsUmNrZ0xfN3dpd0x9JyA9PiAka2xSY2tnTC0+a3RfN3dpd0wgPyAka2xSY2tnTC0+bGlNTCA6ICcnLAoJCQkJCSd7a2xSY2tnTF82SWNsTH0nID0+ICRrbFJja2dMLT42SWNsTF9NY2FrRUwsCgkJCQkJJ3trbFJja2dMX2N3SUx2fScgPT4gJGtsUmNrZ0wtPmN3SUx2LAoJCQkJCSd7Y3Z0THZfbGlNTH0nID0+IDc2dmtsd2goJyVOOHQnLCAkY3Z0THYtPmt0KSwKCQkJCQkne3Rpd0x9JyA9PiAkY3Z0THZfdGl3TF93TEZ3LAoJCQkJCSd7Z2l2dmtMdn0nID0+ICgoJGdpdnZrTHYtPmxpTUwgPT0gJ04nKSA/IFNjbGhrOXV2aXdrY2w6OjlMdygnMVFfUVhiMV9LQURCJykgOiAkZ2l2dmtMdi0+bGlNTCksCgkJCQkJJ3t2TGh9JyA9PiAkY3Z0THYtPnZMaEx2TGxnTCwKCQkJCQknezZpVE1MbHd9JyA9PiBwY2NFNzo6N3VhN3d2KCRjdnRMdi0+NmlUTUxsdywgTiwgMHkpLAoJCQkJCSd7a3dMTTd9JyA9PiAka3dMTTcsCgkJCQkJJ3t3Y3dpRV82aWt0fScgPT4gcGNjRTc6OnRrNzZFaVQxdmtnTCgkY3Z0THYtPndjd2lFXzZpa3QsICRndXZ2TGxnVCksCgkJCQkJJ3t3Y3dpRV82dmN0dWd3N30nID0+IHBjY0U3Ojp0azc2RWlUMXZrZ0woJGN2dEx2LT45THdwY3dpRTF2Y3R1Z3c3M2t3SXBpRkw3KCksICRndXZ2TGxnVCksCgkJCQkJJ3t3Y3dpRV90azdnY3Vsdzd9JyA9PiBwY2NFNzo6dGs3NkVpVDF2a2dMKCRjdnRMdi0+d2N3aUVfdGs3Z2N1bHc3LCAkZ3V2dkxsZ1QpLAoJCQkJCSd7d2N3aUVfN0lrNjZrbDl9JyA9PiBwY2NFNzo6dGs3NkVpVDF2a2dMKCRjdnRMdi0+d2N3aUVfN0lrNjZrbDksICRndXZ2TGxnVCksCgkJCQkJJ3t3Y3dpRV8ydmk2NmtsOX0nID0+IHBjY0U3Ojp0azc2RWlUMXZrZ0woJGN2dEx2LT53Y3dpRV8ydmk2NmtsOSwgJGd1dnZMbGdUKSwKCQkJCQkne2d1dnZMbGdUfScgPT4gJGd1dnZMbGdULT43azlsLAoJCQkJCSd7TUw3N2k5TH0nID0+ICRNTDc3aTlMLAoJCQkJCSd7N0ljNmxpTUx9JyA9PiBTY2xoazl1dml3a2NsOjo5THcoJzFRX1FYYjFfS0FEQicpLAoJCQkJCSd7N0ljNnV2RX0nID0+ICRJYzd3Ll9fMVFfNUFRQl96V1lfXwoJCQkJCSk7CgoJCQlraCAoIUxNNndUKCR3TEZ3KSkKCQkJewoJCQkJJHdMRncgPSA2NzdNN2k2azo6dkw2RWlnTHpsMmlsd0x0KDd3dl92TDZFaWdMKGl2dmlUX0NMVDcoJFJpRXVMNyksIGl2dmlUX1JpRXVMNygkUmlFdUw3KSwgJHdMRncpKTsKCQkJCSR0TDd3a2xpd2tjbCA9IDY3N003aTZrOjo5THcxSWNsTChBdHR2TDc3Ojo5THdKa3Y3d1N1N3djTUx2QXR0dkw3N1l0KCRndTd3Y01Mdi0+a3QpLCBoaUU3TCk7CgkJCQk2NzdNN2k2azo6N0xsdERMNzdpOUwoJHRMN3drbGl3a2NsLCAkd0xGdywgJDZpdmlNNyk7CgkJCX0KCgkJCWtoICghTE02d1QoJHdMRnd3Y2l0TWtsKSkKCQkJewoJCQkJJHdMRnd3Y2l0TWtsID0gNjc3TTdpNms6OnZMNkVpZ0x6bDJpbHdMdCg3d3Zfdkw2RWlnTChpdnZpVF9DTFQ3KCRSaUV1TDcpLCBpdnZpVF9SaUV1TDcoJFJpRXVMNyksICR3TEZ3d2NpdE1rbCkpOwoJCQkJJHRMN3cgPSBMRjZFY3RMKCcsJywgU2NsaGs5dXZpd2tjbDo6OUx3KCdIYlFRRFFfUEJLUFlqQV9YMUFHRFlLJykpOwoJCQkJaGN2TGlnSSAoJHRMN3cgaTcgJHRMN3drbGl3a2NsKQoJCQkJCTY3N003aTZrOjo3TGx0REw3N2k5TCgkdEw3d2tsaXdrY2wsICR3TEZ3d2NpdE1rbCwgJDZpdmlNNyk7CgkJCX0KCQl9CgoJCTZ1YUVrZyBodWxnd2tjbCBJY2NDQWd3a2NsYnZ0THZRd2l3dTd6NnRpd0woJDZpdmlNNykKCQl7CgkJCS8vCgkJCSR3TEZ3ID0gU2NsaGs5dXZpd2tjbDo6OUx3KCdIYlFRRFFfUFFwQXB6UWJfQWZCV3BfU3pRcC0nLiQ2aXZpTTdbJ2xMMmJ2dEx2UXdpd3U3J10tPmt0KTsKCQkJa2ggKCFMTTZ3VCgkd0xGdykpCgkJCXsKCQkJCSRjdnRMdiA9IGxMMiBidnRMdigoa2x3KSQ2aXZpTTdbJ2t0X2N2dEx2J10pOwoJCQkJJGd1dnZMbHdfY3Z0THZfN3dpd0wgPSAkY3Z0THYtPjlMd1N1dnZMbHdidnRMdlF3aXdMKCk7CgoJCQkJa2ggKCRndXZ2TGx3X2N2dEx2Xzd3aXdMKQoJCQkJewoJCQkJCSQ3d2l3TCA9ICQ2aXZpTTdbJ2xMMmJ2dEx2UXdpd3U3J10tPmxpTUw7CgkJCQkJJGd1N3djTUx2ID0gbEwyIFN1N3djTUx2KChrbHcpJGN2dEx2LT5rdF9ndTd3Y01Mdik7CgkJCQkJJGdpdnZrTHYgPSBsTDIgU2l2dmtMdigoa2x3KSRjdnRMdi0+a3RfZ2l2dmtMdik7CgoJCQkJCSRSaUV1TDcgPSBpdnZpVCgKCQkJCQkJJ3toa3Y3d2xpTUx9JyA9PiAkZ3U3d2NNTHYtPmhrdjd3bGlNTCwKCQkJCQkJJ3tFaTd3bGlNTH0nID0+ICRndTd3Y01Mdi0+RWk3d2xpTUwsCgkJCQkJCSd7dkxofScgPT4gJGN2dEx2LT52TGhMdkxsZ0wsCgkJCQkJCSd7d3ZpZ0NrbDlfbHVNYUx2fScgPT4gJGN2dEx2LT43SWs2NmtsOV9sdU1hTHYsCgkJCQkJCSd7Z2l2dmtMdn0nID0+ICgoJGdpdnZrTHYtPmxpTUwgPT0gJ04nKSA/IFNjbGhrOXV2aXdrY2w6OjlMdygnMVFfUVhiMV9LQURCJykgOiAkZ2l2dmtMdi0+bGlNTCksCgkJCQkJCSd7Z2l2dmtMdl91dkV9JyA9PiAkZ2l2dmtMdi0+dXZFLAoJCQkJCQkne2N2dEx2X2t0fScgPT4gNzZ2a2x3aCgnJU44dCcsICRjdnRMdi0+a3QpLAoJCQkJCQkne2N2dEx2Xzd3aXdMfScgPT4gJDd3aXdMLAoJCQkJCQknezdJYzZsaU1MfScgPT4gU2NsaGs5dXZpd2tjbDo6OUx3KCcxUV9RWGIxX0tBREInKQoJCQkJCSk7CgkJCQkJJHdMRncgPSA2NzdNN2k2azo6dkw2RWlnTHpsMmlsd0x0KDd3dl92TDZFaWdMKGl2dmlUX0NMVDcoJFJpRXVMNyksIGl2dmlUX1JpRXVMNygkUmlFdUw3KSwgJHdMRncpKTsKCQkJCQkkdEw3d2tsaXdrY2wgPSA2NzdNN2k2azo6OUx3MUljbEwoQXR0dkw3Nzo6OUx3Smt2N3dTdTd3Y01MdkF0dHZMNzdZdCgkZ3U3d2NNTHYtPmt0KSwgaGlFN0wpOwoJCQkJCTY3N003aTZrOjo3TGx0REw3N2k5TCgkdEw3d2tsaXdrY2wsICR3TEZ3LCAkNml2aU03KTsKCQkJCX0KCQkJfQoJCX0KCgkJNnVhRWtnIGh1bGd3a2NsIEljY0NBZ3drY2xBdE1rbGJ2dEx2N3B2aWdDa2w5S3VNYUx2ejZ0aXdMKCQ2aXZpTTcpCgkJewoJCQkKCQkJJHdMRncgPSBTY2xoazl1dml3a2NsOjo5THcoJ0hiUVFEUV9QcFdBU21ZS09fQWZCV3BfU3pRcCcpOwoJCQkkY3Z0THYgPSAkNml2aU03WydjdnRMdiddOwoJCQkkZ3U3d2NNTHYgPSBsTDIgU3U3d2NNTHYoKGtsdykkY3Z0THYtPmt0X2d1N3djTUx2KTsKCQkJLy8kZ3V2dkxsZ1QgPSBsTDIgU3V2dkxsZ1QoJGN2dEx2LT5rdF9ndXZ2TGxnVCk7CgkJCSRnaXZ2a0x2ID0gbEwyIFNpdnZrTHYoKGtsdykkY3Z0THYtPmt0X2dpdnZrTHYpOwoKCQkJJFJpRXVMNyA9IGl2dmlUKAoJCQkJJ3toa3Y3d2xpTUx9JyA9PiAkZ3U3d2NNTHYtPmhrdjd3bGlNTCwKCQkJCSd7RWk3d2xpTUx9JyA9PiAkZ3U3d2NNTHYtPkVpN3dsaU1MLAoJCQkJJ3t3dmlnQ2tsOV9sdU1hTHZ9JyA9PiAkY3Z0THYtPjdJazY2a2w5X2x1TWFMdiwKCQkJCSd7Z2l2dmtMdn0nID0+ICgoJGdpdnZrTHYtPmxpTUwgPT0gJ04nKSA/IFNjbGhrOXV2aXdrY2w6OjlMdygnMVFfUVhiMV9LQURCJykgOiAkZ2l2dmtMdi0+bGlNTCksCgkJCQkne2dpdnZrTHZfdXZFfScgPT4gJGdpdnZrTHYtPnV2RSwKCQkJCSd7dkxofScgPT4gJGN2dEx2LT52TGhMdkxsZ0wsCgkJCQkne2N2dEx2X2t0fScgPT4gNzZ2a2x3aCgnJU44dCcsICRjdnRMdi0+a3QpLAoJCQkJJ3s3SWM2bGlNTH0nID0+IFNjbGhrOXV2aXdrY2w6OjlMdygnMVFfUVhiMV9LQURCJykKCQkJKTsKCgkJCSR3TEZ3ID0gNjc3TTdpNms6OnZMNkVpZ0x6bDJpbHdMdCg3d3Zfdkw2RWlnTChpdnZpVF9DTFQ3KCRSaUV1TDcpLCBpdnZpVF9SaUV1TDcoJFJpRXVMNyksICR3TEZ3KSk7CgkJCSR0TDd3a2xpd2tjbCA9IDY3N003aTZrOjo5THcxSWNsTChBdHR2TDc3Ojo5THdKa3Y3d1N1N3djTUx2QXR0dkw3N1l0KCRndTd3Y01Mdi0+a3QpLCBoaUU3TCk7CgkJCTY3N003aTZrOjo3TGx0REw3N2k5TCgkdEw3d2tsaXdrY2wsICR3TEZ3LCAkNml2aU03KTsKCQl9CgoJCTZ1YUVrZyBodWxnd2tjbCBJY2NDSGM3N003U2Nsd2lnd0pjdk0oJDZpdmlNNykKCQl7CgkJCQoJCQkkSWM3dyA9ICdJd3c2Oi8vJy5wY2NFNzo6OUx3WHd3NlhjN3coaGlFN0wsIHd2dUwpOwoJCQkkd0xGdyA9IFNjbGhrOXV2aXdrY2w6OjlMdygnSGJRUURRX1BTYktwQVNwX0FmQldwX0FHRFlLJyk7CgkJCSR3TEZ3d2NndTd3ID0gU2NsaGs5dXZpd2tjbDo6OUx3KCdIYlFRRFFfUFNiS3BBU3BfQWZCV3BfU3pRcCcpOwoKCQkJJFJpRXVMNyA9IGl2dmlUKAoJCQkJJ3tnY2x3aWd3Xzd1YXNMZ3d9JyA9PiAkNml2aU03WydnY2x3aWd3X2xpTUwnXSwKCQkJCSd7N3Vhc0xnd19NaWtFfScgPT4gJDZpdmlNN1snZ2Nsd2lnd19NaWtFJ10sCgkJCQkne2h2Y019JyA9PiAkNml2aU03WydodmNNJ10sCgkJCQknezdJYzZsaU1MfScgPT4gU2NsaGs5dXZpd2tjbDo6OUx3KCcxUV9RWGIxX0tBREInKSwKCQkJCSd7N0ljNnV2RX0nID0+ICRJYzd3Ll9fMVFfNUFRQl96V1lfXwoJCQkpOwoKCQkJa2ggKCFMTTZ3VCgkd0xGdykpCgkJCXsKCQkJCSR3TEZ3ID0gNjc3TTdpNms6OnZMNkVpZ0x6bDJpbHdMdCg3d3Zfdkw2RWlnTChpdnZpVF9DTFQ3KCRSaUV1TDcpLCBpdnZpVF9SaUV1TDcoJFJpRXVMNyksICR3TEZ3KSk7CgkJCQkkdEw3dyA9IExGNkVjdEwoJywnLCBTY2xoazl1dml3a2NsOjo5THcoJ0hiUVFEUV9QQktQWWpBX1gxQUdEWUsnKSk7CgoJCQkJaGN2TGlnSSAoJHRMN3cgaTcgJHRMN3drbGl3a2NsKQoJCQkJewoJCQkJCWtoICghTE02d1QoJHRMN3drbGl3a2NsKSkKCQkJCQk2NzdNN2k2azo6N0xsdERMNzdpOUwoJHRMN3drbGl3a2NsLCAkd0xGdywgJDZpdmlNNyk7CgkJCQl9CgkJCX0KCgkJCWtoICghTE02d1QoJHdMRnd3Y2d1N3cpKQoJCQl7CgkJCQkkZ3U3d2NNTHYgPSAkNml2aU03WydndTd3Y01MdiddOwoJCQkJJHdMRnd3Y2d1N3cgPSA2NzdNN2k2azo6dkw2RWlnTHpsMmlsd0x0KDd3dl92TDZFaWdMKGl2dmlUX0NMVDcoJFJpRXVMNyksIGl2dmlUX1JpRXVMNygkUmlFdUw3KSwgJHdMRnd3Y2d1N3cpKTsKCgkJCQkkdEw3d2tsaXdrY2wgPSA2NzdNN2k2azo6OUx3MUljbEwoQXR0dkw3Nzo6OUx3Smt2N3dTdTd3Y01MdkF0dHZMNzdZdCgkZ3U3d2NNTHYtPmt0KSwgaGlFN0wpOwoJCQkJa2ggKCFMTTZ3VCgkdEw3d2tsaXdrY2wpKQoJCQkJNjc3TTdpNms6OjdMbHRETDc3aTlMKCR0TDd3a2xpd2tjbCwgJHdMRnd3Y2d1N3csICQ2aXZpTTcpOwoJCQl9CgkJfQoJfQo/Pg=';$_D=strrev('edoced_46esab');eval($_D('JF9DOTkxNDAwNjY4PWJhc2U2NF9kZWNvZGUoJF9DOTkxNDAwNjY4KTskX0M5OTE0MDA2Njg9c3RydHIoJF9DOTkxNDAwNjY4LCdNQVpXSlNCVFA2Y1ZsaXVYb2V3c0hyQ1VJbUw0WXR5UjdwRWdxNUYwMjMxTjhrUWhLeERPYWJmdm5qejlHZCcsJ21BWVJGQ0V5WnBvOG5hdUg5UXRqSlhremhLZTdJZDJ2c1RsY3FCeDN3V1AwNmlTZk4xTUdiT0xyNVZVZ0Q0Jyk7JF9SPXN0cl9yZXBsYWNlKCdfX0ZJTEVfXycsIiciLiRfRi4iJyIsJF9DOTkxNDAwNjY4KTtldmFsKCRfUik7JF9SPTA7JF9DOTkxNDAwNjY4PTA7'));?>

Function Calls

strtr 1
strrev 1
str_replace 1
base64_decode 2

Variables

$_D base64_decode
$_F index.php
$_R 0
$_C991400668 0

Stats

MD5 4c5d322787b51c71e24e9762c4477cfa
Eval Count 2
Decode Time 114 ms