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("LyoqICogR29NYWdlIFByb2NhcnQgRXh0ZW5zaW9uICogKiBAY2F0ZWdvcnkgRXh0..

Decoded Output download

/** * GoMage Procart Extension * * @category Extension * @copyright Copyright (c) 2010-2016 GoMage (https://www.gomage.com) * @author GoMage * @license https://www.gomage.com/license-agreement/ Single domain license * @terms of use https://www.gomage.com/terms-of-use * @version Release: 2.2.0 * @since Class available since Release 1.0 */ class GoMage_Procart_Helper_Data extends Mage_Core_Helper_Abstract { protected $is_infortis_ultimo; public function getConfigData($node) { return Mage::getStoreConfig('gomage_procart/' . $node); } public function getAllStoreDomains() { $domains = array(); foreach (Mage::app()->getWebsites() as $website) { $url = $website->getConfig('web/unsecure/base_url'); if ($domain = trim(preg_replace('/^.*?\/\/(.*)?\//', '$1', $url))) { $domains[] = $domain; } $url = $website->getConfig('web/secure/base_url'); if ($domain = trim(preg_replace('/^.*?\/\/(.*)?\//', '$1', $url))) { $domains[] = $domain; } } return array_unique($domains); } public function getAvailabelWebsites() { return $this->_w(); } public function getAvailavelWebsites() { return $this->_w(); } protected function _w() { if (!Mage::getStoreConfig('gomage_activation/procart/installed') || (intval(Mage::getStoreConfig('gomage_activation/procart/count')) > 10) ) { return array(); } $time_to_update = 60 * 60 * 24 * 15; $r = Mage::getStoreConfig('gomage_activation/procart/ar'); $t = Mage::getStoreConfig('gomage_activation/procart/time'); $s = Mage::getStoreConfig('gomage_activation/procart/websites'); $last_check = str_replace($r, '', Mage::helper('core')->decrypt($t)); $allsites = explode(',', str_replace($r, '', Mage::helper('core')->decrypt($s))); $allsites = array_diff($allsites, array("")); if (($last_check + $time_to_update) < time()) { $this->a(Mage::getStoreConfig('gomage_activation/procart/key'), intval(Mage::getStoreConfig('gomage_activation/procart/count')), implode(',', $allsites) ); } return $allsites; } public function a($k, $c = 0, $s = '') { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, sprintf('https://www.gomage.com/index.php/gomage_downloadable/key/check')); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, 'key=' . urlencode($k) . '&sku=procart&domains=' . urlencode(implode(',', $this->getAllStoreDomains())) . '&ver=' . urlencode('2.2.0')); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); $content = curl_exec($ch); try { $r = Zend_Json::decode($content); } catch (\Exception $e) { $r = array(); } $e = Mage::helper('core'); if (empty($r)) { $value1 = Mage::getStoreConfig('gomage_activation/procart/ar'); $groups = array( 'procart' => array( 'fields' => array( 'ar' => array( 'value' => $value1 ), 'websites' => array( 'value' => (string)Mage::getStoreConfig('gomage_activation/procart/websites') ), 'time' => array( 'value' => (string)$e->encrypt($value1 . (time() - (60 * 60 * 24 * 15 - 1800)) . $value1) ), 'count' => array( 'value' => $c + 1) ) ) ); Mage::getModel('adminhtml/config_data') ->setSection('gomage_activation') ->setGroups($groups) ->save(); Mage::getConfig()->reinit(); Mage::app()->reinitStores(); return; } $value1 = ''; $value2 = ''; if (isset($r['d']) && isset($r['c'])) { $value1 = $e->encrypt(base64_encode(Zend_Json::encode($r))); if (!$s) { $s = Mage::getStoreConfig('gomage_activation/procart/websites'); } $s = array_slice(explode(',', $s), 0, $r['c']); $value2 = $e->encrypt($value1 . implode(',', $s) . $value1); } $groups = array( 'procart' => array( 'fields' => array( 'ar' => array( 'value' => $value1 ), 'websites' => array( 'value' => (string)$value2 ), 'time' => array( 'value' => (string)$e->encrypt($value1 . time() . $value1) ), 'installed' => array( 'value' => 1 ), 'count' => array( 'value' => 0) ) ) ); Mage::getModel('adminhtml/config_data') ->setSection('gomage_activation') ->setGroups($groups) ->save(); Mage::getConfig()->reinit(); Mage::app()->reinitStores(); } public function ga() { $ar = base64_decode(Mage::helper('core')->decrypt(Mage::getStoreConfig('gomage_activation/procart/ar'))); return $ar ? Zend_Json::decode($ar) : array(); } public function getIsCartPage() { return ((Mage::app()->getFrontController()->getRequest()->getRequestedRouteName() == 'checkout') && (Mage::app()->getFrontController()->getRequest()->getRequestedControllerName() == 'cart') && (Mage::app()->getFrontController()->getRequest()->getRequestedActionName() == 'index')); } public function isWhishlistMove() { return (Mage::app()->getFrontController()->getRequest()->getParam('gpc_wishlist_add') == 1); } public function getChangeAttributeCart() { return ((Mage::app()->getFrontController()->getRequest()->getRequestedRouteName() == 'gomage_procart') && (Mage::app()->getFrontController()->getRequest()->getRequestedControllerName() == 'procart') && (Mage::app()->getFrontController()->getRequest()->getRequestedActionName() == 'changeattributecart')); } public function getChangeQtyCart() { return ((Mage::app()->getFrontController()->getRequest()->getRequestedRouteName() == 'gomage_procart') && (Mage::app()->getFrontController()->getRequest()->getRequestedControllerName() == 'procart') && (Mage::app()->getFrontController()->getRequest()->getRequestedActionName() == 'changeqtycartitem')); } public function isProCartEnable() { return (Mage::getStoreConfig('gomage_procart/general/enable') && in_array(Mage::app()->getStore()->getWebsiteId(), $this->getAvailavelWebsites())); } public function isCrosssellAdd() { return ((Mage::app()->getFrontController()->getRequest()->getParam('gpc_crosssell') == 1) || (Mage::app()->getFrontController()->getRequest()->getParam('gpc_add') == 1)); } public function isProductReviewPage() { return Mage::app()->getFrontController()->getRequest()->getRequestedRouteName() == 'review'; } public function isShoppingCartDisable() { if (count(Mage::getSingleton('checkout/session')->getMessages(false)->getItems(Mage_Core_Model_Message::ERROR)) && $this->isProCartEnable()) { return false; } $procart = (Mage::getStoreConfig('gomage_procart/general/disable_cart') && $this->isProCartEnable()); if ($procart) { return true; } $_modules = Mage::getConfig()->getNode('modules')->children(); $_modulesArray = (array)$_modules; $lightcheckout = (isset($_modulesArray['GoMage_Checkout']) && $_modulesArray['GoMage_Checkout']->is('active')); if (!$lightcheckout) { return false; } $lightcheckout = (Mage::helper('gomage_checkout')->getConfigData('general/disable_cart') && Mage::helper('gomage_checkout')->getConfigData('general/enabled') && in_array(Mage::app()->getStore()->getWebsiteId(), Mage::helper('gomage_checkout')->getAvailavelWebsites())); return $lightcheckout; } public function getProcartProductData($product, $cart = false, $parent_id = false) { $stock_item = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product); if ($stock_item->getManageStock() && !$stock_item->getBackorders()) { $min_qty = $stock_item->getMinSaleQty(); if ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_SIMPLE) { $max_qty = min(array($stock_item->getMaxSaleQty(), $stock_item->getQty())); } else { $max_qty = $stock_item->getMaxSaleQty(); } $quote = Mage::getSingleton('checkout/session')->getQuote(); $item = $quote->getItemByProduct($product); if ($item && $qty = $item->getQty()) { $max_qty = $max_qty - $qty; if ($min_qty > $max_qty) { $min_qty = $max_qty; } } } else { $min_qty = $stock_item->getMinSaleQty(); $max_qty = $stock_item->getMaxSaleQty(); } if ($parent_id || $product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_GROUPED) { $min_qty = 0; } $qty_increments = $stock_item->getQtyIncrements(); if ($qty_increments && !$parent_id) { $min_qty = $qty_increments; } if ($parent_id) { $parent_product = Mage::getModel('catalog/product')->load($parent_id); if ($parent_product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) { $product_data = Mage::getModel('cataloginventory/stock_item')->loadByProduct($parent_product); $qty_increments = $product_data->getQtyIncrements(); $min_qty = $qty_increments; } } $block_product_list = Mage::getBlockSingleton('catalog/product_list'); return array( 'min_qty' => intval($min_qty), 'max_qty' => intval($max_qty), 'name' => $product->getName(), 'is_simple' => ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_SIMPLE ? 1 : 0), 'is_grouped' => ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_GROUPED ? 1 : 0), 'is_bundled' => ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_BUNDLE ? 1 : 0), 'is_giftcard' => ($product->getTypeId() == 'giftcard' ? 1 : 0), 'parent_id' => $parent_id, 'product_url' => $product->getProductUrl(), 'addtocart_url' => $block_product_list->getAddToCartUrl($product), 'increments' => ($qty_increments ? $qty_increments : 1) ); } public function isConfigureCart() { return strpos(Mage::helper('core/url')->getCurrentUrl(), 'configure/id') ? 1 : 0; } public function getBundleProductSelections($parentProduct) { $typeInstance = $parentProduct->getTypeInstance(true); return $typeInstance->getSelectionsCollection( $typeInstance->getOptionsIds($parentProduct), $parentProduct ); } public function getIsAnymoreVersion($major, $minor, $revision = 0) { $version_info = Mage::getVersion(); $version_info = explode('.', $version_info); if ($version_info[0] > $major) { return true; } elseif ($version_info[0] == $major) { if ($version_info[1] > $minor) { return true; } elseif ($version_info[1] == $minor) { if ($version_info[2] >= $revision) { return true; } else { return false; } } else { return false; } } else { return false; } } public function formatColor($value) { if ($value = preg_replace('/[^a-zA-Z0-9\s]/', '', $value)) { $value = '#' . $value; } return $value; } public function isEnterprise() { $modules = array_keys((array)Mage::getConfig()->getNode('modules')->children()); return in_array('Enterprise_Enterprise', $modules); } public function getIsUltimentoTheme() { $modules = (array)Mage::getConfig()->getNode('modules')->children(); if (!isset($modules['Ultimento_Theme'])) { return false; } return $modules['Ultimento_Theme']->is('active'); } public function isInfortisUltimo() { if ($this->is_infortis_ultimo === null) { $modules = (array)Mage::getConfig()->getNode('modules') ->children(); if ( !isset($modules['Infortis_Ultimo']) || !$modules['Infortis_Ultimo']->is('active') || (Mage::getStoreConfig('design/package/name') !== 'ultimo') ) { $this->is_infortis_ultimo = false; } else { $this->is_infortis_ultimo = true; } } return $this->is_infortis_ultimo; } /** * Get swatches product javascript * * @return string */ public function getSwatchesProductJs() { $modules = (array)Mage::getConfig()->getNode('modules')->children(); if (isset($modules['Mage_ConfigurableSwatches']) && $modules['Mage_ConfigurableSwatches']->is('active')) { return 'js/configurableswatches/swatches-product.js'; } return ''; } public function notify() { $frequency = intval(Mage::app()->loadCache('gomage_notifications_frequency')); if (!$frequency) { $frequency = 24; } $last_update = intval(Mage::app()->loadCache('gomage_notifications_last_update')); if (($frequency * 60 * 60 + $last_update) > time()) { return false; } $timestamp = $last_update; if (!$timestamp) { $timestamp = time(); } try { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, sprintf('https://www.gomage.com/index.php/gomage_notification/index/data')); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, 'sku=procart&timestamp=' . $timestamp . '&ver=' . urlencode('2.2.0')); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); $content = curl_exec($ch); try { $result = Zend_Json::decode($content); } catch (\Exception $e) { $result = array(); } if ($result && isset($result['frequency']) && ($result['frequency'] != $frequency)) { Mage::app()->saveCache($result['frequency'], 'gomage_notifications_frequency'); } if ($result && isset($result['data'])) { if (!empty($result['data'])) { Mage::getModel('adminnotification/inbox')->parse($result['data']); } } } catch (Exception $e) { } Mage::app()->saveCache(time(), 'gomage_notifications_last_update'); } }

