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 namespace RSThemes\Template; class License { public $licenseKey = ''; public $lice..
Decoded Output download
<?php
namespace RSThemes\Template; class License { public $licenseKey = ''; public $licenseFailDays = 30; public $licenseFailWarningDays = 3; public $template = NULL; public $templateName = NULL; public $forceRemoteCheck = false; private $licenseKeyName = NULL; private $licenseSecretKey = NULL; private $licenseConfigKey = NULL; private $activationCache = array(); private $licenseDetails = array("status" => '', "service_status" => '', "license_status" => '', "nextduedate" => '', "version" => "1.0.0", "lastRemoteChecked" => '', "lastRemoteCheckedFail" => '', "lastRemoteCheckedSuccess" => '', "regdate" => '', "first_payment_amount" => '', "recuring_amount" => '', "payment_method" => '', "warningShowDate" => '', "deactivationDate" => ''); private $rawLicenseDetails = NULL; private $licenseEncoded = NULL; private $licenseWarningKey = NULL; private $licenseWarningMessage = NULL; private $debug = false; private $checkLicenseHour = NULL; public static $licenseServerUrl = ''; public function __construct($licenseKeyName, $licenseSecretKey, $template) { $this->loadLicenseHour($licenseKeyName); $this->licenseKeyName = $licenseKeyName; $this->licenseSecretKey = $licenseSecretKey; $this->template = $template; $this->licenseConfigKey = sprintf("%s-data", $licenseKeyName); $this->licenseKey = (new \RSThemes\Models\Configuration())->getConfig($licenseKeyName); $this->licenseWarningKey = sprintf("%s-warning", $licenseKeyName); $this->licenseWarningMessage = (new \RSThemes\Models\Configuration())->getConfig($this->licenseWarningKey); $this->templateName = $this->template->getMainName(); $this->licenseEncoded = (new \RSThemes\Models\Configuration())->getConfig($this->licenseConfigKey); $this->rawLicenseDetails = $this->licenseDetails; $this->prepareLicense(); } private function loadLicenseHour($licenseKeyName) { $keyName = sprintf("%s-hour", $licenseKeyName); $hour = (new \RSThemes\Models\Configuration())->getConfig($keyName); if (strlen($hour) == 0) { $hour = rand(4, 23) . ":" . str_pad(rand(2, 59), 2, "0", STR_PAD_LEFT); (new \RSThemes\Models\Configuration())->saveConfig($keyName, $hour); } $this->checkLicenseHour = $hour; } private function prepareLicense() { if (0 < strlen($this->licenseEncoded)) { $this->loadLicense(); } if ($this->licenseDetails["service_status"] == "Active" && isset($this->licenseDetails["deactivationDate"]) && strlen($this->licenseDetails["deactivationDate"]) && $this->licenseDetails["deactivationDate"] < date("Y-m-d")) { $this->deactivateTemplate(); } if ($this->licenseDetails["service_status"] == "Active" && $this->remoteCheck()) { $this->reloadRemote(); } if ($this->debug === true) { echo "<pre>"; var_dump($this->licenseDetails); echo "</pre>"; die; } } private function loadLicense() { $result = self::decodeLicense($this->licenseEncoded, $this->licenseSecretKey); if ($result) { $this->licenseDetails = array(); foreach ($this->rawLicenseDetails as $key => $value) { $this->licenseDetails[$key] = isset($result[$key]) ? $result[$key] : $this->rawLicenseDetails[$key]; } } else { $this->deactivateTemplate(); } } public function deactivateTemplate() { if ((new \RSThemes\Models\Configuration())->getConfig("OrderFormTemplate") == $this->templateName) { (new \RSThemes\Models\Configuration())->saveConfig("OrderFormTemplate", "standard_cart"); } if ((new \RSThemes\Models\Configuration())->getConfig("Template") == $this->templateName) { (new \RSThemes\Models\Configuration())->saveConfig("Template", "six"); } (new \RSThemes\Models\Configuration())->removeConfig($this->licenseConfigKey); $this->licenseDetails = $this->rawLicenseDetails; $this->licenseEncoded = ''; } private function remoteCheck() { if (strlen($this->licenseKey) <= 0) { return false; } if ($this->forceRemoteCheck === true) { return true; } if ($this->licenseDetails["lastRemoteChecked"] != date("Y-m-d") && strtotime($this->checkLicenseHour) < strtotime(date("H:i"))) { return true; } return false; } private function reloadRemote($activation = false) { $details = self::loadRemoteLicense($this->licenseKey, $this->template->getVersion(), $this->templateName); if (isset($details["lastRemoteChecked"])) { $this->licenseDetails["lastRemoteChecked"] = $details["lastRemoteChecked"]; $this->saveLicenseDetails($this->licenseDetails); } if (isset($details["lastRemoteCheckedSuccess"])) { $this->licenseDetails["lastRemoteCheckedSuccess"] = $details["lastRemoteCheckedSuccess"]; $this->saveLicenseDetails($this->licenseDetails); } if (isset($details["lastRemoteCheckedFail"])) { $this->licenseDetails["lastRemoteCheckedFail"] = $details["lastRemoteCheckedFail"]; $this->saveLicenseDetails($this->licenseDetails); } if (isset($details["license_status"]) && in_array($details["license_status"], array("Active", "Suspended", "Expired"))) { self::logDetails("RSThemes", "reloadRemote - 1", "License Active"); $this->saveLicenseDetails($details); } if (isset($details["license_status"]) && $details["license_status"] == "Cancelled") { self::logDetails("RSThemes", "reloadRemote - 2", "License Cancelled - Template Deactivated"); if ($activation === false) { $this->setWarningMessage("deactivated.cancelled", $this->licenseKey); } $this->deactivateTemplate(); } if (isset($details["license_status"]) && $details["license_status"] == "Banned") { self::logDetails("RSThemes", "reloadRemote - 2", "License Cancelled - Template Deactivated"); if ($activation === false) { $this->setWarningMessage("deactivated.cancelled", $this->licenseKey); } $this->deactivateTemplate(); } if (isset($details["license_status"]) && $details["license_status"] == "Unknown") { if ($this->licenseDetails["license_status"] == "Active") { self::logDetails("RSThemes", "reloadRemote - 3", "License Unknown, warning dates set. "); $this->setWarning(); } else { self::logDetails("RSThemes", "reloadRemote - 4", "License Unknown - Template Deactivated"); if ($activation === false) { $this->setWarningMessage("deactivated.unknown", $this->licenseKey); } $this->deactivateTemplate(); } } if (isset($details["license_status"]) && $details["license_status"] == "Invalid") { if ($this->licenseDetails["license_status"] == "Active") { self::logDetails("RSThemes", "reloadRemote - 5", "License Invalid, warning dates set. "); $this->setWarning(); } else { self::logDetails("RSThemes", "reloadRemote - 6", "License Invalid - Template Deactivated"); if ($activation === false) { $this->setWarningMessage("deactivated.invalid", $this->licenseKey); } $this->deactivateTemplate(); } } $this->syncExtensions($details); return $details; } private function saveLicenseDetails($remoteDetails) { $this->licenseDetails = array(); foreach ($this->rawLicenseDetails as $key => $value) { $this->licenseDetails[$key] = isset($remoteDetails[$key]) ? $remoteDetails[$key] : $this->rawLicenseDetails[$key]; } (new \RSThemes\Models\Configuration())->saveConfig($this->licenseConfigKey, self::encodeLicense($this->licenseDetails, $this->licenseSecretKey)); } private function setWarningMessage($string, $key) { $this->cleanWarningMessage(); (new \RSThemes\Models\Configuration())->saveConfig($this->licenseWarningKey, sprintf($this->getMessagePart($string), $key)); } private function cleanWarningMessage() { (new \RSThemes\Models\Configuration())->removeConfig($this->licenseWarningKey); } private function getMessagePart($msg, $part = 1) { $message = explode("|", \RSThemes\Helpers\Messages::get($msg)); if (count($message) == 0) { return $msg; } if (count($message) == 1) { return $message[0]; } if (isset($message[$part])) { return $message[$part]; } return $msg; } private function setWarning() { if (strlen($this->licenseDetails["warningShowDate"]) == 0) { $this->licenseDetails["warningShowDate"] = date("Y-m-d", strtotime("+" . $this->licenseFailWarningDays . " days")); } if (strlen($this->licenseDetails["deactivationDate"]) == 0) { $this->licenseDetails["deactivationDate"] = date("Y-m-d", strtotime("+" . $this->licenseFailDays . " days")); } $this->saveLicenseDetails($this->licenseDetails); } public static function logDetails($module = '', $method = '', $message = '', $details = array()) { $params = array("name" => $method, "created_at" => date("Y-m-d h:i:s"), "updated_at" => date("Y-m-d h:i:s"), "details" => print_r(array("params" => $message, "details" => $details), true)); if (self::checkLogDatabase()) { \Illuminate\Database\Capsule\Manager::table("rstheme_logs")->insert($params); $query = "DELETE FROM `rstheme_logs` WHERE id NOT IN (
SELECT id FROM (\xa SELECT id\xa FROM `rstheme_logs`\xa ORDER BY id DESC\xa LIMIT 100\xa ) tmp\xa);"; try { \Illuminate\Database\Capsule\Manager::delete($query); } catch (\Exception $exception) { } } if ($path = self::checkLogFile()) { try { $content = "- - - - - - - - - - - - - - - - - -" . PHP_EOL . print_r($params, true) . PHP_EOL; $maxLines = 5000; $file = explode(PHP_EOL, file_get_contents($path) . PHP_EOL . $content); $count = count($file); if ($maxLines < $count) { $diff = $maxLines - $count; $file = array_slice($file, $diff * -1, $count); } $file = implode(PHP_EOL, $file); file_put_contents($path, $file); } catch (\Exception $exception) { } } } public static function downloadDBLog() { $content = ''; if ($path = self::checkLogFile()) { $content = \Illuminate\Database\Capsule\Manager::table("rstheme_logs")->get(); } $fileName = sprintf("%s-db-%s.log", "rsthemes", date("Y-m-d h:i:s")); header("Content-Type: application/csv"); header("Content-Disposition: attachment; filename="" . $fileName . """); echo print_r($content); die; } public static function downloadFileLog() { $content = ''; if ($path = self::checkLogDatabase()) { $content = file_get_contents($path); } $fileName = sprintf("%s-file-%s.log", "rsthemes", date("Y-m-d h:i:s")); header("Content-Type: application/csv"); header("Content-Disposition: attachment; filename="" . $fileName . """); echo $content; die; } private static function decodeLicense($encoded, $secretKey) { $key = str_replace("
", '', $encoded); $encoded = substr($key, 0, strlen($key) - 32); $md5hash = substr($key, strlen($key) - 32); if ($md5hash == md5($encoded . $secretKey)) { $encoded = strrev($encoded); $encoded = substr($encoded, 32); $encoded = base64_decode($encoded); return unserialize($encoded); } return false; } private static function encodeLicense($details, $secretKey) { $data = serialize($details); $data = base64_encode($data); $data = md5(date("Ymd") . $secretKey) . $data; $data = strrev($data); $data = $data . md5($data . $secretKey); $data = wordwrap($data, 80, "\xa", true); return $data; } private static function loadRemoteLicense($licenseKey, $version, $templateName) { if (empty($_SERVER["SERVER_NAME"])) { return false; } $verifyFilePath = "modules/servers/RSLicensing/verify.php"; $licenseFields = array("licensekey" => $licenseKey, "domain" => self::getDomain(), "ip" => '', "dir" => self::getDirPath(), "version" => $version, "cron" => \RSThemes\Helpers\AddonHelper::isCliMode(), "template" => $templateName); $query = ''; foreach ($licenseFields as $k => $v) { $query .= $k . "=" . urlencode($v) . "&"; } $results = array(); $results["lastRemoteChecked"] = date("Y-m-d"); if (function_exists("curl_exec")) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, self::$licenseServerUrl . $verifyFilePath); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $query); curl_setopt($ch, CURLOPT_TIMEOUT, 15); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($ch); $responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); preg_match_all("~<validip>(.*?)</validip>~", $data, $m); $licenseFields["ip"] = $m[1][0]; if ($responseCode != 200) { $results["lastRemoteCheckedFail"] = date("Y-m-d"); $results["status"] = "Active"; $results["service_status"] = "Active"; $results["license_status"] = "Active"; $results["message"] = "Remote Check License Failed"; $results["messagecode"] = "errors.9"; self::logDetails("RSThemes", "checkRemoteLicense-2", $licenseFields, $results, $data); } else { preg_match_all("/<(.*?)>([^<]+)<\/\1>/i", $data, $matches); foreach ($matches[1] as $k => $v) { $results[$v] = $matches[2][$k]; } $results["lastRemoteCheckedSuccess"] = date("Y-m-d"); } $results["remoteChecked"] = true; self::logDetails("RSThemes", "checkRemoteLicense-3", $licenseFields, $results); return $results; } $results["lastRemoteCheckedFail"] = date("Y-m-d"); $results["status"] = "Active"; $results["service_status"] = "Active"; $results["license_status"] = "Active"; $results["message"] = "Curl extension not found!"; $results["messagecode"] = "errors.9"; self::logDetails("RSThemes", "checkRemoteLicense-1", $licenseFields, $results); return $results; } private static function getDomain() { $configName = sprintf("%s-%s-%s", "RSThemes", "license", "domain"); $domain = $_SERVER["SERVER_NAME"]; if (0 < strlen($domain)) { (new \RSThemes\Models\Configuration())->saveConfig($configName, $domain); return $domain; } return ''; } private static function getDirPath() { if (defined("WHMCS_LICENSE_DIR") && 0 < strlen(WHMCS_LICENSE_DIR)) { return WHMCS_LICENSE_DIR; } return str_replace("\modules\addons\RSThemes\src\Template", '', str_replace("/modules/addons/RSThemes/src/Template", '', realpath(dirname(__FILE__)))); } private static function checkLogDatabase() { if (\Illuminate\Database\Capsule\Manager::schema()->hasTable("rstheme_logs")) { return true; } try { \Illuminate\Database\Capsule\Manager::schema()->create("rstheme_logs", function ($table) { $table->increments("id"); $table->string("name"); $table->text("details"); $table->timestamps(); }); if (\Illuminate\Database\Capsule\Manager::schema()->hasTable("rstheme_logs")) { return true; } return false; } catch (\Exception $exception) { return false; } } public function expired() { if (0 < strlen($this->licenseDetails["nextduedate"])) { $dueDateDiff = \Carbon\Carbon::parse($this->licenseDetails["nextduedate"])->diffInDays(\Carbon\Carbon::today(), false); return in_array($dueDateDiff, array(0, 7, 14, 30)); } } public function getExpiredText() { $dueDateDiff = \Carbon\Carbon::parse($this->licenseDetails["nextduedate"])->diffInDays(\Carbon\Carbon::today(), false); return \RSThemes\Helpers\Messages::get("expired." . $dueDateDiff); } public function isActive() { if (in_array($this->licenseDetails["license_status"], array("Active", "Suspended", "Expired"))) { return true; } return false; } public function getLicenseKey() { return $this->licenseKey; } public function details($key) { return isset($this->licenseDetails[$key]) ? $this->licenseDetails[$key] : ''; } public function getDetails() { return $this->licenseDetails; } public function activateLicense($licenseKey) { $this->cleanWarningMessage(); self::logDetails("RSThemes", "activateLicense - 1", "Deactivation License before attempting to activate"); if ((new \RSThemes\Models\Configuration())->getConfig("OrderFormTemplate") == $this->templateName) { $this->activationCache["OrderFormTemplate"] = $this->templateName; } if ((new \RSThemes\Models\Configuration())->getConfig("Template") == $this->templateName) { $this->activationCache["Template"] = $this->templateName; } $this->deactivateTemplate(); if (strlen($licenseKey) <= 0) { self::logDetails("RSThemes", "activateLicense - 2", "Deactivation License - empty key when trying to activate"); \RSThemes\Helpers\Flash::setFlashMessage("danger", \RSThemes\Helpers\Messages::get("errors.5")); } else { $this->saveLicenseKey($licenseKey); $details = $this->reloadRemote(true); if ($this->licenseDetails["license_status"] == "Active" && isset($this->activationCache["OrderFormTemplate"])) { (new \RSThemes\Models\Configuration())->saveConfig("OrderFormTemplate", $this->activationCache["OrderFormTemplate"]); unset($this->activationCache["OrderFormTemplate"]); } if ($this->licenseDetails["license_status"] == "Active" && isset($this->activationCache["Template"])) { (new \RSThemes\Models\Configuration())->saveConfig("Template", $this->activationCache["Template"]); unset($this->activationCache["Template"]); } if ($this->licenseDetails["license_status"] == "Active") { return \RSThemes\Helpers\Flash::setFlashMessage("success", \RSThemes\Helpers\Messages::get("success.1")); } if (isset($details["license_status"]) && $details["license_status"] == "Unknown") { return \RSThemes\Helpers\Flash::setFlashMessage("danger", \RSThemes\Helpers\Messages::get("errors.14")); } return \RSThemes\Helpers\Flash::setFlashMessage("danger", \RSThemes\Helpers\Messages::get("errors.13")); } } public function saveLicenseKey($licenseKey) { (new \RSThemes\Models\Configuration())->saveConfig($this->licenseKeyName, $licenseKey); $this->licenseKey = $licenseKey; } public function getLastVersion() { return isset($this->licenseDetails["version"]) ? $this->licenseDetails["version"] : ''; } public function getDashboardMessages() { $html = ''; if (0 < strlen($this->licenseDetails["nextduedate"]) && $this->licenseDetails["nextduedate"] != "2059-09-10") { $dueDateDiff = \Carbon\Carbon::today()->diffInDays(\Carbon\Carbon::parse($this->licenseDetails["nextduedate"]), true); $notShow = true; if ($_COOKIE["licenseexp"] == "4ever" || $_COOKIE["licenseexp"] == "1" && 2 < $dueDateDiff) { $notShow = true; } if (0 <= $dueDateDiff && $dueDateDiff <= 14 && !$notShow) { $html .= "<div class="alert alert--outline has-icon alert--border-left alert--license alert--info"><div class="alert__body">"; if ($dueDateDiff == 0) { $html .= str_replace("%days%", $dueDateDiff, \RSThemes\Helpers\Messages::get("warnings.6")); } else { $html .= str_replace("%days%", $dueDateDiff, \RSThemes\Helpers\Messages::get("warnings.5")); } $html .= "<div class="form-check"><label class="m-b-0x m-t-1x"><input type="checkbox" name="notshow" data-dont-show class="form-checkbox"><span class="form-indicator"></span><span class="form-text">Do not show again</span></label></div>"; $html .= "</div><div class="alert__actions">\xa <a class="btn btn-default" href="https://rsstudio.net/my-account/" target="_blank">Pay Now</a>\xa <button class="btn btn-default" data-dismiss="alert" aria-label="Close" type="button">Dismiss</button>\xa </div>"; $html .= "</div>"; $html .= "<style>\xa @font-face {
font-family: "Material-Design-Iconic-Font";\xa src: url("https://cdnjs.cloudflare.com/ajax/libs/material-design-iconic-font/2.2.0//fonts/Material-Design-Iconic-Font.woff2?v=2.2.0") format("woff2"), url("https://cdnjs.cloudflare.com/ajax/libs/material-design-iconic-font/2.2.0//fonts/Material-Design-Iconic-Font.woff?v=2.2.0") format("woff"), url("https://cdnjs.cloudflare.com/ajax/libs/material-design-iconic-font/2.2.0//fonts/Material-Design-Iconic-Font.ttf?v=2.2.0") format("truetype");\xa font-weight: normal;
font-style: normal;
}\xa .alert--license {\xa position: relative;
display: flex;
justify-content: space-between;\xa align-items: center;\xa flex-flow: row wrap;\xa padding: 13px 16px 13px 56px;
margin-bottom: 32px;
border: none;\xa box-shadow: 0 2px 8px rgba(0,0,0,0.08);
background: #fff;\xa }
.alert--license.alert--info{
color: #50bfff;\xa border-color: #50bfff;\xa }\xa .alert--license *{\xa box-sizing: border-box;\xa }
.alert--license:before{
position: absolute;\xa top: 50%;
left: 15px;
width: 24px;
height: 24px; \xa margin-top: -12px;
text-align: center;\xa font-family: Material-Design-Iconic-Font;\xa font-size: 24px;\xa line-height: 22px;\xa }\xa .alert--license.alert--info:before{
content: "\f1f7";
}
.alert--license .alert__body{
flex: 1;\xa margin-right: auto;
}\xa .alert--license b{
font-size: 14px;\xa display: block;\xa margin-bottom: 8px;\xa }
.alert--license b .hidden{\xa display: inline-block!important;\xa }\xa .alert--license p{
color: #505459;\xa margin-bottom: 0;
}
.alert--license .alert__actions{
display: flex;
flex: 0 1 auto;
white-space: nowrap;\xa }
.alert--license .alert__actions>*+* {\xa margin-left: 16px;
}\xa .alert--license .alert__actions:last-child{\xa margin-left: 16px;\xa }\xa .alert--license:after{\xa position: absolute;
top: -1px;
bottom: -1px;
left: -1px;\xa content: "";
border-radius: 3px 0 0 3px;\xa border-left: 4px solid;\xa }
.widget-settings{
margin-top: -28px;
}
.alert--license .form-checkbox + .form-indicator {
position: relative;\xa width: 22px;
height: 22px;\xa min-width: 22px;
border-radius: 3px;\xa display: inline-flex;\xa align-items: center;
justify-content: center;
color: #393D45;\xa border: 1px solid #d7d9de;\xa background-color: #ffffff;\xa box-shadow: none;
}\xa .alert--license .form-checkbox{\xa display: none;\xa }\xa .alert--license .form-check label{
display: flex;
align-items: center;
font-weight: 400;\xa color: #505459;
}
.alert--license .form-text{
margin-left: 8px;\xa }
.alert--license .form-checkbox + .form-indicator:hover,
.alert--license .form-checkbox + .form-indicator:active{
border-color: #1062FE;\xa outline: 0;
}
.alert--license .form-checkbox:checked + .form-indicator{
background: #50bfff;\xa border-color: #50bfff;\xa }
.alert--license .form-checkbox:checked + .form-indicator:before{
position: absolute;\xa top: 0;
left: 0;
right: 0;\xa bottom: 0;
display: inline-flex;\xa align-items: center;\xa justify-content: center;
font-family: Material-Design-Iconic-Font;\xa content: "\f26b";
display: inline-flex;
color: #fff;\xa }
</style>
<script>
$(".alert--license").on("closed.bs.alert", function () {
let notshow = $(this).find("[data-dont-show]");\xa let name = "licenseexp",
value = 1,\xa days = 7;
if (notshow[0].checked === true){\xa value = "4ever";\xa days = 9999;
}\xa\xa new setCookie(name, value, days);\xa \xa });
function setCookie(cname, cvalue, exdays) {\xa const d = new Date();\xa d.setTime(d.getTime() + (exdays*24*60*60*1000));\xa let expires = "expires="+ d.toUTCString();\xa document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";\xa }\xa </script>"; } } if (isset($this->licenseDetails["warningShowDate"]) && strlen($this->licenseDetails["warningShowDate"]) && $this->licenseDetails["warningShowDate"] <= date("Y-m-d")) { $days = \Carbon\Carbon::today()->diffInDays(\Carbon\Carbon::parse($this->licenseDetails["deactivationDate"]), false); if ($days < $this->licenseFailDays) { $html .= "<div class="alert alert--outline has-icon alert--border-left alert--license alert--danger"><div class="alert__body">"; $html .= str_replace("%days%", $days, \RSThemes\Helpers\Messages::get("warnings.9")); $html .= "</div><div class="alert__actions">\xa <a class="btn btn-default" href="https://rsstudio.net/my-account/submitticket.php?step=2&deptid=7" target="_blank">Contact Us</a>
</div>"; $html .= "</div>"; $html .= "<style>\xa @font-face {\xa font-family: "Material-Design-Iconic-Font";\xa src: url("https://cdnjs.cloudflare.com/ajax/libs/material-design-iconic-font/2.2.0//fonts/Material-Design-Iconic-Font.woff2?v=2.2.0") format("woff2"), url("https://cdnjs.cloudflare.com/ajax/libs/material-design-iconic-font/2.2.0//fonts/Material-Design-Iconic-Font.woff?v=2.2.0") format("woff"), url("https://cdnjs.cloudflare.com/ajax/libs/material-design-iconic-font/2.2.0//fonts/Material-Design-Iconic-Font.ttf?v=2.2.0") format("truetype");\xa font-weight: normal;\xa font-style: normal;\xa }
.alert--license{
position: relative;\xa display: flex;\xa justify-content: space-between;\xa align-items: center;\xa flex-flow: row wrap;
padding: 13px 16px 13px 56px;
\xa margin-bottom: 32px;\xa border: none;
box-shadow: 0 2px 8px rgba(0,0,0,0.08);\xa background: #fff;\xa
}
.alert--license.alert--danger{
color: #e53e3e;
border-color: #e53e3e;
}
.alert--license *{
box-sizing: border-box;
}\xa .alert--license:before{\xa position: absolute;
top: 50%;\xa left: 15px;\xa width: 24px;
height: 24px;
margin-top: -12px;\xa text-align: center;\xa font-family: Material-Design-Iconic-Font;
font-size: 24px;
line-height: 22px;
}
.alert--license.alert--danger:before{\xa content: "\f1f4";\xa }
.alert--license .alert__body{
flex: 1;
margin-right: auto;
}\xa .alert--license b{\xa font-size: 14px;\xa display: block;\xa margin-bottom: 8px;
}
.alert--license b .hidden{
display: inline-block!important;
}\xa .alert--license p{
color: #505459;
margin-bottom: 0;
}\xa .alert--license .alert__actions{\xa display: flex;\xa flex: 0 1 auto;
white-space: nowrap;
}\xa .alert--license .alert__actions>*+* {\xa margin-left: 16px;\xa }
.alert--license .alert__actions:last-child{\xa margin-left: 16px;\xa }
.alert--license:after{\xa position: absolute;
top: -1px;
bottom: -1px;\xa left: -1px;
content: "";\xa border-radius: 3px 0 0 3px;\xa border-left: 4px solid;\xa }
.widget-settings{
margin-top: -28px;
}
</style>"; } } return $html; } public function hasProblem() { if (isset($this->licenseDetails["warningShowDate"]) && strlen($this->licenseDetails["warningShowDate"]) && $this->licenseDetails["warningShowDate"] <= date("Y-m-d")) { return true; } return false; } public function getProblem() { if (isset($this->licenseDetails["warningShowDate"]) && strlen($this->licenseDetails["warningShowDate"]) && $this->licenseDetails["warningShowDate"] <= date("Y-m-d")) { return $this->getMessagePart("warnings.8", 0); } return ''; } public function hasInputError() { if (strlen($this->licenseKey) <= 0 || $this->licenseDetails["license_status"] == '') { return true; } return false; } public function getInputError() { if (strlen($this->licenseKey) <= 0 || $this->licenseDetails["license_status"] == '') { return \RSThemes\Helpers\Messages::get("messages.1"); } } public function getAddonMessages() { $html = ''; if (0 < strlen($this->licenseDetails["nextduedate"]) && $this->licenseDetails["nextduedate"] != "0000-00-00") { $dueDateDiff = \Carbon\Carbon::today()->diffInDays(\Carbon\Carbon::parse($this->licenseDetails["nextduedate"]), false); $notShow = false; if (isset($_COOKIE["licenseexp"]) && ($_COOKIE["licenseexp"] == "4ever" || $_COOKIE["licenseexp"] == "1" && 2 < $dueDateDiff)) { $notShow = true; } if (0 <= $dueDateDiff && $dueDateDiff <= 30 && !$notShow) { $html .= "<div class="alert alert--info alert--outline has-icon alert--border-left alert--license" data-daysToExp="" . $dueDateDiff . ""><div class="alert__body">"; if ($dueDateDiff == 0) { $html .= str_replace("%days%", $dueDateDiff, \RSThemes\Helpers\Messages::get("warnings.6")); } else { $html .= str_replace("%days%", $dueDateDiff, \RSThemes\Helpers\Messages::get("warnings.5")); } $html .= "<div class="form-check"><label class="m-b-0x m-t-1x"><input type="checkbox" name="notshow" data-dont-show class="form-checkbox"><span class="form-indicator"></span><span class="form-text">Do not show again</span></label></div>"; $html .= "</div><div class="alert__actions">
<a class="btn btn--default btn--outline btn--sm" href="https://rsstudio.net/my-account/" target="_blank">Pay Now</a>\xa <button class="btn btn--default btn--outline btn--sm" data-dismiss="alert" aria-label="Close" type="button">Dismiss</button>
</div>"; $html .= "</div>"; } } if (isset($this->licenseDetails["warningShowDate"]) && strlen($this->licenseDetails["warningShowDate"]) && $this->licenseDetails["warningShowDate"] <= date("Y-m-d")) { $days = \Carbon\Carbon::today()->diffInDays(\Carbon\Carbon::parse($this->licenseDetails["deactivationDate"]), false); $html .= "<div class="alert alert--danger alert--outline has-icon alert--border-left alert--license"><div class="alert__body">"; $html .= str_replace("%days%", $days, \RSThemes\Helpers\Messages::get("warnings.9")); $html .= "</div><div class="alert__actions">
<a class="btn btn--default btn--outline btn--sm" href="https://rsstudio.net/my-account/submitticket.php?step=2&deptid=7" target="_blank">Contact Us</a>\xa </div>"; $html .= "</div>"; } if (0 < strlen($this->licenseWarningMessage)) { $html .= "<div class="alert alert--danger alert--outline has-icon alert--border-left alert--license"><div class="alert__body">"; $html .= $this->licenseWarningMessage; $html .= "</div><div class="alert__actions">\xa <a class="btn btn--default btn--outline btn--sm" href="https://rsstudio.net/my-account/submitticket.php?step=2&deptid=7" target="_blank">Contact Us</a>\xa </div>"; $html .= "</div>"; } return $html; } private static function checkLogFile() { $path = RSTHEMES_DIR . DS . "logs.php"; if (!is_writable(RSTHEMES_DIR)) { return false; } if (!file_exists($path)) { try { file_put_contents($path, "<?php http_response_code(404);exit; ?>\nCreate logs file! " . date("Y-m-d h:i:s") . PHP_EOL); if (!file_exists($path)) { return false; } } catch (\Exception $exception) { return false; } } if (!is_writable($path)) { return false; } return $path; } public function getAllowedExtensions() { if ($this->licenseDetails["service_status"] == "Active") { $details = $this->reloadRemote(); } return $details["extensions"] ? explode(",", trim($details["extensions"])) : array(); } private function syncExtensions($details) { $toSkip = array("Modules Integrations"); if ($details["license_status"] != "Active") { return NULL; } $allowedExtensions = $details["extensions"] ? explode(",", trim($details["extensions"])) : array(); foreach ($this->template->getExtensions() as $extension) { if (!in_array($extension->name, $toSkip)) { if (method_exists($extension, "checkLicense") && !in_array($extension->name, $allowedExtensions) && $extension->isActive()) { $extension->licenseRemoveConfig(); } } } } } ?>
Did this file decode correctly?
Original Code
<?php
namespace RSThemes\Template; class License { public $licenseKey = ''; public $licenseFailDays = 30; public $licenseFailWarningDays = 3; public $template = NULL; public $templateName = NULL; public $forceRemoteCheck = false; private $licenseKeyName = NULL; private $licenseSecretKey = NULL; private $licenseConfigKey = NULL; private $activationCache = array(); private $licenseDetails = array("\163\164\x61\x74\165\x73" => '', "\163\145\x72\x76\x69\x63\x65\137\163\164\x61\164\x75\163" => '', "\x6c\151\x63\x65\156\x73\145\137\x73\164\x61\164\165\x73" => '', "\x6e\145\x78\164\144\x75\145\x64\141\164\145" => '', "\x76\x65\x72\x73\151\157\156" => "\61\x2e\60\x2e\60", "\154\141\163\x74\122\145\155\157\164\x65\103\150\145\x63\153\x65\x64" => '', "\154\x61\x73\164\122\145\155\157\164\145\x43\x68\145\143\153\145\x64\x46\141\x69\154" => '', "\154\141\163\164\x52\145\155\x6f\164\x65\103\x68\145\x63\153\x65\144\123\165\x63\x63\x65\163\163" => '', "\162\145\147\x64\141\x74\x65" => '', "\x66\151\x72\x73\x74\137\x70\141\x79\x6d\145\156\164\137\x61\x6d\157\x75\156\x74" => '', "\162\145\143\x75\162\151\x6e\147\x5f\141\155\x6f\165\x6e\x74" => '', "\160\x61\171\155\145\x6e\164\x5f\155\x65\x74\x68\157\144" => '', "\167\141\x72\156\x69\156\x67\x53\x68\x6f\167\x44\x61\x74\x65" => '', "\x64\x65\x61\143\164\151\x76\x61\x74\x69\157\156\x44\141\164\145" => ''); private $rawLicenseDetails = NULL; private $licenseEncoded = NULL; private $licenseWarningKey = NULL; private $licenseWarningMessage = NULL; private $debug = false; private $checkLicenseHour = NULL; public static $licenseServerUrl = ''; public function __construct($licenseKeyName, $licenseSecretKey, $template) { $this->loadLicenseHour($licenseKeyName); $this->licenseKeyName = $licenseKeyName; $this->licenseSecretKey = $licenseSecretKey; $this->template = $template; $this->licenseConfigKey = sprintf("\x25\x73\55\144\x61\164\x61", $licenseKeyName); $this->licenseKey = (new \RSThemes\Models\Configuration())->getConfig($licenseKeyName); $this->licenseWarningKey = sprintf("\45\163\x2d\167\x61\x72\x6e\151\x6e\x67", $licenseKeyName); $this->licenseWarningMessage = (new \RSThemes\Models\Configuration())->getConfig($this->licenseWarningKey); $this->templateName = $this->template->getMainName(); $this->licenseEncoded = (new \RSThemes\Models\Configuration())->getConfig($this->licenseConfigKey); $this->rawLicenseDetails = $this->licenseDetails; $this->prepareLicense(); } private function loadLicenseHour($licenseKeyName) { $keyName = sprintf("\45\x73\55\x68\157\165\x72", $licenseKeyName); $hour = (new \RSThemes\Models\Configuration())->getConfig($keyName); if (strlen($hour) == 0) { $hour = rand(4, 23) . "\x3a" . str_pad(rand(2, 59), 2, "\x30", STR_PAD_LEFT); (new \RSThemes\Models\Configuration())->saveConfig($keyName, $hour); } $this->checkLicenseHour = $hour; } private function prepareLicense() { if (0 < strlen($this->licenseEncoded)) { $this->loadLicense(); } if ($this->licenseDetails["\163\x65\162\x76\151\143\145\137\163\164\141\164\165\163"] == "\101\x63\x74\x69\166\x65" && isset($this->licenseDetails["\x64\145\x61\x63\164\151\x76\141\x74\x69\157\x6e\x44\x61\164\x65"]) && strlen($this->licenseDetails["\x64\145\141\x63\164\x69\x76\141\x74\x69\x6f\156\x44\141\x74\145"]) && $this->licenseDetails["\144\145\141\143\164\x69\x76\x61\x74\151\x6f\156\104\141\x74\x65"] < date("\x59\x2d\x6d\55\x64")) { $this->deactivateTemplate(); } if ($this->licenseDetails["\x73\145\162\x76\151\143\145\x5f\163\x74\141\x74\165\x73"] == "\x41\143\164\x69\166\145" && $this->remoteCheck()) { $this->reloadRemote(); } if ($this->debug === true) { echo "\x3c\x70\162\x65\76"; var_dump($this->licenseDetails); echo "\x3c\57\x70\162\x65\76"; die; } } private function loadLicense() { $result = self::decodeLicense($this->licenseEncoded, $this->licenseSecretKey); if ($result) { $this->licenseDetails = array(); foreach ($this->rawLicenseDetails as $key => $value) { $this->licenseDetails[$key] = isset($result[$key]) ? $result[$key] : $this->rawLicenseDetails[$key]; } } else { $this->deactivateTemplate(); } } public function deactivateTemplate() { if ((new \RSThemes\Models\Configuration())->getConfig("\117\162\x64\x65\162\x46\x6f\x72\155\124\x65\x6d\160\154\141\164\x65") == $this->templateName) { (new \RSThemes\Models\Configuration())->saveConfig("\x4f\162\x64\145\162\106\x6f\x72\155\124\145\x6d\x70\x6c\x61\x74\145", "\163\x74\141\156\144\x61\162\144\x5f\143\141\162\164"); } if ((new \RSThemes\Models\Configuration())->getConfig("\124\145\x6d\160\154\141\164\145") == $this->templateName) { (new \RSThemes\Models\Configuration())->saveConfig("\124\x65\155\x70\x6c\x61\164\x65", "\163\151\x78"); } (new \RSThemes\Models\Configuration())->removeConfig($this->licenseConfigKey); $this->licenseDetails = $this->rawLicenseDetails; $this->licenseEncoded = ''; } private function remoteCheck() { if (strlen($this->licenseKey) <= 0) { return false; } if ($this->forceRemoteCheck === true) { return true; } if ($this->licenseDetails["\154\x61\163\x74\122\145\155\157\164\x65\x43\150\x65\x63\x6b\145\144"] != date("\x59\x2d\155\55\144") && strtotime($this->checkLicenseHour) < strtotime(date("\x48\72\151"))) { return true; } return false; } private function reloadRemote($activation = false) { $details = self::loadRemoteLicense($this->licenseKey, $this->template->getVersion(), $this->templateName); if (isset($details["\x6c\141\163\164\122\x65\155\x6f\x74\145\x43\x68\145\x63\153\x65\x64"])) { $this->licenseDetails["\154\x61\163\x74\122\x65\x6d\157\x74\145\103\x68\x65\x63\153\145\144"] = $details["\x6c\x61\163\164\x52\145\155\157\x74\x65\x43\x68\x65\143\153\145\144"]; $this->saveLicenseDetails($this->licenseDetails); } if (isset($details["\154\x61\x73\164\122\145\x6d\157\x74\x65\x43\x68\x65\x63\153\x65\x64\123\x75\143\x63\145\x73\x73"])) { $this->licenseDetails["\154\x61\x73\164\122\x65\x6d\x6f\x74\x65\103\150\x65\x63\x6b\145\x64\123\165\x63\x63\145\163\163"] = $details["\x6c\x61\163\164\122\145\x6d\157\x74\x65\x43\150\x65\x63\153\x65\x64\x53\165\x63\x63\x65\x73\x73"]; $this->saveLicenseDetails($this->licenseDetails); } if (isset($details["\x6c\141\x73\x74\122\145\155\x6f\164\x65\103\150\x65\143\153\x65\144\x46\x61\x69\154"])) { $this->licenseDetails["\154\141\163\x74\x52\x65\155\157\164\145\103\150\145\143\153\x65\144\x46\141\151\154"] = $details["\x6c\141\163\164\x52\x65\x6d\x6f\164\x65\x43\x68\x65\x63\x6b\x65\x64\x46\141\151\x6c"]; $this->saveLicenseDetails($this->licenseDetails); } if (isset($details["\x6c\151\143\145\156\x73\145\137\x73\x74\141\x74\x75\163"]) && in_array($details["\154\151\143\145\156\x73\x65\137\163\164\x61\x74\x75\x73"], array("\x41\143\164\x69\x76\145", "\123\x75\x73\x70\x65\x6e\x64\145\144", "\105\170\x70\151\x72\145\144"))) { self::logDetails("\122\x53\x54\x68\x65\x6d\145\x73", "\162\x65\x6c\157\141\x64\122\x65\155\x6f\164\145\40\55\40\x31", "\x4c\151\143\145\156\x73\x65\40\x41\143\164\x69\x76\145"); $this->saveLicenseDetails($details); } if (isset($details["\154\x69\x63\x65\156\163\145\x5f\163\x74\x61\x74\165\163"]) && $details["\x6c\x69\x63\x65\156\x73\145\137\x73\164\141\164\165\x73"] == "\103\141\156\x63\145\x6c\x6c\145\x64") { self::logDetails("\x52\123\x54\x68\145\x6d\x65\x73", "\x72\145\154\157\x61\x64\x52\x65\155\157\x74\x65\40\x2d\x20\62", "\x4c\151\143\145\156\x73\145\x20\x43\141\x6e\143\145\x6c\154\x65\144\40\x2d\40\124\x65\x6d\x70\x6c\x61\164\145\x20\104\145\141\x63\x74\151\166\141\x74\145\144"); if ($activation === false) { $this->setWarningMessage("\x64\145\141\x63\x74\151\166\141\x74\145\144\x2e\143\x61\156\x63\x65\x6c\154\x65\144", $this->licenseKey); } $this->deactivateTemplate(); } if (isset($details["\x6c\x69\x63\x65\x6e\x73\145\137\x73\x74\141\164\x75\x73"]) && $details["\154\x69\143\x65\x6e\x73\x65\137\163\x74\141\x74\165\163"] == "\102\141\x6e\x6e\145\x64") { self::logDetails("\122\x53\x54\x68\145\155\145\x73", "\162\145\x6c\x6f\141\x64\x52\x65\155\157\x74\145\x20\x2d\40\62", "\x4c\x69\x63\x65\x6e\163\145\40\103\x61\156\x63\145\154\x6c\145\x64\x20\x2d\x20\124\x65\155\x70\x6c\x61\x74\x65\40\104\145\x61\x63\x74\151\166\141\164\145\144"); if ($activation === false) { $this->setWarningMessage("\x64\x65\141\x63\x74\x69\166\141\x74\145\144\x2e\143\x61\x6e\x63\145\x6c\x6c\x65\144", $this->licenseKey); } $this->deactivateTemplate(); } if (isset($details["\154\151\x63\x65\x6e\x73\145\137\x73\164\x61\x74\165\x73"]) && $details["\x6c\151\143\x65\x6e\x73\x65\x5f\x73\x74\141\x74\x75\163"] == "\125\156\x6b\x6e\157\x77\156") { if ($this->licenseDetails["\154\151\x63\145\156\x73\x65\137\x73\x74\x61\164\x75\x73"] == "\101\x63\164\151\x76\145") { self::logDetails("\122\x53\124\x68\x65\x6d\145\163", "\162\x65\154\x6f\x61\x64\122\x65\155\157\164\x65\40\x2d\x20\63", "\x4c\x69\x63\145\156\x73\145\x20\x55\x6e\153\156\x6f\x77\156\x2c\x20\x77\141\162\156\x69\156\147\40\x64\141\x74\145\x73\x20\163\x65\x74\x2e\x20"); $this->setWarning(); } else { self::logDetails("\122\123\x54\x68\145\155\145\x73", "\x72\145\154\157\141\144\x52\x65\155\x6f\x74\x65\40\55\40\x34", "\114\x69\x63\x65\x6e\163\x65\x20\125\x6e\153\156\157\167\x6e\x20\55\x20\x54\145\x6d\x70\x6c\x61\164\x65\40\x44\x65\x61\143\x74\151\x76\x61\164\x65\144"); if ($activation === false) { $this->setWarningMessage("\x64\145\x61\143\164\151\166\x61\x74\x65\144\x2e\165\156\153\156\x6f\x77\156", $this->licenseKey); } $this->deactivateTemplate(); } } if (isset($details["\x6c\151\x63\145\x6e\163\145\x5f\163\164\141\164\165\163"]) && $details["\154\x69\x63\145\x6e\163\145\x5f\x73\164\141\164\x75\163"] == "\x49\156\x76\x61\154\x69\144") { if ($this->licenseDetails["\154\x69\x63\x65\x6e\x73\145\x5f\163\164\141\164\x75\x73"] == "\x41\x63\164\x69\x76\145") { self::logDetails("\x52\123\124\150\145\155\145\163", "\162\x65\154\157\x61\x64\x52\145\155\x6f\164\145\40\55\x20\x35", "\x4c\x69\143\145\x6e\163\x65\40\x49\156\166\x61\154\151\144\x2c\x20\167\141\x72\x6e\151\156\147\x20\x64\141\164\145\163\40\163\145\x74\x2e\40"); $this->setWarning(); } else { self::logDetails("\122\123\124\150\x65\155\x65\163", "\x72\145\154\x6f\141\144\x52\x65\155\x6f\x74\145\x20\55\x20\x36", "\114\151\x63\145\x6e\x73\145\40\111\x6e\166\141\154\x69\x64\x20\x2d\40\124\x65\x6d\160\154\141\164\145\x20\104\x65\141\x63\164\x69\166\x61\164\x65\144"); if ($activation === false) { $this->setWarningMessage("\x64\x65\141\x63\164\151\166\141\x74\145\144\x2e\151\156\166\x61\154\151\144", $this->licenseKey); } $this->deactivateTemplate(); } } $this->syncExtensions($details); return $details; } private function saveLicenseDetails($remoteDetails) { $this->licenseDetails = array(); foreach ($this->rawLicenseDetails as $key => $value) { $this->licenseDetails[$key] = isset($remoteDetails[$key]) ? $remoteDetails[$key] : $this->rawLicenseDetails[$key]; } (new \RSThemes\Models\Configuration())->saveConfig($this->licenseConfigKey, self::encodeLicense($this->licenseDetails, $this->licenseSecretKey)); } private function setWarningMessage($string, $key) { $this->cleanWarningMessage(); (new \RSThemes\Models\Configuration())->saveConfig($this->licenseWarningKey, sprintf($this->getMessagePart($string), $key)); } private function cleanWarningMessage() { (new \RSThemes\Models\Configuration())->removeConfig($this->licenseWarningKey); } private function getMessagePart($msg, $part = 1) { $message = explode("\x7c", \RSThemes\Helpers\Messages::get($msg)); if (count($message) == 0) { return $msg; } if (count($message) == 1) { return $message[0]; } if (isset($message[$part])) { return $message[$part]; } return $msg; } private function setWarning() { if (strlen($this->licenseDetails["\167\141\162\x6e\x69\x6e\x67\123\x68\157\x77\x44\141\164\x65"]) == 0) { $this->licenseDetails["\x77\x61\x72\x6e\x69\x6e\147\123\x68\157\167\104\141\164\145"] = date("\x59\55\155\55\144", strtotime("\53" . $this->licenseFailWarningDays . "\x20\x64\x61\x79\x73")); } if (strlen($this->licenseDetails["\144\x65\x61\143\x74\151\x76\141\x74\151\x6f\156\x44\141\x74\145"]) == 0) { $this->licenseDetails["\x64\145\141\x63\164\151\166\141\164\151\x6f\x6e\x44\141\x74\145"] = date("\131\x2d\155\x2d\144", strtotime("\53" . $this->licenseFailDays . "\40\144\141\x79\x73")); } $this->saveLicenseDetails($this->licenseDetails); } public static function logDetails($module = '', $method = '', $message = '', $details = array()) { $params = array("\156\141\155\x65" => $method, "\143\162\x65\x61\x74\x65\x64\x5f\141\164" => date("\131\55\155\55\x64\40\x68\72\x69\72\163"), "\x75\160\144\x61\x74\x65\144\137\x61\x74" => date("\131\55\155\x2d\x64\40\150\x3a\x69\x3a\163"), "\x64\145\x74\x61\x69\154\163" => print_r(array("\160\141\162\141\x6d\x73" => $message, "\x64\145\164\x61\151\154\163" => $details), true)); if (self::checkLogDatabase()) { \Illuminate\Database\Capsule\Manager::table("\162\x73\x74\x68\145\155\145\137\154\x6f\147\163")->insert($params); $query = "\104\105\114\x45\124\105\40\106\x52\x4f\115\40\x60\162\163\164\150\x65\155\x65\137\x6c\x6f\147\163\140\40\x57\110\x45\122\x45\x20\x69\144\40\116\117\x54\40\111\116\x20\50\12\40\x20\x20\40\x53\105\x4c\105\x43\x54\40\151\144\x20\106\x52\x4f\x4d\x20\50\xa\40\40\40\x20\40\40\40\x20\123\x45\114\x45\x43\x54\40\x69\x64\xa\40\40\x20\40\x20\x20\x20\40\x20\x20\x20\40\x46\122\x4f\x4d\40\x60\162\x73\x74\150\145\x6d\x65\x5f\154\157\x67\x73\140\xa\40\40\40\40\x20\x20\40\x20\x20\40\x20\40\x4f\122\x44\x45\x52\x20\x42\x59\x20\151\x64\x20\104\x45\123\x43\xa\40\40\x20\x20\40\40\x20\x20\40\40\x20\40\114\111\115\111\124\40\61\60\60\xa\x20\40\40\40\x29\x20\x74\x6d\160\xa\51\73"; try { \Illuminate\Database\Capsule\Manager::delete($query); } catch (\Exception $exception) { } } if ($path = self::checkLogFile()) { try { $content = "\x2d\x20\55\x20\x2d\40\x2d\x20\x2d\x20\55\40\55\x20\55\x20\55\40\x2d\x20\55\x20\55\40\x2d\x20\x2d\x20\x2d\x20\55\40\55\x20\x2d" . PHP_EOL . print_r($params, true) . PHP_EOL; $maxLines = 5000; $file = explode(PHP_EOL, file_get_contents($path) . PHP_EOL . $content); $count = count($file); if ($maxLines < $count) { $diff = $maxLines - $count; $file = array_slice($file, $diff * -1, $count); } $file = implode(PHP_EOL, $file); file_put_contents($path, $file); } catch (\Exception $exception) { } } } public static function downloadDBLog() { $content = ''; if ($path = self::checkLogFile()) { $content = \Illuminate\Database\Capsule\Manager::table("\162\163\x74\x68\145\x6d\145\137\x6c\157\147\163")->get(); } $fileName = sprintf("\45\163\55\x64\x62\55\x25\163\56\154\x6f\147", "\162\163\164\150\x65\155\145\163", date("\x59\55\x6d\x2d\144\40\x68\72\151\72\163")); header("\x43\x6f\x6e\164\145\156\x74\x2d\x54\x79\160\145\72\x20\141\x70\160\154\x69\143\141\x74\x69\x6f\x6e\x2f\143\163\x76"); header("\103\x6f\156\x74\x65\156\x74\55\104\x69\x73\160\x6f\x73\151\x74\151\x6f\x6e\72\x20\141\164\x74\141\143\150\155\x65\156\164\73\40\146\x69\x6c\x65\156\x61\155\145\x3d\x22" . $fileName . "\42"); echo print_r($content); die; } public static function downloadFileLog() { $content = ''; if ($path = self::checkLogDatabase()) { $content = file_get_contents($path); } $fileName = sprintf("\x25\x73\55\146\151\154\145\55\x25\163\x2e\154\157\147", "\x72\163\164\x68\145\155\x65\x73", date("\x59\x2d\155\55\x64\40\x68\72\151\x3a\163")); header("\x43\157\x6e\164\x65\156\164\55\124\171\160\145\x3a\40\x61\160\160\154\x69\x63\x61\164\151\x6f\156\x2f\143\x73\166"); header("\103\157\x6e\x74\145\156\x74\x2d\104\151\163\x70\x6f\163\x69\x74\x69\157\x6e\72\x20\x61\164\164\141\x63\150\155\x65\156\x74\x3b\x20\x66\151\154\145\x6e\141\x6d\x65\75\x22" . $fileName . "\42"); echo $content; die; } private static function decodeLicense($encoded, $secretKey) { $key = str_replace("\12", '', $encoded); $encoded = substr($key, 0, strlen($key) - 32); $md5hash = substr($key, strlen($key) - 32); if ($md5hash == md5($encoded . $secretKey)) { $encoded = strrev($encoded); $encoded = substr($encoded, 32); $encoded = base64_decode($encoded); return unserialize($encoded); } return false; } private static function encodeLicense($details, $secretKey) { $data = serialize($details); $data = base64_encode($data); $data = md5(date("\131\155\144") . $secretKey) . $data; $data = strrev($data); $data = $data . md5($data . $secretKey); $data = wordwrap($data, 80, "\xa", true); return $data; } private static function loadRemoteLicense($licenseKey, $version, $templateName) { if (empty($_SERVER["\123\x45\122\x56\x45\x52\x5f\x4e\101\115\105"])) { return false; } $verifyFilePath = "\155\x6f\144\165\154\145\163\57\163\145\x72\x76\145\x72\163\x2f\x52\123\x4c\x69\143\145\x6e\163\x69\156\x67\x2f\x76\145\162\151\x66\x79\56\x70\150\160"; $licenseFields = array("\x6c\x69\143\145\156\x73\145\x6b\x65\171" => $licenseKey, "\x64\x6f\155\x61\x69\x6e" => self::getDomain(), "\151\160" => '', "\x64\x69\x72" => self::getDirPath(), "\x76\145\162\x73\151\157\x6e" => $version, "\x63\x72\x6f\156" => \RSThemes\Helpers\AddonHelper::isCliMode(), "\164\x65\155\x70\x6c\141\164\145" => $templateName); $query = ''; foreach ($licenseFields as $k => $v) { $query .= $k . "\x3d" . urlencode($v) . "\46"; } $results = array(); $results["\x6c\x61\x73\164\122\145\155\157\164\145\x43\150\x65\x63\153\145\x64"] = date("\x59\55\x6d\55\x64"); if (function_exists("\143\x75\x72\x6c\x5f\145\x78\145\x63")) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, self::$licenseServerUrl . $verifyFilePath); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $query); curl_setopt($ch, CURLOPT_TIMEOUT, 15); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($ch); $responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); preg_match_all("\176\x3c\x76\x61\x6c\151\x64\x69\x70\x3e\50\x2e\52\77\51\x3c\57\x76\x61\x6c\x69\x64\x69\160\76\176", $data, $m); $licenseFields["\x69\x70"] = $m[1][0]; if ($responseCode != 200) { $results["\154\x61\x73\164\122\x65\155\x6f\x74\145\x43\150\x65\x63\x6b\145\144\x46\x61\x69\154"] = date("\131\55\x6d\55\144"); $results["\163\164\141\x74\x75\x73"] = "\101\143\164\x69\166\x65"; $results["\x73\145\x72\x76\x69\143\x65\137\163\164\x61\x74\x75\163"] = "\101\x63\x74\x69\166\x65"; $results["\x6c\151\x63\145\x6e\163\145\x5f\x73\x74\141\164\x75\163"] = "\x41\143\164\151\x76\145"; $results["\155\145\163\x73\141\147\x65"] = "\x52\145\x6d\157\164\x65\40\103\150\145\x63\153\40\114\151\x63\145\x6e\x73\145\40\106\141\151\154\145\144"; $results["\155\145\163\x73\141\x67\x65\143\x6f\x64\145"] = "\x65\x72\x72\157\162\x73\x2e\x39"; self::logDetails("\122\123\x54\x68\x65\x6d\145\163", "\x63\150\145\x63\153\122\145\x6d\157\164\x65\x4c\151\143\145\x6e\x73\x65\55\x32", $licenseFields, $results, $data); } else { preg_match_all("\x2f\74\50\56\x2a\77\51\76\x28\133\x5e\x3c\x5d\x2b\51\74\134\x2f\x5c\x31\x3e\x2f\151", $data, $matches); foreach ($matches[1] as $k => $v) { $results[$v] = $matches[2][$k]; } $results["\x6c\141\163\x74\x52\x65\x6d\157\x74\x65\x43\x68\x65\x63\x6b\x65\x64\123\x75\143\x63\145\163\163"] = date("\x59\x2d\155\x2d\x64"); } $results["\x72\145\x6d\x6f\164\145\x43\150\145\x63\x6b\145\x64"] = true; self::logDetails("\122\123\x54\x68\x65\155\145\x73", "\143\x68\145\x63\x6b\x52\145\155\x6f\164\145\x4c\x69\143\145\156\x73\x65\x2d\63", $licenseFields, $results); return $results; } $results["\x6c\141\163\x74\122\x65\155\157\x74\x65\x43\x68\145\143\153\x65\144\x46\x61\x69\x6c"] = date("\x59\55\x6d\x2d\x64"); $results["\163\164\141\x74\x75\163"] = "\101\143\x74\151\166\x65"; $results["\x73\x65\x72\166\x69\143\x65\x5f\163\164\x61\164\165\163"] = "\101\x63\164\x69\166\145"; $results["\154\151\143\145\x6e\x73\145\137\x73\164\141\164\x75\163"] = "\x41\143\164\151\166\x65"; $results["\x6d\x65\x73\x73\x61\147\145"] = "\x43\165\x72\154\x20\x65\170\164\145\x6e\163\x69\157\x6e\40\x6e\x6f\164\x20\146\x6f\x75\156\144\x21"; $results["\x6d\145\163\163\x61\x67\x65\x63\x6f\144\145"] = "\145\162\x72\157\162\x73\x2e\x39"; self::logDetails("\x52\x53\124\x68\x65\x6d\145\x73", "\x63\x68\x65\143\x6b\122\145\155\x6f\164\145\x4c\x69\x63\x65\x6e\163\x65\55\x31", $licenseFields, $results); return $results; } private static function getDomain() { $configName = sprintf("\x25\163\55\45\x73\x2d\45\x73", "\x52\123\x54\x68\x65\155\x65\163", "\154\x69\143\x65\x6e\x73\x65", "\144\x6f\x6d\141\151\156"); $domain = $_SERVER["\x53\x45\122\x56\x45\x52\x5f\116\x41\x4d\105"]; if (0 < strlen($domain)) { (new \RSThemes\Models\Configuration())->saveConfig($configName, $domain); return $domain; } return ''; } private static function getDirPath() { if (defined("\127\x48\115\x43\123\x5f\114\x49\103\x45\116\x53\105\137\x44\x49\122") && 0 < strlen(WHMCS_LICENSE_DIR)) { return WHMCS_LICENSE_DIR; } return str_replace("\134\x6d\x6f\x64\165\x6c\x65\x73\x5c\x61\x64\144\x6f\x6e\163\x5c\122\123\124\150\145\155\145\x73\x5c\x73\x72\143\134\x54\x65\155\x70\154\141\164\145", '', str_replace("\x2f\x6d\x6f\144\x75\x6c\x65\163\x2f\141\x64\144\157\156\x73\57\x52\x53\124\x68\145\x6d\145\x73\x2f\x73\162\x63\57\124\145\155\x70\154\141\x74\145", '', realpath(dirname(__FILE__)))); } private static function checkLogDatabase() { if (\Illuminate\Database\Capsule\Manager::schema()->hasTable("\x72\x73\164\150\x65\x6d\x65\x5f\154\157\x67\x73")) { return true; } try { \Illuminate\Database\Capsule\Manager::schema()->create("\x72\x73\x74\150\x65\x6d\145\x5f\154\x6f\147\x73", function ($table) { $table->increments("\x69\x64"); $table->string("\156\141\x6d\145"); $table->text("\x64\x65\x74\141\151\x6c\x73"); $table->timestamps(); }); if (\Illuminate\Database\Capsule\Manager::schema()->hasTable("\x72\163\x74\x68\x65\x6d\x65\137\154\x6f\147\163")) { return true; } return false; } catch (\Exception $exception) { return false; } } public function expired() { if (0 < strlen($this->licenseDetails["\x6e\145\170\164\144\165\145\x64\141\x74\x65"])) { $dueDateDiff = \Carbon\Carbon::parse($this->licenseDetails["\156\145\170\164\x64\165\145\144\x61\x74\x65"])->diffInDays(\Carbon\Carbon::today(), false); return in_array($dueDateDiff, array(0, 7, 14, 30)); } } public function getExpiredText() { $dueDateDiff = \Carbon\Carbon::parse($this->licenseDetails["\156\x65\170\164\144\165\145\x64\141\x74\x65"])->diffInDays(\Carbon\Carbon::today(), false); return \RSThemes\Helpers\Messages::get("\145\x78\x70\151\162\145\144\x2e" . $dueDateDiff); } public function isActive() { if (in_array($this->licenseDetails["\x6c\x69\x63\145\x6e\163\145\x5f\163\x74\141\x74\165\163"], array("\x41\143\164\151\166\145", "\x53\165\x73\160\145\156\x64\x65\x64", "\105\x78\x70\151\162\145\x64"))) { return true; } return false; } public function getLicenseKey() { return $this->licenseKey; } public function details($key) { return isset($this->licenseDetails[$key]) ? $this->licenseDetails[$key] : ''; } public function getDetails() { return $this->licenseDetails; } public function activateLicense($licenseKey) { $this->cleanWarningMessage(); self::logDetails("\122\123\x54\150\145\x6d\145\163", "\x61\x63\164\x69\166\141\164\x65\114\151\x63\x65\156\163\145\x20\55\40\x31", "\x44\x65\141\x63\x74\x69\x76\141\164\x69\157\156\40\x4c\x69\143\145\x6e\x73\x65\40\x62\x65\146\x6f\x72\145\x20\141\164\164\145\155\x70\164\151\156\x67\x20\x74\157\x20\x61\x63\164\x69\166\x61\164\145"); if ((new \RSThemes\Models\Configuration())->getConfig("\117\x72\144\145\x72\x46\x6f\x72\x6d\124\145\x6d\x70\154\x61\x74\145") == $this->templateName) { $this->activationCache["\117\162\144\x65\x72\106\x6f\x72\155\124\x65\x6d\160\x6c\x61\164\x65"] = $this->templateName; } if ((new \RSThemes\Models\Configuration())->getConfig("\124\145\155\160\x6c\141\164\x65") == $this->templateName) { $this->activationCache["\x54\x65\155\x70\x6c\141\x74\145"] = $this->templateName; } $this->deactivateTemplate(); if (strlen($licenseKey) <= 0) { self::logDetails("\x52\123\124\150\x65\155\x65\163", "\141\x63\x74\151\166\141\x74\145\x4c\151\x63\x65\x6e\x73\145\x20\55\x20\x32", "\x44\145\141\143\x74\x69\166\x61\164\151\x6f\x6e\x20\114\x69\143\x65\x6e\163\145\40\55\x20\145\x6d\160\164\171\40\153\x65\x79\40\167\x68\x65\156\x20\x74\162\171\151\x6e\x67\x20\x74\157\x20\141\143\164\x69\x76\141\164\x65"); \RSThemes\Helpers\Flash::setFlashMessage("\144\x61\x6e\147\145\162", \RSThemes\Helpers\Messages::get("\x65\162\162\157\x72\x73\x2e\65")); } else { $this->saveLicenseKey($licenseKey); $details = $this->reloadRemote(true); if ($this->licenseDetails["\154\x69\x63\x65\156\x73\145\137\x73\x74\x61\x74\x75\163"] == "\101\x63\164\x69\166\145" && isset($this->activationCache["\x4f\162\144\145\x72\106\x6f\x72\155\124\x65\155\x70\x6c\x61\164\145"])) { (new \RSThemes\Models\Configuration())->saveConfig("\x4f\x72\144\x65\162\x46\157\162\155\124\145\155\160\x6c\x61\164\145", $this->activationCache["\x4f\162\144\145\162\x46\x6f\162\x6d\124\x65\155\160\154\x61\x74\145"]); unset($this->activationCache["\x4f\x72\x64\145\x72\x46\157\162\155\x54\145\155\160\x6c\141\164\145"]); } if ($this->licenseDetails["\154\x69\x63\x65\156\163\x65\x5f\163\x74\141\164\x75\163"] == "\x41\143\x74\x69\166\145" && isset($this->activationCache["\124\x65\155\160\x6c\x61\x74\145"])) { (new \RSThemes\Models\Configuration())->saveConfig("\124\x65\x6d\x70\x6c\x61\x74\145", $this->activationCache["\124\145\155\x70\x6c\141\164\145"]); unset($this->activationCache["\x54\145\x6d\x70\x6c\141\164\145"]); } if ($this->licenseDetails["\154\151\x63\145\156\163\x65\x5f\x73\x74\141\164\x75\x73"] == "\x41\143\164\x69\166\145") { return \RSThemes\Helpers\Flash::setFlashMessage("\163\165\x63\x63\145\x73\x73", \RSThemes\Helpers\Messages::get("\163\x75\143\x63\145\163\x73\x2e\61")); } if (isset($details["\x6c\x69\143\145\x6e\163\x65\x5f\x73\x74\141\164\x75\163"]) && $details["\x6c\x69\x63\x65\156\163\x65\137\x73\x74\141\x74\x75\163"] == "\x55\x6e\153\x6e\157\x77\x6e") { return \RSThemes\Helpers\Flash::setFlashMessage("\x64\x61\x6e\147\145\x72", \RSThemes\Helpers\Messages::get("\x65\x72\162\x6f\x72\x73\x2e\x31\64")); } return \RSThemes\Helpers\Flash::setFlashMessage("\144\141\156\x67\145\x72", \RSThemes\Helpers\Messages::get("\x65\162\x72\157\x72\x73\56\x31\x33")); } } public function saveLicenseKey($licenseKey) { (new \RSThemes\Models\Configuration())->saveConfig($this->licenseKeyName, $licenseKey); $this->licenseKey = $licenseKey; } public function getLastVersion() { return isset($this->licenseDetails["\166\145\x72\x73\x69\x6f\x6e"]) ? $this->licenseDetails["\x76\145\162\163\x69\x6f\156"] : ''; } public function getDashboardMessages() { $html = ''; if (0 < strlen($this->licenseDetails["\156\x65\x78\164\144\165\x65\x64\x61\x74\145"]) && $this->licenseDetails["\156\x65\x78\164\144\165\145\x64\141\x74\145"] != "\x32\60\65\71\55\x30\71\55\x31\60") { $dueDateDiff = \Carbon\Carbon::today()->diffInDays(\Carbon\Carbon::parse($this->licenseDetails["\x6e\145\x78\164\144\x75\145\144\141\x74\x65"]), true); $notShow = true; if ($_COOKIE["\154\151\x63\x65\x6e\163\145\145\170\x70"] == "\x34\x65\x76\145\x72" || $_COOKIE["\x6c\x69\x63\145\x6e\163\x65\x65\170\x70"] == "\x31" && 2 < $dueDateDiff) { $notShow = true; } if (0 <= $dueDateDiff && $dueDateDiff <= 14 && !$notShow) { $html .= "\74\x64\x69\x76\40\x63\154\x61\x73\x73\75\42\141\154\145\x72\164\40\141\154\x65\162\164\55\x2d\x6f\x75\164\x6c\151\x6e\145\x20\150\141\163\x2d\151\x63\x6f\x6e\40\x61\x6c\145\x72\x74\x2d\55\x62\157\162\144\145\x72\55\154\145\x66\164\x20\x61\154\145\162\x74\55\55\x6c\x69\x63\145\156\163\x65\x20\x61\x6c\x65\162\164\x2d\55\151\156\x66\x6f\42\x3e\x3c\144\151\166\40\x63\154\x61\163\x73\75\x22\141\x6c\x65\x72\164\x5f\137\x62\157\x64\171\42\x3e"; if ($dueDateDiff == 0) { $html .= str_replace("\45\144\x61\x79\163\45", $dueDateDiff, \RSThemes\Helpers\Messages::get("\x77\x61\x72\156\151\x6e\147\x73\x2e\66")); } else { $html .= str_replace("\45\x64\141\x79\163\45", $dueDateDiff, \RSThemes\Helpers\Messages::get("\167\x61\162\x6e\151\x6e\x67\x73\x2e\65")); } $html .= "\x3c\x64\x69\166\x20\x63\154\x61\163\163\75\42\x66\157\x72\155\55\x63\150\145\x63\153\x22\76\x3c\154\141\x62\x65\154\x20\143\x6c\x61\163\x73\75\x22\x6d\x2d\x62\x2d\x30\170\x20\155\x2d\x74\55\61\x78\x22\x3e\x3c\151\156\160\x75\x74\x20\x74\171\x70\x65\x3d\42\x63\150\x65\143\x6b\x62\x6f\x78\42\x20\156\141\155\x65\x3d\42\156\x6f\x74\163\150\157\167\42\40\x64\141\164\141\x2d\x64\x6f\x6e\164\x2d\163\x68\x6f\x77\x20\143\154\141\163\x73\75\42\x66\x6f\x72\155\x2d\143\150\145\143\x6b\x62\157\170\42\76\x3c\163\160\x61\x6e\x20\143\154\x61\163\x73\x3d\x22\146\157\x72\155\55\151\156\144\151\x63\x61\164\x6f\x72\x22\x3e\74\57\x73\160\141\156\76\x3c\x73\160\x61\x6e\40\143\154\x61\163\x73\75\42\146\x6f\162\155\55\164\145\x78\x74\x22\x3e\x44\x6f\40\x6e\x6f\164\x20\x73\x68\x6f\167\x20\141\x67\x61\151\x6e\x3c\57\x73\x70\141\x6e\x3e\x3c\x2f\154\141\x62\x65\x6c\76\x3c\x2f\x64\151\x76\76"; $html .= "\74\57\x64\x69\166\76\x3c\144\151\x76\x20\143\x6c\x61\x73\x73\75\x22\141\x6c\x65\x72\164\x5f\137\x61\143\164\151\x6f\x6e\x73\42\76\xa\x20\40\x20\x20\40\40\40\x20\40\40\x20\x20\x20\x20\40\x20\x20\x20\40\40\x20\40\40\x20\x20\x20\x20\x20\74\141\x20\x63\154\x61\x73\163\75\x22\x62\x74\x6e\x20\x62\164\x6e\x2d\144\145\146\x61\x75\154\x74\42\40\150\162\x65\x66\x3d\x22\x68\164\164\160\x73\72\x2f\x2f\x72\x73\163\164\165\x64\151\x6f\56\x6e\x65\x74\x2f\x6d\x79\x2d\x61\143\x63\x6f\165\x6e\x74\x2f\x22\40\x74\x61\x72\x67\x65\x74\x3d\42\x5f\x62\154\141\156\x6b\x22\x3e\x50\x61\171\40\116\x6f\167\x3c\57\141\x3e\xa\x20\40\40\40\x20\x20\40\x20\40\40\40\x20\40\x20\x20\x20\x20\40\x20\40\x20\x20\40\x20\x20\40\40\x20\x3c\142\165\x74\164\x6f\x6e\40\x63\x6c\141\163\163\75\42\x62\164\x6e\40\x62\x74\156\x2d\x64\x65\146\141\x75\154\164\x22\x20\x64\x61\x74\x61\55\x64\x69\x73\x6d\x69\163\163\x3d\x22\141\x6c\145\x72\x74\x22\x20\141\162\151\141\55\154\x61\x62\x65\x6c\x3d\42\x43\154\157\163\145\42\x20\x74\171\160\x65\75\x22\x62\x75\x74\x74\157\156\x22\76\x44\151\163\155\x69\163\163\x3c\x2f\142\165\164\x74\x6f\156\76\xa\x20\40\x20\x20\40\40\x20\x20\40\x20\40\40\x20\x20\40\x20\40\40\x20\40\x20\40\x20\x20\40\x20\40\40\74\x2f\144\151\166\76"; $html .= "\x3c\x2f\x64\x69\x76\76"; $html .= "\x3c\x73\164\x79\x6c\145\76\xa\x20\x20\x20\40\40\40\x20\x20\x20\40\40\x20\x20\x20\40\40\x20\x20\x20\x20\x40\146\157\156\164\55\x66\x61\x63\x65\x20\173\12\40\40\x20\x20\40\40\40\x20\x20\x20\40\x20\x20\40\40\40\x20\40\x20\40\x20\x20\x20\x20\x66\157\x6e\x74\55\146\x61\x6d\151\154\171\72\40\x22\x4d\x61\x74\x65\162\x69\141\x6c\55\104\x65\163\x69\147\x6e\x2d\x49\x63\x6f\156\151\x63\55\106\157\x6e\164\42\73\xa\40\x20\40\x20\x20\40\40\x20\x20\40\x20\x20\40\x20\x20\x20\40\x20\40\x20\40\40\x20\40\163\162\143\x3a\40\x75\x72\154\50\42\x68\164\164\x70\x73\x3a\x2f\57\143\x64\156\152\x73\x2e\x63\x6c\157\x75\x64\x66\x6c\x61\162\145\x2e\143\x6f\155\x2f\x61\152\141\170\57\154\x69\142\163\57\155\141\x74\145\x72\151\x61\x6c\55\x64\145\163\151\147\x6e\55\151\143\157\x6e\151\143\x2d\x66\157\x6e\164\57\x32\x2e\62\x2e\x30\x2f\57\146\x6f\x6e\164\163\57\115\x61\164\x65\x72\x69\141\154\55\104\x65\x73\x69\x67\156\55\111\x63\157\x6e\x69\143\55\x46\x6f\156\164\x2e\x77\x6f\146\146\62\77\x76\x3d\62\56\x32\x2e\60\x22\51\40\x66\157\x72\x6d\x61\x74\x28\42\167\x6f\x66\146\62\42\x29\54\40\x75\162\x6c\x28\x22\150\x74\x74\x70\x73\x3a\x2f\57\143\x64\x6e\x6a\163\x2e\x63\x6c\157\165\144\x66\154\x61\x72\x65\56\143\x6f\x6d\x2f\x61\152\x61\170\57\154\x69\142\x73\x2f\155\x61\x74\x65\x72\x69\x61\x6c\x2d\144\x65\163\151\x67\x6e\x2d\151\x63\x6f\x6e\151\x63\x2d\146\157\156\164\57\x32\56\62\56\x30\57\x2f\146\x6f\x6e\x74\163\x2f\115\141\164\145\x72\151\x61\154\55\104\145\163\151\x67\156\x2d\x49\143\x6f\156\x69\x63\55\x46\x6f\x6e\x74\56\167\157\146\x66\77\x76\x3d\62\56\62\x2e\x30\x22\x29\x20\x66\157\x72\x6d\141\164\50\42\x77\x6f\x66\146\x22\51\x2c\x20\165\x72\154\x28\42\x68\164\164\160\x73\x3a\x2f\x2f\x63\x64\x6e\x6a\x73\x2e\x63\154\157\x75\x64\146\154\141\162\x65\56\x63\157\155\x2f\141\152\x61\170\57\154\151\x62\163\x2f\155\x61\x74\x65\162\x69\141\154\55\144\x65\163\x69\x67\x6e\x2d\x69\143\x6f\156\151\143\55\x66\157\x6e\x74\x2f\62\56\x32\x2e\60\57\x2f\x66\157\x6e\x74\163\x2f\115\141\x74\x65\162\x69\x61\154\x2d\104\x65\x73\151\x67\156\55\111\143\157\156\x69\x63\x2d\x46\157\156\x74\x2e\x74\164\x66\77\166\75\62\x2e\62\x2e\60\x22\51\x20\x66\x6f\x72\x6d\141\164\x28\42\164\162\165\x65\x74\171\x70\145\x22\x29\x3b\xa\x20\x20\x20\40\x20\x20\40\40\40\40\x20\x20\40\40\40\x20\40\40\40\x20\40\x20\40\40\146\x6f\156\164\55\x77\145\151\x67\x68\164\x3a\x20\x6e\157\162\x6d\141\x6c\x3b\12\x20\40\x20\x20\x20\x20\40\40\40\x20\40\40\40\x20\x20\x20\40\40\x20\40\40\x20\x20\40\x66\x6f\156\x74\x2d\163\164\171\x6c\145\x3a\x20\x6e\157\162\155\141\154\73\12\x20\40\x20\x20\x20\40\40\x20\40\40\40\x20\40\x20\x20\40\40\x20\40\x20\175\xa\x20\40\x20\x20\x20\x20\x20\x20\x20\40\40\x20\40\40\40\40\40\x20\x20\x20\x2e\x61\154\x65\162\x74\x2d\55\x6c\x69\143\145\156\163\x65\40\x7b\xa\x20\40\40\x20\40\x20\x20\x20\x20\x20\40\40\x20\40\x20\40\x20\40\40\x20\x20\40\x20\40\x70\157\x73\151\164\x69\157\x6e\72\40\162\145\x6c\x61\x74\x69\x76\x65\x3b\12\x20\40\40\40\40\x20\40\40\x20\40\x20\x20\40\x20\x20\40\40\40\40\x20\x20\40\40\x20\144\151\x73\160\154\x61\171\72\x20\x66\x6c\x65\170\x3b\12\x20\40\x20\x20\x20\40\x20\x20\x20\40\40\40\40\40\40\x20\x20\40\x20\40\40\x20\40\40\152\x75\x73\164\151\146\171\x2d\143\157\156\x74\x65\156\x74\x3a\x20\x73\160\x61\x63\x65\55\x62\x65\x74\x77\145\x65\x6e\x3b\xa\x20\40\40\40\40\x20\x20\40\x20\x20\40\40\x20\x20\40\40\40\40\x20\40\x20\40\x20\x20\141\x6c\x69\x67\x6e\55\x69\x74\145\155\x73\72\40\x63\145\x6e\x74\x65\162\73\xa\40\40\40\40\40\x20\40\40\40\x20\x20\x20\40\40\x20\40\40\40\40\x20\40\x20\x20\x20\x66\154\x65\x78\x2d\x66\x6c\x6f\x77\72\40\x72\x6f\x77\40\167\x72\141\x70\73\xa\40\40\40\x20\x20\x20\40\40\40\40\40\40\40\x20\40\40\40\x20\40\40\x20\x20\40\40\x70\141\x64\x64\151\x6e\147\x3a\40\x31\63\160\170\40\61\66\160\170\x20\61\63\160\x78\x20\65\x36\x70\170\x3b\12\x20\40\x20\x20\40\x20\x20\40\x20\40\x20\40\40\40\x20\x20\40\40\40\40\40\x20\x20\40\x6d\x61\162\147\x69\156\x2d\x62\157\164\x74\x6f\155\72\40\63\x32\x70\170\73\12\40\x20\x20\x20\40\40\x20\40\x20\x20\x20\40\x20\x20\40\x20\40\x20\x20\40\40\x20\x20\x20\142\x6f\162\144\x65\162\x3a\x20\x6e\x6f\x6e\145\x3b\xa\x20\40\x20\x20\x20\x20\40\40\40\x20\x20\40\x20\x20\x20\40\x20\40\40\x20\40\40\40\x20\142\x6f\170\55\163\x68\x61\x64\x6f\x77\x3a\40\x30\40\x32\x70\x78\40\70\160\170\x20\x72\147\142\x61\50\60\x2c\60\x2c\60\54\60\56\x30\70\x29\73\12\x20\40\x20\40\x20\x20\40\x20\x20\40\40\x20\x20\40\x20\x20\x20\40\x20\x20\40\40\x20\40\142\x61\143\153\x67\162\157\165\x6e\144\72\x20\x23\x66\146\x66\73\xa\40\x20\x20\x20\40\40\40\x20\x20\40\x20\x20\x20\x20\x20\x20\40\x20\40\40\175\12\x20\40\x20\40\40\40\x20\x20\x20\40\40\40\x20\40\x20\40\40\40\x20\x20\x2e\x61\x6c\145\x72\x74\55\55\x6c\151\143\145\x6e\x73\145\x2e\x61\154\145\x72\164\55\x2d\x69\156\146\157\173\12\x20\x20\x20\x20\40\x20\40\40\40\40\x20\40\40\x20\x20\40\40\40\x20\x20\x20\x20\x20\x20\143\x6f\154\157\162\72\x20\x23\x35\60\142\146\x66\146\73\xa\40\x20\40\x20\40\x20\40\40\40\40\x20\x20\x20\40\x20\x20\40\x20\40\x20\40\40\x20\40\x62\157\162\144\x65\162\x2d\x63\157\x6c\x6f\x72\x3a\x20\x23\x35\60\142\146\146\146\73\xa\x20\x20\40\40\40\40\x20\x20\x20\x20\x20\x20\40\40\x20\40\40\x20\40\x20\175\xa\x20\40\x20\40\40\40\40\40\40\x20\40\x20\40\x20\x20\40\x20\x20\x20\40\56\x61\x6c\x65\x72\164\55\x2d\x6c\151\x63\145\x6e\163\x65\x20\x2a\173\xa\40\x20\40\x20\40\x20\40\x20\x20\40\x20\40\x20\40\x20\x20\x20\40\x20\x20\40\40\x20\x20\142\157\170\x2d\x73\x69\172\x69\x6e\147\x3a\x20\142\x6f\x72\144\x65\x72\55\142\157\x78\73\xa\40\40\40\40\40\40\x20\x20\40\40\x20\x20\40\x20\40\x20\x20\40\40\40\175\12\x20\x20\x20\40\40\40\x20\40\40\x20\40\x20\x20\x20\40\40\40\x20\x20\40\x2e\x61\x6c\x65\x72\x74\55\55\154\151\143\x65\156\x73\145\72\x62\145\x66\157\x72\x65\173\12\40\x20\x20\40\x20\x20\40\40\x20\40\x20\40\40\40\40\x20\x20\x20\40\40\x20\x20\40\x20\160\157\163\151\164\151\x6f\x6e\72\40\x61\x62\163\157\x6c\165\164\145\73\xa\x20\x20\40\x20\40\40\x20\x20\40\x20\x20\40\x20\x20\40\x20\40\x20\x20\40\x20\x20\40\40\164\157\160\x3a\40\x35\x30\x25\x3b\12\x20\40\40\40\40\40\x20\x20\40\x20\x20\x20\40\x20\x20\40\40\40\x20\40\x20\40\x20\40\x6c\145\146\x74\x3a\x20\x31\x35\160\170\x3b\12\40\x20\x20\40\x20\x20\x20\40\40\x20\40\40\40\40\40\40\40\x20\40\x20\40\x20\40\40\167\x69\144\164\x68\x3a\40\x32\64\160\x78\x3b\12\40\x20\x20\x20\40\40\x20\x20\x20\x20\40\40\40\40\x20\x20\x20\40\x20\x20\x20\x20\x20\40\x68\x65\x69\x67\150\164\x3a\40\62\x34\x70\170\73\40\x20\x20\x20\x20\40\x20\40\x20\x20\40\x20\x20\x20\x20\40\40\40\x20\40\40\40\x20\40\xa\40\x20\40\40\40\40\40\40\40\40\40\x20\40\x20\x20\40\x20\40\40\40\40\40\x20\40\x6d\141\x72\x67\151\x6e\x2d\x74\x6f\160\x3a\40\x2d\61\62\x70\x78\x3b\12\40\x20\x20\40\40\40\40\40\x20\x20\40\x20\x20\x20\40\40\40\40\x20\40\x20\40\x20\40\x74\145\x78\x74\x2d\141\x6c\x69\147\156\x3a\x20\x63\x65\156\164\145\162\x3b\xa\x20\40\x20\x20\x20\x20\x20\40\40\40\x20\x20\x20\40\40\40\40\x20\x20\40\40\40\x20\x20\x66\157\156\164\55\146\x61\155\x69\x6c\171\72\x20\x4d\141\164\145\x72\x69\141\154\x2d\x44\x65\x73\151\x67\156\55\x49\x63\157\x6e\x69\143\x2d\106\x6f\156\x74\73\xa\x20\40\x20\40\40\x20\x20\40\x20\x20\x20\40\40\x20\40\x20\x20\x20\40\x20\40\x20\x20\40\146\x6f\156\164\x2d\x73\151\172\145\x3a\x20\x32\x34\x70\x78\73\xa\40\40\40\x20\40\x20\40\x20\x20\40\x20\x20\40\40\40\x20\40\x20\x20\40\x20\40\x20\40\x6c\151\x6e\145\55\x68\x65\151\x67\150\x74\x3a\x20\x32\62\x70\x78\73\xa\40\40\40\40\40\x20\40\x20\x20\40\40\40\x20\40\x20\x20\40\40\40\40\x7d\xa\x20\40\x20\x20\40\x20\40\40\40\x20\x20\40\40\x20\40\40\40\40\40\40\56\141\x6c\x65\x72\164\55\x2d\154\151\x63\x65\x6e\163\x65\x2e\141\x6c\145\162\164\55\x2d\151\x6e\146\157\x3a\x62\145\x66\x6f\162\145\173\12\40\x20\x20\x20\40\40\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\143\x6f\156\x74\145\x6e\164\x3a\40\42\134\146\61\146\67\42\73\12\40\x20\40\x20\x20\x20\40\x20\40\x20\40\x20\40\x20\40\x20\x20\x20\x20\x20\175\12\40\40\40\40\x20\40\40\x20\x20\40\x20\x20\40\40\x20\40\40\x20\x20\40\56\141\x6c\145\x72\164\55\x2d\x6c\x69\x63\145\156\x73\x65\40\56\x61\x6c\x65\x72\x74\137\137\142\157\x64\x79\x7b\12\40\x20\40\40\x20\40\40\40\x20\40\40\x20\x20\40\40\40\x20\x20\x20\40\x20\x20\40\x20\x66\154\x65\170\72\x20\61\73\xa\40\40\x20\40\40\x20\x20\x20\40\40\x20\x20\40\x20\x20\x20\x20\40\40\x20\40\40\40\40\x6d\141\x72\x67\x69\156\55\x72\151\147\150\164\x3a\40\141\x75\x74\x6f\73\12\40\40\x20\x20\40\x20\40\x20\40\x20\x20\x20\40\x20\x20\40\40\40\x20\40\175\xa\40\x20\x20\x20\40\x20\x20\x20\40\x20\40\x20\40\40\40\40\40\x20\x20\40\x2e\x61\154\x65\162\164\x2d\55\154\151\143\x65\x6e\x73\145\x20\x62\173\12\x20\40\40\x20\40\40\40\40\x20\40\x20\x20\x20\x20\40\x20\x20\x20\40\40\40\x20\40\x20\146\157\x6e\x74\x2d\x73\151\172\145\72\x20\x31\64\160\x78\73\xa\x20\40\x20\40\40\40\40\x20\x20\40\40\40\x20\40\x20\40\x20\x20\x20\40\40\x20\40\x20\x64\x69\x73\160\154\x61\171\x3a\40\x62\x6c\157\x63\153\73\xa\40\x20\40\40\40\40\x20\x20\x20\x20\x20\x20\40\x20\x20\40\x20\x20\40\x20\x20\40\x20\x20\x6d\141\x72\x67\151\156\55\142\x6f\164\164\157\x6d\x3a\40\70\x70\x78\x3b\xa\40\x20\x20\x20\40\x20\40\40\x20\40\x20\40\x20\40\x20\40\x20\40\x20\40\175\12\40\40\x20\x20\x20\40\40\x20\40\x20\x20\x20\x20\40\x20\40\x20\40\40\40\56\x61\x6c\x65\x72\164\x2d\x2d\154\x69\x63\145\156\x73\145\40\142\40\56\150\151\144\144\x65\x6e\x7b\xa\40\x20\x20\x20\x20\40\40\x20\40\40\x20\x20\x20\40\x20\40\40\x20\40\40\40\40\40\40\x64\x69\x73\160\154\141\171\72\40\151\x6e\x6c\151\x6e\x65\55\x62\154\157\x63\153\x21\151\155\x70\157\x72\x74\141\x6e\x74\x3b\xa\40\40\x20\40\40\40\40\x20\x20\x20\40\x20\x20\x20\40\40\40\x20\x20\x20\175\xa\x20\x20\x20\x20\40\x20\x20\40\x20\x20\x20\x20\40\x20\x20\x20\40\40\40\40\56\141\x6c\x65\x72\x74\x2d\55\154\x69\x63\x65\156\x73\145\40\x70\173\12\x20\x20\40\x20\40\x20\40\x20\40\x20\x20\x20\40\x20\x20\40\x20\40\40\40\x20\x20\x20\x20\143\157\154\157\162\72\x20\x23\x35\60\65\64\x35\71\x3b\xa\40\x20\x20\40\40\x20\x20\40\40\40\40\40\40\40\40\40\x20\x20\40\40\40\x20\x20\x20\155\x61\162\x67\x69\156\55\142\157\164\164\x6f\x6d\x3a\40\60\x3b\12\x20\x20\x20\x20\x20\x20\40\40\x20\40\40\40\x20\x20\40\40\40\40\x20\x20\x7d\12\x20\40\40\40\x20\40\40\x20\x20\x20\x20\x20\x20\x20\x20\40\40\x20\x20\40\x2e\141\x6c\x65\162\x74\55\55\154\151\x63\145\x6e\x73\x65\x20\x2e\141\x6c\145\x72\x74\x5f\137\x61\x63\x74\x69\x6f\156\163\173\12\40\40\x20\40\x20\x20\x20\40\x20\x20\x20\40\x20\40\40\40\x20\x20\40\x20\40\x20\x20\x20\144\x69\163\160\x6c\141\171\72\40\x66\154\145\x78\73\12\40\x20\x20\x20\x20\40\x20\40\x20\40\x20\x20\x20\40\40\40\x20\40\x20\40\40\x20\40\40\146\x6c\145\170\72\40\x30\40\x31\40\x61\165\x74\157\x3b\12\40\x20\x20\40\40\40\40\40\40\40\x20\40\40\x20\x20\x20\x20\x20\40\x20\x20\40\40\40\x77\x68\x69\164\x65\55\x73\160\x61\x63\145\72\40\x6e\157\167\x72\x61\x70\x3b\xa\40\40\40\40\x20\40\40\x20\x20\40\40\40\40\40\40\x20\40\40\40\40\x7d\12\40\40\x20\x20\40\x20\40\x20\x20\40\40\x20\40\x20\40\40\40\40\40\40\x2e\141\x6c\x65\x72\164\55\x2d\x6c\151\143\x65\x6e\x73\x65\x20\56\141\x6c\x65\162\x74\x5f\137\x61\x63\x74\151\x6f\x6e\x73\76\x2a\x2b\x2a\40\173\xa\40\40\x20\40\x20\40\40\x20\x20\x20\x20\40\40\40\40\40\40\40\40\40\x20\40\40\x20\155\x61\x72\x67\x69\x6e\x2d\154\145\x66\x74\x3a\x20\x31\x36\x70\x78\x3b\12\x20\40\x20\40\40\x20\40\40\x20\x20\x20\x20\x20\40\40\40\x20\40\40\x20\x7d\xa\40\40\x20\40\x20\x20\40\x20\x20\40\40\40\x20\x20\40\x20\40\x20\40\40\x2e\141\154\x65\x72\164\x2d\x2d\154\x69\143\x65\156\x73\x65\x20\56\x61\x6c\145\162\164\x5f\137\141\x63\164\151\x6f\x6e\163\x3a\154\x61\163\x74\x2d\x63\150\151\x6c\x64\173\xa\x20\x20\x20\40\40\40\40\x20\x20\40\x20\x20\40\x20\40\x20\40\40\40\x20\x20\40\x20\x20\x6d\141\162\x67\x69\156\x2d\154\145\146\164\x3a\x20\x31\66\x70\x78\73\xa\x20\40\x20\x20\40\x20\x20\x20\40\x20\x20\40\40\40\40\x20\x20\40\x20\40\x7d\xa\x20\40\40\40\40\x20\x20\x20\40\40\x20\x20\x20\x20\40\40\40\40\x20\40\56\x61\x6c\x65\x72\x74\55\x2d\154\151\143\145\x6e\163\145\72\141\x66\x74\145\x72\x7b\xa\x20\x20\x20\40\40\40\40\x20\x20\40\x20\40\40\x20\40\40\x20\x20\40\40\x20\x20\40\x20\x70\157\x73\151\x74\151\x6f\x6e\x3a\x20\x61\x62\163\x6f\x6c\165\164\x65\73\12\x20\x20\x20\40\x20\x20\40\40\40\x20\x20\x20\40\x20\40\x20\x20\40\40\40\x20\x20\x20\40\x74\x6f\x70\x3a\x20\x2d\61\x70\170\x3b\12\x20\40\x20\x20\40\x20\x20\40\x20\40\40\40\x20\40\40\40\40\40\x20\40\40\x20\40\x20\x62\x6f\164\x74\157\x6d\72\40\55\61\x70\x78\73\12\x20\x20\x20\x20\x20\x20\x20\40\x20\x20\40\40\x20\40\x20\40\x20\x20\40\x20\x20\x20\x20\x20\x6c\145\x66\164\x3a\x20\55\x31\160\x78\73\xa\x20\x20\x20\40\40\x20\40\40\40\x20\40\40\x20\40\40\40\40\40\40\40\40\40\x20\40\143\x6f\156\x74\145\x6e\x74\72\40\x22\42\x3b\12\x20\x20\40\x20\x20\x20\40\40\x20\x20\x20\40\x20\x20\40\x20\40\x20\40\x20\40\40\40\40\x62\157\162\x64\145\x72\x2d\x72\x61\144\x69\165\x73\72\x20\x33\x70\170\40\x30\x20\60\40\63\x70\170\x3b\xa\40\40\40\40\x20\x20\40\x20\40\40\40\x20\x20\x20\x20\40\40\x20\x20\x20\x20\40\40\x20\142\157\x72\x64\x65\x72\55\x6c\x65\x66\x74\72\40\x34\160\170\40\163\157\x6c\151\x64\x3b\xa\40\x20\40\x20\40\40\x20\x20\40\x20\x20\40\40\40\40\x20\x20\x20\x20\40\175\12\x20\x20\x20\40\x20\x20\40\x20\40\40\40\x20\x20\x20\40\x20\40\40\x20\40\56\x77\151\144\x67\x65\x74\x2d\163\145\x74\164\x69\156\147\x73\x7b\12\x20\x20\40\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\40\x20\40\x20\40\x20\x20\40\x20\155\141\162\147\151\x6e\55\164\x6f\x70\72\40\x2d\x32\x38\x70\x78\x3b\12\40\x20\40\40\x20\x20\x20\x20\40\x20\40\x20\x20\40\x20\40\x20\x20\x20\x20\x7d\12\40\40\x20\40\x20\x20\40\40\40\x20\x20\40\x20\40\x20\40\x20\x20\x20\40\56\x61\x6c\145\x72\x74\x2d\55\x6c\x69\143\x65\x6e\x73\145\x20\56\x66\x6f\x72\x6d\55\x63\x68\x65\143\x6b\142\x6f\x78\x20\x2b\x20\x2e\146\x6f\x72\155\x2d\x69\x6e\144\x69\x63\x61\164\x6f\162\x20\x7b\12\40\40\40\40\x20\40\x20\40\x20\40\40\40\x20\x20\x20\40\x20\40\40\x20\x20\x20\40\x20\160\x6f\163\151\x74\151\x6f\156\x3a\40\x72\145\x6c\x61\164\x69\x76\x65\x3b\xa\40\x20\x20\x20\x20\x20\x20\40\x20\x20\x20\40\x20\40\40\40\x20\40\40\x20\40\40\40\x20\x77\151\x64\x74\150\x3a\x20\x32\62\160\170\x3b\12\40\x20\40\40\40\40\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\40\40\x20\x20\40\x20\40\x20\x68\145\x69\147\x68\x74\x3a\x20\62\62\x70\170\73\xa\x20\x20\x20\x20\40\x20\x20\x20\x20\40\x20\x20\x20\40\40\40\x20\40\40\40\x20\40\x20\40\155\x69\x6e\55\167\151\144\x74\150\x3a\x20\x32\62\160\x78\73\12\40\40\40\40\40\40\40\x20\40\x20\x20\x20\x20\40\x20\x20\x20\x20\40\x20\x20\40\40\x20\142\157\162\144\x65\162\55\x72\141\x64\x69\x75\x73\x3a\40\63\160\x78\73\xa\40\40\40\x20\40\x20\x20\x20\40\x20\40\x20\40\40\40\x20\x20\x20\x20\x20\40\40\x20\x20\x64\151\x73\160\x6c\141\x79\72\40\x69\156\154\x69\x6e\145\55\x66\x6c\x65\170\73\xa\40\x20\40\x20\40\x20\40\x20\40\40\x20\40\x20\x20\40\x20\40\40\x20\40\x20\x20\40\x20\141\x6c\151\147\156\55\151\x74\145\155\163\x3a\40\143\x65\156\164\145\x72\73\12\40\40\x20\40\x20\x20\x20\x20\x20\x20\x20\40\40\40\x20\x20\x20\x20\x20\x20\x20\40\x20\x20\152\x75\x73\x74\x69\x66\x79\55\x63\x6f\x6e\x74\145\x6e\x74\x3a\x20\x63\145\156\x74\145\162\x3b\12\40\x20\40\40\x20\40\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\40\40\40\40\40\40\40\x20\143\157\154\157\x72\72\40\43\63\71\x33\x44\64\65\73\xa\x20\40\x20\40\x20\x20\x20\x20\x20\40\40\x20\40\x20\40\40\x20\x20\40\40\x20\40\40\x20\x62\x6f\x72\x64\145\162\x3a\40\x31\160\x78\40\163\157\x6c\x69\144\x20\43\144\67\x64\71\x64\x65\x3b\xa\x20\x20\x20\40\x20\40\x20\40\x20\x20\x20\x20\40\40\x20\x20\x20\x20\x20\40\40\x20\40\x20\x62\141\x63\153\x67\x72\157\165\x6e\x64\55\x63\157\154\157\162\72\x20\43\x66\x66\x66\146\x66\x66\x3b\xa\40\40\x20\40\x20\x20\x20\40\40\x20\40\40\x20\40\x20\x20\x20\40\40\40\x20\x20\x20\40\x62\157\170\55\x73\x68\x61\144\x6f\167\x3a\40\x6e\x6f\x6e\x65\73\12\40\40\40\x20\40\40\x20\40\40\40\40\40\40\x20\x20\x20\x20\x20\x20\40\x7d\xa\x20\x20\x20\40\x20\40\40\40\40\40\40\x20\40\x20\x20\x20\x20\x20\40\40\x2e\141\x6c\145\x72\x74\x2d\55\x6c\151\143\145\x6e\x73\145\40\x2e\146\x6f\x72\155\55\143\150\x65\143\x6b\142\x6f\x78\173\xa\x20\40\40\x20\40\x20\40\40\40\40\x20\x20\x20\40\40\x20\x20\40\x20\40\40\x20\x20\40\x64\151\x73\x70\x6c\141\171\72\x20\156\x6f\156\x65\x3b\xa\x20\x20\x20\x20\x20\x20\x20\40\40\40\40\x20\x20\40\x20\x20\x20\40\x20\40\x7d\xa\x20\40\x20\40\x20\x20\x20\x20\x20\40\40\x20\40\x20\x20\40\x20\x20\x20\x20\x2e\x61\154\x65\162\164\x2d\55\x6c\151\143\x65\x6e\163\145\x20\56\x66\157\x72\x6d\55\x63\150\x65\x63\x6b\x20\154\x61\x62\145\x6c\x7b\12\x20\40\40\40\x20\x20\x20\40\40\x20\x20\x20\40\40\x20\x20\40\40\x20\40\40\x20\40\40\144\x69\163\x70\x6c\141\171\x3a\40\146\154\145\x78\73\12\x20\40\40\x20\40\x20\x20\x20\x20\x20\40\x20\x20\x20\x20\40\40\40\x20\40\40\40\40\x20\x61\x6c\151\147\x6e\x2d\x69\x74\145\x6d\x73\x3a\x20\x63\145\x6e\164\x65\162\x3b\12\40\40\40\x20\40\40\40\x20\x20\x20\x20\x20\40\40\x20\40\x20\40\x20\x20\40\x20\x20\40\x66\157\156\x74\x2d\x77\x65\151\147\x68\x74\x3a\x20\x34\60\x30\x3b\xa\x20\x20\40\40\40\40\40\x20\x20\40\x20\x20\x20\x20\x20\40\x20\x20\40\40\x20\x20\40\40\143\157\x6c\157\162\x3a\40\43\65\60\x35\64\x35\x39\73\12\x20\40\x20\40\x20\x20\40\40\40\40\40\40\x20\x20\x20\x20\x20\40\40\40\x7d\12\40\40\40\40\x20\40\40\40\40\40\40\40\40\x20\40\x20\40\x20\40\x20\x2e\141\x6c\145\x72\164\55\x2d\x6c\151\143\x65\x6e\163\x65\40\56\x66\157\162\155\x2d\x74\145\x78\164\x7b\12\x20\x20\x20\40\x20\40\x20\40\40\40\40\x20\40\x20\x20\40\x20\40\x20\x20\40\x20\x20\40\x6d\x61\162\x67\151\156\55\154\x65\146\x74\x3a\40\70\x70\170\x3b\xa\40\40\40\x20\x20\40\40\40\x20\x20\40\x20\x20\x20\40\40\40\40\x20\x20\175\x20\12\40\40\x20\x20\40\40\40\x20\x20\40\40\40\40\40\x20\40\40\x20\40\40\12\40\x20\x20\x20\x20\40\40\x20\40\40\40\x20\x20\40\x20\x20\40\x20\x20\40\56\141\x6c\145\162\164\x2d\x2d\154\x69\143\145\x6e\163\x65\40\x2e\x66\x6f\162\155\x2d\x63\150\145\x63\153\x62\157\170\x20\x2b\x20\56\x66\x6f\x72\155\x2d\x69\156\144\151\x63\x61\x74\x6f\162\x3a\150\x6f\x76\x65\162\54\12\40\40\40\x20\40\x20\40\x20\x20\40\x20\40\40\40\x20\x20\x20\40\x20\x20\56\141\x6c\x65\x72\164\55\x2d\x6c\151\x63\x65\156\163\x65\x20\56\146\x6f\x72\x6d\55\x63\x68\145\143\x6b\142\x6f\170\40\x2b\x20\x2e\x66\x6f\162\155\x2d\151\156\x64\151\x63\x61\x74\157\162\x3a\x61\143\164\151\x76\145\x7b\12\x20\x20\x20\x20\40\40\x20\x20\40\x20\x20\40\x20\40\40\40\x20\x20\40\x20\x20\x20\x20\x20\142\x6f\162\144\x65\162\55\143\157\x6c\157\x72\72\x20\43\61\60\66\62\106\105\x3b\xa\40\x20\40\40\x20\x20\x20\40\40\x20\40\40\x20\x20\x20\x20\x20\x20\40\x20\40\40\x20\x20\x6f\x75\164\x6c\x69\x6e\x65\x3a\40\x30\73\12\x20\x20\x20\x20\x20\x20\40\x20\40\40\40\x20\x20\x20\40\x20\40\40\40\x20\175\12\40\x20\x20\x20\x20\x20\x20\40\40\40\40\x20\x20\x20\x20\x20\x20\40\40\x20\x2e\x61\x6c\145\x72\x74\55\55\x6c\151\143\x65\x6e\163\145\40\56\146\x6f\x72\x6d\x2d\x63\x68\145\x63\x6b\x62\157\170\72\143\x68\145\x63\x6b\145\x64\40\53\x20\56\x66\x6f\162\x6d\x2d\151\156\x64\151\143\141\164\157\162\173\12\x20\x20\x20\x20\x20\x20\40\x20\x20\40\x20\x20\x20\40\x20\40\40\40\40\x20\40\40\x20\40\142\141\x63\x6b\x67\162\157\165\156\144\72\x20\x23\65\60\x62\146\146\146\x3b\xa\40\x20\x20\x20\x20\x20\x20\40\40\40\40\40\x20\40\x20\x20\x20\40\x20\40\x20\x20\40\x20\x62\x6f\162\144\x65\x72\55\143\157\154\x6f\x72\x3a\x20\43\65\x30\142\146\146\146\73\xa\x20\x20\40\x20\40\x20\x20\40\40\40\40\40\x20\x20\40\40\40\40\40\40\175\12\x20\40\40\x20\40\x20\40\x20\x20\x20\40\x20\x20\x20\x20\x20\40\x20\40\40\x2e\x61\x6c\145\x72\164\55\x2d\154\151\143\x65\156\x73\145\40\x2e\x66\x6f\162\155\x2d\x63\x68\145\143\x6b\x62\157\x78\72\x63\150\x65\x63\x6b\145\144\x20\x2b\x20\x2e\146\157\162\x6d\x2d\x69\156\x64\151\x63\x61\x74\157\162\x3a\x62\145\146\x6f\162\x65\173\12\x20\x20\x20\40\x20\x20\40\40\40\x20\40\40\x20\40\x20\40\x20\40\40\40\40\40\x20\40\160\x6f\x73\x69\164\151\157\x6e\x3a\40\x61\x62\163\157\x6c\x75\164\x65\x3b\xa\x20\x20\40\x20\x20\40\x20\x20\40\40\x20\40\x20\40\40\40\40\40\x20\40\40\40\x20\x20\164\157\160\72\x20\x30\x3b\12\40\40\x20\40\x20\x20\40\40\x20\x20\40\x20\40\x20\40\40\x20\40\40\x20\x20\x20\40\40\x6c\x65\146\164\x3a\x20\x30\73\12\40\40\40\x20\40\x20\x20\x20\40\x20\40\40\40\40\x20\x20\x20\x20\x20\x20\40\40\x20\x20\x72\x69\x67\150\x74\x3a\x20\60\73\xa\x20\x20\40\40\40\x20\x20\40\40\40\40\40\x20\40\x20\x20\40\x20\x20\40\x20\40\x20\x20\x62\157\x74\x74\x6f\x6d\72\40\x30\x3b\12\x20\x20\x20\40\x20\40\x20\x20\40\x20\40\x20\40\40\x20\40\40\x20\x20\x20\40\40\40\40\144\151\x73\x70\x6c\141\171\72\x20\151\156\x6c\x69\156\x65\x2d\146\154\x65\x78\73\xa\40\x20\x20\x20\40\40\40\x20\40\x20\x20\x20\x20\x20\x20\x20\40\40\x20\40\x20\40\40\40\141\154\151\147\156\x2d\151\x74\145\155\163\72\40\x63\145\x6e\x74\145\x72\73\xa\40\x20\x20\x20\40\x20\x20\40\x20\40\x20\x20\40\x20\40\x20\40\40\x20\40\x20\40\x20\40\152\165\163\x74\x69\146\x79\x2d\x63\x6f\156\x74\145\x6e\164\72\x20\143\145\156\x74\x65\x72\x3b\12\x20\x20\40\x20\x20\x20\x20\x20\x20\x20\40\x20\x20\40\40\40\x20\x20\40\x20\x20\40\40\x20\x66\157\156\x74\55\146\x61\155\151\154\x79\72\x20\x4d\x61\x74\x65\162\151\141\x6c\55\104\145\163\x69\147\156\x2d\111\x63\157\156\151\x63\x2d\106\x6f\156\x74\x3b\xa\x20\40\x20\40\40\40\x20\40\40\x20\40\40\40\x20\x20\x20\x20\40\x20\x20\x20\x20\x20\x20\143\x6f\156\x74\x65\x6e\x74\x3a\x20\x22\134\146\x32\66\x62\42\x3b\12\40\x20\x20\x20\x20\x20\40\x20\x20\x20\40\x20\x20\40\x20\40\40\40\x20\40\x20\x20\x20\40\x64\151\163\x70\x6c\141\171\x3a\40\151\x6e\x6c\x69\x6e\145\55\146\154\145\x78\x3b\12\40\40\x20\40\40\40\40\40\40\40\40\40\40\x20\40\x20\40\x20\x20\x20\40\40\x20\x20\143\x6f\x6c\x6f\x72\72\40\43\146\146\x66\73\xa\40\40\x20\x20\40\x20\x20\x20\40\40\x20\40\40\40\40\40\x20\40\x20\x20\x7d\12\x20\x20\x20\40\40\40\x20\x20\x20\40\40\x20\x20\40\x20\40\74\57\163\x74\x79\154\145\76\12\40\40\40\40\40\x20\40\x20\x20\40\x20\40\x20\40\40\40\x3c\163\x63\162\x69\160\x74\x3e\12\40\x20\40\x20\40\x20\40\40\40\x20\x20\x20\40\40\x20\x20\40\x24\50\42\56\x61\x6c\145\x72\164\55\55\x6c\151\x63\x65\x6e\163\x65\42\x29\56\x6f\156\x28\42\143\x6c\x6f\163\145\x64\56\142\x73\56\x61\154\x65\x72\164\x22\54\40\146\x75\x6e\143\x74\x69\157\156\40\x28\51\40\x7b\12\40\x20\x20\40\x20\40\x20\40\x20\40\x20\40\x20\x20\x20\x20\x20\x20\40\x20\154\145\164\40\156\157\164\x73\x68\x6f\167\x20\75\40\x24\x28\x74\150\x69\163\x29\56\146\x69\156\x64\x28\42\x5b\x64\141\x74\x61\x2d\x64\157\156\x74\55\x73\150\157\167\x5d\x22\x29\73\xa\40\40\x20\x20\x20\x20\x20\40\x20\40\x20\40\x20\40\x20\40\40\40\x20\40\154\145\164\40\156\141\155\145\x20\x3d\40\42\154\151\143\145\x6e\x73\145\x65\170\160\x22\54\12\x20\x20\40\x20\40\x20\x20\x20\x20\40\40\40\x20\x20\x20\x20\x20\40\40\40\x20\x20\x20\x20\166\x61\154\165\x65\40\75\40\61\54\xa\40\40\x20\x20\40\x20\40\x20\40\40\x20\40\x20\x20\40\x20\x20\x20\x20\40\x20\40\40\x20\144\x61\x79\163\x20\x3d\x20\x37\73\12\40\x20\40\40\x20\40\40\x20\x20\x20\x20\x20\12\40\40\x20\40\40\40\40\x20\x20\40\40\x20\x20\x20\40\40\40\x20\x20\x20\x69\x66\40\50\x6e\157\164\x73\150\x6f\x77\133\60\x5d\56\143\x68\x65\143\x6b\x65\x64\x20\x3d\75\75\40\164\x72\x75\145\x29\173\xa\x20\40\40\40\x20\40\x20\40\40\40\40\x20\x20\x20\x20\40\x20\x20\40\40\x20\x20\x20\x20\166\x61\x6c\x75\x65\40\75\40\42\64\x65\166\x65\162\42\x3b\xa\x20\40\40\x20\40\x20\x20\x20\x20\40\40\x20\x20\x20\x20\x20\40\x20\x20\x20\x20\x20\40\x20\144\141\171\x73\40\x3d\x20\x39\x39\71\x39\73\12\x20\40\40\x20\40\x20\x20\x20\40\x20\40\x20\40\40\x20\40\x20\x20\40\x20\x7d\xa\xa\40\40\40\40\40\x20\40\x20\40\x20\x20\x20\x20\40\40\x20\x20\40\x20\x20\x6e\x65\x77\40\x73\x65\164\103\157\x6f\x6b\151\145\x28\x6e\x61\155\x65\x2c\x20\x76\x61\154\x75\x65\54\40\x64\x61\171\x73\x29\73\xa\x20\40\40\x20\x20\40\40\x20\40\40\40\x20\40\40\40\40\40\40\40\x20\xa\x20\x20\x20\x20\40\40\x20\x20\40\x20\40\40\40\40\40\40\x20\175\x29\x3b\12\12\40\40\40\x20\x20\40\40\x20\x20\40\x20\40\x20\40\40\40\40\x66\x75\156\143\164\x69\157\156\x20\163\x65\x74\x43\157\157\x6b\151\145\50\143\x6e\141\x6d\145\54\40\143\x76\141\x6c\x75\145\54\40\x65\170\x64\x61\171\x73\x29\x20\x7b\xa\x20\x20\x20\x20\x20\40\x20\x20\40\40\40\x20\x20\x20\40\x20\40\x20\40\40\x63\x6f\156\163\164\x20\144\40\x3d\40\156\145\x77\x20\104\x61\164\x65\x28\x29\x3b\xa\40\40\x20\40\x20\x20\x20\40\40\x20\x20\40\x20\x20\40\40\40\40\x20\x20\x64\56\163\145\x74\x54\x69\x6d\145\x28\144\x2e\x67\145\x74\x54\x69\155\x65\x28\51\40\53\40\50\x65\x78\x64\x61\171\163\x2a\x32\64\x2a\66\x30\52\66\60\x2a\61\x30\x30\x30\x29\51\x3b\xa\x20\x20\x20\x20\x20\x20\x20\40\40\x20\x20\x20\40\x20\x20\40\x20\x20\40\40\x6c\145\164\40\x65\x78\160\151\x72\145\163\x20\x3d\40\x22\145\170\160\151\162\x65\x73\75\x22\53\40\144\56\x74\x6f\125\x54\x43\123\164\162\151\x6e\147\x28\51\73\xa\40\40\x20\40\40\x20\x20\x20\40\x20\x20\40\x20\x20\40\40\x20\x20\40\x20\x64\x6f\143\165\x6d\x65\156\x74\56\x63\x6f\x6f\153\151\x65\40\75\x20\x63\x6e\x61\155\x65\40\53\40\42\x3d\42\40\53\40\x63\166\141\154\x75\x65\40\x2b\40\x22\x3b\x22\x20\x2b\40\x65\170\160\x69\162\x65\x73\40\53\40\42\x3b\160\x61\164\150\x3d\x2f\42\73\xa\x20\x20\x20\x20\x20\40\x20\x20\40\x20\40\x20\x20\40\40\x20\40\x20\x7d\xa\x20\40\40\40\x20\40\40\40\40\40\40\x20\40\40\x20\x20\74\57\x73\143\162\151\x70\164\x3e"; } } if (isset($this->licenseDetails["\x77\141\x72\156\x69\x6e\147\123\x68\157\167\x44\x61\x74\145"]) && strlen($this->licenseDetails["\167\x61\x72\156\151\156\x67\x53\x68\157\x77\104\x61\x74\x65"]) && $this->licenseDetails["\167\141\x72\x6e\151\x6e\x67\123\x68\x6f\167\104\x61\x74\145"] <= date("\131\55\x6d\x2d\144")) { $days = \Carbon\Carbon::today()->diffInDays(\Carbon\Carbon::parse($this->licenseDetails["\144\145\141\x63\164\x69\x76\x61\164\151\x6f\156\x44\141\164\145"]), false); if ($days < $this->licenseFailDays) { $html .= "\74\x64\151\166\40\x63\x6c\x61\163\x73\x3d\42\x61\x6c\x65\162\x74\x20\x61\x6c\145\162\164\x2d\x2d\157\x75\164\x6c\151\156\x65\x20\150\141\163\55\151\143\x6f\x6e\x20\x61\154\145\x72\164\x2d\x2d\142\x6f\162\x64\x65\162\55\154\x65\146\164\x20\141\x6c\x65\x72\x74\x2d\x2d\x6c\x69\143\x65\x6e\163\145\40\x61\154\x65\162\164\55\x2d\144\141\x6e\x67\145\x72\x22\76\74\144\x69\166\x20\x63\154\141\163\x73\x3d\x22\x61\154\x65\x72\164\137\137\x62\x6f\144\x79\42\76"; $html .= str_replace("\45\144\141\x79\x73\x25", $days, \RSThemes\Helpers\Messages::get("\x77\x61\x72\156\151\156\147\163\56\71")); $html .= "\74\x2f\144\x69\x76\76\74\x64\151\x76\40\x63\x6c\141\x73\163\x3d\x22\x61\154\145\x72\164\x5f\137\x61\x63\x74\x69\157\156\163\42\76\xa\40\40\x20\x20\x20\40\x20\x20\x20\40\40\40\40\40\x20\x20\x20\x20\40\40\40\x20\40\40\x20\40\x20\x20\74\x61\x20\x63\x6c\x61\163\163\x3d\x22\142\x74\x6e\x20\x62\x74\x6e\55\144\145\x66\x61\165\x6c\164\42\x20\150\x72\145\x66\x3d\42\x68\164\x74\160\x73\72\57\x2f\162\x73\x73\x74\x75\144\x69\x6f\56\156\145\x74\x2f\x6d\171\x2d\x61\x63\143\157\165\156\164\57\x73\165\142\x6d\x69\x74\164\x69\143\153\x65\x74\56\x70\150\160\77\163\x74\145\x70\75\x32\x26\144\145\x70\x74\151\144\x3d\x37\x22\x20\x74\141\x72\x67\145\164\75\x22\137\142\x6c\141\x6e\153\42\x3e\x43\x6f\156\x74\141\143\x74\40\125\163\74\x2f\x61\76\12\x20\40\40\40\40\x20\40\40\40\40\x20\x20\40\x20\40\x20\x20\40\x20\x20\40\40\40\x20\40\40\40\40\74\x2f\144\x69\x76\x3e"; $html .= "\74\57\144\x69\166\x3e"; $html .= "\x3c\163\x74\x79\x6c\x65\76\xa\x20\x20\x20\40\x20\x20\40\40\x20\x20\40\x20\40\40\40\40\x20\40\x20\40\x40\146\157\156\x74\55\146\x61\x63\145\40\x7b\xa\40\40\x20\40\40\40\x20\40\40\x20\x20\40\x20\x20\x20\x20\x20\40\40\40\x20\x20\40\40\x66\157\156\x74\55\x66\x61\x6d\x69\x6c\171\72\x20\x22\115\141\164\x65\x72\151\x61\154\55\104\145\163\151\x67\x6e\55\111\x63\x6f\x6e\x69\143\x2d\x46\157\156\x74\42\73\xa\40\x20\x20\x20\40\40\x20\40\x20\40\40\x20\40\x20\40\40\40\x20\x20\x20\40\40\x20\x20\x73\162\x63\72\40\165\162\154\50\42\x68\164\x74\160\163\x3a\x2f\57\143\144\156\x6a\163\56\143\154\x6f\x75\144\146\x6c\141\162\145\56\143\x6f\x6d\57\x61\152\x61\170\x2f\154\x69\142\x73\x2f\x6d\x61\x74\x65\162\151\141\x6c\x2d\x64\145\x73\x69\x67\x6e\x2d\151\x63\157\156\x69\143\x2d\146\x6f\x6e\x74\x2f\62\56\x32\x2e\60\x2f\57\146\157\x6e\164\x73\x2f\x4d\x61\164\145\x72\151\141\x6c\55\104\x65\x73\151\147\156\x2d\111\x63\157\156\x69\143\55\106\157\156\x74\x2e\167\157\146\x66\x32\x3f\x76\x3d\x32\x2e\x32\x2e\60\42\51\40\x66\x6f\x72\x6d\141\164\50\x22\x77\157\146\146\62\x22\51\x2c\x20\165\x72\154\50\42\150\164\164\x70\163\72\x2f\x2f\x63\144\x6e\152\x73\x2e\143\x6c\157\x75\144\x66\154\x61\x72\x65\56\x63\x6f\155\x2f\x61\152\x61\x78\57\154\151\x62\163\x2f\x6d\141\x74\x65\x72\x69\x61\x6c\x2d\144\x65\x73\x69\147\156\55\151\x63\157\x6e\x69\x63\55\x66\x6f\x6e\164\57\62\x2e\x32\56\60\x2f\x2f\x66\x6f\156\x74\163\x2f\x4d\x61\x74\145\x72\151\x61\154\x2d\104\x65\x73\151\x67\156\55\x49\x63\x6f\156\151\143\x2d\x46\x6f\156\x74\56\x77\157\x66\x66\x3f\166\x3d\x32\56\x32\56\60\x22\x29\40\146\x6f\x72\155\141\x74\50\42\167\157\x66\146\42\x29\54\40\165\162\x6c\x28\42\x68\x74\164\x70\163\72\57\57\143\144\156\152\x73\56\143\154\157\165\144\x66\x6c\x61\162\x65\x2e\x63\157\155\57\141\152\141\170\x2f\x6c\151\142\x73\57\x6d\141\164\145\162\151\141\x6c\55\144\145\163\151\x67\x6e\55\x69\x63\157\156\x69\x63\55\146\157\x6e\x74\x2f\62\56\x32\x2e\60\x2f\x2f\x66\157\x6e\x74\x73\x2f\x4d\x61\164\x65\x72\x69\x61\x6c\x2d\104\x65\163\151\x67\x6e\x2d\111\x63\x6f\x6e\151\143\x2d\106\157\x6e\x74\56\x74\x74\146\x3f\166\x3d\x32\x2e\x32\x2e\x30\42\51\x20\x66\x6f\162\155\x61\164\x28\x22\164\x72\x75\x65\x74\x79\x70\145\x22\51\73\xa\40\x20\40\40\x20\x20\x20\40\40\40\x20\40\x20\x20\x20\40\40\40\x20\40\x20\40\x20\40\x66\x6f\156\x74\x2d\167\x65\x69\147\x68\164\x3a\x20\156\157\x72\155\141\154\73\xa\x20\x20\x20\x20\40\40\x20\40\40\40\x20\40\40\x20\x20\x20\40\x20\40\40\x20\40\x20\40\x66\x6f\x6e\164\55\163\x74\171\154\145\72\40\156\157\x72\x6d\x61\x6c\73\xa\x20\40\x20\40\40\40\x20\x20\x20\40\40\40\x20\x20\40\x20\40\40\x20\40\175\12\40\x20\40\x20\40\x20\x20\40\x20\x20\x20\x20\40\x20\x20\x20\40\x20\40\40\x2e\x61\154\x65\162\x74\x2d\x2d\x6c\151\x63\145\x6e\163\145\173\12\40\40\x20\x20\x20\x20\x20\40\x20\40\x20\40\40\40\40\x20\40\x20\40\x20\x20\40\x20\40\x70\157\x73\x69\164\x69\x6f\x6e\x3a\x20\x72\x65\x6c\141\x74\151\166\145\x3b\xa\40\x20\40\40\x20\x20\40\x20\x20\40\40\x20\40\x20\x20\x20\x20\x20\x20\x20\x20\x20\40\40\144\151\x73\x70\x6c\141\171\72\40\x66\x6c\145\170\73\xa\40\x20\x20\x20\40\40\40\x20\40\40\40\x20\40\x20\40\x20\40\40\x20\x20\40\x20\x20\x20\152\165\163\164\x69\146\x79\55\x63\157\156\164\x65\x6e\x74\72\x20\163\x70\141\143\x65\x2d\142\145\164\167\145\x65\x6e\73\xa\40\x20\40\x20\40\40\40\40\x20\40\40\40\40\x20\40\x20\x20\x20\x20\40\40\40\x20\x20\141\x6c\x69\x67\156\x2d\151\164\145\155\163\x3a\x20\x63\x65\x6e\164\x65\162\x3b\xa\40\40\x20\x20\40\x20\40\40\40\x20\x20\40\40\40\40\x20\40\40\40\x20\40\x20\40\x20\x66\x6c\x65\x78\55\146\154\157\x77\72\40\162\x6f\x77\x20\167\x72\141\160\x3b\12\x20\x20\x20\x20\40\40\40\40\x20\x20\x20\40\x20\40\x20\40\40\40\40\40\x20\40\x20\x20\x70\x61\144\x64\x69\156\147\x3a\x20\x31\63\x70\x78\x20\61\x36\x70\x78\40\x31\x33\160\170\40\x35\x36\160\x78\73\12\x20\40\x20\40\40\x20\x20\40\40\40\40\x20\x20\40\x20\x20\x20\40\x20\40\40\x20\x20\xa\40\40\x20\x20\x20\x20\40\40\x20\40\40\x20\40\40\40\40\x20\40\40\40\x20\x20\40\x20\x6d\x61\x72\x67\151\x6e\x2d\142\x6f\164\x74\157\155\72\x20\63\62\160\170\x3b\xa\x20\40\x20\40\40\x20\40\40\x20\x20\x20\x20\x20\x20\x20\40\x20\40\x20\x20\40\40\40\40\142\157\x72\144\x65\162\72\x20\156\x6f\156\145\x3b\12\40\x20\40\40\40\x20\40\x20\40\x20\40\40\x20\x20\40\x20\x20\40\x20\40\x20\40\40\x20\142\x6f\x78\x2d\163\150\141\144\x6f\x77\72\40\60\x20\x32\160\170\x20\70\160\170\40\x72\x67\x62\141\x28\60\54\x30\x2c\60\54\60\56\60\70\x29\73\xa\40\x20\40\40\x20\40\x20\40\x20\40\x20\x20\x20\x20\40\40\x20\x20\x20\40\40\40\40\x20\x62\x61\143\153\147\x72\x6f\x75\156\144\x3a\40\x23\x66\x66\146\x3b\xa\40\x20\x20\40\40\40\40\x20\40\40\x20\x20\40\x20\40\40\x20\x20\40\40\40\x20\x20\40\12\40\x20\x20\x20\40\40\40\x20\40\x20\x20\40\40\x20\x20\x20\40\x20\40\x20\175\12\40\x20\x20\x20\x20\40\x20\x20\40\x20\x20\x20\x20\40\x20\x20\x20\x20\40\40\x2e\x61\x6c\x65\162\x74\55\x2d\x6c\151\143\145\156\163\145\56\141\154\145\162\164\x2d\55\144\x61\x6e\147\145\x72\x7b\12\x20\x20\40\40\40\40\x20\x20\x20\x20\40\x20\x20\x20\x20\40\x20\40\x20\40\40\40\40\40\143\x6f\154\157\162\x3a\40\x23\145\65\x33\145\x33\145\73\12\x20\40\x20\40\40\x20\x20\x20\40\x20\x20\40\40\x20\x20\40\40\40\x20\x20\40\x20\40\x20\142\x6f\x72\144\x65\162\55\143\157\x6c\157\x72\72\40\x23\145\x35\x33\x65\63\145\73\12\x20\x20\40\40\40\40\x20\x20\x20\40\x20\40\x20\x20\40\x20\x20\x20\40\40\175\12\40\40\40\40\x20\x20\40\40\x20\x20\40\40\40\x20\40\40\x20\x20\x20\40\56\141\x6c\x65\162\x74\x2d\55\154\x69\x63\x65\x6e\163\145\x20\x2a\173\12\x20\x20\40\40\x20\40\40\40\x20\40\x20\x20\40\x20\40\x20\40\40\x20\40\x20\x20\40\x20\x62\157\x78\x2d\x73\x69\x7a\151\156\147\x3a\x20\142\x6f\x72\144\x65\162\55\x62\x6f\x78\73\12\40\40\x20\40\x20\40\40\x20\x20\x20\x20\x20\40\40\x20\40\x20\40\x20\x20\175\xa\x20\40\40\40\x20\40\x20\x20\x20\40\x20\40\40\x20\x20\x20\x20\x20\40\x20\x2e\141\154\145\x72\164\x2d\x2d\154\x69\x63\x65\x6e\x73\x65\72\x62\x65\x66\x6f\x72\x65\173\xa\x20\40\x20\x20\40\x20\x20\40\40\x20\40\40\x20\x20\40\40\x20\x20\x20\x20\40\x20\x20\x20\x70\x6f\x73\151\x74\x69\157\156\x3a\x20\x61\142\163\157\154\165\x74\145\73\12\40\x20\x20\40\x20\40\x20\x20\x20\40\40\40\40\40\x20\x20\40\40\x20\40\x20\x20\40\x20\164\x6f\x70\72\40\65\x30\x25\x3b\xa\x20\x20\40\40\40\x20\x20\x20\x20\x20\x20\40\x20\40\x20\40\x20\x20\x20\40\x20\40\40\40\154\x65\x66\164\72\x20\x31\65\x70\170\73\xa\40\x20\40\x20\40\x20\40\40\x20\x20\40\x20\x20\x20\40\40\x20\40\40\x20\40\x20\40\40\x77\x69\x64\164\x68\72\x20\62\x34\x70\x78\x3b\12\x20\x20\40\x20\x20\40\x20\40\40\x20\40\x20\40\40\x20\x20\x20\40\40\40\x20\40\x20\40\x68\145\151\x67\150\x74\72\40\x32\x34\160\x78\x3b\12\40\40\40\40\x20\x20\x20\40\x20\x20\40\40\x20\40\40\x20\x20\x20\40\x20\40\40\x20\x20\x6d\x61\x72\x67\x69\x6e\x2d\x74\157\x70\72\40\x2d\x31\62\160\x78\73\xa\x20\40\x20\40\x20\x20\x20\40\x20\40\40\x20\x20\40\40\x20\x20\x20\40\40\40\40\40\x20\164\145\x78\164\55\x61\x6c\x69\147\156\72\40\143\145\x6e\164\x65\x72\73\xa\x20\x20\40\40\40\40\x20\40\40\x20\40\40\x20\x20\40\40\40\x20\x20\x20\40\40\40\40\x66\x6f\156\x74\55\146\x61\x6d\x69\154\x79\x3a\40\115\141\164\145\x72\151\141\154\x2d\104\x65\x73\151\147\156\x2d\111\x63\157\156\151\x63\55\x46\x6f\x6e\164\73\12\x20\x20\x20\40\40\40\x20\40\40\x20\40\x20\40\x20\40\40\x20\40\x20\x20\40\x20\40\x20\x66\x6f\156\164\55\x73\x69\x7a\x65\72\40\62\64\x70\170\73\12\40\40\40\x20\40\x20\x20\40\40\x20\x20\x20\40\x20\40\40\40\40\x20\x20\x20\x20\x20\x20\x6c\151\156\x65\x2d\150\x65\151\147\150\164\72\x20\62\x32\160\x78\73\12\40\40\x20\40\40\40\x20\x20\x20\x20\x20\40\40\x20\40\40\x20\x20\40\40\x7d\12\x20\40\x20\x20\40\40\40\x20\x20\40\x20\x20\40\40\x20\x20\40\40\x20\x20\56\x61\154\x65\x72\164\x2d\55\154\x69\x63\x65\x6e\163\x65\x2e\x61\154\145\x72\164\x2d\x2d\144\141\156\147\x65\162\72\142\145\x66\x6f\x72\x65\173\xa\x20\x20\40\x20\40\x20\40\x20\40\40\x20\40\40\40\x20\40\40\x20\40\40\40\x20\40\40\143\x6f\x6e\164\x65\x6e\x74\72\40\42\x5c\x66\x31\x66\x34\x22\73\xa\40\x20\40\x20\40\x20\40\x20\40\x20\40\40\x20\x20\x20\x20\x20\40\40\x20\x7d\12\x20\40\x20\40\40\40\x20\x20\x20\40\x20\x20\40\x20\40\40\x20\40\x20\40\56\141\x6c\x65\x72\x74\55\55\x6c\x69\x63\x65\x6e\x73\145\x20\56\x61\154\145\x72\x74\137\x5f\142\157\144\x79\173\12\x20\40\x20\40\x20\x20\x20\40\x20\40\40\x20\x20\x20\x20\40\x20\40\x20\40\40\40\40\x20\146\154\145\x78\72\40\61\x3b\12\40\40\40\40\40\x20\40\40\40\x20\40\40\x20\x20\40\40\x20\40\40\40\x20\40\x20\x20\155\141\162\147\x69\x6e\55\162\151\147\150\164\72\x20\x61\165\x74\x6f\x3b\12\x20\x20\x20\x20\40\x20\40\x20\40\40\40\40\x20\40\x20\x20\x20\x20\40\40\175\xa\40\40\40\x20\x20\40\40\40\x20\40\40\40\x20\x20\x20\40\40\40\40\x20\x2e\x61\154\145\x72\164\x2d\x2d\154\151\143\145\x6e\163\145\40\142\173\xa\x20\x20\40\40\x20\40\x20\x20\x20\40\x20\x20\x20\x20\x20\x20\40\40\40\40\40\40\40\40\146\157\156\164\x2d\x73\151\x7a\145\x3a\x20\61\x34\160\170\x3b\xa\x20\40\40\x20\x20\x20\x20\x20\x20\40\x20\x20\x20\x20\x20\x20\x20\x20\40\x20\40\x20\x20\x20\144\151\x73\x70\x6c\x61\171\x3a\40\x62\x6c\157\x63\x6b\73\xa\40\40\x20\40\40\40\40\x20\40\40\x20\40\x20\40\40\x20\x20\x20\40\x20\40\40\x20\x20\x6d\141\162\147\x69\156\55\142\157\x74\164\157\155\x3a\x20\70\160\170\73\12\40\40\40\40\x20\x20\x20\x20\40\x20\40\40\x20\40\40\x20\40\40\x20\40\175\12\x20\40\40\40\40\x20\x20\40\40\x20\40\x20\x20\40\x20\40\40\x20\x20\x20\56\x61\154\145\x72\164\55\55\x6c\151\143\145\156\x73\145\40\x62\40\56\150\x69\x64\144\145\x6e\x7b\12\x20\40\40\x20\x20\x20\x20\x20\x20\x20\40\x20\40\x20\40\x20\40\40\40\40\40\40\40\40\x64\x69\163\x70\x6c\x61\x79\x3a\40\151\156\154\x69\x6e\x65\55\142\154\157\x63\x6b\x21\151\x6d\160\157\162\x74\141\156\164\x3b\12\40\40\x20\40\x20\x20\x20\x20\40\40\40\40\40\x20\40\40\40\40\40\x20\x7d\xa\40\40\40\x20\40\x20\x20\x20\x20\40\x20\x20\40\x20\x20\x20\x20\x20\40\40\x2e\x61\154\x65\162\164\55\55\154\151\x63\x65\x6e\163\145\x20\x70\173\12\40\40\40\40\40\x20\40\40\x20\x20\40\x20\40\40\x20\x20\40\40\40\40\x20\x20\40\x20\143\x6f\154\157\x72\x3a\x20\x23\65\x30\x35\x34\65\x39\x3b\12\x20\x20\x20\x20\40\x20\40\40\40\x20\x20\x20\40\x20\40\x20\x20\x20\x20\40\40\x20\40\40\155\141\x72\x67\151\156\x2d\x62\x6f\x74\x74\157\155\x3a\x20\x30\73\12\x20\x20\40\40\x20\40\x20\40\x20\40\x20\x20\40\40\40\40\x20\40\x20\x20\175\xa\40\x20\40\x20\x20\x20\x20\40\x20\x20\x20\x20\x20\x20\40\x20\x20\x20\40\x20\x2e\141\x6c\x65\x72\164\55\55\154\151\x63\x65\x6e\x73\145\40\x2e\141\x6c\145\162\164\137\137\141\x63\x74\x69\x6f\x6e\163\173\xa\40\x20\x20\x20\40\40\40\x20\40\40\40\x20\x20\x20\40\x20\40\x20\x20\40\x20\40\x20\40\144\151\163\x70\x6c\141\171\72\40\x66\154\145\170\x3b\xa\x20\40\40\x20\40\40\x20\40\40\x20\40\40\40\x20\40\40\x20\x20\x20\x20\x20\40\x20\40\x66\154\x65\170\72\40\60\x20\x31\40\141\x75\164\157\73\12\40\40\40\40\x20\x20\40\40\40\x20\x20\40\x20\40\x20\x20\x20\x20\x20\40\x20\x20\40\40\167\150\151\164\145\55\x73\x70\141\x63\145\x3a\x20\x6e\157\167\162\x61\x70\73\12\40\x20\x20\40\40\40\x20\40\x20\x20\x20\40\x20\x20\40\40\40\40\40\x20\175\xa\x20\40\x20\x20\40\x20\40\x20\x20\x20\x20\40\40\x20\40\x20\40\40\40\40\x2e\x61\x6c\x65\x72\x74\x2d\x2d\154\x69\x63\145\x6e\163\x65\x20\56\141\x6c\145\162\x74\x5f\x5f\x61\143\164\x69\157\156\163\x3e\52\x2b\52\40\173\xa\40\40\40\40\40\40\40\x20\x20\x20\x20\40\40\x20\x20\x20\x20\x20\x20\x20\40\x20\x20\40\155\x61\162\147\x69\156\x2d\x6c\x65\146\x74\72\x20\61\x36\x70\170\x3b\xa\x20\40\x20\x20\40\40\x20\40\x20\40\40\x20\x20\x20\x20\40\x20\x20\x20\40\x7d\12\40\x20\40\40\x20\x20\x20\x20\x20\x20\40\40\40\x20\40\40\40\x20\x20\40\x2e\x61\x6c\145\162\x74\55\x2d\154\x69\x63\x65\156\x73\145\40\56\141\x6c\145\x72\x74\x5f\x5f\x61\x63\164\151\157\156\163\72\x6c\x61\163\x74\55\143\150\151\x6c\x64\x7b\xa\x20\40\x20\40\x20\40\x20\x20\x20\40\x20\x20\40\x20\x20\x20\40\x20\x20\40\x20\40\40\40\x6d\x61\x72\147\x69\156\x2d\x6c\x65\146\x74\x3a\40\x31\66\160\170\x3b\xa\x20\40\x20\x20\40\x20\40\x20\x20\40\40\x20\40\40\x20\x20\40\x20\40\x20\x7d\12\x20\x20\x20\x20\x20\x20\x20\x20\40\40\x20\x20\x20\40\40\x20\x20\40\40\40\56\141\154\145\162\164\x2d\x2d\x6c\151\143\145\156\163\x65\72\141\146\164\x65\162\x7b\xa\40\x20\x20\40\x20\x20\40\40\40\x20\x20\x20\x20\x20\40\x20\x20\40\40\40\40\40\40\40\160\x6f\163\x69\x74\x69\157\x6e\x3a\40\x61\x62\163\157\x6c\165\164\x65\73\12\x20\40\40\40\x20\x20\40\40\40\x20\40\40\40\x20\40\x20\40\40\x20\40\x20\40\x20\x20\164\x6f\x70\x3a\x20\55\x31\160\170\73\12\x20\x20\x20\40\x20\40\40\40\x20\x20\40\x20\40\x20\x20\40\x20\40\40\x20\40\x20\x20\x20\x62\x6f\x74\x74\157\x6d\x3a\40\x2d\x31\160\170\x3b\xa\x20\40\40\x20\40\x20\x20\40\x20\40\40\40\40\40\40\40\40\x20\40\x20\x20\x20\x20\40\154\145\x66\164\72\x20\x2d\61\x70\170\x3b\12\x20\x20\40\40\40\40\40\40\x20\x20\40\40\x20\x20\40\x20\40\x20\x20\x20\40\40\40\40\143\x6f\x6e\164\x65\156\x74\72\40\x22\x22\73\xa\x20\40\x20\40\40\x20\x20\x20\40\40\40\x20\40\40\40\40\x20\x20\40\40\x20\x20\x20\x20\142\x6f\x72\144\x65\x72\55\x72\x61\144\151\165\163\72\40\x33\x70\x78\x20\60\x20\x30\x20\x33\160\170\73\xa\40\40\40\x20\x20\x20\x20\x20\40\x20\40\x20\40\x20\40\x20\40\40\x20\40\40\x20\40\40\x62\x6f\x72\144\x65\162\x2d\154\145\x66\164\x3a\x20\x34\x70\170\40\163\x6f\x6c\151\144\x3b\xa\40\x20\x20\x20\40\40\x20\40\40\40\40\40\x20\40\x20\x20\x20\40\40\x20\175\12\x20\x20\40\40\x20\x20\40\x20\x20\40\x20\40\x20\x20\40\40\x20\40\40\40\x2e\x77\151\144\147\x65\164\55\163\145\164\x74\x69\x6e\x67\163\x7b\12\x20\40\40\40\40\x20\x20\40\40\40\40\x20\x20\40\x20\x20\40\x20\40\x20\40\x20\x20\x20\155\141\x72\x67\x69\156\55\x74\157\x70\72\40\55\62\70\160\170\x3b\12\x20\40\40\40\40\x20\40\x20\40\x20\40\x20\40\x20\40\x20\40\40\x20\40\x7d\12\x20\40\40\x20\x20\x20\40\x20\x20\x20\x20\40\x20\x20\40\x20\x3c\x2f\163\x74\x79\154\x65\x3e"; } } return $html; } public function hasProblem() { if (isset($this->licenseDetails["\x77\141\162\x6e\x69\156\147\123\x68\x6f\167\x44\141\x74\x65"]) && strlen($this->licenseDetails["\167\x61\162\x6e\151\156\147\123\x68\157\167\x44\141\164\x65"]) && $this->licenseDetails["\167\141\162\156\151\x6e\x67\123\150\x6f\x77\104\x61\164\145"] <= date("\131\55\155\x2d\144")) { return true; } return false; } public function getProblem() { if (isset($this->licenseDetails["\167\x61\x72\x6e\151\x6e\x67\123\150\x6f\x77\x44\x61\x74\x65"]) && strlen($this->licenseDetails["\x77\x61\162\x6e\x69\156\x67\x53\150\157\167\x44\141\164\x65"]) && $this->licenseDetails["\167\x61\x72\156\151\x6e\x67\123\150\x6f\x77\104\x61\x74\x65"] <= date("\x59\x2d\x6d\x2d\144")) { return $this->getMessagePart("\167\141\162\x6e\151\x6e\x67\163\x2e\70", 0); } return ''; } public function hasInputError() { if (strlen($this->licenseKey) <= 0 || $this->licenseDetails["\x6c\x69\x63\x65\156\163\x65\x5f\163\x74\x61\x74\x75\x73"] == '') { return true; } return false; } public function getInputError() { if (strlen($this->licenseKey) <= 0 || $this->licenseDetails["\x6c\x69\x63\x65\x6e\163\x65\137\x73\164\x61\x74\x75\x73"] == '') { return \RSThemes\Helpers\Messages::get("\155\x65\163\163\x61\147\145\163\x2e\x31"); } } public function getAddonMessages() { $html = ''; if (0 < strlen($this->licenseDetails["\x6e\145\x78\164\144\165\145\x64\x61\164\x65"]) && $this->licenseDetails["\x6e\x65\170\164\144\x75\145\144\141\164\145"] != "\x30\x30\x30\60\x2d\60\60\x2d\60\x30") { $dueDateDiff = \Carbon\Carbon::today()->diffInDays(\Carbon\Carbon::parse($this->licenseDetails["\156\x65\x78\x74\x64\165\145\144\x61\x74\x65"]), false); $notShow = false; if (isset($_COOKIE["\x6c\x69\x63\x65\x6e\163\x65\x65\170\160"]) && ($_COOKIE["\154\151\143\x65\x6e\x73\145\x65\170\x70"] == "\x34\x65\x76\x65\x72" || $_COOKIE["\x6c\151\x63\145\x6e\x73\145\x65\x78\x70"] == "\x31" && 2 < $dueDateDiff)) { $notShow = true; } if (0 <= $dueDateDiff && $dueDateDiff <= 30 && !$notShow) { $html .= "\x3c\144\151\x76\x20\x63\154\141\163\x73\75\42\x61\154\145\x72\164\40\x61\x6c\x65\162\x74\55\x2d\151\x6e\x66\157\40\x61\x6c\x65\162\x74\55\x2d\x6f\x75\164\154\x69\156\145\40\x68\x61\x73\55\x69\x63\157\x6e\x20\141\154\x65\162\x74\x2d\55\142\157\162\144\145\162\x2d\154\x65\x66\164\x20\141\154\145\162\164\55\x2d\154\x69\143\x65\x6e\163\x65\x22\40\x64\x61\x74\141\x2d\144\141\x79\x73\x54\157\x45\x78\x70\75\x22" . $dueDateDiff . "\x22\76\74\144\151\x76\40\x63\x6c\141\163\x73\x3d\x22\x61\154\x65\x72\x74\x5f\x5f\x62\x6f\x64\x79\x22\x3e"; if ($dueDateDiff == 0) { $html .= str_replace("\45\144\x61\171\x73\x25", $dueDateDiff, \RSThemes\Helpers\Messages::get("\x77\x61\x72\x6e\151\156\147\163\x2e\x36")); } else { $html .= str_replace("\45\x64\x61\x79\x73\45", $dueDateDiff, \RSThemes\Helpers\Messages::get("\x77\x61\162\156\151\x6e\147\163\56\65")); } $html .= "\74\x64\x69\166\40\143\x6c\141\163\163\x3d\42\x66\x6f\x72\155\55\143\150\145\x63\153\x22\76\x3c\x6c\x61\x62\145\154\x20\143\154\x61\163\x73\x3d\x22\155\x2d\x62\x2d\x30\170\40\155\55\164\x2d\61\170\x22\76\74\x69\156\x70\165\164\x20\164\171\x70\145\75\42\143\150\145\143\153\x62\157\x78\42\x20\x6e\x61\155\x65\75\42\x6e\x6f\x74\163\x68\x6f\x77\x22\40\x64\141\x74\141\55\x64\157\156\164\55\163\x68\157\x77\40\143\154\x61\163\x73\75\x22\146\157\162\155\x2d\x63\150\145\143\x6b\142\x6f\170\x22\76\x3c\x73\160\141\156\x20\143\x6c\141\x73\163\x3d\x22\x66\157\x72\155\55\151\x6e\x64\151\x63\x61\164\x6f\162\42\x3e\74\x2f\163\x70\x61\156\x3e\x3c\163\x70\141\x6e\40\143\154\141\163\x73\75\42\x66\x6f\x72\x6d\55\x74\x65\x78\x74\x22\76\104\x6f\x20\x6e\x6f\164\40\163\x68\x6f\x77\x20\x61\x67\141\151\x6e\74\57\x73\x70\141\x6e\x3e\x3c\57\154\141\x62\145\x6c\x3e\74\57\x64\151\166\x3e"; $html .= "\74\57\144\151\x76\x3e\x3c\x64\151\166\x20\143\x6c\141\163\x73\75\42\x61\154\x65\162\x74\137\x5f\141\143\164\151\157\x6e\163\x22\76\12\40\x20\x20\40\40\x20\40\x20\x20\x20\x20\x20\40\40\x20\x20\40\40\x20\x20\40\x20\x20\40\x20\x20\40\x20\x3c\141\40\143\x6c\141\x73\x73\x3d\42\142\164\x6e\x20\x62\x74\x6e\x2d\x2d\144\145\146\141\x75\x6c\164\x20\142\x74\x6e\x2d\55\157\x75\x74\154\x69\x6e\145\x20\142\x74\156\x2d\x2d\163\x6d\x22\x20\150\162\x65\x66\x3d\x22\x68\x74\164\160\x73\x3a\x2f\57\162\163\x73\x74\165\144\151\x6f\x2e\156\145\164\57\x6d\x79\55\141\143\x63\x6f\x75\x6e\164\x2f\42\x20\x74\x61\x72\x67\145\164\x3d\42\137\x62\x6c\x61\156\x6b\x22\x3e\120\x61\x79\40\x4e\x6f\x77\74\57\x61\76\xa\x20\40\x20\x20\40\40\x20\x20\40\x20\x20\40\40\40\x20\x20\40\x20\x20\40\40\x20\x20\x20\40\40\x20\x20\x3c\x62\165\x74\164\x6f\156\x20\143\x6c\x61\x73\x73\75\42\142\x74\156\x20\142\x74\x6e\x2d\55\144\x65\146\x61\165\154\x74\x20\142\x74\156\x2d\x2d\157\x75\x74\x6c\151\156\x65\40\x62\x74\156\x2d\x2d\163\x6d\42\x20\144\141\x74\x61\x2d\x64\151\x73\155\x69\163\163\x3d\x22\141\x6c\145\x72\164\x22\40\x61\x72\x69\141\55\x6c\141\x62\145\154\x3d\42\103\154\157\163\x65\x22\40\164\171\x70\x65\75\x22\x62\x75\164\x74\157\x6e\x22\x3e\104\x69\163\155\151\x73\163\x3c\x2f\x62\x75\164\164\x6f\x6e\76\12\40\40\40\40\x20\x20\40\x20\40\x20\40\x20\x20\40\x20\x20\40\40\x20\40\40\x20\x20\x20\74\x2f\144\151\x76\76"; $html .= "\x3c\x2f\x64\151\x76\x3e"; } } if (isset($this->licenseDetails["\167\x61\x72\x6e\x69\156\147\x53\150\x6f\167\104\141\164\145"]) && strlen($this->licenseDetails["\167\141\162\156\x69\x6e\x67\x53\150\x6f\x77\x44\x61\x74\145"]) && $this->licenseDetails["\x77\x61\x72\x6e\151\156\147\123\150\157\167\104\x61\x74\145"] <= date("\131\x2d\x6d\x2d\144")) { $days = \Carbon\Carbon::today()->diffInDays(\Carbon\Carbon::parse($this->licenseDetails["\144\x65\141\x63\164\151\x76\x61\164\x69\x6f\x6e\104\x61\x74\145"]), false); $html .= "\74\144\x69\166\x20\x63\154\141\x73\x73\75\x22\x61\x6c\x65\x72\x74\40\141\154\145\162\x74\x2d\x2d\x64\x61\156\147\145\162\40\141\154\x65\x72\x74\55\55\157\x75\x74\154\151\x6e\145\x20\x68\141\163\55\x69\143\157\x6e\x20\141\154\x65\162\164\55\55\x62\x6f\162\x64\145\x72\55\154\145\146\164\x20\x61\x6c\x65\162\164\x2d\55\x6c\x69\143\x65\x6e\x73\x65\x22\x3e\74\x64\x69\x76\40\143\x6c\x61\163\x73\x3d\x22\x61\x6c\x65\162\x74\x5f\x5f\x62\x6f\144\171\42\x3e"; $html .= str_replace("\45\144\141\x79\x73\45", $days, \RSThemes\Helpers\Messages::get("\x77\x61\162\156\x69\156\147\x73\56\71")); $html .= "\x3c\x2f\x64\151\166\x3e\x3c\144\151\x76\x20\x63\x6c\141\x73\163\x3d\42\x61\154\145\162\x74\x5f\x5f\141\x63\164\x69\x6f\156\x73\x22\x3e\12\40\40\x20\x20\x20\40\x20\x20\40\x20\40\40\40\x20\x20\x20\74\x61\40\143\154\x61\163\x73\x3d\42\x62\164\156\x20\142\x74\156\55\x2d\144\x65\x66\x61\165\x6c\164\x20\x62\x74\156\x2d\x2d\x6f\165\x74\154\x69\x6e\x65\40\x62\x74\x6e\x2d\x2d\x73\x6d\42\x20\x68\162\145\146\75\x22\150\164\x74\160\x73\x3a\57\x2f\x72\x73\x73\x74\165\x64\x69\157\56\156\x65\x74\57\x6d\x79\x2d\x61\143\x63\x6f\x75\x6e\x74\x2f\163\165\142\155\x69\x74\164\x69\x63\153\145\x74\x2e\x70\x68\160\x3f\163\x74\145\160\75\x32\x26\x64\145\x70\x74\x69\x64\x3d\67\42\40\x74\141\x72\147\x65\164\x3d\42\137\x62\x6c\x61\x6e\x6b\x22\76\x43\x6f\x6e\164\x61\x63\164\40\125\163\x3c\x2f\141\x3e\xa\x20\40\x20\40\x20\x20\40\40\40\x20\x20\x20\40\x20\40\x20\74\x2f\x64\x69\x76\76"; $html .= "\x3c\x2f\x64\x69\166\76"; } if (0 < strlen($this->licenseWarningMessage)) { $html .= "\74\144\x69\166\40\143\x6c\141\163\163\75\x22\141\x6c\x65\x72\x74\40\141\154\x65\162\x74\x2d\x2d\144\141\156\147\145\x72\x20\x61\x6c\145\162\164\55\x2d\x6f\165\x74\x6c\151\156\x65\x20\150\141\x73\55\x69\143\157\x6e\40\x61\x6c\x65\x72\164\x2d\55\142\x6f\162\144\x65\162\x2d\x6c\145\x66\164\x20\x61\154\145\x72\x74\55\x2d\154\x69\x63\145\156\163\145\42\76\74\x64\x69\166\40\x63\154\141\163\x73\x3d\42\x61\154\145\162\x74\137\137\x62\157\144\x79\42\x3e"; $html .= $this->licenseWarningMessage; $html .= "\74\57\144\151\166\76\74\x64\x69\x76\x20\x63\x6c\x61\x73\x73\x3d\x22\141\154\145\x72\x74\137\137\x61\143\x74\x69\157\156\163\42\x3e\xa\40\x20\x20\40\40\40\x20\40\x20\x20\40\x20\x20\x20\x20\40\74\x61\x20\x63\x6c\141\163\163\75\x22\142\x74\x6e\40\142\164\156\55\x2d\x64\145\146\141\x75\x6c\x74\x20\142\164\x6e\x2d\55\x6f\x75\164\x6c\x69\156\145\x20\x62\164\156\x2d\55\163\x6d\x22\40\150\x72\x65\146\x3d\x22\150\164\x74\x70\x73\x3a\57\57\x72\163\x73\x74\165\x64\x69\x6f\56\x6e\x65\164\57\x6d\x79\55\x61\143\x63\157\165\156\x74\57\163\165\142\155\151\164\164\151\143\x6b\x65\x74\56\160\x68\x70\77\x73\x74\x65\x70\x3d\62\x26\144\145\160\164\x69\x64\x3d\x37\x22\x20\164\141\162\147\145\164\75\42\x5f\x62\x6c\141\x6e\153\42\x3e\x43\157\x6e\164\x61\143\164\x20\125\163\74\x2f\141\76\xa\40\x20\x20\x20\40\x20\40\40\x20\40\40\40\40\x20\x20\40\x3c\57\144\x69\166\x3e"; $html .= "\x3c\57\x64\x69\x76\x3e"; } return $html; } private static function checkLogFile() { $path = RSTHEMES_DIR . DS . "\x6c\157\147\163\x2e\160\x68\x70"; if (!is_writable(RSTHEMES_DIR)) { return false; } if (!file_exists($path)) { try { file_put_contents($path, "\x3c\77\x70\x68\x70\x20\150\x74\x74\160\137\162\x65\x73\160\x6f\x6e\163\x65\137\143\x6f\x64\145\x28\64\x30\64\51\x3b\x65\x78\x69\164\x3b\x20\77\x3e\134\x6e\103\x72\145\x61\164\x65\40\154\157\147\163\40\x66\151\154\145\x21\40" . date("\x59\x2d\155\55\144\x20\150\x3a\151\72\x73") . PHP_EOL); if (!file_exists($path)) { return false; } } catch (\Exception $exception) { return false; } } if (!is_writable($path)) { return false; } return $path; } public function getAllowedExtensions() { if ($this->licenseDetails["\x73\x65\162\166\x69\x63\145\137\x73\x74\141\164\165\x73"] == "\101\x63\164\151\x76\x65") { $details = $this->reloadRemote(); } return $details["\x65\170\x74\x65\x6e\x73\151\x6f\x6e\163"] ? explode("\x2c", trim($details["\x65\170\164\x65\156\163\151\x6f\156\x73"])) : array(); } private function syncExtensions($details) { $toSkip = array("\x4d\x6f\144\x75\154\x65\163\40\111\x6e\164\145\x67\162\141\x74\151\157\x6e\x73"); if ($details["\154\151\143\145\x6e\x73\145\x5f\x73\x74\x61\164\x75\163"] != "\101\143\164\151\x76\x65") { return NULL; } $allowedExtensions = $details["\x65\x78\x74\x65\156\x73\151\157\156\163"] ? explode("\x2c", trim($details["\145\x78\x74\145\156\x73\x69\x6f\x6e\x73"])) : array(); foreach ($this->template->getExtensions() as $extension) { if (!in_array($extension->name, $toSkip)) { if (method_exists($extension, "\x63\x68\x65\143\153\114\x69\x63\145\156\x73\145") && !in_array($extension->name, $allowedExtensions) && $extension->isActive()) { $extension->licenseRemoveConfig(); } } } } } ?>
Function Calls
None |
Stats
MD5 | b7968e4a07bec50541ddbb6d2924dc98 |
Eval Count | 0 |
Decode Time | 100 ms |