Did this file decode correctly?

Original Code

<?php eval(base64_decode("LyoqICogR29NYWdlIFByb2NhcnQgRXh0ZW5zaW9uICogKiBAY2F0ZWdvcnkgRXh0ZW5zaW9uICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNiBHb01hZ2UgKGh0dHBzOi8vd3d3LmdvbWFnZS5jb20pICogQGF1dGhvciBHb01hZ2UgKiBAbGljZW5zZSBodHRwczovL3d3dy5nb21hZ2UuY29tL2xpY2Vuc2UtYWdyZWVtZW50LyBTaW5nbGUgZG9tYWluIGxpY2Vuc2UgKiBAdGVybXMgb2YgdXNlIGh0dHBzOi8vd3d3LmdvbWFnZS5jb20vdGVybXMtb2YtdXNlICogQHZlcnNpb24gUmVsZWFzZTogMi4yLjAgKiBAc2luY2UgQ2xhc3MgYXZhaWxhYmxlIHNpbmNlIFJlbGVhc2UgMS4wICovIGNsYXNzIEdvTWFnZV9Qcm9jYXJ0X0hlbHBlcl9EYXRhIGV4dGVuZHMgTWFnZV9Db3JlX0hlbHBlcl9BYnN0cmFjdCB7IHByb3RlY3RlZCAkaXNfaW5mb3J0aXNfdWx0aW1vOyBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29uZmlnRGF0YSgkbm9kZSkgeyByZXR1cm4gTWFnZTo6Z2V0U3RvcmVDb25maWcoJ2dvbWFnZV9wcm9jYXJ0LycgLiAkbm9kZSk7IH0gcHVibGljIGZ1bmN0aW9uIGdldEFsbFN0b3JlRG9tYWlucygpIHsgJGRvbWFpbnMgPSBhcnJheSgpOyBmb3JlYWNoIChNYWdlOjphcHAoKS0+Z2V0V2Vic2l0ZXMoKSBhcyAkd2Vic2l0ZSkgeyAkdXJsID0gJHdlYnNpdGUtPmdldENvbmZpZygnd2ViL3Vuc2VjdXJlL2Jhc2VfdXJsJyk7IGlmICgkZG9tYWluID0gdHJpbShwcmVnX3JlcGxhY2UoJy9eLio/XFwvXFwvKC4qKT9cXC8vJywgJyQxJywgJHVybCkpKSB7ICRkb21haW5zW10gPSAkZG9tYWluOyB9ICR1cmwgPSAkd2Vic2l0ZS0+Z2V0Q29uZmlnKCd3ZWIvc2VjdXJlL2Jhc2VfdXJsJyk7IGlmICgkZG9tYWluID0gdHJpbShwcmVnX3JlcGxhY2UoJy9eLio/XFwvXFwvKC4qKT9cXC8vJywgJyQxJywgJHVybCkpKSB7ICRkb21haW5zW10gPSAkZG9tYWluOyB9IH0gcmV0dXJuIGFycmF5X3VuaXF1ZSgkZG9tYWlucyk7IH0gcHVibGljIGZ1bmN0aW9uIGdldEF2YWlsYWJlbFdlYnNpdGVzKCkgeyByZXR1cm4gJHRoaXMtPl93KCk7IH0gcHVibGljIGZ1bmN0aW9uIGdldEF2YWlsYXZlbFdlYnNpdGVzKCkgeyByZXR1cm4gJHRoaXMtPl93KCk7IH0gcHJvdGVjdGVkIGZ1bmN0aW9uIF93KCkgeyBpZiAoIU1hZ2U6OmdldFN0b3JlQ29uZmlnKCdnb21hZ2VfYWN0aXZhdGlvbi9wcm9jYXJ0L2luc3RhbGxlZCcpIHx8IChpbnR2YWwoTWFnZTo6Z2V0U3RvcmVDb25maWcoJ2dvbWFnZV9hY3RpdmF0aW9uL3Byb2NhcnQvY291bnQnKSkgPiAxMCkgKSB7IHJldHVybiBhcnJheSgpOyB9ICR0aW1lX3RvX3VwZGF0ZSA9IDYwICogNjAgKiAyNCAqIDE1OyAkciA9IE1hZ2U6OmdldFN0b3JlQ29uZmlnKCdnb21hZ2VfYWN0aXZhdGlvbi9wcm9jYXJ0L2FyJyk7ICR0ID0gTWFnZTo6Z2V0U3RvcmVDb25maWcoJ2dvbWFnZV9hY3RpdmF0aW9uL3Byb2NhcnQvdGltZScpOyAkcyA9IE1hZ2U6OmdldFN0b3JlQ29uZmlnKCdnb21hZ2VfYWN0aXZhdGlvbi9wcm9jYXJ0L3dlYnNpdGVzJyk7ICRsYXN0X2NoZWNrID0gc3RyX3JlcGxhY2UoJHIsICcnLCBNYWdlOjpoZWxwZXIoJ2NvcmUnKS0+ZGVjcnlwdCgkdCkpOyAkYWxsc2l0ZXMgPSBleHBsb2RlKCcsJywgc3RyX3JlcGxhY2UoJHIsICcnLCBNYWdlOjpoZWxwZXIoJ2NvcmUnKS0+ZGVjcnlwdCgkcykpKTsgJGFsbHNpdGVzID0gYXJyYXlfZGlmZigkYWxsc2l0ZXMsIGFycmF5KCIiKSk7IGlmICgoJGxhc3RfY2hlY2sgKyAkdGltZV90b191cGRhdGUpIDwgdGltZSgpKSB7ICR0aGlzLT5hKE1hZ2U6OmdldFN0b3JlQ29uZmlnKCdnb21hZ2VfYWN0aXZhdGlvbi9wcm9jYXJ0L2tleScpLCBpbnR2YWwoTWFnZTo6Z2V0U3RvcmVDb25maWcoJ2dvbWFnZV9hY3RpdmF0aW9uL3Byb2NhcnQvY291bnQnKSksIGltcGxvZGUoJywnLCAkYWxsc2l0ZXMpICk7IH0gcmV0dXJuICRhbGxzaXRlczsgfSBwdWJsaWMgZnVuY3Rpb24gYSgkaywgJGMgPSAwLCAkcyA9ICcnKSB7ICRjaCA9IGN1cmxfaW5pdCgpOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCBzcHJpbnRmKCdodHRwczovL3d3dy5nb21hZ2UuY29tL2luZGV4LnBocC9nb21hZ2VfZG93bmxvYWRhYmxlL2tleS9jaGVjaycpKTsgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIHRydWUpOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVEZJRUxEUywgJ2tleT0nIC4gdXJsZW5jb2RlKCRrKSAuICcmc2t1PXByb2NhcnQmZG9tYWlucz0nIC4gdXJsZW5jb2RlKGltcGxvZGUoJywnLCAkdGhpcy0+Z2V0QWxsU3RvcmVEb21haW5zKCkpKSAuICcmdmVyPScgLiB1cmxlbmNvZGUoJzIuMi4wJykpOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVElNRU9VVCwgMzApOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDApOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDApOyAkY29udGVudCA9IGN1cmxfZXhlYygkY2gpOyB0cnkgeyAkciA9IFplbmRfSnNvbjo6ZGVjb2RlKCRjb250ZW50KTsgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgeyAkciA9IGFycmF5KCk7IH0gJGUgPSBNYWdlOjpoZWxwZXIoJ2NvcmUnKTsgaWYgKGVtcHR5KCRyKSkgeyAkdmFsdWUxID0gTWFnZTo6Z2V0U3RvcmVDb25maWcoJ2dvbWFnZV9hY3RpdmF0aW9uL3Byb2NhcnQvYXInKTsgJGdyb3VwcyA9IGFycmF5KCAncHJvY2FydCcgPT4gYXJyYXkoICdmaWVsZHMnID0+IGFycmF5KCAnYXInID0+IGFycmF5KCAndmFsdWUnID0+ICR2YWx1ZTEgKSwgJ3dlYnNpdGVzJyA9PiBhcnJheSggJ3ZhbHVlJyA9PiAoc3RyaW5nKU1hZ2U6OmdldFN0b3JlQ29uZmlnKCdnb21hZ2VfYWN0aXZhdGlvbi9wcm9jYXJ0L3dlYnNpdGVzJykgKSwgJ3RpbWUnID0+IGFycmF5KCAndmFsdWUnID0+IChzdHJpbmcpJGUtPmVuY3J5cHQoJHZhbHVlMSAuICh0aW1lKCkgLSAoNjAgKiA2MCAqIDI0ICogMTUgLSAxODAwKSkgLiAkdmFsdWUxKSApLCAnY291bnQnID0+IGFycmF5KCAndmFsdWUnID0+ICRjICsgMSkgKSApICk7IE1hZ2U6OmdldE1vZGVsKCdhZG1pbmh0bWwvY29uZmlnX2RhdGEnKSAtPnNldFNlY3Rpb24oJ2dvbWFnZV9hY3RpdmF0aW9uJykgLT5zZXRHcm91cHMoJGdyb3VwcykgLT5zYXZlKCk7IE1hZ2U6OmdldENvbmZpZygpLT5yZWluaXQoKTsgTWFnZTo6YXBwKCktPnJlaW5pdFN0b3JlcygpOyByZXR1cm47IH0gJHZhbHVlMSA9ICcnOyAkdmFsdWUyID0gJyc7IGlmIChpc3NldCgkclsnZCddKSAmJiBpc3NldCgkclsnYyddKSkgeyAkdmFsdWUxID0gJGUtPmVuY3J5cHQoYmFzZTY0X2VuY29kZShaZW5kX0pzb246OmVuY29kZSgkcikpKTsgaWYgKCEkcykgeyAkcyA9IE1hZ2U6OmdldFN0b3JlQ29uZmlnKCdnb21hZ2VfYWN0aXZhdGlvbi9wcm9jYXJ0L3dlYnNpdGVzJyk7IH0gJHMgPSBhcnJheV9zbGljZShleHBsb2RlKCcsJywgJHMpLCAwLCAkclsnYyddKTsgJHZhbHVlMiA9ICRlLT5lbmNyeXB0KCR2YWx1ZTEgLiBpbXBsb2RlKCcsJywgJHMpIC4gJHZhbHVlMSk7IH0gJGdyb3VwcyA9IGFycmF5KCAncHJvY2FydCcgPT4gYXJyYXkoICdmaWVsZHMnID0+IGFycmF5KCAnYXInID0+IGFycmF5KCAndmFsdWUnID0+ICR2YWx1ZTEgKSwgJ3dlYnNpdGVzJyA9PiBhcnJheSggJ3ZhbHVlJyA9PiAoc3RyaW5nKSR2YWx1ZTIgKSwgJ3RpbWUnID0+IGFycmF5KCAndmFsdWUnID0+IChzdHJpbmcpJGUtPmVuY3J5cHQoJHZhbHVlMSAuIHRpbWUoKSAuICR2YWx1ZTEpICksICdpbnN0YWxsZWQnID0+IGFycmF5KCAndmFsdWUnID0+IDEgKSwgJ2NvdW50JyA9PiBhcnJheSggJ3ZhbHVlJyA9PiAwKSApICkgKTsgTWFnZTo6Z2V0TW9kZWwoJ2FkbWluaHRtbC9jb25maWdfZGF0YScpIC0+c2V0U2VjdGlvbignZ29tYWdlX2FjdGl2YXRpb24nKSAtPnNldEdyb3VwcygkZ3JvdXBzKSAtPnNhdmUoKTsgTWFnZTo6Z2V0Q29uZmlnKCktPnJlaW5pdCgpOyBNYWdlOjphcHAoKS0+cmVpbml0U3RvcmVzKCk7IH0gcHVibGljIGZ1bmN0aW9uIGdhKCkgeyAkYXIgPSBiYXNlNjRfZGVjb2RlKE1hZ2U6OmhlbHBlcignY29yZScpLT5kZWNyeXB0KE1hZ2U6OmdldFN0b3JlQ29uZmlnKCdnb21hZ2VfYWN0aXZhdGlvbi9wcm9jYXJ0L2FyJykpKTsgcmV0dXJuICRhciA/IFplbmRfSnNvbjo6ZGVjb2RlKCRhcikgOiBhcnJheSgpOyB9IHB1YmxpYyBmdW5jdGlvbiBnZXRJc0NhcnRQYWdlKCkgeyByZXR1cm4gKChNYWdlOjphcHAoKS0+Z2V0RnJvbnRDb250cm9sbGVyKCktPmdldFJlcXVlc3QoKS0+Z2V0UmVxdWVzdGVkUm91dGVOYW1lKCkgPT0gJ2NoZWNrb3V0JykgJiYgKE1hZ2U6OmFwcCgpLT5nZXRGcm9udENvbnRyb2xsZXIoKS0+Z2V0UmVxdWVzdCgpLT5nZXRSZXF1ZXN0ZWRDb250cm9sbGVyTmFtZSgpID09ICdjYXJ0JykgJiYgKE1hZ2U6OmFwcCgpLT5nZXRGcm9udENvbnRyb2xsZXIoKS0+Z2V0UmVxdWVzdCgpLT5nZXRSZXF1ZXN0ZWRBY3Rpb25OYW1lKCkgPT0gJ2luZGV4JykpOyB9IHB1YmxpYyBmdW5jdGlvbiBpc1doaXNobGlzdE1vdmUoKSB7IHJldHVybiAoTWFnZTo6YXBwKCktPmdldEZyb250Q29udHJvbGxlcigpLT5nZXRSZXF1ZXN0KCktPmdldFBhcmFtKCdncGNfd2lzaGxpc3RfYWRkJykgPT0gMSk7IH0gcHVibGljIGZ1bmN0aW9uIGdldENoYW5nZUF0dHJpYnV0ZUNhcnQoKSB7IHJldHVybiAoKE1hZ2U6OmFwcCgpLT5nZXRGcm9udENvbnRyb2xsZXIoKS0+Z2V0UmVxdWVzdCgpLT5nZXRSZXF1ZXN0ZWRSb3V0ZU5hbWUoKSA9PSAnZ29tYWdlX3Byb2NhcnQnKSAmJiAoTWFnZTo6YXBwKCktPmdldEZyb250Q29udHJvbGxlcigpLT5nZXRSZXF1ZXN0KCktPmdldFJlcXVlc3RlZENvbnRyb2xsZXJOYW1lKCkgPT0gJ3Byb2NhcnQnKSAmJiAoTWFnZTo6YXBwKCktPmdldEZyb250Q29udHJvbGxlcigpLT5nZXRSZXF1ZXN0KCktPmdldFJlcXVlc3RlZEFjdGlvbk5hbWUoKSA9PSAnY2hhbmdlYXR0cmlidXRlY2FydCcpKTsgfSBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2hhbmdlUXR5Q2FydCgpIHsgcmV0dXJuICgoTWFnZTo6YXBwKCktPmdldEZyb250Q29udHJvbGxlcigpLT5nZXRSZXF1ZXN0KCktPmdldFJlcXVlc3RlZFJvdXRlTmFtZSgpID09ICdnb21hZ2VfcHJvY2FydCcpICYmIChNYWdlOjphcHAoKS0+Z2V0RnJvbnRDb250cm9sbGVyKCktPmdldFJlcXVlc3QoKS0+Z2V0UmVxdWVzdGVkQ29udHJvbGxlck5hbWUoKSA9PSAncHJvY2FydCcpICYmIChNYWdlOjphcHAoKS0+Z2V0RnJvbnRDb250cm9sbGVyKCktPmdldFJlcXVlc3QoKS0+Z2V0UmVxdWVzdGVkQWN0aW9uTmFtZSgpID09ICdjaGFuZ2VxdHljYXJ0aXRlbScpKTsgfSBwdWJsaWMgZnVuY3Rpb24gaXNQcm9DYXJ0RW5hYmxlKCkgeyByZXR1cm4gKE1hZ2U6OmdldFN0b3JlQ29uZmlnKCdnb21hZ2VfcHJvY2FydC9nZW5lcmFsL2VuYWJsZScpICYmIGluX2FycmF5KE1hZ2U6OmFwcCgpLT5nZXRTdG9yZSgpLT5nZXRXZWJzaXRlSWQoKSwgJHRoaXMtPmdldEF2YWlsYXZlbFdlYnNpdGVzKCkpKTsgfSBwdWJsaWMgZnVuY3Rpb24gaXNDcm9zc3NlbGxBZGQoKSB7IHJldHVybiAoKE1hZ2U6OmFwcCgpLT5nZXRGcm9udENvbnRyb2xsZXIoKS0+Z2V0UmVxdWVzdCgpLT5nZXRQYXJhbSgnZ3BjX2Nyb3Nzc2VsbCcpID09IDEpIHx8IChNYWdlOjphcHAoKS0+Z2V0RnJvbnRDb250cm9sbGVyKCktPmdldFJlcXVlc3QoKS0+Z2V0UGFyYW0oJ2dwY19hZGQnKSA9PSAxKSk7IH0gcHVibGljIGZ1bmN0aW9uIGlzUHJvZHVjdFJldmlld1BhZ2UoKSB7IHJldHVybiBNYWdlOjphcHAoKS0+Z2V0RnJvbnRDb250cm9sbGVyKCktPmdldFJlcXVlc3QoKS0+Z2V0UmVxdWVzdGVkUm91dGVOYW1lKCkgPT0gJ3Jldmlldyc7IH0gcHVibGljIGZ1bmN0aW9uIGlzU2hvcHBpbmdDYXJ0RGlzYWJsZSgpIHsgaWYgKGNvdW50KE1hZ2U6OmdldFNpbmdsZXRvbignY2hlY2tvdXQvc2Vzc2lvbicpLT5nZXRNZXNzYWdlcyhmYWxzZSktPmdldEl0ZW1zKE1hZ2VfQ29yZV9Nb2RlbF9NZXNzYWdlOjpFUlJPUikpICYmICR0aGlzLT5pc1Byb0NhcnRFbmFibGUoKSkgeyByZXR1cm4gZmFsc2U7IH0gJHByb2NhcnQgPSAoTWFnZTo6Z2V0U3RvcmVDb25maWcoJ2dvbWFnZV9wcm9jYXJ0L2dlbmVyYWwvZGlzYWJsZV9jYXJ0JykgJiYgJHRoaXMtPmlzUHJvQ2FydEVuYWJsZSgpKTsgaWYgKCRwcm9jYXJ0KSB7IHJldHVybiB0cnVlOyB9ICRfbW9kdWxlcyA9IE1hZ2U6OmdldENvbmZpZygpLT5nZXROb2RlKCdtb2R1bGVzJyktPmNoaWxkcmVuKCk7ICRfbW9kdWxlc0FycmF5ID0gKGFycmF5KSRfbW9kdWxlczsgJGxpZ2h0Y2hlY2tvdXQgPSAoaXNzZXQoJF9tb2R1bGVzQXJyYXlbJ0dvTWFnZV9DaGVja291dCddKSAmJiAkX21vZHVsZXNBcnJheVsnR29NYWdlX0NoZWNrb3V0J10tPmlzKCdhY3RpdmUnKSk7IGlmICghJGxpZ2h0Y2hlY2tvdXQpIHsgcmV0dXJuIGZhbHNlOyB9ICRsaWdodGNoZWNrb3V0ID0gKE1hZ2U6OmhlbHBlcignZ29tYWdlX2NoZWNrb3V0JyktPmdldENvbmZpZ0RhdGEoJ2dlbmVyYWwvZGlzYWJsZV9jYXJ0JykgJiYgTWFnZTo6aGVscGVyKCdnb21hZ2VfY2hlY2tvdXQnKS0+Z2V0Q29uZmlnRGF0YSgnZ2VuZXJhbC9lbmFibGVkJykgJiYgaW5fYXJyYXkoTWFnZTo6YXBwKCktPmdldFN0b3JlKCktPmdldFdlYnNpdGVJZCgpLCBNYWdlOjpoZWxwZXIoJ2dvbWFnZV9jaGVja291dCcpLT5nZXRBdmFpbGF2ZWxXZWJzaXRlcygpKSk7IHJldHVybiAkbGlnaHRjaGVja291dDsgfSBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvY2FydFByb2R1Y3REYXRhKCRwcm9kdWN0LCAkY2FydCA9IGZhbHNlLCAkcGFyZW50X2lkID0gZmFsc2UpIHsgJHN0b2NrX2l0ZW0gPSBNYWdlOjpnZXRNb2RlbCgnY2F0YWxvZ2ludmVudG9yeS9zdG9ja19pdGVtJyktPmxvYWRCeVByb2R1Y3QoJHByb2R1Y3QpOyBpZiAoJHN0b2NrX2l0ZW0tPmdldE1hbmFnZVN0b2NrKCkgJiYgISRzdG9ja19pdGVtLT5nZXRCYWNrb3JkZXJzKCkpIHsgJG1pbl9xdHkgPSAkc3RvY2tfaXRlbS0+Z2V0TWluU2FsZVF0eSgpOyBpZiAoJHByb2R1Y3QtPmdldFR5cGVJZCgpID09IE1hZ2VfQ2F0YWxvZ19Nb2RlbF9Qcm9kdWN0X1R5cGU6OlRZUEVfU0lNUExFKSB7ICRtYXhfcXR5ID0gbWluKGFycmF5KCRzdG9ja19pdGVtLT5nZXRNYXhTYWxlUXR5KCksICRzdG9ja19pdGVtLT5nZXRRdHkoKSkpOyB9IGVsc2UgeyAkbWF4X3F0eSA9ICRzdG9ja19pdGVtLT5nZXRNYXhTYWxlUXR5KCk7IH0gJHF1b3RlID0gTWFnZTo6Z2V0U2luZ2xldG9uKCdjaGVja291dC9zZXNzaW9uJyktPmdldFF1b3RlKCk7ICRpdGVtID0gJHF1b3RlLT5nZXRJdGVtQnlQcm9kdWN0KCRwcm9kdWN0KTsgaWYgKCRpdGVtICYmICRxdHkgPSAkaXRlbS0+Z2V0UXR5KCkpIHsgJG1heF9xdHkgPSAkbWF4X3F0eSAtICRxdHk7IGlmICgkbWluX3F0eSA+ICRtYXhfcXR5KSB7ICRtaW5fcXR5ID0gJG1heF9xdHk7IH0gfSB9IGVsc2UgeyAkbWluX3F0eSA9ICRzdG9ja19pdGVtLT5nZXRNaW5TYWxlUXR5KCk7ICRtYXhfcXR5ID0gJHN0b2NrX2l0ZW0tPmdldE1heFNhbGVRdHkoKTsgfSBpZiAoJHBhcmVudF9pZCB8fCAkcHJvZHVjdC0+Z2V0VHlwZUlkKCkgPT0gTWFnZV9DYXRhbG9nX01vZGVsX1Byb2R1Y3RfVHlwZTo6VFlQRV9HUk9VUEVEKSB7ICRtaW5fcXR5ID0gMDsgfSAkcXR5X2luY3JlbWVudHMgPSAkc3RvY2tfaXRlbS0+Z2V0UXR5SW5jcmVtZW50cygpOyBpZiAoJHF0eV9pbmNyZW1lbnRzICYmICEkcGFyZW50X2lkKSB7ICRtaW5fcXR5ID0gJHF0eV9pbmNyZW1lbnRzOyB9IGlmICgkcGFyZW50X2lkKSB7ICRwYXJlbnRfcHJvZHVjdCA9IE1hZ2U6OmdldE1vZGVsKCdjYXRhbG9nL3Byb2R1Y3QnKS0+bG9hZCgkcGFyZW50X2lkKTsgaWYgKCRwYXJlbnRfcHJvZHVjdC0+Z2V0VHlwZUlkKCkgPT0gTWFnZV9DYXRhbG9nX01vZGVsX1Byb2R1Y3RfVHlwZTo6VFlQRV9DT05GSUdVUkFCTEUpIHsgJHByb2R1Y3RfZGF0YSA9IE1hZ2U6OmdldE1vZGVsKCdjYXRhbG9naW52ZW50b3J5L3N0b2NrX2l0ZW0nKS0+bG9hZEJ5UHJvZHVjdCgkcGFyZW50X3Byb2R1Y3QpOyAkcXR5X2luY3JlbWVudHMgPSAkcHJvZHVjdF9kYXRhLT5nZXRRdHlJbmNyZW1lbnRzKCk7ICRtaW5fcXR5ID0gJHF0eV9pbmNyZW1lbnRzOyB9IH0gJGJsb2NrX3Byb2R1Y3RfbGlzdCA9IE1hZ2U6OmdldEJsb2NrU2luZ2xldG9uKCdjYXRhbG9nL3Byb2R1Y3RfbGlzdCcpOyByZXR1cm4gYXJyYXkoICdtaW5fcXR5JyA9PiBpbnR2YWwoJG1pbl9xdHkpLCAnbWF4X3F0eScgPT4gaW50dmFsKCRtYXhfcXR5KSwgJ25hbWUnID0+ICRwcm9kdWN0LT5nZXROYW1lKCksICdpc19zaW1wbGUnID0+ICgkcHJvZHVjdC0+Z2V0VHlwZUlkKCkgPT0gTWFnZV9DYXRhbG9nX01vZGVsX1Byb2R1Y3RfVHlwZTo6VFlQRV9TSU1QTEUgPyAxIDogMCksICdpc19ncm91cGVkJyA9PiAoJHByb2R1Y3QtPmdldFR5cGVJZCgpID09IE1hZ2VfQ2F0YWxvZ19Nb2RlbF9Qcm9kdWN0X1R5cGU6OlRZUEVfR1JPVVBFRCA/IDEgOiAwKSwgJ2lzX2J1bmRsZWQnID0+ICgkcHJvZHVjdC0+Z2V0VHlwZUlkKCkgPT0gTWFnZV9DYXRhbG9nX01vZGVsX1Byb2R1Y3RfVHlwZTo6VFlQRV9CVU5ETEUgPyAxIDogMCksICdpc19naWZ0Y2FyZCcgPT4gKCRwcm9kdWN0LT5nZXRUeXBlSWQoKSA9PSAnZ2lmdGNhcmQnID8gMSA6IDApLCAncGFyZW50X2lkJyA9PiAkcGFyZW50X2lkLCAncHJvZHVjdF91cmwnID0+ICRwcm9kdWN0LT5nZXRQcm9kdWN0VXJsKCksICdhZGR0b2NhcnRfdXJsJyA9PiAkYmxvY2tfcHJvZHVjdF9saXN0LT5nZXRBZGRUb0NhcnRVcmwoJHByb2R1Y3QpLCAnaW5jcmVtZW50cycgPT4gKCRxdHlfaW5jcmVtZW50cyA/ICRxdHlfaW5jcmVtZW50cyA6IDEpICk7IH0gcHVibGljIGZ1bmN0aW9uIGlzQ29uZmlndXJlQ2FydCgpIHsgcmV0dXJuIHN0cnBvcyhNYWdlOjpoZWxwZXIoJ2NvcmUvdXJsJyktPmdldEN1cnJlbnRVcmwoKSwgJ2NvbmZpZ3VyZS9pZCcpID8gMSA6IDA7IH0gcHVibGljIGZ1bmN0aW9uIGdldEJ1bmRsZVByb2R1Y3RTZWxlY3Rpb25zKCRwYXJlbnRQcm9kdWN0KSB7ICR0eXBlSW5zdGFuY2UgPSAkcGFyZW50UHJvZHVjdC0+Z2V0VHlwZUluc3RhbmNlKHRydWUpOyByZXR1cm4gJHR5cGVJbnN0YW5jZS0+Z2V0U2VsZWN0aW9uc0NvbGxlY3Rpb24oICR0eXBlSW5zdGFuY2UtPmdldE9wdGlvbnNJZHMoJHBhcmVudFByb2R1Y3QpLCAkcGFyZW50UHJvZHVjdCApOyB9IHB1YmxpYyBmdW5jdGlvbiBnZXRJc0FueW1vcmVWZXJzaW9uKCRtYWpvciwgJG1pbm9yLCAkcmV2aXNpb24gPSAwKSB7ICR2ZXJzaW9uX2luZm8gPSBNYWdlOjpnZXRWZXJzaW9uKCk7ICR2ZXJzaW9uX2luZm8gPSBleHBsb2RlKCcuJywgJHZlcnNpb25faW5mbyk7IGlmICgkdmVyc2lvbl9pbmZvWzBdID4gJG1ham9yKSB7IHJldHVybiB0cnVlOyB9IGVsc2VpZiAoJHZlcnNpb25faW5mb1swXSA9PSAkbWFqb3IpIHsgaWYgKCR2ZXJzaW9uX2luZm9bMV0gPiAkbWlub3IpIHsgcmV0dXJuIHRydWU7IH0gZWxzZWlmICgkdmVyc2lvbl9pbmZvWzFdID09ICRtaW5vcikgeyBpZiAoJHZlcnNpb25faW5mb1syXSA+PSAkcmV2aXNpb24pIHsgcmV0dXJuIHRydWU7IH0gZWxzZSB7IHJldHVybiBmYWxzZTsgfSB9IGVsc2UgeyByZXR1cm4gZmFsc2U7IH0gfSBlbHNlIHsgcmV0dXJuIGZhbHNlOyB9IH0gcHVibGljIGZ1bmN0aW9uIGZvcm1hdENvbG9yKCR2YWx1ZSkgeyBpZiAoJHZhbHVlID0gcHJlZ19yZXBsYWNlKCcvW15hLXpBLVowLTlcc10vJywgJycsICR2YWx1ZSkpIHsgJHZhbHVlID0gJyMnIC4gJHZhbHVlOyB9IHJldHVybiAkdmFsdWU7IH0gcHVibGljIGZ1bmN0aW9uIGlzRW50ZXJwcmlzZSgpIHsgJG1vZHVsZXMgPSBhcnJheV9rZXlzKChhcnJheSlNYWdlOjpnZXRDb25maWcoKS0+Z2V0Tm9kZSgnbW9kdWxlcycpLT5jaGlsZHJlbigpKTsgcmV0dXJuIGluX2FycmF5KCdFbnRlcnByaXNlX0VudGVycHJpc2UnLCAkbW9kdWxlcyk7IH0gcHVibGljIGZ1bmN0aW9uIGdldElzVWx0aW1lbnRvVGhlbWUoKSB7ICRtb2R1bGVzID0gKGFycmF5KU1hZ2U6OmdldENvbmZpZygpLT5nZXROb2RlKCdtb2R1bGVzJyktPmNoaWxkcmVuKCk7IGlmICghaXNzZXQoJG1vZHVsZXNbJ1VsdGltZW50b19UaGVtZSddKSkgeyByZXR1cm4gZmFsc2U7IH0gcmV0dXJuICRtb2R1bGVzWydVbHRpbWVudG9fVGhlbWUnXS0+aXMoJ2FjdGl2ZScpOyB9IHB1YmxpYyBmdW5jdGlvbiBpc0luZm9ydGlzVWx0aW1vKCkgeyBpZiAoJHRoaXMtPmlzX2luZm9ydGlzX3VsdGltbyA9PT0gbnVsbCkgeyAkbW9kdWxlcyA9IChhcnJheSlNYWdlOjpnZXRDb25maWcoKS0+Z2V0Tm9kZSgnbW9kdWxlcycpIC0+Y2hpbGRyZW4oKTsgaWYgKCAhaXNzZXQoJG1vZHVsZXNbJ0luZm9ydGlzX1VsdGltbyddKSB8fCAhJG1vZHVsZXNbJ0luZm9ydGlzX1VsdGltbyddLT5pcygnYWN0aXZlJykgfHwgKE1hZ2U6OmdldFN0b3JlQ29uZmlnKCdkZXNpZ24vcGFja2FnZS9uYW1lJykgIT09ICd1bHRpbW8nKSApIHsgJHRoaXMtPmlzX2luZm9ydGlzX3VsdGltbyA9IGZhbHNlOyB9IGVsc2UgeyAkdGhpcy0+aXNfaW5mb3J0aXNfdWx0aW1vID0gdHJ1ZTsgfSB9IHJldHVybiAkdGhpcy0+aXNfaW5mb3J0aXNfdWx0aW1vOyB9IC8qKiAqIEdldCBzd2F0Y2hlcyBwcm9kdWN0IGphdmFzY3JpcHQgKiAqIEByZXR1cm4gc3RyaW5nICovIHB1YmxpYyBmdW5jdGlvbiBnZXRTd2F0Y2hlc1Byb2R1Y3RKcygpIHsgJG1vZHVsZXMgPSAoYXJyYXkpTWFnZTo6Z2V0Q29uZmlnKCktPmdldE5vZGUoJ21vZHVsZXMnKS0+Y2hpbGRyZW4oKTsgaWYgKGlzc2V0KCRtb2R1bGVzWydNYWdlX0NvbmZpZ3VyYWJsZVN3YXRjaGVzJ10pICYmICRtb2R1bGVzWydNYWdlX0NvbmZpZ3VyYWJsZVN3YXRjaGVzJ10tPmlzKCdhY3RpdmUnKSkgeyByZXR1cm4gJ2pzL2NvbmZpZ3VyYWJsZXN3YXRjaGVzL3N3YXRjaGVzLXByb2R1Y3QuanMnOyB9IHJldHVybiAnJzsgfSBwdWJsaWMgZnVuY3Rpb24gbm90aWZ5KCkgeyAkZnJlcXVlbmN5ID0gaW50dmFsKE1hZ2U6OmFwcCgpLT5sb2FkQ2FjaGUoJ2dvbWFnZV9ub3RpZmljYXRpb25zX2ZyZXF1ZW5jeScpKTsgaWYgKCEkZnJlcXVlbmN5KSB7ICRmcmVxdWVuY3kgPSAyNDsgfSAkbGFzdF91cGRhdGUgPSBpbnR2YWwoTWFnZTo6YXBwKCktPmxvYWRDYWNoZSgnZ29tYWdlX25vdGlmaWNhdGlvbnNfbGFzdF91cGRhdGUnKSk7IGlmICgoJGZyZXF1ZW5jeSAqIDYwICogNjAgKyAkbGFzdF91cGRhdGUpID4gdGltZSgpKSB7IHJldHVybiBmYWxzZTsgfSAkdGltZXN0YW1wID0gJGxhc3RfdXBkYXRlOyBpZiAoISR0aW1lc3RhbXApIHsgJHRpbWVzdGFtcCA9IHRpbWUoKTsgfSB0cnkgeyAkY2ggPSBjdXJsX2luaXQoKTsgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgc3ByaW50ZignaHR0cHM6Ly93d3cuZ29tYWdlLmNvbS9pbmRleC5waHAvZ29tYWdlX25vdGlmaWNhdGlvbi9pbmRleC9kYXRhJykpOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCAnc2t1PXByb2NhcnQmdGltZXN0YW1wPScgLiAkdGltZXN0YW1wIC4gJyZ2ZXI9JyAuIHVybGVuY29kZSgnMi4yLjAnKSk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9USU1FT1VULCAzMCk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgMCk7ICRjb250ZW50ID0gY3VybF9leGVjKCRjaCk7IHRyeSB7ICRyZXN1bHQgPSBaZW5kX0pzb246OmRlY29kZSgkY29udGVudCk7IH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsgJHJlc3VsdCA9IGFycmF5KCk7IH0gaWYgKCRyZXN1bHQgJiYgaXNzZXQoJHJlc3VsdFsnZnJlcXVlbmN5J10pICYmICgkcmVzdWx0WydmcmVxdWVuY3knXSAhPSAkZnJlcXVlbmN5KSkgeyBNYWdlOjphcHAoKS0+c2F2ZUNhY2hlKCRyZXN1bHRbJ2ZyZXF1ZW5jeSddLCAnZ29tYWdlX25vdGlmaWNhdGlvbnNfZnJlcXVlbmN5Jyk7IH0gaWYgKCRyZXN1bHQgJiYgaXNzZXQoJHJlc3VsdFsnZGF0YSddKSkgeyBpZiAoIWVtcHR5KCRyZXN1bHRbJ2RhdGEnXSkpIHsgTWFnZTo6Z2V0TW9kZWwoJ2FkbWlubm90aWZpY2F0aW9uL2luYm94JyktPnBhcnNlKCRyZXN1bHRbJ2RhdGEnXSk7IH0gfSB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsgfSBNYWdlOjphcHAoKS0+c2F2ZUNhY2hlKHRpbWUoKSwgJ2dvbWFnZV9ub3RpZmljYXRpb25zX2xhc3RfdXBkYXRlJyk7IH0gfQ=="));

Function Calls

base64_decode 1

Variables

None

Stats

MD5 c76b356bc436f66b17ef4a1346128398
Eval Count 1
Decode Time 70 ms