diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..2c31b08d --- /dev/null +++ b/.env.example @@ -0,0 +1,23 @@ +# Basic Settings +# Panel operation mode. (dev or prod) +RUN_MODE="prod" +# Site protocol http:// or https:// +APP_PROTOCOL="http://" +# The URL of the site +APP_URL="example.com" +# The name of the site +APP_NAME="EngineGP" +# Site Description +APP_DESCRIPTION="EngineGP" + +# Database Connection Settings +DB_HOST="127.0.0.1" +DB_DATABASE="enginegp_db" +DB_USERNAME="enginegp_usr" +DB_PASSWORD="enginegp_pwd" + +# Settings of the "Control" service +# The IP address of the site +APP_IP="192.168.1.1" +# Site subnet +APP_SUBNET="192.168.1.0/24" \ No newline at end of file diff --git a/.gitignore b/.gitignore index a81f8f99..4cf16e14 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .idea .vscode +.env +vendor composer.phar \ No newline at end of file diff --git a/.htaccess b/.htaccess index 48253f32..98a01f9f 100644 --- a/.htaccess +++ b/.htaccess @@ -16,22 +16,14 @@ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^(?!acp).* index.php [L] + + Order allow,deny + Deny from all + + ErrorDocument 403 /403.html ErrorDocument 404 /404.html -#***Раскодировать, если не загружаются большие файлы: -php_value max_execution_time 500 -php_value max_input_time 500 -php_value upload_max_filesize 30M -php_value post_max_size 30M - -#***Раскодировать, если белый экран: -#php_flag short_open_tag = On - -php_flag display_startup_errors on -php_flag display_errors on -php_flag html_errors on - ExpiresActive On diff --git a/LICENSE b/LICENSE index 441419f2..95ae030f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2018-2023 Sergei Solovev and contributors +Copyright (c) 2018-present Solovev Sergei Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/acp/index.php b/acp/index.php index a3928501..c35c777f 100644 --- a/acp/index.php +++ b/acp/index.php @@ -1,11 +1,29 @@ install composer and run composer install'); +} +require('../vendor/autoload.php'); + +// Загружаем .env +$dotenv = new Symfony\Component\Dotenv\Dotenv(); +$dotenv->load('../.env'); + +if ($_ENV['RUN_MODE'] === 'dev') { + // Включение отображения ошибок в режиме разработки + ini_set('display_errors', TRUE); + ini_set('html_errors', TRUE); + ini_set('error_reporting', E_ALL); +} else { + // Отключение отображения ошибок в продакшене + ini_set('display_errors', FALSE); + ini_set('html_errors', FALSE); + ini_set('error_reporting', 0); +} DEFINE('EGP', TRUE); DEFINE('ROOT', '../'); @@ -24,12 +42,6 @@ $mcache = new Memcache; $mcache->connect('127.0.0.1', 11211) or exit('Ошибка подключения Memcache'); -// Composer -if (!file_exists(ROOT . 'vendor/autoload.php')) { - die('Please install composer and run composer install'); -} -require(ROOT . 'vendor/autoload.php'); - // Настройки include(DATA . 'config.php'); include(DATA . 'mysql.php'); @@ -48,4 +60,3 @@ // Выхлоп echo $html->arr['all']; -?> \ No newline at end of file diff --git a/composer.json b/composer.json index fae15eba..518f1110 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,7 @@ { "require": { "symfony/polyfill": "1.28.0", + "symfony/dotenv": "5.4.35", "filp/whoops": "2.15.4", "monolog/monolog": "2.9.2", "xpaw/php-source-query-class": "2.1.0", diff --git a/composer.lock b/composer.lock index 3f9353aa..72105c78 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9fe541d20000bad8bcc7a6f093bd89a1", + "content-hash": "06f4af2d7e9531adb777efd893131ba8", "packages": [ { "name": "filp/whoops", @@ -229,6 +229,144 @@ }, "time": "2021-05-03T11:20:27+00:00" }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/dotenv", + "version": "v5.4.35", + "source": { + "type": "git", + "url": "https://github.com/symfony/dotenv.git", + "reference": "4de488440104b99d2e7c0717ee432e760b061e32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/4de488440104b99d2e7c0717ee432e760b061e32", + "reference": "4de488440104b99d2e7c0717ee432e760b061e32", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "require-dev": { + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Dotenv\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Registers environment variables from a .env file", + "homepage": "https://symfony.com", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "source": "https://github.com/symfony/dotenv/tree/v5.4.35" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-23T13:51:25+00:00" + }, { "name": "symfony/polyfill", "version": "v1.28.0", @@ -478,5 +616,5 @@ "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/cron.php b/cron.php index 80466af7..f5e708a7 100644 --- a/cron.php +++ b/cron.php @@ -1,9 +1,27 @@ load(__DIR__ . '/.env'); + +if ($_ENV['RUN_MODE'] === 'dev') { + // Включение отображения ошибок в режиме разработки + ini_set('display_errors', TRUE); + ini_set('html_errors', TRUE); + ini_set('error_reporting', E_ALL); +} else { + // Отключение отображения ошибок в продакшене + ini_set('display_errors', FALSE); + ini_set('html_errors', FALSE); + ini_set('error_reporting', 0); +} DEFINE('EGP', TRUE); DEFINE('DIR', dirname('index.php')); @@ -21,14 +39,14 @@ $start_point = $_SERVER['REQUEST_TIME']; $mcache = new Memcache; -$mcache->connect('127.0.0.1', 11211) or exit('Ошибка: не удалось создать связь с Memcache.' . PHP_EOL); +$mcache->connect('127.0.0.1', 11211) or exit('Ошибка подключения Memcache.' . PHP_EOL); // Настройки include(DATA . 'config.php'); -/*if($argv[1] != $cfg['cron_key']) - exit('error key.'.PHP_EOL); -*/ +// Проверка ключа и указания параметра +if($argv[1] != $cfg['cron_key']) + exit('Invalid cron key' . PHP_EOL); $task = $argv[2]; include(DATA . 'engine.php'); @@ -40,4 +58,3 @@ include(LIB . 'html.php'); include(LIB . 'system.php'); include(LIB . 'cron.php'); -?> \ No newline at end of file diff --git a/enginegp.sql b/enginegp.sql index 6f549814..337faa4c 100644 --- a/enginegp.sql +++ b/enginegp.sql @@ -279,19 +279,6 @@ CREATE TABLE `cashback` ( -- -------------------------------------------------------- --- --- Структура таблицы `chat` --- - -CREATE TABLE `chat` ( - `id` int(11) NOT NULL, - `userid` int(11) NOT NULL, - `date` datetime NOT NULL, - `msg` text NOT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - -- -- Структура таблицы `control` -- @@ -689,36 +676,6 @@ CREATE TABLE `help_upload` ( -- -------------------------------------------------------- --- --- Структура таблицы `jobs` --- - -CREATE TABLE `jobs` ( - `id` int(11) NOT NULL, - `name` varchar(500) NOT NULL, - `job` varchar(150) NOT NULL, - `desc` text NOT NULL, - `status` int(11) NOT NULL, - `date` int(11) NOT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - --- --- Структура таблицы `jobs_app` --- - -CREATE TABLE `jobs_app` ( - `id` int(11) NOT NULL, - `user` int(11) NOT NULL, - `text` text NOT NULL, - `contact` varchar(100) NOT NULL, - `job` int(11) NOT NULL, - `date` int(11) NOT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - --- -------------------------------------------------------- - -- -- Структура таблицы `logs` -- @@ -1330,7 +1287,7 @@ CREATE TABLE `units` ( CREATE TABLE `users` ( `id` int(11) NOT NULL, `login` char(15) NOT NULL, - `passwd` char(32) NOT NULL, + `passwd` char(60) NOT NULL, `name` char(32) NOT NULL, `lastname` char(32) NOT NULL, `patronymic` char(32) NOT NULL, @@ -1533,12 +1490,6 @@ ALTER TABLE `boost_rating` ALTER TABLE `cashback` ADD PRIMARY KEY (`id`); --- --- Индексы таблицы `chat` --- -ALTER TABLE `chat` - ADD PRIMARY KEY (`id`); - -- -- Индексы таблицы `control` -- @@ -1671,18 +1622,6 @@ ALTER TABLE `help_dialogs` ALTER TABLE `help_upload` ADD PRIMARY KEY (`id`); --- --- Индексы таблицы `jobs` --- -ALTER TABLE `jobs` - ADD PRIMARY KEY (`id`); - --- --- Индексы таблицы `jobs_app` --- -ALTER TABLE `jobs_app` - ADD PRIMARY KEY (`id`); - -- -- Индексы таблицы `logs` -- @@ -1995,11 +1934,6 @@ ALTER TABLE `boost_rating` ALTER TABLE `cashback` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; -- --- AUTO_INCREMENT для таблицы `chat` --- -ALTER TABLE `chat` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; --- -- AUTO_INCREMENT для таблицы `control` -- ALTER TABLE `control` @@ -2090,16 +2024,6 @@ ALTER TABLE `help_dialogs` ALTER TABLE `help_upload` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; -- --- AUTO_INCREMENT для таблицы `jobs` --- -ALTER TABLE `jobs` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; --- --- AUTO_INCREMENT для таблицы `jobs_app` --- -ALTER TABLE `jobs_app` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; --- -- AUTO_INCREMENT для таблицы `logs` -- ALTER TABLE `logs` diff --git a/index.php b/index.php index 155ba1d1..6d223f9f 100644 --- a/index.php +++ b/index.php @@ -1,12 +1,29 @@ install composer and run composer install'); +} +require(__DIR__ . '/vendor/autoload.php'); + +// Загружаем .env +$dotenv = new Symfony\Component\Dotenv\Dotenv(); +$dotenv->load(__DIR__ . '/.env'); + +if ($_ENV['RUN_MODE'] === 'dev') { + // Включение отображения ошибок в режиме разработки + ini_set('display_errors', TRUE); + ini_set('html_errors', TRUE); + ini_set('error_reporting', E_ALL); +} else { + // Отключение отображения ошибок в продакшене + ini_set('display_errors', FALSE); + ini_set('html_errors', FALSE); + ini_set('error_reporting', 0); +} DEFINE('EGP', TRUE); DEFINE('DIR', dirname('index.php')); @@ -20,18 +37,11 @@ DEFINE('ENG', SYS . 'engine/'); DEFINE('SEC', SYS . 'sections/'); -$device = isset($_COOKIE['egp_device']) ? $_COOKIE['egp_device'] : '!mobile'; $start_point = $_SERVER['REQUEST_TIME']; $mcache = new Memcache; $mcache->connect('127.0.0.1', 11211) or exit('Ошибка подключения Memcache'); -// Composer -if (!file_exists(ROOT . 'vendor/autoload.php')) { - die('Please install composer and run composer install'); -} -require(ROOT . 'vendor/autoload.php'); - // Настройки include(DATA . 'config.php'); include(DATA . 'engine.php'); @@ -45,24 +55,8 @@ $uip = sys::ip(); -/* if(!isset($_COOKIE['egp_device'])) -{ - include(LIB.'megp.php'); - - $device = $megp->isMobile() ? 'mobile' : '!mobile'; - - sys::cookie('egp_device', $device, 14); - - if($device == 'mobile') - sys::back(); -} */ - // Распределитель -if ($device == '!mobile') - include(SYS . 'distributor.php'); -/* else - include(SYS.'mdistributor.php'); */ +include(SYS . 'distributor.php'); // Выхлоп echo $html->arr['all']; -?> \ No newline at end of file diff --git a/system/acp/distributor.php b/system/acp/distributor.php index a2b0d9f3..87ff8008 100644 --- a/system/acp/distributor.php +++ b/system/acp/distributor.php @@ -17,8 +17,6 @@ $loggingInFile->setLogger((new \Monolog\Logger('EngineGP', [(new \Monolog\Handler\StreamHandler(ROOT . '/logs/enginegp.log'))->setFormatter((new \Monolog\Formatter\LineFormatter(null, null, true)))]))); $whoops->pushHandler($loggingInFile); -$device = '!mobile'; - // Парсинг адреса $url = is_array(sys::url()) ? sys::url() : array(); $route = sys::url(false); @@ -29,30 +27,25 @@ $page = array_key_exists('page', $url) ? sys::int($url['page']) : 1; $route = $route == '' ? 'index' : $route; -$auth = false; - -// Проверка cookie на авторизацию -$aAuth = array(); +session_start(); -$aAuth['login'] = isset($_COOKIE['egp_login']) ? $_COOKIE['egp_login'] : ''; -$aAuth['passwd'] = isset($_COOKIE['egp_passwd']) ? $_COOKIE['egp_passwd'] : ''; -$aAuth['authkeycheck'] = isset($_COOKIE['egp_authkeycheck']) ? $_COOKIE['egp_authkeycheck'] : ''; +$auth = false; -$authkey = md5($aAuth['login'] . $uip . $aAuth['passwd']); +// Проверка сессии на авторизацию +if (isset($_SESSION['user_id'])) { + $userId = $_SESSION['user_id']; -if (!in_array('', $aAuth) and $authkey == $aAuth['authkeycheck']) { - if ((!sys::valid($aAuth['login'], 'other', $aValid['login'])) and !sys::valid($aAuth['passwd'], 'md5')) { - $sql->query('SELECT `id` FROM `users` WHERE `login`="' . $aAuth['login'] . '" AND `passwd`="' . $aAuth['passwd'] . '" AND `group`="admin" LIMIT 1'); - if ($sql->num()) { - $sql->query('SELECT `id`, `login`, `balance`, `group`, `time` FROM `users` WHERE `login`="' . $aAuth['login'] . '" AND `passwd`="' . $aAuth['passwd'] . '" LIMIT 1'); - $user = $sql->get(); + $sql->query('SELECT `id`, `login`, `balance`, `group`, `level`, `time` FROM `users` WHERE `id`="' . $userId . '" LIMIT 1'); + if ($sql->num()) { + $user = $sql->get(); - // Обновление активности - if ($user['time'] + 10 < $start_point) - $sql->query('UPDATE `users` set `time`="' . $start_point . '" WHERE `id`="' . $user['id'] . '" LIMIT 1'); + // Обновление активности + if ($user['time'] + 10 < $start_point) + $sql->query('UPDATE `users` set `time`="' . $start_point . '" WHERE `id`="' . $user['id'] . '" LIMIT 1'); + // Проверка принадлежности к группе admin + if ($user['group'] === "admin") $auth = true; - } } } @@ -139,4 +132,3 @@ $html->set('main', isset($html->arr['main']) ? $html->arr['main'] : '', true); $html->pack('all'); -?> \ No newline at end of file diff --git a/system/acp/engine/addons.php b/system/acp/engine/addons.php index 94af15e2..3cba8948 100644 --- a/system/acp/engine/addons.php +++ b/system/acp/engine/addons.php @@ -35,4 +35,3 @@ $html->pack('menu'); include(SEC . 'addons/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/boost.php b/system/acp/engine/boost.php index 77988342..d103ed3e 100644 --- a/system/acp/engine/boost.php +++ b/system/acp/engine/boost.php @@ -37,4 +37,3 @@ $inc = $section != 'index' ? 'service' : 'index'; include(SEC . 'boost/' . $inc . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/cashback.php b/system/acp/engine/cashback.php index bd7ad553..d7eb9ce2 100644 --- a/system/acp/engine/cashback.php +++ b/system/acp/engine/cashback.php @@ -2,9 +2,21 @@ if (!DEFINED('EGP')) exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404')); -@ini_set('display_errors', TRUE); -@ini_set('html_errors', TRUE); -@ini_set('error_reporting', E_ALL); +// Загружаем .env +$dotenv = new Symfony\Component\Dotenv\Dotenv(); +$dotenv->load(ROOT . '/.env'); + +if ($_ENV['RUN_MODE'] === 'dev') { + // Включение отображения ошибок в режиме разработки + ini_set('display_errors', TRUE); + ini_set('html_errors', TRUE); + ini_set('error_reporting', E_ALL); +} else { + // Отключение отображения ошибок в продакшене + ini_set('display_errors', FALSE); + ini_set('html_errors', FALSE); + ini_set('error_reporting', 0); +} $nmc = 'cashback_' . $id; @@ -55,4 +67,3 @@ } sys::outjs(array('e' => 'Не передан идентификатор заявки'), $nmc); -?> \ No newline at end of file diff --git a/system/acp/engine/control.php b/system/acp/engine/control.php index 459e5960..974e9383 100644 --- a/system/acp/engine/control.php +++ b/system/acp/engine/control.php @@ -2,7 +2,7 @@ if (!DEFINED('EGP')) exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404')); -$info = ' Контроль'; +$info = ' Контроль'; $aSection = array( 'index', @@ -34,4 +34,3 @@ $html->pack('menu'); include(SEC . 'control/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/hosting.php b/system/acp/engine/hosting.php index 1d190acc..4b94132d 100644 --- a/system/acp/engine/hosting.php +++ b/system/acp/engine/hosting.php @@ -6,4 +6,3 @@ $html->get('menu', 'sections/hosting'); $html->pack('menu'); -?> \ No newline at end of file diff --git a/system/acp/engine/index.php b/system/acp/engine/index.php index 8cc9bc8c..70f9c01c 100644 --- a/system/acp/engine/index.php +++ b/system/acp/engine/index.php @@ -84,4 +84,3 @@ $mcache->set($mcache_name, $html->arr['main'], false, 10); } else $html->arr['main'] = str_replace('[cashback]', $html->arr['cashback'], $html->arr['main']); -?> \ No newline at end of file diff --git a/system/acp/engine/jobs.php b/system/acp/engine/jobs.php deleted file mode 100644 index 7d40cde4..00000000 --- a/system/acp/engine/jobs.php +++ /dev/null @@ -1,32 +0,0 @@ - Вакансии'; - -$aSection = array( - 'index', - 'add', - 'request' -); - -if (!in_array($section, $aSection)) - $section = 'index'; - -$html->get('menu', 'sections/jobs'); - -$html->unit('s_' . $section, true); - -unset($aSection[array_search($section, $aSection)]); - -foreach ($aSection as $noactive) - $html->unit('s_' . $noactive); - -$sql->query('SELECT `id` FROM `jobs`'); -$html->set('jobs', $sql->num()); -$sql->query('SELECT `id` FROM `jobs_app`'); -$html->set('jobs_app', $sql->num()); -$html->pack('menu'); - -include(SEC . 'jobs/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/letter.php b/system/acp/engine/letter.php index 9440775d..681888c6 100644 --- a/system/acp/engine/letter.php +++ b/system/acp/engine/letter.php @@ -24,4 +24,3 @@ $html->pack('menu'); include(SEC . 'letter/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/logs.php b/system/acp/engine/logs.php index 7f088158..e470bb36 100644 --- a/system/acp/engine/logs.php +++ b/system/acp/engine/logs.php @@ -30,4 +30,3 @@ $html->pack('menu'); include(SEC . 'logs/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/news.php b/system/acp/engine/news.php index 3572f40d..037a12d4 100644 --- a/system/acp/engine/news.php +++ b/system/acp/engine/news.php @@ -2,7 +2,7 @@ if (!DEFINED('EGP')) exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404')); -$info = ' Управление новостями'; +$info = ' Управление новостями'; $aSection = array( 'index', @@ -28,4 +28,3 @@ $html->pack('menu'); include(SEC . 'news/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/notice.php b/system/acp/engine/notice.php index 79277a2b..69f464c0 100644 --- a/system/acp/engine/notice.php +++ b/system/acp/engine/notice.php @@ -29,4 +29,3 @@ $html->pack('menu'); include(SEC . 'notice/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/pages.php b/system/acp/engine/pages.php index 1630e0df..61b7c2ed 100644 --- a/system/acp/engine/pages.php +++ b/system/acp/engine/pages.php @@ -2,7 +2,7 @@ if (!DEFINED('EGP')) exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404')); -$info = ' Управление старницами'; +$info = ' Управление старницами'; $aSection = array( 'index', @@ -25,4 +25,3 @@ $html->pack('menu'); include(SEC . 'pages/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/promo.php b/system/acp/engine/promo.php index 3dcdc26e..cc25da12 100644 --- a/system/acp/engine/promo.php +++ b/system/acp/engine/promo.php @@ -33,4 +33,3 @@ $html->pack('menu'); include(SEC . 'promo/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/servers.php b/system/acp/engine/servers.php index 3d077748..bb6b4516 100644 --- a/system/acp/engine/servers.php +++ b/system/acp/engine/servers.php @@ -74,4 +74,3 @@ $html->pack('menu'); include(SEC . 'servers/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/system.php b/system/acp/engine/system.php index 953d4751..ca6c0271 100644 --- a/system/acp/engine/system.php +++ b/system/acp/engine/system.php @@ -52,4 +52,3 @@ $html->get('index', 'sections/system'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/engine/tarifs.php b/system/acp/engine/tarifs.php index 3bac8c0e..42663703 100644 --- a/system/acp/engine/tarifs.php +++ b/system/acp/engine/tarifs.php @@ -30,4 +30,3 @@ $html->pack('menu'); include(SEC . 'tarifs/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/units.php b/system/acp/engine/units.php index 2af8f96b..507f30d4 100644 --- a/system/acp/engine/units.php +++ b/system/acp/engine/units.php @@ -30,4 +30,3 @@ $html->pack('menu'); include(SEC . 'units/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/users.php b/system/acp/engine/users.php index 74db691c..de2ebc8e 100644 --- a/system/acp/engine/users.php +++ b/system/acp/engine/users.php @@ -41,4 +41,3 @@ $html->pack('menu'); include(SEC . 'users/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/web.php b/system/acp/engine/web.php index a9941ca4..42abcf39 100644 --- a/system/acp/engine/web.php +++ b/system/acp/engine/web.php @@ -59,4 +59,3 @@ $html->pack('menu'); include(SEC . 'web/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/engine/wiki.php b/system/acp/engine/wiki.php index 1c920967..48841116 100644 --- a/system/acp/engine/wiki.php +++ b/system/acp/engine/wiki.php @@ -28,4 +28,3 @@ $html->pack('menu'); include(SEC . 'wiki/' . $section . '.php'); -?> \ No newline at end of file diff --git a/system/acp/sections/addons/addcat.php b/system/acp/sections/addons/addcat.php index a4465a6a..5ecaa094 100644 --- a/system/acp/sections/addons/addcat.php +++ b/system/acp/sections/addons/addcat.php @@ -41,4 +41,3 @@ $html->get('addcat', 'sections/addons'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/addons/addpl.php b/system/acp/sections/addons/addpl.php index 14ac6740..895b9957 100644 --- a/system/acp/sections/addons/addpl.php +++ b/system/acp/sections/addons/addpl.php @@ -346,4 +346,3 @@ $html->get('addpl', 'sections/addons'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/addons/cats.php b/system/acp/sections/addons/cats.php index 2ab6601f..5f1e3e77 100644 --- a/system/acp/sections/addons/cats.php +++ b/system/acp/sections/addons/cats.php @@ -22,4 +22,3 @@ $html->set('list', $list); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/addons/delete.php b/system/acp/sections/addons/delete.php index 5379acfd..2ee36844 100644 --- a/system/acp/sections/addons/delete.php +++ b/system/acp/sections/addons/delete.php @@ -54,4 +54,3 @@ } sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/acp/sections/addons/index.php b/system/acp/sections/addons/index.php index 3a55198f..909e8446 100644 --- a/system/acp/sections/addons/index.php +++ b/system/acp/sections/addons/index.php @@ -63,4 +63,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/addons/plugin.php b/system/acp/sections/addons/plugin.php index b4ce4d39..ffed0065 100644 --- a/system/acp/sections/addons/plugin.php +++ b/system/acp/sections/addons/plugin.php @@ -318,4 +318,3 @@ $html->set('update', $update); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/addons/search.php b/system/acp/sections/addons/search.php index 576a7d51..d5016834 100644 --- a/system/acp/sections/addons/search.php +++ b/system/acp/sections/addons/search.php @@ -67,4 +67,3 @@ $mcache->set($mkey, array('s' => $list), false, 15); sys::outjs(array('s' => $list)); -?> \ No newline at end of file diff --git a/system/acp/sections/addons/update.php b/system/acp/sections/addons/update.php index ca97a6db..91a1b6ce 100644 --- a/system/acp/sections/addons/update.php +++ b/system/acp/sections/addons/update.php @@ -303,4 +303,3 @@ $html->set('files_delete_all', $files_delete_all); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/addons/updmp.php b/system/acp/sections/addons/updmp.php index 1c8fb890..7d6cadf4 100644 --- a/system/acp/sections/addons/updmp.php +++ b/system/acp/sections/addons/updmp.php @@ -72,4 +72,3 @@ $html->set('units', $units); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/boost/index.php b/system/acp/sections/boost/index.php index 15093d71..977f37ba 100644 --- a/system/acp/sections/boost/index.php +++ b/system/acp/sections/boost/index.php @@ -76,4 +76,3 @@ $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/boost/search.php b/system/acp/sections/boost/search.php index f0fdbc1b..8717f59d 100644 --- a/system/acp/sections/boost/search.php +++ b/system/acp/sections/boost/search.php @@ -68,4 +68,3 @@ $mcache->set($mkey, array('s' => $list), false, 15); sys::outjs(array('s' => $list)); -?> \ No newline at end of file diff --git a/system/acp/sections/boost/service.php b/system/acp/sections/boost/service.php index cd1e370e..9fd15369 100644 --- a/system/acp/sections/boost/service.php +++ b/system/acp/sections/boost/service.php @@ -76,4 +76,3 @@ $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/control/delete.php b/system/acp/sections/control/delete.php index 38daf315..a552c6e7 100644 --- a/system/acp/sections/control/delete.php +++ b/system/acp/sections/control/delete.php @@ -5,4 +5,3 @@ $sql->query('UPDATE `control` set `user`="-1", `status`="overdue", `time`="0", `overdue`="0" WHERE `id`="' . $id . '" LIMIT 1'); sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/acp/sections/control/index.php b/system/acp/sections/control/index.php index f8b58b02..e67f63a8 100644 --- a/system/acp/sections/control/index.php +++ b/system/acp/sections/control/index.php @@ -50,4 +50,3 @@ $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/control/overdue.php b/system/acp/sections/control/overdue.php index 077d6229..65b64429 100644 --- a/system/acp/sections/control/overdue.php +++ b/system/acp/sections/control/overdue.php @@ -31,4 +31,3 @@ $html->set('pages', ''); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/control/search.php b/system/acp/sections/control/search.php index d45c2c65..875a71e3 100644 --- a/system/acp/sections/control/search.php +++ b/system/acp/sections/control/search.php @@ -94,4 +94,3 @@ $mcache->set($mkey, array('s' => $list), false, 15); sys::outjs(array('s' => $list)); -?> \ No newline at end of file diff --git a/system/acp/sections/control/server.php b/system/acp/sections/control/server.php index 49190714..c410b470 100644 --- a/system/acp/sections/control/server.php +++ b/system/acp/sections/control/server.php @@ -101,4 +101,3 @@ $html->set('block', $ctrl['block'] == 0 ? 'Заблокировать' : date('d/m/Y H:i', $ctrl['block'])); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/jobs/add.php b/system/acp/sections/jobs/add.php deleted file mode 100644 index 0f3686ee..00000000 --- a/system/acp/sections/jobs/add.php +++ /dev/null @@ -1,27 +0,0 @@ - 'Необходимо заполнить все поля!')); - - $sql->query('INSERT INTO `jobs` set' - . '`name`="' . $aData['name'] . '",' - . '`job`="' . $aData['job'] . '",' - . '`desc`="' . $aData['desc'] . '",' - . '`status`="' . $aData['status'] . '",' - . '`date`="' . $start_point . '"'); - - sys::outjs(array('s' => 'ok')); -} - -$html->get('add', 'sections/jobs'); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/jobs/edit.php b/system/acp/sections/jobs/edit.php deleted file mode 100644 index d7b474ab..00000000 --- a/system/acp/sections/jobs/edit.php +++ /dev/null @@ -1,38 +0,0 @@ -query('SELECT * FROM `jobs` WHERE `id`="' . $id . '" LIMIT 1'); -if (!$sql->num()) - header('Location: ' . $cfg['http'] . 'acp/jobs'); -$jobs = $sql->get(); - -if ($go) { - $aData = []; - - $data = ['name', 'job', 'desc', 'status']; - foreach ($data as $idata) - $aData[$idata] = isset($_POST[$idata]) ? $_POST[$idata] : ''; - - if (in_array('', $aData)) - sys::outjs(array('e' => 'Необходимо заполнить все поля!')); - - $sql->query('UPDATE `jobs` set' - . '`name`="' . $aData['name'] . '",' - . '`job`="' . $aData['job'] . '",' - . '`desc`="' . $aData['desc'] . '",' - . '`status`="' . $aData['status'] . '",' - . '`date`="' . $start_point . '"'); - - sys::outjs(array('s' => 'ok')); -} - -$html->get('edit', 'sections/jobs'); -$status = $jobs['status'] ? '' : ''; -$html->set('status', $status); - -$data = ['id', 'name', 'job', 'desc']; -foreach ($data as $idata) - $html->set($idata, $jobs[$idata]); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/jobs/index.php b/system/acp/sections/jobs/index.php deleted file mode 100644 index 6056dea6..00000000 --- a/system/acp/sections/jobs/index.php +++ /dev/null @@ -1,36 +0,0 @@ -query('SELECT * FROM `jobs` ORDER BY `id` ASC'); - while ($jobs = $sql->get()) { - $status = [ - '1' => 'Доступна', - '0' => 'Недоступна' - ]; - - $list .= ''; - $list .= '' . $jobs['id'] . ''; - $list .= '' . $jobs['name'] . ''; - $list .= '' . $jobs['job'] . ''; - $list .= '' . $jobs['desc'] . ''; - $list .= '' . $status[$jobs['status']] . ''; - $list .= '' . sys::today($jobs['date']) . ''; - $list .= '
удалить
'; - $list .= 'Изменить'; - $list .= ''; - } - - if (isset($url['del'])) { - $sql->query('DELETE FROM `jobs` WHERE `id`="' . $url['del'] . '" LIMIT 1'); - sys::outjs(array('s' => 'ok')); - } - - $html->get('index', 'sections/jobs'); - $html->set('list', $list); - $html->pack('main'); -} -?> \ No newline at end of file diff --git a/system/acp/sections/jobs/request.php b/system/acp/sections/jobs/request.php deleted file mode 100644 index af5f1fd0..00000000 --- a/system/acp/sections/jobs/request.php +++ /dev/null @@ -1,60 +0,0 @@ -query('SELECT * FROM `jobs_app` WHERE `id`="' . $id . '" LIMIT 1'); - $jobs_app = $sql->get(); - - if ($go) { - $aData = []; - - $data = ['user', 'text', 'contact', 'job']; - foreach ($data as $idata) - $aData[$idata] = isset($_POST[$idata]) ? $_POST[$idata] : ''; - - $sql->query('UPDATE `jobs_app` set' - . '`user`="' . $aData['user'] . '",' - . '`text`="' . $aData['text'] . '",' - . '`contact`="' . $aData['contact'] . '",' - . '`job`="' . $aData['job'] . '"'); - - sys::outjs(array('s' => 'ok')); - } - - $html->get('request_edit', 'sections/jobs'); - $data = ['id', 'user', 'text', 'contact', 'job']; - foreach ($data as $idata) - $html->set($idata, $jobs_app[$idata]); - $html->pack('main'); -} else { - $sql->query('SELECT * FROM `jobs_app` ORDER BY `id` ASC'); - while ($jobs = $sql->get()) { - $status = [ - '1' => 'Доступна', - '0' => 'Недоступна' - ]; - - $list .= ''; - $list .= '' . $jobs['id'] . ''; - $list .= 'user_' . $jobs['user'] . ''; - $list .= '' . sys::strlen($jobs['text']) > 0 ? '' . $jobs['text'] . '' : 'Ответить' . ''; - $list .= '' . $jobs['contact'] . ''; - $list .= 'job_' . $jobs['job'] . ''; - $list .= '' . sys::today($jobs['date']) . ''; - $list .= '
удалить
'; - $list .= 'Изменить'; - $list .= ''; - - if (isset($url['del'])) { - $sql->query('DELETE FROM `jobs_app` WHERE `id`="' . $url['del'] . '" LIMIT 1'); - sys::outjs(array('s' => 'ok')); - - } - } - - $html->get('request', 'sections/jobs'); - $html->set('list', $list); - $html->pack('main'); -} -?> \ No newline at end of file diff --git a/system/acp/sections/letter/index.php b/system/acp/sections/letter/index.php index 8b6cc419..f6ec90ef 100644 --- a/system/acp/sections/letter/index.php +++ b/system/acp/sections/letter/index.php @@ -21,4 +21,3 @@ $html->set('list', $list); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/letter/send.php b/system/acp/sections/letter/send.php index 420dc5ca..76a0bebd 100644 --- a/system/acp/sections/letter/send.php +++ b/system/acp/sections/letter/send.php @@ -50,4 +50,3 @@ $noletter = 'отправлено всем.'; sys::outjs(array('s' => $noletter)); -?> \ No newline at end of file diff --git a/system/acp/sections/logs/buy.php b/system/acp/sections/logs/buy.php index c98b0952..05b92e22 100644 --- a/system/acp/sections/logs/buy.php +++ b/system/acp/sections/logs/buy.php @@ -28,4 +28,3 @@ $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/logs/cashout.php b/system/acp/sections/logs/cashout.php index ba45c53a..fe019787 100644 --- a/system/acp/sections/logs/cashout.php +++ b/system/acp/sections/logs/cashout.php @@ -28,4 +28,3 @@ $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/logs/extend.php b/system/acp/sections/logs/extend.php index 897c4ad0..f9d1d9be 100644 --- a/system/acp/sections/logs/extend.php +++ b/system/acp/sections/logs/extend.php @@ -28,4 +28,3 @@ $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/logs/index.php b/system/acp/sections/logs/index.php index b9729cc0..d7a14d00 100644 --- a/system/acp/sections/logs/index.php +++ b/system/acp/sections/logs/index.php @@ -36,4 +36,3 @@ $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/logs/part.php b/system/acp/sections/logs/part.php index f6485bd5..fe73e4b1 100644 --- a/system/acp/sections/logs/part.php +++ b/system/acp/sections/logs/part.php @@ -28,4 +28,3 @@ $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/logs/replenish.php b/system/acp/sections/logs/replenish.php index b7713aae..94288c94 100644 --- a/system/acp/sections/logs/replenish.php +++ b/system/acp/sections/logs/replenish.php @@ -28,4 +28,3 @@ $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/logs/search.php b/system/acp/sections/logs/search.php index 2bdf38bd..53a47c78 100644 --- a/system/acp/sections/logs/search.php +++ b/system/acp/sections/logs/search.php @@ -71,4 +71,3 @@ $mcache->set($mkey, array('s' => $list), false, 15); sys::outjs(array('s' => $list)); -?> \ No newline at end of file diff --git a/system/acp/sections/logs/sysearch.php b/system/acp/sections/logs/sysearch.php index 31ed940f..a4d451ae 100644 --- a/system/acp/sections/logs/sysearch.php +++ b/system/acp/sections/logs/sysearch.php @@ -75,4 +75,3 @@ $mcache->set($mkey, array('s' => $list), false, 15); sys::outjs(array('s' => $list)); -?> \ No newline at end of file diff --git a/system/acp/sections/news/add.php b/system/acp/sections/news/add.php index 9863e2c5..c81721da 100644 --- a/system/acp/sections/news/add.php +++ b/system/acp/sections/news/add.php @@ -33,4 +33,3 @@ $html->get('add', 'sections/news'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/news/delete.php b/system/acp/sections/news/delete.php index 2173f2b3..95287845 100644 --- a/system/acp/sections/news/delete.php +++ b/system/acp/sections/news/delete.php @@ -5,4 +5,3 @@ $sql->query('DELETE FROM `news` WHERE `id`="' . $id . '" LIMIT 1'); sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/acp/sections/news/index.php b/system/acp/sections/news/index.php index a9157025..2d7640ad 100644 --- a/system/acp/sections/news/index.php +++ b/system/acp/sections/news/index.php @@ -36,4 +36,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/news/news.php b/system/acp/sections/news/news.php index 10829055..4b9c7717 100644 --- a/system/acp/sections/news/news.php +++ b/system/acp/sections/news/news.php @@ -40,4 +40,3 @@ $html->set('tags', htmlspecialchars_decode($news['tags'])); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/news/search.php b/system/acp/sections/news/search.php index b43b95b8..5e4739f2 100644 --- a/system/acp/sections/news/search.php +++ b/system/acp/sections/news/search.php @@ -57,4 +57,3 @@ $mcache->set($mkey, array('s' => $list), false, 15); sys::outjs(array('s' => $list)); -?> \ No newline at end of file diff --git a/system/acp/sections/notice/add.php b/system/acp/sections/notice/add.php index 72ca8811..2b533531 100644 --- a/system/acp/sections/notice/add.php +++ b/system/acp/sections/notice/add.php @@ -50,4 +50,3 @@ $html->set('units', $units); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/notice/delete.php b/system/acp/sections/notice/delete.php index ddb64d72..89ffef8c 100644 --- a/system/acp/sections/notice/delete.php +++ b/system/acp/sections/notice/delete.php @@ -5,4 +5,3 @@ $sql->query('DELETE FROM `notice` WHERE `id`="' . $id . '" LIMIT 1'); sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/acp/sections/notice/end.php b/system/acp/sections/notice/end.php index acff4585..8152c2ef 100644 --- a/system/acp/sections/notice/end.php +++ b/system/acp/sections/notice/end.php @@ -47,4 +47,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/notice/index.php b/system/acp/sections/notice/index.php index ce78c685..1c059681 100644 --- a/system/acp/sections/notice/index.php +++ b/system/acp/sections/notice/index.php @@ -47,4 +47,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/notice/notice.php b/system/acp/sections/notice/notice.php index d87fc17c..53fd50a5 100644 --- a/system/acp/sections/notice/notice.php +++ b/system/acp/sections/notice/notice.php @@ -73,4 +73,3 @@ $html->set('colors', str_replace('"' . $notice['color'] . '"', '"' . $notice['color'] . '" selected', '')); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/notice/search.php b/system/acp/sections/notice/search.php index ab350df3..1e7d8802 100644 --- a/system/acp/sections/notice/search.php +++ b/system/acp/sections/notice/search.php @@ -67,4 +67,3 @@ $mcache->set($mkey, array('s' => $list), false, 15); sys::outjs(array('s' => $list)); -?> \ No newline at end of file diff --git a/system/acp/sections/pages/add.php b/system/acp/sections/pages/add.php index 685f4411..e666fa15 100644 --- a/system/acp/sections/pages/add.php +++ b/system/acp/sections/pages/add.php @@ -27,4 +27,3 @@ $html->get('add', 'sections/pages'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/pages/delete.php b/system/acp/sections/pages/delete.php index 7be43450..003d703d 100644 --- a/system/acp/sections/pages/delete.php +++ b/system/acp/sections/pages/delete.php @@ -10,4 +10,3 @@ $sql->query('DELETE FROM `pages` WHERE `id`="' . $id . '" LIMIT 1'); sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/acp/sections/pages/index.php b/system/acp/sections/pages/index.php index 6973fe54..a5422a25 100644 --- a/system/acp/sections/pages/index.php +++ b/system/acp/sections/pages/index.php @@ -32,4 +32,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/pages/page.php b/system/acp/sections/pages/page.php index b188d267..78d40252 100644 --- a/system/acp/sections/pages/page.php +++ b/system/acp/sections/pages/page.php @@ -33,4 +33,3 @@ $html->set('text', htmlspecialchars(file_get_contents(FILES . 'pages/' . $page['file']))); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/promo/add.php b/system/acp/sections/promo/add.php index 4facf3cc..120b1875 100644 --- a/system/acp/sections/promo/add.php +++ b/system/acp/sections/promo/add.php @@ -80,4 +80,3 @@ $html->set('tarifs', $tarifs); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/promo/delete.php b/system/acp/sections/promo/delete.php index 8284fe65..8882568e 100644 --- a/system/acp/sections/promo/delete.php +++ b/system/acp/sections/promo/delete.php @@ -6,4 +6,3 @@ $sql->query('DELETE FROM `promo_use` WHERE `promo`="' . $id . '" LIMIT 1'); sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/acp/sections/promo/end.php b/system/acp/sections/promo/end.php index cbf6379e..59fd6d6e 100644 --- a/system/acp/sections/promo/end.php +++ b/system/acp/sections/promo/end.php @@ -42,4 +42,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/promo/index.php b/system/acp/sections/promo/index.php index 019c9e91..4186a691 100644 --- a/system/acp/sections/promo/index.php +++ b/system/acp/sections/promo/index.php @@ -42,4 +42,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/promo/promo.php b/system/acp/sections/promo/promo.php index c3acb69b..9912d616 100644 --- a/system/acp/sections/promo/promo.php +++ b/system/acp/sections/promo/promo.php @@ -86,4 +86,3 @@ $html->set('tarif', $unit['name'] . ' / #' . $tarif['id'] . ' ' . $tarif['name'] . ' (' . strtoupper($tarif['game']) . ')'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/promo/search.php b/system/acp/sections/promo/search.php index 850dfcc7..192494b7 100644 --- a/system/acp/sections/promo/search.php +++ b/system/acp/sections/promo/search.php @@ -61,4 +61,3 @@ $mcache->set($mkey, array('s' => $list), false, 15); sys::outjs(array('s' => $list)); -?> \ No newline at end of file diff --git a/system/acp/sections/promo/stats.php b/system/acp/sections/promo/stats.php index 7c970733..2c22eb7c 100644 --- a/system/acp/sections/promo/stats.php +++ b/system/acp/sections/promo/stats.php @@ -33,4 +33,3 @@ $html->set('list', $list); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/servers/crmp.php b/system/acp/sections/servers/crmp.php index 3ee2b54c..800d729e 100644 --- a/system/acp/sections/servers/crmp.php +++ b/system/acp/sections/servers/crmp.php @@ -72,4 +72,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/servers/cs.php b/system/acp/sections/servers/cs.php index ba8f11cb..d7da1fa6 100644 --- a/system/acp/sections/servers/cs.php +++ b/system/acp/sections/servers/cs.php @@ -72,4 +72,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/servers/cs2.php b/system/acp/sections/servers/cs2.php index f3f9a0d0..404e049c 100644 --- a/system/acp/sections/servers/cs2.php +++ b/system/acp/sections/servers/cs2.php @@ -72,4 +72,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/servers/csgo.php b/system/acp/sections/servers/csgo.php index 4a881dbb..13d2a56b 100644 --- a/system/acp/sections/servers/csgo.php +++ b/system/acp/sections/servers/csgo.php @@ -72,4 +72,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/servers/css.php b/system/acp/sections/servers/css.php index d5ed168e..6adad967 100644 --- a/system/acp/sections/servers/css.php +++ b/system/acp/sections/servers/css.php @@ -72,4 +72,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/servers/cssold.php b/system/acp/sections/servers/cssold.php index 789559b5..86eeae12 100644 --- a/system/acp/sections/servers/cssold.php +++ b/system/acp/sections/servers/cssold.php @@ -72,4 +72,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/servers/delete.php b/system/acp/sections/servers/delete.php index 5ea19768..391e0c7b 100644 --- a/system/acp/sections/servers/delete.php +++ b/system/acp/sections/servers/delete.php @@ -5,4 +5,3 @@ $sql->query('UPDATE `servers` set `user`="-1", `status`="overdue", `time`="0", `overdue`="0" WHERE `id`="' . $id . '" LIMIT 1'); sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/acp/sections/servers/index.php b/system/acp/sections/servers/index.php index e45c669c..159044a5 100644 --- a/system/acp/sections/servers/index.php +++ b/system/acp/sections/servers/index.php @@ -75,4 +75,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/servers/mc.php b/system/acp/sections/servers/mc.php index 1b961163..b4bcd20a 100644 --- a/system/acp/sections/servers/mc.php +++ b/system/acp/sections/servers/mc.php @@ -72,4 +72,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/servers/mta.php b/system/acp/sections/servers/mta.php index 17eac243..a0bc99b0 100644 --- a/system/acp/sections/servers/mta.php +++ b/system/acp/sections/servers/mta.php @@ -72,4 +72,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/servers/overdue.php b/system/acp/sections/servers/overdue.php index 1e6d69d7..0d508ff5 100644 --- a/system/acp/sections/servers/overdue.php +++ b/system/acp/sections/servers/overdue.php @@ -39,4 +39,3 @@ $html->set('pages', ''); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/servers/rust.php b/system/acp/sections/servers/rust.php index a04d53eb..d7e0f1c4 100644 --- a/system/acp/sections/servers/rust.php +++ b/system/acp/sections/servers/rust.php @@ -72,4 +72,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/servers/samp.php b/system/acp/sections/servers/samp.php index f0500b18..cb56a6cb 100644 --- a/system/acp/sections/servers/samp.php +++ b/system/acp/sections/servers/samp.php @@ -72,4 +72,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/servers/search.php b/system/acp/sections/servers/search.php index 0916114f..207128d8 100644 --- a/system/acp/sections/servers/search.php +++ b/system/acp/sections/servers/search.php @@ -129,4 +129,3 @@ $mcache->set($mkey, array('s' => $list), false, 15); sys::outjs(array('s' => $list)); -?> \ No newline at end of file diff --git a/system/acp/sections/servers/server.php b/system/acp/sections/servers/server.php index a80c7cbf..b4de00f4 100644 --- a/system/acp/sections/servers/server.php +++ b/system/acp/sections/servers/server.php @@ -267,4 +267,3 @@ } $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/tarifs/add.php b/system/acp/sections/tarifs/add.php index f6b2c116..56413ecc 100644 --- a/system/acp/sections/tarifs/add.php +++ b/system/acp/sections/tarifs/add.php @@ -398,4 +398,3 @@ $html->set('units', $units); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/tarifs/copy.php b/system/acp/sections/tarifs/copy.php index 9ac2b11e..c9855e92 100644 --- a/system/acp/sections/tarifs/copy.php +++ b/system/acp/sections/tarifs/copy.php @@ -79,4 +79,3 @@ $html->set('plugins_install', $plugins); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/tarifs/delete.php b/system/acp/sections/tarifs/delete.php index 47859155..0a09812f 100644 --- a/system/acp/sections/tarifs/delete.php +++ b/system/acp/sections/tarifs/delete.php @@ -9,4 +9,3 @@ $sql->query('DELETE FROM `tarifs` WHERE `id`="' . $id . '" LIMIT 1'); sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/acp/sections/tarifs/index.php b/system/acp/sections/tarifs/index.php index 76614d61..d4091ee4 100644 --- a/system/acp/sections/tarifs/index.php +++ b/system/acp/sections/tarifs/index.php @@ -67,4 +67,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/tarifs/search.php b/system/acp/sections/tarifs/search.php index 057dda49..3311f7dd 100644 --- a/system/acp/sections/tarifs/search.php +++ b/system/acp/sections/tarifs/search.php @@ -68,4 +68,3 @@ $mcache->set($mkey, array('s' => $list), false, 15); sys::outjs(array('s' => $list)); -?> \ No newline at end of file diff --git a/system/acp/sections/tarifs/stats.php b/system/acp/sections/tarifs/stats.php index 403bb398..162d81d7 100644 --- a/system/acp/sections/tarifs/stats.php +++ b/system/acp/sections/tarifs/stats.php @@ -65,4 +65,3 @@ $html->set('cur', $cfg['currency']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/tarifs/tarif.php b/system/acp/sections/tarifs/tarif.php index deeae762..2e54627d 100644 --- a/system/acp/sections/tarifs/tarif.php +++ b/system/acp/sections/tarifs/tarif.php @@ -468,4 +468,3 @@ $html->set('plugins_install', $plugins); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/units/add.php b/system/acp/sections/units/add.php index c21de42b..2e811bad 100644 --- a/system/acp/sections/units/add.php +++ b/system/acp/sections/units/add.php @@ -69,4 +69,3 @@ $html->get('add', 'sections/units'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/units/delete.php b/system/acp/sections/units/delete.php index 1274f879..d827c6e4 100644 --- a/system/acp/sections/units/delete.php +++ b/system/acp/sections/units/delete.php @@ -60,4 +60,3 @@ $sql->query('DELETE FROM `units` WHERE `id`="' . $id . '" LIMIT 1'); sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/acp/sections/units/index.php b/system/acp/sections/units/index.php index cf947fde..58e87493 100644 --- a/system/acp/sections/units/index.php +++ b/system/acp/sections/units/index.php @@ -25,4 +25,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/units/loading.php b/system/acp/sections/units/loading.php index fa6edc60..b6f97188 100644 --- a/system/acp/sections/units/loading.php +++ b/system/acp/sections/units/loading.php @@ -96,4 +96,3 @@ $html->set('loads', $loads); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/units/stats.php b/system/acp/sections/units/stats.php index 2056bc6a..7d1c6b84 100644 --- a/system/acp/sections/units/stats.php +++ b/system/acp/sections/units/stats.php @@ -59,4 +59,3 @@ $html->set('cur', $cfg['currency']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/units/unit.php b/system/acp/sections/units/unit.php index ef4f2d65..2256b8cd 100644 --- a/system/acp/sections/units/unit.php +++ b/system/acp/sections/units/unit.php @@ -84,4 +84,3 @@ $html->set('show', $unit['show'] == 1 ? '' : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/users/action.php b/system/acp/sections/users/action.php index 7dff6b1f..10ee1128 100644 --- a/system/acp/sections/users/action.php +++ b/system/acp/sections/users/action.php @@ -153,4 +153,3 @@ . '`extend`="' . $aData['extend'] . '" WHERE `id`="' . $id . '" LIMIT 1'); sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/acp/sections/users/delete.php b/system/acp/sections/users/delete.php index c58af261..40a43821 100644 --- a/system/acp/sections/users/delete.php +++ b/system/acp/sections/users/delete.php @@ -32,4 +32,3 @@ $sql->query('DELETE FROM `users` WHERE `id`="' . $id . '" LIMIT 1'); sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/acp/sections/users/index.php b/system/acp/sections/users/index.php index 74b782f5..3d92205e 100644 --- a/system/acp/sections/users/index.php +++ b/system/acp/sections/users/index.php @@ -60,4 +60,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/users/offline.php b/system/acp/sections/users/offline.php index 7b8d65b4..f2c9a9f9 100644 --- a/system/acp/sections/users/offline.php +++ b/system/acp/sections/users/offline.php @@ -30,4 +30,3 @@ $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/users/online.php b/system/acp/sections/users/online.php index 814980cf..03df61e3 100644 --- a/system/acp/sections/users/online.php +++ b/system/acp/sections/users/online.php @@ -35,4 +35,3 @@ $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/users/search.php b/system/acp/sections/users/search.php index 82316cc8..9501b173 100644 --- a/system/acp/sections/users/search.php +++ b/system/acp/sections/users/search.php @@ -60,4 +60,3 @@ $mcache->set($mkey, array('s' => $list), false, 15); sys::outjs(array('s' => $list)); -?> \ No newline at end of file diff --git a/system/acp/sections/users/signup.php b/system/acp/sections/users/signup.php index 3f9e90b4..1139c41c 100644 --- a/system/acp/sections/users/signup.php +++ b/system/acp/sections/users/signup.php @@ -26,4 +26,3 @@ $html->set('list', $list); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/users/stats.php b/system/acp/sections/users/stats.php index 6ad90ea2..f61222c4 100644 --- a/system/acp/sections/users/stats.php +++ b/system/acp/sections/users/stats.php @@ -32,4 +32,3 @@ $html->set('money', $money); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/users/user.php b/system/acp/sections/users/user.php index c6967d97..5f53e2c9 100644 --- a/system/acp/sections/users/user.php +++ b/system/acp/sections/users/user.php @@ -118,4 +118,3 @@ $html->set('extend', $us['extend']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/web/amxbans.php b/system/acp/sections/web/amxbans.php index e65031db..3c68a2fb 100644 --- a/system/acp/sections/web/amxbans.php +++ b/system/acp/sections/web/amxbans.php @@ -54,4 +54,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/web/astats.php b/system/acp/sections/web/astats.php index 16411a33..eba22775 100644 --- a/system/acp/sections/web/astats.php +++ b/system/acp/sections/web/astats.php @@ -54,4 +54,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/web/csbans.php b/system/acp/sections/web/csbans.php index b3fbc50d..4dfc2bbe 100644 --- a/system/acp/sections/web/csbans.php +++ b/system/acp/sections/web/csbans.php @@ -54,4 +54,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/web/csstats.php b/system/acp/sections/web/csstats.php index 3588b10a..a08998f7 100644 --- a/system/acp/sections/web/csstats.php +++ b/system/acp/sections/web/csstats.php @@ -54,4 +54,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/web/hosting.php b/system/acp/sections/web/hosting.php index 60a6d9ef..f0e2f51a 100644 --- a/system/acp/sections/web/hosting.php +++ b/system/acp/sections/web/hosting.php @@ -54,4 +54,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/web/index.php b/system/acp/sections/web/index.php index 9c9cbf97..2a9daa57 100644 --- a/system/acp/sections/web/index.php +++ b/system/acp/sections/web/index.php @@ -54,4 +54,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/web/mysql.php b/system/acp/sections/web/mysql.php index af58ba63..71293a7a 100644 --- a/system/acp/sections/web/mysql.php +++ b/system/acp/sections/web/mysql.php @@ -54,4 +54,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/web/psychostats.php b/system/acp/sections/web/psychostats.php index 7fc341e2..3ae65d26 100644 --- a/system/acp/sections/web/psychostats.php +++ b/system/acp/sections/web/psychostats.php @@ -54,4 +54,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/web/rankme.php b/system/acp/sections/web/rankme.php index 64181494..fb9d2e51 100644 --- a/system/acp/sections/web/rankme.php +++ b/system/acp/sections/web/rankme.php @@ -54,4 +54,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/web/search.php b/system/acp/sections/web/search.php index 232d40cd..3f6beddc 100644 --- a/system/acp/sections/web/search.php +++ b/system/acp/sections/web/search.php @@ -80,4 +80,3 @@ $mcache->set($mkey, array('s' => $list), false, 15); sys::outjs(array('s' => $list)); -?> \ No newline at end of file diff --git a/system/acp/sections/web/sourcebans.php b/system/acp/sections/web/sourcebans.php index 4a95726d..dc82d8f4 100644 --- a/system/acp/sections/web/sourcebans.php +++ b/system/acp/sections/web/sourcebans.php @@ -54,4 +54,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/wiki/add.php b/system/acp/sections/wiki/add.php index 721dd62d..133ccb06 100644 --- a/system/acp/sections/wiki/add.php +++ b/system/acp/sections/wiki/add.php @@ -47,4 +47,3 @@ $html->set('cats', $cats); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/wiki/addcat.php b/system/acp/sections/wiki/addcat.php index 763dff12..1095c738 100644 --- a/system/acp/sections/wiki/addcat.php +++ b/system/acp/sections/wiki/addcat.php @@ -21,4 +21,3 @@ $html->get('addcat', 'sections/wiki'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/wiki/cat.php b/system/acp/sections/wiki/cat.php index a7f62204..e28c60cd 100644 --- a/system/acp/sections/wiki/cat.php +++ b/system/acp/sections/wiki/cat.php @@ -28,4 +28,3 @@ $html->set('sort', $wiki['sort']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/wiki/cats.php b/system/acp/sections/wiki/cats.php index badcdb08..0daf9e01 100644 --- a/system/acp/sections/wiki/cats.php +++ b/system/acp/sections/wiki/cats.php @@ -21,4 +21,3 @@ $html->set('list', $list); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/acp/sections/wiki/delete.php b/system/acp/sections/wiki/delete.php index 19b8cf2c..3a263160 100644 --- a/system/acp/sections/wiki/delete.php +++ b/system/acp/sections/wiki/delete.php @@ -10,4 +10,3 @@ } sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/acp/sections/wiki/index.php b/system/acp/sections/wiki/index.php index efb0a41c..a6b35e6f 100644 --- a/system/acp/sections/wiki/index.php +++ b/system/acp/sections/wiki/index.php @@ -38,4 +38,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/acp/sections/wiki/search.php b/system/acp/sections/wiki/search.php index 7de76c07..2142161b 100644 --- a/system/acp/sections/wiki/search.php +++ b/system/acp/sections/wiki/search.php @@ -58,4 +58,3 @@ $mcache->set($mkey, array('s' => $list), false, 15); sys::outjs(array('s' => $list)); -?> \ No newline at end of file diff --git a/system/acp/sections/wiki/wiki.php b/system/acp/sections/wiki/wiki.php index 58126241..e7b7b49a 100644 --- a/system/acp/sections/wiki/wiki.php +++ b/system/acp/sections/wiki/wiki.php @@ -54,4 +54,3 @@ $html->set('cats', str_replace('"' . $wiki['cat'] . '"', '"' . $wiki['cat'] . '" selected', $cats)); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/data/SxGeoCity.dat b/system/data/SxGeoCity.dat index c0df8733..5bf65149 100644 Binary files a/system/data/SxGeoCity.dat and b/system/data/SxGeoCity.dat differ diff --git a/system/data/acpengine.php b/system/data/acpengine.php index 1daa590f..b82b3582 100644 --- a/system/data/acpengine.php +++ b/system/data/acpengine.php @@ -21,17 +21,16 @@ 'pages', 'letter', 'logs', - 'cashback', - 'jobs' + 'cashback' ); // Массив регулярных выражений $aValid = array( 'login' => '/^[A-Za-z0-9_]{4,16}$/', 'mail' => '/^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i', - 'name' => '/^[А-Я]{1,1}[а-я]{2,15}$/u', - 'lastname' => '/^[А-Я]{1,1}[а-я]{2,15}$/u', - 'patronymic' => '/^[А-Я]{1,1}[а-я]{2,15}$/u', + 'name' => '/^[А-ЯЁ]{1,1}[а-яё]{2,15}$/u', + 'lastname' => '/^[А-ЯЁ]{1,1}[а-яё]{2,15}$/u', + 'patronymic' => '/^[А-ЯЁ]{1,1}[а-яё]{2,15}$/u', 'phone' => '/^380+[0-9]{9,9}$|^77+[0-9]{9,9}$|^79+[0-9]{9,9}$|^375+[0-9]{9,9}$/m', 'contacts' => '/^(http|https):\/\/(new\.vk|vk)\.com\/[A-Za-z\_\.]{1,2}[A-Za-z0-9\_\.]{4,32}$|^[A-Za-z][A-Za-z0-9\.\-\_]{6,32}$/', 'passwd' => '/^[A-Za-z0-9]{6,26}$/', @@ -51,4 +50,3 @@ 'mta' => 'GTA: MTA', 'samp' => 'GTA: SAMP' ); -?> \ No newline at end of file diff --git a/system/data/boost.php b/system/data/boost.php index 48e2a3b5..2e66060f 100644 --- a/system/data/boost.php +++ b/system/data/boost.php @@ -17,4 +17,3 @@ ) ) ); -?> \ No newline at end of file diff --git a/system/data/config.php b/system/data/config.php index 281ad479..1a864b50 100644 --- a/system/data/config.php +++ b/system/data/config.php @@ -2,16 +2,18 @@ if (!DEFINED('EGP')) exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404')); -$cfg = array( - 'name' => 'EngineGP', // Название сайта - 'graph' => 'EngineGP', // Описание сайта - 'url' => 'IPADDR', // Тут ваш IP или Домен, пример: 127.0.0.1 - 'http' => 'http://IPADDR/', // Тут ваш IP или Домен с указанием http, пример: http://127.0.0.1 - 'plugins' => 'http://IPADDR/files/plugins/', // Путь к плагинам - 'ip' => 'IPADDR', // IP-Адрес сайта прмер: 127.0.0.1 - 'subnet' => 'IPADDR.0/23', // Подсеть сайта пример: 127.0.0.1.0/23 .0/23(не стирать) +// Загружаем .env +$dotenv = new Symfony\Component\Dotenv\Dotenv(); +$dotenv->load(ROOT.'.env'); - 'cdn' => 'http://cdn.enginegp.ru/', // CDN сервис EGP, если ваш сайт переехал на https то следует тут тоже сменить протокол с http на https +$cfg = array( + 'name' => $_ENV['APP_NAME'], + 'graph' => $_ENV['APP_NAME'], + 'url' => $_ENV['APP_URL'], + 'http' => $_ENV['APP_PROTOCOL'] . $_ENV['APP_URL'] . '/', + 'plugins' => $_ENV['APP_PROTOCOL'] . $_ENV['APP_URL'] . '/files/plugins/', + 'ip' => $_ENV['APP_IP'], + 'subnet' => $_ENV['APP_IP'], // Данные для пополнения баланса пользователям 'freekassa_id' => '', // Номер кассы @@ -335,4 +337,3 @@ 'cs2' => false ) ); -?> \ No newline at end of file diff --git a/system/data/engine.php b/system/data/engine.php index 8b481cf8..c2c78727 100644 --- a/system/data/engine.php +++ b/system/data/engine.php @@ -26,31 +26,16 @@ 'api_v1', 'check', 'monitoring', - 'chat', - 'jobs', 'partners', ); -// Массив главных разделов megp -$amRoute = array( - 'index', - 'servers', - 'services', - 'replenish', - 'help', - 'news', - 'auth', - 'quit', - 'recovery' -); - // Массив регулярных выражений $aValid = array( 'login' => '/^[A-Za-z0-9_]{4,16}$/', 'mail' => '/^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i', - 'name' => '/^[А-Я]{1,1}[а-я]{2,15}$/u', - 'lastname' => '/^[А-Я]{1,1}[а-я]{2,15}$/u', - 'patronymic' => '/^[А-Я]{1,1}[а-я]{2,15}$/u', + 'name' => '/^[А-ЯЁ]{1,1}[а-яё]{2,15}$/u', + 'lastname' => '/^[А-ЯЁ]{1,1}[а-яё]{2,15}$/u', + 'patronymic' => '/^[А-ЯЁ]{1,1}[а-яё]{2,15}$/u', 'phone' => '/^380+[0-9]{9,9}$|^77+[0-9]{9,9}$|^79+[0-9]{9,9}$|^375+[0-9]{9,9}$/m', 'contacts' => '/^(http|https):\/\/(new\.vk|vk)\.com\/[A-Za-z\_\.]{1,2}[A-Za-z0-9\_\.]{4,32}$|^[A-Za-z][A-Za-z0-9\.\-\_]{6,32}$/', 'passwd' => '/^[A-Za-z0-9]{6,26}$/', @@ -198,4 +183,3 @@ 'copy' => 'Раздел "Копии"', 'graph' => 'Раздел "Графики"' ); -?> \ No newline at end of file diff --git a/system/data/filedits.php b/system/data/filedits.php index 46f3c42d..d367b88e 100644 --- a/system/data/filedits.php +++ b/system/data/filedits.php @@ -206,4 +206,3 @@ } } } -?> \ No newline at end of file diff --git a/system/data/graph.php b/system/data/graph.php index 3a7d4e36..282af274 100644 --- a/system/data/graph.php +++ b/system/data/graph.php @@ -39,4 +39,3 @@ 'progress' => array('R' => 136, 'G' => 156, 'B' => 99, 'BoxBorderR' => 46, 'BoxBorderG' => 50, 'BoxBorderB' => 37) ), ); -?> \ No newline at end of file diff --git a/system/data/header.php b/system/data/header.php index 361b15bd..6ab49a08 100644 --- a/system/data/header.php +++ b/system/data/header.php @@ -28,4 +28,3 @@ 'keywords' => 'аренда игровых серверов, хостинг игровых серверов, игровой хостинг, дешевый хостинг игровых серверов, хостинг игровых серверов css, самый дешевый хостинг игровых серверов, качественный хостинг игровых серверов, бесплатный игровой хостинг' ) ); -?> \ No newline at end of file diff --git a/system/data/maps.php b/system/data/maps.php index 4682cf67..6d4ec0ab 100644 --- a/system/data/maps.php +++ b/system/data/maps.php @@ -26,4 +26,3 @@ '35hp' => array('35hp') ) ); -?> \ No newline at end of file diff --git a/system/data/mysql.php b/system/data/mysql.php index c6e66d08..206cdc0c 100644 --- a/system/data/mysql.php +++ b/system/data/mysql.php @@ -2,9 +2,12 @@ if (!DEFINED('EGP')) exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404')); -DEFINE('USER_DATABASE', 'root'); -DEFINE('PASSWORD_DATABASE', 'SQLPASS'); // пароль mysql -DEFINE('NAME_DATABASE', 'enginegp'); -DEFINE('CONNECT_DATABASE', 'localhost'); -DEFINE('ERROR_DATABASE', FALSE); -?> \ No newline at end of file +// Загружаем .env +$dotenv = new Symfony\Component\Dotenv\Dotenv(); +$dotenv->load(ROOT.'.env'); + +define('USER_DATABASE', $_ENV['DB_USERNAME']); +define('PASSWORD_DATABASE', $_ENV['DB_PASSWORD']); +define('NAME_DATABASE', $_ENV['DB_DATABASE']); +define('CONNECT_DATABASE', $_ENV['DB_HOST']); +define('ERROR_DATABASE', false); diff --git a/system/data/params.php b/system/data/params.php index 51c6fa2c..ffa69403 100644 --- a/system/data/params.php +++ b/system/data/params.php @@ -298,5 +298,3 @@ class params 'mc' => 'start.jar' ); } - -?> \ No newline at end of file diff --git a/system/data/scfg/crmp.php b/system/data/scfg/crmp.php index 6911554b..89371929 100644 --- a/system/data/scfg/crmp.php +++ b/system/data/scfg/crmp.php @@ -50,4 +50,3 @@ . '' . '' ); -?> \ No newline at end of file diff --git a/system/data/scfg/cs.php b/system/data/scfg/cs.php index e01f7c41..ad6846c3 100644 --- a/system/data/scfg/cs.php +++ b/system/data/scfg/cs.php @@ -101,4 +101,3 @@ 'mp_mapvoteratio' => '', 'mp_forcechasecam' => '' ); -?> \ No newline at end of file diff --git a/system/data/scfg/cs2.php b/system/data/scfg/cs2.php index fe2199ca..04feeee2 100644 --- a/system/data/scfg/cs2.php +++ b/system/data/scfg/cs2.php @@ -43,4 +43,3 @@ 'sv_hibernate_when_empty' => '', 'sv_setsteamaccount' => '' ); -?> \ No newline at end of file diff --git a/system/data/scfg/csgo.php b/system/data/scfg/csgo.php index fe2199ca..04feeee2 100644 --- a/system/data/scfg/csgo.php +++ b/system/data/scfg/csgo.php @@ -43,4 +43,3 @@ 'sv_hibernate_when_empty' => '', 'sv_setsteamaccount' => '' ); -?> \ No newline at end of file diff --git a/system/data/scfg/css.php b/system/data/scfg/css.php index 9c6ea6b2..aa9a2951 100644 --- a/system/data/scfg/css.php +++ b/system/data/scfg/css.php @@ -149,4 +149,3 @@ 'sv_maxcmdrate' => '' ); -?> \ No newline at end of file diff --git a/system/data/scfg/cssold.php b/system/data/scfg/cssold.php index b2cff0ab..0c86c2f3 100644 --- a/system/data/scfg/cssold.php +++ b/system/data/scfg/cssold.php @@ -123,4 +123,3 @@ 'net_maxfilesize' => '', 'phys_timescale' => '' ); -?> \ No newline at end of file diff --git a/system/data/scfg/mc.php b/system/data/scfg/mc.php index cb51bd62..2815b121 100644 --- a/system/data/scfg/mc.php +++ b/system/data/scfg/mc.php @@ -110,4 +110,3 @@ . '' . '' ); -?> \ No newline at end of file diff --git a/system/data/scfg/samp.php b/system/data/scfg/samp.php index 6911554b..89371929 100644 --- a/system/data/scfg/samp.php +++ b/system/data/scfg/samp.php @@ -50,4 +50,3 @@ . '' . '' ); -?> \ No newline at end of file diff --git a/system/data/text/error.php b/system/data/text/error.php index 4414b428..5fe09ce1 100644 --- a/system/data/text/error.php +++ b/system/data/text/error.php @@ -43,4 +43,3 @@ 'ser_owner' => 'У вас нет доступа к данной операции.', 'ser_delete' => 'Удаление невозможно, сервер должен быть выключен.', ); -?> \ No newline at end of file diff --git a/system/data/text/input.php b/system/data/text/input.php index f136a954..bea7edd4 100644 --- a/system/data/text/input.php +++ b/system/data/text/input.php @@ -28,4 +28,3 @@ 'phone' => 'Для подтверждения номера, необходимо его указать.', 'code' => 'Указанный код неправильный.', ); -?> \ No newline at end of file diff --git a/system/data/text/logs.php b/system/data/text/logs.php index 6b8e6d0b..6e736f89 100644 --- a/system/data/text/logs.php +++ b/system/data/text/logs.php @@ -20,4 +20,3 @@ 'buy_plugin' => 'Покупка плагина: [plugin], списана сумма: [money] руб. (сервер: #[id])', 'ctrl_buy_plugin' => 'Покупка плагина: [plugin], списана сумма: [money] руб. (CTRL сервер: #[id])', ); -?> \ No newline at end of file diff --git a/system/data/text/mail.php b/system/data/text/mail.php index 151710b8..117f7bfb 100644 --- a/system/data/text/mail.php +++ b/system/data/text/mail.php @@ -63,4 +63,3 @@ . '
' . 'С уважением, администрация [site].', ); -?> \ No newline at end of file diff --git a/system/data/text/other.php b/system/data/text/other.php index 9ebe424b..de45d05f 100644 --- a/system/data/text/other.php +++ b/system/data/text/other.php @@ -6,4 +6,3 @@ 'mcache' => 'Пожалуйста, дождитесь выполнения предыдущего запроса.', 'captcha' => 'Неправильно указан код проверки либо закончился срок его жизни.', ); -?> \ No newline at end of file diff --git a/system/data/text/output.php b/system/data/text/output.php index f20218a5..9e773a04 100644 --- a/system/data/text/output.php +++ b/system/data/text/output.php @@ -17,4 +17,3 @@ 'auth' => 'Вы уже авторизованы, обновите страницу.', 'noauth' => 'Необходимо авторизоваться.', ); -?> \ No newline at end of file diff --git a/system/data/text/servers.php b/system/data/text/servers.php index dccca22e..a9cf73cb 100644 --- a/system/data/text/servers.php +++ b/system/data/text/servers.php @@ -11,4 +11,3 @@ 'firewall' => 'Неверный формат адреса.', 'bans' => 'Неверный формат переданных данных.', ); -?> \ No newline at end of file diff --git a/system/data/text/syslogs.php b/system/data/text/syslogs.php index 08528090..49e2b921 100644 --- a/system/data/text/syslogs.php +++ b/system/data/text/syslogs.php @@ -11,4 +11,3 @@ 'change_plan' => 'Изменение тарифного плана.', 'change_unit' => 'Изменение локации.', ); -?> \ No newline at end of file diff --git a/system/data/web.php b/system/data/web.php index d18bfeeb..11d3a5a0 100644 --- a/system/data/web.php +++ b/system/data/web.php @@ -532,4 +532,3 @@ ); $aWebothPath = array(); -?> \ No newline at end of file diff --git a/system/distributor.php b/system/distributor.php index 608c3dd6..d17dcf45 100644 --- a/system/distributor.php +++ b/system/distributor.php @@ -27,52 +27,27 @@ $page = array_key_exists('page', $url) ? sys::int($url['page']) : 1; $route = $route == '' ? 'index' : $route; +session_start(); + // Реферал if (isset($_GET['account'])) - sys::cookie('part', sys::int($_GET['account']), 10); + $_SESSION['referrer'] = sys::int($_GET['account']); $auth = false; -// Проверка cookie на авторизацию -$aAuth = array(); - -$aAuth['login'] = isset($_COOKIE['egp_login']) ? $_COOKIE['egp_login'] : ''; -$aAuth['passwd'] = isset($_COOKIE['egp_passwd']) ? $_COOKIE['egp_passwd'] : ''; -$aAuth['authkeycheck'] = isset($_COOKIE['egp_authkeycheck']) ? $_COOKIE['egp_authkeycheck'] : ''; - -$authkey = md5($aAuth['login'] . $uip . $aAuth['passwd']); -$userkey = md5($aAuth['login'] . $authkey . $aAuth['passwd']); - -if (!in_array('', $aAuth) && $authkey == $aAuth['authkeycheck']) { - $users = $mcache->get('users_auth'); - - $user = isset($users[$userkey]) ? $users[$userkey] : 0; - - if (!$user) { - if ((!sys::valid($aAuth['login'], 'other', $aValid['login'])) && !sys::valid($aAuth['passwd'], 'md5')) { - $sql->query('SELECT `id` FROM `users` WHERE `login`="' . $aAuth['login'] . '" AND `passwd`="' . $aAuth['passwd'] . '" LIMIT 1'); - if ($sql->num()) { - $sql->query('SELECT `id`, `login`, `passwd`, `balance`, `group`, `level`, `time` FROM `users` WHERE `login`="' . $aAuth['login'] . '" AND `passwd`="' . $aAuth['passwd'] . '" LIMIT 1'); - $user = array_merge(array('authkey' => $authkey), $sql->get()); +// Проверка сессии на авторизацию +if (isset($_SESSION['user_id'])) { + $userId = $_SESSION['user_id']; - $auth = 1; + $sql->query('SELECT `id`, `login`, `balance`, `group`, `level`, `time` FROM `users` WHERE `id`="' . $userId . '" LIMIT 1'); + if ($sql->num()) { + $user = $sql->get(); - sys::users($users, $user, $authkey); - } - } + // Обновление активности + if ($user['time'] + 10 < $start_point) + $sql->query('UPDATE `users` set `time`="' . $start_point . '" WHERE `id`="' . $user['id'] . '" LIMIT 1'); - if (!$auth) { - sys::cookie('egp_login', 'quit', -1); - sys::cookie('egp_passwd', 'quit', -1); - sys::cookie('egp_authkeycheck', 'quit', -1); - } - } else { - $sql->query('SELECT `balance`, `time` FROM `users` WHERE `id`="' . $user['id'] . '" LIMIT 1'); - $user = array_merge($user, $sql->get()); - - sys::user($user); - - $auth = 1; + $auth = true; } } @@ -136,11 +111,14 @@ // Если авторизован if ($auth) { + // Здесь вы можете использовать информацию о пользователе, например, $user['balance'] $html->set('login', $user['login']); $html->set('balance', round($user['balance'], 2)); $html->set('other_menu', isset($html->arr['vmenu']) ? $html->arr['vmenu'] : ''); -} else +} else { + // Если пользователь не авторизован, выполните необходимые действия $html->set('other_menu', ''); +} $html->set('nav', isset($html->arr['nav']) ? $html->arr['nav'] : '', true); $html->set('main', isset($html->arr['main']) ? $html->arr['main'] : '', true); @@ -186,4 +164,3 @@ $html->unitall('all', 'admin', 0, 1); $html->unitall('all', 'support', 0, 1); } -?> \ No newline at end of file diff --git a/system/engine/404.php b/system/engine/404.php index 1d611615..1b117c1f 100644 --- a/system/engine/404.php +++ b/system/engine/404.php @@ -4,4 +4,3 @@ http_response_code(404); exit(file_get_contents(ROOT . '404.html')); -?> \ No newline at end of file diff --git a/system/engine/agreement.php b/system/engine/agreement.php index 0db852d9..c10bab5c 100644 --- a/system/engine/agreement.php +++ b/system/engine/agreement.php @@ -7,4 +7,3 @@ $html->get('agreement'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/engine/api.php b/system/engine/api.php index 73899411..55a2c614 100644 --- a/system/engine/api.php +++ b/system/engine/api.php @@ -41,4 +41,3 @@ } sys::outjs(array('e' => 'Метод не найден')); -?> \ No newline at end of file diff --git a/system/engine/api_v1.php b/system/engine/api_v1.php index ee037c73..db152cb0 100644 --- a/system/engine/api_v1.php +++ b/system/engine/api_v1.php @@ -7,4 +7,3 @@ $html->get('api'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/engine/autocontrol.php b/system/engine/autocontrol.php index 51a26c78..d7fb36dc 100644 --- a/system/engine/autocontrol.php +++ b/system/engine/autocontrol.php @@ -71,4 +71,3 @@ } sys::outfile($tmp, $url['action'], $del); -?> \ No newline at end of file diff --git a/system/engine/chat.php b/system/engine/chat.php deleted file mode 100644 index 06c1011f..00000000 --- a/system/engine/chat.php +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/system/engine/check.php b/system/engine/check.php index cb7b8603..3fd0eca5 100644 --- a/system/engine/check.php +++ b/system/engine/check.php @@ -5,5 +5,3 @@ $title = 'Проверка плагина'; include(SEC . 'check/index.php'); - -?> \ No newline at end of file diff --git a/system/engine/contacts.php b/system/engine/contacts.php index b1f88609..43fd0af8 100644 --- a/system/engine/contacts.php +++ b/system/engine/contacts.php @@ -8,4 +8,3 @@ $html->get('contacts'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/engine/control.php b/system/engine/control.php index dc1fa305..7dbe9d0f 100644 --- a/system/engine/control.php +++ b/system/engine/control.php @@ -66,4 +66,3 @@ $html->set('updates_control', $js); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/engine/freekassa.php b/system/engine/freekassa.php index a89e9234..d7ba1918 100644 --- a/system/engine/freekassa.php +++ b/system/engine/freekassa.php @@ -85,4 +85,3 @@ $sql->query('INSERT INTO `logs` set `user`="' . $user['id'] . '", `text`="Пополнение баланса на сумму: ' . $sum . ' ' . $cfg['currency'] . '", `date`="' . $start_point . '", `type`="replenish", `money`="' . $sum . '"'); sys::out('YES'); -?> \ No newline at end of file diff --git a/system/engine/graph.php b/system/engine/graph.php index 5c42e739..90427115 100644 --- a/system/engine/graph.php +++ b/system/engine/graph.php @@ -55,4 +55,3 @@ header('Content-type: image/png'); exit(file_get_contents(TEMP . (md5($key . $style . $type)) . '.png')); } -?> \ No newline at end of file diff --git a/system/engine/help.php b/system/engine/help.php index 2775e39e..14e29e90 100644 --- a/system/engine/help.php +++ b/system/engine/help.php @@ -30,4 +30,3 @@ include(SEC . 'help/' . $section . '.php'); } -?> \ No newline at end of file diff --git a/system/engine/index.php b/system/engine/index.php index 80c1890e..d506998f 100644 --- a/system/engine/index.php +++ b/system/engine/index.php @@ -23,4 +23,3 @@ $html->set('news', isset($html->arr['news']) ? $html->arr['news'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/engine/jobs.php b/system/engine/jobs.php deleted file mode 100644 index 8bd726fa..00000000 --- a/system/engine/jobs.php +++ /dev/null @@ -1,78 +0,0 @@ -query('SELECT `name` FROM `jobs` WHERE `id`="' . $id . '" AND `status`!="0" LIMIT 1'); -$nav = $sql->get(); - -$html->nav('Вакансии', $cfg['http'] . 'jobs'); -$html->nav($nav['name']); - -if ($id) { - $sql->query('SELECT * FROM `jobs` WHERE `id`="' . $id . '" AND `status`!="0" LIMIT 1'); - if (!$sql->num()) - sys::back($cfg['http'] . 'jobs'); - - $jobs = $sql->get(); - - if ($go) { - $sql->query('SELECT `id` FROM `jobs_app` WHERE `user`="' . $user['id'] . '" AND `job`="' . $id . '" LIMIT 1'); - if ($sql->num()) - sys::outjs(array('e' => 'Вы уже подали заявку, ожидайте, пожалуйста, ответа от Администрации.')); - - if ($_POST['contact'] == '') - sys::outjs(array('e' => 'Необходимо указать контакты для связи!')); - - sys::noauth(); - - $sql->query('INSERT INTO `jobs_app` set' - . '`user`="' . $user['id'] . '",' - . '`text`="",' - . '`contact`="' . $_POST['contact'] . '",' - . '`job`="' . $id . '",' - . '`date`="' . $start_point . '"'); - - sys::outjs(array('s' => 'ok')); - } - - $sql->query('SELECT `text` FROM `jobs_app` WHERE `user`="' . $user['id'] . '" AND `job`="' . $jobs['id'] . '" LIMIT 1'); - $text = $sql->get(); - - $html->get('jobs', 'jobs'); - $html->set('id', $jobs['id']); - $html->set('name', $jobs['name']); - $html->set('job', $jobs['job']); - $html->set('desc', $jobs['desc']); - $html->set('date', sys::today($jobs['date'])); - if (sys::strlen($text['text']) > 0) { - $html->unit('answer', 1, 1); - $html->set('text', $text['text']); - } else { - $html->unit('answer', 0, 1); - $html->set('text', ''); - } - $html->pack('main'); -} else { - $sql->query('SELECT * FROM `jobs` WHERE `status`!="0" ORDER BY `id` ASC'); - while ($jobs = $sql->get()) { - $html->get('list', 'jobs'); - $html->set('id', $jobs['id']); - $html->set('name', $jobs['name']); - $html->set('job', $jobs['job']); - $html->set('desc', $jobs['desc']); - $html->set('date', sys::today($jobs['date'])); - if ($id) $html->unit('close', 1, 1); else $html->unit('close', 0, 1); - $html->pack('jobs_list'); - } -} - -$html->get('index', 'jobs'); -if (!$id) - $html->set('jobs', isset($html->arr['jobs_list']) ? $html->arr['jobs_list'] : '
На данный момент у нас нет свободных вакансий.
'); -else - $html->set('jobs', ''); - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/engine/megp/auth.php b/system/engine/megp/auth.php deleted file mode 100644 index 07a358f3..00000000 --- a/system/engine/megp/auth.php +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/system/engine/megp/help.php b/system/engine/megp/help.php deleted file mode 100644 index c23e6148..00000000 --- a/system/engine/megp/help.php +++ /dev/null @@ -1,29 +0,0 @@ -query('SELECT `id` FROM `users` WHERE `id`="' . $user['id'] . '" AND `help`="0" LIMIT 1'); -if (!$sql->num()) { - $html->get('noaccess', 'sections/help'); - $html->pack('main'); -} else { - // Подключение раздела - if (!in_array($section, array('create', 'dialog', 'open', 'close', 'notice', 'upload'))) - include(ENG . '404.php'); - - $aNav = array( - 'help' => 'Техническая поддержка', - 'create' => 'Создание вопроса', - 'dialog' => 'Решение вопроса', - 'open' => 'Список открытых вопросов', - 'close' => 'Список закрытых вопросов' - ); - - $title = isset($aNav[$section]) ? $aNav[$section] : $section; - - include(SEC . 'help/' . $section . '.php'); -} -?> \ No newline at end of file diff --git a/system/engine/megp/index.php b/system/engine/megp/index.php deleted file mode 100644 index e046c0b9..00000000 --- a/system/engine/megp/index.php +++ /dev/null @@ -1,24 +0,0 @@ -query('SELECT `text`, `date` FROM `logs` WHERE `user`="' . $user['id'] . '" ORDER BY `id` DESC LIMIT 5'); -while ($aLog = $sql->get($qLog)) { - $html->get('list', 'logs'); - $html->set('text', $aLog['text']); - $html->set('date', sys::today($aLog['date'], true)); - $html->pack('logs'); -} - -$html->get('index'); -$html->set('ip', $uip); -$html->set('login', $user['login']); -$html->set('balance', round($user['balance'], 2)); -$html->set('cur', $cfg['currency']); -$html->set('logs', isset($html->arr['main']) ? $html->arr['main'] : ''); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/engine/megp/news.php b/system/engine/megp/news.php deleted file mode 100644 index 7f678499..00000000 --- a/system/engine/megp/news.php +++ /dev/null @@ -1,40 +0,0 @@ -query('SELECT `id`, `name`, `full_text`, `views`, `tags`, `date` FROM `news` WHERE `id`="' . $id . '" LIMIT 1'); - - if (!$sql->num()) - include(ENG . '404.php'); - - $news = $sql->get(); - - $title = $news['name']; - - $sql->query('UPDATE `news` set `views`="' . ($news['views'] + 1) . '" WHERE `id`="' . $id . '" LIMIT 1'); - - $html->get('news', 'sections/news'); - $html->set('id', $news['id']); - $html->set('name', htmlspecialchars_decode($news['name'])); - $html->set('text', htmlspecialchars_decode($news['full_text'])); - $html->set('date', sys::today($news['date'])); - $html->pack('main'); -} else { - $title = 'Последние новости'; - - $sql->query('SELECT `id`, `name`, `text`, `views`, `tags`, `date` FROM `news` ORDER BY `id` DESC LIMIT 5'); - while ($news = $sql->get()) { - $html->get('list', 'sections/news'); - $html->set('id', $news['id']); - $html->set('name', htmlspecialchars_decode($news['name'])); - $html->set('text', htmlspecialchars_decode($news['text'])); - $html->set('date', sys::today($news['date'])); - $html->pack('news'); - } - - $html->get('index', 'sections/news'); - $html->set('list', isset($html->arr['news']) ? $html->arr['news'] : ''); - $html->pack('main'); -} -?> \ No newline at end of file diff --git a/system/engine/megp/quit.php b/system/engine/megp/quit.php deleted file mode 100644 index 916fb7e8..00000000 --- a/system/engine/megp/quit.php +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/system/engine/megp/recovery.php b/system/engine/megp/recovery.php deleted file mode 100644 index d7672ae1..00000000 --- a/system/engine/megp/recovery.php +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/system/engine/megp/replenish.php b/system/engine/megp/replenish.php deleted file mode 100644 index cd56c7e3..00000000 --- a/system/engine/megp/replenish.php +++ /dev/null @@ -1,29 +0,0 @@ -query('SELECT `text`, `date` FROM `logs` WHERE `user`="' . $user['id'] . '" AND `type`="replenish" ORDER BY `id` DESC LIMIT 5'); -while ($aLog = $sql->get($qLog)) { - $html->get('list', 'sections/user/replenish'); - $html->set('text', $aLog['text']); - $html->set('date', sys::today($aLog['date'], true)); - $html->pack('logs'); -} - -$html->get('replenish', 'sections/user'); -$html->set('id', $user['id']); -$html->set('wmr', $cfg['webmoney_wmr']); -$html->set('freekassa', $cfg['freekassa_id']); -$html->set('unitpay', $cfg['unitpay_pubkey']); -$html->set('balance', round($user['balance'], 2)); -$html->set('cur', $cfg['currency']); -$html->set('logs', isset($html->arr['logs']) ? $html->arr['logs'] : ''); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/engine/megp/servers.php b/system/engine/megp/servers.php deleted file mode 100644 index efc1f8d7..00000000 --- a/system/engine/megp/servers.php +++ /dev/null @@ -1,72 +0,0 @@ -query('SELECT `id` FROM `servers` WHERE `user`="' . $user['id'] . '" LIMIT 1'); - $owners = $sql->query('SELECT `id` FROM `owners` WHERE `user`="' . $user['id'] . '" LIMIT 1'); - - if (!$sql->num($servers) and !$sql->num($owners)) - sys::back($cfg['http'] . 'services'); // Если нет игровых серверов отправить на страницу аренды -} - -if ($id and !$section) - $section = 'index'; - -$title = 'Управление игровыми серверами'; - -// Подключение раздела -if (in_array($section, array('action', 'scan', 'index', 'console', 'settings', 'tarif', 'boost'))) { - if (!$id) - sys::back($cfg['http'] . 'servers'); - - $sql->query('SELECT `id` FROM `servers` WHERE `id`="' . $id . '" AND `user`="' . $user['id'] . '" LIMIT 1'); - if (!$sql->num()) { - $sql->query('SELECT `rights` FROM `owners` WHERE `server`="' . $id . '" AND `user`="' . $user['id'] . '" LIMIT 1'); - if (!$sql->num()) - sys::back($cfg['http'] . 'servers'); - - $owner = $sql->get(); - - $rights = sys::b64djs($owner['rights']); - - if ($section == 'action') { - if (!isset($rights[$url['action']]) || !$rights[$url['action']]) - sys::outjs(array('e' => sys::text('error', 'ser_owner'))); - } else { - if (!in_array($section, array('index', 'scan')) and (!isset($rights[$section]) || !$rights[$section])) - sys::back($cfg['http'] . 'servers/id/' . $owner['server']); - } - - $sql->query('SELECT `id` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); - } - - if (!$sql->num()) - sys::back($cfg['http'] . 'servers'); // Если нет игрового сервера отправить на страницу списка - - $file_section = file_exists(SEC . 'megp/servers/' . $section . '.php'); - if ($file_section) - include(SEC . 'megp/servers/' . $section . '.php'); - else - sys::back($cfg['http'] . 'servers/id/' . $id); - -} else { - if ($user['group'] == 'user' and $mcache->get('servers_' . $user['id']) != '') - $html->arr['main'] = $mcache->get('servers_' . $user['id']); - else { - include(SEC . 'megp/servers/list.php'); - include(SEC . 'megp/servers/owners_list.php'); - - $html->get('servers', 'sections/servers'); - $html->set('list', isset($html->arr['list']) ? $html->arr['list'] : 'У вас нет игровых серверов', true); - $html->set('wait_servers', $wait_servers); - $html->set('updates_servers', $updates_servers); - $html->pack('main'); - - $mcache->set('servers_' . $user['id'], $html->arr['main'], false, 4); - } -} -?> \ No newline at end of file diff --git a/system/engine/news.php b/system/engine/news.php index 75e5313f..f8255f85 100644 --- a/system/engine/news.php +++ b/system/engine/news.php @@ -12,4 +12,3 @@ include(SEC . 'news/index.php'); } -?> \ No newline at end of file diff --git a/system/engine/pages.php b/system/engine/pages.php index 83fa2f72..4a2054ec 100644 --- a/system/engine/pages.php +++ b/system/engine/pages.php @@ -21,4 +21,3 @@ $html->set('content', file_get_contents(FILES . 'pages/' . $page['file'])); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/engine/partners.php b/system/engine/partners.php index 444de2e0..b34da394 100644 --- a/system/engine/partners.php +++ b/system/engine/partners.php @@ -7,4 +7,3 @@ $html->get('partners'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/engine/pluginbuy.php b/system/engine/pluginbuy.php index c3b73f80..0f9fa747 100644 --- a/system/engine/pluginbuy.php +++ b/system/engine/pluginbuy.php @@ -24,4 +24,3 @@ sys::out('true'); sys::out('false'); -?> \ No newline at end of file diff --git a/system/engine/plugins.php b/system/engine/plugins.php index a9777ede..ebe405b5 100644 --- a/system/engine/plugins.php +++ b/system/engine/plugins.php @@ -158,4 +158,3 @@ $mcache->set('plugins_list_view_' . $url['game'], $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/engine/replenish.php b/system/engine/replenish.php index e0b29906..bf97e7b5 100644 --- a/system/engine/replenish.php +++ b/system/engine/replenish.php @@ -9,4 +9,3 @@ sys::out(file_get_contents(ROOT . 'success.html')); else sys::out(file_get_contents(ROOT . 'fail.html')); -?> \ No newline at end of file diff --git a/system/engine/servers.php b/system/engine/servers.php index 29feecaa..49efad73 100644 --- a/system/engine/servers.php +++ b/system/engine/servers.php @@ -101,4 +101,3 @@ $mcache->set('servers_' . $user['id'], $html->arr['main'], false, 4); } } -?> \ No newline at end of file diff --git a/system/engine/services.php b/system/engine/services.php index 5380fbbe..cab06597 100644 --- a/system/engine/services.php +++ b/system/engine/services.php @@ -33,4 +33,3 @@ include(SEC . 'services/' . $section . '.php'); } -?> \ No newline at end of file diff --git a/system/engine/unitpay.php b/system/engine/unitpay.php index 6fc680cc..c5afd90d 100644 --- a/system/engine/unitpay.php +++ b/system/engine/unitpay.php @@ -123,4 +123,3 @@ function getSignature($method, $params, $secretKey) case 'error': sys::outjs(array('result' => array('message' => 'Запрос успешно обработан'))); } -?> \ No newline at end of file diff --git a/system/engine/unitpay_entity.php b/system/engine/unitpay_entity.php index da6057ff..6e773604 100644 --- a/system/engine/unitpay_entity.php +++ b/system/engine/unitpay_entity.php @@ -114,4 +114,3 @@ function getSha256SignatureByMethodAndParams($method, array $params, $secretKey) case 'error': sys::outjs(array('result' => array('message' => 'Запрос успешно обработан'))); } -?> \ No newline at end of file diff --git a/system/engine/user.php b/system/engine/user.php index 67e13eee..26307da6 100644 --- a/system/engine/user.php +++ b/system/engine/user.php @@ -23,4 +23,3 @@ $html->nav($title); include(SEC . 'user/' . $section . '.php'); -?> diff --git a/system/engine/webmoney.php b/system/engine/webmoney.php index c80c5acc..27a08c5f 100644 --- a/system/engine/webmoney.php +++ b/system/engine/webmoney.php @@ -91,4 +91,3 @@ $sql->query('INSERT INTO `logs` set `user`="' . $user['id'] . '", `text`="Пополнение баланса на сумму: ' . $sum . ' ' . $cfg['currency'] . '", `date`="' . $start_point . '", `type`="replenish", `money`="' . $sum . '"'); sys::out('success'); -?> \ No newline at end of file diff --git a/system/engine/wiki.php b/system/engine/wiki.php index b0230dd3..64522dbb 100644 --- a/system/engine/wiki.php +++ b/system/engine/wiki.php @@ -8,4 +8,3 @@ include(SEC . 'wiki/' . $section . '.php'); else include(SEC . 'wiki/index.php'); -?> \ No newline at end of file diff --git a/system/library/acpsystem.php b/system/library/acpsystem.php index ac0ccbb2..6bb58389 100644 --- a/system/library/acpsystem.php +++ b/system/library/acpsystem.php @@ -561,7 +561,7 @@ public static function checkdate($time) public static function passwdkey($passwd) { - return md5($passwd); + return password_hash($passwd, PASSWORD_DEFAULT); } public static function mail($name, $text, $mail) @@ -702,5 +702,3 @@ public static function logMessage($message, $logFile = 'enginegp_info', $context $logger->info($message, $context); } } - -?> \ No newline at end of file diff --git a/system/library/api.php b/system/library/api.php index 6dca12c4..9cfc629f 100644 --- a/system/library/api.php +++ b/system/library/api.php @@ -92,5 +92,3 @@ public function console($id, $cmd) include(SEC . 'servers/' . $server['game'] . '/console.php'); } } - -?> \ No newline at end of file diff --git a/system/library/control/control.php b/system/library/control/control.php index e7f26050..41206452 100644 --- a/system/library/control/control.php +++ b/system/library/control/control.php @@ -215,7 +215,7 @@ public static function nav($server, $id, $sid, $active) public static function route($server, $inc, $go) { - global $device, $start_point; + global $start_point; if (in_array($server['status'], array('install', 'reinstall', 'update', 'recovery'))) { if ($go) @@ -232,7 +232,7 @@ public static function route($server, $inc, $go) public static function cpulist($unit, $core, $count = false) { - global $device, $start_point; + global $start_point; include(LIB . 'ssh.php'); @@ -421,7 +421,7 @@ public static function crontab($data = array(), $id, $cid) else { $weeks = $week[1] . ',' . $week[2] . ',' . $week[3] . ',' . $week[4] . ',' . $week[5] . ',' . $week[6] . ',' . $week[7]; $weeks = str_replace(array(',0', '0'), '', $weeks); - $week = $weeks{0} == ',' ? substr($weeks, 1) : $weeks; + $week = $weeks[0] == ',' ? substr($weeks, 1) : $weeks; } $cron_task = $time . $week . ' screen -dmS s' . $id . ' bash -c \'cd /var/enginegp && php cron.php ' . $cfg['cron_key'] . ' control_server_cron ' . $id . ' ' . $cid . '\''; @@ -429,5 +429,3 @@ public static function crontab($data = array(), $id, $cid) return $cron_task; } } - -?> \ No newline at end of file diff --git a/system/library/control/cs/action.php b/system/library/control/cs/action.php index 323d0a26..eb231e0d 100644 --- a/system/library/control/cs/action.php +++ b/system/library/control/cs/action.php @@ -103,5 +103,3 @@ public static function start($id, $type = 'start') return array('s' => 'ok'); } } - -?> \ No newline at end of file diff --git a/system/library/control/cs/rcon.php b/system/library/control/cs/rcon.php index 954085af..3ed0523a 100644 --- a/system/library/control/cs/rcon.php +++ b/system/library/control/cs/rcon.php @@ -99,5 +99,3 @@ public static function country($ip) return array('ico' => $ico, 'name' => empty($cData['country']['name_ru']) ? 'Не определена' : $cData['country']['name_ru']); } } - -?> \ No newline at end of file diff --git a/system/library/control/cs/scan.php b/system/library/control/cs/scan.php index 441d0926..db45623f 100644 --- a/system/library/control/cs/scan.php +++ b/system/library/control/cs/scan.php @@ -112,15 +112,21 @@ public static function info($sq, $id, $pl = false) return $data; } - $data = $sq->GetInfo(); - - $server['name'] = $data['HostName']; - $server['map'] = $data['Map']; - $server['online'] = $data['Players']; - $server['status'] = strlen($server['map']) > 3 ? true : false; + try { + $data = $sq->GetInfo(); + + $server['name'] = $data['HostName']; + $server['map'] = $data['Map']; + $server['online'] = $data['Players']; + $server['status'] = strlen($server['map']) > 3; + } catch (Exception $e) { + // В случае, если не удалось получить данные из сокета, то подставляем значения из базы данных + $server['name'] = isset($server['name']); + $server['map'] = isset($server['map']); + $server['online'] = isset($server['online']); + $server['status'] = strlen($server['map']) > 3; + } return $server; } } - -?> \ No newline at end of file diff --git a/system/library/control/csgo/action.php b/system/library/control/csgo/action.php index 698c216f..c98afcf8 100644 --- a/system/library/control/csgo/action.php +++ b/system/library/control/csgo/action.php @@ -271,5 +271,3 @@ public static function update($id) return array('s' => 'ok'); } } - -?> \ No newline at end of file diff --git a/system/library/control/csgo/rcon.php b/system/library/control/csgo/rcon.php index 41c91f40..133af059 100644 --- a/system/library/control/csgo/rcon.php +++ b/system/library/control/csgo/rcon.php @@ -101,5 +101,3 @@ public static function country($ip) return array('ico' => $ico, 'name' => empty($cData['country']['name_ru']) ? 'Не определена' : $cData['country']['name_ru']); } } - -?> \ No newline at end of file diff --git a/system/library/control/csgo/scan.php b/system/library/control/csgo/scan.php index e3d68164..ef402768 100644 --- a/system/library/control/csgo/scan.php +++ b/system/library/control/csgo/scan.php @@ -112,17 +112,23 @@ public static function info($sq, $id, $pl = false) return $data; } - $data = $sq->GetInfo(); - - $map = explode('/', $data['Map']); - - $server['name'] = $data['HostName']; - $server['map'] = end($map); - $server['online'] = $data['Players']; - $server['status'] = strlen($server['map']) > 3 ? true : false; + try { + $data = $sq->GetInfo(); + + $map = explode('/', $data['Map']); + + $server['name'] = $data['HostName']; + $server['map'] = end($map); + $server['online'] = $data['Players']; + $server['status'] = strlen($server['map']) > 3; + } catch (Exception $e) { + // В случае, если не удалось получить данные из сокета, то подставляем значения из базы данных + $server['name'] = isset($server['name']); + $server['map'] = isset($server['map']); + $server['online'] = isset($server['online']); + $server['status'] = strlen($server['map']) > 3; + } return $server; } } - -?> \ No newline at end of file diff --git a/system/library/control/css/action.php b/system/library/control/css/action.php index dbb47e1e..4915ac06 100644 --- a/system/library/control/css/action.php +++ b/system/library/control/css/action.php @@ -168,5 +168,3 @@ public static function update($id) return array('s' => 'ok'); } } - -?> \ No newline at end of file diff --git a/system/library/control/css/rcon.php b/system/library/control/css/rcon.php index b3814727..9a52814d 100644 --- a/system/library/control/css/rcon.php +++ b/system/library/control/css/rcon.php @@ -101,5 +101,3 @@ public static function country($ip) return array('ico' => $ico, 'name' => empty($cData['country']['name_ru']) ? 'Не определена' : $cData['country']['name_ru']); } } - -?> \ No newline at end of file diff --git a/system/library/control/css/scan.php b/system/library/control/css/scan.php index 7807651b..76467712 100644 --- a/system/library/control/css/scan.php +++ b/system/library/control/css/scan.php @@ -112,15 +112,21 @@ public static function info($sq, $id, $pl = false) return $data; } - $data = $sq->GetInfo(); - - $server['name'] = $data['HostName']; - $server['map'] = $data['Map']; - $server['online'] = $data['Players']; - $server['status'] = strlen($server['map']) > 3 ? true : false; + try { + $data = $sq->GetInfo(); + + $server['name'] = $data['HostName']; + $server['map'] = $data['Map']; + $server['online'] = $data['Players']; + $server['status'] = strlen($server['map']) > 3; + } catch (Exception $e) { + // В случае, если не удалось получить данные из сокета, то подставляем значения из базы данных + $server['name'] = isset($server['name']); + $server['map'] = isset($server['map']); + $server['online'] = isset($server['online']); + $server['status'] = strlen($server['map']) > 3; + } return $server; } } - -?> \ No newline at end of file diff --git a/system/library/control/cssold/action.php b/system/library/control/cssold/action.php index f7512e75..e62a4041 100644 --- a/system/library/control/cssold/action.php +++ b/system/library/control/cssold/action.php @@ -104,5 +104,3 @@ public static function start($id, $type = 'start') return array('s' => 'ok'); } } - -?> \ No newline at end of file diff --git a/system/library/control/cssold/rcon.php b/system/library/control/cssold/rcon.php index 4f0a1c84..17e8bbf8 100644 --- a/system/library/control/cssold/rcon.php +++ b/system/library/control/cssold/rcon.php @@ -101,5 +101,3 @@ public static function country($ip) return array('ico' => $ico, 'name' => empty($cData['country']['name_ru']) ? 'Не определена' : $cData['country']['name_ru']); } } - -?> \ No newline at end of file diff --git a/system/library/control/cssold/scan.php b/system/library/control/cssold/scan.php index 7807651b..76467712 100644 --- a/system/library/control/cssold/scan.php +++ b/system/library/control/cssold/scan.php @@ -112,15 +112,21 @@ public static function info($sq, $id, $pl = false) return $data; } - $data = $sq->GetInfo(); - - $server['name'] = $data['HostName']; - $server['map'] = $data['Map']; - $server['online'] = $data['Players']; - $server['status'] = strlen($server['map']) > 3 ? true : false; + try { + $data = $sq->GetInfo(); + + $server['name'] = $data['HostName']; + $server['map'] = $data['Map']; + $server['online'] = $data['Players']; + $server['status'] = strlen($server['map']) > 3; + } catch (Exception $e) { + // В случае, если не удалось получить данные из сокета, то подставляем значения из базы данных + $server['name'] = isset($server['name']); + $server['map'] = isset($server['map']); + $server['online'] = isset($server['online']); + $server['status'] = strlen($server['map']) > 3; + } return $server; } } - -?> \ No newline at end of file diff --git a/system/library/control/plugins.php b/system/library/control/plugins.php index b22a885a..3cebfdfd 100644 --- a/system/library/control/plugins.php +++ b/system/library/control/plugins.php @@ -166,5 +166,3 @@ public static function write($write, $uid, $dir) return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/control/scans.php b/system/library/control/scans.php index 34f36c75..4d1cdd7c 100644 --- a/system/library/control/scans.php +++ b/system/library/control/scans.php @@ -179,5 +179,3 @@ public static function status($id) return 'server -> no change -> end scan'; } } - -?> \ No newline at end of file diff --git a/system/library/cron.php b/system/library/cron.php index a5e1f348..d8e83be1 100644 --- a/system/library/cron.php +++ b/system/library/cron.php @@ -1,13 +1,20 @@ pushHandler(new \Whoops\Handler\PrettyPageHandler); +$whoops->register(); +// логи в файл +$loggingInFile = new \Whoops\Handler\PlainTextHandler(); +$loggingInFile->loggerOnly(true); +$loggingInFile->setLogger((new \Monolog\Logger('EngineGP', [(new \Monolog\Handler\StreamHandler(ROOT . '/logs/cron.log'))->setFormatter((new \Monolog\Formatter\LineFormatter(null, null, true)))]))); +$whoops->pushHandler($loggingInFile); // Подгрузка трейта if (!file_exists(CRON . $task . '.php')) - exit('error method'); + exit('Invalid cron method'); -$device = '!mobile'; $user = array('id' => 0, 'group' => 'admin'); class cron @@ -77,4 +84,3 @@ public static function thread($num, $type, $aData) include(CRON . $task . '.php'); new $task(); -?> \ No newline at end of file diff --git a/system/library/cron/control_delete.php b/system/library/cron/control_delete.php index ee0c1fdb..62c63c5e 100644 --- a/system/library/cron/control_delete.php +++ b/system/library/cron/control_delete.php @@ -32,5 +32,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/control_install.php b/system/library/cron/control_install.php index b33efb56..a1794ce7 100644 --- a/system/library/cron/control_install.php +++ b/system/library/cron/control_install.php @@ -32,5 +32,3 @@ function __construct() exit('install'); } } - -?> \ No newline at end of file diff --git a/system/library/cron/control_scan_servers.php b/system/library/cron/control_scan_servers.php index e9965cbb..0e7be885 100644 --- a/system/library/cron/control_scan_servers.php +++ b/system/library/cron/control_scan_servers.php @@ -100,5 +100,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/control_scan_servers_admins.php b/system/library/cron/control_scan_servers_admins.php index 67b6852f..ca27443b 100644 --- a/system/library/cron/control_scan_servers_admins.php +++ b/system/library/cron/control_scan_servers_admins.php @@ -63,5 +63,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/control_scan_servers_copy.php b/system/library/cron/control_scan_servers_copy.php index 0253eeb4..01521c43 100644 --- a/system/library/cron/control_scan_servers_copy.php +++ b/system/library/cron/control_scan_servers_copy.php @@ -48,5 +48,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/control_scan_servers_down.php b/system/library/cron/control_scan_servers_down.php index 111149d9..48d62f5e 100644 --- a/system/library/cron/control_scan_servers_down.php +++ b/system/library/cron/control_scan_servers_down.php @@ -58,5 +58,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/control_scan_servers_route.php b/system/library/cron/control_scan_servers_route.php index 71a87dd3..9275afa3 100644 --- a/system/library/cron/control_scan_servers_route.php +++ b/system/library/cron/control_scan_servers_route.php @@ -97,5 +97,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/control_server_action.php b/system/library/cron/control_server_action.php index 78063c0f..6e4a0b76 100644 --- a/system/library/cron/control_server_action.php +++ b/system/library/cron/control_server_action.php @@ -51,5 +51,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/control_server_cron.php b/system/library/cron/control_server_cron.php index 2197c25b..2ece9d18 100644 --- a/system/library/cron/control_server_cron.php +++ b/system/library/cron/control_server_cron.php @@ -21,5 +21,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/control_server_scan.php b/system/library/cron/control_server_scan.php index 46063ff9..7d28b485 100644 --- a/system/library/cron/control_server_scan.php +++ b/system/library/cron/control_server_scan.php @@ -16,5 +16,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/control_threads.php b/system/library/cron/control_threads.php index 05fceac7..d06717b9 100644 --- a/system/library/cron/control_threads.php +++ b/system/library/cron/control_threads.php @@ -57,5 +57,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/graph_servers_day.php b/system/library/cron/graph_servers_day.php index b97593e8..77bae5c9 100644 --- a/system/library/cron/graph_servers_day.php +++ b/system/library/cron/graph_servers_day.php @@ -45,5 +45,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/graph_servers_hour.php b/system/library/cron/graph_servers_hour.php index 47926281..495f17d6 100644 --- a/system/library/cron/graph_servers_hour.php +++ b/system/library/cron/graph_servers_hour.php @@ -24,5 +24,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/notice_help.php b/system/library/cron/notice_help.php index 17d09c07..ff497d4a 100644 --- a/system/library/cron/notice_help.php +++ b/system/library/cron/notice_help.php @@ -28,5 +28,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/notice_help_admin.php b/system/library/cron/notice_help_admin.php index 9cda7b1d..aeb9e053 100644 --- a/system/library/cron/notice_help_admin.php +++ b/system/library/cron/notice_help_admin.php @@ -32,5 +32,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/notice_server_overdue.php b/system/library/cron/notice_server_overdue.php index b762c005..3a027c90 100644 --- a/system/library/cron/notice_server_overdue.php +++ b/system/library/cron/notice_server_overdue.php @@ -26,5 +26,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/preparing_web_delete.php b/system/library/cron/preparing_web_delete.php index f68e5ce6..4402c2f8 100644 --- a/system/library/cron/preparing_web_delete.php +++ b/system/library/cron/preparing_web_delete.php @@ -15,5 +15,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/privileges.php b/system/library/cron/privileges.php index d6516587..a747ab88 100644 --- a/system/library/cron/privileges.php +++ b/system/library/cron/privileges.php @@ -93,5 +93,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/scan_control.php b/system/library/cron/scan_control.php index 9b8329b2..d90f6a43 100644 --- a/system/library/cron/scan_control.php +++ b/system/library/cron/scan_control.php @@ -18,5 +18,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/scan_servers.php b/system/library/cron/scan_servers.php index ea6e57a5..65c0805b 100644 --- a/system/library/cron/scan_servers.php +++ b/system/library/cron/scan_servers.php @@ -98,7 +98,7 @@ function __construct() $sql->query('INSERT INTO `logs_sys` set `user`="0", `server`="' . $id . '", `text`="Включение сервера: сервер выключен не через панель", `time`="' . $start_point . '"'); - continue; + continue 2; } } @@ -137,5 +137,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/scan_servers_admins.php b/system/library/cron/scan_servers_admins.php index 2bbb77e4..4791f4dc 100644 --- a/system/library/cron/scan_servers_admins.php +++ b/system/library/cron/scan_servers_admins.php @@ -66,5 +66,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/scan_servers_copy.php b/system/library/cron/scan_servers_copy.php index e31851a4..8ca94391 100644 --- a/system/library/cron/scan_servers_copy.php +++ b/system/library/cron/scan_servers_copy.php @@ -48,5 +48,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/scan_servers_down.php b/system/library/cron/scan_servers_down.php index 2ce6144a..6d58ae98 100644 --- a/system/library/cron/scan_servers_down.php +++ b/system/library/cron/scan_servers_down.php @@ -58,5 +58,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/scan_servers_load.php b/system/library/cron/scan_servers_load.php index fb89d7f4..4cd13b24 100644 --- a/system/library/cron/scan_servers_load.php +++ b/system/library/cron/scan_servers_load.php @@ -88,5 +88,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/scan_servers_route.php b/system/library/cron/scan_servers_route.php index 10c094c1..bf3b730c 100644 --- a/system/library/cron/scan_servers_route.php +++ b/system/library/cron/scan_servers_route.php @@ -97,5 +97,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/scan_servers_stop.php b/system/library/cron/scan_servers_stop.php index 29a6d455..1ce1aa1b 100644 --- a/system/library/cron/scan_servers_stop.php +++ b/system/library/cron/scan_servers_stop.php @@ -53,5 +53,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/server_action.php b/system/library/cron/server_action.php index db0f1ad0..4acc1494 100644 --- a/system/library/cron/server_action.php +++ b/system/library/cron/server_action.php @@ -51,5 +51,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/server_cron.php b/system/library/cron/server_cron.php index 24ec8f36..06c12b6f 100644 --- a/system/library/cron/server_cron.php +++ b/system/library/cron/server_cron.php @@ -21,5 +21,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/server_delete.php b/system/library/cron/server_delete.php index a7bd083f..17fe1b7b 100644 --- a/system/library/cron/server_delete.php +++ b/system/library/cron/server_delete.php @@ -139,5 +139,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/server_scan.php b/system/library/cron/server_scan.php index 8a728d80..3bf2acaa 100644 --- a/system/library/cron/server_scan.php +++ b/system/library/cron/server_scan.php @@ -16,5 +16,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/threads.php b/system/library/cron/threads.php index 6b74d959..5d7a5b13 100644 --- a/system/library/cron/threads.php +++ b/system/library/cron/threads.php @@ -54,7 +54,7 @@ function __construct() foreach ($threads as $thread) { foreach ($thread as $screen => $servers) - $cmd .= 'sudo -u www-data screen -dmS scan_' . (sys::first(explode(' ', $servers))) . '_' . $screen . ' taskset -c ' . $cfg['cron_taskset'] . ' sh -c \"cd /var/www/enginegp; php7.4 cron.php ' . $cfg['cron_key'] . ' ' . $argv[3] . ' ' . $servers . '\"; sleep 1;'; + $cmd .= 'sudo -u www-data screen -dmS scan_' . (sys::first(explode(' ', $servers))) . '_' . $screen . ' taskset -c ' . $cfg['cron_taskset'] . ' sh -c \"cd /var/www/enginegp; php cron.php ' . $cfg['cron_key'] . ' ' . $argv[3] . ' ' . $servers . '\"; sleep 1;'; } $start_point = $_SERVER['REQUEST_TIME']; @@ -63,5 +63,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/update_address.php b/system/library/cron/update_address.php index 63190b25..18aa2546 100644 --- a/system/library/cron/update_address.php +++ b/system/library/cron/update_address.php @@ -39,5 +39,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/users_recovery_signup.php b/system/library/cron/users_recovery_signup.php index 5e21ed8b..5a772271 100644 --- a/system/library/cron/users_recovery_signup.php +++ b/system/library/cron/users_recovery_signup.php @@ -16,5 +16,3 @@ function __construct() return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/cron/web_delete.php b/system/library/cron/web_delete.php index b6c7aed6..12790500 100644 --- a/system/library/cron/web_delete.php +++ b/system/library/cron/web_delete.php @@ -32,5 +32,3 @@ function __construct() web::delete($aData, false); } } - -?> \ No newline at end of file diff --git a/system/library/ftp.php b/system/library/ftp.php index fa145951..79198e8a 100644 --- a/system/library/ftp.php +++ b/system/library/ftp.php @@ -492,5 +492,3 @@ private function who($address) return $address; } } - -?> \ No newline at end of file diff --git a/system/library/games/boost.php b/system/library/games/boost.php index 4279387b..444de587 100644 --- a/system/library/games/boost.php +++ b/system/library/games/boost.php @@ -110,5 +110,3 @@ private function othercurl($aData) return array('error' => $aErr[$result]); } } - -?> \ No newline at end of file diff --git a/system/library/games/crmp/action.php b/system/library/games/crmp/action.php index 433b607f..7aae1a00 100644 --- a/system/library/games/crmp/action.php +++ b/system/library/games/crmp/action.php @@ -123,5 +123,3 @@ public static function config($ip, $port, $slots, $config) return $eConfig; } } - -?> \ No newline at end of file diff --git a/system/library/games/crmp/scan.php b/system/library/games/crmp/scan.php index ecd45962..b9e386fd 100644 --- a/system/library/games/crmp/scan.php +++ b/system/library/games/crmp/scan.php @@ -108,5 +108,3 @@ public static function players($aPlayrs) return $aData; } } - -?> \ No newline at end of file diff --git a/system/library/games/crmp/service.php b/system/library/games/crmp/service.php index 6183ca08..0dc3dc04 100644 --- a/system/library/games/crmp/service.php +++ b/system/library/games/crmp/service.php @@ -336,5 +336,3 @@ public static function install($aSDATA = array()) return $id; } } - -?> \ No newline at end of file diff --git a/system/library/games/crmp/tarif.php b/system/library/games/crmp/tarif.php index 44b562c1..9fb72832 100644 --- a/system/library/games/crmp/tarif.php +++ b/system/library/games/crmp/tarif.php @@ -171,5 +171,3 @@ public static function unit_new($tarif, $unit, $server, $mcache) return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/games/cs/action.php b/system/library/games/cs/action.php index a29f6375..910a8c8c 100644 --- a/system/library/games/cs/action.php +++ b/system/library/games/cs/action.php @@ -122,5 +122,3 @@ public static function start($id, $type = 'start') return array('s' => 'ok'); } } - -?> \ No newline at end of file diff --git a/system/library/games/cs/rcon.php b/system/library/games/cs/rcon.php index f715c8e3..7671a1aa 100644 --- a/system/library/games/cs/rcon.php +++ b/system/library/games/cs/rcon.php @@ -102,5 +102,3 @@ public static function country($ip) return array('ico' => $ico, 'name' => empty($cData['country']['name_ru']) ? 'Не определена' : $cData['country']['name_ru']); } } - -?> \ No newline at end of file diff --git a/system/library/games/cs/scan.php b/system/library/games/cs/scan.php index 0edb51b6..793c1ad2 100644 --- a/system/library/games/cs/scan.php +++ b/system/library/games/cs/scan.php @@ -119,15 +119,21 @@ public static function info($sq, $id, $pl = false) return $data; } - $data = $sq->GetInfo(); - - $server['name'] = $data['HostName']; - $server['map'] = $data['Map']; - $server['online'] = $data['Players']; - $server['status'] = strlen($server['map']) > 3 ? true : false; + try { + $data = $sq->GetInfo(); + + $server['name'] = $data['HostName']; + $server['map'] = $data['Map']; + $server['online'] = $data['Players']; + $server['status'] = strlen($server['map']) > 3; + } catch (Exception $e) { + // В случае, если не удалось получить данные из сокета, то подставляем значения из базы данных + $server['name'] = isset($server['name']); + $server['map'] = isset($server['map']); + $server['online'] = isset($server['online']); + $server['status'] = strlen($server['map']) > 3; + } return $server; } } - -?> \ No newline at end of file diff --git a/system/library/games/cs/service.php b/system/library/games/cs/service.php index 73ac28dd..855976fd 100644 --- a/system/library/games/cs/service.php +++ b/system/library/games/cs/service.php @@ -349,5 +349,3 @@ public static function install($aSDATA = array()) return $id; } } - -?> \ No newline at end of file diff --git a/system/library/games/cs/tarif.php b/system/library/games/cs/tarif.php index aecbec7e..aa1f8b80 100644 --- a/system/library/games/cs/tarif.php +++ b/system/library/games/cs/tarif.php @@ -216,5 +216,3 @@ public static function unit_new($tarif, $unit, $server, $mcache) return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/games/cs2/action.php b/system/library/games/cs2/action.php index 127e1adb..fe99000d 100644 --- a/system/library/games/cs2/action.php +++ b/system/library/games/cs2/action.php @@ -304,5 +304,3 @@ public static function update($id) return array('s' => 'ok'); } } - -?> \ No newline at end of file diff --git a/system/library/games/cs2/rcon.php b/system/library/games/cs2/rcon.php index cbc61106..f5f54635 100644 --- a/system/library/games/cs2/rcon.php +++ b/system/library/games/cs2/rcon.php @@ -105,5 +105,3 @@ public static function country($ip) return array('ico' => $ico, 'name' => empty($cData['country']['name_ru']) ? 'Не определена' : $cData['country']['name_ru']); } } - -?> \ No newline at end of file diff --git a/system/library/games/cs2/scan.php b/system/library/games/cs2/scan.php index 6a0e78a0..ce429f6e 100644 --- a/system/library/games/cs2/scan.php +++ b/system/library/games/cs2/scan.php @@ -119,17 +119,23 @@ public static function info($sq, $id, $pl = false) return $data; } - $data = $sq->GetInfo(); - - $map = explode('/', $data['Map'] ?? ''); - - $server['name'] = $data['HostName']; - $server['map'] = end($map); - $server['online'] = $data['Players']; - $server['status'] = strlen($server['map']) > 3 ? true : false; + try { + $data = $sq->GetInfo(); + + $map = explode('/', $data['Map']); + + $server['name'] = $data['HostName']; + $server['map'] = end($map); + $server['online'] = $data['Players']; + $server['status'] = strlen($server['map']) > 3; + } catch (Exception $e) { + // В случае, если не удалось получить данные из сокета, то подставляем значения из базы данных + $server['name'] = isset($server['name']); + $server['map'] = isset($server['map']); + $server['online'] = isset($server['online']); + $server['status'] = strlen($server['map']) > 3; + } return $server; } } - -?> \ No newline at end of file diff --git a/system/library/games/cs2/service.php b/system/library/games/cs2/service.php index 7b52e436..3f1d3f1e 100644 --- a/system/library/games/cs2/service.php +++ b/system/library/games/cs2/service.php @@ -350,5 +350,3 @@ public static function install($aSDATA = array()) return $id; } } - -?> \ No newline at end of file diff --git a/system/library/games/cs2/tarif.php b/system/library/games/cs2/tarif.php index 17c7c164..ab166363 100644 --- a/system/library/games/cs2/tarif.php +++ b/system/library/games/cs2/tarif.php @@ -216,5 +216,3 @@ public static function unit_new($tarif, $unit, $server, $mcache) return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/games/csgo/action.php b/system/library/games/csgo/action.php index 548a9d4e..f541345e 100644 --- a/system/library/games/csgo/action.php +++ b/system/library/games/csgo/action.php @@ -73,7 +73,7 @@ public static function start($id, $type = 'start') $bots = $cfg['bots'][$server['game']] ? '' : '-nobots'; // TV - $tv = $server['tv'] ? '+tv_enable 1 +tv_maxclients 30 +tv_port ' . ($port + 10000) : '-nohltv'; + $tv = isset($server['tv']) ? '+tv_enable 1 +tv_maxclients 30 +tv_port ' . ($port + 10000) : '-nohltv'; $check = explode('/', $server['map_start']); @@ -291,5 +291,3 @@ public static function update($id) return array('s' => 'ok'); } } - -?> \ No newline at end of file diff --git a/system/library/games/csgo/rcon.php b/system/library/games/csgo/rcon.php index f05b2c03..1bad003c 100644 --- a/system/library/games/csgo/rcon.php +++ b/system/library/games/csgo/rcon.php @@ -104,5 +104,3 @@ public static function country($ip) return array('ico' => $ico, 'name' => empty($cData['country']['name_ru']) ? 'Не определена' : $cData['country']['name_ru']); } } - -?> \ No newline at end of file diff --git a/system/library/games/csgo/scan.php b/system/library/games/csgo/scan.php index 89b69d9f..ce429f6e 100644 --- a/system/library/games/csgo/scan.php +++ b/system/library/games/csgo/scan.php @@ -119,17 +119,23 @@ public static function info($sq, $id, $pl = false) return $data; } - $data = $sq->GetInfo(); - - $map = explode('/', $data['Map']); - - $server['name'] = $data['HostName']; - $server['map'] = end($map); - $server['online'] = $data['Players']; - $server['status'] = strlen($server['map']) > 3 ? true : false; + try { + $data = $sq->GetInfo(); + + $map = explode('/', $data['Map']); + + $server['name'] = $data['HostName']; + $server['map'] = end($map); + $server['online'] = $data['Players']; + $server['status'] = strlen($server['map']) > 3; + } catch (Exception $e) { + // В случае, если не удалось получить данные из сокета, то подставляем значения из базы данных + $server['name'] = isset($server['name']); + $server['map'] = isset($server['map']); + $server['online'] = isset($server['online']); + $server['status'] = strlen($server['map']) > 3; + } return $server; } } - -?> \ No newline at end of file diff --git a/system/library/games/csgo/service.php b/system/library/games/csgo/service.php index 65b087cb..33cb4712 100644 --- a/system/library/games/csgo/service.php +++ b/system/library/games/csgo/service.php @@ -350,5 +350,3 @@ public static function install($aSDATA = array()) return $id; } } - -?> \ No newline at end of file diff --git a/system/library/games/csgo/tarif.php b/system/library/games/csgo/tarif.php index 17c7c164..ab166363 100644 --- a/system/library/games/csgo/tarif.php +++ b/system/library/games/csgo/tarif.php @@ -216,5 +216,3 @@ public static function unit_new($tarif, $unit, $server, $mcache) return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/games/css/action.php b/system/library/games/css/action.php index ae7525e7..71d77daf 100644 --- a/system/library/games/css/action.php +++ b/system/library/games/css/action.php @@ -71,7 +71,7 @@ public static function start($id, $type = 'start') $bots = $cfg['bots'][$server['game']] ? '' : '-nobots'; // TV - $tv = $server['tv'] ? '+tv_enable 1 +tv_maxclients 30 +tv_port ' . ($port + 10000) : '-nohltv'; + $tv = isset($server['tv']) ? '+tv_enable 1 +tv_maxclients 30 +tv_port ' . ($port + 10000) : '-nohltv'; // Параметры запуска $bash = './srcds_run -debug -game cstrike -norestart -condebug console.log -tickrate ' . $server['tickrate'] . ' +servercfgfile server.cfg +map \'' . $server['map_start'] . '\' +maxplayers ' . $server['slots_start'] . ' +ip ' . $ip . ' +port ' . $port . ' -sv_lan 0 ' . $vac . ' ' . $bots . ' ' . $tv; @@ -180,5 +180,3 @@ public static function update($id) return array('s' => 'ok'); } } - -?> \ No newline at end of file diff --git a/system/library/games/css/rcon.php b/system/library/games/css/rcon.php index adbd0748..afc16e82 100644 --- a/system/library/games/css/rcon.php +++ b/system/library/games/css/rcon.php @@ -104,5 +104,3 @@ public static function country($ip) return array('ico' => $ico, 'name' => empty($cData['country']['name_ru']) ? 'Не определена' : $cData['country']['name_ru']); } } - -?> \ No newline at end of file diff --git a/system/library/games/css/scan.php b/system/library/games/css/scan.php index 7dcb088f..e10e02b3 100644 --- a/system/library/games/css/scan.php +++ b/system/library/games/css/scan.php @@ -119,15 +119,21 @@ public static function info($sq, $id, $pl = false) return $data; } - $data = $sq->GetInfo(); - - $server['name'] = $data['HostName']; - $server['map'] = $data['Map']; - $server['online'] = $data['Players']; - $server['status'] = strlen($server['map']) > 3 ? true : false; + try { + $data = $sq->GetInfo(); + + $server['name'] = $data['HostName']; + $server['map'] = $data['Map']; + $server['online'] = $data['Players']; + $server['status'] = strlen($server['map']) > 3; + } catch (Exception $e) { + // В случае, если не удалось получить данные из сокета, то подставляем значения из базы данных + $server['name'] = isset($server['name']); + $server['map'] = isset($server['map']); + $server['online'] = isset($server['online']); + $server['status'] = strlen($server['map']) > 3; + } return $server; } } - -?> \ No newline at end of file diff --git a/system/library/games/css/service.php b/system/library/games/css/service.php index 469d51e8..652f50af 100644 --- a/system/library/games/css/service.php +++ b/system/library/games/css/service.php @@ -350,5 +350,3 @@ public static function install($aSDATA = array()) return $id; } } - -?> \ No newline at end of file diff --git a/system/library/games/css/tarif.php b/system/library/games/css/tarif.php index 17c7c164..ab166363 100644 --- a/system/library/games/css/tarif.php +++ b/system/library/games/css/tarif.php @@ -216,5 +216,3 @@ public static function unit_new($tarif, $unit, $server, $mcache) return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/games/cssold/action.php b/system/library/games/cssold/action.php index 8f15cba4..11c6124f 100644 --- a/system/library/games/cssold/action.php +++ b/system/library/games/cssold/action.php @@ -71,13 +71,13 @@ public static function start($id, $type = 'start') $bots = $cfg['bots'][$server['game']] ? '' : '-nobots'; // TV - $tv = $server['tv'] ? '+tv_enable 1 +tv_maxclients 30 +tv_port ' . ($port + 10000) : '-nohltv'; + $tv = isset($server['tv']) ? '+tv_enable 1 +tv_maxclients 30 +tv_port ' . ($port + 10000) : '-nohltv'; // FPS $fps = $server['fps'] + $cfg['fpsplus']; // Параметры запуска - $bash = './srcds_run -debug -game cstrike -norestart -condebug console.log -tickrate ' . $server['tickrate'] . ' +fps_egp ' . $fps . ' +servercfgfile server.cfg +map \'' . $server['map_start'] . '\' +maxplayers ' . $server['slots_start'] . ' +ip ' . $ip . ' +port ' . $port . ' +sv_lan 0 -nomaster -localcser ' . $vac . ' ' . $bots . ' ' . $tv; + $bash = './srcds_run -debug -game cstrike -norestart -condebug console.log -tickrate ' . $server['tickrate'] . ' +fps_max ' . $fps . ' +servercfgfile server.cfg +map \'' . $server['map_start'] . '\' -maxplayers ' . $server['slots_start'] . ' -ip ' . $ip . ' -port ' . $port . ' +sv_lan 0 -nomaster -localcser ' . $vac . ' ' . $bots . ' ' . $tv; // Временный файл $temp = sys::temp($bash); @@ -110,5 +110,3 @@ public static function start($id, $type = 'start') return array('s' => 'ok'); } } - -?> \ No newline at end of file diff --git a/system/library/games/cssold/rcon.php b/system/library/games/cssold/rcon.php index 8095c6d9..4be3b844 100644 --- a/system/library/games/cssold/rcon.php +++ b/system/library/games/cssold/rcon.php @@ -104,5 +104,3 @@ public static function country($ip) return array('ico' => $ico, 'name' => empty($cData['country']['name_ru']) ? 'Не определена' : $cData['country']['name_ru']); } } - -?> \ No newline at end of file diff --git a/system/library/games/cssold/scan.php b/system/library/games/cssold/scan.php index 7dcb088f..e10e02b3 100644 --- a/system/library/games/cssold/scan.php +++ b/system/library/games/cssold/scan.php @@ -119,15 +119,21 @@ public static function info($sq, $id, $pl = false) return $data; } - $data = $sq->GetInfo(); - - $server['name'] = $data['HostName']; - $server['map'] = $data['Map']; - $server['online'] = $data['Players']; - $server['status'] = strlen($server['map']) > 3 ? true : false; + try { + $data = $sq->GetInfo(); + + $server['name'] = $data['HostName']; + $server['map'] = $data['Map']; + $server['online'] = $data['Players']; + $server['status'] = strlen($server['map']) > 3; + } catch (Exception $e) { + // В случае, если не удалось получить данные из сокета, то подставляем значения из базы данных + $server['name'] = isset($server['name']); + $server['map'] = isset($server['map']); + $server['online'] = isset($server['online']); + $server['status'] = strlen($server['map']) > 3; + } return $server; } } - -?> \ No newline at end of file diff --git a/system/library/games/cssold/service.php b/system/library/games/cssold/service.php index 2ee05844..06996032 100644 --- a/system/library/games/cssold/service.php +++ b/system/library/games/cssold/service.php @@ -359,5 +359,3 @@ public static function install($aSDATA = array()) return $id; } } - -?> \ No newline at end of file diff --git a/system/library/games/cssold/tarif.php b/system/library/games/cssold/tarif.php index cae57c59..dc12368d 100644 --- a/system/library/games/cssold/tarif.php +++ b/system/library/games/cssold/tarif.php @@ -234,5 +234,3 @@ public static function price($plan) return false; } } - -?> \ No newline at end of file diff --git a/system/library/games/games.php b/system/library/games/games.php index 45c3820a..67cad2f2 100644 --- a/system/library/games/games.php +++ b/system/library/games/games.php @@ -787,5 +787,3 @@ public static function iptables($id, $action, $source, $dest, $unit, $snw = fals } } } - -?> \ No newline at end of file diff --git a/system/library/games/graph.php b/system/library/games/graph.php index 98678faa..62d9b0fe 100644 --- a/system/library/games/graph.php +++ b/system/library/games/graph.php @@ -397,5 +397,3 @@ private static function average($arr) return !count($arr) ? 0 : ceil(array_sum($arr) / count($arr)); } } - -?> \ No newline at end of file diff --git a/system/library/games/graph/pData.php b/system/library/games/graph/pData.php index 2bdcf31b..8e1087ac 100644 --- a/system/library/games/graph/pData.php +++ b/system/library/games/graph/pData.php @@ -962,5 +962,3 @@ function mid($value, $Depart, $NbChar) return substr($value, $Depart - 1, $NbChar); } } - -?> \ No newline at end of file diff --git a/system/library/games/graph/pDraw.php b/system/library/games/graph/pDraw.php index ead30370..fe742cf3 100644 --- a/system/library/games/graph/pDraw.php +++ b/system/library/games/graph/pDraw.php @@ -8041,5 +8041,3 @@ function getAbscissaMargin($Data) } } - -?> \ No newline at end of file diff --git a/system/library/games/graph/pImage.php b/system/library/games/graph/pImage.php index b7b0a3d8..2c918e6b 100644 --- a/system/library/games/graph/pImage.php +++ b/system/library/games/graph/pImage.php @@ -570,5 +570,3 @@ function drawAreaMirror($X, $Y, $Width, $Height, $Format = "") imagecopy($this->Picture, $Picture, 0, 0, 0, 0, $this->XSize, $this->YSize); } } - -?> \ No newline at end of file diff --git a/system/library/games/mc/action.php b/system/library/games/mc/action.php index f38c0071..0994e49d 100644 --- a/system/library/games/mc/action.php +++ b/system/library/games/mc/action.php @@ -106,5 +106,3 @@ public static function config($ip, $port, $slots, $config) return $config; } } - -?> \ No newline at end of file diff --git a/system/library/games/mc/scan.php b/system/library/games/mc/scan.php index 07274472..2d5b56c4 100644 --- a/system/library/games/mc/scan.php +++ b/system/library/games/mc/scan.php @@ -106,5 +106,3 @@ public static function players($aPlayrs) return $aData; } } - -?> \ No newline at end of file diff --git a/system/library/games/mc/service.php b/system/library/games/mc/service.php index fb0ee51e..fde7c9f7 100644 --- a/system/library/games/mc/service.php +++ b/system/library/games/mc/service.php @@ -350,5 +350,3 @@ public static function install($aSDATA = array()) return $id; } } - -?> \ No newline at end of file diff --git a/system/library/games/mc/tarif.php b/system/library/games/mc/tarif.php index a858c501..fd1a2cac 100644 --- a/system/library/games/mc/tarif.php +++ b/system/library/games/mc/tarif.php @@ -222,5 +222,3 @@ public static function unit_new($tarif, $unit, $server, $mcache) return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/games/mta/action.php b/system/library/games/mta/action.php index 384388f2..99e87f36 100644 --- a/system/library/games/mta/action.php +++ b/system/library/games/mta/action.php @@ -150,5 +150,3 @@ public static function config($ip, $port, $slots, $config) return $config . "\n" . ''; } } - -?> \ No newline at end of file diff --git a/system/library/games/mta/scan.php b/system/library/games/mta/scan.php index e4895320..24701786 100644 --- a/system/library/games/mta/scan.php +++ b/system/library/games/mta/scan.php @@ -107,5 +107,3 @@ public static function players($aPlayrs) return $aData; } } - -?> \ No newline at end of file diff --git a/system/library/games/mta/service.php b/system/library/games/mta/service.php index d8b14b9c..3ac9f78f 100644 --- a/system/library/games/mta/service.php +++ b/system/library/games/mta/service.php @@ -335,5 +335,3 @@ public static function install($aSDATA = array()) return $id; } } - -?> \ No newline at end of file diff --git a/system/library/games/mta/tarif.php b/system/library/games/mta/tarif.php index 44b562c1..9fb72832 100644 --- a/system/library/games/mta/tarif.php +++ b/system/library/games/mta/tarif.php @@ -171,5 +171,3 @@ public static function unit_new($tarif, $unit, $server, $mcache) return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/games/plugins.php b/system/library/games/plugins.php index d1e68f22..d158e864 100644 --- a/system/library/games/plugins.php +++ b/system/library/games/plugins.php @@ -166,5 +166,3 @@ public static function write($write, $uid, $dir) return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/games/query/McQuery.php b/system/library/games/query/McQuery.php index 1ceded03..8ca465b6 100644 --- a/system/library/games/query/McQuery.php +++ b/system/library/games/query/McQuery.php @@ -90,5 +90,3 @@ private function WriteData($Command, $Append = '') return SubStr($Data, 5); } } - -?> \ No newline at end of file diff --git a/system/library/games/query/MtaQuery.php b/system/library/games/query/MtaQuery.php index 093be86b..26d5f944 100644 --- a/system/library/games/query/MtaQuery.php +++ b/system/library/games/query/MtaQuery.php @@ -87,5 +87,3 @@ private function cut_byte(&$buffer, $length) return $string; } } - -?> \ No newline at end of file diff --git a/system/library/games/query/SampQuery.php b/system/library/games/query/SampQuery.php index 06dd849e..be296e89 100644 --- a/system/library/games/query/SampQuery.php +++ b/system/library/games/query/SampQuery.php @@ -117,5 +117,3 @@ public function connect() return $connected; } } - -?> \ No newline at end of file diff --git a/system/library/games/rust/action.php b/system/library/games/rust/action.php index de0f7547..6043d0fd 100644 --- a/system/library/games/rust/action.php +++ b/system/library/games/rust/action.php @@ -291,5 +291,3 @@ public static function update($id) return array('s' => 'ok'); } } - -?> \ No newline at end of file diff --git a/system/library/games/rust/rcon.php b/system/library/games/rust/rcon.php index cbc61106..f5f54635 100644 --- a/system/library/games/rust/rcon.php +++ b/system/library/games/rust/rcon.php @@ -105,5 +105,3 @@ public static function country($ip) return array('ico' => $ico, 'name' => empty($cData['country']['name_ru']) ? 'Не определена' : $cData['country']['name_ru']); } } - -?> \ No newline at end of file diff --git a/system/library/games/rust/scan.php b/system/library/games/rust/scan.php index 6a0e78a0..ce429f6e 100644 --- a/system/library/games/rust/scan.php +++ b/system/library/games/rust/scan.php @@ -119,17 +119,23 @@ public static function info($sq, $id, $pl = false) return $data; } - $data = $sq->GetInfo(); - - $map = explode('/', $data['Map'] ?? ''); - - $server['name'] = $data['HostName']; - $server['map'] = end($map); - $server['online'] = $data['Players']; - $server['status'] = strlen($server['map']) > 3 ? true : false; + try { + $data = $sq->GetInfo(); + + $map = explode('/', $data['Map']); + + $server['name'] = $data['HostName']; + $server['map'] = end($map); + $server['online'] = $data['Players']; + $server['status'] = strlen($server['map']) > 3; + } catch (Exception $e) { + // В случае, если не удалось получить данные из сокета, то подставляем значения из базы данных + $server['name'] = isset($server['name']); + $server['map'] = isset($server['map']); + $server['online'] = isset($server['online']); + $server['status'] = strlen($server['map']) > 3; + } return $server; } } - -?> \ No newline at end of file diff --git a/system/library/games/rust/service.php b/system/library/games/rust/service.php index 489d5cb0..6e4315da 100644 --- a/system/library/games/rust/service.php +++ b/system/library/games/rust/service.php @@ -350,5 +350,3 @@ public static function install($aSDATA = array()) return $id; } } - -?> \ No newline at end of file diff --git a/system/library/games/rust/tarif.php b/system/library/games/rust/tarif.php index 17c7c164..ab166363 100644 --- a/system/library/games/rust/tarif.php +++ b/system/library/games/rust/tarif.php @@ -216,5 +216,3 @@ public static function unit_new($tarif, $unit, $server, $mcache) return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/games/samp/action.php b/system/library/games/samp/action.php index 6d8c425a..94b50f76 100644 --- a/system/library/games/samp/action.php +++ b/system/library/games/samp/action.php @@ -122,5 +122,3 @@ public static function config($ip, $port, $slots, $config) return $eConfig; } } - -?> \ No newline at end of file diff --git a/system/library/games/samp/scan.php b/system/library/games/samp/scan.php index 2069ca87..1d6f9fe3 100644 --- a/system/library/games/samp/scan.php +++ b/system/library/games/samp/scan.php @@ -107,5 +107,3 @@ public static function players($aPlayrs) return $aData; } } - -?> \ No newline at end of file diff --git a/system/library/games/samp/service.php b/system/library/games/samp/service.php index fead1f52..0802fed3 100644 --- a/system/library/games/samp/service.php +++ b/system/library/games/samp/service.php @@ -336,5 +336,3 @@ public static function install($aSDATA = array()) return $id; } } - -?> \ No newline at end of file diff --git a/system/library/games/samp/tarif.php b/system/library/games/samp/tarif.php index 44b562c1..9fb72832 100644 --- a/system/library/games/samp/tarif.php +++ b/system/library/games/samp/tarif.php @@ -171,5 +171,3 @@ public static function unit_new($tarif, $unit, $server, $mcache) return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/games/scans.php b/system/library/games/scans.php index b9635be3..0858cca0 100644 --- a/system/library/games/scans.php +++ b/system/library/games/scans.php @@ -228,5 +228,3 @@ public static function status($id) return 'server -> no change -> end scan'; } } - -?> \ No newline at end of file diff --git a/system/library/games/services.php b/system/library/games/services.php index 51a4fd78..ff152720 100644 --- a/system/library/games/services.php +++ b/system/library/games/services.php @@ -53,5 +53,3 @@ public static function tarifs($game, $unit) return $list; } } - -?> \ No newline at end of file diff --git a/system/library/games/tarifs.php b/system/library/games/tarifs.php index cf5fc695..122b8a90 100644 --- a/system/library/games/tarifs.php +++ b/system/library/games/tarifs.php @@ -259,5 +259,3 @@ public static function unit_old($tarif, $unit, $server, $mcache) return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/geo.php b/system/library/geo.php index 47984928..5f9d68f2 100644 --- a/system/library/geo.php +++ b/system/library/geo.php @@ -419,5 +419,3 @@ public function about() ); } } - -?> \ No newline at end of file diff --git a/system/library/help.php b/system/library/help.php index 1206a7cc..dd7df8d6 100644 --- a/system/library/help.php +++ b/system/library/help.php @@ -96,5 +96,3 @@ private static function parse_ago($number, $titles) return $titles[($number % 100 > 4 and $number % 100 < 20) ? 2 : $cases[min($number % 10, 5)]]; } } - -?> \ No newline at end of file diff --git a/system/library/html.php b/system/library/html.php index 70c30fdb..123cdd3a 100644 --- a/system/library/html.php +++ b/system/library/html.php @@ -54,11 +54,7 @@ public function nav($name, $link = false) public function get($name, $path = '') { - global $device, $cfg; - - $path_root = $device == '!mobile' ? '' : 'megp/'; - - $path = $path_root . $path; + global $cfg; if ($path != '') $name = str_replace('//', '/', $path . '/' . $name); @@ -160,4 +156,3 @@ public function unitall($arr = array(), $name, $var = false, $mirror = false) } $html = new html; -?> \ No newline at end of file diff --git a/system/library/megp.php b/system/library/megp.php deleted file mode 100644 index d031b69d..00000000 --- a/system/library/megp.php +++ /dev/null @@ -1,727 +0,0 @@ - array('matches' => array( - 'application/x-obml2d', - 'application/vnd.rim.html', - 'text/vnd.wap.wml', - 'application/vnd.wap.xhtml+xml' - )), - 'HTTP_X_WAP_PROFILE' => null, - 'HTTP_X_WAP_CLIENTID' => null, - 'HTTP_WAP_CONNECTION' => null, - 'HTTP_PROFILE' => null, - 'HTTP_X_OPERAMINI_PHONE_UA' => null, - 'HTTP_X_NOKIA_GATEWAY_ID' => null, - 'HTTP_X_ORANGE_ID' => null, - 'HTTP_X_VODAFONE_3GPDPCONTEXT' => null, - 'HTTP_X_HUAWEI_USERID' => null, - 'HTTP_UA_OS' => null, - 'HTTP_X_MOBILE_GATEWAY' => null, - 'HTTP_X_ATT_DEVICEID' => null, - 'HTTP_UA_CPU' => array('matches' => array('ARM')), - ); - - protected static $phoneDevices = array( - 'iPhone' => '\biPhone\b|\biPod\b', - 'BlackBerry' => 'BlackBerry|\bBB10\b|rim[0-9]+', - 'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\bEVO\b|T-Mobile G1|Z520m', - 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6', - 'Dell' => 'Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b', - 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\bMoto E\b', - 'Samsung' => '\bSamsung\b|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C', - 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323)', - 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533', - 'Asus' => 'Asus.*Galaxy|PadFone.*Mobile', - 'NokiaLumia' => 'Lumia [0-9]{3,4}', - 'Micromax' => 'Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b', - 'Palm' => 'PalmSource|Palm', - 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', - 'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790', - 'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250', - 'Wiko' => 'KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM', - 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)', - 'SimValley' => '\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b', - 'Wolfgang' => 'AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q', - 'Alcatel' => 'Alcatel', - 'Nintendo' => 'Nintendo 3DS', - 'Amoi' => 'Amoi', - 'INQ' => 'INQ', - 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser', - ); - - protected static $tabletDevices = array( - 'iPad' => 'iPad|iPad.*Mobile', - 'NexusTablet' => 'Android.*Nexus[\s]+(7|9|10)', - 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587', // SCH-P709|SCH-P729|SM-T2558|GT-I9205 - Samsung Mega - treat them like a regular phone. - 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)', - 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)', - 'HPTablet' => 'HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10', - 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|\bK00C\b|\bK00E\b|\bK00L\b|TX201LA|ME176C|ME102A|\bM80TA\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\bME70C\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z', - 'BlackBerryTablet' => 'PlayBook|RIM Tablet', - 'HTCtablet' => 'HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410', - 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617', - 'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2', - 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\b|W3-810|\bA3-A10\b|\bA3-A11\b|\bA3-A20\b|\bA3-A30', - 'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO', - 'LGTablet' => '\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\b', - 'FujitsuTablet' => 'Android.*\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\b', - 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002', - 'LenovoTablet' => 'Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)', - 'DellTablet' => 'Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7', - 'YarvikTablet' => 'Android.*\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\b', - 'MedionTablet' => 'Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB', - 'ArnovaTablet' => '97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2', - 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004', - 'IRUTablet' => 'M702pro', - 'MegafonTablet' => 'MegaFon V9|\bZTE V9\b|Android.*\bMT7A\b', - 'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)', - 'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)', - 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|Archos5|\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\b', - 'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark', - 'NokiaLumiaTablet' => 'Lumia 2520', - 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31', - 'PhilipsTablet' => '\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\b', - 'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT', - 'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010', - 'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10', - 'MSITablet' => 'MSI \b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\b', - 'SMiTTablet' => 'Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)', - 'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A', - 'FlyTablet' => 'IQ310|Fly Vision', - 'bqTablet' => 'Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris [E|M]10)|Maxwell.*Lite|Maxwell.*Plus', - 'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim', - 'NecTablet' => '\bN-06D|\bN-08D', - 'PantechTablet' => 'Pantech.*P4100', - 'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)', - 'VersusTablet' => 'TOUCHPAD.*[78910]|\bTOUCHTAB\b', - 'ZyncTablet' => 'z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900', - 'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA', - 'NabiTablet' => 'Android.*\bNabi', - 'KoboTablet' => 'Kobo Touch|\bK080\b|\bVox\b Build|\bArc\b Build', - 'DanewTablet' => 'DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b', - 'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE', - 'PlaystationTablet' => 'Playstation.*(Portable|Vita)', - 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab', - 'PyleAudioTablet' => '\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b', - 'AdvanTablet' => 'Android.* \b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\b ', - 'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1', - 'GalapadTablet' => 'Android.*\bG1\b', - 'MicromaxTablet' => 'Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b', - 'KarbonnTablet' => 'Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b', - 'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide', - 'PROSCANTablet' => '\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\b', - 'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026', - 'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503', - 'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026', // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G - 'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10', - 'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)', - 'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync', - 'DPSTablet' => 'DPS Dream 9|DPS Dual 7', - 'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10', - 'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989', - 'MediatekTablet' => '\bMT8125|MT8389|MT8135|MT8377\b', - 'ConcordeTablet' => 'Concorde([ ]+)?Tab|ConCorde ReadMan', - 'GoCleverTablet' => 'GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042', - 'ModecomTablet' => 'FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003', - 'VoninoTablet' => '\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\bQ8\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\b', - 'ECSTablet' => 'V07OT2|TM105A|S10OT1|TR10CS1', - 'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab', - 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497', - 'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2', - 'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711', - 'iMobileTablet' => 'i-mobile i-note', - 'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine', - 'AudioSonicTablet' => '\bC-22Q|T7-QC|T-17B|T-17P\b', - 'AMPETablet' => 'Android.* A78 ', - 'SkkTablet' => 'Android.* (SKYPAD|PHOENIX|CYCLOPS)', - 'TecnoTablet' => 'TECNO P9', - 'JXDTablet' => 'Android.* \b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\b', - 'iJoyTablet' => 'Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)', - 'FX2Tablet' => 'FX2 PAD7|FX2 PAD10', - 'XoroTablet' => 'KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151', - 'ViewsonicTablet' => 'ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a', - 'OdysTablet' => 'LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\bXELIO\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10', - 'CaptivaTablet' => 'CAPTIVA PAD', - 'IconbitTablet' => 'NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S', - 'TeclastTablet' => 'T98 4G|\bP80\b|\bX90HD\b|X98 Air|X98 Air 3G|\bX89\b|P80 3G|\bX80h\b|P98 Air|\bX89HD\b|P98 3G|\bP90HD\b|P89 3G|X98 3G|\bP70h\b|P79HD 3G|G18d 3G|\bP79HD\b|\bP89s\b|\bA88\b|\bP10HD\b|\bP19HD\b|G18 3G|\bP78HD\b|\bA78\b|\bP75\b|G17s 3G|G17h 3G|\bP85t\b|\bP90\b|\bP11\b|\bP98t\b|\bP98HD\b|\bG18d\b|\bP85s\b|\bP11HD\b|\bP88s\b|\bA80HD\b|\bA80se\b|\bA10h\b|\bP89\b|\bP78s\b|\bG18\b|\bP85\b|\bA70h\b|\bA70\b|\bG17\b|\bP18\b|\bA80s\b|\bA11s\b|\bP88HD\b|\bA80h\b|\bP76s\b|\bP76h\b|\bP98\b|\bA10HD\b|\bP78\b|\bP88\b|\bA11\b|\bA10t\b|\bP76a\b|\bP76t\b|\bP76e\b|\bP85HD\b|\bP85a\b|\bP86\b|\bP75HD\b|\bP76v\b|\bA12\b|\bP75a\b|\bA15\b|\bP76Ti\b|\bP81HD\b|\bA10\b|\bT760VE\b|\bT720HD\b|\bP76\b|\bP73\b|\bP71\b|\bP72\b|\bT720SE\b|\bC520Ti\b|\bT760\b|\bT720VE\b|T720-3GE|T720-WiFi', - 'OndaTablet' => '\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\b[\s]+', - 'JaytechTablet' => 'TPC-PA762', - 'BlaupunktTablet' => 'Endeavour 800NG|Endeavour 1010', - 'DigmaTablet' => '\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\b', - 'EvolioTablet' => 'ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\bEvotab\b|\bNeura\b', - 'LavaTablet' => 'QPAD E704|\bIvoryS\b|E-TAB IVORY|\bE-TAB\b', - 'AocTablet' => 'MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712', - 'MpmanTablet' => 'MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\bMPG7\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010', - 'CelkonTablet' => 'CT695|CT888|CT[\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\bCT-1\b', - 'WolderTablet' => 'miTab \b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\b', - 'MiTablet' => '\bMI PAD\b|\bHM NOTE 1W\b', - 'NibiruTablet' => 'Nibiru M1|Nibiru Jupiter One', - 'NexoTablet' => 'NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI', - 'LeaderTablet' => 'TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100', - 'UbislateTablet' => 'UbiSlate[\s]?7C', - 'PocketBookTablet' => 'Pocketbook', - 'KocasoTablet' => '\b(TB-1207)\b', - 'HisenseTablet' => '\b(F5281|E2371)\b', - 'Hudl' => 'Hudl HT7S3|Hudl 2', - 'TelstraTablet' => 'T-Hub2', - 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\bM6pro\b|CT1020W|arc 10HD|\bTP750\b' - ); - - protected static $operatingSystems = array( - 'AndroidOS' => 'Android', - 'BlackBerryOS' => 'blackberry|\bBB10\b|rim tablet os', - 'PalmOS' => 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino', - 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b', - 'WindowsMobileOS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;', - 'WindowsPhoneOS' => 'Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;', - 'iOS' => '\biPhone.*Mobile|\biPod|\biPad', - 'MeeGoOS' => 'MeeGo', - 'MaemoOS' => 'Maemo', - 'JavaOS' => 'J2ME/|\bMIDP\b|\bCLDC\b', - 'webOS' => 'webOS|hpwOS', - 'badaOS' => '\bBada\b', - 'BREWOS' => 'BREW' - ); - - protected static $browsers = array( - 'Chrome' => '\bCrMo\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?', - 'Dolfin' => '\bDolfin\b', - 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+|Coast/[0-9.]+', - 'Skyfire' => 'Skyfire', - 'Edge' => 'Mobile Safari/[.0-9]* Edge', - 'IE' => 'IEMobile|MSIEMobile', // |Trident/[.0-9]+ - 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS', - 'Bolt' => 'bolt', - 'TeaShark' => 'teashark', - 'Blazer' => 'Blazer', - 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari', - 'UCBrowser' => 'UC.*Browser|UCWEB', - 'baiduboxapp' => 'baiduboxapp', - 'baidubrowser' => 'baidubrowser', - 'DiigoBrowser' => 'DiigoBrowser', - 'Puffin' => 'Puffin', - 'Mercury' => '\bMercury\b', - 'ObigoBrowser' => 'Obigo', - 'NetFront' => 'NF-Browser', - 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger', - 'PaleMoon' => 'Android.*PaleMoon|Mobile.*PaleMoon' - ); - - protected static $utilities = array( - 'Bot' => 'Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom', - 'MobileBot' => 'Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2', - 'DesktopMode' => 'WPDesktop', - 'TV' => 'SonyDTV|HbbTV', // experimental - 'WebKit' => '(webkit)[ /]([\w.]+)', - 'Console' => '\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\b', - 'Watch' => 'SM-V700' - ); - - protected static $uaHttpHeaders = array( - 'HTTP_USER_AGENT', - 'HTTP_X_OPERAMINI_PHONE_UA', - 'HTTP_X_DEVICE_USER_AGENT', - 'HTTP_X_ORIGINAL_USER_AGENT', - 'HTTP_X_SKYFIRE_PHONE', - 'HTTP_X_BOLT_PHONE_UA', - 'HTTP_DEVICE_STOCK_UA', - 'HTTP_X_UCBROWSER_DEVICE_UA' - ); - - protected static $properties = array( - 'Mobile' => 'Mobile/[VER]', - 'Build' => 'Build/[VER]', - 'Version' => 'Version/[VER]', - 'VendorID' => 'VendorID/[VER]', - 'iPad' => 'iPad.*CPU[a-z ]+[VER]', - 'iPhone' => 'iPhone.*CPU[a-z ]+[VER]', - 'iPod' => 'iPod.*CPU[a-z ]+[VER]', - 'Kindle' => 'Kindle/[VER]', - 'Chrome' => array('Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'), - 'Coast' => array('Coast/[VER]'), - 'Dolfin' => 'Dolfin/[VER]', - 'Firefox' => array('Firefox/[VER]', 'FxiOS/[VER]'), - 'Fennec' => 'Fennec/[VER]', - 'Edge' => 'Edge/[VER]', - 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'Trident/[0-9.]+;.*rv:[VER]'), - 'NetFront' => 'NetFront/[VER]', - 'NokiaBrowser' => 'NokiaBrowser/[VER]', - 'Opera' => array('OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]'), - 'Opera Mini' => 'Opera Mini/[VER]', - 'Opera Mobi' => 'Version/[VER]', - 'UC Browser' => 'UC Browser[VER]', - 'MQQBrowser' => 'MQQBrowser/[VER]', - 'MicroMessenger' => 'MicroMessenger/[VER]', - 'baiduboxapp' => 'baiduboxapp/[VER]', - 'baidubrowser' => 'baidubrowser/[VER]', - 'SamsungBrowser' => 'SamsungBrowser/[VER]', - 'Iron' => 'Iron/[VER]', - 'Safari' => array('Version/[VER]', 'Safari/[VER]'), - 'Skyfire' => 'Skyfire/[VER]', - 'Tizen' => 'Tizen/[VER]', - 'Webkit' => 'webkit[ /][VER]', - 'PaleMoon' => 'PaleMoon/[VER]', - 'Gecko' => 'Gecko/[VER]', - 'Trident' => 'Trident/[VER]', - 'Presto' => 'Presto/[VER]', - 'Goanna' => 'Goanna/[VER]', - 'iOS' => ' \bi?OS\b [VER][ ;]{1}', - 'Android' => 'Android [VER]', - 'BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'), - 'BREW' => 'BREW [VER]', - 'Java' => 'Java/[VER]', - 'Windows Phone OS' => array('Windows Phone OS [VER]', 'Windows Phone [VER]'), - 'Windows Phone' => 'Windows Phone [VER]', - 'Windows CE' => 'Windows CE/[VER]', - 'Windows NT' => 'Windows NT [VER]', - 'Symbian' => array('SymbianOS/[VER]', 'Symbian/[VER]'), - 'webOS' => array('webOS/[VER]', 'hpwOS/[VER];') - ); - - public function __construct(array $headers = null, $userAgent = null) - { - $this->setHttpHeaders($headers); - $this->setUserAgent($userAgent); - } - - public static function getScriptVersion() - { - return self::VERSION; - } - - public function setHttpHeaders($httpHeaders = null) - { - if (!is_array($httpHeaders) || !count($httpHeaders)) - $httpHeaders = $_SERVER; - - $this->httpHeaders = array(); - - foreach ($httpHeaders as $key => $value) { - if (substr($key, 0, 5) === 'HTTP_') - $this->httpHeaders[$key] = $value; - } - - $this->setCfHeaders($httpHeaders); - } - - public function getHttpHeaders() - { - return $this->httpHeaders; - } - - public function getHttpHeader($header) - { - if (strpos($header, '_') === false) { - $header = str_replace('-', '_', $header); - $header = strtoupper($header); - } - - $altHeader = 'HTTP_' . $header; - - if (isset($this->httpHeaders[$header])) - return $this->httpHeaders[$header]; - elseif (isset($this->httpHeaders[$altHeader])) - return $this->httpHeaders[$altHeader]; - - return null; - } - - public function getMobileHeaders() - { - return self::$mobileHeaders; - } - - public function getUaHttpHeaders() - { - return self::$uaHttpHeaders; - } - - public function setCfHeaders($cfHeaders = null) - { - if (!is_array($cfHeaders) || !count($cfHeaders)) - $cfHeaders = $_SERVER; - - $this->cloudfrontHeaders = array(); - $response = false; - - foreach ($cfHeaders as $key => $value) { - if (substr(strtolower($key), 0, 16) === 'http_cloudfront_') { - $this->cloudfrontHeaders[strtoupper($key)] = $value; - $response = true; - } - } - - return $response; - } - - public function getCfHeaders() - { - return $this->cloudfrontHeaders; - } - - public function setUserAgent($userAgent = null) - { - $this->cache = array(); - - if (false === empty($userAgent)) - return $this->userAgent = $userAgent; - else { - $this->userAgent = null; - - foreach ($this->getUaHttpHeaders() as $altHeader) - if (false === empty($this->httpHeaders[$altHeader])) - $this->userAgent .= $this->httpHeaders[$altHeader] . ' '; - - if (!empty($this->userAgent)) - return $this->userAgent = trim($this->userAgent); - } - - if (count($this->getCfHeaders()) > 0) - return $this->userAgent = 'Amazon CloudFront'; - - return $this->userAgent = null; - } - - public function getUserAgent() - { - return $this->userAgent; - } - - public function setDetectionType($type = null) - { - if ($type === null) - $type = self::DETECTION_TYPE_MOBILE; - - if ($type !== self::DETECTION_TYPE_MOBILE && $type !== self::DETECTION_TYPE_EXTENDED) - return; - - $this->detectionType = $type; - } - - public function getMatchingRegex() - { - return $this->matchingRegex; - } - - public function getMatchesArray() - { - return $this->matchesArray; - } - - public static function getPhoneDevices() - { - return self::$phoneDevices; - } - - public static function getTabletDevices() - { - return self::$tabletDevices; - } - - public static function getUserAgents() - { - return self::getBrowsers(); - } - - public static function getBrowsers() - { - return self::$browsers; - } - - public static function getUtilities() - { - return self::$utilities; - } - - public static function getMobileDetectionRules() - { - static $rules; - - if (!$rules) { - $rules = array_merge( - self::$phoneDevices, - self::$tabletDevices, - self::$operatingSystems, - self::$browsers - ); - } - - return $rules; - } - - public function getMobileDetectionRulesExtended() - { - static $rules; - - if (!$rules) { - $rules = array_merge( - self::$phoneDevices, - self::$tabletDevices, - self::$operatingSystems, - self::$browsers, - self::$utilities - ); - } - - return $rules; - } - - public function getRules() - { - if ($this->detectionType == self::DETECTION_TYPE_EXTENDED) - return self::getMobileDetectionRulesExtended(); - - return self::getMobileDetectionRules(); - } - - public static function getOperatingSystems() - { - return self::$operatingSystems; - } - - public function checkHttpHeadersForMobile() - { - foreach ($this->getMobileHeaders() as $mobileHeader => $matchType) { - if (isset($this->httpHeaders[$mobileHeader])) { - if (is_array($matchType['matches'])) { - foreach ($matchType['matches'] as $_match) - if (strpos($this->httpHeaders[$mobileHeader], $_match) !== false) - return true; - - return false; - } else - return true; - } - } - - return false; - } - - public function __call($name, $arguments) - { - if (substr($name, 0, 2) !== 'is') - throw new BadMethodCallException('No such method exists: ' . $name); - - $this->setDetectionType(self::DETECTION_TYPE_MOBILE); - $key = substr($name, 2); - - return $this->matchUAAgainstKey($key); - } - - protected function matchDetectionRulesAgainstUA($userAgent = null) - { - foreach ($this->getRules() as $_regex) { - if (empty($_regex)) - continue; - - if ($this->match($_regex, $userAgent)) - return true; - } - - return false; - } - - protected function matchUAAgainstKey($key) - { - $key = strtolower($key); - - if (false === isset($this->cache[$key])) { - $_rules = array_change_key_case($this->getRules()); - - if (false === empty($_rules[$key])) - $this->cache[$key] = $this->match($_rules[$key]); - - if (false === isset($this->cache[$key])) - $this->cache[$key] = false; - } - - return $this->cache[$key]; - } - - public function isMobile($userAgent = null, $httpHeaders = null) - { - if ($httpHeaders) - $this->setHttpHeaders($httpHeaders); - - if ($userAgent) - $this->setUserAgent($userAgent); - - if ($this->getUserAgent() === 'Amazon CloudFront') { - $cfHeaders = $this->getCfHeaders(); - - if (array_key_exists('HTTP_CLOUDFRONT_IS_MOBILE_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER'] === 'true') - return true; - } - - $this->setDetectionType(self::DETECTION_TYPE_MOBILE); - - if ($this->checkHttpHeadersForMobile()) - return true; - - return $this->matchDetectionRulesAgainstUA(); - } - - public function isTablet($userAgent = null, $httpHeaders = null) - { - if ($this->getUserAgent() === 'Amazon CloudFront') { - $cfHeaders = $this->getCfHeaders(); - - if (array_key_exists('HTTP_CLOUDFRONT_IS_TABLET_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_TABLET_VIEWER'] === 'true') - return true; - } - - $this->setDetectionType(self::DETECTION_TYPE_MOBILE); - - foreach (self::$tabletDevices as $_regex) - if ($this->match($_regex, $userAgent)) - return true; - - return false; - } - - public function is($key, $userAgent = null, $httpHeaders = null) - { - if ($httpHeaders) - $this->setHttpHeaders($httpHeaders); - - if ($userAgent) - $this->setUserAgent($userAgent); - - $this->setDetectionType(self::DETECTION_TYPE_EXTENDED); - - return $this->matchUAAgainstKey($key); - } - - public function match($regex, $userAgent = null) - { - $match = (bool)preg_match(sprintf('#%s#is', $regex), (false === empty($userAgent) ? $userAgent : $this->userAgent), $matches); - - if ($match) { - $this->matchingRegex = $regex; - $this->matchesArray = $matches; - } - - return $match; - } - - public static function getProperties() - { - return self::$properties; - } - - public function prepareVersionNo($ver) - { - $ver = str_replace(array('_', ' ', '/'), '.', $ver); - $arrVer = explode('.', $ver, 2); - - if (isset($arrVer[1])) - $arrVer[1] = @str_replace('.', '', $arrVer[1]); - - return (float)implode('.', $arrVer); - } - - public function version($propertyName, $type = self::VERSION_TYPE_STRING) - { - if (empty($propertyName)) - return false; - - if ($type !== self::VERSION_TYPE_STRING && $type !== self::VERSION_TYPE_FLOAT) - $type = self::VERSION_TYPE_STRING; - - $properties = self::getProperties(); - - if (true === isset($properties[$propertyName])) { - $properties[$propertyName] = (array)$properties[$propertyName]; - - foreach ($properties[$propertyName] as $propertyMatchString) { - $propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString); - preg_match(sprintf('#%s#is', $propertyPattern), $this->userAgent, $match); - - if (false === empty($match[1])) { - $version = ($type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1]); - - return $version; - } - } - } - - return false; - } - - public function mobileGrade() - { - $isMobile = $this->isMobile(); - if ($this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) >= 4.3 || - $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) >= 4.3 || - $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) >= 4.3 || - ($this->version('Android', self::VERSION_TYPE_FLOAT) > 2.1 && $this->is('Webkit')) || - $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT) >= 7.5 || - $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 6.0 || - $this->match('Playbook.*Tablet') || - ($this->version('webOS', self::VERSION_TYPE_FLOAT) >= 1.4 && $this->match('Palm|Pre|Pixi')) || - $this->match('hp.*TouchPad') || - ($this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 18) || - ($this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 4.0) || - ($this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT) >= 4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3) || - ($this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11.5 && $this->is('AndroidOS')) || - $this->is('MeeGoOS') || - $this->is('Tizen') || - $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT) >= 2.0 || - (($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3) || - ($this->match('Kindle Fire') || - $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT) >= 3.0) || - $this->is('AndroidOS') && $this->is('NookTablet') || - $this->version('Chrome', self::VERSION_TYPE_FLOAT) >= 16 && !$isMobile || - $this->version('Safari', self::VERSION_TYPE_FLOAT) >= 5.0 && !$isMobile || - $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 10.0 && !$isMobile || - $this->version('IE', self::VERSION_TYPE_FLOAT) >= 7.0 && !$isMobile || - $this->version('Opera', self::VERSION_TYPE_FLOAT) >= 10 && !$isMobile) - return self::MOBILE_GRADE_A; - - if ($this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) < 4.3 || - $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) < 4.3 || - $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) < 4.3 || - $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) < 6 || - ($this->version('Opera Mini', self::VERSION_TYPE_FLOAT) >= 5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT) <= 7.0 && - ($this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 || $this->is('iOS'))) || - $this->match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || - $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11 && $this->is('SymbianOS')) - return self::MOBILE_GRADE_B; - - if ($this->version('BlackBerry', self::VERSION_TYPE_FLOAT) <= 5.0 || - $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT) <= 5.2 || - $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) <= 3.2 || - $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) <= 3.2 || - $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) <= 3.2 || - $this->version('IE', self::VERSION_TYPE_FLOAT) <= 7.0 && !$isMobile) - return self::MOBILE_GRADE_C; - - return self::MOBILE_GRADE_C; - } -} - -$megp = new megp; -?> \ No newline at end of file diff --git a/system/library/smtp.php b/system/library/smtp.php index eaad0dc0..f0b71dbb 100644 --- a/system/library/smtp.php +++ b/system/library/smtp.php @@ -119,5 +119,3 @@ private function _parseServer($socket, $response) return true; } } - -?> \ No newline at end of file diff --git a/system/library/sql.php b/system/library/sql.php index ca1b5269..d3f4188a 100644 --- a/system/library/sql.php +++ b/system/library/sql.php @@ -83,4 +83,3 @@ private function out_error($error, $query = '') } $sql = new mysql; -?> \ No newline at end of file diff --git a/system/library/ssh.php b/system/library/ssh.php index 2338e1aa..43dae122 100644 --- a/system/library/ssh.php +++ b/system/library/ssh.php @@ -96,4 +96,3 @@ public function esc() } $ssh = new ssh; -?> \ No newline at end of file diff --git a/system/library/system.php b/system/library/system.php index fe52b4a7..10a0a713 100644 --- a/system/library/system.php +++ b/system/library/system.php @@ -84,14 +84,10 @@ public static function nav($server, $sid, $active) $html->set('home', $cfg['http']); if (is_array($notice)) { - global $device; - - if ($device == '!mobile') - $html->set('notice', '
' . $notice['text'] . '
'); - else - $html->set('notice', '
' . $notice['text'] . '
'); - } else + $html->set('notice', '
' . $notice['text'] . '
'); + } else { $html->set('notice', ''); + } if ($server['console_use']) $html->unit('console_use', 1); else $html->unit('console_use'); if ($server['plugins_use']) $html->unit('plugins_use', 1); else $html->unit('plugins_use'); @@ -127,9 +123,9 @@ public static function nav($server, $sid, $active) public static function route($server, $inc, $go, $all = false) { - global $device, $start_point; + global $start_point; - $dir = $device == '!mobile' ? '' : 'megp/'; + $dir = ''; $use = true; if (in_array($inc, array('plugins', 'ftp', 'console', 'graph', 'copy', 'web'))) { @@ -208,12 +204,12 @@ public static function out($val = '', $cache = false) public static function outhtml($text, $time = 3, $url = false, $cache = false) { - global $device, $mcache, $html, $cfg; + global $mcache, $html, $cfg; if ($cache) $mcache->delete($cache); - $tpl = $device == '!mobile' ? '' : '/megp'; + $tpl = ''; $html->get('out'); @@ -413,7 +409,12 @@ public static function passwd($length = 8) public static function passwdkey($passwd) { - return md5($passwd); + return password_hash($passwd, PASSWORD_DEFAULT); + } + + public static function passwdverify($passwd, $passwdhash) + { + return password_verify($passwd, $passwdhash); } public static function cookie($name, $value, $expires) @@ -430,9 +431,7 @@ public static function auth() if ($go) sys::outjs(array('e' => sys::text('output', 'auth'))); - global $device; - - $link = $device == '!mobile' ? 'user/section/lk' : ''; + $link = 'user/section/lk'; exit(header('Refresh: 0; URL=' . $cfg['http'] . $link)); } @@ -448,9 +447,7 @@ public static function noauth() if ($go) sys::outjs(array('e' => sys::text('output', 'noauth'))); - global $device; - - $link = $device == '!mobile' ? 'user/section/auth' : 'auth'; + $link = 'user/section/auth'; exit(header('Refresh: 0; URL=' . $cfg['http'] . $link)); } @@ -1242,14 +1239,10 @@ public static function img($name, $game) { global $cfg; - $filename = 'http://cdn.enginegp.ru/maps/' . $game . '/' . $name . '.jpg'; - $file_headers = @get_headers($filename); - $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://"; - if (!$file_headers || $file_headers[0] == 'HTTP/1.1 404 Not Found' || trim($file_headers[0]) == 'HTTP/1.1 403 Forbidden') { - return $cfg['http'] . 'template/images/status/none.jpg'; - } else { - return '' . $protocol . 'cdn.enginegp.ru/maps/' . $game . '/' . $name . '.jpg'; - } + if(file_exists(DIR.'/maps/'.$game.'/'.$name.'.jpg')) + return $cfg['http'].'maps/'.$game.'/'.$name.'.jpg'; + + return $cfg['http'].'template/images/status/none.jpg'; } public static function buttons($id, $status, $game = false, $ctrl = false) @@ -1426,5 +1419,3 @@ public static function logMessage($message, $logFile = 'enginegp_info', $context $logger->info($message, $context); } } - -?> diff --git a/system/library/users.php b/system/library/users.php index 251e673b..2d69993f 100644 --- a/system/library/users.php +++ b/system/library/users.php @@ -50,5 +50,3 @@ public static function nav($active) return NULL; } } - -?> \ No newline at end of file diff --git a/system/library/web/free.php b/system/library/web/free.php index bc2a4302..45b64f2c 100644 --- a/system/library/web/free.php +++ b/system/library/web/free.php @@ -477,5 +477,3 @@ public static function unit($aWebUnit, $type, $id) return array('address' => $aWebUnit['address'], 'passwd' => $aWebUnit['passwd']); } } - -?> \ No newline at end of file diff --git a/system/library/zip.php b/system/library/zip.php index 44318838..a6bd2098 100644 --- a/system/library/zip.php +++ b/system/library/zip.php @@ -5449,6 +5449,3 @@ function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter = true) } // -------------------------------------------------------------------------------- - - -?> diff --git a/system/mdistributor.php b/system/mdistributor.php deleted file mode 100644 index 4cc206ca..00000000 --- a/system/mdistributor.php +++ /dev/null @@ -1,115 +0,0 @@ -get('users_auth'); - - $user = isset($users[$userkey]) ? $users[$userkey] : 0; - - if (!$user) { - if ((!sys::valid($aAuth['login'], 'other', $aValid['login'])) && !sys::valid($aAuth['passwd'], 'md5')) { - $sql->query('SELECT `id` FROM `users` WHERE `login`="' . $aAuth['login'] . '" AND `passwd`="' . $aAuth['passwd'] . '" LIMIT 1'); - if ($sql->num()) { - $sql->query('SELECT `id`, `login`, `passwd`, `balance`, `group`, `level`, `time` FROM `users` WHERE `login`="' . $aAuth['login'] . '" AND `passwd`="' . $aAuth['passwd'] . '" LIMIT 1'); - $user = array_merge(array('authkey' => $authkey), $sql->get()); - - $auth = 1; - - sys::users($users, $user, $authkey); - } - } - - if (!$auth) { - sys::cookie('egp_login', 'quit', -1); - sys::cookie('egp_passwd', 'quit', -1); - sys::cookie('egp_authkeycheck', 'quit', -1); - } - } else { - $sql->query('SELECT `balance`, `time` FROM `users` WHERE `id`="' . $user['id'] . '" LIMIT 1'); - $user = array_merge($user, $sql->get()); - - sys::user($user); - - $auth = 1; - } -} - -// Заголовок -$title = ''; - -// Подключение файла -if (in_array($route, $amRoute)) - include(ENG . 'megp/' . $route . '.php'); -else - include(ENG . 'megp/index.php'); - -// Обновление ссылок -if (isset($html->arr['main'])) { - $html->upd( - array( - '[home]', - '[js]', - '[css]', - '[img]' - ), - - array( - $cfg['http'], - $cfg['http'] . 'template/megp/js/', - $cfg['http'] . 'template/megp/css/', - $cfg['http'] . 'template/megp/images/' - ), - 'main' - ); -} - -// Заготовка выхлопа -$html->get('all'); -$html->set('title', $title . ' | ' . $cfg['name']); -$html->set('home', $cfg['http']); -$html->set('js', $cfg['http'] . 'template/megp/js/'); -$html->set('css', $cfg['http'] . 'template/megp/css/'); -$html->set('img', $cfg['http'] . 'template/megp/images/'); - -if ($auth) - $html->set('server_menu', isset($html->arr['vmenu']) ? $html->arr['vmenu'] : ''); -else - $html->set('server_menu', ''); - -$html->set('main', isset($html->arr['main']) ? $html->arr['main'] : '', true); -$html->pack('all'); - -// Блоки -if ($auth) { - // Проверка наличия игрового сервера - $servers = $sql->query('(SELECT `id` FROM `servers` WHERE `user`="' . $user['id'] . '" LIMIT 1) UNION (SELECT `id` FROM `owners` WHERE `user`="' . $user['id'] . '" LIMIT 1)'); - - if ($sql->num()) - $html->unitall('all', 'servers', 1, 1); - else - $html->unitall('all', 'servers', 0, 1); -} -?> \ No newline at end of file diff --git a/system/sections/chat/chats.php b/system/sections/chat/chats.php deleted file mode 100644 index 5533c662..00000000 --- a/system/sections/chat/chats.php +++ /dev/null @@ -1,114 +0,0 @@ - 'Необходимо написать сообщение')); - - $msg = $_POST['text']; - $sql->query('INSERT INTO `chat` (`userid`, `date`, `msg`) VALUES ("' . $user['id'] . '", NOW(), "' . mysqli_real_escape_string($sql->sql_id, $msg) . '");'); - sys::outjs(array('s' => '')); - case 'dialog': - $q_Msgs = $sql->query('SELECT `chat`.`id`, `userid`, `msg`, `chat`.`date`, `login`, `group` FROM `chat` INNER JOIN `users` ON `chat`.`userid` = `users`.`id` ORDER BY `chat`.`date` ASC LIMIT 30'); - while ($msg = $sql->get($q_Msgs)) { - $html->get('messages_all', 'sections/chat'); - if ($msg['group'] == 'admin') - $group = 'Администратор'; - else if ($msg['group'] == 'support') - $group = 'Тех. Поддержка'; - else if ($msg['group'] == 'user') - $group = 'Клиент'; - - $name = $msg['login'] . ' (' . $group . ')'; - - $html->set('id', $msg['id']); - $html->set('userid', $msg['userid']); - $html->set('name', $name); - $html->set('time', $time); - $html->set('date', $msg['date']); - $html->set('msg', $msg['msg']); - $html->set('login', $msg['login']); - - $html->unit('me', $user['id'] == $userid, 1); - - for ($i = 1; $i <= 32; $i++) - $html->set('emoji_' . $i, ''); - - global $cfg; - $file = 'upload/avatars/' . $resp['uid'] . '.'; - $link = $cfg['http'] . 'upload/avatars/' . $resp['uid'] . '.'; - if (file_exists(ROOT . $file . 'jpg')) - $html->set('ava', '/upload/avatars/' . $resp['uid'] . '.jpg'); - elseif (file_exists(ROOT . $file . 'png')) - $html->set('ava', '/upload/avatars/' . $resp['uid'] . '.png'); - elseif (file_exists(ROOT . $file . 'gif')) - $html->set('ava', '/upload/avatars/' . $resp['uid'] . '.gif'); - else - $html->set('ava', $cfg['http'] . 'template/images/avatar.png'); - $html->pack('dialog'); - } - sys::out(isset($html->arr['dialog']) ? $html->arr['dialog'] : ''); - case 'delete': - if ($user['group'] != 'admin') - sys::outjs(array('e' => 'Недостаточно прав')); - - if (!isset($url['id'])) - sys::outjs(array('e' => 'Отсутствует идентификатор')); - - if ($go) - $sql->query('DELETE FROM `chat` WHERE `userid`="' . $url['id'] . '";'); - else - $sql->query('DELETE FROM `chat` WHERE `id`="' . $url['id'] . '";'); - - sys::outjs(array('s' => '')); - } -} - -$html->nav($title); - -$q_Msgs = $sql->query('SELECT `chat`.`id`, `userid`, `msg`, `chat`.`date`, `login`, `group` FROM `chat` INNER JOIN `users` ON `chat`.`userid` = `users`.`id` ORDER BY `chat`.`date` ASC LIMIT 30'); -while ($msg = $sql->get($q_Msgs)) { - $html->get('messages_all', 'sections/chat'); - if ($msg['group'] == 'admin') - $group = 'Администратор'; - else if ($msg['group'] == 'support') - $group = 'Тех. Поддержка'; - else if ($msg['group'] == 'user') - $group = 'Клиент'; - - $name = $msg['login'] . ' (' . $group . ')'; - - $html->set('id', $msg['id']); - $html->set('userid', $msg['userid']); - $html->set('name', $name); - $html->set('time', $time); - $html->set('date', $msg['date']); - $html->set('msg', $msg['msg']); - $html->set('login', $msg['login']); - - $html->unit('me', $user['id'] == $userid, 1); - - for ($i = 1; $i <= 32; $i++) - $html->set('emoji_' . $i, ''); - - global $cfg; - $file = 'upload/avatars/' . $msg['uid'] . '.'; - $link = $cfg['http'] . 'upload/avatars/' . $msg['uid'] . '.'; - if (file_exists(ROOT . $file . 'jpg')) - $html->set('ava', '/upload/avatars/' . $msg['uid'] . '.jpg'); - elseif (file_exists(ROOT . $file . 'png')) - $html->set('ava', '/upload/avatars/' . $msg['uid'] . '.png'); - elseif (file_exists(ROOT . $file . 'gif')) - $html->set('ava', '/upload/avatars/' . $msg['uid'] . '.gif'); - else - $html->set('ava', $cfg['http'] . 'template/images/avatar.png'); - $html->pack('msg_all'); -} - -$html->get('dialog', 'sections/chat'); -$html->set('chats', isset($html->arr['msg_all']) ? $html->arr['msg_all'] : ''); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/chat/dialog.php b/system/sections/chat/dialog.php deleted file mode 100644 index 2415ecdc..00000000 --- a/system/sections/chat/dialog.php +++ /dev/null @@ -1,38 +0,0 @@ -query('SELECT * FROM (SELECT `id`, `userid`, `msg`, `date` FROM `chat` ORDER BY `date` DESC LIMIT 30) t ORDER BY `date` ASC;'); -while ($msg = $sql->get($q_Msgs)) { - if ($user['group'] == 'admin') - $group = 'Администратор'; - //elseif () - // $group = '(Клиент, серверов: 1 шт.)'; - else - $group = 'Клиент'; - - $name = $user['login'] . ' (' . $group . ')'; // (Администратор) - // $time = '[date]'; - - $html->get('message', 'chatwin'); - - $html->set('id', $msg['id']); - $html->set('userid', $msg['userid']); - $html->set('name', $name); - $html->set('time', $time); - $html->set('date', $msg['date']); - $html->set('msg', $msg['msg']); - - $html->unit('me', $user['id'] == $userid, 1); - - for ($i = 1; $i <= 32; $i++) - $html->set('emoji_' . $i, ''); - - $html->pack('dialog'); -} - -sys::out(isset($html->arr['dialog']) ? $html->arr['dialog'] : ''); -?> \ No newline at end of file diff --git a/system/sections/check/compiler.php b/system/sections/check/compiler.php index 6097cd76..385e3d5f 100644 --- a/system/sections/check/compiler.php +++ b/system/sections/check/compiler.php @@ -139,4 +139,3 @@ function createPostString($aPostFields) include(SEC . 'check/index.php'); } -?> \ No newline at end of file diff --git a/system/sections/check/index.php b/system/sections/check/index.php index 2d86be92..8204eea5 100644 --- a/system/sections/check/index.php +++ b/system/sections/check/index.php @@ -100,4 +100,3 @@ $html->get('check', 'sections/check'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/extend.php b/system/sections/control/extend.php index 8cc42373..b5248d83 100644 --- a/system/sections/control/extend.php +++ b/system/sections/control/extend.php @@ -59,4 +59,3 @@ } else $html->unit('settlement_period', false, true); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/index.php b/system/sections/control/index.php index 413ce8fe..c7e851e9 100644 --- a/system/sections/control/index.php +++ b/system/sections/control/index.php @@ -50,4 +50,3 @@ $html->set('updates_servers', $updates_servers); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/install.php b/system/sections/control/install.php index 096a2fc2..a8116953 100644 --- a/system/sections/control/install.php +++ b/system/sections/control/install.php @@ -79,4 +79,3 @@ $html->set('id', $id); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/control/noaccess.php b/system/sections/control/noaccess.php index d6d078f2..1842032f 100644 --- a/system/sections/control/noaccess.php +++ b/system/sections/control/noaccess.php @@ -19,4 +19,3 @@ } $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/reboot.php b/system/sections/control/reboot.php index 7bb6d198..871b43d9 100644 --- a/system/sections/control/reboot.php +++ b/system/sections/control/reboot.php @@ -21,4 +21,3 @@ $mcache->set('reboot_control_' . $id, true, false, 10); sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/sections/control/scan.php b/system/sections/control/scan.php index d6af7a78..8e3a9a09 100644 --- a/system/sections/control/scan.php +++ b/system/sections/control/scan.php @@ -15,4 +15,3 @@ sys::outjs(ctrl::update_status($id)); exit; -?> \ No newline at end of file diff --git a/system/sections/control/servers/action.php b/system/sections/control/servers/action.php index 50b96b5e..3e684e71 100644 --- a/system/sections/control/servers/action.php +++ b/system/sections/control/servers/action.php @@ -69,4 +69,3 @@ } exit; -?> \ No newline at end of file diff --git a/system/sections/control/servers/boost.php b/system/sections/control/servers/boost.php index b4acfa31..690c54aa 100644 --- a/system/sections/control/servers/boost.php +++ b/system/sections/control/servers/boost.php @@ -8,4 +8,3 @@ ctrl::nav($server, $id, $sid, 'boost'); include(ctrl::route($server, 'boost', $go)); -?> \ No newline at end of file diff --git a/system/sections/control/servers/console.php b/system/sections/control/servers/console.php index 4952b237..a95591c2 100644 --- a/system/sections/control/servers/console.php +++ b/system/sections/control/servers/console.php @@ -8,4 +8,3 @@ ctrl::nav($server, $id, $sid, 'console'); include(ctrl::route($server, 'console', $go)); -?> \ No newline at end of file diff --git a/system/sections/control/servers/copy.php b/system/sections/control/servers/copy.php index 9dbe806a..f14ced32 100644 --- a/system/sections/control/servers/copy.php +++ b/system/sections/control/servers/copy.php @@ -8,4 +8,3 @@ ctrl::nav($server, $id, $sid, 'copy'); include(ctrl::route($server, 'copy', $go)); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/boost.php b/system/sections/control/servers/cs/boost.php index db519fe8..11306bd5 100644 --- a/system/sections/control/servers/cs/boost.php +++ b/system/sections/control/servers/cs/boost.php @@ -97,4 +97,3 @@ $mcache->set('ctrl_server_boost_' . $sid, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/console.php b/system/sections/control/servers/cs/console.php index a3a3f654..05bd7ab8 100644 --- a/system/sections/control/servers/cs/console.php +++ b/system/sections/control/servers/cs/console.php @@ -60,4 +60,3 @@ $html->set('id', $id); $html->set('server', $sid); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/copy.php b/system/sections/control/servers/cs/copy.php index 9f5cd543..114db690 100644 --- a/system/sections/control/servers/cs/copy.php +++ b/system/sections/control/servers/cs/copy.php @@ -77,4 +77,3 @@ $mcache->set('ctrl_server_copy_' . $sid, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/index.php b/system/sections/control/servers/cs/index.php index 63ff18ea..6c5667c8 100644 --- a/system/sections/control/servers/cs/index.php +++ b/system/sections/control/servers/cs/index.php @@ -27,4 +27,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/plugins.php b/system/sections/control/servers/cs/plugins.php index 127f0c5e..75744139 100644 --- a/system/sections/control/servers/cs/plugins.php +++ b/system/sections/control/servers/cs/plugins.php @@ -148,4 +148,3 @@ $mcache->set('ctrl_server_plugins_' . $sid, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/rcon.php b/system/sections/control/servers/cs/rcon.php index cfc4afb3..20be8e58 100644 --- a/system/sections/control/servers/cs/rcon.php +++ b/system/sections/control/servers/cs/rcon.php @@ -50,4 +50,3 @@ $html->set('server', $sid); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/settings.php b/system/sections/control/servers/cs/settings.php index f1995321..b8e82cf1 100644 --- a/system/sections/control/servers/cs/settings.php +++ b/system/sections/control/servers/cs/settings.php @@ -58,4 +58,3 @@ $mcache->set('ctrl_server_settings_' . $sid, $html->arr['main'], false, 20); } } -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/settings/admins.php b/system/sections/control/servers/cs/settings/admins.php index f231a62d..15eaf29f 100644 --- a/system/sections/control/servers/cs/settings/admins.php +++ b/system/sections/control/servers/cs/settings/admins.php @@ -126,4 +126,3 @@ $html->set('index', $max['id'] < 1 ? 0 : $max['id']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/settings/amxlogs.php b/system/sections/control/servers/cs/settings/amxlogs.php index 31505f44..4277dd27 100644 --- a/system/sections/control/servers/cs/settings/amxlogs.php +++ b/system/sections/control/servers/cs/settings/amxlogs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/settings/bans.php b/system/sections/control/servers/cs/settings/bans.php index ca244941..a1e7d6ab 100644 --- a/system/sections/control/servers/cs/settings/bans.php +++ b/system/sections/control/servers/cs/settings/bans.php @@ -152,4 +152,3 @@ $html->set('listip', isset($html->arr['listip']) ? $html->arr['listip'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/settings/debug.php b/system/sections/control/servers/cs/settings/debug.php index 2046e923..081c034f 100644 --- a/system/sections/control/servers/cs/settings/debug.php +++ b/system/sections/control/servers/cs/settings/debug.php @@ -22,4 +22,3 @@ $html->set('log', htmlspecialchars($ssh->get(), NULL, '')); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/settings/logs.php b/system/sections/control/servers/cs/settings/logs.php index 81aa3512..96ab102c 100644 --- a/system/sections/control/servers/cs/settings/logs.php +++ b/system/sections/control/servers/cs/settings/logs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/settings/server.php b/system/sections/control/servers/cs/settings/server.php index 5045d423..27c1f402 100644 --- a/system/sections/control/servers/cs/settings/server.php +++ b/system/sections/control/servers/cs/settings/server.php @@ -109,4 +109,3 @@ $html->set('other', $other); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/settings/start.php b/system/sections/control/servers/cs/settings/start.php index f434be4c..99e5b49e 100644 --- a/system/sections/control/servers/cs/settings/start.php +++ b/system/sections/control/servers/cs/settings/start.php @@ -179,4 +179,3 @@ $html->set('fps', str_replace($server['fps'] . '"', $server['fps'] . '" selected="select"', $fps)); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cs/settings/top.php b/system/sections/control/servers/cs/settings/top.php index b837e8d1..9e4e6f2e 100644 --- a/system/sections/control/servers/cs/settings/top.php +++ b/system/sections/control/servers/cs/settings/top.php @@ -17,4 +17,3 @@ shell_exec('php cron.php ' . $cfg['cron_key'] . ' control_server_action restart cs ' . $sid); sys::outjs(array('s' => 'ok')); -?> \ No newline at end of file diff --git a/system/sections/control/servers/csgo/console.php b/system/sections/control/servers/csgo/console.php index 48ab9025..1a125768 100644 --- a/system/sections/control/servers/csgo/console.php +++ b/system/sections/control/servers/csgo/console.php @@ -60,4 +60,3 @@ $html->set('id', $id); $html->set('server', $sid); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/csgo/copy.php b/system/sections/control/servers/csgo/copy.php index 9f5cd543..114db690 100644 --- a/system/sections/control/servers/csgo/copy.php +++ b/system/sections/control/servers/csgo/copy.php @@ -77,4 +77,3 @@ $mcache->set('ctrl_server_copy_' . $sid, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/csgo/index.php b/system/sections/control/servers/csgo/index.php index 63ff18ea..6c5667c8 100644 --- a/system/sections/control/servers/csgo/index.php +++ b/system/sections/control/servers/csgo/index.php @@ -27,4 +27,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/csgo/plugins.php b/system/sections/control/servers/csgo/plugins.php index 127f0c5e..75744139 100644 --- a/system/sections/control/servers/csgo/plugins.php +++ b/system/sections/control/servers/csgo/plugins.php @@ -148,4 +148,3 @@ $mcache->set('ctrl_server_plugins_' . $sid, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/control/servers/csgo/rcon.php b/system/sections/control/servers/csgo/rcon.php index cbe5705e..7726dd67 100644 --- a/system/sections/control/servers/csgo/rcon.php +++ b/system/sections/control/servers/csgo/rcon.php @@ -51,4 +51,3 @@ $html->set('server', $sid); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/csgo/settings.php b/system/sections/control/servers/csgo/settings.php index a5433646..ef453017 100644 --- a/system/sections/control/servers/csgo/settings.php +++ b/system/sections/control/servers/csgo/settings.php @@ -58,4 +58,3 @@ $mcache->set('ctrl_server_settings_' . $sid, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/control/servers/csgo/settings/admins.php b/system/sections/control/servers/csgo/settings/admins.php index 1c903b8d..6bdd1fcc 100644 --- a/system/sections/control/servers/csgo/settings/admins.php +++ b/system/sections/control/servers/csgo/settings/admins.php @@ -105,4 +105,3 @@ $html->set('index', $max['id'] < 1 ? 0 : $max['id']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/csgo/settings/bans.php b/system/sections/control/servers/csgo/settings/bans.php index e395c7cb..20685d81 100644 --- a/system/sections/control/servers/csgo/settings/bans.php +++ b/system/sections/control/servers/csgo/settings/bans.php @@ -149,4 +149,3 @@ $html->set('listip', isset($html->arr['listip']) ? $html->arr['listip'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/csgo/settings/debug.php b/system/sections/control/servers/csgo/settings/debug.php index 2046e923..081c034f 100644 --- a/system/sections/control/servers/csgo/settings/debug.php +++ b/system/sections/control/servers/csgo/settings/debug.php @@ -22,4 +22,3 @@ $html->set('log', htmlspecialchars($ssh->get(), NULL, '')); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/csgo/settings/logs.php b/system/sections/control/servers/csgo/settings/logs.php index 794b71df..58305c9b 100644 --- a/system/sections/control/servers/csgo/settings/logs.php +++ b/system/sections/control/servers/csgo/settings/logs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/csgo/settings/server.php b/system/sections/control/servers/csgo/settings/server.php index e96660f0..6aff13de 100644 --- a/system/sections/control/servers/csgo/settings/server.php +++ b/system/sections/control/servers/csgo/settings/server.php @@ -109,4 +109,3 @@ $html->set('other', $other); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/csgo/settings/smlogs.php b/system/sections/control/servers/csgo/settings/smlogs.php index 7a96ee96..5251efe2 100644 --- a/system/sections/control/servers/csgo/settings/smlogs.php +++ b/system/sections/control/servers/csgo/settings/smlogs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/csgo/settings/start.php b/system/sections/control/servers/csgo/settings/start.php index 948092a5..95acaf57 100644 --- a/system/sections/control/servers/csgo/settings/start.php +++ b/system/sections/control/servers/csgo/settings/start.php @@ -187,4 +187,3 @@ $html->set('tickrate', str_replace($server['tickrate'] . '"', $server['tickrate'] . '" selected="select"', $tickrate)); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/css/console.php b/system/sections/control/servers/css/console.php index 8d43c810..724cfedd 100644 --- a/system/sections/control/servers/css/console.php +++ b/system/sections/control/servers/css/console.php @@ -60,4 +60,3 @@ $html->set('id', $id); $html->set('server', $sid); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/css/copy.php b/system/sections/control/servers/css/copy.php index 9f5cd543..114db690 100644 --- a/system/sections/control/servers/css/copy.php +++ b/system/sections/control/servers/css/copy.php @@ -77,4 +77,3 @@ $mcache->set('ctrl_server_copy_' . $sid, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/css/index.php b/system/sections/control/servers/css/index.php index b3934451..31729a06 100644 --- a/system/sections/control/servers/css/index.php +++ b/system/sections/control/servers/css/index.php @@ -27,4 +27,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/css/plugins.php b/system/sections/control/servers/css/plugins.php index 127f0c5e..75744139 100644 --- a/system/sections/control/servers/css/plugins.php +++ b/system/sections/control/servers/css/plugins.php @@ -148,4 +148,3 @@ $mcache->set('ctrl_server_plugins_' . $sid, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/control/servers/css/rcon.php b/system/sections/control/servers/css/rcon.php index cbe5705e..7726dd67 100644 --- a/system/sections/control/servers/css/rcon.php +++ b/system/sections/control/servers/css/rcon.php @@ -51,4 +51,3 @@ $html->set('server', $sid); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/css/settings.php b/system/sections/control/servers/css/settings.php index f2a297df..21064522 100644 --- a/system/sections/control/servers/css/settings.php +++ b/system/sections/control/servers/css/settings.php @@ -58,4 +58,3 @@ $mcache->set('ctrl_server_settings_' . $sid, $html->arr['main'], false, 20); } } -?> \ No newline at end of file diff --git a/system/sections/control/servers/css/settings/admins.php b/system/sections/control/servers/css/settings/admins.php index 38a9a008..a49ca352 100644 --- a/system/sections/control/servers/css/settings/admins.php +++ b/system/sections/control/servers/css/settings/admins.php @@ -105,4 +105,3 @@ $html->set('index', $max['id'] < 1 ? 0 : $max['id']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/css/settings/bans.php b/system/sections/control/servers/css/settings/bans.php index a522123e..15e60fbd 100644 --- a/system/sections/control/servers/css/settings/bans.php +++ b/system/sections/control/servers/css/settings/bans.php @@ -149,4 +149,3 @@ $html->set('listip', isset($html->arr['listip']) ? $html->arr['listip'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/css/settings/debug.php b/system/sections/control/servers/css/settings/debug.php index 2046e923..081c034f 100644 --- a/system/sections/control/servers/css/settings/debug.php +++ b/system/sections/control/servers/css/settings/debug.php @@ -22,4 +22,3 @@ $html->set('log', htmlspecialchars($ssh->get(), NULL, '')); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/css/settings/logs.php b/system/sections/control/servers/css/settings/logs.php index 81aa3512..96ab102c 100644 --- a/system/sections/control/servers/css/settings/logs.php +++ b/system/sections/control/servers/css/settings/logs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/css/settings/server.php b/system/sections/control/servers/css/settings/server.php index d457650f..bd05b4ca 100644 --- a/system/sections/control/servers/css/settings/server.php +++ b/system/sections/control/servers/css/settings/server.php @@ -109,4 +109,3 @@ $html->set('other', $other); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/css/settings/smlogs.php b/system/sections/control/servers/css/settings/smlogs.php index cd385114..f9aa7fcc 100644 --- a/system/sections/control/servers/css/settings/smlogs.php +++ b/system/sections/control/servers/css/settings/smlogs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/css/settings/start.php b/system/sections/control/servers/css/settings/start.php index 309e5ada..64b0c178 100644 --- a/system/sections/control/servers/css/settings/start.php +++ b/system/sections/control/servers/css/settings/start.php @@ -167,4 +167,3 @@ $html->set('tickrate', str_replace($server['tickrate'] . '"', $server['tickrate'] . '" selected="select"', $tickrate)); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/console.php b/system/sections/control/servers/cssold/console.php index 8d43c810..724cfedd 100644 --- a/system/sections/control/servers/cssold/console.php +++ b/system/sections/control/servers/cssold/console.php @@ -60,4 +60,3 @@ $html->set('id', $id); $html->set('server', $sid); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/copy.php b/system/sections/control/servers/cssold/copy.php index 9f5cd543..114db690 100644 --- a/system/sections/control/servers/cssold/copy.php +++ b/system/sections/control/servers/cssold/copy.php @@ -77,4 +77,3 @@ $mcache->set('ctrl_server_copy_' . $sid, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/index.php b/system/sections/control/servers/cssold/index.php index b3934451..31729a06 100644 --- a/system/sections/control/servers/cssold/index.php +++ b/system/sections/control/servers/cssold/index.php @@ -27,4 +27,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/plugins.php b/system/sections/control/servers/cssold/plugins.php index 127f0c5e..75744139 100644 --- a/system/sections/control/servers/cssold/plugins.php +++ b/system/sections/control/servers/cssold/plugins.php @@ -148,4 +148,3 @@ $mcache->set('ctrl_server_plugins_' . $sid, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/rcon.php b/system/sections/control/servers/cssold/rcon.php index cbe5705e..7726dd67 100644 --- a/system/sections/control/servers/cssold/rcon.php +++ b/system/sections/control/servers/cssold/rcon.php @@ -51,4 +51,3 @@ $html->set('server', $sid); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/settings.php b/system/sections/control/servers/cssold/settings.php index f2a297df..21064522 100644 --- a/system/sections/control/servers/cssold/settings.php +++ b/system/sections/control/servers/cssold/settings.php @@ -58,4 +58,3 @@ $mcache->set('ctrl_server_settings_' . $sid, $html->arr['main'], false, 20); } } -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/settings/admins.php b/system/sections/control/servers/cssold/settings/admins.php index 38a9a008..a49ca352 100644 --- a/system/sections/control/servers/cssold/settings/admins.php +++ b/system/sections/control/servers/cssold/settings/admins.php @@ -105,4 +105,3 @@ $html->set('index', $max['id'] < 1 ? 0 : $max['id']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/settings/bans.php b/system/sections/control/servers/cssold/settings/bans.php index a522123e..15e60fbd 100644 --- a/system/sections/control/servers/cssold/settings/bans.php +++ b/system/sections/control/servers/cssold/settings/bans.php @@ -149,4 +149,3 @@ $html->set('listip', isset($html->arr['listip']) ? $html->arr['listip'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/settings/debug.php b/system/sections/control/servers/cssold/settings/debug.php index 2046e923..081c034f 100644 --- a/system/sections/control/servers/cssold/settings/debug.php +++ b/system/sections/control/servers/cssold/settings/debug.php @@ -22,4 +22,3 @@ $html->set('log', htmlspecialchars($ssh->get(), NULL, '')); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/settings/logs.php b/system/sections/control/servers/cssold/settings/logs.php index 81aa3512..96ab102c 100644 --- a/system/sections/control/servers/cssold/settings/logs.php +++ b/system/sections/control/servers/cssold/settings/logs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/settings/server.php b/system/sections/control/servers/cssold/settings/server.php index d457650f..bd05b4ca 100644 --- a/system/sections/control/servers/cssold/settings/server.php +++ b/system/sections/control/servers/cssold/settings/server.php @@ -109,4 +109,3 @@ $html->set('other', $other); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/settings/smlogs.php b/system/sections/control/servers/cssold/settings/smlogs.php index cd385114..f9aa7fcc 100644 --- a/system/sections/control/servers/cssold/settings/smlogs.php +++ b/system/sections/control/servers/cssold/settings/smlogs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/settings/start.php b/system/sections/control/servers/cssold/settings/start.php index af44a9a3..031ca85a 100644 --- a/system/sections/control/servers/cssold/settings/start.php +++ b/system/sections/control/servers/cssold/settings/start.php @@ -180,4 +180,3 @@ $html->set('fps', str_replace($server['fps'] . '"', $server['fps'] . '" selected="select"', $fps)); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/cssold/start.php b/system/sections/control/servers/cssold/start.php index 9584aac5..8da024d5 100644 --- a/system/sections/control/servers/cssold/start.php +++ b/system/sections/control/servers/cssold/start.php @@ -173,4 +173,3 @@ $html->set('fps', str_replace($server['fps'] . '"', $server['fps'] . '" selected="select"', $fps)); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/filetp.php b/system/sections/control/servers/filetp.php index d6c12053..bf5d9def 100644 --- a/system/sections/control/servers/filetp.php +++ b/system/sections/control/servers/filetp.php @@ -194,4 +194,3 @@ $mcache->set('ctrl_server_filetp_' . $sid, $html->arr['main'], false, 10); } } -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/copy/check.php b/system/sections/control/servers/games/copy/check.php index 55e25416..fedb00b7 100644 --- a/system/sections/control/servers/games/copy/check.php +++ b/system/sections/control/servers/games/copy/check.php @@ -22,4 +22,3 @@ $mcache->delete('ctrl_server_copy_' . $sid); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/copy/create.php b/system/sections/control/servers/games/copy/create.php index e8bc66db..a7fe9f15 100644 --- a/system/sections/control/servers/games/copy/create.php +++ b/system/sections/control/servers/games/copy/create.php @@ -49,4 +49,3 @@ $mcache->delete('ctrl_server_copy_' . $sid); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/copy/fullcopy.php b/system/sections/control/servers/games/copy/fullcopy.php index 04824094..2b4c9fdd 100644 --- a/system/sections/control/servers/games/copy/fullcopy.php +++ b/system/sections/control/servers/games/copy/fullcopy.php @@ -22,4 +22,3 @@ $mcache->delete('ctrl_server_copy_' . $sid); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/copy/recfull.php b/system/sections/control/servers/games/copy/recfull.php index a431279b..eaf323d7 100644 --- a/system/sections/control/servers/games/copy/recfull.php +++ b/system/sections/control/servers/games/copy/recfull.php @@ -70,4 +70,3 @@ $sql->query('UPDATE `control_servers` set `status`="recovery" WHERE `id`="' . $sid . '" LIMIT 1'); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/copy/recpart.php b/system/sections/control/servers/games/copy/recpart.php index 31ffe095..19308a20 100644 --- a/system/sections/control/servers/games/copy/recpart.php +++ b/system/sections/control/servers/games/copy/recpart.php @@ -45,4 +45,3 @@ $sql->query('UPDATE `control_servers` set `status`="recovery" WHERE `id`="' . $sid . '" LIMIT 1'); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/copy/remove.php b/system/sections/control/servers/games/copy/remove.php index 731018eb..ad2268f6 100644 --- a/system/sections/control/servers/games/copy/remove.php +++ b/system/sections/control/servers/games/copy/remove.php @@ -21,4 +21,3 @@ $mcache->delete('ctrl_server_copy_' . $sid); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/plugins/config.php b/system/sections/control/servers/games/plugins/config.php index 7fcf89b0..09331266 100644 --- a/system/sections/control/servers/games/plugins/config.php +++ b/system/sections/control/servers/games/plugins/config.php @@ -77,5 +77,3 @@ $html->set('data', htmlspecialchars($ssh->get())); $html->pack('main'); - -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/plugins/delete.php b/system/sections/control/servers/games/plugins/delete.php index 0d49a8b9..e508d29a 100644 --- a/system/sections/control/servers/games/plugins/delete.php +++ b/system/sections/control/servers/games/plugins/delete.php @@ -78,4 +78,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/plugins/install.php b/system/sections/control/servers/games/plugins/install.php index d493d9b7..86de37d7 100644 --- a/system/sections/control/servers/games/plugins/install.php +++ b/system/sections/control/servers/games/plugins/install.php @@ -124,5 +124,3 @@ sys::outjs(array('s' => 'cfg'), $nmch); sys::outjs(array('s' => 'ok'), $nmch); - -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/plugins/plugin.php b/system/sections/control/servers/games/plugins/plugin.php index ea343137..333b7e04 100644 --- a/system/sections/control/servers/games/plugins/plugin.php +++ b/system/sections/control/servers/games/plugins/plugin.php @@ -83,4 +83,3 @@ $mcache->set('ctrl_server_plugin_' . $pid . $sid, $html->arr['main'], false, 60); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/plugins/search.php b/system/sections/control/servers/games/plugins/search.php index 43ffe20d..b896db08 100644 --- a/system/sections/control/servers/games/plugins/search.php +++ b/system/sections/control/servers/games/plugins/search.php @@ -184,4 +184,3 @@ $mcache->set($mkey, $html->arr['plugins'], false, 15); sys::outjs(array('s' => $html->arr['plugins']), $nmch); -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/plugins/update.php b/system/sections/control/servers/games/plugins/update.php index 0af9cd34..5a4a0ae0 100644 --- a/system/sections/control/servers/games/plugins/update.php +++ b/system/sections/control/servers/games/plugins/update.php @@ -81,5 +81,3 @@ sys::outjs(array('s' => 'cfg'), $nmch); sys::outjs(array('s' => 'ok'), $nmch); - -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/settings/crontab.php b/system/sections/control/servers/games/settings/crontab.php index 981956fc..11bfa01f 100644 --- a/system/sections/control/servers/games/settings/crontab.php +++ b/system/sections/control/servers/games/settings/crontab.php @@ -103,4 +103,3 @@ $html->set('time', date('H:i:s', $start_point)); $html->set('crontab', isset($html->arr['crontab']) ? $html->arr['crontab'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/settings/file.php b/system/sections/control/servers/games/settings/file.php index ed54c618..ccab352d 100644 --- a/system/sections/control/servers/games/settings/file.php +++ b/system/sections/control/servers/games/settings/file.php @@ -54,4 +54,3 @@ $html->set('data', htmlspecialchars($ssh->get())); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/settings/firewall.php b/system/sections/control/servers/games/settings/firewall.php index de006a12..2b8737f1 100644 --- a/system/sections/control/servers/games/settings/firewall.php +++ b/system/sections/control/servers/games/settings/firewall.php @@ -33,4 +33,3 @@ $html->set('server', $sid); $html->set('firewall', isset($html->arr['firewall']) ? $html->arr['firewall'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/settings/pack.php b/system/sections/control/servers/games/settings/pack.php index b3e28a9b..69bb440e 100644 --- a/system/sections/control/servers/games/settings/pack.php +++ b/system/sections/control/servers/games/settings/pack.php @@ -16,4 +16,3 @@ $sql->query('UPDATE `control_servers` set `pack`="' . $pack . '" WHERE `id`="' . $sid . '" LIMIT 1'); sys::outjs(array('s' => 'ok'), 'ctrl_server_settings_' . $sid); -?> \ No newline at end of file diff --git a/system/sections/control/servers/games/settings/startlogs.php b/system/sections/control/servers/games/settings/startlogs.php index 2641622a..be11a149 100644 --- a/system/sections/control/servers/games/settings/startlogs.php +++ b/system/sections/control/servers/games/settings/startlogs.php @@ -86,4 +86,3 @@ $html->set('logs', isset($html->arr['logs']) ? $html->arr['logs'] : ''); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/control/servers/index.php b/system/sections/control/servers/index.php index 5e1a7821..e24b9a98 100644 --- a/system/sections/control/servers/index.php +++ b/system/sections/control/servers/index.php @@ -8,4 +8,3 @@ ctrl::nav($server, $id, $sid, 'index'); include(SEC . 'control/servers/' . $server['game'] . '/index.php'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/noaccess.php b/system/sections/control/servers/noaccess.php index d2959487..f87f05fd 100644 --- a/system/sections/control/servers/noaccess.php +++ b/system/sections/control/servers/noaccess.php @@ -14,4 +14,3 @@ $html->get('noaccess'); $html->set('status', $status[$server['status']]); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/control/servers/plugins.php b/system/sections/control/servers/plugins.php index 93a0bca1..e48f227c 100644 --- a/system/sections/control/servers/plugins.php +++ b/system/sections/control/servers/plugins.php @@ -8,4 +8,3 @@ ctrl::nav($server, $id, $sid, 'plugins'); include(ctrl::route($server, 'plugins', $go)); -?> \ No newline at end of file diff --git a/system/sections/control/servers/rcon.php b/system/sections/control/servers/rcon.php index de392813..54ad78f5 100644 --- a/system/sections/control/servers/rcon.php +++ b/system/sections/control/servers/rcon.php @@ -8,4 +8,3 @@ ctrl::nav($server, $id, $sid, 'rcon'); include(ctrl::route($server, 'rcon', $go)); -?> \ No newline at end of file diff --git a/system/sections/control/servers/scan.php b/system/sections/control/servers/scan.php index 0814905b..3ab814fe 100644 --- a/system/sections/control/servers/scan.php +++ b/system/sections/control/servers/scan.php @@ -24,4 +24,3 @@ sys::outjs(scan::status($sid)); exit; -?> \ No newline at end of file diff --git a/system/sections/control/servers/settings.php b/system/sections/control/servers/settings.php index e0424bb4..b9260607 100644 --- a/system/sections/control/servers/settings.php +++ b/system/sections/control/servers/settings.php @@ -8,4 +8,3 @@ ctrl::nav($server, $id, $sid, 'settings'); include(ctrl::route($server, 'settings', $go)); -?> \ No newline at end of file diff --git a/system/sections/control/settings.php b/system/sections/control/settings.php index 4db67b38..b1faf7d0 100644 --- a/system/sections/control/settings.php +++ b/system/sections/control/settings.php @@ -52,4 +52,3 @@ $html->set('fcpu', $ctrl['fcpu'] ? '' : ''); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/help/action/close.php b/system/sections/help/action/close.php index 9d46e2b3..a41782a7 100644 --- a/system/sections/help/action/close.php +++ b/system/sections/help/action/close.php @@ -15,4 +15,3 @@ } sys::outjs(array('e' => 'Вопрос не найден в базе.')); -?> \ No newline at end of file diff --git a/system/sections/help/action/delete.php b/system/sections/help/action/delete.php index 4adf260f..a177ac9d 100644 --- a/system/sections/help/action/delete.php +++ b/system/sections/help/action/delete.php @@ -25,4 +25,3 @@ } sys::outjs(array('e' => 'Вопрос не найден в базе.')); -?> \ No newline at end of file diff --git a/system/sections/help/action/open.php b/system/sections/help/action/open.php index 9ed522b5..56b36914 100644 --- a/system/sections/help/action/open.php +++ b/system/sections/help/action/open.php @@ -15,4 +15,3 @@ } sys::outjs(array('e' => 'Вопрос не найден в базе.')); -?> \ No newline at end of file diff --git a/system/sections/help/action/read.php b/system/sections/help/action/read.php index 7d14b703..af3c88de 100644 --- a/system/sections/help/action/read.php +++ b/system/sections/help/action/read.php @@ -43,4 +43,3 @@ } sys::out('Необходимо передать номер вопроса.'); -?> \ No newline at end of file diff --git a/system/sections/help/action/remove.php b/system/sections/help/action/remove.php index 548640b9..961b2228 100644 --- a/system/sections/help/action/remove.php +++ b/system/sections/help/action/remove.php @@ -28,4 +28,3 @@ } sys::outjs(array('e' => 'Вопрос не найден в базе.')); -?> \ No newline at end of file diff --git a/system/sections/help/action/reply.php b/system/sections/help/action/reply.php index 0fedba2d..cd053d96 100644 --- a/system/sections/help/action/reply.php +++ b/system/sections/help/action/reply.php @@ -103,4 +103,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/help/action/write.php b/system/sections/help/action/write.php index 631a1239..770000c8 100644 --- a/system/sections/help/action/write.php +++ b/system/sections/help/action/write.php @@ -51,4 +51,3 @@ } sys::out('Необходимо передать номер вопроса.'); -?> \ No newline at end of file diff --git a/system/sections/help/close.php b/system/sections/help/close.php index b852e433..3dc90911 100644 --- a/system/sections/help/close.php +++ b/system/sections/help/close.php @@ -95,4 +95,3 @@ $html->unitall('main', 'admin', 1); else $html->unitall('main', 'admin'); -?> \ No newline at end of file diff --git a/system/sections/help/create.php b/system/sections/help/create.php index 13926b72..94bb8e51 100644 --- a/system/sections/help/create.php +++ b/system/sections/help/create.php @@ -131,4 +131,3 @@ $html->set('services', $services); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/help/dialog.php b/system/sections/help/dialog.php index 310b5e1c..cf57c91f 100644 --- a/system/sections/help/dialog.php +++ b/system/sections/help/dialog.php @@ -191,4 +191,3 @@ } $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/help/notice.php b/system/sections/help/notice.php index 59f82508..04ba839b 100644 --- a/system/sections/help/notice.php +++ b/system/sections/help/notice.php @@ -44,4 +44,3 @@ $html->pack('notice'); sys::outjs(array('notice' => $html->arr['notice'])); -?> \ No newline at end of file diff --git a/system/sections/help/open.php b/system/sections/help/open.php index c56ba80d..615d0844 100644 --- a/system/sections/help/open.php +++ b/system/sections/help/open.php @@ -105,4 +105,3 @@ $html->unitall('main', 'admin', 1); else $html->unitall('main', 'admin'); -?> \ No newline at end of file diff --git a/system/sections/help/upload.php b/system/sections/help/upload.php index 0fb0b132..ec668f67 100644 --- a/system/sections/help/upload.php +++ b/system/sections/help/upload.php @@ -27,4 +27,3 @@ } exit('Ошибка загрузки: убедитесь, что изображение не повреждено и имеет правильный формат.'); -?> \ No newline at end of file diff --git a/system/sections/megp/news/index.php b/system/sections/megp/news/index.php deleted file mode 100644 index c0c9ea18..00000000 --- a/system/sections/megp/news/index.php +++ /dev/null @@ -1,27 +0,0 @@ -query('SELECT `id` FROM `news`'); - -$aPage = sys::page($page, $sql->num(), $cfg['news_page']); - -sys::page_gen($aPage['ceil'], $page, $aPage['page'], 'news'); - -$sql->query('SELECT `id`, `name`, `text`, `views`, `tags`, `date` FROM `news` ORDER BY `id` DESC LIMIT ' . $aPage['num'] . ', ' . $cfg['news_page']); -while ($news = $sql->get()) { - $html->get('list', 'sections/news'); - $html->set('id', $news['id']); - $html->set('name', htmlspecialchars_decode($news['name'])); - $html->set('text', htmlspecialchars_decode($news['text'])); - $html->set('views', $news['views']); - $html->set('tags', sys::tags($news['tags'])); - $html->set('date', sys::today($news['date'])); - $html->pack('news'); -} - -$html->get('all', 'sections/news'); -$html->set('list', isset($html->arr['news']) ? $html->arr['news'] : ''); -$html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/news/news.php b/system/sections/megp/news/news.php deleted file mode 100644 index ef98f48b..00000000 --- a/system/sections/megp/news/news.php +++ /dev/null @@ -1,32 +0,0 @@ -query('SELECT `id`, `name`, `full_text`, `views`, `tags`, `date` FROM `news` WHERE `id`="' . $id . '" LIMIT 1'); - -if (!$sql->num()) - include(ENG . '404.php'); - -$news = $sql->get(); - -$sql->query('UPDATE `news` set `views`="' . ($news['views'] + 1) . '" WHERE `id`="' . $id . '" LIMIT 1'); - -$text = htmlspecialchars_decode($news['full_text']); - -$title = $news['name']; -$description = $text; -$keywords = $news['tags']; - -$html->nav($news['name']); - -$html->get('news', 'sections/news'); - -$html->set('id', $news['id']); -$html->set('name', htmlspecialchars_decode($news['name'])); -$html->set('text', $text); -$html->set('views', $news['views']); -$html->set('tags', sys::tags($news['tags'])); -$html->set('date', sys::today($news['date'])); - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/action.php b/system/sections/megp/servers/action.php deleted file mode 100644 index af43e766..00000000 --- a/system/sections/megp/servers/action.php +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/system/sections/megp/servers/boost.php b/system/sections/megp/servers/boost.php deleted file mode 100644 index ff165506..00000000 --- a/system/sections/megp/servers/boost.php +++ /dev/null @@ -1,11 +0,0 @@ -query('SELECT `unit`, `address`, `game`, `status`, `plugins_use`, `ftp_use`, `console_use`, `stats_use`, `copy_use`, `web_use`, `time` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = $sql->get(); - -sys::nav($server, $id, 'boost'); - -include(sys::route($server, 'boost', $go)); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/console.php b/system/sections/megp/servers/console.php deleted file mode 100644 index 0d20a68b..00000000 --- a/system/sections/megp/servers/console.php +++ /dev/null @@ -1,11 +0,0 @@ -query('SELECT `unit`, `address`, `game`, `status`, `plugins_use`, `ftp_use`, `console_use`, `stats_use`, `copy_use`, `web_use`, `time` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = $sql->get(); - -sys::nav($server, $id, 'console'); - -include(sys::route($server, 'console', $go)); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/crmp/console.php b/system/sections/megp/servers/crmp/console.php deleted file mode 100644 index a841468a..00000000 --- a/system/sections/megp/servers/crmp/console.php +++ /dev/null @@ -1,14 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$html->get('console', 'sections/servers/' . $server['game']); -$html->set('id', $id); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/crmp/index.php b/system/sections/megp/servers/crmp/index.php deleted file mode 100644 index 31f6119b..00000000 --- a/system/sections/megp/servers/crmp/index.php +++ /dev/null @@ -1,35 +0,0 @@ -query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `map`, `time`, `date`, `overdue` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1'); -$unit = $sql->get(); - -$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -$btn = sys::buttons($id, $server['status'], $server['game']); - -$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']); - -$html->get('index', 'sections/servers/' . $server['game']); -$html->set('id', $id); -$html->set('unit', $unit['name']); -$html->set('tarif', $tarif['name']); -$tarif['packs'] = sys::b64djs($tarif['packs']); -$html->set('pack', $tarif['packs'][$server['pack']]); -$html->set('address', $server['address']); -$html->set('game', $aGname[$server['game']]); -$html->set('slots', $server['slots_start']); -$html->set('online', $server['online']); -$html->set('name', $server['name']); -$html->set('status', sys::status($server['status'], $server['game'], $server['map'])); -$html->set('time_end', $time_end); -$html->set('time', sys::today($server['time'])); -$html->set('date', sys::today($server['date'])); -$html->set('btn', $btn); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/crmp/settings.php b/system/sections/megp/servers/crmp/settings.php deleted file mode 100644 index 01cd3f76..00000000 --- a/system/sections/megp/servers/crmp/settings.php +++ /dev/null @@ -1,45 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$aSub = array('start', 'pack'); - -// Если выбран подраздел -if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) { - if ($go) - $nmch = sys::rep_act('server_settings_go_' . $id, 10); - - $dir = $url['subsection'] == 'start' ? 'megp/' : ''; - - if (in_array($url['subsection'], $aRouteSub['settings'])) - include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php'); - else - include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php'); -} else { - if ($mcache->get('server_settings_' . $id) != '') - $html->arr['main'] = $mcache->get('server_settings_' . $id); - else { - $sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); - $tarif = $sql->get(); - - // Построение списка доступных сборок - $aPacks = sys::b64djs($tarif['packs']); - - $packs = ''; - unset($aPacks[$server['pack']]); - - foreach ($aPacks as $pack => $desc) - $packs .= ''; - - $html->get('settings', 'sections/servers/' . $server['game']); - $html->set('id', $id); - $html->set('packs', $packs); - $html->pack('main'); - - $mcache->set('server_settings_' . $id, $html->arr['main'], false, 20); - } -} -?> \ No newline at end of file diff --git a/system/sections/megp/servers/crmp/settings/start.php b/system/sections/megp/servers/crmp/settings/start.php deleted file mode 100644 index 5ec8e6d6..00000000 --- a/system/sections/megp/servers/crmp/settings/start.php +++ /dev/null @@ -1,42 +0,0 @@ -query('SELECT `uid`, `slots`, `slots_start`, `autorestart` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -include(LIB . 'games/games.php'); - -// Сохранение -if ($go and $url['save']) { - $value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch); - - switch ($url['save']) { - case 'slots': - $slots = $value > $server['slots'] ? $server['slots'] : $value; - $slots = $value < 2 ? 2 : $slots; - - if ($slots != $server['slots_start']) - $sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - } -} - -// Генерация списка слот -$slots = ''; - -for ($slot = 2; $slot <= $server['slots']; $slot += 1) - $slots .= ''; - -// Авторестарт при зависании -$autorestart = $server['autorestart'] ? '' : ''; - -$html->get('start', 'sections/servers/' . $server['game'] . '/settings'); - -$html->set('id', $id); -$html->set('autorestart', $autorestart); -$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots)); - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/crmp/tarif.php b/system/sections/megp/servers/crmp/tarif.php deleted file mode 100644 index eea898a9..00000000 --- a/system/sections/megp/servers/crmp/tarif.php +++ /dev/null @@ -1,12 +0,0 @@ -query('SELECT `name`, `slots_min`, `slots_max`, `install`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -// Подразделы -$aSub = array('extend', 'slots'); - -include(SEC . 'megp/servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/crmp/tarif/extend.php b/system/sections/megp/servers/crmp/tarif/extend.php deleted file mode 100644 index f05d263f..00000000 --- a/system/sections/megp/servers/crmp/tarif/extend.php +++ /dev/null @@ -1,47 +0,0 @@ - 'Переданы не все данные'), $nmch); - - // Проверка периода - if (!in_array($aData['time'], explode(':', $tarif['timext']))) - sys::outjs(array('e' => 'Переданы неверные данные'), $nmch); - -} - -$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : ''; -$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false; -$aData['server'] = $id; -$aData['user'] = $server['user']; -$aData['tarif'] = $server['tarif']; -$aData['slots'] = $server['slots']; - -// Цена за выделенный адрес -$add_sum = tarifs::address_add_sum($aData['address'], $server); - -// Цена за 30 дней 1 слота -$price = $tarif['price']; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = $server['time']; - -// Цена аренды -$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']); - -$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); - -include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/crmp/tarif/slots.php b/system/sections/megp/servers/crmp/tarif/slots.php deleted file mode 100644 index ece744d4..00000000 --- a/system/sections/megp/servers/crmp/tarif/slots.php +++ /dev/null @@ -1,30 +0,0 @@ - 'На данном тарифе нельзя изменить количество слот.'), $nmch); - -$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch); - -$overdue = $server['time'] < $start_point; - -if ($cfg['change_slots'][$server['game']]['days'] || $overdue) { - // Цена за 1 день - $price = $tarif['price'] / 30; - - // Цена аренды за остаток дней (с текущим кол-вом слот) - $price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots']; -} - -$max = $tarif['slots_max'] - $server['slots']; - -// Сумма за добавляемые слоты -$sum = round(($server['time'] - $start_point) / 86400 * ($tarif['price'] / 30) * $slots, 2); - -include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cs/boost.php b/system/sections/megp/servers/cs/boost.php deleted file mode 100644 index 8adc56d2..00000000 --- a/system/sections/megp/servers/cs/boost.php +++ /dev/null @@ -1,67 +0,0 @@ - 'Необходимо указать сервис.')); - $aData['service'] = isset($url['service']) ? sys::int($url['service']) : sys::outjs(array('e' => 'Необходимо указать номер услуги.')); - - include(DATA . 'boost.php'); - - // Проверка сервиса - if (!array_key_exists($aData['site'], $aBoost[$server['game']])) - sys::outjs(array('e' => 'Указанный сервис по раскрутке не найден.')); - - // Проверка номера услуги - if (!in_array($aData['service'], $aBoost[$server['game']][$aData['site']]['services'])) - sys::outjs(array('e' => 'Неправильно указан номер услуги.')); - - // Определение суммы - $sum = $aBoost[$server['game']][$aData['site']]['price'][$aData['service']]; - - // Проверка баланса - if ($user['balance'] < $sum) - sys::outjs(array('e' => 'У вас не хватает ' . (round($sum - $user['balance'], 2)) . ' ' . $cfg['currency']), $name_mcache); - - include(LIB . 'games/boost.php'); - - $boost = new boost($aBoost[$server['game']][$aData['site']]['key'], $aBoost[$server['game']][$aData['site']]['api']); - - $buy = $boost->$aBoost[$server['game']][$aData['site']]['type'](array('period' => $aData['service'], 'address' => $server['address'])); - - if (is_array($buy)) - sys::outjs(array('e' => $buy['error'])); - - // Списание средств с баланса пользователя - $sql->query('UPDATE `users` set `balance`="' . ($user['balance'] - $sum) . '" WHERE `id`="' . $user['id'] . '" LIMIT 1'); - - include(LIB . 'games/games.php'); - - // Реф. система - games::part($user['id'], $sum); - - $sql->query('INSERT INTO `logs` set `user`="' . $user['id'] . '", `text`="' . sys::updtext(sys::text('logs', 'buy_boost'), - array('circles' => $aBoost[$server['game']][$aData['site']]['circles'][$aData['service']], - 'money' => $sum, 'site' => $aBoost[$server['game']][$aData['site']]['site'], 'id' => $id)) . '", `date`="' . $start_point . '", `type`="boost", `money`="' . $sum . '"'); - - $sql->query('INSERT INTO `boost` set `user`="' . $user['id'] . '", `server`="' . $id . '", `site`="' . $aData['site'] . '", `circles`="' . $aBoost[$server['game']][$aData['site']]['circles'][$aData['service']] . '", `money`="' . $sum . '", `date`="' . $start_point . '"'); - - sys::outjs(array('s' => 'ok'), $name_mcache); -} - -if ($mcache->get('server_boost_' . $id) != '') - $html->arr['main'] = $mcache->get('server_boost_' . $id); -else { - $html->get('boost', 'sections/servers/' . $server['game']); - - $html->set('id', $id); - $html->set('address', $server['address']); - $html->set('cur', $cfg['currency']); - - $html->pack('main'); - - $mcache->set('server_boost_' . $id, $html->arr['main'], false, 4); -} -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cs/console.php b/system/sections/megp/servers/cs/console.php deleted file mode 100644 index a841468a..00000000 --- a/system/sections/megp/servers/cs/console.php +++ /dev/null @@ -1,14 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$html->get('console', 'sections/servers/' . $server['game']); -$html->set('id', $id); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cs/index.php b/system/sections/megp/servers/cs/index.php deleted file mode 100644 index 9b8b1227..00000000 --- a/system/sections/megp/servers/cs/index.php +++ /dev/null @@ -1,41 +0,0 @@ -query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `fps`, `map`, `time`, `date`, `overdue` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1'); -$unit = $sql->get(); - -$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -$btn = sys::buttons($id, $server['status']); - -$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']); - -$html->get('index', 'sections/servers/' . $server['game']); - -$html->set('id', $id); -$html->set('unit', $unit['name']); -$html->set('tarif', $tarif['name'] . ' / ' . $server['fps'] . ' FPS'); - -$tarif['packs'] = sys::b64djs($tarif['packs']); - -$html->set('pack', $tarif['packs'][$server['pack']]); -$html->set('address', $server['address']); -$html->set('game', $aGname[$server['game']]); -$html->set('slots', $server['slots_start']); -$html->set('online', $server['online']); -$html->set('players', base64_decode($server['players'])); -$html->set('name', $server['name']); -$html->set('status', sys::status($server['status'], $server['game'], $server['map'])); -$html->set('time_end', $time_end); -$html->set('time', sys::today($server['time'])); -$html->set('date', sys::today($server['date'])); - -$html->set('btn', $btn); - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cs/settings.php b/system/sections/megp/servers/cs/settings.php deleted file mode 100644 index f3ba9202..00000000 --- a/system/sections/megp/servers/cs/settings.php +++ /dev/null @@ -1,50 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$aSub = array('start', 'pack', 'antiddos'); - -// Если выбран подраздел -if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) { - if ($go) - $nmch = sys::rep_act('server_settings_go_' . $id, 10); - - $dir = $url['subsection'] == 'start' ? 'megp/' : ''; - - if (in_array($url['subsection'], $aRouteSub['settings'])) - include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php'); - else - include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php'); -} else { - if ($mcache->get('server_settings_' . $id) != '') - $html->arr['main'] = $mcache->get('server_settings_' . $id); - else { - $sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); - $tarif = $sql->get(); - - // Построение списка доступных сборок - $aPacks = sys::b64djs($tarif['packs']); - - $packs = ''; - unset($aPacks[$server['pack']]); - - foreach ($aPacks as $pack => $desc) - $packs .= ''; - - $antiddos = '' - . '' - . ''; - - $html->get('settings', 'sections/servers/' . $server['game']); - $html->set('id', $id); - $html->set('packs', $packs); - $html->set('antiddos', str_replace($server['ddos'], $server['ddos'] . '" selected="select', $antiddos)); - $html->pack('main'); - - $mcache->set('server_settings_' . $id, $html->arr['main'], false, 20); - } -} -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cs/settings/start.php b/system/sections/megp/servers/cs/settings/start.php deleted file mode 100644 index f476f2dc..00000000 --- a/system/sections/megp/servers/cs/settings/start.php +++ /dev/null @@ -1,153 +0,0 @@ -query('SELECT `uid`, `slots`, `slots_start`, `map_start`, `vac`, `fps`, `fastdl`, `autorestart`, `pingboost` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$sql->query('SELECT `address`, `passwd` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1'); -$unit = $sql->get(); - -$sql->query('SELECT `install`, `fps`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -include(LIB . 'games/games.php'); -include(LIB . 'games/tarifs.php'); -include(LIB . 'games/' . $server['game'] . '/tarif.php'); - -// Вывод списка карт -if (isset($url['maps'])) - games::maplist($id, $unit, $tarif['install'] . $server['uid'] . '/cstrike/maps', $server['map_start'], false); - -// Сохранение -if ($go and $url['save']) { - $value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch); - - switch ($url['save']) { - case 'map': - $map = isset($url['value']) ? trim($url['value']) : sys::outjs(array('s' => 'ok'), $nmch); - - if ($map != $server['map_start']) - games::maplist($id, $unit, $tarif['install'] . $server['uid'] . '/cstrike/maps', $map, true, $nmch); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'vac': - if ($value != $server['vac']) - $sql->query('UPDATE `servers` set `vac`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'slots': - $slots = $value > $server['slots'] ? $server['slots'] : $value; - $slots = $value < 2 ? 2 : $slots; - - if ($slots != $server['slots_start']) - $sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'autorestart': - if ($value != $server['autorestart']) - $sql->query('UPDATE `servers` set `autorestart`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'fps': - if (!tarif::price($tarif['price']) and in_array($value, explode(':', $tarif['fps']))) - $sql->query('UPDATE `servers` set `fps`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'pingboost': - if ($cfg['change_pingboost'] and in_array($value, array(1, 2, 3))) - $sql->query('UPDATE `servers` set `pingboost`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'fastdl': - include(LIB . 'ssh.php'); - - if (!$ssh->auth($unit['passwd'], $unit['address'])) - sys::outjs(array('e' => sys::text('error', 'ssh')), $nmch); - - if ($value) { - $fastdl = 'sv_downloadurl "http://' . sys::first(explode(':', $unit['address'])) . ':8080/fast_' . $server['uid'] . '"' . PHP_EOL - . 'sv_consistency 1' . PHP_EOL - . 'sv_allowupload 1' . PHP_EOL - . 'sv_allowdownload 1'; - - // Временый файл - $temp = sys::temp($fastdl); - - $ssh->setfile($temp, $tarif['install'] . $server['uid'] . '/cstrike/fastdl.cfg', 0644); - - $ssh->set('chown server' . $server['uid'] . ':servers ' . $tarif['install'] . $server['uid'] . '/cstrike/fastdl.cfg;' - . 'ln -s ' . $tarif['install'] . $server['uid'] . '/cstrike /var/nginx/fast_' . $server['uid'] . ';' - . 'sed -i ' . "'s/exec fastdl.cfg//g'" . ' ' . $tarif['install'] . $server['uid'] . '/cstrike/server.cfg;' - . 'echo "exec fastdl.cfg" >> ' . $tarif['install'] . $server['uid'] . '/cstrike/server.cfg'); - - unlink($temp); - } else - $ssh->set('sed -i ' . "'s/exec fastdl.cfg//g'" . ' ' . $tarif['install'] . $server['uid'] . '/cstrike/server.cfg;' - . 'rm ' . $tarif['install'] . $server['uid'] . '/cstrike/fastdl.cfg; rm /var/nginx/fast_' . $server['uid']); - - $sql->query('UPDATE `servers` set `fastdl`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - } -} - -// Генерация списка слот -$slots = ''; - -for ($slot = 2; $slot <= $server['slots']; $slot += 1) - $slots .= ''; - -// Античит VAC -$vac = $server['vac'] ? '' : ''; - -// Быстрая скачака -$fastdl = $server['fastdl'] ? '' : ''; - -// Авторестарт при зависании -$autorestart = $server['autorestart'] ? '' : ''; - -$fps = ''; - -if (!tarif::price($tarif['price'])) { - $aFps = explode(':', $tarif['fps']); - - unset($aFps[array_search($server['fps'], $aFps)]); - - if (count($aFps)) - foreach ($aFps as $value) - $fps .= ''; -} - -if ($cfg['change_pingboost']) - $pingboost = str_replace($server['pingboost'] . '"', $server['pingboost'] . '" selected="select"', ''); - -$html->get('start', 'sections/servers/' . $server['game'] . '/settings'); - -$html->set('id', $id); -$html->set('map', $server['map_start']); -$html->set('vac', $vac); -$html->set('fastdl', $fastdl); -$html->set('autorestart', $autorestart); -$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots)); - -if ($cfg['change_pingboost']) { - $html->unit('pingboost', true); - $html->set('pingboost', $pingboost); -} else - $html->unit('pingboost'); - -if (!tarif::price($tarif['price'])) { - $html->unit('fps', true); - $html->set('fps', $fps); -} else - $html->unit('fps'); - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cs/tarif.php b/system/sections/megp/servers/cs/tarif.php deleted file mode 100644 index 2e8d9519..00000000 --- a/system/sections/megp/servers/cs/tarif.php +++ /dev/null @@ -1,12 +0,0 @@ -query('SELECT `name`, `slots_min`, `slots_max`, `install`, `fps`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -// Подразделы -$aSub = array('extend', 'plan', 'slots'); - -include(SEC . 'megp/servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cs/tarif/extend.php b/system/sections/megp/servers/cs/tarif/extend.php deleted file mode 100644 index 50448081..00000000 --- a/system/sections/megp/servers/cs/tarif/extend.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Переданы не все данные'), $nmch); - - // Проверка периода - if (!in_array($aData['time'], explode(':', $tarif['timext']))) - sys::outjs(array('e' => 'Переданы неверные данные'), $nmch); - -} - -$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : ''; -$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false; -$aData['server'] = $id; -$aData['user'] = $server['user']; -$aData['tarif'] = $server['tarif']; -$aData['fps'] = $server['fps']; -$aData['slots'] = $server['slots']; - -// Цена за выделенный адрес -$add_sum = tarifs::address_add_sum($aData['address'], $server); - -$aPrice = explode(':', $tarif['price']); -$aFPS = explode(':', $tarif['fps']); - -// Цена за 30 дней 1 слота -$price = $aPrice[array_search($server['fps'], $aFPS)]; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = $server['time']; - -// Цена аренды -$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']); - -$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); - -include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cs/tarif/plan.php b/system/sections/megp/servers/cs/tarif/plan.php deleted file mode 100644 index 2933373d..00000000 --- a/system/sections/megp/servers/cs/tarif/plan.php +++ /dev/null @@ -1,62 +0,0 @@ - 'Переданые не все данные'), $nmch); - -$aPrice = explode(':', $tarif['price']); -$aFPS = explode(':', $tarif['fps']); - -// Проверка плана -if (array_search($plan, $aFPS) === FALSE) - sys::outjs(array('e' => 'Переданы неверные данные'), $nmch); - -if ($plan == $server['fps']) - sys::outjs(array('e' => 'Смысла в этой операции нет'), $nmch); - -if (!tarif::price($tarif['price'])) - sys::outjs(array('e' => 'Чтобы изменить тариф, перейдите в настройки запуска'), $nmch); - -if ($server['time'] < $start_point + 86400) - $time = $server['time']; -else { - // Цена за 1 день аренды (по новому тарифному плану) - $price = $aPrice[array_search($plan, $aFPS)] / 30 * $server['slots']; - - // Цена за 1 день аренды (по старому тарифному плану) - $price_old = $aPrice[array_search($server['fps'], $aFPS)] / 30 * $server['slots']; - - // Остаток дней аренды - $days = ($server['time'] - $start_point) / 86400; - - $time = date('H:i:s', $server['time']); - $date = date('d.m.Y', round($start_point + $days * $price_old / $price * 86400 - 86400)); - - $aDate = explode('.', $date); - $aTime = explode(':', $time); - - $time = mktime($aTime[0], $aTime[1], $aTime[2], $aDate[1], $aDate[0], $aDate[2]); -} - -// Выполнение смена тарифного плана -if ($go) { - $sql->query('UPDATE `servers` set `time`="' . $time . '", `fps`="' . $plan . '" WHERE `id`="' . $id . '" LIMIT 1'); - - if (in_array($server['status'], array('working', 'start', 'restart', 'change'))) { - include(LIB . 'games/' . $server['game'] . '/action.php'); - - action::start($id, 'restart'); - } - - // Запись логов - $sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_plan') . '", `time`="' . $start_point . '"'); - - sys::outjs(array('s' => 'ok'), $nmch); -} - -// Выхлоп информации -sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cs/tarif/slots.php b/system/sections/megp/servers/cs/tarif/slots.php deleted file mode 100644 index 0db6e179..00000000 --- a/system/sections/megp/servers/cs/tarif/slots.php +++ /dev/null @@ -1,33 +0,0 @@ - 'На данном тарифе нельзя изменить количество слот.'), $nmch); - -$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch); - -$aPrice = explode(':', $tarif['price']); -$aFPS = explode(':', $tarif['fps']); - -$overdue = $server['time'] < $start_point; - -if ($cfg['change_slots'][$server['game']]['days'] || $overdue) { - // Цена за 1 день 1 слота - $price = $aPrice[array_search($server['fps'], $aFPS)] / 30; - - // Цена аренды за остаток дней (с текущим кол-вом слот) - $price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots']; -} - -$max = $tarif['slots_max'] - $server['slots']; - -// Сумма за добавляемые слоты -$sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[array_search($server['fps'], $aFPS)] / 30) * $slots, 2); - -include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/csgo/console.php b/system/sections/megp/servers/csgo/console.php deleted file mode 100644 index a841468a..00000000 --- a/system/sections/megp/servers/csgo/console.php +++ /dev/null @@ -1,14 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$html->get('console', 'sections/servers/' . $server['game']); -$html->set('id', $id); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/csgo/index.php b/system/sections/megp/servers/csgo/index.php deleted file mode 100644 index 9b8b1227..00000000 --- a/system/sections/megp/servers/csgo/index.php +++ /dev/null @@ -1,41 +0,0 @@ -query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `fps`, `map`, `time`, `date`, `overdue` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1'); -$unit = $sql->get(); - -$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -$btn = sys::buttons($id, $server['status']); - -$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']); - -$html->get('index', 'sections/servers/' . $server['game']); - -$html->set('id', $id); -$html->set('unit', $unit['name']); -$html->set('tarif', $tarif['name'] . ' / ' . $server['fps'] . ' FPS'); - -$tarif['packs'] = sys::b64djs($tarif['packs']); - -$html->set('pack', $tarif['packs'][$server['pack']]); -$html->set('address', $server['address']); -$html->set('game', $aGname[$server['game']]); -$html->set('slots', $server['slots_start']); -$html->set('online', $server['online']); -$html->set('players', base64_decode($server['players'])); -$html->set('name', $server['name']); -$html->set('status', sys::status($server['status'], $server['game'], $server['map'])); -$html->set('time_end', $time_end); -$html->set('time', sys::today($server['time'])); -$html->set('date', sys::today($server['date'])); - -$html->set('btn', $btn); - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/csgo/settings.php b/system/sections/megp/servers/csgo/settings.php deleted file mode 100644 index f3ba9202..00000000 --- a/system/sections/megp/servers/csgo/settings.php +++ /dev/null @@ -1,50 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$aSub = array('start', 'pack', 'antiddos'); - -// Если выбран подраздел -if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) { - if ($go) - $nmch = sys::rep_act('server_settings_go_' . $id, 10); - - $dir = $url['subsection'] == 'start' ? 'megp/' : ''; - - if (in_array($url['subsection'], $aRouteSub['settings'])) - include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php'); - else - include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php'); -} else { - if ($mcache->get('server_settings_' . $id) != '') - $html->arr['main'] = $mcache->get('server_settings_' . $id); - else { - $sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); - $tarif = $sql->get(); - - // Построение списка доступных сборок - $aPacks = sys::b64djs($tarif['packs']); - - $packs = ''; - unset($aPacks[$server['pack']]); - - foreach ($aPacks as $pack => $desc) - $packs .= ''; - - $antiddos = '' - . '' - . ''; - - $html->get('settings', 'sections/servers/' . $server['game']); - $html->set('id', $id); - $html->set('packs', $packs); - $html->set('antiddos', str_replace($server['ddos'], $server['ddos'] . '" selected="select', $antiddos)); - $html->pack('main'); - - $mcache->set('server_settings_' . $id, $html->arr['main'], false, 20); - } -} -?> \ No newline at end of file diff --git a/system/sections/megp/servers/csgo/settings/start.php b/system/sections/megp/servers/csgo/settings/start.php deleted file mode 100644 index 5a0d2e2c..00000000 --- a/system/sections/megp/servers/csgo/settings/start.php +++ /dev/null @@ -1,138 +0,0 @@ -query('SELECT `uid`, `slots`, `slots_start`, `map_start`, `vac`, `fastdl`, `autorestart`, `fps`, `tickrate` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$sql->query('SELECT `address`, `passwd` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1'); -$unit = $sql->get(); - -$sql->query('SELECT `install`, `tickrate`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -include(LIB . 'games/games.php'); -include(LIB . 'games/tarifs.php'); -include(LIB . 'games/' . $server['game'] . '/tarif.php'); - -// Вывод списка карт -if (isset($url['maps'])) - games::maplist($id, $unit, $tarif['install'] . $server['uid'] . '/csgo/maps', $server['map_start'], false); - -// Сохранение -if ($go and $url['save']) { - $value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch); - - switch ($url['save']) { - case 'map': - $map = isset($url['value']) ? trim($url['value']) : sys::outjs(array('s' => 'ok'), $nmch); - - if ($map != $server['map_start']) - games::maplist($id, $unit, $tarif['install'] . $server['uid'] . '/csgo/maps', $map, true, $nmch); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'vac': - if ($value != $server['vac']) - $sql->query('UPDATE `servers` set `vac`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'slots': - $slots = $value > $server['slots'] ? $server['slots'] : $value; - $slots = $value < 2 ? 2 : $slots; - - if ($slots != $server['slots_start']) - $sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'autorestart': - if ($value != $server['autorestart']) - $sql->query('UPDATE `servers` set `autorestart`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'tickrate': - if (!tarif::price($tarif['price']) and in_array($value, explode(':', $tarif['tickrate']))) - $sql->query('UPDATE `servers` set `tickrate`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'fastdl': - include(LIB . 'ssh.php'); - - if (!$ssh->auth($unit['passwd'], $unit['address'])) - sys::outjs(array('e' => sys::text('error', 'ssh')), $nmch); - - if ($value) { - $fastdl = 'sv_downloadurl "http://' . sys::first(explode(':', $unit['address'])) . ':8080/fast_' . $server['uid'] . '"' . PHP_EOL - . 'sv_consistency 1' . PHP_EOL - . 'sv_allowupload 1' . PHP_EOL - . 'sv_allowdownload 1'; - - // Временый файл - $temp = sys::temp($fastdl); - - $ssh->setfile($temp, $tarif['install'] . $server['uid'] . '/csgo/cfg/fastdl.cfg', 0644); - - $ssh->set('chown server' . $server['uid'] . ':servers ' . $tarif['install'] . $server['uid'] . '/csgo/cfg/fastdl.cfg;' - . 'ln -s ' . $tarif['install'] . $server['uid'] . '/csgo /var/nginx/fast_' . $server['uid'] . ';' - . 'sed -i ' . "'s/exec fastdl.cfg//g'" . ' ' . $tarif['install'] . $server['uid'] . '/csgo/cfg/server.cfg;' - . 'echo "exec fastdl.cfg" >> ' . $tarif['install'] . $server['uid'] . '/csgo/cfg/server.cfg'); - - unlink($temp); - } else - $ssh->set('sed -i ' . "'s/exec fastdl.cfg//g'" . ' ' . $tarif['install'] . $server['uid'] . '/csgo/cfg/server.cfg;' - . 'rm ' . $tarif['install'] . $server['uid'] . '/csgo/cfg/fastdl.cfg; rm /var/nginx/fast_' . $server['uid']); - - $sql->query('UPDATE `servers` set `fastdl`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - } -} - -// Генерация списка слот -$slots = ''; - -for ($slot = 2; $slot <= $server['slots']; $slot += 1) - $slots .= ''; - -// Античит VAC -$vac = $server['vac'] ? '' : ''; - -// Быстрая скачака -$fastdl = $server['fastdl'] ? '' : ''; - -// Авторестарт при зависании -$autorestart = $server['autorestart'] ? '' : ''; - -$tickrate = ''; - -if (!tarif::price($tarif['price'])) { - $aTick = explode(':', $tarif['tickrate']); - - unset($aTick[array_search($server['tickrate'], $aTick)]); - - if (count($aTick)) - foreach ($aTick as $value) - $tickrate .= ''; -} - -$html->get('start', 'sections/servers/' . $server['game'] . '/settings'); - -$html->set('id', $id); -$html->set('map', $server['map_start']); -$html->set('vac', $vac); -$html->set('fastdl', $fastdl); -$html->set('autorestart', $autorestart); -$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots)); - -if (!tarif::price($tarif['price'])) { - $html->unit('tickrate', true); - $html->set('tickrate', $tickrate); -} else - $html->unit('tickrate'); - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/csgo/tarif.php b/system/sections/megp/servers/csgo/tarif.php deleted file mode 100644 index 2e8d9519..00000000 --- a/system/sections/megp/servers/csgo/tarif.php +++ /dev/null @@ -1,12 +0,0 @@ -query('SELECT `name`, `slots_min`, `slots_max`, `install`, `fps`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -// Подразделы -$aSub = array('extend', 'plan', 'slots'); - -include(SEC . 'megp/servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/csgo/tarif/extend.php b/system/sections/megp/servers/csgo/tarif/extend.php deleted file mode 100644 index ff46759c..00000000 --- a/system/sections/megp/servers/csgo/tarif/extend.php +++ /dev/null @@ -1,50 +0,0 @@ - 'Переданы не все данные'), $nmch); - - // Проверка периода - if (!in_array($aData['time'], explode(':', $tarif['timext']))) - sys::outjs(array('e' => 'Переданы неверные данные'), $nmch); - -} - -$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : ''; -$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false; -$aData['server'] = $id; -$aData['user'] = $server['user']; -$aData['tarif'] = $server['tarif']; -$aData['tickrate'] = $server['tickrate']; -$aData['slots'] = $server['slots']; - -// Цена за выделенный адрес -$add_sum = tarifs::address_add_sum($aData['address'], $server); - -$aPrice = explode(':', $tarif['price']); - -// Цена за 30 дней 1 слота -$price = $aPrice[array_search($server['tickrate'], explode(':', $tarif['tickrate']))]; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = $server['time']; - -// Цена аренды -$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']); - -$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); - -include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/csgo/tarif/plan.php b/system/sections/megp/servers/csgo/tarif/plan.php deleted file mode 100644 index bdc97d93..00000000 --- a/system/sections/megp/servers/csgo/tarif/plan.php +++ /dev/null @@ -1,62 +0,0 @@ - 'Переданые не все данные'), $nmch); - -$aPrice = explode(':', $tarif['price']); -$aTICK = explode(':', $tarif['tickrate']); - -// Проверка плана -if (array_search($plan, $aTICK) === FALSE) - sys::outjs(array('e' => 'Переданы неверные данные'), $nmch); - -if ($plan == $server['tickrate']) - sys::outjs(array('e' => 'Смысла в этой операции нет'), $nmch); - -if (!tarif::price($tarif['price'])) - sys::outjs(array('e' => 'Чтобы изменить тариф, перейдите в настройки запуска'), $nmch); - -if ($server['time'] < $start_point + 86400) - $time = $server['time']; -else { - // Цена за 1 день аренды (по новому тарифному плану) - $price = $aPrice[array_search($plan, $aTICK)] / 30 * $server['slots']; - - // Цена за 1 день аренды (по старому тарифному плану) - $price_old = $aPrice[array_search($server['tickrate'], $aTICK)] / 30 * $server['slots']; - - // Остаток дней аренды - $days = ($server['time'] - $start_point) / 86400; - - $time = date('H:i:s', $server['time']); - $date = date('d.m.Y', round($start_point + $days * $price_old / $price * 86400 - 86400)); - - $aDate = explode('.', $date); - $aTime = explode(':', $time); - - $time = mktime($aTime[0], $aTime[1], $aTime[2], $aDate[1], $aDate[0], $aDate[2]); -} - -// Выполнение смена тарифного плана -if ($go) { - $sql->query('UPDATE `servers` set `time`="' . $time . '", `tickrate`="' . $plan . '" WHERE `id`="' . $id . '" LIMIT 1'); - - if (in_array($server['status'], array('working', 'start', 'restart', 'change'))) { - include(LIB . 'games/' . $server['game'] . '/action.php'); - - action::start($id, 'restart'); - } - - // Запись логов - $sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_plan') . '", `time`="' . $start_point . '"'); - - sys::outjs(array('s' => 'ok'), $nmch); -} - -// Выхлоп информации -sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/csgo/tarif/slots.php b/system/sections/megp/servers/csgo/tarif/slots.php deleted file mode 100644 index e4b82400..00000000 --- a/system/sections/megp/servers/csgo/tarif/slots.php +++ /dev/null @@ -1,33 +0,0 @@ - 'На данном тарифе нельзя изменить количество слот.'), $nmch); - -$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch); - -$aPrice = explode(':', $tarif['price']); -$aTICK = explode(':', $tarif['tickrate']); - -$overdue = $server['time'] < $start_point; - -if ($cfg['change_slots'][$server['game']]['days'] || $overdue) { - // Цена за 1 день - $price = $aPrice[array_search($server['tickrate'], $aTICK)] / 30; - - // Цена аренды за остаток дней (с текущим кол-вом слот) - $price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots']; -} - -$max = $tarif['slots_max'] - $server['slots']; - -// Сумма за добавляемые слоты -$sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[array_search($server['tickrate'], $aTICK)] / 30) * $slots, 2); - -include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/css/.htaccess b/system/sections/megp/servers/css/.htaccess deleted file mode 100644 index e69de29b..00000000 diff --git a/system/sections/megp/servers/cssold/console.php b/system/sections/megp/servers/cssold/console.php deleted file mode 100644 index a841468a..00000000 --- a/system/sections/megp/servers/cssold/console.php +++ /dev/null @@ -1,14 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$html->get('console', 'sections/servers/' . $server['game']); -$html->set('id', $id); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cssold/index.php b/system/sections/megp/servers/cssold/index.php deleted file mode 100644 index 5acded7e..00000000 --- a/system/sections/megp/servers/cssold/index.php +++ /dev/null @@ -1,41 +0,0 @@ -query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `fps`, `tickrate`, `map`, `time`, `date`, `overdue` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1'); -$unit = $sql->get(); - -$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -$btn = sys::buttons($id, $server['status']); - -$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']); - -$html->get('index', 'sections/servers/' . $server['game']); - -$html->set('id', $id); -$html->set('unit', $unit['name']); -$html->set('tarif', $tarif['name'] . ' / ' . $server['fps'] . ' FPS / ' . $server['tickrate'] . ' TickRate'); - -$tarif['packs'] = sys::b64djs($tarif['packs']); - -$html->set('pack', $tarif['packs'][$server['pack']]); -$html->set('address', $server['address']); -$html->set('game', $aGname[$server['game']]); -$html->set('slots', $server['slots_start']); -$html->set('online', $server['online']); -$html->set('players', base64_decode($server['players'])); -$html->set('name', $server['name']); -$html->set('status', sys::status($server['status'], $server['game'], $server['map'])); -$html->set('time_end', $time_end); -$html->set('time', sys::today($server['time'])); -$html->set('date', sys::today($server['date'])); - -$html->set('btn', $btn); - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cssold/settings.php b/system/sections/megp/servers/cssold/settings.php deleted file mode 100644 index f3ba9202..00000000 --- a/system/sections/megp/servers/cssold/settings.php +++ /dev/null @@ -1,50 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$aSub = array('start', 'pack', 'antiddos'); - -// Если выбран подраздел -if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) { - if ($go) - $nmch = sys::rep_act('server_settings_go_' . $id, 10); - - $dir = $url['subsection'] == 'start' ? 'megp/' : ''; - - if (in_array($url['subsection'], $aRouteSub['settings'])) - include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php'); - else - include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php'); -} else { - if ($mcache->get('server_settings_' . $id) != '') - $html->arr['main'] = $mcache->get('server_settings_' . $id); - else { - $sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); - $tarif = $sql->get(); - - // Построение списка доступных сборок - $aPacks = sys::b64djs($tarif['packs']); - - $packs = ''; - unset($aPacks[$server['pack']]); - - foreach ($aPacks as $pack => $desc) - $packs .= ''; - - $antiddos = '' - . '' - . ''; - - $html->get('settings', 'sections/servers/' . $server['game']); - $html->set('id', $id); - $html->set('packs', $packs); - $html->set('antiddos', str_replace($server['ddos'], $server['ddos'] . '" selected="select', $antiddos)); - $html->pack('main'); - - $mcache->set('server_settings_' . $id, $html->arr['main'], false, 20); - } -} -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cssold/settings/start.php b/system/sections/megp/servers/cssold/settings/start.php deleted file mode 100644 index 771ccbf6..00000000 --- a/system/sections/megp/servers/cssold/settings/start.php +++ /dev/null @@ -1,158 +0,0 @@ -query('SELECT `uid`, `slots`, `slots_start`, `map_start`, `vac`, `fastdl`, `autorestart`, `fps`, `tickrate` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$sql->query('SELECT `address`, `passwd` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1'); -$unit = $sql->get(); - -$sql->query('SELECT `install`, `fps`, `tickrate`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -include(LIB . 'games/games.php'); -include(LIB . 'games/tarifs.php'); -include(LIB . 'games/' . $server['game'] . '/tarif.php'); - -// Вывод списка карт -if (isset($url['maps'])) - games::maplist($id, $unit, $tarif['install'] . $server['uid'] . '/cstrike/maps', $server['map_start'], false); - -// Сохранение -if ($go and $url['save']) { - $value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch); - - switch ($url['save']) { - case 'map': - $map = isset($url['value']) ? trim($url['value']) : sys::outjs(array('s' => 'ok'), $nmch); - - if ($map != $server['map_start']) - games::maplist($id, $unit, $tarif['install'] . $server['uid'] . '/cstrike/maps', $map, true, $nmch); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'vac': - if ($value != $server['vac']) - $sql->query('UPDATE `servers` set `vac`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'slots': - $slots = $value > $server['slots'] ? $server['slots'] : $value; - $slots = $value < 2 ? 2 : $slots; - - if ($slots != $server['slots_start']) - $sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'autorestart': - if ($value != $server['autorestart']) - $sql->query('UPDATE `servers` set `autorestart`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'fps': - if (!tarif::price($tarif['price']) and in_array($value, explode(':', $tarif['fps']))) - $sql->query('UPDATE `servers` set `fps`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'tickrate': - if (!tarif::price($tarif['price']) and in_array($value, explode(':', $tarif['tickrate']))) - $sql->query('UPDATE `servers` set `tickrate`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'fastdl': - include(LIB . 'ssh.php'); - - if (!$ssh->auth($unit['passwd'], $unit['address'])) - sys::outjs(array('e' => sys::text('error', 'ssh')), $nmch); - - if ($value) { - $fastdl = 'sv_downloadurl "http://' . sys::first(explode(':', $unit['address'])) . ':8080/fast_' . $server['uid'] . '"' . PHP_EOL - . 'sv_consistency 1' . PHP_EOL - . 'sv_allowupload 1' . PHP_EOL - . 'sv_allowdownload 1'; - - // Временый файл - $temp = sys::temp($fastdl); - - $ssh->setfile($temp, $tarif['install'] . $server['uid'] . '/cstrike/cfg/fastdl.cfg', 0644); - - $ssh->set('chown server' . $server['uid'] . ':servers ' . $tarif['install'] . $server['uid'] . '/cstrike/cfg/fastdl.cfg;' - . 'ln -s ' . $tarif['install'] . $server['uid'] . '/cstrike /var/nginx/fast_' . $server['uid'] . ';' - . 'sed -i ' . "'s/exec fastdl.cfg//g'" . ' ' . $tarif['install'] . $server['uid'] . '/cstrike/cfg/server.cfg;' - . 'echo "exec fastdl.cfg" >> ' . $tarif['install'] . $server['uid'] . '/cstrike/cfg/server.cfg'); - - unlink($temp); - } else - $ssh->set('sed -i ' . "'s/exec fastdl.cfg//g'" . ' ' . $tarif['install'] . $server['uid'] . '/cstrike/cfg/server.cfg;' - . 'rm ' . $tarif['install'] . $server['uid'] . '/cstrike/cfg/fastdl.cfg; rm /var/nginx/fast_' . $server['uid']); - - $sql->query('UPDATE `servers` set `fastdl`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - } -} - -// Генерация списка слот -$slots = ''; - -for ($slot = 2; $slot <= $server['slots']; $slot += 1) - $slots .= ''; - -// Античит VAC -$vac = $server['vac'] ? '' : ''; - -// Быстрая скачака -$fastdl = $server['fastdl'] ? '' : ''; - -// Авторестарт при зависании -$autorestart = $server['autorestart'] ? '' : ''; - -$fps = ''; -$tickrate = ''; - -if (!tarif::price($tarif['price'])) { - $aFps = explode(':', $tarif['fps']); - - unset($aFps[array_search($server['fps'], $aFps)]); - - if (count($aFps)) - foreach ($aFps as $value) - $fps .= ''; - - $aTick = explode(':', $tarif['tickrate']); - - unset($aTick[array_search($server['tickrate'], $aTick)]); - - if (count($aTick)) - foreach ($aTick as $value) - $tickrate .= ''; -} - -$html->get('start', 'sections/servers/' . $server['game'] . '/settings'); - -$html->set('id', $id); -$html->set('map', $server['map_start']); -$html->set('vac', $vac); -$html->set('fastdl', $fastdl); -$html->set('autorestart', $autorestart); -$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots)); - -if (!tarif::price($tarif['price'])) { - $html->unit('fps', true); - $html->set('fps', $fps); - - $html->unit('tickrate', true); - $html->set('tickrate', $tickrate); -} else { - $html->unit('fps'); - $html->unit('tickrate'); -} - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cssold/tarif.php b/system/sections/megp/servers/cssold/tarif.php deleted file mode 100644 index 2fda8326..00000000 --- a/system/sections/megp/servers/cssold/tarif.php +++ /dev/null @@ -1,12 +0,0 @@ -query('SELECT `name`, `slots_min`, `slots_max`, `install`, `fps`, `tickrate`, `ram`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -// Подразделы -$aSub = array('extend', 'plan', 'slots'); - -include(SEC . 'megp/servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cssold/tarif/extend.php b/system/sections/megp/servers/cssold/tarif/extend.php deleted file mode 100644 index 9588d858..00000000 --- a/system/sections/megp/servers/cssold/tarif/extend.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Переданы не все данные'), $nmch); - - // Проверка периода - if (!in_array($aData['time'], explode(':', $tarif['timext']))) - sys::outjs(array('e' => 'Переданы неверные данные'), $nmch); - -} - -$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : ''; -$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false; -$aData['server'] = $id; -$aData['user'] = $server['user']; -$aData['tarif'] = $server['tarif']; -$aData['fps'] = $server['fps']; -$aData['tickrate'] = $server['tickrate']; -$aData['slots'] = $server['slots']; - -// Цена за выделенный адрес -$add_sum = tarifs::address_add_sum($aData['address'], $server); - -$aPrice = sys::b64djs($tarif['price']); - -// Цена за 30 дней 1 слота -$price = $aPrice[$server['tickrate'] . '_' . $server['fps']]; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = $server['time']; - -// Цена аренды -$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']); - -$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); - -include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cssold/tarif/plan.php b/system/sections/megp/servers/cssold/tarif/plan.php deleted file mode 100644 index 95307a0b..00000000 --- a/system/sections/megp/servers/cssold/tarif/plan.php +++ /dev/null @@ -1,63 +0,0 @@ - 'Переданые не все данные'), $nmch); - -$aPrice = sys::b64djs($tarif['price']); - -// Проверка плана -if (!array_key_exists($plan, $aPrice)) - sys::outjs(array('e' => 'Переданы неверные данные'), $nmch); - -list($tickrate, $fps) = explode('_', $plan); - -if ($tickrate == $server['tickrate'] and $fps == $server['fps']) - sys::outjs(array('e' => 'Смысла в этой операции нет'), $nmch); - -if (!tarif::price($tarif['price'])) - sys::outjs(array('e' => 'Чтобы изменить тариф, перейдите в настройки запуска'), $nmch); - -if ($server['time'] < $start_point + 86400) - $time = $server['time']; -else { - // Цена за 1 день (по новому тарифному плану) - $price = $aPrice[$plan] / 30 * $server['slots']; - - // Цена аренды за остаток дней - $price_old = $aPrice[$server['tickrate'] . '_' . $server['fps']] / 30 * $server['slots']; - - // Остаток дней аренды - $days = ($server['time'] - $start_point) / 86400; - - $time = date('H:i:s', $server['time']); - $date = date('d.m.Y', round($start_point + $days * $price_old / $price * 86400 - 86400)); - - $aDate = explode('.', $date); - $aTime = explode(':', $time); - - $time = mktime($aTime[0], $aTime[1], $aTime[2], $aDate[1], $aDate[0], $aDate[2]); -} - -// Выполнение смена тарифного плана -if ($go) { - $sql->query('UPDATE `servers` set `time`="' . $time . '", `fps`="' . $fps . '", `tickrate`="' . $tickrate . '" WHERE `id`="' . $id . '" LIMIT 1'); - - if (in_array($server['status'], array('working', 'start', 'restart', 'change'))) { - include(LIB . 'games/' . $server['game'] . '/action.php'); - - action::start($id, 'restart'); - } - - // Запись логов - $sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_plan') . '", `time`="' . $start_point . '"'); - - sys::outjs(array('s' => 'ok'), $nmch); -} - -// Выхлоп информации -sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/cssold/tarif/slots.php b/system/sections/megp/servers/cssold/tarif/slots.php deleted file mode 100644 index 141c31e9..00000000 --- a/system/sections/megp/servers/cssold/tarif/slots.php +++ /dev/null @@ -1,32 +0,0 @@ - 'На данном тарифе нельзя изменить количество слот.'), $nmch); - -$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch); - -$aPrice = sys::b64djs($tarif['price']); - -$overdue = $server['time'] < $start_point; - -if ($cfg['change_slots'][$server['game']]['days'] || $overdue) { - // Цена за 1 день - $price = $aPrice[$server['tickrate'] . '_' . $server['fps']] / 30; - - // Цена аренды за остаток дней (с текущим кол-вом слот) - $price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots']; -} - -$max = $tarif['slots_max'] - $server['slots']; - -// Сумма за добавляемые слоты -$sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[$server['tickrate'] . '_' . $server['fps']] / 30) * $slots, 2); - -include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/games/tarif.php b/system/sections/megp/servers/games/tarif.php deleted file mode 100644 index a1b3642f..00000000 --- a/system/sections/megp/servers/games/tarif.php +++ /dev/null @@ -1,48 +0,0 @@ -get('tarif', 'sections/servers/games'); - -$html->set('id', $id); - -$html->pack('main'); - -// Шаблон продления -if ($cfg['settlement_period']) - tarif::extend_sp($server, $tarif, $id); -else { - $options = games::parse_time(explode(':', $tarif['timext']), $tarif['discount'], $server['tarif'], 'extend'); - - tarif::extend($options, $server, $tarif['name'], $id); -} - -// Если не тестовый период -if (!$server['test']) { - $sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1'); - $unit = $sql->get(); - - // Шаблон смены тарифа (если аренда не менее 1 дня и цены планов различны) - if ($server['time'] > $start_point + 86400 and tarif::price($tarif['price'])) - tarif::plan($server, $tarif['name'], $id); - - // Шаблон изменения кол-ва слот - if ($tarif['slots_min'] != $tarif['slots_max']) - tarif::slots($server, array('min' => $tarif['slots_min'], 'max' => $tarif['slots_max']), $id); -} -?> \ No newline at end of file diff --git a/system/sections/megp/servers/games/tarif/extend.php b/system/sections/megp/servers/games/tarif/extend.php deleted file mode 100644 index 3ecd6f2c..00000000 --- a/system/sections/megp/servers/games/tarif/extend.php +++ /dev/null @@ -1,69 +0,0 @@ - с учетом промо-кода) -if (isset($url['promo']) || $aData['promo'] != '') - $promo = games::define_promo( - $aData['promo'], - $aData, - $tarif['discount'], - $sum, - 'extend' - ); - -// Использование промо-кода -if (is_array($promo)) { - if (array_key_exists('sum', $promo)) - $sum = $promo['sum']; - else - $aData['time'] += $promo['days'] * 86400; // Кол-во дней аренды с учетом подарочных (промо-код) -} - -// Выполнение продления -if ($go) { - // Проверка баланса - if ($user['balance'] < $sum) - sys::outjs(array('e' => 'У вас не хватает ' . (round($sum - $user['balance'], 2)) . ' ' . $cfg['currency']), $nmch); - - // Списание средств с баланса пользователя - $sql->query('UPDATE `users` set `balance`="' . ($user['balance'] - $sum) . '" WHERE `id`="' . $user['id'] . '" LIMIT 1'); - - // Реф. система - games::part($user['id'], $sum); - - $status = $server['status'] == 'overdue' ? '`status`="off",' : ''; - - // Время аренды - $time = $server['time'] < $start_point ? $start_point + $aData['time'] * 86400 : $server['time'] + $aData['time'] * 86400; - - // Обновление информации - $sql->query('UPDATE `servers` set ' . $status . ' `time`="' . $time . '", `test`="0" WHERE `id`="' . $id . '" LIMIT 1'); - - // Продление адреса на 30 дней - if ($add_sum) - $sql->query('UPDATE `address_buy` set `time`=`time`+"2592000" WHERE `server`="' . $id . '" LIMIT 1'); - - // Запись логов - if (!is_array($promo)) - $sql->query('INSERT INTO `logs` set `user`="' . $user['id'] . '", `text`="' . sys::updtext(sys::text('logs', 'extend_server'), - array('days' => $days, - 'money' => $sum, - 'id' => $id)) . '", `date`="' . $start_point . '", `type`="extend", `money`="' . $sum . '"'); - else { - $sql->query('INSERT INTO `promo_use` set `promo`="' . $promo['id'] . '", `user`="' . $user['id'] . '", `time`="' . $start_point . '"'); - - $sql->query('INSERT INTO `logs` set `user`="' . $user['id'] . '", `text`="' . sys::updtext(sys::text('logs', 'extend_server_promo'), - array('days' => $days, - 'money' => $sum, - 'promo' => $promo['cod'], 'id' => $id)) . '", `date`="' . $start_point . '", `type`="extend", `money`="' . $sum . '"'); - } - - sys::outjs(array('s' => 'ok'), $nmch); -} - -// Выхлоп цены -sys::outjs(array('s' => $sum)); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/games/tarif/slots.php b/system/sections/megp/servers/games/tarif/slots.php deleted file mode 100644 index 828ded12..00000000 --- a/system/sections/megp/servers/games/tarif/slots.php +++ /dev/null @@ -1,115 +0,0 @@ - '')); - - if ($go) { - $start = $server['slots_start'] > $slots ? ', `slots_start`="' . $slots . '"' : ''; - - $sql->query('UPDATE `servers` set `slots`="' . $slots . '" ' . $start . ' WHERE `id`="' . $id . '" LIMIT 1'); - - // Запись логов - $sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_slots') . '", `time`="' . $start_point . '"'); - - sys::outjs(array('s' => 'ok'), $nmch); - } - } - - // При возможности уменьшить - if ($cfg['change_slots'][$server['game']]['down'] || $overdue) { - // Проверка кол-ва слот - if ($slots < $tarif['slots_min'] || $slots > $tarif['slots_max']) - sys::outjs(array('e' => 'Переданые неверные данные.'), $nmch); - - if ($server['slots'] == $slots) { - if ($go) - sys::outjs(array('s' => 'ok'), $nmch); - - sys::outjs(array('s' => 'Сервер будет арендован до: ' . date('d.m.Y - H:i', $server['time']) . ' (' . sys::date('min', $server['time']) . ')'), $nmch); - } - } else { - // Установлено макс. значение - if ($server['slots'] == $tarif['slots_max'] and !$overdue) - sys::outjs(array('e' => 'На игровом сервере установлено максимальное значение.'), $nmch); - - if ($slots < 1 || $slots > $max) - sys::outjs(array('e' => 'Переданы неверные данные'), $nmch); - - $slots += $server['slots']; - } - - $date = date('H.i.s.d.m.Y', round($start_point + $price_old / ($price * $slots) * 86400 - 86400)); - - $aDate = explode('.', $date); - - $time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]); - - // При уменьшении кол-ва слот не добавлять дни - if ($slots < $server['slots'] and ($cfg['change_slots'][$server['game']]['days'] and $cfg['change_slots'][$server['game']]['down'] and !$cfg['change_slots'][$server['game']]['add'])) - $time = $server['time']; - - // Выполнение операции - if ($go) { - $start = $server['slots_start'] > $slots ? ', `slots_start`="' . $slots . '"' : ''; - - $sql->query('UPDATE `servers` set `time`="' . $time . '", `slots`="' . $slots . '" ' . $start . ' WHERE `id`="' . $id . '" LIMIT 1'); - - if (in_array($server['status'], array('working', 'start', 'restart', 'change')) and $slots < $server['slots_start']) { - include(LIB . 'games/' . $server['game'] . '/action.php'); - - action::start($id, 'restart'); - } - - // Запись логов - $sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_slots') . '", `time`="' . $start_point . '"'); - - sys::outjs(array('s' => 'ok'), $nmch); - } - - // Выхлоп информации - sys::outjs(array('s' => 'Сервер будет арендован до: ' . $arenda . ' ' . date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')')); -} - -if ($slots < 1 || $slots > $max) - sys::outjs(array('e' => 'Переданые неверные данные'), $nmch); - -// Выполнение операции -if ($go) { - $slots_new = $server['slots'] + $slots; - - // Проверка баланса - if ($user['balance'] < $sum) - sys::outjs(array('e' => 'У вас не хватает ' . (round($sum - $user['balance'], 2)) . ' ' . $cfg['currency']), $nmch); - - // Списание средств с баланса пользователя - $sql->query('UPDATE `users` set `balance`="' . ($user['balance'] - $sum) . '" WHERE `id`="' . $user['id'] . '" LIMIT 1'); - - // Реф. система - games::part($user['id'], $sum); - - $start = $server['slots_start'] == $server['slots'] ? ', `slots_start`="' . $slots_new . '"' : ''; - - // Обновление информации - $sql->query('UPDATE `servers` set `slots`="' . $slots_new . '" ' . $start . ' WHERE `id`="' . $id . '" LIMIT 1'); - - if (in_array($server['status'], array('working', 'start', 'restart', 'change')) and $slots_new != $server['slots_start']) { - include(LIB . 'games/' . $server['game'] . '/action.php'); - - action::start($id, 'restart'); - } - - // Запись логов - $sql->query('INSERT INTO `logs` set `user`="' . $user['id'] . '", `text`="' . sys::updtext(sys::text('logs', 'buy_slots'), - array('slots' => $slots, 'money' => $sum, 'id' => $id)) . '", `date`="' . $start_point . '", `type`="buy", `money`="' . $sum . '"'); - - sys::outjs(array('s' => 'ok'), $nmch); -} - -// Выхлоп информации -sys::outjs(array('s' => 'Цена за дополнительные слоты: ' . $sum . ' ' . $cfg['currency'])); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/index.php b/system/sections/megp/servers/index.php deleted file mode 100644 index 24bcbfd9..00000000 --- a/system/sections/megp/servers/index.php +++ /dev/null @@ -1,11 +0,0 @@ -query('SELECT `unit`, `address`, `game`, `status`, `plugins_use`, `ftp_use`, `console_use`, `stats_use`, `copy_use`, `web_use` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = $sql->get(); - -sys::nav($server, $id, 'index'); - -include(SEC . 'megp/servers/' . $server['game'] . '/index.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/list.php b/system/sections/megp/servers/list.php deleted file mode 100644 index dc7d6c80..00000000 --- a/system/sections/megp/servers/list.php +++ /dev/null @@ -1,85 +0,0 @@ -query('SELECT `unit`, `tarif` FROM `servers` WHERE `user`="' . $user['id'] . '" ORDER BY `id` ASC'); - -$n = $sql->num($q_Servers); - -$aUnits = array(); -$aTarifs = array(); - -// Проверка массивов в кеше -if (is_array($mcache->get('aut_' . $user['id'])) and $mcache->get('nser_' . $user['id']) == $n) { - $aUT = $mcache->get('aut_' . $user['id']); - $aUnits = $aUT[0]; - $aTarifs = $aUT[1]; -} else { - while ($server = $sql->get($q_Servers)) { - if (!array_key_exists($server['unit'], $aUnits)) { - $sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1'); - $unit = $sql->get(); - - $aUnits[$server['unit']] = array( - 'name' => $unit['name'] - ); - } - - if (!array_key_exists($server['tarif'], $aTarifs)) { - $sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); - $tarif = $sql->get(); - - $aTarifs[$server['tarif']] = array( - 'name' => $tarif['name'], - 'packs' => sys::b64djs($tarif['packs']) - ); - } - } - - // Запись массивов в кеш - $mcache->set('aut_' . $user['id'], array($aUnits, $aTarifs), false, 60); - - // Запись кол-во серверов в кеш - $mcache->set('nser_' . $user['id'], $n, false, 60); -} - -include(LIB . 'games/games.php'); - -$sql->query('SELECT ' - . '`id`,' - . '`unit`,' - . '`tarif`,' - . '`address`,' - . '`game`,' - . '`slots_start`,' - . '`online`,' - . '`status`,' - . '`name`,' - . '`map`,' - . '`time`,' - . '`overdue`' - . ' FROM `servers` WHERE `user`="' . $user['id'] . '" ORDER BY `id` ASC'); - -$wait_servers = ''; -$updates_servers = ''; - -while ($server = $sql->get()) { - $time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']); - - $html->get('list', 'sections/servers'); - - $html->set('id', $server['id']); - $html->set('address', $server['address']); - $html->set('game', $aGname[$server['game']]); - $html->set('slots', $server['slots_start']); - $html->set('online', $server['online']); - $html->set('name', $server['name']); - $html->set('status', sys::status($server['status'], $server['game'], $server['map'])); - $html->set('time_end', $time_end); - - $html->pack('list'); - - $wait_servers .= $server['id'] . ':false,'; - $updates_servers .= 'setTimeout(function() {update_info(\'' . $server['id'] . '\', true)}, 5000); setTimeout(function() {update_status(\'' . $server['id'] . '\', true)}, 10000);'; -} -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mc/console.php b/system/sections/megp/servers/mc/console.php deleted file mode 100644 index a841468a..00000000 --- a/system/sections/megp/servers/mc/console.php +++ /dev/null @@ -1,14 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$html->get('console', 'sections/servers/' . $server['game']); -$html->set('id', $id); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mc/index.php b/system/sections/megp/servers/mc/index.php deleted file mode 100644 index 78944406..00000000 --- a/system/sections/megp/servers/mc/index.php +++ /dev/null @@ -1,40 +0,0 @@ -query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `map`, `time`, `date`, `overdue`, `ram` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1'); -$unit = $sql->get(); - -$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -$btn = sys::buttons($id, $server['status'], $server['game']); - -$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']); - -$html->get('index', 'sections/servers/' . $server['game']); - -$html->set('id', $id); -$html->set('unit', $unit['name']); -$html->set('tarif', $tarif['name'] . ' / ' . $server['ram'] . ' RAM'); - -$tarif['packs'] = sys::b64djs($tarif['packs']); - -$html->set('pack', $tarif['packs'][$server['pack']]); -$html->set('address', $server['address']); -$html->set('game', $aGname[$server['game']]); -$html->set('slots', $server['slots_start']); -$html->set('online', $server['online']); -$html->set('name', $server['name']); -$html->set('status', sys::status($server['status'], $server['game'], $server['map'])); -$html->set('time_end', $time_end); -$html->set('time', sys::today($server['time'])); -$html->set('date', sys::today($server['date'])); - -$html->set('btn', $btn); - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mc/settings.php b/system/sections/megp/servers/mc/settings.php deleted file mode 100644 index 01cd3f76..00000000 --- a/system/sections/megp/servers/mc/settings.php +++ /dev/null @@ -1,45 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$aSub = array('start', 'pack'); - -// Если выбран подраздел -if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) { - if ($go) - $nmch = sys::rep_act('server_settings_go_' . $id, 10); - - $dir = $url['subsection'] == 'start' ? 'megp/' : ''; - - if (in_array($url['subsection'], $aRouteSub['settings'])) - include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php'); - else - include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php'); -} else { - if ($mcache->get('server_settings_' . $id) != '') - $html->arr['main'] = $mcache->get('server_settings_' . $id); - else { - $sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); - $tarif = $sql->get(); - - // Построение списка доступных сборок - $aPacks = sys::b64djs($tarif['packs']); - - $packs = ''; - unset($aPacks[$server['pack']]); - - foreach ($aPacks as $pack => $desc) - $packs .= ''; - - $html->get('settings', 'sections/servers/' . $server['game']); - $html->set('id', $id); - $html->set('packs', $packs); - $html->pack('main'); - - $mcache->set('server_settings_' . $id, $html->arr['main'], false, 20); - } -} -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mc/settings/start.php b/system/sections/megp/servers/mc/settings/start.php deleted file mode 100644 index 5ec8e6d6..00000000 --- a/system/sections/megp/servers/mc/settings/start.php +++ /dev/null @@ -1,42 +0,0 @@ -query('SELECT `uid`, `slots`, `slots_start`, `autorestart` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -include(LIB . 'games/games.php'); - -// Сохранение -if ($go and $url['save']) { - $value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch); - - switch ($url['save']) { - case 'slots': - $slots = $value > $server['slots'] ? $server['slots'] : $value; - $slots = $value < 2 ? 2 : $slots; - - if ($slots != $server['slots_start']) - $sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - } -} - -// Генерация списка слот -$slots = ''; - -for ($slot = 2; $slot <= $server['slots']; $slot += 1) - $slots .= ''; - -// Авторестарт при зависании -$autorestart = $server['autorestart'] ? '' : ''; - -$html->get('start', 'sections/servers/' . $server['game'] . '/settings'); - -$html->set('id', $id); -$html->set('autorestart', $autorestart); -$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots)); - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mc/tarif.php b/system/sections/megp/servers/mc/tarif.php deleted file mode 100644 index eea898a9..00000000 --- a/system/sections/megp/servers/mc/tarif.php +++ /dev/null @@ -1,12 +0,0 @@ -query('SELECT `name`, `slots_min`, `slots_max`, `install`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -// Подразделы -$aSub = array('extend', 'slots'); - -include(SEC . 'megp/servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mc/tarif/extend.php b/system/sections/megp/servers/mc/tarif/extend.php deleted file mode 100644 index f0089533..00000000 --- a/system/sections/megp/servers/mc/tarif/extend.php +++ /dev/null @@ -1,52 +0,0 @@ - 'Переданы не все данные'), $nmch); - - // Проверка периода - if (!in_array($aData['time'], explode(':', $tarif['timext']))) - sys::outjs(array('e' => 'Переданы неверные данные'), $nmch); - -} - -$ram = $server['slots_fix'] ? $server['ram'] : $server['ram'] / $server['slots']; - -$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : ''; -$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false; -$aData['server'] = $id; -$aData['user'] = $server['user']; -$aData['tarif'] = $server['tarif']; -$aData['ram'] = $ram; -$aData['slots'] = $server['slots']; - -// Цена за выделенный адрес -$add_sum = tarifs::address_add_sum($aData['address'], $server); - -$aPrice = explode(':', $tarif['price']); - -// Цена за 30 дней 1 слота -$price = $aPrice[array_search($ram, explode(':', $tarif['ram']))]; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = $server['time']; - -// Цена аренды -$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']); - -$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); - -include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mc/tarif/plan.php b/system/sections/megp/servers/mc/tarif/plan.php deleted file mode 100644 index bec798ab..00000000 --- a/system/sections/megp/servers/mc/tarif/plan.php +++ /dev/null @@ -1,66 +0,0 @@ - 'Переданые не все данные'), $nmch); - -$aPrice = explode(':', $tarif['price']); -$aRAM = explode(':', $tarif['ram']); - -// Проверка плана -if (array_search($plan, $aRAM) === FALSE) - sys::outjs(array('e' => 'Переданы неверные данные'), $nmch); - -$ram = $server['slots_fix'] ? $server['ram'] : $server['ram'] / $server['slots']; - -if ($plan == $ram) - sys::outjs(array('e' => 'Смысла в этой операции нет'), $nmch); - -if (!tarif::price($tarif['price'])) - sys::outjs(array('e' => 'Чтобы изменить тариф, перейдите в настройки запуска'), $nmch); - -if ($server['time'] < $start_point + 86400) - $time = $server['time']; -else { - // Цена за 1 день аренды (по новому тарифному плану) - $price = $aPrice[array_search($plan, $aRAM)] / 30 * $server['slots']; - - // Цена за 1 день аренды (по старому тарифному плану) - $price_old = $aPrice[array_search($ram, $aRAM)] / 30 * $server['slots']; - - // Остаток дней аренды - $days = ($server['time'] - $start_point) / 86400; - - $time = date('H:i:s', $server['time']); - $date = date('d.m.Y', round($start_point + $days * $price_old / $price * 86400 - 86400)); - - $aDate = explode('.', $date); - $aTime = explode(':', $time); - - $time = mktime($aTime[0], $aTime[1], $aTime[2], $aDate[1], $aDate[0], $aDate[2]); -} - -$plan = $server['slots_fix'] ? $plan : $plan * $server['slots']; - -// Выполнение смена тарифного плана -if ($go) { - $sql->query('UPDATE `servers` set `time`="' . $time . '", `ram`="' . $plan . '" WHERE `id`="' . $id . '" LIMIT 1'); - - if (in_array($server['status'], array('working', 'start', 'restart'))) { - include(LIB . 'games/' . $server['game'] . '/action.php'); - - action::start($id, 'restart'); - } - - // Запись логов - $sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_plan') . '", `time`="' . $start_point . '"'); - - sys::outjs(array('s' => 'ok'), $nmch); -} - -// Выхлоп информации -sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mc/tarif/slots.php b/system/sections/megp/servers/mc/tarif/slots.php deleted file mode 100644 index cc3de728..00000000 --- a/system/sections/megp/servers/mc/tarif/slots.php +++ /dev/null @@ -1,148 +0,0 @@ - 'На данном тарифе нельзя изменить количество слот.'), $nmch); - -$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch); - -$aPrice = explode(':', $tarif['price']); -$aRAM = explode(':', $tarif['ram']); - -$ram = $server['ram_fix'] ? $server['ram'] : $server['ram'] / $server['slots']; - -$overdue = $server['time'] < $start_point; - -if ($cfg['change_slots'][$server['game']]['days'] || $overdue) { - // Цена за 1 день - $price = $aPrice[array_search($ram, $aRAM)] / 30; - - // Цена аренды за остаток дней (с текущим кол-вом слот) - $price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots']; -} - -$max = $tarif['slots_max'] - $server['slots']; - -// Сумма за добавляемые слоты -$sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[array_search($ram, $aRAM)] / 30) * $slots, 2); - -// Изменение кол-ва слот за счет пересчета дней аренды или закончился срок аренды (иначе аренда дополнительных слот) -if ($cfg['change_slots'][$server['game']]['days'] || $overdue) { - $ram = $server['ram_fix'] ? $server['ram'] : $server['ram'] / $server['slots'] * $slots; - - // Если просрочен - if ($overdue) { - sys::outjs(array('i' => '')); - - if ($go) { - $start = $server['slots_start'] > $slots ? ', `slots_start`="' . $slots . '"' : ''; - - $sql->query('UPDATE `servers` set `slots`="' . $slots . '" ' . $start . ', `ram`=' . $ram . ' WHERE `id`="' . $id . '" LIMIT 1'); - - // Запись логов - $sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_slots') . '", `time`="' . $start_point . '"'); - - sys::outjs(array('s' => 'ok'), $nmch); - } - } - - // При возможности уменьшить - if ($cfg['change_slots'][$server['game']]['down'] || $overdue) { - // Проверка кол-ва слот - if ($slots < $tarif['slots_min'] || $slots > $tarif['slots_max']) - sys::outjs(array('e' => 'Переданые неверные данные.'), $nmch); - - if ($server['slots'] == $slots) { - if ($go) - sys::outjs(array('s' => 'ok'), $nmch); - - sys::outjs(array('s' => 'Сервер будет арендован до: ' . date('d.m.Y - H:i', $server['time']) . ' (' . sys::date('min', $server['time']) . ')'), $nmch); - } - } else { - // Установлено макс. значение - if ($server['slots'] == $tarif['slots_max'] and !$overdue) - sys::outjs(array('e' => 'На игровом сервере установлено максимальное значение.'), $nmch); - - if ($slots < 1 || $slots > $max) - sys::outjs(array('e' => 'Переданы неверные данные'), $nmch); - - $slots += $server['slots']; - } - - $date = date('H.i.s.d.m.Y', round($start_point + $price_old / ($price * $slots) * 86400 - 86400)); - - $aDate = explode('.', $date); - - $time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]); - - // При уменьшении кол-ва слот не добавлять дни - if ($slots < $server['slots'] and ($cfg['change_slots'][$server['game']]['days'] and $cfg['change_slots'][$server['game']]['down'] and !$cfg['change_slots'][$server['game']]['add'])) - $time = $server['time']; - - // Выполнение операции - if ($go) { - $start = $server['slots_start'] > $slots ? ', `slots_start`="' . $slots . '"' : ''; - - $sql->query('UPDATE `servers` set `time`="' . $time . '", `slots`="' . $slots . '" ' . $start . ', `ram`=' . $ram . ' WHERE `id`="' . $id . '" LIMIT 1'); - - if (in_array($server['status'], array('working', 'start', 'restart', 'change')) and $slots < $server['slots_start']) { - include(LIB . 'games/' . $server['game'] . '/action.php'); - - action::start($id, 'restart'); - } - - // Запись логов - $sql->query('INSERT INTO `logs_sys` set `user`="' . $user['id'] . '", `server`="' . $id . '", `text`="' . sys::text('syslogs', 'change_slots') . '", `time`="' . $start_point . '"'); - - sys::outjs(array('s' => 'ok'), $nmch); - } - - // Выхлоп информации - sys::outjs(array('s' => 'Сервер будет арендован до: ' . $arenda . ' ' . date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')')); -} - -if ($slots < 1 || $slots > $max) - sys::outjs(array('e' => 'Переданые неверные данные'), $nmch); - -// Выполнение операции -if ($go) { - $slots_new = $server['slots'] + $slots; - - // Проверка баланса - if ($user['balance'] < $sum) - sys::outjs(array('e' => 'У вас не хватает ' . (round($sum - $user['balance'], 2)) . ' ' . $cfg['currency']), $nmch); - - // Списание средств с баланса пользователя - $sql->query('UPDATE `users` set `balance`="' . ($user['balance'] - $sum) . '" WHERE `id`="' . $user['id'] . '" LIMIT 1'); - - // Реф. система - games::part($user['id'], $sum); - - $start = $server['slots_start'] == $server['slots'] ? ', `slots_start`="' . $slots_new . '"' : ''; - - $ram = $server['ram_fix'] ? $server['ram'] : $server['ram'] / $server['slots'] * $slots_new; - - // Обновление информации - $sql->query('UPDATE `servers` set `slots`="' . $slots_new . '" ' . $start . ', `ram`=' . $ram . ' WHERE `id`="' . $id . '" LIMIT 1'); - - if (in_array($server['status'], array('working', 'start', 'restart')) and $slots_new != $server['slots_start']) { - include(LIB . 'games/' . $server['game'] . '/action.php'); - - action::start($id, 'restart'); - } - - // Запись логов - $sql->query('INSERT INTO `logs` set `user`="' . $user['id'] . '", `text`="' . sys::updtext(sys::text('logs', 'buy_slots'), - array('slots' => $slots, 'money' => $sum, 'id' => $id)) . '", `date`="' . $start_point . '", `type`="buy", `money`="' . $sum . '"'); - - sys::outjs(array('s' => 'ok'), $nmch); -} - -// Выхлоп информации -sys::outjs(array('s' => 'Цена за дополнительные слоты: ' . $sum . ' ' . $cfg['currency'])); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mta/console.php b/system/sections/megp/servers/mta/console.php deleted file mode 100644 index a841468a..00000000 --- a/system/sections/megp/servers/mta/console.php +++ /dev/null @@ -1,14 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$html->get('console', 'sections/servers/' . $server['game']); -$html->set('id', $id); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mta/index.php b/system/sections/megp/servers/mta/index.php deleted file mode 100644 index 31f6119b..00000000 --- a/system/sections/megp/servers/mta/index.php +++ /dev/null @@ -1,35 +0,0 @@ -query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `map`, `time`, `date`, `overdue` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1'); -$unit = $sql->get(); - -$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -$btn = sys::buttons($id, $server['status'], $server['game']); - -$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']); - -$html->get('index', 'sections/servers/' . $server['game']); -$html->set('id', $id); -$html->set('unit', $unit['name']); -$html->set('tarif', $tarif['name']); -$tarif['packs'] = sys::b64djs($tarif['packs']); -$html->set('pack', $tarif['packs'][$server['pack']]); -$html->set('address', $server['address']); -$html->set('game', $aGname[$server['game']]); -$html->set('slots', $server['slots_start']); -$html->set('online', $server['online']); -$html->set('name', $server['name']); -$html->set('status', sys::status($server['status'], $server['game'], $server['map'])); -$html->set('time_end', $time_end); -$html->set('time', sys::today($server['time'])); -$html->set('date', sys::today($server['date'])); -$html->set('btn', $btn); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mta/settings.php b/system/sections/megp/servers/mta/settings.php deleted file mode 100644 index 01cd3f76..00000000 --- a/system/sections/megp/servers/mta/settings.php +++ /dev/null @@ -1,45 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$aSub = array('start', 'pack'); - -// Если выбран подраздел -if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) { - if ($go) - $nmch = sys::rep_act('server_settings_go_' . $id, 10); - - $dir = $url['subsection'] == 'start' ? 'megp/' : ''; - - if (in_array($url['subsection'], $aRouteSub['settings'])) - include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php'); - else - include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php'); -} else { - if ($mcache->get('server_settings_' . $id) != '') - $html->arr['main'] = $mcache->get('server_settings_' . $id); - else { - $sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); - $tarif = $sql->get(); - - // Построение списка доступных сборок - $aPacks = sys::b64djs($tarif['packs']); - - $packs = ''; - unset($aPacks[$server['pack']]); - - foreach ($aPacks as $pack => $desc) - $packs .= ''; - - $html->get('settings', 'sections/servers/' . $server['game']); - $html->set('id', $id); - $html->set('packs', $packs); - $html->pack('main'); - - $mcache->set('server_settings_' . $id, $html->arr['main'], false, 20); - } -} -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mta/settings/start.php b/system/sections/megp/servers/mta/settings/start.php deleted file mode 100644 index 50109764..00000000 --- a/system/sections/megp/servers/mta/settings/start.php +++ /dev/null @@ -1,48 +0,0 @@ -query('SELECT `uid`, `slots`, `slots_start`, `autorestart` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -include(LIB . 'games/games.php'); - -// Сохранение -if ($go and $url['save']) { - $value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch); - - switch ($url['save']) { - case 'slots': - $slots = $value > $server['slots'] ? $server['slots'] : $value; - $slots = $value < 2 ? 2 : $slots; - - if ($slots != $server['slots_start']) - $sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - - case 'autorestart': - if ($value != $server['autorestart']) - $sql->query('UPDATE `servers` set `autorestart`="' . $value . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - } -} - -// Генерация списка слот -$slots = ''; - -for ($slot = 2; $slot <= $server['slots']; $slot += 1) - $slots .= ''; - -// Авторестарт при зависании -$autorestart = $server['autorestart'] ? '' : ''; - -$html->get('start', 'sections/servers/' . $server['game'] . '/settings'); - -$html->set('id', $id); -$html->set('autorestart', $autorestart); -$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots)); - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mta/tarif.php b/system/sections/megp/servers/mta/tarif.php deleted file mode 100644 index eea898a9..00000000 --- a/system/sections/megp/servers/mta/tarif.php +++ /dev/null @@ -1,12 +0,0 @@ -query('SELECT `name`, `slots_min`, `slots_max`, `install`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -// Подразделы -$aSub = array('extend', 'slots'); - -include(SEC . 'megp/servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mta/tarif/extend.php b/system/sections/megp/servers/mta/tarif/extend.php deleted file mode 100644 index f05d263f..00000000 --- a/system/sections/megp/servers/mta/tarif/extend.php +++ /dev/null @@ -1,47 +0,0 @@ - 'Переданы не все данные'), $nmch); - - // Проверка периода - if (!in_array($aData['time'], explode(':', $tarif['timext']))) - sys::outjs(array('e' => 'Переданы неверные данные'), $nmch); - -} - -$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : ''; -$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false; -$aData['server'] = $id; -$aData['user'] = $server['user']; -$aData['tarif'] = $server['tarif']; -$aData['slots'] = $server['slots']; - -// Цена за выделенный адрес -$add_sum = tarifs::address_add_sum($aData['address'], $server); - -// Цена за 30 дней 1 слота -$price = $tarif['price']; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = $server['time']; - -// Цена аренды -$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']); - -$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); - -include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/mta/tarif/slots.php b/system/sections/megp/servers/mta/tarif/slots.php deleted file mode 100644 index ece744d4..00000000 --- a/system/sections/megp/servers/mta/tarif/slots.php +++ /dev/null @@ -1,30 +0,0 @@ - 'На данном тарифе нельзя изменить количество слот.'), $nmch); - -$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch); - -$overdue = $server['time'] < $start_point; - -if ($cfg['change_slots'][$server['game']]['days'] || $overdue) { - // Цена за 1 день - $price = $tarif['price'] / 30; - - // Цена аренды за остаток дней (с текущим кол-вом слот) - $price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots']; -} - -$max = $tarif['slots_max'] - $server['slots']; - -// Сумма за добавляемые слоты -$sum = round(($server['time'] - $start_point) / 86400 * ($tarif['price'] / 30) * $slots, 2); - -include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/noaccess.php b/system/sections/megp/servers/noaccess.php deleted file mode 100644 index a373ddc2..00000000 --- a/system/sections/megp/servers/noaccess.php +++ /dev/null @@ -1,22 +0,0 @@ -get('overdue'); -else { - $status = array( - 'install' => 'установки', - 'reinstall' => 'переустановки', - 'update' => 'обновления', - 'recovery' => 'восстановления', - 'blocked' => 'блокировки' - ); - - $html->get('noaccess'); - - $html->set('status', $status[$server['status']]); -} - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/owners_list.php b/system/sections/megp/servers/owners_list.php deleted file mode 100644 index b966ada5..00000000 --- a/system/sections/megp/servers/owners_list.php +++ /dev/null @@ -1,94 +0,0 @@ -query('SELECT `server` FROM `owners` WHERE `user`="' . $user['id'] . '" AND `time`>"' . $start_point . '" ORDER BY `id` ASC'); - -$n = $sql->num($owners); - -$aUnits = array(); -$aTarifs = array(); - -// Проверка массивов в кеше -if (is_array($mcache->get('owners_aut_' . $user['id'])) and $mcache->get('owners_nser_' . $user['id']) == $n) { - $aUT = $mcache->get('owners_aut_' . $user['id']); - $aUnits = $aUT[0]; - $aTarifs = $aUT[1]; -} else { - while ($owner = $sql->get($owners)) { - $server_sql = $sql->query('SELECT `unit`, `tarif` FROM `servers` WHERE `id`="' . $owner['server'] . '"'); - - while ($server = $sql->get($server_sql)) { - if (!array_key_exists($server['unit'], $aUnits)) { - $sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1'); - $unit = $sql->get(); - - $aUnits[$server['unit']] = array( - 'name' => $unit['name'] - ); - } - - if (!array_key_exists($server['tarif'], $aTarifs)) { - $sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); - $tarif = $sql->get(); - - $aTarifs[$server['tarif']] = array( - 'name' => $tarif['name'], - 'packs' => sys::b64djs($tarif['packs']) - ); - } - } - } - - // Запись массивов в кеш - $mcache->set('owners_aut_' . $user['id'], array($aUnits, $aTarifs), false, 60); - - // Запись кол-во серверов в кеш - $mcache->set('owners_nser_' . $user['id'], $n, false, 60); -} - -$owners = $sql->query('SELECT `id`, `server`, `time` FROM `owners` WHERE `user`="' . $user['id'] . '" ORDER BY `id` ASC'); - -while ($owner = $sql->get($owners)) { - if ($owner['time'] < $start_point) { - $sql->query('DELETE FROM `owners` WHERE `id`="' . $owner['id'] . '" LIMIT 1'); - - continue; - } - - $sql->query('SELECT ' - . '`id`,' - . '`unit`,' - . '`tarif`,' - . '`address`,' - . '`game`,' - . '`slots_start`,' - . '`online`,' - . '`status`,' - . '`name`,' - . '`map`,' - . '`time`,' - . '`overdue`' - . ' FROM `servers` WHERE `id`="' . $owner['server'] . '" LIMIT 1'); - - while ($server = $sql->get()) { - $time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']); - - $html->get('list', 'sections/servers'); - - $html->set('id', $server['id']); - $html->set('address', $server['address']); - $html->set('game', $aGname[$server['game']]); - $html->set('slots', $server['slots_start']); - $html->set('online', $server['online']); - $html->set('name', $server['name']); - $html->set('status', sys::status($server['status'], $server['game'], $server['map'])); - $html->set('time_end', $time_end); - - $html->pack('list'); - - $wait_servers .= $server['id'] . ':false,'; - $updates_servers .= 'setTimeout(function() {update_info(\'' . $server['id'] . '\', true)}, 5000); setTimeout(function() {update_status(\'' . $server['id'] . '\', true)}, 10000);'; - } -} -?> \ No newline at end of file diff --git a/system/sections/megp/servers/samp/console.php b/system/sections/megp/servers/samp/console.php deleted file mode 100644 index a841468a..00000000 --- a/system/sections/megp/servers/samp/console.php +++ /dev/null @@ -1,14 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `time_start` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$html->get('console', 'sections/servers/' . $server['game']); -$html->set('id', $id); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/samp/index.php b/system/sections/megp/servers/samp/index.php deleted file mode 100644 index 31f6119b..00000000 --- a/system/sections/megp/servers/samp/index.php +++ /dev/null @@ -1,35 +0,0 @@ -query('SELECT `unit`, `tarif`, `slots_start`, `online`, `players`, `name`, `pack`, `map`, `time`, `date`, `overdue` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$sql->query('SELECT `name` FROM `units` WHERE `id`="' . $server['unit'] . '" LIMIT 1'); -$unit = $sql->get(); - -$sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -$btn = sys::buttons($id, $server['status'], $server['game']); - -$time_end = $server['status'] == 'overdue' ? 'Удаление через: ' . sys::date('min', $server['overdue'] + $cfg['server_delete'] * 86400) : 'Осталось: ' . sys::date('min', $server['time']); - -$html->get('index', 'sections/servers/' . $server['game']); -$html->set('id', $id); -$html->set('unit', $unit['name']); -$html->set('tarif', $tarif['name']); -$tarif['packs'] = sys::b64djs($tarif['packs']); -$html->set('pack', $tarif['packs'][$server['pack']]); -$html->set('address', $server['address']); -$html->set('game', $aGname[$server['game']]); -$html->set('slots', $server['slots_start']); -$html->set('online', $server['online']); -$html->set('name', $server['name']); -$html->set('status', sys::status($server['status'], $server['game'], $server['map'])); -$html->set('time_end', $time_end); -$html->set('time', sys::today($server['time'])); -$html->set('date', sys::today($server['date'])); -$html->set('btn', $btn); -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/samp/settings.php b/system/sections/megp/servers/samp/settings.php deleted file mode 100644 index 01cd3f76..00000000 --- a/system/sections/megp/servers/samp/settings.php +++ /dev/null @@ -1,45 +0,0 @@ -query('SELECT `uid`, `unit`, `tarif`, `pack`, `ddos` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -$aSub = array('start', 'pack'); - -// Если выбран подраздел -if (isset($url['subsection']) and in_array($url['subsection'], $aSub)) { - if ($go) - $nmch = sys::rep_act('server_settings_go_' . $id, 10); - - $dir = $url['subsection'] == 'start' ? 'megp/' : ''; - - if (in_array($url['subsection'], $aRouteSub['settings'])) - include(SEC . 'servers/games/settings/' . $url['subsection'] . '.php'); - else - include(SEC . $dir . 'servers/' . $server['game'] . '/settings/' . $url['subsection'] . '.php'); -} else { - if ($mcache->get('server_settings_' . $id) != '') - $html->arr['main'] = $mcache->get('server_settings_' . $id); - else { - $sql->query('SELECT `name`, `packs` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); - $tarif = $sql->get(); - - // Построение списка доступных сборок - $aPacks = sys::b64djs($tarif['packs']); - - $packs = ''; - unset($aPacks[$server['pack']]); - - foreach ($aPacks as $pack => $desc) - $packs .= ''; - - $html->get('settings', 'sections/servers/' . $server['game']); - $html->set('id', $id); - $html->set('packs', $packs); - $html->pack('main'); - - $mcache->set('server_settings_' . $id, $html->arr['main'], false, 20); - } -} -?> \ No newline at end of file diff --git a/system/sections/megp/servers/samp/settings/start.php b/system/sections/megp/servers/samp/settings/start.php deleted file mode 100644 index 5ec8e6d6..00000000 --- a/system/sections/megp/servers/samp/settings/start.php +++ /dev/null @@ -1,42 +0,0 @@ -query('SELECT `uid`, `slots`, `slots_start`, `autorestart` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = array_merge($server, $sql->get()); - -include(LIB . 'games/games.php'); - -// Сохранение -if ($go and $url['save']) { - $value = isset($url['value']) ? sys::int($url['value']) : sys::outjs(array('s' => 'ok'), $nmch); - - switch ($url['save']) { - case 'slots': - $slots = $value > $server['slots'] ? $server['slots'] : $value; - $slots = $value < 2 ? 2 : $slots; - - if ($slots != $server['slots_start']) - $sql->query('UPDATE `servers` set `slots_start`="' . $slots . '" WHERE `id`="' . $id . '" LIMIT 1'); - - sys::outjs(array('s' => 'ok'), $nmch); - } -} - -// Генерация списка слот -$slots = ''; - -for ($slot = 2; $slot <= $server['slots']; $slot += 1) - $slots .= ''; - -// Авторестарт при зависании -$autorestart = $server['autorestart'] ? '' : ''; - -$html->get('start', 'sections/servers/' . $server['game'] . '/settings'); - -$html->set('id', $id); -$html->set('autorestart', $autorestart); -$html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots)); - -$html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/samp/tarif.php b/system/sections/megp/servers/samp/tarif.php deleted file mode 100644 index eea898a9..00000000 --- a/system/sections/megp/servers/samp/tarif.php +++ /dev/null @@ -1,12 +0,0 @@ -query('SELECT `name`, `slots_min`, `slots_max`, `install`, `timext`, `discount`, `price` FROM `tarifs` WHERE `id`="' . $server['tarif'] . '" LIMIT 1'); -$tarif = $sql->get(); - -// Подразделы -$aSub = array('extend', 'slots'); - -include(SEC . 'megp/servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/samp/tarif/extend.php b/system/sections/megp/servers/samp/tarif/extend.php deleted file mode 100644 index f05d263f..00000000 --- a/system/sections/megp/servers/samp/tarif/extend.php +++ /dev/null @@ -1,47 +0,0 @@ - 'Переданы не все данные'), $nmch); - - // Проверка периода - if (!in_array($aData['time'], explode(':', $tarif['timext']))) - sys::outjs(array('e' => 'Переданы неверные данные'), $nmch); - -} - -$aData['promo'] = isset($_POST['promo']) ? $_POST['promo'] : ''; -$aData['address'] = isset($_POST['address']) ? $_POST['address'] : false; -$aData['server'] = $id; -$aData['user'] = $server['user']; -$aData['tarif'] = $server['tarif']; -$aData['slots'] = $server['slots']; - -// Цена за выделенный адрес -$add_sum = tarifs::address_add_sum($aData['address'], $server); - -// Цена за 30 дней 1 слота -$price = $tarif['price']; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = $server['time']; - -// Цена аренды -$sum = games::define_sum($tarif['discount'], $price, $server['slots'], $aData['time'], 'extend') + $add_sum; - -// Если расчетный период -if ($cfg['settlement_period']) - $aData['time'] = games::define_period('extend', params::$aDayMonth, $server['time']); - -$days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); - -include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/samp/tarif/slots.php b/system/sections/megp/servers/samp/tarif/slots.php deleted file mode 100644 index ece744d4..00000000 --- a/system/sections/megp/servers/samp/tarif/slots.php +++ /dev/null @@ -1,30 +0,0 @@ - 'На данном тарифе нельзя изменить количество слот.'), $nmch); - -$slots = isset($url['slots']) ? sys::int($url['slots']) : sys::outjs(array('e' => 'Переданы не все данные.'), $nmch); - -$overdue = $server['time'] < $start_point; - -if ($cfg['change_slots'][$server['game']]['days'] || $overdue) { - // Цена за 1 день - $price = $tarif['price'] / 30; - - // Цена аренды за остаток дней (с текущим кол-вом слот) - $price_old = ($server['time'] - $start_point) / 86400 * $price * $server['slots']; -} - -$max = $tarif['slots_max'] - $server['slots']; - -// Сумма за добавляемые слоты -$sum = round(($server['time'] - $start_point) / 86400 * ($tarif['price'] / 30) * $slots, 2); - -include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/scan.php b/system/sections/megp/servers/scan.php deleted file mode 100644 index 3a3a1f9f..00000000 --- a/system/sections/megp/servers/scan.php +++ /dev/null @@ -1,27 +0,0 @@ -query('SELECT `game` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = $sql->get(); - -include(LIB . 'games/' . $server['game'] . '/scan.php'); - -// Запрошена информация (статус, онлайн, название) -if (isset($url['mon'])) - sys::outjs(scan::mon($id)); - -// Запрошена информация (статус, онлайн, название, игроки) -if (isset($url['fmon'])) - sys::outjs(scan::mon($id, true)); - -// Запрошена информация (cpu, ram, hdd) -if (isset($url['resources'])) - sys::outjs(scan::resources($id)); - -// Запрошена информация (работает, меняется карта, переустанавливается) -if (isset($url['status'])) - sys::outjs(scan::status($id)); - -exit; -?> \ No newline at end of file diff --git a/system/sections/megp/servers/settings.php b/system/sections/megp/servers/settings.php deleted file mode 100644 index 29b61df0..00000000 --- a/system/sections/megp/servers/settings.php +++ /dev/null @@ -1,11 +0,0 @@ -query('SELECT `unit`, `address`, `game`, `status`, `plugins_use`, `ftp_use`, `console_use`, `stats_use`, `copy_use`, `web_use`, `time` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = $sql->get(); - -sys::nav($server, $id, 'settings'); - -include(sys::route($server, 'settings', $go)); -?> \ No newline at end of file diff --git a/system/sections/megp/servers/tarif.php b/system/sections/megp/servers/tarif.php deleted file mode 100644 index ae219e5f..00000000 --- a/system/sections/megp/servers/tarif.php +++ /dev/null @@ -1,17 +0,0 @@ -query('SELECT `uid`, `unit`, `user`, `tarif`, `address`, `port`, `game`, `status`, `slots`, `slots_start`, `plugins_use`, `ftp_use`, `console_use`, `stats_use`, `copy_use`, `web_use`, `time`, `test`, `fps`, `tickrate`, `ram`, `ram_fix` FROM `servers` WHERE `id`="' . $id . '" LIMIT 1'); -$server = $sql->get(); - -sys::nav($server, $id, 'tarif'); - -if ($server['status'] == 'blocked') { - if ($go) - sys::out('Раздел недоступен'); - - include(SEC . 'megp/servers/noaccess.php'); -} else - include(SEC . 'megp/servers/' . $server['game'] . '/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/monitoring/all.php b/system/sections/monitoring/all.php index 829bac34..729645bb 100644 --- a/system/sections/monitoring/all.php +++ b/system/sections/monitoring/all.php @@ -28,9 +28,8 @@ // Если идет сортировка по игре if ($type) { - // SQL запрос для выборки - $qSql = "game = '{$type}' AND status = 'working'"; + $qSql = "game = '" . $type . "' AND status = 'working'"; // Задаем переменной колличество серверов всего, результат кэша $all = $mcache->get('monitoring_list_count_' . $type); @@ -39,7 +38,7 @@ if (!$all) { // Получаем инфу из бд, кооличество серверов всего - $sql->query("SELECT id FROM servers WHERE {$qSql}"); + $sql->query('SELECT id FROM servers WHERE ' . $qSql); $all = $sql->num(); // Закидываем значеие в кэш на 2 минуты @@ -63,7 +62,7 @@ if (!$all) { // Получаем инфу из бд, кооличество серверов всего - $sql->query("SELECT id FROM servers WHERE {$qSql}"); + $sql->query('SELECT id FROM servers WHERE ' . $qSql); $all = $sql->num(); // Закидываем значеие в кэш на 2 минуты @@ -77,13 +76,11 @@ sys::page_gen($aPage['ceil'], $page, $aPage['page'], 'monitoring'); } - // Получаем список серверов -$sql->query("SELECT `id`, `address`, `name`, `map`, `slots_start`, `online` FROM servers WHERE {$qSql} ORDER BY `id` ASC LIMIT {$aPage['num']}, 30"); +$sql->query('SELECT `id`, `address`, `name`, `map`, `slots_start`, `online` FROM servers WHERE ' . $qSql . ' ORDER BY `id` ASC LIMIT ' . $aPage['num'] . ', 30'); // Циклически собираем шаблон серверов while ($server = $sql->get()) { - // Увеличиваем значение ID $i += 1; diff --git a/system/sections/monitoring/server.php b/system/sections/monitoring/server.php index ceb709c8..8a21bdd0 100644 --- a/system/sections/monitoring/server.php +++ b/system/sections/monitoring/server.php @@ -21,7 +21,7 @@ $html->nav('Сервер #' . $id); // Получаем информацию о сервере -$sql->query("SELECT `id`, `unit`, `tarif`, `address`, `name`, `map`, `slots_start`, `online`, `players`, `status`, `game`, `pack`, `date` FROM servers WHERE id = '{$id}' LIMIT 1"); +$sql->query('SELECT `id`, `unit`, `tarif`, `address`, `name`, `map`, `slots_start`, `online`, `players`, `status`, `game`, `pack`, `date` FROM servers WHERE id ="' . $id . '" LIMIT 1'); $server = $sql->get(); // Если результат пустой @@ -31,18 +31,18 @@ } // Получаем название локации -$sql->query("SELECT name FROM units WHERE id = '{$server['unit']}' LIMIT 1"); +$sql->query('SELECT name FROM units WHERE id = "' . $server['unit'] . '" LIMIT 1'); $unit = $sql->get(); // Получаем название тарифа и доступные сборки -$sql->query("SELECT name, packs FROM tarifs WHERE id = '{$server['tarif']}' LIMIT 1"); +$sql->query('SELECT name, packs FROM tarifs WHERE id = "' . $server['tarif'] . '" LIMIT 1'); $tarif = $sql->get(); // Получаем массив сборок $aPacks = json_decode(base64_decode($tarif['packs']), true); // Получаем ключ для графиков -$sql->query("SELECT `key` FROM graph WHERE server = '{$id}' LIMIT 1"); +$sql->query('SELECT `key` FROM graph WHERE server = "' . $id . '" LIMIT 1'); // Если ключ отсуствует, создаем if (!$sql->num()) { @@ -51,7 +51,7 @@ $key = md5($id . sys::key('graph')); // Добавляем в DB - $sql->query("INSERT INTO graph SET `server` = '{id}', `key` = '{key}', `time` = '0'"); + $sql->query('INSERT INTO graph SET `server` = "' . $id . '", `key` = "' . $key . '", `time` = 0'); } else { // Получаем ключ из бд diff --git a/system/sections/news/index.php b/system/sections/news/index.php index 0e2f197b..dcdd96fc 100644 --- a/system/sections/news/index.php +++ b/system/sections/news/index.php @@ -26,4 +26,3 @@ $html->set('list', isset($html->arr['news']) ? $html->arr['news'] : ''); $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/news/news.php b/system/sections/news/news.php index c0eef592..a672e6f9 100644 --- a/system/sections/news/news.php +++ b/system/sections/news/news.php @@ -31,4 +31,3 @@ $html->set('date', sys::today($news['date'])); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/action.php b/system/sections/servers/action.php index 3ddbdb16..d6fc4b3f 100644 --- a/system/sections/servers/action.php +++ b/system/sections/servers/action.php @@ -63,4 +63,3 @@ } exit; -?> \ No newline at end of file diff --git a/system/sections/servers/boost.php b/system/sections/servers/boost.php index ff165506..e175971c 100644 --- a/system/sections/servers/boost.php +++ b/system/sections/servers/boost.php @@ -8,4 +8,3 @@ sys::nav($server, $id, 'boost'); include(sys::route($server, 'boost', $go)); -?> \ No newline at end of file diff --git a/system/sections/servers/console.php b/system/sections/servers/console.php index 0d20a68b..ce630951 100644 --- a/system/sections/servers/console.php +++ b/system/sections/servers/console.php @@ -8,4 +8,3 @@ sys::nav($server, $id, 'console'); include(sys::route($server, 'console', $go)); -?> \ No newline at end of file diff --git a/system/sections/servers/copy.php b/system/sections/servers/copy.php index 73e9da1d..14413417 100644 --- a/system/sections/servers/copy.php +++ b/system/sections/servers/copy.php @@ -8,4 +8,3 @@ sys::nav($server, $id, 'copy'); include(sys::route($server, 'copy', $go)); -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/console.php b/system/sections/servers/crmp/console.php index 08f3de53..7315a9ac 100644 --- a/system/sections/servers/crmp/console.php +++ b/system/sections/servers/crmp/console.php @@ -40,4 +40,3 @@ $html->get('console', 'sections/servers/' . $server['game']); $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/copy.php b/system/sections/servers/crmp/copy.php index 97a5a991..5bbdc1ad 100644 --- a/system/sections/servers/crmp/copy.php +++ b/system/sections/servers/crmp/copy.php @@ -77,4 +77,3 @@ $mcache->set('server_copy_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/graph.php b/system/sections/servers/crmp/graph.php index d78f4a71..5f58ffdc 100644 --- a/system/sections/servers/crmp/graph.php +++ b/system/sections/servers/crmp/graph.php @@ -19,10 +19,6 @@ exit(file_get_contents(TEMP . (md5($graph['key'] . 'full_' . $time)) . '.png')); } - include(LIB . 'games/graph/pData.php'); - include(LIB . 'games/graph/pDraw.php'); - include(LIB . 'games/graph/pImage.php'); - include(LIB . 'games/graph.php'); graph::full($id, $server['slots_start'], $graph['key'], $time); @@ -65,4 +61,3 @@ $mcache->set('server_graph_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/index.php b/system/sections/servers/crmp/index.php index 58d04cbe..80da74ed 100644 --- a/system/sections/servers/crmp/index.php +++ b/system/sections/servers/crmp/index.php @@ -41,4 +41,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/plugins.php b/system/sections/servers/crmp/plugins.php index b33fd4e8..0b1eee03 100644 --- a/system/sections/servers/crmp/plugins.php +++ b/system/sections/servers/crmp/plugins.php @@ -146,4 +146,3 @@ $mcache->set('server_plugins_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/rcon.php b/system/sections/servers/crmp/rcon.php index 1a796807..bb3bacdc 100644 --- a/system/sections/servers/crmp/rcon.php +++ b/system/sections/servers/crmp/rcon.php @@ -48,4 +48,3 @@ $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/settings.php b/system/sections/servers/crmp/settings.php index 0380ceeb..a0128674 100644 --- a/system/sections/servers/crmp/settings.php +++ b/system/sections/servers/crmp/settings.php @@ -66,4 +66,3 @@ $mcache->set('server_settings_' . $id, $html->arr['main'], false, 20); } } -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/settings/server.php b/system/sections/servers/crmp/settings/server.php index 77a9757b..c54fccd5 100644 --- a/system/sections/servers/crmp/settings/server.php +++ b/system/sections/servers/crmp/settings/server.php @@ -112,4 +112,3 @@ $html->set('other', $other); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/settings/start.php b/system/sections/servers/crmp/settings/start.php index 8642ec65..d45dbf79 100644 --- a/system/sections/servers/crmp/settings/start.php +++ b/system/sections/servers/crmp/settings/start.php @@ -40,4 +40,3 @@ $html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots)); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/tarif.php b/system/sections/servers/crmp/tarif.php index d12c9861..2b5c5121 100644 --- a/system/sections/servers/crmp/tarif.php +++ b/system/sections/servers/crmp/tarif.php @@ -9,4 +9,3 @@ $aSub = array('extend', 'address', 'addextend', 'unit', 'slots'); include(SEC . 'servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/tarif/extend.php b/system/sections/servers/crmp/tarif/extend.php index f05d263f..55781e89 100644 --- a/system/sections/servers/crmp/tarif/extend.php +++ b/system/sections/servers/crmp/tarif/extend.php @@ -44,4 +44,3 @@ $days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/tarif/slots.php b/system/sections/servers/crmp/tarif/slots.php index ece744d4..37f4ba14 100644 --- a/system/sections/servers/crmp/tarif/slots.php +++ b/system/sections/servers/crmp/tarif/slots.php @@ -27,4 +27,3 @@ $sum = round(($server['time'] - $start_point) / 86400 * ($tarif['price'] / 30) * $slots, 2); include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/tarif/unit.php b/system/sections/servers/crmp/tarif/unit.php index 9cee6f10..b4cddc0b 100644 --- a/system/sections/servers/crmp/tarif/unit.php +++ b/system/sections/servers/crmp/tarif/unit.php @@ -47,4 +47,3 @@ $time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]); include(SEC . 'servers/games/tarif/unit.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/crmp/web.php b/system/sections/servers/crmp/web.php index 82532164..b8768421 100644 --- a/system/sections/servers/crmp/web.php +++ b/system/sections/servers/crmp/web.php @@ -78,4 +78,3 @@ $mcache->set('server_web_' . $id, $html->arr['main'], false, 4); } } -?> \ No newline at end of file diff --git a/system/sections/servers/cs/boost.php b/system/sections/servers/cs/boost.php index 965f2a52..084c9d5e 100644 --- a/system/sections/servers/cs/boost.php +++ b/system/sections/servers/cs/boost.php @@ -94,4 +94,3 @@ $mcache->set('server_boost_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/cs/console.php b/system/sections/servers/cs/console.php index ccc36f63..f0708a3d 100644 --- a/system/sections/servers/cs/console.php +++ b/system/sections/servers/cs/console.php @@ -60,4 +60,3 @@ $html->get('console', 'sections/servers/' . $server['game']); $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/copy.php b/system/sections/servers/cs/copy.php index 97a5a991..5bbdc1ad 100644 --- a/system/sections/servers/cs/copy.php +++ b/system/sections/servers/cs/copy.php @@ -77,4 +77,3 @@ $mcache->set('server_copy_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/cs/graph.php b/system/sections/servers/cs/graph.php index b243a980..32e9fb1b 100644 --- a/system/sections/servers/cs/graph.php +++ b/system/sections/servers/cs/graph.php @@ -60,4 +60,3 @@ $mcache->set('server_graph_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/cs/index.php b/system/sections/servers/cs/index.php index 4f6bf6bd..868654a4 100644 --- a/system/sections/servers/cs/index.php +++ b/system/sections/servers/cs/index.php @@ -41,4 +41,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/maps.php b/system/sections/servers/cs/maps.php index e440b3c1..69e341e3 100644 --- a/system/sections/servers/cs/maps.php +++ b/system/sections/servers/cs/maps.php @@ -81,4 +81,3 @@ $mcache->set('server_maps_' . $id, $html->arr['main'], false, 3); } } -?> \ No newline at end of file diff --git a/system/sections/servers/cs/maps/delete.php b/system/sections/servers/cs/maps/delete.php index 9b9a1eea..a2bad48e 100644 --- a/system/sections/servers/cs/maps/delete.php +++ b/system/sections/servers/cs/maps/delete.php @@ -66,4 +66,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> diff --git a/system/sections/servers/cs/maps/install.php b/system/sections/servers/cs/maps/install.php index 09053adf..f4b31f7d 100644 --- a/system/sections/servers/cs/maps/install.php +++ b/system/sections/servers/cs/maps/install.php @@ -52,4 +52,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> diff --git a/system/sections/servers/cs/maps/list.php b/system/sections/servers/cs/maps/list.php index 27025093..cb030f57 100644 --- a/system/sections/servers/cs/maps/list.php +++ b/system/sections/servers/cs/maps/list.php @@ -76,6 +76,4 @@ $html->set('maps', isset($html->arr['maps']) ? $html->arr['maps'] : 'К сожалению карты не найдены в базе'); $html->set('amaps', $mapsjs); $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); -$html->set('cdn', $cfg['cdn']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/maps/listing.php b/system/sections/servers/cs/maps/listing.php index f812c171..f759a335 100644 --- a/system/sections/servers/cs/maps/listing.php +++ b/system/sections/servers/cs/maps/listing.php @@ -87,4 +87,3 @@ $html->set('maps', $maps); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/maps/search.php b/system/sections/servers/cs/maps/search.php index e47819de..28a32263 100644 --- a/system/sections/servers/cs/maps/search.php +++ b/system/sections/servers/cs/maps/search.php @@ -56,4 +56,3 @@ $mcache->set($mkey, array('maps' => $html->arr['maps'], 'mapsjs' => $mapsjs), false, 15); sys::outjs(array('maps' => $html->arr['maps'], 'mapsjs' => $mapsjs)); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/plugins.php b/system/sections/servers/cs/plugins.php index b33fd4e8..0b1eee03 100644 --- a/system/sections/servers/cs/plugins.php +++ b/system/sections/servers/cs/plugins.php @@ -146,4 +146,3 @@ $mcache->set('server_plugins_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/cs/rcon.php b/system/sections/servers/cs/rcon.php index adbdabf0..6be6be12 100644 --- a/system/sections/servers/cs/rcon.php +++ b/system/sections/servers/cs/rcon.php @@ -47,4 +47,3 @@ $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/settings.php b/system/sections/servers/cs/settings.php index c29f60a7..eb68ffb5 100644 --- a/system/sections/servers/cs/settings.php +++ b/system/sections/servers/cs/settings.php @@ -71,4 +71,3 @@ $mcache->set('server_settings_' . $id, $html->arr['main'], false, 20); } } -?> \ No newline at end of file diff --git a/system/sections/servers/cs/settings/admins.php b/system/sections/servers/cs/settings/admins.php index b13838b2..bde6e710 100644 --- a/system/sections/servers/cs/settings/admins.php +++ b/system/sections/servers/cs/settings/admins.php @@ -142,4 +142,3 @@ $html->unit('privileges'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/settings/amxlogs.php b/system/sections/servers/cs/settings/amxlogs.php index 2cefa23a..f4f91ab8 100644 --- a/system/sections/servers/cs/settings/amxlogs.php +++ b/system/sections/servers/cs/settings/amxlogs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/servers/cs/settings/antiddos.php b/system/sections/servers/cs/settings/antiddos.php index eea72515..64f12d1c 100644 --- a/system/sections/servers/cs/settings/antiddos.php +++ b/system/sections/servers/cs/settings/antiddos.php @@ -69,4 +69,3 @@ $mcache->delete('server_settings_' . $id); sys::outjs(array('s' => 'ok'), $name_mcache); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/settings/bans.php b/system/sections/servers/cs/settings/bans.php index 5b784081..f6a75a2e 100644 --- a/system/sections/servers/cs/settings/bans.php +++ b/system/sections/servers/cs/settings/bans.php @@ -154,4 +154,3 @@ $html->set('listip', isset($html->arr['listip']) ? $html->arr['listip'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/settings/debug.php b/system/sections/servers/cs/settings/debug.php index 2677cc0f..ee919e11 100644 --- a/system/sections/servers/cs/settings/debug.php +++ b/system/sections/servers/cs/settings/debug.php @@ -25,4 +25,3 @@ $html->set('log', htmlspecialchars($ssh->get())); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/settings/logs.php b/system/sections/servers/cs/settings/logs.php index 4626ea79..9643cc2e 100644 --- a/system/sections/servers/cs/settings/logs.php +++ b/system/sections/servers/cs/settings/logs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/servers/cs/settings/privileges.php b/system/sections/servers/cs/settings/privileges.php index 21b14b19..d5e9e1ea 100644 --- a/system/sections/servers/cs/settings/privileges.php +++ b/system/sections/servers/cs/settings/privileges.php @@ -127,4 +127,3 @@ $html->set('list', $html->arr['list']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/settings/server.php b/system/sections/servers/cs/settings/server.php index 4586e4ef..24b011d6 100644 --- a/system/sections/servers/cs/settings/server.php +++ b/system/sections/servers/cs/settings/server.php @@ -112,4 +112,3 @@ $html->set('other', $other); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/settings/start.php b/system/sections/servers/cs/settings/start.php index a4855688..00ceaba2 100644 --- a/system/sections/servers/cs/settings/start.php +++ b/system/sections/servers/cs/settings/start.php @@ -157,4 +157,3 @@ $html->unit('fps'); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/settings/top.php b/system/sections/servers/cs/settings/top.php index 5e8e6ffd..d739b755 100644 --- a/system/sections/servers/cs/settings/top.php +++ b/system/sections/servers/cs/settings/top.php @@ -21,4 +21,3 @@ sys::outjs(array('s' => 'ok')); } -?> \ No newline at end of file diff --git a/system/sections/servers/cs/tarif.php b/system/sections/servers/cs/tarif.php index 25de8a47..720472ee 100644 --- a/system/sections/servers/cs/tarif.php +++ b/system/sections/servers/cs/tarif.php @@ -9,4 +9,3 @@ $aSub = array('extend', 'plan', 'address', 'addextend', 'unit', 'slots'); include(SEC . 'servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/tarif/extend.php b/system/sections/servers/cs/tarif/extend.php index 50448081..d4fe1bb3 100644 --- a/system/sections/servers/cs/tarif/extend.php +++ b/system/sections/servers/cs/tarif/extend.php @@ -48,4 +48,3 @@ $days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/tarif/plan.php b/system/sections/servers/cs/tarif/plan.php index 78e3d221..2beaead6 100644 --- a/system/sections/servers/cs/tarif/plan.php +++ b/system/sections/servers/cs/tarif/plan.php @@ -61,4 +61,3 @@ // Выхлоп информации sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/tarif/slots.php b/system/sections/servers/cs/tarif/slots.php index 0db6e179..d742c1ea 100644 --- a/system/sections/servers/cs/tarif/slots.php +++ b/system/sections/servers/cs/tarif/slots.php @@ -30,4 +30,3 @@ $sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[array_search($server['fps'], $aFPS)] / 30) * $slots, 2); include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/tarif/unit.php b/system/sections/servers/cs/tarif/unit.php index dad76ce2..bb6d7392 100644 --- a/system/sections/servers/cs/tarif/unit.php +++ b/system/sections/servers/cs/tarif/unit.php @@ -47,4 +47,3 @@ $time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]); include(SEC . 'servers/games/tarif/unit.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs/web.php b/system/sections/servers/cs/web.php index 43a22a70..5164b7a6 100644 --- a/system/sections/servers/cs/web.php +++ b/system/sections/servers/cs/web.php @@ -77,4 +77,3 @@ $mcache->set('server_web_' . $id, $html->arr['main'], false, 4); } } -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/console.php b/system/sections/servers/cs2/console.php index 47bae624..ebc87a96 100644 --- a/system/sections/servers/cs2/console.php +++ b/system/sections/servers/cs2/console.php @@ -60,4 +60,3 @@ $html->get('console', 'sections/servers/' . $server['game']); $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/copy.php b/system/sections/servers/cs2/copy.php index 97a5a991..5bbdc1ad 100644 --- a/system/sections/servers/cs2/copy.php +++ b/system/sections/servers/cs2/copy.php @@ -77,4 +77,3 @@ $mcache->set('server_copy_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/graph.php b/system/sections/servers/cs2/graph.php index d78f4a71..5f58ffdc 100644 --- a/system/sections/servers/cs2/graph.php +++ b/system/sections/servers/cs2/graph.php @@ -19,10 +19,6 @@ exit(file_get_contents(TEMP . (md5($graph['key'] . 'full_' . $time)) . '.png')); } - include(LIB . 'games/graph/pData.php'); - include(LIB . 'games/graph/pDraw.php'); - include(LIB . 'games/graph/pImage.php'); - include(LIB . 'games/graph.php'); graph::full($id, $server['slots_start'], $graph['key'], $time); @@ -65,4 +61,3 @@ $mcache->set('server_graph_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/index.php b/system/sections/servers/cs2/index.php index 544e9b67..035155d5 100644 --- a/system/sections/servers/cs2/index.php +++ b/system/sections/servers/cs2/index.php @@ -41,4 +41,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/maps.php b/system/sections/servers/cs2/maps.php index 51d28f8c..671f2fcd 100644 --- a/system/sections/servers/cs2/maps.php +++ b/system/sections/servers/cs2/maps.php @@ -91,4 +91,3 @@ $mcache->set('server_maps_' . $id, $html->arr['main'], false, 3); } } -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/maps/delete.php b/system/sections/servers/cs2/maps/delete.php index b92f43eb..f5be33b8 100644 --- a/system/sections/servers/cs2/maps/delete.php +++ b/system/sections/servers/cs2/maps/delete.php @@ -66,4 +66,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> diff --git a/system/sections/servers/cs2/maps/install.php b/system/sections/servers/cs2/maps/install.php index b02ad42d..b9601edd 100644 --- a/system/sections/servers/cs2/maps/install.php +++ b/system/sections/servers/cs2/maps/install.php @@ -52,4 +52,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> diff --git a/system/sections/servers/cs2/maps/list.php b/system/sections/servers/cs2/maps/list.php index 77e5dcc0..86d2cf36 100644 --- a/system/sections/servers/cs2/maps/list.php +++ b/system/sections/servers/cs2/maps/list.php @@ -55,7 +55,4 @@ $html->set('maps', isset($html->arr['maps']) ? $html->arr['maps'] : 'К сожалению карты не найдены в базе'); $html->set('amaps', $mapsjs); $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); -$html->set('cdn', $cfg['cdn']); - $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/maps/listing.php b/system/sections/servers/cs2/maps/listing.php index 47283d9a..48c567d1 100644 --- a/system/sections/servers/cs2/maps/listing.php +++ b/system/sections/servers/cs2/maps/listing.php @@ -87,4 +87,3 @@ $html->set('maps', $maps); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/maps/search.php b/system/sections/servers/cs2/maps/search.php index 535096fc..68347129 100644 --- a/system/sections/servers/cs2/maps/search.php +++ b/system/sections/servers/cs2/maps/search.php @@ -56,4 +56,3 @@ $mcache->set($mkey, array('maps' => $html->arr['maps'], 'mapsjs' => $mapsjs), false, 15); sys::outjs(array('maps' => $html->arr['maps'], 'mapsjs' => $mapsjs)); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/owners.php b/system/sections/servers/cs2/owners.php index 50ecb1bd..30787266 100644 --- a/system/sections/servers/cs2/owners.php +++ b/system/sections/servers/cs2/owners.php @@ -162,4 +162,3 @@ $mcache->set('server_owners_' . $id, $html->arr['main'], false, 1); } -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/plugins.php b/system/sections/servers/cs2/plugins.php index b33fd4e8..0b1eee03 100644 --- a/system/sections/servers/cs2/plugins.php +++ b/system/sections/servers/cs2/plugins.php @@ -146,4 +146,3 @@ $mcache->set('server_plugins_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/rcon.php b/system/sections/servers/cs2/rcon.php index 1a796807..bb3bacdc 100644 --- a/system/sections/servers/cs2/rcon.php +++ b/system/sections/servers/cs2/rcon.php @@ -48,4 +48,3 @@ $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/settings.php b/system/sections/servers/cs2/settings.php index edb7ff00..7a7e40c0 100644 --- a/system/sections/servers/cs2/settings.php +++ b/system/sections/servers/cs2/settings.php @@ -71,4 +71,3 @@ $mcache->set('server_settings_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/settings/admins.php b/system/sections/servers/cs2/settings/admins.php index 16a3d19b..520f8c0d 100644 --- a/system/sections/servers/cs2/settings/admins.php +++ b/system/sections/servers/cs2/settings/admins.php @@ -107,4 +107,3 @@ $html->set('index', $max['id'] < 1 ? 0 : $max['id']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/settings/bans.php b/system/sections/servers/cs2/settings/bans.php index 7171c2fe..bfb80fd4 100644 --- a/system/sections/servers/cs2/settings/bans.php +++ b/system/sections/servers/cs2/settings/bans.php @@ -151,4 +151,3 @@ $html->set('listip', isset($html->arr['listip']) ? $html->arr['listip'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/settings/debug.php b/system/sections/servers/cs2/settings/debug.php index 2677cc0f..ee919e11 100644 --- a/system/sections/servers/cs2/settings/debug.php +++ b/system/sections/servers/cs2/settings/debug.php @@ -25,4 +25,3 @@ $html->set('log', htmlspecialchars($ssh->get())); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/settings/logs.php b/system/sections/servers/cs2/settings/logs.php index 05a1ea3b..311c4b7a 100644 --- a/system/sections/servers/cs2/settings/logs.php +++ b/system/sections/servers/cs2/settings/logs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/settings/server.php b/system/sections/servers/cs2/settings/server.php index 1fc32865..ae4e875e 100644 --- a/system/sections/servers/cs2/settings/server.php +++ b/system/sections/servers/cs2/settings/server.php @@ -110,4 +110,3 @@ $html->set('other', $other); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/settings/smlogs.php b/system/sections/servers/cs2/settings/smlogs.php index bab13c98..77298e94 100644 --- a/system/sections/servers/cs2/settings/smlogs.php +++ b/system/sections/servers/cs2/settings/smlogs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/settings/start.php b/system/sections/servers/cs2/settings/start.php index ed4671ed..44ba77d7 100644 --- a/system/sections/servers/cs2/settings/start.php +++ b/system/sections/servers/cs2/settings/start.php @@ -161,4 +161,3 @@ $html->unit('tickrate'); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/tarif.php b/system/sections/servers/cs2/tarif.php index 2b7e8c8e..21ab2b1e 100644 --- a/system/sections/servers/cs2/tarif.php +++ b/system/sections/servers/cs2/tarif.php @@ -9,4 +9,3 @@ $aSub = array('extend', 'plan', 'address', 'addextend', 'unit', 'slots'); include(SEC . 'servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/tarif/extend.php b/system/sections/servers/cs2/tarif/extend.php index ff46759c..22f5e417 100644 --- a/system/sections/servers/cs2/tarif/extend.php +++ b/system/sections/servers/cs2/tarif/extend.php @@ -47,4 +47,3 @@ $days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/tarif/plan.php b/system/sections/servers/cs2/tarif/plan.php index aa13dfc0..f50912be 100644 --- a/system/sections/servers/cs2/tarif/plan.php +++ b/system/sections/servers/cs2/tarif/plan.php @@ -61,4 +61,3 @@ // Выхлоп информации sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/tarif/slots.php b/system/sections/servers/cs2/tarif/slots.php index e4b82400..4c7e9eb1 100644 --- a/system/sections/servers/cs2/tarif/slots.php +++ b/system/sections/servers/cs2/tarif/slots.php @@ -30,4 +30,3 @@ $sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[array_search($server['tickrate'], $aTICK)] / 30) * $slots, 2); include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/tarif/unit.php b/system/sections/servers/cs2/tarif/unit.php index 9cee6f10..b4cddc0b 100644 --- a/system/sections/servers/cs2/tarif/unit.php +++ b/system/sections/servers/cs2/tarif/unit.php @@ -47,4 +47,3 @@ $time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]); include(SEC . 'servers/games/tarif/unit.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/cs2/web.php b/system/sections/servers/cs2/web.php index 82532164..b8768421 100644 --- a/system/sections/servers/cs2/web.php +++ b/system/sections/servers/cs2/web.php @@ -78,4 +78,3 @@ $mcache->set('server_web_' . $id, $html->arr['main'], false, 4); } } -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/console.php b/system/sections/servers/csgo/console.php index 4c3c764d..ffb67e66 100644 --- a/system/sections/servers/csgo/console.php +++ b/system/sections/servers/csgo/console.php @@ -60,4 +60,3 @@ $html->get('console', 'sections/servers/' . $server['game']); $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/copy.php b/system/sections/servers/csgo/copy.php index 97a5a991..5bbdc1ad 100644 --- a/system/sections/servers/csgo/copy.php +++ b/system/sections/servers/csgo/copy.php @@ -77,4 +77,3 @@ $mcache->set('server_copy_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/graph.php b/system/sections/servers/csgo/graph.php index d78f4a71..5f58ffdc 100644 --- a/system/sections/servers/csgo/graph.php +++ b/system/sections/servers/csgo/graph.php @@ -19,10 +19,6 @@ exit(file_get_contents(TEMP . (md5($graph['key'] . 'full_' . $time)) . '.png')); } - include(LIB . 'games/graph/pData.php'); - include(LIB . 'games/graph/pDraw.php'); - include(LIB . 'games/graph/pImage.php'); - include(LIB . 'games/graph.php'); graph::full($id, $server['slots_start'], $graph['key'], $time); @@ -65,4 +61,3 @@ $mcache->set('server_graph_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/index.php b/system/sections/servers/csgo/index.php index 544e9b67..035155d5 100644 --- a/system/sections/servers/csgo/index.php +++ b/system/sections/servers/csgo/index.php @@ -41,4 +41,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/maps.php b/system/sections/servers/csgo/maps.php index 9959162f..c9cfbce6 100644 --- a/system/sections/servers/csgo/maps.php +++ b/system/sections/servers/csgo/maps.php @@ -91,4 +91,3 @@ $mcache->set('server_maps_' . $id, $html->arr['main'], false, 3); } } -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/maps/delete.php b/system/sections/servers/csgo/maps/delete.php index 4400b011..f0f9823b 100644 --- a/system/sections/servers/csgo/maps/delete.php +++ b/system/sections/servers/csgo/maps/delete.php @@ -66,4 +66,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> diff --git a/system/sections/servers/csgo/maps/install.php b/system/sections/servers/csgo/maps/install.php index cd9ef70f..fdc65849 100644 --- a/system/sections/servers/csgo/maps/install.php +++ b/system/sections/servers/csgo/maps/install.php @@ -52,4 +52,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> diff --git a/system/sections/servers/csgo/maps/list.php b/system/sections/servers/csgo/maps/list.php index 77e5dcc0..86d2cf36 100644 --- a/system/sections/servers/csgo/maps/list.php +++ b/system/sections/servers/csgo/maps/list.php @@ -55,7 +55,4 @@ $html->set('maps', isset($html->arr['maps']) ? $html->arr['maps'] : 'К сожалению карты не найдены в базе'); $html->set('amaps', $mapsjs); $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); -$html->set('cdn', $cfg['cdn']); - $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/maps/listing.php b/system/sections/servers/csgo/maps/listing.php index a775514d..b70db1c5 100644 --- a/system/sections/servers/csgo/maps/listing.php +++ b/system/sections/servers/csgo/maps/listing.php @@ -87,4 +87,3 @@ $html->set('maps', $maps); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/maps/search.php b/system/sections/servers/csgo/maps/search.php index e47819de..28a32263 100644 --- a/system/sections/servers/csgo/maps/search.php +++ b/system/sections/servers/csgo/maps/search.php @@ -56,4 +56,3 @@ $mcache->set($mkey, array('maps' => $html->arr['maps'], 'mapsjs' => $mapsjs), false, 15); sys::outjs(array('maps' => $html->arr['maps'], 'mapsjs' => $mapsjs)); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/owners.php b/system/sections/servers/csgo/owners.php index 50ecb1bd..30787266 100644 --- a/system/sections/servers/csgo/owners.php +++ b/system/sections/servers/csgo/owners.php @@ -162,4 +162,3 @@ $mcache->set('server_owners_' . $id, $html->arr['main'], false, 1); } -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/plugins.php b/system/sections/servers/csgo/plugins.php index b33fd4e8..0b1eee03 100644 --- a/system/sections/servers/csgo/plugins.php +++ b/system/sections/servers/csgo/plugins.php @@ -146,4 +146,3 @@ $mcache->set('server_plugins_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/rcon.php b/system/sections/servers/csgo/rcon.php index 1a796807..bb3bacdc 100644 --- a/system/sections/servers/csgo/rcon.php +++ b/system/sections/servers/csgo/rcon.php @@ -48,4 +48,3 @@ $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/settings.php b/system/sections/servers/csgo/settings.php index edb7ff00..7a7e40c0 100644 --- a/system/sections/servers/csgo/settings.php +++ b/system/sections/servers/csgo/settings.php @@ -71,4 +71,3 @@ $mcache->set('server_settings_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/settings/admins.php b/system/sections/servers/csgo/settings/admins.php index 68ba12ac..cc6616be 100644 --- a/system/sections/servers/csgo/settings/admins.php +++ b/system/sections/servers/csgo/settings/admins.php @@ -107,4 +107,3 @@ $html->set('index', $max['id'] < 1 ? 0 : $max['id']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/settings/bans.php b/system/sections/servers/csgo/settings/bans.php index a3ffa02e..68b54632 100644 --- a/system/sections/servers/csgo/settings/bans.php +++ b/system/sections/servers/csgo/settings/bans.php @@ -151,4 +151,3 @@ $html->set('listip', isset($html->arr['listip']) ? $html->arr['listip'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/settings/debug.php b/system/sections/servers/csgo/settings/debug.php index 2677cc0f..ee919e11 100644 --- a/system/sections/servers/csgo/settings/debug.php +++ b/system/sections/servers/csgo/settings/debug.php @@ -25,4 +25,3 @@ $html->set('log', htmlspecialchars($ssh->get())); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/settings/logs.php b/system/sections/servers/csgo/settings/logs.php index f6a0e13e..057f1c4f 100644 --- a/system/sections/servers/csgo/settings/logs.php +++ b/system/sections/servers/csgo/settings/logs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/settings/server.php b/system/sections/servers/csgo/settings/server.php index c41b9523..53660923 100644 --- a/system/sections/servers/csgo/settings/server.php +++ b/system/sections/servers/csgo/settings/server.php @@ -110,4 +110,3 @@ $html->set('other', $other); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/settings/smlogs.php b/system/sections/servers/csgo/settings/smlogs.php index 81c88035..f82e587e 100644 --- a/system/sections/servers/csgo/settings/smlogs.php +++ b/system/sections/servers/csgo/settings/smlogs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/settings/start.php b/system/sections/servers/csgo/settings/start.php index b182f179..a80fe40c 100644 --- a/system/sections/servers/csgo/settings/start.php +++ b/system/sections/servers/csgo/settings/start.php @@ -161,4 +161,3 @@ $html->unit('tickrate'); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/tarif.php b/system/sections/servers/csgo/tarif.php index 2b7e8c8e..21ab2b1e 100644 --- a/system/sections/servers/csgo/tarif.php +++ b/system/sections/servers/csgo/tarif.php @@ -9,4 +9,3 @@ $aSub = array('extend', 'plan', 'address', 'addextend', 'unit', 'slots'); include(SEC . 'servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/tarif/extend.php b/system/sections/servers/csgo/tarif/extend.php index ff46759c..22f5e417 100644 --- a/system/sections/servers/csgo/tarif/extend.php +++ b/system/sections/servers/csgo/tarif/extend.php @@ -47,4 +47,3 @@ $days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/tarif/plan.php b/system/sections/servers/csgo/tarif/plan.php index aa13dfc0..f50912be 100644 --- a/system/sections/servers/csgo/tarif/plan.php +++ b/system/sections/servers/csgo/tarif/plan.php @@ -61,4 +61,3 @@ // Выхлоп информации sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/tarif/slots.php b/system/sections/servers/csgo/tarif/slots.php index e4b82400..4c7e9eb1 100644 --- a/system/sections/servers/csgo/tarif/slots.php +++ b/system/sections/servers/csgo/tarif/slots.php @@ -30,4 +30,3 @@ $sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[array_search($server['tickrate'], $aTICK)] / 30) * $slots, 2); include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/tarif/unit.php b/system/sections/servers/csgo/tarif/unit.php index 9cee6f10..b4cddc0b 100644 --- a/system/sections/servers/csgo/tarif/unit.php +++ b/system/sections/servers/csgo/tarif/unit.php @@ -47,4 +47,3 @@ $time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]); include(SEC . 'servers/games/tarif/unit.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/csgo/web.php b/system/sections/servers/csgo/web.php index 82532164..b8768421 100644 --- a/system/sections/servers/csgo/web.php +++ b/system/sections/servers/csgo/web.php @@ -78,4 +78,3 @@ $mcache->set('server_web_' . $id, $html->arr['main'], false, 4); } } -?> \ No newline at end of file diff --git a/system/sections/servers/css/console.php b/system/sections/servers/css/console.php index 15343fa4..5e470ab4 100644 --- a/system/sections/servers/css/console.php +++ b/system/sections/servers/css/console.php @@ -60,4 +60,3 @@ $html->get('console', 'sections/servers/' . $server['game']); $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/copy.php b/system/sections/servers/css/copy.php index 97a5a991..5bbdc1ad 100644 --- a/system/sections/servers/css/copy.php +++ b/system/sections/servers/css/copy.php @@ -77,4 +77,3 @@ $mcache->set('server_copy_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/css/graph.php b/system/sections/servers/css/graph.php index d78f4a71..5f58ffdc 100644 --- a/system/sections/servers/css/graph.php +++ b/system/sections/servers/css/graph.php @@ -19,10 +19,6 @@ exit(file_get_contents(TEMP . (md5($graph['key'] . 'full_' . $time)) . '.png')); } - include(LIB . 'games/graph/pData.php'); - include(LIB . 'games/graph/pDraw.php'); - include(LIB . 'games/graph/pImage.php'); - include(LIB . 'games/graph.php'); graph::full($id, $server['slots_start'], $graph['key'], $time); @@ -65,4 +61,3 @@ $mcache->set('server_graph_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/css/index.php b/system/sections/servers/css/index.php index 544e9b67..035155d5 100644 --- a/system/sections/servers/css/index.php +++ b/system/sections/servers/css/index.php @@ -41,4 +41,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/maps.php b/system/sections/servers/css/maps.php index ac5dc8e9..e9695b9d 100644 --- a/system/sections/servers/css/maps.php +++ b/system/sections/servers/css/maps.php @@ -80,4 +80,3 @@ $mcache->set('server_maps_' . $id, $html->arr['main'], false, 3); } } -?> \ No newline at end of file diff --git a/system/sections/servers/css/maps/delete.php b/system/sections/servers/css/maps/delete.php index 9b9a1eea..a2bad48e 100644 --- a/system/sections/servers/css/maps/delete.php +++ b/system/sections/servers/css/maps/delete.php @@ -66,4 +66,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> diff --git a/system/sections/servers/css/maps/install.php b/system/sections/servers/css/maps/install.php index 09053adf..f4b31f7d 100644 --- a/system/sections/servers/css/maps/install.php +++ b/system/sections/servers/css/maps/install.php @@ -52,4 +52,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> diff --git a/system/sections/servers/css/maps/list.php b/system/sections/servers/css/maps/list.php index 77e5dcc0..86d2cf36 100644 --- a/system/sections/servers/css/maps/list.php +++ b/system/sections/servers/css/maps/list.php @@ -55,7 +55,4 @@ $html->set('maps', isset($html->arr['maps']) ? $html->arr['maps'] : 'К сожалению карты не найдены в базе'); $html->set('amaps', $mapsjs); $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); -$html->set('cdn', $cfg['cdn']); - $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/maps/listing.php b/system/sections/servers/css/maps/listing.php index 1f098655..ec1e2b2b 100644 --- a/system/sections/servers/css/maps/listing.php +++ b/system/sections/servers/css/maps/listing.php @@ -87,4 +87,3 @@ $html->set('maps', $maps); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/maps/search.php b/system/sections/servers/css/maps/search.php index e47819de..28a32263 100644 --- a/system/sections/servers/css/maps/search.php +++ b/system/sections/servers/css/maps/search.php @@ -56,4 +56,3 @@ $mcache->set($mkey, array('maps' => $html->arr['maps'], 'mapsjs' => $mapsjs), false, 15); sys::outjs(array('maps' => $html->arr['maps'], 'mapsjs' => $mapsjs)); -?> \ No newline at end of file diff --git a/system/sections/servers/css/owners.php b/system/sections/servers/css/owners.php index 50ecb1bd..30787266 100644 --- a/system/sections/servers/css/owners.php +++ b/system/sections/servers/css/owners.php @@ -162,4 +162,3 @@ $mcache->set('server_owners_' . $id, $html->arr['main'], false, 1); } -?> \ No newline at end of file diff --git a/system/sections/servers/css/plugins.php b/system/sections/servers/css/plugins.php index b33fd4e8..0b1eee03 100644 --- a/system/sections/servers/css/plugins.php +++ b/system/sections/servers/css/plugins.php @@ -146,4 +146,3 @@ $mcache->set('server_plugins_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/css/rcon.php b/system/sections/servers/css/rcon.php index 1a796807..bb3bacdc 100644 --- a/system/sections/servers/css/rcon.php +++ b/system/sections/servers/css/rcon.php @@ -48,4 +48,3 @@ $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/settings.php b/system/sections/servers/css/settings.php index edb7ff00..7a7e40c0 100644 --- a/system/sections/servers/css/settings.php +++ b/system/sections/servers/css/settings.php @@ -71,4 +71,3 @@ $mcache->set('server_settings_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/css/settings/admins.php b/system/sections/servers/css/settings/admins.php index 5bb1c3d3..e375f7d8 100644 --- a/system/sections/servers/css/settings/admins.php +++ b/system/sections/servers/css/settings/admins.php @@ -107,4 +107,3 @@ $html->set('index', $max['id'] < 1 ? 0 : $max['id']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/settings/antiddos.php b/system/sections/servers/css/settings/antiddos.php index eea72515..64f12d1c 100644 --- a/system/sections/servers/css/settings/antiddos.php +++ b/system/sections/servers/css/settings/antiddos.php @@ -69,4 +69,3 @@ $mcache->delete('server_settings_' . $id); sys::outjs(array('s' => 'ok'), $name_mcache); -?> \ No newline at end of file diff --git a/system/sections/servers/css/settings/bans.php b/system/sections/servers/css/settings/bans.php index 5d612761..89267ece 100644 --- a/system/sections/servers/css/settings/bans.php +++ b/system/sections/servers/css/settings/bans.php @@ -151,4 +151,3 @@ $html->set('listip', isset($html->arr['listip']) ? $html->arr['listip'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/settings/debug.php b/system/sections/servers/css/settings/debug.php index 2677cc0f..ee919e11 100644 --- a/system/sections/servers/css/settings/debug.php +++ b/system/sections/servers/css/settings/debug.php @@ -25,4 +25,3 @@ $html->set('log', htmlspecialchars($ssh->get())); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/settings/logs.php b/system/sections/servers/css/settings/logs.php index a83fde51..2145084f 100644 --- a/system/sections/servers/css/settings/logs.php +++ b/system/sections/servers/css/settings/logs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/servers/css/settings/server.php b/system/sections/servers/css/settings/server.php index 1d0ec2a8..83046af5 100644 --- a/system/sections/servers/css/settings/server.php +++ b/system/sections/servers/css/settings/server.php @@ -110,4 +110,3 @@ $html->set('other', $other); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/settings/smlogs.php b/system/sections/servers/css/settings/smlogs.php index ff4ae34e..51441001 100644 --- a/system/sections/servers/css/settings/smlogs.php +++ b/system/sections/servers/css/settings/smlogs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/servers/css/settings/start.php b/system/sections/servers/css/settings/start.php index 12918145..1e22751c 100644 --- a/system/sections/servers/css/settings/start.php +++ b/system/sections/servers/css/settings/start.php @@ -141,4 +141,3 @@ $html->unit('tickrate'); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/tarif.php b/system/sections/servers/css/tarif.php index 2b7e8c8e..21ab2b1e 100644 --- a/system/sections/servers/css/tarif.php +++ b/system/sections/servers/css/tarif.php @@ -9,4 +9,3 @@ $aSub = array('extend', 'plan', 'address', 'addextend', 'unit', 'slots'); include(SEC . 'servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/tarif/extend.php b/system/sections/servers/css/tarif/extend.php index ff46759c..22f5e417 100644 --- a/system/sections/servers/css/tarif/extend.php +++ b/system/sections/servers/css/tarif/extend.php @@ -47,4 +47,3 @@ $days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/tarif/plan.php b/system/sections/servers/css/tarif/plan.php index aa13dfc0..f50912be 100644 --- a/system/sections/servers/css/tarif/plan.php +++ b/system/sections/servers/css/tarif/plan.php @@ -61,4 +61,3 @@ // Выхлоп информации sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/css/tarif/slots.php b/system/sections/servers/css/tarif/slots.php index e4b82400..4c7e9eb1 100644 --- a/system/sections/servers/css/tarif/slots.php +++ b/system/sections/servers/css/tarif/slots.php @@ -30,4 +30,3 @@ $sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[array_search($server['tickrate'], $aTICK)] / 30) * $slots, 2); include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/tarif/unit.php b/system/sections/servers/css/tarif/unit.php index 9cee6f10..b4cddc0b 100644 --- a/system/sections/servers/css/tarif/unit.php +++ b/system/sections/servers/css/tarif/unit.php @@ -47,4 +47,3 @@ $time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]); include(SEC . 'servers/games/tarif/unit.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/css/web.php b/system/sections/servers/css/web.php index 82532164..b8768421 100644 --- a/system/sections/servers/css/web.php +++ b/system/sections/servers/css/web.php @@ -78,4 +78,3 @@ $mcache->set('server_web_' . $id, $html->arr['main'], false, 4); } } -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/console.php b/system/sections/servers/cssold/console.php index 15343fa4..5e470ab4 100644 --- a/system/sections/servers/cssold/console.php +++ b/system/sections/servers/cssold/console.php @@ -60,4 +60,3 @@ $html->get('console', 'sections/servers/' . $server['game']); $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/copy.php b/system/sections/servers/cssold/copy.php index 97a5a991..5bbdc1ad 100644 --- a/system/sections/servers/cssold/copy.php +++ b/system/sections/servers/cssold/copy.php @@ -77,4 +77,3 @@ $mcache->set('server_copy_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/graph.php b/system/sections/servers/cssold/graph.php index d78f4a71..5f58ffdc 100644 --- a/system/sections/servers/cssold/graph.php +++ b/system/sections/servers/cssold/graph.php @@ -19,10 +19,6 @@ exit(file_get_contents(TEMP . (md5($graph['key'] . 'full_' . $time)) . '.png')); } - include(LIB . 'games/graph/pData.php'); - include(LIB . 'games/graph/pDraw.php'); - include(LIB . 'games/graph/pImage.php'); - include(LIB . 'games/graph.php'); graph::full($id, $server['slots_start'], $graph['key'], $time); @@ -65,4 +61,3 @@ $mcache->set('server_graph_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/index.php b/system/sections/servers/cssold/index.php index c2d74791..19fea018 100644 --- a/system/sections/servers/cssold/index.php +++ b/system/sections/servers/cssold/index.php @@ -41,4 +41,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/maps.php b/system/sections/servers/cssold/maps.php index ac5dc8e9..e9695b9d 100644 --- a/system/sections/servers/cssold/maps.php +++ b/system/sections/servers/cssold/maps.php @@ -80,4 +80,3 @@ $mcache->set('server_maps_' . $id, $html->arr['main'], false, 3); } } -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/maps/delete.php b/system/sections/servers/cssold/maps/delete.php index 9b9a1eea..a2bad48e 100644 --- a/system/sections/servers/cssold/maps/delete.php +++ b/system/sections/servers/cssold/maps/delete.php @@ -66,4 +66,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> diff --git a/system/sections/servers/cssold/maps/install.php b/system/sections/servers/cssold/maps/install.php index 09053adf..f4b31f7d 100644 --- a/system/sections/servers/cssold/maps/install.php +++ b/system/sections/servers/cssold/maps/install.php @@ -52,4 +52,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> diff --git a/system/sections/servers/cssold/maps/list.php b/system/sections/servers/cssold/maps/list.php index 77e5dcc0..86d2cf36 100644 --- a/system/sections/servers/cssold/maps/list.php +++ b/system/sections/servers/cssold/maps/list.php @@ -55,7 +55,4 @@ $html->set('maps', isset($html->arr['maps']) ? $html->arr['maps'] : 'К сожалению карты не найдены в базе'); $html->set('amaps', $mapsjs); $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); -$html->set('cdn', $cfg['cdn']); - $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/maps/listing.php b/system/sections/servers/cssold/maps/listing.php index 1f098655..ec1e2b2b 100644 --- a/system/sections/servers/cssold/maps/listing.php +++ b/system/sections/servers/cssold/maps/listing.php @@ -87,4 +87,3 @@ $html->set('maps', $maps); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/maps/search.php b/system/sections/servers/cssold/maps/search.php index e47819de..28a32263 100644 --- a/system/sections/servers/cssold/maps/search.php +++ b/system/sections/servers/cssold/maps/search.php @@ -56,4 +56,3 @@ $mcache->set($mkey, array('maps' => $html->arr['maps'], 'mapsjs' => $mapsjs), false, 15); sys::outjs(array('maps' => $html->arr['maps'], 'mapsjs' => $mapsjs)); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/owners.php b/system/sections/servers/cssold/owners.php index 50ecb1bd..30787266 100644 --- a/system/sections/servers/cssold/owners.php +++ b/system/sections/servers/cssold/owners.php @@ -162,4 +162,3 @@ $mcache->set('server_owners_' . $id, $html->arr['main'], false, 1); } -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/plugins.php b/system/sections/servers/cssold/plugins.php index b33fd4e8..0b1eee03 100644 --- a/system/sections/servers/cssold/plugins.php +++ b/system/sections/servers/cssold/plugins.php @@ -146,4 +146,3 @@ $mcache->set('server_plugins_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/rcon.php b/system/sections/servers/cssold/rcon.php index 1a796807..bb3bacdc 100644 --- a/system/sections/servers/cssold/rcon.php +++ b/system/sections/servers/cssold/rcon.php @@ -48,4 +48,3 @@ $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/settings.php b/system/sections/servers/cssold/settings.php index 43415728..f01a5ece 100644 --- a/system/sections/servers/cssold/settings.php +++ b/system/sections/servers/cssold/settings.php @@ -71,4 +71,3 @@ $mcache->set('server_settings_' . $id, $html->arr['main'], false, 20); } } -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/settings/admins.php b/system/sections/servers/cssold/settings/admins.php index 5bb1c3d3..e375f7d8 100644 --- a/system/sections/servers/cssold/settings/admins.php +++ b/system/sections/servers/cssold/settings/admins.php @@ -107,4 +107,3 @@ $html->set('index', $max['id'] < 1 ? 0 : $max['id']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/settings/antiddos.php b/system/sections/servers/cssold/settings/antiddos.php index eea72515..64f12d1c 100644 --- a/system/sections/servers/cssold/settings/antiddos.php +++ b/system/sections/servers/cssold/settings/antiddos.php @@ -69,4 +69,3 @@ $mcache->delete('server_settings_' . $id); sys::outjs(array('s' => 'ok'), $name_mcache); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/settings/bans.php b/system/sections/servers/cssold/settings/bans.php index 53114937..083eda2e 100644 --- a/system/sections/servers/cssold/settings/bans.php +++ b/system/sections/servers/cssold/settings/bans.php @@ -151,4 +151,3 @@ $html->set('listip', isset($html->arr['listip']) ? $html->arr['listip'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/settings/debug.php b/system/sections/servers/cssold/settings/debug.php index 2677cc0f..ee919e11 100644 --- a/system/sections/servers/cssold/settings/debug.php +++ b/system/sections/servers/cssold/settings/debug.php @@ -25,4 +25,3 @@ $html->set('log', htmlspecialchars($ssh->get())); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/settings/logs.php b/system/sections/servers/cssold/settings/logs.php index a83fde51..2145084f 100644 --- a/system/sections/servers/cssold/settings/logs.php +++ b/system/sections/servers/cssold/settings/logs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/settings/server.php b/system/sections/servers/cssold/settings/server.php index 1d0ec2a8..83046af5 100644 --- a/system/sections/servers/cssold/settings/server.php +++ b/system/sections/servers/cssold/settings/server.php @@ -110,4 +110,3 @@ $html->set('other', $other); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/settings/smlogs.php b/system/sections/servers/cssold/settings/smlogs.php index ff4ae34e..51441001 100644 --- a/system/sections/servers/cssold/settings/smlogs.php +++ b/system/sections/servers/cssold/settings/smlogs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/settings/start.php b/system/sections/servers/cssold/settings/start.php index 10f9cda0..8bdd2bfd 100644 --- a/system/sections/servers/cssold/settings/start.php +++ b/system/sections/servers/cssold/settings/start.php @@ -162,4 +162,3 @@ } $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/tarif.php b/system/sections/servers/cssold/tarif.php index 2b7e8c8e..21ab2b1e 100644 --- a/system/sections/servers/cssold/tarif.php +++ b/system/sections/servers/cssold/tarif.php @@ -9,4 +9,3 @@ $aSub = array('extend', 'plan', 'address', 'addextend', 'unit', 'slots'); include(SEC . 'servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/tarif/extend.php b/system/sections/servers/cssold/tarif/extend.php index 9588d858..8e048ba4 100644 --- a/system/sections/servers/cssold/tarif/extend.php +++ b/system/sections/servers/cssold/tarif/extend.php @@ -48,4 +48,3 @@ $days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/tarif/plan.php b/system/sections/servers/cssold/tarif/plan.php index 0efdea39..4a4fef8f 100644 --- a/system/sections/servers/cssold/tarif/plan.php +++ b/system/sections/servers/cssold/tarif/plan.php @@ -62,4 +62,3 @@ // Выхлоп информации sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/tarif/slots.php b/system/sections/servers/cssold/tarif/slots.php index 141c31e9..bf5155d5 100644 --- a/system/sections/servers/cssold/tarif/slots.php +++ b/system/sections/servers/cssold/tarif/slots.php @@ -29,4 +29,3 @@ $sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[$server['tickrate'] . '_' . $server['fps']] / 30) * $slots, 2); include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/tarif/unit.php b/system/sections/servers/cssold/tarif/unit.php index 66647b30..031d4336 100644 --- a/system/sections/servers/cssold/tarif/unit.php +++ b/system/sections/servers/cssold/tarif/unit.php @@ -45,4 +45,3 @@ $time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]); include(SEC . 'servers/games/tarif/unit.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/cssold/web.php b/system/sections/servers/cssold/web.php index 82532164..b8768421 100644 --- a/system/sections/servers/cssold/web.php +++ b/system/sections/servers/cssold/web.php @@ -78,4 +78,3 @@ $mcache->set('server_web_' . $id, $html->arr['main'], false, 4); } } -?> \ No newline at end of file diff --git a/system/sections/servers/filetp.php b/system/sections/servers/filetp.php index 84aa6a03..f0b34e71 100644 --- a/system/sections/servers/filetp.php +++ b/system/sections/servers/filetp.php @@ -212,4 +212,3 @@ $mcache->set('server_filetp_' . $id, $html->arr['main'], false, 10); } } -?> \ No newline at end of file diff --git a/system/sections/servers/games/copy/check.php b/system/sections/servers/games/copy/check.php index cfade3e8..622a867e 100644 --- a/system/sections/servers/games/copy/check.php +++ b/system/sections/servers/games/copy/check.php @@ -22,4 +22,3 @@ $mcache->delete('server_copy_' . $id); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/games/copy/create.php b/system/sections/servers/games/copy/create.php index 5955c9d4..5e544adf 100644 --- a/system/sections/servers/games/copy/create.php +++ b/system/sections/servers/games/copy/create.php @@ -49,4 +49,3 @@ $mcache->delete('server_copy_' . $id); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/games/copy/fullcopy.php b/system/sections/servers/games/copy/fullcopy.php index 7a88afff..2c22a94a 100644 --- a/system/sections/servers/games/copy/fullcopy.php +++ b/system/sections/servers/games/copy/fullcopy.php @@ -22,4 +22,3 @@ $mcache->delete('server_copy_' . $id); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/games/copy/recfull.php b/system/sections/servers/games/copy/recfull.php index b02f67a6..6b910115 100644 --- a/system/sections/servers/games/copy/recfull.php +++ b/system/sections/servers/games/copy/recfull.php @@ -73,4 +73,3 @@ $sql->query('UPDATE `servers` set `status`="recovery" WHERE `id`="' . $id . '" LIMIT 1'); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/games/copy/recpart.php b/system/sections/servers/games/copy/recpart.php index 6279d976..e293b361 100644 --- a/system/sections/servers/games/copy/recpart.php +++ b/system/sections/servers/games/copy/recpart.php @@ -48,4 +48,3 @@ $sql->query('UPDATE `servers` set `status`="recovery" WHERE `id`="' . $id . '" LIMIT 1'); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/games/copy/remove.php b/system/sections/servers/games/copy/remove.php index bf3cbb87..cec15aa8 100644 --- a/system/sections/servers/games/copy/remove.php +++ b/system/sections/servers/games/copy/remove.php @@ -21,4 +21,3 @@ $mcache->delete('server_copy_' . $id); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/games/owners.php b/system/sections/servers/games/owners.php index d188bfca..13f697b7 100644 --- a/system/sections/servers/games/owners.php +++ b/system/sections/servers/games/owners.php @@ -143,4 +143,3 @@ $html->set('access', $html->arr['access']); $html->set('owners', isset($html->arr['owners']) ? $html->arr['owners'] : 'Для данного сервера совладельцы отсутсвуют.'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/games/plugins/config.php b/system/sections/servers/games/plugins/config.php index 0790e20a..32d1b1ad 100644 --- a/system/sections/servers/games/plugins/config.php +++ b/system/sections/servers/games/plugins/config.php @@ -77,5 +77,3 @@ $html->set('data', htmlspecialchars($ssh->get())); $html->pack('main'); - -?> \ No newline at end of file diff --git a/system/sections/servers/games/plugins/delete.php b/system/sections/servers/games/plugins/delete.php index c66757a5..27de3546 100644 --- a/system/sections/servers/games/plugins/delete.php +++ b/system/sections/servers/games/plugins/delete.php @@ -81,4 +81,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/games/plugins/install.php b/system/sections/servers/games/plugins/install.php index 530701a1..9437eb26 100644 --- a/system/sections/servers/games/plugins/install.php +++ b/system/sections/servers/games/plugins/install.php @@ -127,5 +127,3 @@ sys::outjs(array('s' => 'cfg'), $nmch); sys::outjs(array('s' => 'ok'), $nmch); - -?> \ No newline at end of file diff --git a/system/sections/servers/games/plugins/plugin.php b/system/sections/servers/games/plugins/plugin.php index f32114d6..0b749a02 100644 --- a/system/sections/servers/games/plugins/plugin.php +++ b/system/sections/servers/games/plugins/plugin.php @@ -81,4 +81,3 @@ $mcache->set('server_plugin_' . $pid . $id, $html->arr['main'], false, 60); } -?> \ No newline at end of file diff --git a/system/sections/servers/games/plugins/search.php b/system/sections/servers/games/plugins/search.php index a3899272..3d27a867 100644 --- a/system/sections/servers/games/plugins/search.php +++ b/system/sections/servers/games/plugins/search.php @@ -183,4 +183,3 @@ $mcache->set($mkey, $html->arr['plugins'], false, 15); sys::outjs(array('s' => $html->arr['plugins']), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/games/plugins/update.php b/system/sections/servers/games/plugins/update.php index 1b319eee..fc6d4b17 100644 --- a/system/sections/servers/games/plugins/update.php +++ b/system/sections/servers/games/plugins/update.php @@ -84,5 +84,3 @@ sys::outjs(array('s' => 'cfg'), $nmch); sys::outjs(array('s' => 'ok'), $nmch); - -?> \ No newline at end of file diff --git a/system/sections/servers/games/settings/api.php b/system/sections/servers/games/settings/api.php index b80f66a8..b3635ff7 100644 --- a/system/sections/servers/games/settings/api.php +++ b/system/sections/servers/games/settings/api.php @@ -11,4 +11,3 @@ $mcache->delete('server_settings_' . $id); sys::back($cfg['http'] . 'servers/id/' . $id . '/section/settings'); -?> \ No newline at end of file diff --git a/system/sections/servers/games/settings/crontab.php b/system/sections/servers/games/settings/crontab.php index 375d1f42..00f54527 100644 --- a/system/sections/servers/games/settings/crontab.php +++ b/system/sections/servers/games/settings/crontab.php @@ -111,4 +111,3 @@ $html->set('crontab', isset($html->arr['crontab']) ? $html->arr['crontab'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/games/settings/file.php b/system/sections/servers/games/settings/file.php index c50664bd..8b3646c6 100644 --- a/system/sections/servers/games/settings/file.php +++ b/system/sections/servers/games/settings/file.php @@ -55,4 +55,3 @@ $html->set('data', htmlspecialchars($ssh->get())); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/games/settings/firewall.php b/system/sections/servers/games/settings/firewall.php index acf266cf..32e20408 100644 --- a/system/sections/servers/games/settings/firewall.php +++ b/system/sections/servers/games/settings/firewall.php @@ -33,4 +33,3 @@ $html->set('id', $id); $html->set('firewall', isset($html->arr['firewall']) ? $html->arr['firewall'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/games/settings/pack.php b/system/sections/servers/games/settings/pack.php index b3d9a49c..4e7894e3 100644 --- a/system/sections/servers/games/settings/pack.php +++ b/system/sections/servers/games/settings/pack.php @@ -19,4 +19,3 @@ $sql->query('UPDATE `servers` set `pack`="' . $pack . '" WHERE `id`="' . $id . '" LIMIT 1'); sys::outjs(array('s' => 'ok'), 'server_settings_' . $id); -?> \ No newline at end of file diff --git a/system/sections/servers/games/settings/startlogs.php b/system/sections/servers/games/settings/startlogs.php index d76e65ee..d4b90217 100644 --- a/system/sections/servers/games/settings/startlogs.php +++ b/system/sections/servers/games/settings/startlogs.php @@ -91,4 +91,3 @@ $html->set('logs', isset($html->arr['logs']) ? $html->arr['logs'] : ''); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/servers/games/tarif.php b/system/sections/servers/games/tarif.php index dacc6cd2..c9f36177 100644 --- a/system/sections/servers/games/tarif.php +++ b/system/sections/servers/games/tarif.php @@ -56,4 +56,3 @@ if ($server['port'] != 27015) tarif::address($server, $id); } -?> \ No newline at end of file diff --git a/system/sections/servers/games/tarif/addextend.php b/system/sections/servers/games/tarif/addextend.php index 0e835e5c..27769568 100644 --- a/system/sections/servers/games/tarif/addextend.php +++ b/system/sections/servers/games/tarif/addextend.php @@ -34,4 +34,3 @@ sys::outjs(array('s' => 'ok'), $nmch); } -?> \ No newline at end of file diff --git a/system/sections/servers/games/tarif/address.php b/system/sections/servers/games/tarif/address.php index 89118929..c7e6ea41 100644 --- a/system/sections/servers/games/tarif/address.php +++ b/system/sections/servers/games/tarif/address.php @@ -60,4 +60,3 @@ } sys::outjs(array('s' => $add['price'])); -?> \ No newline at end of file diff --git a/system/sections/servers/games/tarif/extend.php b/system/sections/servers/games/tarif/extend.php index 233ffd5a..1f7112cf 100644 --- a/system/sections/servers/games/tarif/extend.php +++ b/system/sections/servers/games/tarif/extend.php @@ -66,4 +66,3 @@ // Выхлоп цены sys::outjs(array('s' => $sum)); -?> \ No newline at end of file diff --git a/system/sections/servers/games/tarif/slots.php b/system/sections/servers/games/tarif/slots.php index 166dcf8a..e6fc26e9 100644 --- a/system/sections/servers/games/tarif/slots.php +++ b/system/sections/servers/games/tarif/slots.php @@ -116,4 +116,3 @@ // Выхлоп информации sys::outjs(array('s' => 'Цена за дополнительные слоты: ' . $sum . ' ' . $cfg['currency'])); -?> \ No newline at end of file diff --git a/system/sections/servers/games/tarif/unit.php b/system/sections/servers/games/tarif/unit.php index e797ecb6..bdbd6128 100644 --- a/system/sections/servers/games/tarif/unit.php +++ b/system/sections/servers/games/tarif/unit.php @@ -108,4 +108,3 @@ // Выхлоп информации sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')', 'p' => $packs)); -?> \ No newline at end of file diff --git a/system/sections/servers/graph.php b/system/sections/servers/graph.php index 1b630079..60fd31ce 100644 --- a/system/sections/servers/graph.php +++ b/system/sections/servers/graph.php @@ -8,4 +8,3 @@ sys::nav($server, $id, 'graph'); include(sys::route($server, 'graph', $go)); -?> \ No newline at end of file diff --git a/system/sections/servers/index.php b/system/sections/servers/index.php index 886f6779..5a9b11e7 100644 --- a/system/sections/servers/index.php +++ b/system/sections/servers/index.php @@ -8,4 +8,3 @@ sys::nav($server, $id, 'index'); include(SEC . 'servers/' . $server['game'] . '/index.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/list.php b/system/sections/servers/list.php index 33e8a625..50229a60 100644 --- a/system/sections/servers/list.php +++ b/system/sections/servers/list.php @@ -105,4 +105,3 @@ $wait_servers .= $server['id'] . ':false,'; $updates_servers .= 'setTimeout(function() {update_info(\'' . $server['id'] . '\', true)}, 5000); setTimeout(function() {update_status(\'' . $server['id'] . '\', true)}, 10000);'; } -?> \ No newline at end of file diff --git a/system/sections/servers/maps.php b/system/sections/servers/maps.php index daf1c696..eed4b032 100644 --- a/system/sections/servers/maps.php +++ b/system/sections/servers/maps.php @@ -8,4 +8,3 @@ sys::nav($server, $id, 'maps'); include(sys::route($server, 'maps', $go)); -?> \ No newline at end of file diff --git a/system/sections/servers/mc/console.php b/system/sections/servers/mc/console.php index d6b9b2d1..e6e11583 100644 --- a/system/sections/servers/mc/console.php +++ b/system/sections/servers/mc/console.php @@ -60,4 +60,3 @@ $html->get('console', 'sections/servers/' . $server['game']); $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/mc/copy.php b/system/sections/servers/mc/copy.php index 97a5a991..5bbdc1ad 100644 --- a/system/sections/servers/mc/copy.php +++ b/system/sections/servers/mc/copy.php @@ -77,4 +77,3 @@ $mcache->set('server_copy_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/mc/graph.php b/system/sections/servers/mc/graph.php index d78f4a71..5f58ffdc 100644 --- a/system/sections/servers/mc/graph.php +++ b/system/sections/servers/mc/graph.php @@ -19,10 +19,6 @@ exit(file_get_contents(TEMP . (md5($graph['key'] . 'full_' . $time)) . '.png')); } - include(LIB . 'games/graph/pData.php'); - include(LIB . 'games/graph/pDraw.php'); - include(LIB . 'games/graph/pImage.php'); - include(LIB . 'games/graph.php'); graph::full($id, $server['slots_start'], $graph['key'], $time); @@ -65,4 +61,3 @@ $mcache->set('server_graph_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/mc/index.php b/system/sections/servers/mc/index.php index 927b6c5d..4745e4fa 100644 --- a/system/sections/servers/mc/index.php +++ b/system/sections/servers/mc/index.php @@ -41,4 +41,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/mc/owners.php b/system/sections/servers/mc/owners.php index 8c930528..86c99cec 100644 --- a/system/sections/servers/mc/owners.php +++ b/system/sections/servers/mc/owners.php @@ -159,4 +159,3 @@ $mcache->set('server_owners_' . $id, $html->arr['main'], false, 1); } -?> \ No newline at end of file diff --git a/system/sections/servers/mc/plugins.php b/system/sections/servers/mc/plugins.php index b33fd4e8..0b1eee03 100644 --- a/system/sections/servers/mc/plugins.php +++ b/system/sections/servers/mc/plugins.php @@ -146,4 +146,3 @@ $mcache->set('server_plugins_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/mc/settings.php b/system/sections/servers/mc/settings.php index 0380ceeb..a0128674 100644 --- a/system/sections/servers/mc/settings.php +++ b/system/sections/servers/mc/settings.php @@ -66,4 +66,3 @@ $mcache->set('server_settings_' . $id, $html->arr['main'], false, 20); } } -?> \ No newline at end of file diff --git a/system/sections/servers/mc/settings/server.php b/system/sections/servers/mc/settings/server.php index 31a024bf..5c40e98d 100644 --- a/system/sections/servers/mc/settings/server.php +++ b/system/sections/servers/mc/settings/server.php @@ -102,4 +102,3 @@ $html->set('cfg', $html->arr['list']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/mc/settings/start.php b/system/sections/servers/mc/settings/start.php index ce1a87ba..6b9d9f8b 100644 --- a/system/sections/servers/mc/settings/start.php +++ b/system/sections/servers/mc/settings/start.php @@ -42,4 +42,3 @@ $html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots)); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/servers/mc/tarif.php b/system/sections/servers/mc/tarif.php index 0d1405fb..b26da2e8 100644 --- a/system/sections/servers/mc/tarif.php +++ b/system/sections/servers/mc/tarif.php @@ -9,4 +9,3 @@ $aSub = array('extend', 'plan', 'address', 'addextend', 'unit', 'slots'); include(SEC . 'servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/mc/tarif/extend.php b/system/sections/servers/mc/tarif/extend.php index f0089533..d883164c 100644 --- a/system/sections/servers/mc/tarif/extend.php +++ b/system/sections/servers/mc/tarif/extend.php @@ -49,4 +49,3 @@ $days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/mc/tarif/plan.php b/system/sections/servers/mc/tarif/plan.php index 4384490d..5b628512 100644 --- a/system/sections/servers/mc/tarif/plan.php +++ b/system/sections/servers/mc/tarif/plan.php @@ -65,4 +65,3 @@ // Выхлоп информации sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/mc/tarif/slots.php b/system/sections/servers/mc/tarif/slots.php index a19fe03a..ea1d6b0e 100644 --- a/system/sections/servers/mc/tarif/slots.php +++ b/system/sections/servers/mc/tarif/slots.php @@ -149,4 +149,3 @@ // Выхлоп информации sys::outjs(array('s' => 'Цена за дополнительные слоты: ' . $sum . ' ' . $cfg['currency'])); -?> \ No newline at end of file diff --git a/system/sections/servers/mc/tarif/unit.php b/system/sections/servers/mc/tarif/unit.php index 8c73ef32..a8608848 100644 --- a/system/sections/servers/mc/tarif/unit.php +++ b/system/sections/servers/mc/tarif/unit.php @@ -49,4 +49,3 @@ $time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]); include(SEC . 'servers/games/tarif/unit.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/mc/web.php b/system/sections/servers/mc/web.php index 82532164..b8768421 100644 --- a/system/sections/servers/mc/web.php +++ b/system/sections/servers/mc/web.php @@ -78,4 +78,3 @@ $mcache->set('server_web_' . $id, $html->arr['main'], false, 4); } } -?> \ No newline at end of file diff --git a/system/sections/servers/mta/console.php b/system/sections/servers/mta/console.php index 3a95c17f..a5b29eb4 100644 --- a/system/sections/servers/mta/console.php +++ b/system/sections/servers/mta/console.php @@ -60,4 +60,3 @@ $html->get('console', 'sections/servers/' . $server['game']); $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/mta/copy.php b/system/sections/servers/mta/copy.php index 97a5a991..5bbdc1ad 100644 --- a/system/sections/servers/mta/copy.php +++ b/system/sections/servers/mta/copy.php @@ -77,4 +77,3 @@ $mcache->set('server_copy_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/mta/graph.php b/system/sections/servers/mta/graph.php index d78f4a71..5f58ffdc 100644 --- a/system/sections/servers/mta/graph.php +++ b/system/sections/servers/mta/graph.php @@ -19,10 +19,6 @@ exit(file_get_contents(TEMP . (md5($graph['key'] . 'full_' . $time)) . '.png')); } - include(LIB . 'games/graph/pData.php'); - include(LIB . 'games/graph/pDraw.php'); - include(LIB . 'games/graph/pImage.php'); - include(LIB . 'games/graph.php'); graph::full($id, $server['slots_start'], $graph['key'], $time); @@ -65,4 +61,3 @@ $mcache->set('server_graph_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/mta/index.php b/system/sections/servers/mta/index.php index 43aa3d0c..9f946f21 100644 --- a/system/sections/servers/mta/index.php +++ b/system/sections/servers/mta/index.php @@ -41,4 +41,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/mta/owners.php b/system/sections/servers/mta/owners.php index 8c930528..86c99cec 100644 --- a/system/sections/servers/mta/owners.php +++ b/system/sections/servers/mta/owners.php @@ -159,4 +159,3 @@ $mcache->set('server_owners_' . $id, $html->arr['main'], false, 1); } -?> \ No newline at end of file diff --git a/system/sections/servers/mta/plugins.php b/system/sections/servers/mta/plugins.php index b33fd4e8..0b1eee03 100644 --- a/system/sections/servers/mta/plugins.php +++ b/system/sections/servers/mta/plugins.php @@ -146,4 +146,3 @@ $mcache->set('server_plugins_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/mta/settings.php b/system/sections/servers/mta/settings.php index 29556fb7..456ffc6a 100644 --- a/system/sections/servers/mta/settings.php +++ b/system/sections/servers/mta/settings.php @@ -66,4 +66,3 @@ $mcache->set('server_settings_' . $id, $html->arr['main'], false, 20); } } -?> \ No newline at end of file diff --git a/system/sections/servers/mta/settings/start.php b/system/sections/servers/mta/settings/start.php index 12a394ea..b4388a0c 100644 --- a/system/sections/servers/mta/settings/start.php +++ b/system/sections/servers/mta/settings/start.php @@ -47,4 +47,3 @@ $html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots)); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/servers/mta/tarif.php b/system/sections/servers/mta/tarif.php index d12c9861..2b5c5121 100644 --- a/system/sections/servers/mta/tarif.php +++ b/system/sections/servers/mta/tarif.php @@ -9,4 +9,3 @@ $aSub = array('extend', 'address', 'addextend', 'unit', 'slots'); include(SEC . 'servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/mta/tarif/extend.php b/system/sections/servers/mta/tarif/extend.php index f05d263f..55781e89 100644 --- a/system/sections/servers/mta/tarif/extend.php +++ b/system/sections/servers/mta/tarif/extend.php @@ -44,4 +44,3 @@ $days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/mta/tarif/slots.php b/system/sections/servers/mta/tarif/slots.php index ece744d4..37f4ba14 100644 --- a/system/sections/servers/mta/tarif/slots.php +++ b/system/sections/servers/mta/tarif/slots.php @@ -27,4 +27,3 @@ $sum = round(($server['time'] - $start_point) / 86400 * ($tarif['price'] / 30) * $slots, 2); include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/mta/tarif/unit.php b/system/sections/servers/mta/tarif/unit.php index 9cee6f10..b4cddc0b 100644 --- a/system/sections/servers/mta/tarif/unit.php +++ b/system/sections/servers/mta/tarif/unit.php @@ -47,4 +47,3 @@ $time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]); include(SEC . 'servers/games/tarif/unit.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/mta/web.php b/system/sections/servers/mta/web.php index 82532164..b8768421 100644 --- a/system/sections/servers/mta/web.php +++ b/system/sections/servers/mta/web.php @@ -78,4 +78,3 @@ $mcache->set('server_web_' . $id, $html->arr['main'], false, 4); } } -?> \ No newline at end of file diff --git a/system/sections/servers/noaccess.php b/system/sections/servers/noaccess.php index 4028eaa4..f7cfd240 100644 --- a/system/sections/servers/noaccess.php +++ b/system/sections/servers/noaccess.php @@ -21,4 +21,3 @@ } $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/owners.php b/system/sections/servers/owners.php index dd7a0e0f..8be6f51c 100644 --- a/system/sections/servers/owners.php +++ b/system/sections/servers/owners.php @@ -8,4 +8,3 @@ sys::nav($server, $id, 'owners'); include(sys::route($server, 'owners', $go, true)); -?> \ No newline at end of file diff --git a/system/sections/servers/owners_list.php b/system/sections/servers/owners_list.php index d4588d6a..21c385eb 100644 --- a/system/sections/servers/owners_list.php +++ b/system/sections/servers/owners_list.php @@ -114,4 +114,3 @@ $updates_servers .= 'setTimeout(function() {update_info(\'' . $server['id'] . '\', true)}, 5000); setTimeout(function() {update_status(\'' . $server['id'] . '\', true)}, 10000);'; } } -?> \ No newline at end of file diff --git a/system/sections/servers/plugins.php b/system/sections/servers/plugins.php index d368fb27..80aad010 100644 --- a/system/sections/servers/plugins.php +++ b/system/sections/servers/plugins.php @@ -8,4 +8,3 @@ sys::nav($server, $id, 'plugins'); include(sys::route($server, 'plugins', $go)); -?> \ No newline at end of file diff --git a/system/sections/servers/rcon.php b/system/sections/servers/rcon.php index 78f0cae7..ec1598d4 100644 --- a/system/sections/servers/rcon.php +++ b/system/sections/servers/rcon.php @@ -8,4 +8,3 @@ sys::nav($server, $id, 'rcon'); include(sys::route($server, 'rcon', $go)); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/console.php b/system/sections/servers/rust/console.php index 47bae624..ebc87a96 100644 --- a/system/sections/servers/rust/console.php +++ b/system/sections/servers/rust/console.php @@ -60,4 +60,3 @@ $html->get('console', 'sections/servers/' . $server['game']); $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/copy.php b/system/sections/servers/rust/copy.php index 97a5a991..5bbdc1ad 100644 --- a/system/sections/servers/rust/copy.php +++ b/system/sections/servers/rust/copy.php @@ -77,4 +77,3 @@ $mcache->set('server_copy_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/rust/graph.php b/system/sections/servers/rust/graph.php index d78f4a71..5f58ffdc 100644 --- a/system/sections/servers/rust/graph.php +++ b/system/sections/servers/rust/graph.php @@ -19,10 +19,6 @@ exit(file_get_contents(TEMP . (md5($graph['key'] . 'full_' . $time)) . '.png')); } - include(LIB . 'games/graph/pData.php'); - include(LIB . 'games/graph/pDraw.php'); - include(LIB . 'games/graph/pImage.php'); - include(LIB . 'games/graph.php'); graph::full($id, $server['slots_start'], $graph['key'], $time); @@ -65,4 +61,3 @@ $mcache->set('server_graph_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/rust/index.php b/system/sections/servers/rust/index.php index 544e9b67..035155d5 100644 --- a/system/sections/servers/rust/index.php +++ b/system/sections/servers/rust/index.php @@ -41,4 +41,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/maps.php b/system/sections/servers/rust/maps.php index 51d28f8c..671f2fcd 100644 --- a/system/sections/servers/rust/maps.php +++ b/system/sections/servers/rust/maps.php @@ -91,4 +91,3 @@ $mcache->set('server_maps_' . $id, $html->arr['main'], false, 3); } } -?> \ No newline at end of file diff --git a/system/sections/servers/rust/maps/delete.php b/system/sections/servers/rust/maps/delete.php index b92f43eb..f5be33b8 100644 --- a/system/sections/servers/rust/maps/delete.php +++ b/system/sections/servers/rust/maps/delete.php @@ -66,4 +66,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> diff --git a/system/sections/servers/rust/maps/install.php b/system/sections/servers/rust/maps/install.php index b02ad42d..b9601edd 100644 --- a/system/sections/servers/rust/maps/install.php +++ b/system/sections/servers/rust/maps/install.php @@ -52,4 +52,3 @@ } sys::outjs(array('s' => 'ok'), $nmch); -?> diff --git a/system/sections/servers/rust/maps/list.php b/system/sections/servers/rust/maps/list.php index 77e5dcc0..86d2cf36 100644 --- a/system/sections/servers/rust/maps/list.php +++ b/system/sections/servers/rust/maps/list.php @@ -55,7 +55,4 @@ $html->set('maps', isset($html->arr['maps']) ? $html->arr['maps'] : 'К сожалению карты не найдены в базе'); $html->set('amaps', $mapsjs); $html->set('pages', isset($html->arr['pages']) ? $html->arr['pages'] : ''); -$html->set('cdn', $cfg['cdn']); - $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/maps/listing.php b/system/sections/servers/rust/maps/listing.php index 47283d9a..48c567d1 100644 --- a/system/sections/servers/rust/maps/listing.php +++ b/system/sections/servers/rust/maps/listing.php @@ -87,4 +87,3 @@ $html->set('maps', $maps); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/maps/search.php b/system/sections/servers/rust/maps/search.php index 535096fc..68347129 100644 --- a/system/sections/servers/rust/maps/search.php +++ b/system/sections/servers/rust/maps/search.php @@ -56,4 +56,3 @@ $mcache->set($mkey, array('maps' => $html->arr['maps'], 'mapsjs' => $mapsjs), false, 15); sys::outjs(array('maps' => $html->arr['maps'], 'mapsjs' => $mapsjs)); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/owners.php b/system/sections/servers/rust/owners.php index 50ecb1bd..30787266 100644 --- a/system/sections/servers/rust/owners.php +++ b/system/sections/servers/rust/owners.php @@ -162,4 +162,3 @@ $mcache->set('server_owners_' . $id, $html->arr['main'], false, 1); } -?> \ No newline at end of file diff --git a/system/sections/servers/rust/plugins.php b/system/sections/servers/rust/plugins.php index b33fd4e8..0b1eee03 100644 --- a/system/sections/servers/rust/plugins.php +++ b/system/sections/servers/rust/plugins.php @@ -146,4 +146,3 @@ $mcache->set('server_plugins_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/rust/rcon.php b/system/sections/servers/rust/rcon.php index 1a796807..bb3bacdc 100644 --- a/system/sections/servers/rust/rcon.php +++ b/system/sections/servers/rust/rcon.php @@ -48,4 +48,3 @@ $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/settings.php b/system/sections/servers/rust/settings.php index edb7ff00..7a7e40c0 100644 --- a/system/sections/servers/rust/settings.php +++ b/system/sections/servers/rust/settings.php @@ -71,4 +71,3 @@ $mcache->set('server_settings_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/rust/settings/admins.php b/system/sections/servers/rust/settings/admins.php index 16a3d19b..520f8c0d 100644 --- a/system/sections/servers/rust/settings/admins.php +++ b/system/sections/servers/rust/settings/admins.php @@ -107,4 +107,3 @@ $html->set('index', $max['id'] < 1 ? 0 : $max['id']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/settings/bans.php b/system/sections/servers/rust/settings/bans.php index 7171c2fe..bfb80fd4 100644 --- a/system/sections/servers/rust/settings/bans.php +++ b/system/sections/servers/rust/settings/bans.php @@ -151,4 +151,3 @@ $html->set('listip', isset($html->arr['listip']) ? $html->arr['listip'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/settings/debug.php b/system/sections/servers/rust/settings/debug.php index 2677cc0f..ee919e11 100644 --- a/system/sections/servers/rust/settings/debug.php +++ b/system/sections/servers/rust/settings/debug.php @@ -25,4 +25,3 @@ $html->set('log', htmlspecialchars($ssh->get())); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/settings/logs.php b/system/sections/servers/rust/settings/logs.php index 05a1ea3b..311c4b7a 100644 --- a/system/sections/servers/rust/settings/logs.php +++ b/system/sections/servers/rust/settings/logs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/servers/rust/settings/server.php b/system/sections/servers/rust/settings/server.php index 1fc32865..ae4e875e 100644 --- a/system/sections/servers/rust/settings/server.php +++ b/system/sections/servers/rust/settings/server.php @@ -110,4 +110,3 @@ $html->set('other', $other); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/settings/smlogs.php b/system/sections/servers/rust/settings/smlogs.php index bab13c98..77298e94 100644 --- a/system/sections/servers/rust/settings/smlogs.php +++ b/system/sections/servers/rust/settings/smlogs.php @@ -83,4 +83,3 @@ $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/servers/rust/settings/start.php b/system/sections/servers/rust/settings/start.php index ed4671ed..44ba77d7 100644 --- a/system/sections/servers/rust/settings/start.php +++ b/system/sections/servers/rust/settings/start.php @@ -161,4 +161,3 @@ $html->unit('tickrate'); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/tarif.php b/system/sections/servers/rust/tarif.php index 2b7e8c8e..21ab2b1e 100644 --- a/system/sections/servers/rust/tarif.php +++ b/system/sections/servers/rust/tarif.php @@ -9,4 +9,3 @@ $aSub = array('extend', 'plan', 'address', 'addextend', 'unit', 'slots'); include(SEC . 'servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/tarif/extend.php b/system/sections/servers/rust/tarif/extend.php index ff46759c..22f5e417 100644 --- a/system/sections/servers/rust/tarif/extend.php +++ b/system/sections/servers/rust/tarif/extend.php @@ -47,4 +47,3 @@ $days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/tarif/plan.php b/system/sections/servers/rust/tarif/plan.php index aa13dfc0..f50912be 100644 --- a/system/sections/servers/rust/tarif/plan.php +++ b/system/sections/servers/rust/tarif/plan.php @@ -61,4 +61,3 @@ // Выхлоп информации sys::outjs(array('s' => date('d.m.Y - H:i', $time) . ' (' . sys::date('min', $time) . ')'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/tarif/slots.php b/system/sections/servers/rust/tarif/slots.php index e4b82400..4c7e9eb1 100644 --- a/system/sections/servers/rust/tarif/slots.php +++ b/system/sections/servers/rust/tarif/slots.php @@ -30,4 +30,3 @@ $sum = round(($server['time'] - $start_point) / 86400 * ($aPrice[array_search($server['tickrate'], $aTICK)] / 30) * $slots, 2); include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/tarif/unit.php b/system/sections/servers/rust/tarif/unit.php index 9cee6f10..b4cddc0b 100644 --- a/system/sections/servers/rust/tarif/unit.php +++ b/system/sections/servers/rust/tarif/unit.php @@ -47,4 +47,3 @@ $time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]); include(SEC . 'servers/games/tarif/unit.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/rust/web.php b/system/sections/servers/rust/web.php index 82532164..b8768421 100644 --- a/system/sections/servers/rust/web.php +++ b/system/sections/servers/rust/web.php @@ -78,4 +78,3 @@ $mcache->set('server_web_' . $id, $html->arr['main'], false, 4); } } -?> \ No newline at end of file diff --git a/system/sections/servers/samp/console.php b/system/sections/servers/samp/console.php index 08f3de53..7315a9ac 100644 --- a/system/sections/servers/samp/console.php +++ b/system/sections/servers/samp/console.php @@ -40,4 +40,3 @@ $html->get('console', 'sections/servers/' . $server['game']); $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/samp/copy.php b/system/sections/servers/samp/copy.php index 97a5a991..5bbdc1ad 100644 --- a/system/sections/servers/samp/copy.php +++ b/system/sections/servers/samp/copy.php @@ -77,4 +77,3 @@ $mcache->set('server_copy_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/samp/graph.php b/system/sections/servers/samp/graph.php index d78f4a71..5f58ffdc 100644 --- a/system/sections/servers/samp/graph.php +++ b/system/sections/servers/samp/graph.php @@ -19,10 +19,6 @@ exit(file_get_contents(TEMP . (md5($graph['key'] . 'full_' . $time)) . '.png')); } - include(LIB . 'games/graph/pData.php'); - include(LIB . 'games/graph/pDraw.php'); - include(LIB . 'games/graph/pImage.php'); - include(LIB . 'games/graph.php'); graph::full($id, $server['slots_start'], $graph['key'], $time); @@ -65,4 +61,3 @@ $mcache->set('server_graph_' . $id, $html->arr['main'], false, 4); } -?> \ No newline at end of file diff --git a/system/sections/servers/samp/index.php b/system/sections/servers/samp/index.php index 43aa3d0c..9f946f21 100644 --- a/system/sections/servers/samp/index.php +++ b/system/sections/servers/samp/index.php @@ -41,4 +41,3 @@ $html->set('btn', $btn); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/samp/owners.php b/system/sections/servers/samp/owners.php index 8c930528..86c99cec 100644 --- a/system/sections/servers/samp/owners.php +++ b/system/sections/servers/samp/owners.php @@ -159,4 +159,3 @@ $mcache->set('server_owners_' . $id, $html->arr['main'], false, 1); } -?> \ No newline at end of file diff --git a/system/sections/servers/samp/plugins.php b/system/sections/servers/samp/plugins.php index b33fd4e8..0b1eee03 100644 --- a/system/sections/servers/samp/plugins.php +++ b/system/sections/servers/samp/plugins.php @@ -146,4 +146,3 @@ $mcache->set('server_plugins_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/samp/rcon.php b/system/sections/servers/samp/rcon.php index 1a796807..bb3bacdc 100644 --- a/system/sections/servers/samp/rcon.php +++ b/system/sections/servers/samp/rcon.php @@ -48,4 +48,3 @@ $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/samp/settings.php b/system/sections/servers/samp/settings.php index fae28918..254a0913 100644 --- a/system/sections/servers/samp/settings.php +++ b/system/sections/servers/samp/settings.php @@ -66,4 +66,3 @@ $mcache->set('server_settings_' . $id, $html->arr['main'], false, 60); } } -?> \ No newline at end of file diff --git a/system/sections/servers/samp/settings/server.php b/system/sections/servers/samp/settings/server.php index 77a9757b..c54fccd5 100644 --- a/system/sections/servers/samp/settings/server.php +++ b/system/sections/servers/samp/settings/server.php @@ -112,4 +112,3 @@ $html->set('other', $other); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/servers/samp/settings/start.php b/system/sections/servers/samp/settings/start.php index 8642ec65..d45dbf79 100644 --- a/system/sections/servers/samp/settings/start.php +++ b/system/sections/servers/samp/settings/start.php @@ -40,4 +40,3 @@ $html->set('slots', str_replace('"' . $server['slots_start'] . '"', '"' . $server['slots_start'] . '" selected="select"', $slots)); $html->pack('start'); -?> \ No newline at end of file diff --git a/system/sections/servers/samp/tarif.php b/system/sections/servers/samp/tarif.php index d12c9861..2b5c5121 100644 --- a/system/sections/servers/samp/tarif.php +++ b/system/sections/servers/samp/tarif.php @@ -9,4 +9,3 @@ $aSub = array('extend', 'address', 'addextend', 'unit', 'slots'); include(SEC . 'servers/games/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/samp/tarif/extend.php b/system/sections/servers/samp/tarif/extend.php index f05d263f..55781e89 100644 --- a/system/sections/servers/samp/tarif/extend.php +++ b/system/sections/servers/samp/tarif/extend.php @@ -44,4 +44,3 @@ $days = params::$aDayMonth[date('n', $server['time'])] == $aData['time'] ? 'месяц' : games::parse_day($aData['time'], true); include(SEC . 'servers/games/tarif/extend.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/samp/tarif/slots.php b/system/sections/servers/samp/tarif/slots.php index ece744d4..37f4ba14 100644 --- a/system/sections/servers/samp/tarif/slots.php +++ b/system/sections/servers/samp/tarif/slots.php @@ -27,4 +27,3 @@ $sum = round(($server['time'] - $start_point) / 86400 * ($tarif['price'] / 30) * $slots, 2); include(SEC . 'servers/games/tarif/slots.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/samp/tarif/unit.php b/system/sections/servers/samp/tarif/unit.php index 9cee6f10..b4cddc0b 100644 --- a/system/sections/servers/samp/tarif/unit.php +++ b/system/sections/servers/samp/tarif/unit.php @@ -47,4 +47,3 @@ $time = mktime($aDate[0], $aDate[1], $aDate[2], $aDate[4], $aDate[3], $aDate[5]); include(SEC . 'servers/games/tarif/unit.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/samp/web.php b/system/sections/servers/samp/web.php index 82532164..b8768421 100644 --- a/system/sections/servers/samp/web.php +++ b/system/sections/servers/samp/web.php @@ -78,4 +78,3 @@ $mcache->set('server_web_' . $id, $html->arr['main'], false, 4); } } -?> \ No newline at end of file diff --git a/system/sections/servers/scan.php b/system/sections/servers/scan.php index 3a3a1f9f..64a77b21 100644 --- a/system/sections/servers/scan.php +++ b/system/sections/servers/scan.php @@ -24,4 +24,3 @@ sys::outjs(scan::status($id)); exit; -?> \ No newline at end of file diff --git a/system/sections/servers/settings.php b/system/sections/servers/settings.php index 29b61df0..aebde93f 100644 --- a/system/sections/servers/settings.php +++ b/system/sections/servers/settings.php @@ -8,4 +8,3 @@ sys::nav($server, $id, 'settings'); include(sys::route($server, 'settings', $go)); -?> \ No newline at end of file diff --git a/system/sections/servers/tarif.php b/system/sections/servers/tarif.php index 35998d67..68ebebef 100644 --- a/system/sections/servers/tarif.php +++ b/system/sections/servers/tarif.php @@ -14,4 +14,3 @@ include(SEC . 'servers/noaccess.php'); } else include(SEC . 'servers/' . $server['game'] . '/tarif.php'); -?> \ No newline at end of file diff --git a/system/sections/servers/web.php b/system/sections/servers/web.php index 6214535a..3566c676 100644 --- a/system/sections/servers/web.php +++ b/system/sections/servers/web.php @@ -8,4 +8,3 @@ sys::nav($server, $id, 'web'); include(sys::route($server, 'web', $go)); -?> \ No newline at end of file diff --git a/system/sections/services/control.php b/system/sections/services/control.php index b40ef2a6..df66acb2 100644 --- a/system/sections/services/control.php +++ b/system/sections/services/control.php @@ -108,4 +108,3 @@ } else $html->unit('settlement_period', false, true); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/services/crmp.php b/system/sections/services/crmp.php index f952145b..18ce428d 100644 --- a/system/sections/services/crmp.php +++ b/system/sections/services/crmp.php @@ -134,4 +134,3 @@ $html->unit('informer', true, true); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/services/cs.php b/system/sections/services/cs.php index f368fee5..3d60c8f9 100644 --- a/system/sections/services/cs.php +++ b/system/sections/services/cs.php @@ -142,4 +142,3 @@ $html->unit('informer', true, true); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/services/cs2.php b/system/sections/services/cs2.php index 0b09edc6..7885de78 100644 --- a/system/sections/services/cs2.php +++ b/system/sections/services/cs2.php @@ -142,4 +142,3 @@ $html->unit('informer', true, true); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/services/csgo.php b/system/sections/services/csgo.php index 0b09edc6..7885de78 100644 --- a/system/sections/services/csgo.php +++ b/system/sections/services/csgo.php @@ -142,4 +142,3 @@ $html->unit('informer', true, true); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/services/css.php b/system/sections/services/css.php index 0b09edc6..7885de78 100644 --- a/system/sections/services/css.php +++ b/system/sections/services/css.php @@ -142,4 +142,3 @@ $html->unit('informer', true, true); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/services/cssold.php b/system/sections/services/cssold.php index efbfd31d..cf35bb86 100644 --- a/system/sections/services/cssold.php +++ b/system/sections/services/cssold.php @@ -145,4 +145,3 @@ $html->unit('informer', true, true); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/services/mc.php b/system/sections/services/mc.php index 60ce22fd..8ccc670b 100644 --- a/system/sections/services/mc.php +++ b/system/sections/services/mc.php @@ -142,4 +142,3 @@ $html->unit('informer', true, true); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/services/mta.php b/system/sections/services/mta.php index f952145b..18ce428d 100644 --- a/system/sections/services/mta.php +++ b/system/sections/services/mta.php @@ -134,4 +134,3 @@ $html->unit('informer', true, true); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/services/privileges.php b/system/sections/services/privileges.php index 2d76378c..b72dc8b9 100644 --- a/system/sections/services/privileges.php +++ b/system/sections/services/privileges.php @@ -214,4 +214,3 @@ $html->get('index', 'sections/services/privileges'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/services/rust.php b/system/sections/services/rust.php index 0b09edc6..7885de78 100644 --- a/system/sections/services/rust.php +++ b/system/sections/services/rust.php @@ -142,4 +142,3 @@ $html->unit('informer', true, true); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/services/samp.php b/system/sections/services/samp.php index f952145b..18ce428d 100644 --- a/system/sections/services/samp.php +++ b/system/sections/services/samp.php @@ -134,4 +134,3 @@ $html->unit('informer', true, true); $html->pack('main'); } -?> \ No newline at end of file diff --git a/system/sections/user/auth.php b/system/sections/user/auth.php index 041cd997..c8e610b5 100644 --- a/system/sections/user/auth.php +++ b/system/sections/user/auth.php @@ -5,10 +5,6 @@ // Проверка на авторизацию sys::auth(); -sys::cookie('egp_login', 'quit', -1); -sys::cookie('egp_passwd', 'quit', -1); -sys::cookie('egp_authkeycheck', 'quit', -1); - // Генерация новой капчи if (isset($url['captcha'])) sys::captcha('auth', $uip); @@ -29,7 +25,7 @@ $aData = array(); $aData['login'] = isset($_POST['login']) ? $_POST['login'] : ''; - $aData['passwd'] = isset($_POST['passwd']) ? sys::passwdkey($_POST['passwd']) : ''; + $aData['passwd'] = isset($_POST['passwd']) ? $_POST['passwd'] : ''; // Проверка входных данных foreach ($aData as $val) @@ -54,12 +50,16 @@ $sql_q = '`mail`'; // Проверка существования пользователя - $sql->query('SELECT `id`, `login`, `mail`, `security_ip`, `security_code` FROM `users` WHERE ' . $sql_q . '="' . $aData['login'] . '" AND `passwd`="' . $aData['passwd'] . '" LIMIT 1'); + $sql->query('SELECT `id`, `login`, `mail`, `security_ip`, `security_code`, `passwd` FROM `users` WHERE ' . $sql_q . '="' . $aData['login'] . '" LIMIT 1'); if (!$sql->num()) sys::outjs(array('e' => sys::text('input', 'auth')), $nmch); $user = $sql->get(); + // Проверка пароля + if (!sys::passwdverify($aData['passwd'], $user['passwd'])) + sys::outjs(array('e' => sys::text('input', 'auth')), $nmch); + $subnetwork = sys::whois($uip); // Если включена защита по ip @@ -107,10 +107,8 @@ // Логирование ip $sql->query('INSERT INTO `auth` set `user`="' . $user['id'] . '", `ip`="' . $uip . '", `date`="' . $start_point . '", `browser`="' . sys::hb64($_SERVER['HTTP_USER_AGENT']) . '"'); - // Запись cookie пользователю - sys::cookie('egp_login', $user['login'], 14); - sys::cookie('egp_passwd', $aData['passwd'], 14); - sys::cookie('egp_authkeycheck', md5($user['login'] . $uip . $aData['passwd']), 14); + // Запись сессии пользователя + $_SESSION['user_id'] = $user['id']; // Выхлоп удачной авторизации sys::outjs(array('s' => 'ok'), $nmch); @@ -118,4 +116,3 @@ $html->get('auth', 'sections/user'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/user/lk.php b/system/sections/user/lk.php index 9bf039ee..d7e7a1ab 100644 --- a/system/sections/user/lk.php +++ b/system/sections/user/lk.php @@ -31,4 +31,3 @@ include(SEC . 'user/lk/' . $url['subsection'] . '.php'); } else include(ENG . '404.php'); -?> \ No newline at end of file diff --git a/system/sections/user/lk/action.php b/system/sections/user/lk/action.php index 7b2ce5b8..3f44bfc3 100644 --- a/system/sections/user/lk/action.php +++ b/system/sections/user/lk/action.php @@ -42,15 +42,8 @@ $passwd = sys::passwdkey($passwd); - // Обновление пароля в базе, если он не совпадает с текущим - if ($auth_data['passwd'] != $passwd) { - $sql->query('UPDATE `users` set `passwd`="' . $passwd . '" WHERE `id`="' . $user['id'] . '" LIMIT 1'); - - // Обновление cookie - sys::cookie('login', $user['login'], 14); - sys::cookie('passwd', $passwd, 14); - sys::cookie('authkeycheck', md5($user['login'] . $_SERVER['REMOTE_ADDR'] . $passwd), 14); - } + // Обновление пароля в базе + $sql->query('UPDATE `users` set `passwd`="' . $passwd . '" WHERE `id`="' . $user['id'] . '" LIMIT 1'); // Выхлоп удачного выполнения операции sys::outjs(array('s' => 'ok'), $name_mcache); @@ -166,7 +159,7 @@ $wmr = isset($_POST['wmr']) ? $_POST['wmr'] : ''; // Проверка наличия указанного кошелька - if (isset($user['wmr']{0}) and in_array($user['wmr']{0}, array('R', 'Z', 'U'))) + if (isset($user['wmr'][0]) and in_array($user['wmr'][0], array('R', 'Z', 'U'))) sys::outjs(array('e' => sys::text('input', 'wmr_confirm')), $name_mcache); if (sys::valid($wmr, 'wm')) @@ -179,4 +172,3 @@ sys::outjs(array('s' => 'ok'), $name_mcache); } } -?> \ No newline at end of file diff --git a/system/sections/user/lk/auth.php b/system/sections/user/lk/auth.php index ed8ff981..49b9b309 100644 --- a/system/sections/user/lk/auth.php +++ b/system/sections/user/lk/auth.php @@ -30,4 +30,3 @@ $html->set('auth', isset($html->arr['auth']) ? $html->arr['auth'] : '', true); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/user/lk/cashback.php b/system/sections/user/lk/cashback.php index e99602f7..3af795bf 100644 --- a/system/sections/user/lk/cashback.php +++ b/system/sections/user/lk/cashback.php @@ -116,4 +116,3 @@ $sql->query('INSERT INTO `cashback` set `user`="' . $user['id'] . '", `purse`="' . $purse[$aData['purse']] . '", `money`="' . $aData['sum'] . '", `date`="' . $start_point . '", `status`="1"'); sys::outjs(array('s' => 'Заявка на вывод средств была успешно создана'), $name_mcache); -?> \ No newline at end of file diff --git a/system/sections/user/lk/index.php b/system/sections/user/lk/index.php index 892dc8d9..b1632137 100644 --- a/system/sections/user/lk/index.php +++ b/system/sections/user/lk/index.php @@ -77,4 +77,3 @@ $html->unit('wmr', false, true); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/user/lk/logs.php b/system/sections/user/lk/logs.php index 1df4ddbf..52d1ddf5 100644 --- a/system/sections/user/lk/logs.php +++ b/system/sections/user/lk/logs.php @@ -16,4 +16,3 @@ $html->set('logs', isset($html->arr['logs']) ? $html->arr['logs'] : 'Нет логов операций', true); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/user/lk/security.php b/system/sections/user/lk/security.php index dd7f190b..0149a545 100644 --- a/system/sections/user/lk/security.php +++ b/system/sections/user/lk/security.php @@ -149,4 +149,3 @@ $html->unit('security_code', false, true); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/user/lk/settings.php b/system/sections/user/lk/settings.php index e9cf08e1..36635c53 100644 --- a/system/sections/user/lk/settings.php +++ b/system/sections/user/lk/settings.php @@ -56,4 +56,3 @@ $html->unit('notice_help'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/user/quit.php b/system/sections/user/quit.php index 94f199a3..f704936c 100644 --- a/system/sections/user/quit.php +++ b/system/sections/user/quit.php @@ -5,13 +5,9 @@ // Проверка на авторизацию sys::noauth($auth, $go); -sys::cookie('egp_login', 'quit', -1); -sys::cookie('egp_passwd', 'quit', -1); -sys::cookie('egp_authkeycheck', 'quit', -1); +session_unset(); // Обновление активности $sql->query('UPDATE `users` set `time`="' . ($start_point - 10) . '" WHERE `id`="' . $user['id'] . '" LIMIT 1'); -sys::users($users, $user, $authkey, true); sys::back($cfg['http']); -?> \ No newline at end of file diff --git a/system/sections/user/recovery.php b/system/sections/user/recovery.php index be94897f..89cb20db 100644 --- a/system/sections/user/recovery.php +++ b/system/sections/user/recovery.php @@ -50,7 +50,7 @@ $user = $sql->get(); - $link = $device == '!mobile' ? 'user/section/recovery/confirm/' : 'recovery/confirm/'; + $link = 'user/section/recovery/confirm/'; // Проверка подачи запроса на восстановление $sql->query('SELECT `id`, `key` FROM `recovery` WHERE `user`="' . $user['id'] . '" LIMIT 1'); @@ -112,4 +112,3 @@ $html->get('recovery', 'sections/user'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/user/replenish.php b/system/sections/user/replenish.php index 99521aac..05188cce 100644 --- a/system/sections/user/replenish.php +++ b/system/sections/user/replenish.php @@ -25,4 +25,3 @@ $html->set('cur', $cfg['currency']); $html->set('logs', isset($html->arr['logs']) ? $html->arr['logs'] : 'Нет логов операций', true); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/user/signup.php b/system/sections/user/signup.php index 197b612a..7cf24b67 100644 --- a/system/sections/user/signup.php +++ b/system/sections/user/signup.php @@ -144,8 +144,8 @@ $aNData['passwd'] = sys::passwd(10); // Реферал - if (isset($_COOKIE['part'])) - $part = ', `part`="' . sys::int($_COOKIE['part']) . '"'; + if (isset($_SESSION['referrer'])) + $part = ', `part`="' . sys::int($_SESSION['referrer']) . '"'; // Запись данных в базу $sql->query('INSERT INTO `users` set ' @@ -200,4 +200,3 @@ $html->set('inputsjs', $inputsjs); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/aes/free/connect.php b/system/sections/web/aes/free/connect.php index aa1b7eec..15f51f82 100644 --- a/system/sections/web/aes/free/connect.php +++ b/system/sections/web/aes/free/connect.php @@ -27,4 +27,3 @@ $aData['orsql'] = array(); web::connect($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/aes/free/delete.php b/system/sections/web/aes/free/delete.php index b5bc45bf..c47d3434 100644 --- a/system/sections/web/aes/free/delete.php +++ b/system/sections/web/aes/free/delete.php @@ -16,4 +16,3 @@ ); web::delete($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/aes/free/install.php b/system/sections/web/aes/free/install.php index 65fd75e7..af24e13a 100644 --- a/system/sections/web/aes/free/install.php +++ b/system/sections/web/aes/free/install.php @@ -71,4 +71,3 @@ $html->set('domains', $domains); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/aes/free/manage.php b/system/sections/web/aes/free/manage.php index 9d7a2870..12681c41 100644 --- a/system/sections/web/aes/free/manage.php +++ b/system/sections/web/aes/free/manage.php @@ -26,4 +26,3 @@ $html->unit('update'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/aes/free/update.php b/system/sections/web/aes/free/update.php index 07b21abe..0565707c 100644 --- a/system/sections/web/aes/free/update.php +++ b/system/sections/web/aes/free/update.php @@ -60,4 +60,3 @@ $sql->query('UPDATE `web` set `update`="' . $start_point . '" WHERE `id`="' . $web['id'] . '" LIMIT 1'); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/amxbans/free/connect.php b/system/sections/web/amxbans/free/connect.php index 6f6354d8..a185338a 100644 --- a/system/sections/web/amxbans/free/connect.php +++ b/system/sections/web/amxbans/free/connect.php @@ -19,4 +19,3 @@ $aData['orsql'] = array(); web::connect($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/amxbans/free/delete.php b/system/sections/web/amxbans/free/delete.php index b5bc45bf..c47d3434 100644 --- a/system/sections/web/amxbans/free/delete.php +++ b/system/sections/web/amxbans/free/delete.php @@ -16,4 +16,3 @@ ); web::delete($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/amxbans/free/install.php b/system/sections/web/amxbans/free/install.php index 6b4dd6f2..71ae72cf 100644 --- a/system/sections/web/amxbans/free/install.php +++ b/system/sections/web/amxbans/free/install.php @@ -56,4 +56,3 @@ $html->set('domains', $domains); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/amxbans/free/manage.php b/system/sections/web/amxbans/free/manage.php index 80b3a294..4f0664e1 100644 --- a/system/sections/web/amxbans/free/manage.php +++ b/system/sections/web/amxbans/free/manage.php @@ -53,4 +53,3 @@ $html->unit('update'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/amxbans/free/passwd.php b/system/sections/web/amxbans/free/passwd.php index 20702749..07038ca7 100644 --- a/system/sections/web/amxbans/free/passwd.php +++ b/system/sections/web/amxbans/free/passwd.php @@ -13,4 +13,3 @@ ); web::passwd($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/amxbans/free/update.php b/system/sections/web/amxbans/free/update.php index b8aa1252..d914cae7 100644 --- a/system/sections/web/amxbans/free/update.php +++ b/system/sections/web/amxbans/free/update.php @@ -13,4 +13,3 @@ ); web::update($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/astats/free/connect.php b/system/sections/web/astats/free/connect.php index 8faebe73..a46a520d 100644 --- a/system/sections/web/astats/free/connect.php +++ b/system/sections/web/astats/free/connect.php @@ -92,4 +92,3 @@ unlink($temp); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/astats/free/delete.php b/system/sections/web/astats/free/delete.php index b5bc45bf..c47d3434 100644 --- a/system/sections/web/astats/free/delete.php +++ b/system/sections/web/astats/free/delete.php @@ -16,4 +16,3 @@ ); web::delete($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/astats/free/install.php b/system/sections/web/astats/free/install.php index cafc19ea..76d80c04 100644 --- a/system/sections/web/astats/free/install.php +++ b/system/sections/web/astats/free/install.php @@ -43,4 +43,3 @@ $html->set('domains', $domains); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/astats/free/manage.php b/system/sections/web/astats/free/manage.php index 80b3a294..4f0664e1 100644 --- a/system/sections/web/astats/free/manage.php +++ b/system/sections/web/astats/free/manage.php @@ -53,4 +53,3 @@ $html->unit('update'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/astats/free/update.php b/system/sections/web/astats/free/update.php index b8aa1252..d914cae7 100644 --- a/system/sections/web/astats/free/update.php +++ b/system/sections/web/astats/free/update.php @@ -13,4 +13,3 @@ ); web::update($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/bp/free/delete.php b/system/sections/web/bp/free/delete.php index 7cb00a80..3e785685 100644 --- a/system/sections/web/bp/free/delete.php +++ b/system/sections/web/bp/free/delete.php @@ -16,4 +16,3 @@ ); web::delete($aData, $name_mcache); -?> \ No newline at end of file diff --git a/system/sections/web/bp/free/install.php b/system/sections/web/bp/free/install.php index 9843c5d4..f03057c7 100644 --- a/system/sections/web/bp/free/install.php +++ b/system/sections/web/bp/free/install.php @@ -98,4 +98,3 @@ $html->set('domains', $domains); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/bp/free/manage.php b/system/sections/web/bp/free/manage.php index 83107a10..766341dc 100644 --- a/system/sections/web/bp/free/manage.php +++ b/system/sections/web/bp/free/manage.php @@ -36,4 +36,3 @@ $html->unit('update'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/bp/free/settings.php b/system/sections/web/bp/free/settings.php index e8c27f98..10539e6d 100644 --- a/system/sections/web/bp/free/settings.php +++ b/system/sections/web/bp/free/settings.php @@ -2,9 +2,21 @@ if (!DEFINED('EGP')) exit(header('Refresh: 0; URL=http://' . $_SERVER['HTTP_HOST'] . '/404')); -@ini_set('display_errors', TRUE); -@ini_set('html_errors', TRUE); -@ini_set('error_reporting', E_ALL); +// Загружаем .env +$dotenv = new Symfony\Component\Dotenv\Dotenv(); +$dotenv->load(ROOT . '/.env'); + +if ($_ENV['RUN_MODE'] === 'dev') { + // Включение отображения ошибок в режиме разработки + ini_set('display_errors', TRUE); + ini_set('html_errors', TRUE); + ini_set('error_reporting', E_ALL); +} else { + // Отключение отображения ошибок в продакшене + ini_set('display_errors', FALSE); + ini_set('html_errors', FALSE); + ini_set('error_reporting', 0); +} switch ($aWebInstall[$server['game']][$url['subsection']]) { case 'server': @@ -133,4 +145,3 @@ 'bp_wmr' => $aData['$purse'], 'bp_sign_key' => $aData['$secret_key'], 'bp_webmoney' => $webmoney), $name_mcache); -?> \ No newline at end of file diff --git a/system/sections/web/csbans/free/connect.php b/system/sections/web/csbans/free/connect.php index 6f6354d8..a185338a 100644 --- a/system/sections/web/csbans/free/connect.php +++ b/system/sections/web/csbans/free/connect.php @@ -19,4 +19,3 @@ $aData['orsql'] = array(); web::connect($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/csbans/free/delete.php b/system/sections/web/csbans/free/delete.php index b5bc45bf..c47d3434 100644 --- a/system/sections/web/csbans/free/delete.php +++ b/system/sections/web/csbans/free/delete.php @@ -16,4 +16,3 @@ ); web::delete($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/csbans/free/install.php b/system/sections/web/csbans/free/install.php index 6b4dd6f2..71ae72cf 100644 --- a/system/sections/web/csbans/free/install.php +++ b/system/sections/web/csbans/free/install.php @@ -56,4 +56,3 @@ $html->set('domains', $domains); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/csbans/free/manage.php b/system/sections/web/csbans/free/manage.php index 80b3a294..4f0664e1 100644 --- a/system/sections/web/csbans/free/manage.php +++ b/system/sections/web/csbans/free/manage.php @@ -53,4 +53,3 @@ $html->unit('update'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/csbans/free/passwd.php b/system/sections/web/csbans/free/passwd.php index 20702749..07038ca7 100644 --- a/system/sections/web/csbans/free/passwd.php +++ b/system/sections/web/csbans/free/passwd.php @@ -13,4 +13,3 @@ ); web::passwd($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/csbans/free/update.php b/system/sections/web/csbans/free/update.php index b8aa1252..d914cae7 100644 --- a/system/sections/web/csbans/free/update.php +++ b/system/sections/web/csbans/free/update.php @@ -13,4 +13,3 @@ ); web::update($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/csstats/free/connect.php b/system/sections/web/csstats/free/connect.php index aa1b7eec..15f51f82 100644 --- a/system/sections/web/csstats/free/connect.php +++ b/system/sections/web/csstats/free/connect.php @@ -27,4 +27,3 @@ $aData['orsql'] = array(); web::connect($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/csstats/free/delete.php b/system/sections/web/csstats/free/delete.php index b5bc45bf..c47d3434 100644 --- a/system/sections/web/csstats/free/delete.php +++ b/system/sections/web/csstats/free/delete.php @@ -16,4 +16,3 @@ ); web::delete($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/csstats/free/install.php b/system/sections/web/csstats/free/install.php index 65fd75e7..af24e13a 100644 --- a/system/sections/web/csstats/free/install.php +++ b/system/sections/web/csstats/free/install.php @@ -71,4 +71,3 @@ $html->set('domains', $domains); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/csstats/free/manage.php b/system/sections/web/csstats/free/manage.php index 9d7a2870..12681c41 100644 --- a/system/sections/web/csstats/free/manage.php +++ b/system/sections/web/csstats/free/manage.php @@ -26,4 +26,3 @@ $html->unit('update'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/csstats/free/update.php b/system/sections/web/csstats/free/update.php index 07b21abe..0565707c 100644 --- a/system/sections/web/csstats/free/update.php +++ b/system/sections/web/csstats/free/update.php @@ -60,4 +60,3 @@ $sql->query('UPDATE `web` set `update`="' . $start_point . '" WHERE `id`="' . $web['id'] . '" LIMIT 1'); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/hosting/free/delete.php b/system/sections/web/hosting/free/delete.php index 91f9daa7..19191e04 100644 --- a/system/sections/web/hosting/free/delete.php +++ b/system/sections/web/hosting/free/delete.php @@ -38,4 +38,3 @@ $sql->query('DELETE FROM `web` WHERE `id`="' . $web['id'] . '" LIMIT 1'); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/hosting/free/install.php b/system/sections/web/hosting/free/install.php index 88f2bf55..746bee20 100644 --- a/system/sections/web/hosting/free/install.php +++ b/system/sections/web/hosting/free/install.php @@ -152,4 +152,3 @@ $html->set('id', $id); $html->set('domains', $domains); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/hosting/free/manage.php b/system/sections/web/hosting/free/manage.php index 92634988..28ec271b 100644 --- a/system/sections/web/hosting/free/manage.php +++ b/system/sections/web/hosting/free/manage.php @@ -48,4 +48,3 @@ $html->set('date', sys::today($web['date'])); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/hosting/free/passwd.php b/system/sections/web/hosting/free/passwd.php index a0ed945b..20f51354 100644 --- a/system/sections/web/hosting/free/passwd.php +++ b/system/sections/web/hosting/free/passwd.php @@ -48,4 +48,3 @@ $sql->query('UPDATE `web` set `passwd`="' . $passwd . '" WHERE `id`="' . $web['id'] . '" LIMIT 1'); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/mysql/free/delete.php b/system/sections/web/mysql/free/delete.php index 972b2dc9..a33e2670 100644 --- a/system/sections/web/mysql/free/delete.php +++ b/system/sections/web/mysql/free/delete.php @@ -50,4 +50,3 @@ $sql->query('DELETE FROM `web` WHERE `id`="' . $web['id'] . '" LIMIT 1'); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/mysql/free/install.php b/system/sections/web/mysql/free/install.php index f78f1935..165bbd1b 100644 --- a/system/sections/web/mysql/free/install.php +++ b/system/sections/web/mysql/free/install.php @@ -92,4 +92,3 @@ $html->set('id', $id); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/mysql/free/manage.php b/system/sections/web/mysql/free/manage.php index 1aeb0c5b..ec17886a 100644 --- a/system/sections/web/mysql/free/manage.php +++ b/system/sections/web/mysql/free/manage.php @@ -35,4 +35,3 @@ $html->set('passwd', $web['passwd']); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/mysql/free/passwd.php b/system/sections/web/mysql/free/passwd.php index d0988ba0..f20711ec 100644 --- a/system/sections/web/mysql/free/passwd.php +++ b/system/sections/web/mysql/free/passwd.php @@ -48,4 +48,3 @@ $sql->query('UPDATE `web` set `passwd`="' . $passwd . '" WHERE `id`="' . $web['id'] . '" LIMIT 1'); sys::outjs(array('s' => 'ok'), $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/sourcebans/free/connect.php b/system/sections/web/sourcebans/free/connect.php index 09d000c3..bbc9f2af 100644 --- a/system/sections/web/sourcebans/free/connect.php +++ b/system/sections/web/sourcebans/free/connect.php @@ -19,4 +19,3 @@ $aData['orsql'] = array(); web::connect($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/sourcebans/free/delete.php b/system/sections/web/sourcebans/free/delete.php index b5bc45bf..c47d3434 100644 --- a/system/sections/web/sourcebans/free/delete.php +++ b/system/sections/web/sourcebans/free/delete.php @@ -16,4 +16,3 @@ ); web::delete($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/sourcebans/free/install.php b/system/sections/web/sourcebans/free/install.php index c2354be1..29bbdb4e 100644 --- a/system/sections/web/sourcebans/free/install.php +++ b/system/sections/web/sourcebans/free/install.php @@ -77,4 +77,3 @@ $html->set('domains', $domains); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/sourcebans/free/manage.php b/system/sections/web/sourcebans/free/manage.php index 169a10f6..0a61b276 100644 --- a/system/sections/web/sourcebans/free/manage.php +++ b/system/sections/web/sourcebans/free/manage.php @@ -53,4 +53,3 @@ $html->unit('update'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/sourcebans/free/passwd.php b/system/sections/web/sourcebans/free/passwd.php index 20702749..07038ca7 100644 --- a/system/sections/web/sourcebans/free/passwd.php +++ b/system/sections/web/sourcebans/free/passwd.php @@ -13,4 +13,3 @@ ); web::passwd($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/sourcebans/free/update.php b/system/sections/web/sourcebans/free/update.php index b8aa1252..d914cae7 100644 --- a/system/sections/web/sourcebans/free/update.php +++ b/system/sections/web/sourcebans/free/update.php @@ -13,4 +13,3 @@ ); web::update($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/superban/free/connect.php b/system/sections/web/superban/free/connect.php index 6f6354d8..a185338a 100644 --- a/system/sections/web/superban/free/connect.php +++ b/system/sections/web/superban/free/connect.php @@ -19,4 +19,3 @@ $aData['orsql'] = array(); web::connect($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/superban/free/delete.php b/system/sections/web/superban/free/delete.php index b5bc45bf..c47d3434 100644 --- a/system/sections/web/superban/free/delete.php +++ b/system/sections/web/superban/free/delete.php @@ -16,4 +16,3 @@ ); web::delete($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/superban/free/install.php b/system/sections/web/superban/free/install.php index 6b4dd6f2..71ae72cf 100644 --- a/system/sections/web/superban/free/install.php +++ b/system/sections/web/superban/free/install.php @@ -56,4 +56,3 @@ $html->set('domains', $domains); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/superban/free/manage.php b/system/sections/web/superban/free/manage.php index 80b3a294..4f0664e1 100644 --- a/system/sections/web/superban/free/manage.php +++ b/system/sections/web/superban/free/manage.php @@ -53,4 +53,3 @@ $html->unit('update'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/web/superban/free/passwd.php b/system/sections/web/superban/free/passwd.php index 20702749..07038ca7 100644 --- a/system/sections/web/superban/free/passwd.php +++ b/system/sections/web/superban/free/passwd.php @@ -13,4 +13,3 @@ ); web::passwd($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/web/superban/free/update.php b/system/sections/web/superban/free/update.php index b8aa1252..d914cae7 100644 --- a/system/sections/web/superban/free/update.php +++ b/system/sections/web/superban/free/update.php @@ -13,4 +13,3 @@ ); web::update($aData, $nmch); -?> \ No newline at end of file diff --git a/system/sections/wiki/answer.php b/system/sections/wiki/answer.php index 18643547..270c1764 100644 --- a/system/sections/wiki/answer.php +++ b/system/sections/wiki/answer.php @@ -40,4 +40,3 @@ $html->set('text', htmlspecialchars_decode($answer['text'])); $html->set('tags', $tags != '' ? $tags : 'Теги отсутствуют'); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/wiki/index.php b/system/sections/wiki/index.php index b1008799..d7149a7f 100644 --- a/system/sections/wiki/index.php +++ b/system/sections/wiki/index.php @@ -23,4 +23,3 @@ $html->set('list', isset($html->arr['category']) ? $html->arr['category'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/wiki/msearch.php b/system/sections/wiki/msearch.php index 87ab27c1..2ae99693 100644 --- a/system/sections/wiki/msearch.php +++ b/system/sections/wiki/msearch.php @@ -143,4 +143,3 @@ $mcache->set($mkey, $html->arr['question'], false, 15); sys::outjs(array('s' => $html->arr['question']), $nmch); -?> \ No newline at end of file diff --git a/system/sections/wiki/question.php b/system/sections/wiki/question.php index 80b0f176..983d5b27 100644 --- a/system/sections/wiki/question.php +++ b/system/sections/wiki/question.php @@ -41,4 +41,3 @@ $html->set('list', isset($html->arr['question']) ? $html->arr['question'] : ''); $html->pack('main'); -?> \ No newline at end of file diff --git a/system/sections/wiki/search.php b/system/sections/wiki/search.php index 5c420297..5f8cf814 100644 --- a/system/sections/wiki/search.php +++ b/system/sections/wiki/search.php @@ -154,4 +154,3 @@ $html->set('result', $html->arr['question']); $html->pack('main'); -?> \ No newline at end of file diff --git a/template/acp/all.html b/template/acp/all.html index bcf8953e..9210d680 100644 --- a/template/acp/all.html +++ b/template/acp/all.html @@ -115,7 +115,7 @@
Управление услугами
серверов
  • Список бесплатных услуг
  • -
  • Контроль +
  • Контроль серверов
  • @@ -128,14 +128,12 @@
    Остальные разделы
    акциями
  • Управление уведомлениями
  • -
  • Управление +
  • Управление новостями
  • Управление википедией
  • -
  • Управление +
  • Управление страницами
  • -
  • Управление вакансиями -
  • Логи операций
  • Boost / Игра: diff --git a/template/acp/css/fonts.css b/template/acp/css/fonts.css index a2b958e5..64bfa84f 100644 --- a/template/acp/css/fonts.css +++ b/template/acp/css/fonts.css @@ -1,3049 +1,8003 @@ /*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + * Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2023 Fonticons, Inc. */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); - src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); - font-weight: normal; - font-style: normal; -} - .fa { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333333em; - line-height: 0.75em; - vertical-align: -15%; -} + font-family: var(--fa-style-family, "Font Awesome 6 Free"); + font-weight: var(--fa-style, 900); } + +.fa, +.fa-classic, +.fa-sharp, +.fas, +.fa-solid, +.far, +.fa-regular, +.fab, +.fa-brands { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--fa-display, inline-block); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; } + +.fas, +.fa-classic, +.fa-solid, +.far, +.fa-regular { + font-family: 'Font Awesome 6 Free'; } + +.fab, +.fa-brands { + font-family: 'Font Awesome 6 Brands'; } + +.fa-1x { + font-size: 1em; } .fa-2x { - font-size: 2em; -} + font-size: 2em; } .fa-3x { - font-size: 3em; -} + font-size: 3em; } .fa-4x { - font-size: 4em; -} + font-size: 4em; } .fa-5x { - font-size: 5em; -} + font-size: 5em; } -.fa-fw { - width: 1.28571429em; - text-align: center; -} +.fa-6x { + font-size: 6em; } -.fa-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; -} +.fa-7x { + font-size: 7em; } -.fa-ul > li { - position: relative; -} +.fa-8x { + font-size: 8em; } -.fa-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: 0.14285714em; - text-align: center; -} +.fa-9x { + font-size: 9em; } -.fa-li.fa-lg { - left: -1.85714286em; -} +.fa-10x { + font-size: 10em; } -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eee; - border-radius: .1em; -} +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; } -.fa-pull-left { - float: left; -} +.fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; } -.fa-pull-right { - float: right; -} +.fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; } + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; } -.fa.fa-pull-left { - margin-right: .3em; -} +.fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; } -.fa.fa-pull-right { - margin-left: .3em; -} +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; } -/* Deprecated as of 4.4.0 */ -.pull-right { - float: right; -} +.fa-fw { + text-align: center; + width: 1.25em; } -.pull-left { - float: left; -} +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; } + .fa-ul > li { + position: relative; } -.fa.pull-left { - margin-right: .3em; -} +.fa-li { + left: calc(var(--fa-li-width, 2em) * -1); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; } -.fa.pull-right { - margin-left: .3em; -} +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); } -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); } + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); } + +.fa-beat { + -webkit-animation-name: fa-beat; + animation-name: fa-beat; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-bounce { + -webkit-animation-name: fa-bounce; + animation-name: fa-bounce; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + +.fa-fade { + -webkit-animation-name: fa-fade; + animation-name: fa-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-beat-fade { + -webkit-animation-name: fa-beat-fade; + animation-name: fa-beat-fade; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + +.fa-flip { + -webkit-animation-name: fa-flip; + animation-name: fa-flip; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } + +.fa-shake { + -webkit-animation-name: fa-shake; + animation-name: fa-shake; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } -.fa-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} +.fa-spin { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 2s); + animation-duration: var(--fa-animation-duration, 2s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); } + +.fa-spin-reverse { + --fa-animation-direction: reverse; } + +.fa-pulse, +.fa-spin-pulse { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); + animation-timing-function: var(--fa-animation-timing, steps(8)); } + +@media (prefers-reduced-motion: reduce) { + .fa-beat, + .fa-bounce, + .fa-fade, + .fa-beat-fade, + .fa-flip, + .fa-pulse, + .fa-shake, + .fa-spin, + .fa-spin-pulse { + -webkit-animation-delay: -1ms; + animation-delay: -1ms; + -webkit-animation-duration: 1ms; + animation-duration: 1ms; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + -webkit-transition-delay: 0s; + transition-delay: 0s; + -webkit-transition-duration: 0s; + transition-duration: 0s; } } + +@-webkit-keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); } } + +@-webkit-keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@keyframes fa-bounce { + 0% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + 57% { + -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + 64% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } + 100% { + -webkit-transform: scale(1, 1) translateY(0); + transform: scale(1, 1) translateY(0); } } + +@-webkit-keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); } } + +@-webkit-keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } + +@-webkit-keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + +@-webkit-keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } + +@keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); } + 40%, 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } } @-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } @keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } .fa-rotate-90 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } .fa-rotate-180 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } .fa-rotate-270 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } .fa-flip-horizontal { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } .fa-flip-vertical { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} - -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - filter: none; -} + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +.fa-rotate-by { + -webkit-transform: rotate(var(--fa-rotate-angle, none)); + transform: rotate(var(--fa-rotate-angle, none)); } .fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } .fa-stack-1x, .fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--fa-stack-z-index, auto); } .fa-stack-1x { - line-height: inherit; -} + line-height: inherit; } .fa-stack-2x { - font-size: 2em; -} + font-size: 2em; } .fa-inverse { - color: #fff; -} + color: var(--fa-inverse, #fff); } /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-glass:before { - content: "\f000"; -} - -.fa-music:before { - content: "\f001"; -} - -.fa-search:before { - content: "\f002"; -} - -.fa-envelope-o:before { - content: "\f003"; -} - -.fa-heart:before { - content: "\f004"; -} - -.fa-star:before { - content: "\f005"; -} - -.fa-star-o:before { - content: "\f006"; -} - -.fa-user:before { - content: "\f007"; -} - -.fa-film:before { - content: "\f008"; -} - -.fa-th-large:before { - content: "\f009"; -} - -.fa-th:before { - content: "\f00a"; -} - -.fa-th-list:before { - content: "\f00b"; -} - -.fa-check:before { - content: "\f00c"; -} - -.fa-remove:before, -.fa-close:before, -.fa-times:before { - content: "\f00d"; -} - -.fa-search-plus:before { - content: "\f00e"; -} - -.fa-search-minus:before { - content: "\f010"; -} - -.fa-power-off:before { - content: "\f011"; -} - -.fa-signal:before { - content: "\f012"; -} - -.fa-gear:before, -.fa-cog:before { - content: "\f013"; -} - -.fa-trash-o:before { - content: "\f014"; -} - -.fa-home:before { - content: "\f015"; -} - -.fa-file-o:before { - content: "\f016"; -} - -.fa-clock-o:before { - content: "\f017"; -} - -.fa-road:before { - content: "\f018"; -} - -.fa-download:before { - content: "\f019"; -} - -.fa-arrow-circle-o-down:before { - content: "\f01a"; -} - -.fa-arrow-circle-o-up:before { - content: "\f01b"; -} - -.fa-inbox:before { - content: "\f01c"; -} - -.fa-play-circle-o:before { - content: "\f01d"; -} - -.fa-rotate-right:before, -.fa-repeat:before { - content: "\f01e"; -} +readers do not read off random characters that represent icons */ -.fa-refresh:before { - content: "\f021"; -} +.fa-0::before { + content: "\30"; } -.fa-list-alt:before { - content: "\f022"; -} - -.fa-lock:before { - content: "\f023"; -} - -.fa-flag:before { - content: "\f024"; -} - -.fa-headphones:before { - content: "\f025"; -} - -.fa-volume-off:before { - content: "\f026"; -} - -.fa-volume-down:before { - content: "\f027"; -} - -.fa-volume-up:before { - content: "\f028"; -} - -.fa-qrcode:before { - content: "\f029"; -} - -.fa-barcode:before { - content: "\f02a"; -} - -.fa-tag:before { - content: "\f02b"; -} - -.fa-tags:before { - content: "\f02c"; -} - -.fa-book:before { - content: "\f02d"; -} - -.fa-bookmark:before { - content: "\f02e"; -} - -.fa-print:before { - content: "\f02f"; -} - -.fa-camera:before { - content: "\f030"; -} - -.fa-font:before { - content: "\f031"; -} - -.fa-bold:before { - content: "\f032"; -} - -.fa-italic:before { - content: "\f033"; -} - -.fa-text-height:before { - content: "\f034"; -} - -.fa-text-width:before { - content: "\f035"; -} - -.fa-align-left:before { - content: "\f036"; -} - -.fa-align-center:before { - content: "\f037"; -} - -.fa-align-right:before { - content: "\f038"; -} - -.fa-align-justify:before { - content: "\f039"; -} +.fa-1::before { + content: "\31"; } -.fa-list:before { - content: "\f03a"; -} +.fa-2::before { + content: "\32"; } -.fa-dedent:before, -.fa-outdent:before { - content: "\f03b"; -} - -.fa-indent:before { - content: "\f03c"; -} - -.fa-video-camera:before { - content: "\f03d"; -} - -.fa-photo:before, -.fa-image:before, -.fa-picture-o:before { - content: "\f03e"; -} - -.fa-pencil:before { - content: "\f040"; -} - -.fa-map-marker:before { - content: "\f041"; -} - -.fa-adjust:before { - content: "\f042"; -} - -.fa-tint:before { - content: "\f043"; -} - -.fa-edit:before, -.fa-pencil-square-o:before { - content: "\f044"; -} +.fa-3::before { + content: "\33"; } -.fa-share-square-o:before { - content: "\f045"; -} +.fa-4::before { + content: "\34"; } -.fa-check-square-o:before { - content: "\f046"; -} +.fa-5::before { + content: "\35"; } -.fa-arrows:before { - content: "\f047"; -} +.fa-6::before { + content: "\36"; } -.fa-step-backward:before { - content: "\f048"; -} +.fa-7::before { + content: "\37"; } -.fa-fast-backward:before { - content: "\f049"; -} - -.fa-backward:before { - content: "\f04a"; -} - -.fa-play:before { - content: "\f04b"; -} - -.fa-pause:before { - content: "\f04c"; -} - -.fa-stop:before { - content: "\f04d"; -} - -.fa-forward:before { - content: "\f04e"; -} - -.fa-fast-forward:before { - content: "\f050"; -} - -.fa-step-forward:before { - content: "\f051"; -} - -.fa-eject:before { - content: "\f052"; -} - -.fa-chevron-left:before { - content: "\f053"; -} - -.fa-chevron-right:before { - content: "\f054"; -} - -.fa-plus-circle:before { - content: "\f055"; -} - -.fa-minus-circle:before { - content: "\f056"; -} - -.fa-times-circle:before { - content: "\f057"; -} - -.fa-check-circle:before { - content: "\f058"; -} - -.fa-question-circle:before { - content: "\f059"; -} - -.fa-info-circle:before { - content: "\f05a"; -} - -.fa-crosshairs:before { - content: "\f05b"; -} - -.fa-times-circle-o:before { - content: "\f05c"; -} - -.fa-check-circle-o:before { - content: "\f05d"; -} - -.fa-ban:before { - content: "\f05e"; -} +.fa-8::before { + content: "\38"; } -.fa-arrow-left:before { - content: "\f060"; -} +.fa-9::before { + content: "\39"; } -.fa-arrow-right:before { - content: "\f061"; -} +.fa-fill-drip::before { + content: "\f576"; } -.fa-arrow-up:before { - content: "\f062"; -} +.fa-arrows-to-circle::before { + content: "\e4bd"; } -.fa-arrow-down:before { - content: "\f063"; -} +.fa-circle-chevron-right::before { + content: "\f138"; } -.fa-mail-forward:before, -.fa-share:before { - content: "\f064"; -} - -.fa-expand:before { - content: "\f065"; -} - -.fa-compress:before { - content: "\f066"; -} +.fa-chevron-circle-right::before { + content: "\f138"; } -.fa-plus:before { - content: "\f067"; -} +.fa-at::before { + content: "\40"; } -.fa-minus:before { - content: "\f068"; -} +.fa-trash-can::before { + content: "\f2ed"; } -.fa-asterisk:before { - content: "\f069"; -} +.fa-trash-alt::before { + content: "\f2ed"; } -.fa-exclamation-circle:before { - content: "\f06a"; -} +.fa-text-height::before { + content: "\f034"; } -.fa-gift:before { - content: "\f06b"; -} +.fa-user-xmark::before { + content: "\f235"; } -.fa-leaf:before { - content: "\f06c"; -} +.fa-user-times::before { + content: "\f235"; } -.fa-fire:before { - content: "\f06d"; -} +.fa-stethoscope::before { + content: "\f0f1"; } -.fa-eye:before { - content: "\f06e"; -} +.fa-message::before { + content: "\f27a"; } -.fa-eye-slash:before { - content: "\f070"; -} +.fa-comment-alt::before { + content: "\f27a"; } -.fa-warning:before, -.fa-exclamation-triangle:before { - content: "\f071"; -} +.fa-info::before { + content: "\f129"; } -.fa-plane:before { - content: "\f072"; -} +.fa-down-left-and-up-right-to-center::before { + content: "\f422"; } -.fa-calendar:before { - content: "\f073"; -} +.fa-compress-alt::before { + content: "\f422"; } -.fa-random:before { - content: "\f074"; -} +.fa-explosion::before { + content: "\e4e9"; } -.fa-comment:before { - content: "\f075"; -} +.fa-file-lines::before { + content: "\f15c"; } -.fa-magnet:before { - content: "\f076"; -} +.fa-file-alt::before { + content: "\f15c"; } -.fa-chevron-up:before { - content: "\f077"; -} +.fa-file-text::before { + content: "\f15c"; } -.fa-chevron-down:before { - content: "\f078"; -} +.fa-wave-square::before { + content: "\f83e"; } -.fa-retweet:before { - content: "\f079"; -} +.fa-ring::before { + content: "\f70b"; } -.fa-shopping-cart:before { - content: "\f07a"; -} +.fa-building-un::before { + content: "\e4d9"; } -.fa-folder:before { - content: "\f07b"; -} +.fa-dice-three::before { + content: "\f527"; } -.fa-folder-open:before { - content: "\f07c"; -} +.fa-calendar-days::before { + content: "\f073"; } -.fa-arrows-v:before { - content: "\f07d"; -} +.fa-calendar-alt::before { + content: "\f073"; } -.fa-arrows-h:before { - content: "\f07e"; -} +.fa-anchor-circle-check::before { + content: "\e4aa"; } -.fa-bar-chart-o:before, -.fa-bar-chart:before { - content: "\f080"; -} +.fa-building-circle-arrow-right::before { + content: "\e4d1"; } -.fa-twitter-square:before { - content: "\f081"; -} +.fa-volleyball::before { + content: "\f45f"; } -.fa-facebook-square:before { - content: "\f082"; -} +.fa-volleyball-ball::before { + content: "\f45f"; } -.fa-camera-retro:before { - content: "\f083"; -} +.fa-arrows-up-to-line::before { + content: "\e4c2"; } -.fa-key:before { - content: "\f084"; -} +.fa-sort-down::before { + content: "\f0dd"; } -.fa-gears:before, -.fa-cogs:before { - content: "\f085"; -} +.fa-sort-desc::before { + content: "\f0dd"; } -.fa-comments:before { - content: "\f086"; -} +.fa-circle-minus::before { + content: "\f056"; } -.fa-thumbs-o-up:before { - content: "\f087"; -} +.fa-minus-circle::before { + content: "\f056"; } -.fa-thumbs-o-down:before { - content: "\f088"; -} +.fa-door-open::before { + content: "\f52b"; } -.fa-star-half:before { - content: "\f089"; -} +.fa-right-from-bracket::before { + content: "\f2f5"; } -.fa-heart-o:before { - content: "\f08a"; -} +.fa-sign-out-alt::before { + content: "\f2f5"; } -.fa-sign-out:before { - content: "\f08b"; -} +.fa-atom::before { + content: "\f5d2"; } -.fa-linkedin-square:before { - content: "\f08c"; -} +.fa-soap::before { + content: "\e06e"; } -.fa-thumb-tack:before { - content: "\f08d"; -} +.fa-icons::before { + content: "\f86d"; } -.fa-external-link:before { - content: "\f08e"; -} +.fa-heart-music-camera-bolt::before { + content: "\f86d"; } -.fa-sign-in:before { - content: "\f090"; -} +.fa-microphone-lines-slash::before { + content: "\f539"; } -.fa-trophy:before { - content: "\f091"; -} +.fa-microphone-alt-slash::before { + content: "\f539"; } -.fa-github-square:before { - content: "\f092"; -} +.fa-bridge-circle-check::before { + content: "\e4c9"; } -.fa-upload:before { - content: "\f093"; -} +.fa-pump-medical::before { + content: "\e06a"; } -.fa-lemon-o:before { - content: "\f094"; -} +.fa-fingerprint::before { + content: "\f577"; } -.fa-phone:before { - content: "\f095"; -} +.fa-hand-point-right::before { + content: "\f0a4"; } -.fa-square-o:before { - content: "\f096"; -} +.fa-magnifying-glass-location::before { + content: "\f689"; } -.fa-bookmark-o:before { - content: "\f097"; -} +.fa-search-location::before { + content: "\f689"; } -.fa-phone-square:before { - content: "\f098"; -} +.fa-forward-step::before { + content: "\f051"; } -.fa-twitter:before { - content: "\f099"; -} +.fa-step-forward::before { + content: "\f051"; } -.fa-facebook-f:before, -.fa-facebook:before { - content: "\f09a"; -} +.fa-face-smile-beam::before { + content: "\f5b8"; } -.fa-github:before { - content: "\f09b"; -} +.fa-smile-beam::before { + content: "\f5b8"; } -.fa-unlock:before { - content: "\f09c"; -} +.fa-flag-checkered::before { + content: "\f11e"; } -.fa-credit-card:before { - content: "\f09d"; -} +.fa-football::before { + content: "\f44e"; } -.fa-feed:before, -.fa-rss:before { - content: "\f09e"; -} - -.fa-hdd-o:before { - content: "\f0a0"; -} - -.fa-bullhorn:before { - content: "\f0a1"; -} - -.fa-bell:before { - content: "\f0f3"; -} - -.fa-certificate:before { - content: "\f0a3"; -} - -.fa-hand-o-right:before { - content: "\f0a4"; -} - -.fa-hand-o-left:before { - content: "\f0a5"; -} - -.fa-hand-o-up:before { - content: "\f0a6"; -} - -.fa-hand-o-down:before { - content: "\f0a7"; -} - -.fa-arrow-circle-left:before { - content: "\f0a8"; -} - -.fa-arrow-circle-right:before { - content: "\f0a9"; -} - -.fa-arrow-circle-up:before { - content: "\f0aa"; -} - -.fa-arrow-circle-down:before { - content: "\f0ab"; -} - -.fa-globe:before { - content: "\f0ac"; -} - -.fa-wrench:before { - content: "\f0ad"; -} - -.fa-tasks:before { - content: "\f0ae"; -} - -.fa-filter:before { - content: "\f0b0"; -} - -.fa-briefcase:before { - content: "\f0b1"; -} - -.fa-arrows-alt:before { - content: "\f0b2"; -} - -.fa-group:before, -.fa-users:before { - content: "\f0c0"; -} - -.fa-chain:before, -.fa-link:before { - content: "\f0c1"; -} - -.fa-cloud:before { - content: "\f0c2"; -} - -.fa-flask:before { - content: "\f0c3"; -} - -.fa-cut:before, -.fa-scissors:before { - content: "\f0c4"; -} - -.fa-copy:before, -.fa-files-o:before { - content: "\f0c5"; -} - -.fa-paperclip:before { - content: "\f0c6"; -} - -.fa-save:before, -.fa-floppy-o:before { - content: "\f0c7"; -} - -.fa-square:before { - content: "\f0c8"; -} - -.fa-navicon:before, -.fa-reorder:before, -.fa-bars:before { - content: "\f0c9"; -} - -.fa-list-ul:before { - content: "\f0ca"; -} - -.fa-list-ol:before { - content: "\f0cb"; -} - -.fa-strikethrough:before { - content: "\f0cc"; -} - -.fa-underline:before { - content: "\f0cd"; -} - -.fa-table:before { - content: "\f0ce"; -} - -.fa-magic:before { - content: "\f0d0"; -} - -.fa-truck:before { - content: "\f0d1"; -} +.fa-football-ball::before { + content: "\f44e"; } -.fa-pinterest:before { - content: "\f0d2"; -} +.fa-school-circle-exclamation::before { + content: "\e56c"; } -.fa-pinterest-square:before { - content: "\f0d3"; -} +.fa-crop::before { + content: "\f125"; } -.fa-google-plus-square:before { - content: "\f0d4"; -} +.fa-angles-down::before { + content: "\f103"; } -.fa-google-plus:before { - content: "\f0d5"; -} +.fa-angle-double-down::before { + content: "\f103"; } -.fa-money:before { - content: "\f0d6"; -} +.fa-users-rectangle::before { + content: "\e594"; } -.fa-caret-down:before { - content: "\f0d7"; -} +.fa-people-roof::before { + content: "\e537"; } -.fa-caret-up:before { - content: "\f0d8"; -} +.fa-people-line::before { + content: "\e534"; } -.fa-caret-left:before { - content: "\f0d9"; -} +.fa-beer-mug-empty::before { + content: "\f0fc"; } -.fa-caret-right:before { - content: "\f0da"; -} +.fa-beer::before { + content: "\f0fc"; } -.fa-columns:before { - content: "\f0db"; -} +.fa-diagram-predecessor::before { + content: "\e477"; } -.fa-unsorted:before, -.fa-sort:before { - content: "\f0dc"; -} +.fa-arrow-up-long::before { + content: "\f176"; } -.fa-sort-down:before, -.fa-sort-desc:before { - content: "\f0dd"; -} +.fa-long-arrow-up::before { + content: "\f176"; } -.fa-sort-up:before, -.fa-sort-asc:before { - content: "\f0de"; -} +.fa-fire-flame-simple::before { + content: "\f46a"; } -.fa-envelope:before { - content: "\f0e0"; -} +.fa-burn::before { + content: "\f46a"; } -.fa-linkedin:before { - content: "\f0e1"; -} - -.fa-rotate-left:before, -.fa-undo:before { - content: "\f0e2"; -} - -.fa-legal:before, -.fa-gavel:before { - content: "\f0e3"; -} - -.fa-dashboard:before, -.fa-tachometer:before { - content: "\f0e4"; -} - -.fa-comment-o:before { - content: "\f0e5"; -} - -.fa-comments-o:before { - content: "\f0e6"; -} - -.fa-flash:before, -.fa-bolt:before { - content: "\f0e7"; -} - -.fa-sitemap:before { - content: "\f0e8"; -} - -.fa-umbrella:before { - content: "\f0e9"; -} - -.fa-paste:before, -.fa-clipboard:before { - content: "\f0ea"; -} - -.fa-lightbulb-o:before { - content: "\f0eb"; -} - -.fa-exchange:before { - content: "\f0ec"; -} - -.fa-cloud-download:before { - content: "\f0ed"; -} - -.fa-cloud-upload:before { - content: "\f0ee"; -} - -.fa-user-md:before { - content: "\f0f0"; -} - -.fa-stethoscope:before { - content: "\f0f1"; -} - -.fa-suitcase:before { - content: "\f0f2"; -} - -.fa-bell-o:before { - content: "\f0a2"; -} - -.fa-coffee:before { - content: "\f0f4"; -} - -.fa-cutlery:before { - content: "\f0f5"; -} - -.fa-file-text-o:before { - content: "\f0f6"; -} - -.fa-building-o:before { - content: "\f0f7"; -} - -.fa-hospital-o:before { - content: "\f0f8"; -} - -.fa-ambulance:before { - content: "\f0f9"; -} - -.fa-medkit:before { - content: "\f0fa"; -} - -.fa-fighter-jet:before { - content: "\f0fb"; -} +.fa-person::before { + content: "\f183"; } -.fa-beer:before { - content: "\f0fc"; -} +.fa-male::before { + content: "\f183"; } -.fa-h-square:before { - content: "\f0fd"; -} +.fa-laptop::before { + content: "\f109"; } -.fa-plus-square:before { - content: "\f0fe"; -} +.fa-file-csv::before { + content: "\f6dd"; } -.fa-angle-double-left:before { - content: "\f100"; -} +.fa-menorah::before { + content: "\f676"; } -.fa-angle-double-right:before { - content: "\f101"; -} +.fa-truck-plane::before { + content: "\e58f"; } -.fa-angle-double-up:before { - content: "\f102"; -} +.fa-record-vinyl::before { + content: "\f8d9"; } -.fa-angle-double-down:before { - content: "\f103"; -} +.fa-face-grin-stars::before { + content: "\f587"; } -.fa-angle-left:before { - content: "\f104"; -} +.fa-grin-stars::before { + content: "\f587"; } -.fa-angle-right:before { - content: "\f105"; -} +.fa-bong::before { + content: "\f55c"; } -.fa-angle-up:before { - content: "\f106"; -} +.fa-spaghetti-monster-flying::before { + content: "\f67b"; } -.fa-angle-down:before { - content: "\f107"; -} +.fa-pastafarianism::before { + content: "\f67b"; } -.fa-desktop:before { - content: "\f108"; -} +.fa-arrow-down-up-across-line::before { + content: "\e4af"; } -.fa-laptop:before { - content: "\f109"; -} +.fa-spoon::before { + content: "\f2e5"; } -.fa-tablet:before { - content: "\f10a"; -} +.fa-utensil-spoon::before { + content: "\f2e5"; } -.fa-mobile-phone:before, -.fa-mobile:before { - content: "\f10b"; -} +.fa-jar-wheat::before { + content: "\e517"; } -.fa-circle-o:before { - content: "\f10c"; -} +.fa-envelopes-bulk::before { + content: "\f674"; } -.fa-quote-left:before { - content: "\f10d"; -} +.fa-mail-bulk::before { + content: "\f674"; } -.fa-quote-right:before { - content: "\f10e"; -} +.fa-file-circle-exclamation::before { + content: "\e4eb"; } -.fa-spinner:before { - content: "\f110"; -} +.fa-circle-h::before { + content: "\f47e"; } -.fa-circle:before { - content: "\f111"; -} +.fa-hospital-symbol::before { + content: "\f47e"; } -.fa-mail-reply:before, -.fa-reply:before { - content: "\f112"; -} +.fa-pager::before { + content: "\f815"; } -.fa-github-alt:before { - content: "\f113"; -} +.fa-address-book::before { + content: "\f2b9"; } -.fa-folder-o:before { - content: "\f114"; -} +.fa-contact-book::before { + content: "\f2b9"; } -.fa-folder-open-o:before { - content: "\f115"; -} +.fa-strikethrough::before { + content: "\f0cc"; } -.fa-smile-o:before { - content: "\f118"; -} +.fa-k::before { + content: "\4b"; } -.fa-frown-o:before { - content: "\f119"; -} +.fa-landmark-flag::before { + content: "\e51c"; } -.fa-meh-o:before { - content: "\f11a"; -} +.fa-pencil::before { + content: "\f303"; } -.fa-gamepad:before { - content: "\f11b"; -} +.fa-pencil-alt::before { + content: "\f303"; } -.fa-keyboard-o:before { - content: "\f11c"; -} +.fa-backward::before { + content: "\f04a"; } -.fa-flag-o:before { - content: "\f11d"; -} +.fa-caret-right::before { + content: "\f0da"; } -.fa-flag-checkered:before { - content: "\f11e"; -} +.fa-comments::before { + content: "\f086"; } -.fa-terminal:before { - content: "\f120"; -} +.fa-paste::before { + content: "\f0ea"; } -.fa-code:before { - content: "\f121"; -} +.fa-file-clipboard::before { + content: "\f0ea"; } -.fa-mail-reply-all:before, -.fa-reply-all:before { - content: "\f122"; -} +.fa-code-pull-request::before { + content: "\e13c"; } -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: "\f123"; -} +.fa-clipboard-list::before { + content: "\f46d"; } -.fa-location-arrow:before { - content: "\f124"; -} +.fa-truck-ramp-box::before { + content: "\f4de"; } -.fa-crop:before { - content: "\f125"; -} +.fa-truck-loading::before { + content: "\f4de"; } -.fa-code-fork:before { - content: "\f126"; -} +.fa-user-check::before { + content: "\f4fc"; } -.fa-unlink:before, -.fa-chain-broken:before { - content: "\f127"; -} +.fa-vial-virus::before { + content: "\e597"; } -.fa-question:before { - content: "\f128"; -} +.fa-sheet-plastic::before { + content: "\e571"; } -.fa-info:before { - content: "\f129"; -} +.fa-blog::before { + content: "\f781"; } -.fa-exclamation:before { - content: "\f12a"; -} +.fa-user-ninja::before { + content: "\f504"; } -.fa-superscript:before { - content: "\f12b"; -} +.fa-person-arrow-up-from-line::before { + content: "\e539"; } -.fa-subscript:before { - content: "\f12c"; -} +.fa-scroll-torah::before { + content: "\f6a0"; } -.fa-eraser:before { - content: "\f12d"; -} +.fa-torah::before { + content: "\f6a0"; } -.fa-puzzle-piece:before { - content: "\f12e"; -} +.fa-broom-ball::before { + content: "\f458"; } -.fa-microphone:before { - content: "\f130"; -} +.fa-quidditch::before { + content: "\f458"; } -.fa-microphone-slash:before { - content: "\f131"; -} +.fa-quidditch-broom-ball::before { + content: "\f458"; } -.fa-shield:before { - content: "\f132"; -} +.fa-toggle-off::before { + content: "\f204"; } -.fa-calendar-o:before { - content: "\f133"; -} +.fa-box-archive::before { + content: "\f187"; } -.fa-fire-extinguisher:before { - content: "\f134"; -} +.fa-archive::before { + content: "\f187"; } -.fa-rocket:before { - content: "\f135"; -} +.fa-person-drowning::before { + content: "\e545"; } -.fa-maxcdn:before { - content: "\f136"; -} +.fa-arrow-down-9-1::before { + content: "\f886"; } -.fa-chevron-circle-left:before { - content: "\f137"; -} +.fa-sort-numeric-desc::before { + content: "\f886"; } -.fa-chevron-circle-right:before { - content: "\f138"; -} +.fa-sort-numeric-down-alt::before { + content: "\f886"; } -.fa-chevron-circle-up:before { - content: "\f139"; -} +.fa-face-grin-tongue-squint::before { + content: "\f58a"; } -.fa-chevron-circle-down:before { - content: "\f13a"; -} +.fa-grin-tongue-squint::before { + content: "\f58a"; } -.fa-html5:before { - content: "\f13b"; -} +.fa-spray-can::before { + content: "\f5bd"; } -.fa-css3:before { - content: "\f13c"; -} - -.fa-anchor:before { - content: "\f13d"; -} - -.fa-unlock-alt:before { - content: "\f13e"; -} - -.fa-bullseye:before { - content: "\f140"; -} - -.fa-ellipsis-h:before { - content: "\f141"; -} - -.fa-ellipsis-v:before { - content: "\f142"; -} - -.fa-rss-square:before { - content: "\f143"; -} - -.fa-play-circle:before { - content: "\f144"; -} - -.fa-ticket:before { - content: "\f145"; -} - -.fa-minus-square:before { - content: "\f146"; -} - -.fa-minus-square-o:before { - content: "\f147"; -} - -.fa-level-up:before { - content: "\f148"; -} - -.fa-level-down:before { - content: "\f149"; -} - -.fa-check-square:before { - content: "\f14a"; -} - -.fa-pencil-square:before { - content: "\f14b"; -} - -.fa-external-link-square:before { - content: "\f14c"; -} - -.fa-share-square:before { - content: "\f14d"; -} - -.fa-compass:before { - content: "\f14e"; -} - -.fa-toggle-down:before, -.fa-caret-square-o-down:before { - content: "\f150"; -} - -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: "\f151"; -} - -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: "\f152"; -} - -.fa-euro:before, -.fa-eur:before { - content: "\f153"; -} - -.fa-gbp:before { - content: "\f154"; -} - -.fa-dollar:before, -.fa-usd:before { - content: "\f155"; -} - -.fa-rupee:before, -.fa-inr:before { - content: "\f156"; -} - -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: "\f157"; -} - -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: "\f158"; -} - -.fa-won:before, -.fa-krw:before { - content: "\f159"; -} - -.fa-bitcoin:before, -.fa-btc:before { - content: "\f15a"; -} +.fa-truck-monster::before { + content: "\f63b"; } -.fa-file:before { - content: "\f15b"; -} +.fa-w::before { + content: "\57"; } -.fa-file-text:before { - content: "\f15c"; -} +.fa-earth-africa::before { + content: "\f57c"; } -.fa-sort-alpha-asc:before { - content: "\f15d"; -} +.fa-globe-africa::before { + content: "\f57c"; } -.fa-sort-alpha-desc:before { - content: "\f15e"; -} +.fa-rainbow::before { + content: "\f75b"; } -.fa-sort-amount-asc:before { - content: "\f160"; -} +.fa-circle-notch::before { + content: "\f1ce"; } -.fa-sort-amount-desc:before { - content: "\f161"; -} +.fa-tablet-screen-button::before { + content: "\f3fa"; } -.fa-sort-numeric-asc:before { - content: "\f162"; -} +.fa-tablet-alt::before { + content: "\f3fa"; } -.fa-sort-numeric-desc:before { - content: "\f163"; -} +.fa-paw::before { + content: "\f1b0"; } -.fa-thumbs-up:before { - content: "\f164"; -} +.fa-cloud::before { + content: "\f0c2"; } -.fa-thumbs-down:before { - content: "\f165"; -} +.fa-trowel-bricks::before { + content: "\e58a"; } -.fa-youtube-square:before { - content: "\f166"; -} +.fa-face-flushed::before { + content: "\f579"; } -.fa-youtube:before { - content: "\f167"; -} +.fa-flushed::before { + content: "\f579"; } -.fa-xing:before { - content: "\f168"; -} +.fa-hospital-user::before { + content: "\f80d"; } -.fa-xing-square:before { - content: "\f169"; -} +.fa-tent-arrow-left-right::before { + content: "\e57f"; } -.fa-youtube-play:before { - content: "\f16a"; -} +.fa-gavel::before { + content: "\f0e3"; } -.fa-dropbox:before { - content: "\f16b"; -} +.fa-legal::before { + content: "\f0e3"; } -.fa-stack-overflow:before { - content: "\f16c"; -} +.fa-binoculars::before { + content: "\f1e5"; } -.fa-instagram:before { - content: "\f16d"; -} +.fa-microphone-slash::before { + content: "\f131"; } -.fa-flickr:before { - content: "\f16e"; -} +.fa-box-tissue::before { + content: "\e05b"; } -.fa-adn:before { - content: "\f170"; -} +.fa-motorcycle::before { + content: "\f21c"; } -.fa-bitbucket:before { - content: "\f171"; -} +.fa-bell-concierge::before { + content: "\f562"; } -.fa-bitbucket-square:before { - content: "\f172"; -} +.fa-concierge-bell::before { + content: "\f562"; } -.fa-tumblr:before { - content: "\f173"; -} +.fa-pen-ruler::before { + content: "\f5ae"; } -.fa-tumblr-square:before { - content: "\f174"; -} +.fa-pencil-ruler::before { + content: "\f5ae"; } -.fa-long-arrow-down:before { - content: "\f175"; -} +.fa-people-arrows::before { + content: "\e068"; } -.fa-long-arrow-up:before { - content: "\f176"; -} +.fa-people-arrows-left-right::before { + content: "\e068"; } -.fa-long-arrow-left:before { - content: "\f177"; -} +.fa-mars-and-venus-burst::before { + content: "\e523"; } -.fa-long-arrow-right:before { - content: "\f178"; -} +.fa-square-caret-right::before { + content: "\f152"; } -.fa-apple:before { - content: "\f179"; -} +.fa-caret-square-right::before { + content: "\f152"; } -.fa-windows:before { - content: "\f17a"; -} +.fa-scissors::before { + content: "\f0c4"; } -.fa-android:before { - content: "\f17b"; -} +.fa-cut::before { + content: "\f0c4"; } -.fa-linux:before { - content: "\f17c"; -} +.fa-sun-plant-wilt::before { + content: "\e57a"; } -.fa-dribbble:before { - content: "\f17d"; -} +.fa-toilets-portable::before { + content: "\e584"; } -.fa-skype:before { - content: "\f17e"; -} +.fa-hockey-puck::before { + content: "\f453"; } -.fa-foursquare:before { - content: "\f180"; -} +.fa-table::before { + content: "\f0ce"; } -.fa-trello:before { - content: "\f181"; -} +.fa-magnifying-glass-arrow-right::before { + content: "\e521"; } -.fa-female:before { - content: "\f182"; -} +.fa-tachograph-digital::before { + content: "\f566"; } -.fa-male:before { - content: "\f183"; -} +.fa-digital-tachograph::before { + content: "\f566"; } -.fa-gittip:before, -.fa-gratipay:before { - content: "\f184"; -} +.fa-users-slash::before { + content: "\e073"; } -.fa-sun-o:before { - content: "\f185"; -} +.fa-clover::before { + content: "\e139"; } -.fa-moon-o:before { - content: "\f186"; -} +.fa-reply::before { + content: "\f3e5"; } -.fa-archive:before { - content: "\f187"; -} +.fa-mail-reply::before { + content: "\f3e5"; } -.fa-bug:before { - content: "\f188"; -} +.fa-star-and-crescent::before { + content: "\f699"; } -.fa-vk:before { - content: "\f189"; -} +.fa-house-fire::before { + content: "\e50c"; } -.fa-weibo:before { - content: "\f18a"; -} +.fa-square-minus::before { + content: "\f146"; } -.fa-renren:before { - content: "\f18b"; -} +.fa-minus-square::before { + content: "\f146"; } -.fa-pagelines:before { - content: "\f18c"; -} +.fa-helicopter::before { + content: "\f533"; } -.fa-stack-exchange:before { - content: "\f18d"; -} +.fa-compass::before { + content: "\f14e"; } -.fa-arrow-circle-o-right:before { - content: "\f18e"; -} +.fa-square-caret-down::before { + content: "\f150"; } -.fa-arrow-circle-o-left:before { - content: "\f190"; -} +.fa-caret-square-down::before { + content: "\f150"; } -.fa-toggle-left:before, -.fa-caret-square-o-left:before { - content: "\f191"; -} +.fa-file-circle-question::before { + content: "\e4ef"; } -.fa-dot-circle-o:before { - content: "\f192"; -} +.fa-laptop-code::before { + content: "\f5fc"; } -.fa-wheelchair:before { - content: "\f193"; -} +.fa-swatchbook::before { + content: "\f5c3"; } -.fa-vimeo-square:before { - content: "\f194"; -} +.fa-prescription-bottle::before { + content: "\f485"; } -.fa-turkish-lira:before, -.fa-try:before { - content: "\f195"; -} +.fa-bars::before { + content: "\f0c9"; } -.fa-plus-square-o:before { - content: "\f196"; -} +.fa-navicon::before { + content: "\f0c9"; } -.fa-space-shuttle:before { - content: "\f197"; -} +.fa-people-group::before { + content: "\e533"; } -.fa-slack:before { - content: "\f198"; -} +.fa-hourglass-end::before { + content: "\f253"; } -.fa-envelope-square:before { - content: "\f199"; -} +.fa-hourglass-3::before { + content: "\f253"; } -.fa-wordpress:before { - content: "\f19a"; -} +.fa-heart-crack::before { + content: "\f7a9"; } -.fa-openid:before { - content: "\f19b"; -} +.fa-heart-broken::before { + content: "\f7a9"; } -.fa-institution:before, -.fa-bank:before, -.fa-university:before { - content: "\f19c"; -} +.fa-square-up-right::before { + content: "\f360"; } -.fa-mortar-board:before, -.fa-graduation-cap:before { - content: "\f19d"; -} +.fa-external-link-square-alt::before { + content: "\f360"; } -.fa-yahoo:before { - content: "\f19e"; -} +.fa-face-kiss-beam::before { + content: "\f597"; } -.fa-google:before { - content: "\f1a0"; -} +.fa-kiss-beam::before { + content: "\f597"; } -.fa-reddit:before { - content: "\f1a1"; -} +.fa-film::before { + content: "\f008"; } -.fa-reddit-square:before { - content: "\f1a2"; -} +.fa-ruler-horizontal::before { + content: "\f547"; } -.fa-stumbleupon-circle:before { - content: "\f1a3"; -} +.fa-people-robbery::before { + content: "\e536"; } -.fa-stumbleupon:before { - content: "\f1a4"; -} +.fa-lightbulb::before { + content: "\f0eb"; } -.fa-delicious:before { - content: "\f1a5"; -} +.fa-caret-left::before { + content: "\f0d9"; } -.fa-digg:before { - content: "\f1a6"; -} +.fa-circle-exclamation::before { + content: "\f06a"; } -.fa-pied-piper-pp:before { - content: "\f1a7"; -} +.fa-exclamation-circle::before { + content: "\f06a"; } -.fa-pied-piper-alt:before { - content: "\f1a8"; -} +.fa-school-circle-xmark::before { + content: "\e56d"; } -.fa-drupal:before { - content: "\f1a9"; -} +.fa-arrow-right-from-bracket::before { + content: "\f08b"; } -.fa-joomla:before { - content: "\f1aa"; -} +.fa-sign-out::before { + content: "\f08b"; } -.fa-language:before { - content: "\f1ab"; -} +.fa-circle-chevron-down::before { + content: "\f13a"; } -.fa-fax:before { - content: "\f1ac"; -} +.fa-chevron-circle-down::before { + content: "\f13a"; } -.fa-building:before { - content: "\f1ad"; -} +.fa-unlock-keyhole::before { + content: "\f13e"; } -.fa-child:before { - content: "\f1ae"; -} +.fa-unlock-alt::before { + content: "\f13e"; } -.fa-paw:before { - content: "\f1b0"; -} +.fa-cloud-showers-heavy::before { + content: "\f740"; } -.fa-spoon:before { - content: "\f1b1"; -} +.fa-headphones-simple::before { + content: "\f58f"; } -.fa-cube:before { - content: "\f1b2"; -} +.fa-headphones-alt::before { + content: "\f58f"; } -.fa-cubes:before { - content: "\f1b3"; -} +.fa-sitemap::before { + content: "\f0e8"; } -.fa-behance:before { - content: "\f1b4"; -} +.fa-circle-dollar-to-slot::before { + content: "\f4b9"; } -.fa-behance-square:before { - content: "\f1b5"; -} +.fa-donate::before { + content: "\f4b9"; } -.fa-steam:before { - content: "\f1b6"; -} +.fa-memory::before { + content: "\f538"; } -.fa-steam-square:before { - content: "\f1b7"; -} +.fa-road-spikes::before { + content: "\e568"; } -.fa-recycle:before { - content: "\f1b8"; -} +.fa-fire-burner::before { + content: "\e4f1"; } -.fa-automobile:before, -.fa-car:before { - content: "\f1b9"; -} +.fa-flag::before { + content: "\f024"; } -.fa-cab:before, -.fa-taxi:before { - content: "\f1ba"; -} +.fa-hanukiah::before { + content: "\f6e6"; } -.fa-tree:before { - content: "\f1bb"; -} +.fa-feather::before { + content: "\f52d"; } -.fa-spotify:before { - content: "\f1bc"; -} +.fa-volume-low::before { + content: "\f027"; } -.fa-deviantart:before { - content: "\f1bd"; -} +.fa-volume-down::before { + content: "\f027"; } -.fa-soundcloud:before { - content: "\f1be"; -} - -.fa-database:before { - content: "\f1c0"; -} - -.fa-file-pdf-o:before { - content: "\f1c1"; -} - -.fa-file-word-o:before { - content: "\f1c2"; -} - -.fa-file-excel-o:before { - content: "\f1c3"; -} - -.fa-file-powerpoint-o:before { - content: "\f1c4"; -} - -.fa-file-photo-o:before, -.fa-file-picture-o:before, -.fa-file-image-o:before { - content: "\f1c5"; -} - -.fa-file-zip-o:before, -.fa-file-archive-o:before { - content: "\f1c6"; -} - -.fa-file-sound-o:before, -.fa-file-audio-o:before { - content: "\f1c7"; -} - -.fa-file-movie-o:before, -.fa-file-video-o:before { - content: "\f1c8"; -} - -.fa-file-code-o:before { - content: "\f1c9"; -} +.fa-comment-slash::before { + content: "\f4b3"; } -.fa-vine:before { - content: "\f1ca"; -} +.fa-cloud-sun-rain::before { + content: "\f743"; } -.fa-codepen:before { - content: "\f1cb"; -} +.fa-compress::before { + content: "\f066"; } -.fa-jsfiddle:before { - content: "\f1cc"; -} - -.fa-life-bouy:before, -.fa-life-buoy:before, -.fa-life-saver:before, -.fa-support:before, -.fa-life-ring:before { - content: "\f1cd"; -} - -.fa-circle-o-notch:before { - content: "\f1ce"; -} - -.fa-ra:before, -.fa-resistance:before, -.fa-rebel:before { - content: "\f1d0"; -} +.fa-wheat-awn::before { + content: "\e2cd"; } -.fa-ge:before, -.fa-empire:before { - content: "\f1d1"; -} +.fa-wheat-alt::before { + content: "\e2cd"; } -.fa-git-square:before { - content: "\f1d2"; -} +.fa-ankh::before { + content: "\f644"; } -.fa-git:before { - content: "\f1d3"; -} +.fa-hands-holding-child::before { + content: "\e4fa"; } -.fa-y-combinator-square:before, -.fa-yc-square:before, -.fa-hacker-news:before { - content: "\f1d4"; -} +.fa-asterisk::before { + content: "\2a"; } -.fa-tencent-weibo:before { - content: "\f1d5"; -} +.fa-square-check::before { + content: "\f14a"; } -.fa-qq:before { - content: "\f1d6"; -} +.fa-check-square::before { + content: "\f14a"; } -.fa-wechat:before, -.fa-weixin:before { - content: "\f1d7"; -} +.fa-peseta-sign::before { + content: "\e221"; } -.fa-send:before, -.fa-paper-plane:before { - content: "\f1d8"; -} +.fa-heading::before { + content: "\f1dc"; } -.fa-send-o:before, -.fa-paper-plane-o:before { - content: "\f1d9"; -} +.fa-header::before { + content: "\f1dc"; } -.fa-history:before { - content: "\f1da"; -} +.fa-ghost::before { + content: "\f6e2"; } -.fa-circle-thin:before { - content: "\f1db"; -} +.fa-list::before { + content: "\f03a"; } -.fa-header:before { - content: "\f1dc"; -} +.fa-list-squares::before { + content: "\f03a"; } -.fa-paragraph:before { - content: "\f1dd"; -} +.fa-square-phone-flip::before { + content: "\f87b"; } -.fa-sliders:before { - content: "\f1de"; -} +.fa-phone-square-alt::before { + content: "\f87b"; } -.fa-share-alt:before { - content: "\f1e0"; -} +.fa-cart-plus::before { + content: "\f217"; } -.fa-share-alt-square:before { - content: "\f1e1"; -} +.fa-gamepad::before { + content: "\f11b"; } -.fa-bomb:before { - content: "\f1e2"; -} +.fa-circle-dot::before { + content: "\f192"; } -.fa-soccer-ball-o:before, -.fa-futbol-o:before { - content: "\f1e3"; -} +.fa-dot-circle::before { + content: "\f192"; } -.fa-tty:before { - content: "\f1e4"; -} +.fa-face-dizzy::before { + content: "\f567"; } -.fa-binoculars:before { - content: "\f1e5"; -} +.fa-dizzy::before { + content: "\f567"; } -.fa-plug:before { - content: "\f1e6"; -} +.fa-egg::before { + content: "\f7fb"; } -.fa-slideshare:before { - content: "\f1e7"; -} +.fa-house-medical-circle-xmark::before { + content: "\e513"; } -.fa-twitch:before { - content: "\f1e8"; -} +.fa-campground::before { + content: "\f6bb"; } -.fa-yelp:before { - content: "\f1e9"; -} +.fa-folder-plus::before { + content: "\f65e"; } -.fa-newspaper-o:before { - content: "\f1ea"; -} +.fa-futbol::before { + content: "\f1e3"; } -.fa-wifi:before { - content: "\f1eb"; -} +.fa-futbol-ball::before { + content: "\f1e3"; } -.fa-calculator:before { - content: "\f1ec"; -} +.fa-soccer-ball::before { + content: "\f1e3"; } -.fa-paypal:before { - content: "\f1ed"; -} +.fa-paintbrush::before { + content: "\f1fc"; } -.fa-google-wallet:before { - content: "\f1ee"; -} +.fa-paint-brush::before { + content: "\f1fc"; } -.fa-cc-visa:before { - content: "\f1f0"; -} +.fa-lock::before { + content: "\f023"; } -.fa-cc-mastercard:before { - content: "\f1f1"; -} +.fa-gas-pump::before { + content: "\f52f"; } -.fa-cc-discover:before { - content: "\f1f2"; -} +.fa-hot-tub-person::before { + content: "\f593"; } -.fa-cc-amex:before { - content: "\f1f3"; -} +.fa-hot-tub::before { + content: "\f593"; } -.fa-cc-paypal:before { - content: "\f1f4"; -} +.fa-map-location::before { + content: "\f59f"; } -.fa-cc-stripe:before { - content: "\f1f5"; -} +.fa-map-marked::before { + content: "\f59f"; } -.fa-bell-slash:before { - content: "\f1f6"; -} +.fa-house-flood-water::before { + content: "\e50e"; } -.fa-bell-slash-o:before { - content: "\f1f7"; -} +.fa-tree::before { + content: "\f1bb"; } -.fa-trash:before { - content: "\f1f8"; -} +.fa-bridge-lock::before { + content: "\e4cc"; } -.fa-copyright:before { - content: "\f1f9"; -} +.fa-sack-dollar::before { + content: "\f81d"; } -.fa-at:before { - content: "\f1fa"; -} +.fa-pen-to-square::before { + content: "\f044"; } -.fa-eyedropper:before { - content: "\f1fb"; -} +.fa-edit::before { + content: "\f044"; } -.fa-paint-brush:before { - content: "\f1fc"; -} +.fa-car-side::before { + content: "\f5e4"; } -.fa-birthday-cake:before { - content: "\f1fd"; -} +.fa-share-nodes::before { + content: "\f1e0"; } -.fa-area-chart:before { - content: "\f1fe"; -} +.fa-share-alt::before { + content: "\f1e0"; } -.fa-pie-chart:before { - content: "\f200"; -} +.fa-heart-circle-minus::before { + content: "\e4ff"; } -.fa-line-chart:before { - content: "\f201"; -} +.fa-hourglass-half::before { + content: "\f252"; } -.fa-lastfm:before { - content: "\f202"; -} +.fa-hourglass-2::before { + content: "\f252"; } -.fa-lastfm-square:before { - content: "\f203"; -} +.fa-microscope::before { + content: "\f610"; } -.fa-toggle-off:before { - content: "\f204"; -} +.fa-sink::before { + content: "\e06d"; } -.fa-toggle-on:before { - content: "\f205"; -} +.fa-bag-shopping::before { + content: "\f290"; } -.fa-bicycle:before { - content: "\f206"; -} +.fa-shopping-bag::before { + content: "\f290"; } -.fa-bus:before { - content: "\f207"; -} +.fa-arrow-down-z-a::before { + content: "\f881"; } -.fa-ioxhost:before { - content: "\f208"; -} +.fa-sort-alpha-desc::before { + content: "\f881"; } -.fa-angellist:before { - content: "\f209"; -} +.fa-sort-alpha-down-alt::before { + content: "\f881"; } -.fa-cc:before { - content: "\f20a"; -} +.fa-mitten::before { + content: "\f7b5"; } -.fa-shekel:before, -.fa-sheqel:before, -.fa-ils:before { - content: "\f20b"; -} +.fa-person-rays::before { + content: "\e54d"; } -.fa-meanpath:before { - content: "\f20c"; -} +.fa-users::before { + content: "\f0c0"; } -.fa-buysellads:before { - content: "\f20d"; -} +.fa-eye-slash::before { + content: "\f070"; } -.fa-connectdevelop:before { - content: "\f20e"; -} +.fa-flask-vial::before { + content: "\e4f3"; } -.fa-dashcube:before { - content: "\f210"; -} +.fa-hand::before { + content: "\f256"; } -.fa-forumbee:before { - content: "\f211"; -} +.fa-hand-paper::before { + content: "\f256"; } -.fa-leanpub:before { - content: "\f212"; -} +.fa-om::before { + content: "\f679"; } -.fa-sellsy:before { - content: "\f213"; -} +.fa-worm::before { + content: "\e599"; } -.fa-shirtsinbulk:before { - content: "\f214"; -} +.fa-house-circle-xmark::before { + content: "\e50b"; } -.fa-simplybuilt:before { - content: "\f215"; -} +.fa-plug::before { + content: "\f1e6"; } -.fa-skyatlas:before { - content: "\f216"; -} +.fa-chevron-up::before { + content: "\f077"; } -.fa-cart-plus:before { - content: "\f217"; -} +.fa-hand-spock::before { + content: "\f259"; } -.fa-cart-arrow-down:before { - content: "\f218"; -} +.fa-stopwatch::before { + content: "\f2f2"; } -.fa-diamond:before { - content: "\f219"; -} +.fa-face-kiss::before { + content: "\f596"; } -.fa-ship:before { - content: "\f21a"; -} +.fa-kiss::before { + content: "\f596"; } -.fa-user-secret:before { - content: "\f21b"; -} +.fa-bridge-circle-xmark::before { + content: "\e4cb"; } -.fa-motorcycle:before { - content: "\f21c"; -} +.fa-face-grin-tongue::before { + content: "\f589"; } -.fa-street-view:before { - content: "\f21d"; -} +.fa-grin-tongue::before { + content: "\f589"; } -.fa-heartbeat:before { - content: "\f21e"; -} +.fa-chess-bishop::before { + content: "\f43a"; } -.fa-venus:before { - content: "\f221"; -} +.fa-face-grin-wink::before { + content: "\f58c"; } -.fa-mars:before { - content: "\f222"; -} +.fa-grin-wink::before { + content: "\f58c"; } -.fa-mercury:before { - content: "\f223"; -} +.fa-ear-deaf::before { + content: "\f2a4"; } -.fa-intersex:before, -.fa-transgender:before { - content: "\f224"; -} +.fa-deaf::before { + content: "\f2a4"; } -.fa-transgender-alt:before { - content: "\f225"; -} +.fa-deafness::before { + content: "\f2a4"; } -.fa-venus-double:before { - content: "\f226"; -} +.fa-hard-of-hearing::before { + content: "\f2a4"; } -.fa-mars-double:before { - content: "\f227"; -} +.fa-road-circle-check::before { + content: "\e564"; } -.fa-venus-mars:before { - content: "\f228"; -} +.fa-dice-five::before { + content: "\f523"; } -.fa-mars-stroke:before { - content: "\f229"; -} +.fa-square-rss::before { + content: "\f143"; } -.fa-mars-stroke-v:before { - content: "\f22a"; -} +.fa-rss-square::before { + content: "\f143"; } -.fa-mars-stroke-h:before { - content: "\f22b"; -} +.fa-land-mine-on::before { + content: "\e51b"; } -.fa-neuter:before { - content: "\f22c"; -} +.fa-i-cursor::before { + content: "\f246"; } -.fa-genderless:before { - content: "\f22d"; -} +.fa-stamp::before { + content: "\f5bf"; } -.fa-facebook-official:before { - content: "\f230"; -} +.fa-stairs::before { + content: "\e289"; } -.fa-pinterest-p:before { - content: "\f231"; -} +.fa-i::before { + content: "\49"; } -.fa-whatsapp:before { - content: "\f232"; -} +.fa-hryvnia-sign::before { + content: "\f6f2"; } -.fa-server:before { - content: "\f233"; -} +.fa-hryvnia::before { + content: "\f6f2"; } -.fa-user-plus:before { - content: "\f234"; -} +.fa-pills::before { + content: "\f484"; } -.fa-user-times:before { - content: "\f235"; -} +.fa-face-grin-wide::before { + content: "\f581"; } -.fa-hotel:before, -.fa-bed:before { - content: "\f236"; -} +.fa-grin-alt::before { + content: "\f581"; } -.fa-viacoin:before { - content: "\f237"; -} +.fa-tooth::before { + content: "\f5c9"; } -.fa-train:before { - content: "\f238"; -} +.fa-v::before { + content: "\56"; } -.fa-subway:before { - content: "\f239"; -} +.fa-bangladeshi-taka-sign::before { + content: "\e2e6"; } -.fa-medium:before { - content: "\f23a"; -} +.fa-bicycle::before { + content: "\f206"; } -.fa-yc:before, -.fa-y-combinator:before { - content: "\f23b"; -} +.fa-staff-snake::before { + content: "\e579"; } -.fa-optin-monster:before { - content: "\f23c"; -} +.fa-rod-asclepius::before { + content: "\e579"; } -.fa-opencart:before { - content: "\f23d"; -} +.fa-rod-snake::before { + content: "\e579"; } -.fa-expeditedssl:before { - content: "\f23e"; -} - -.fa-battery-4:before, -.fa-battery:before, -.fa-battery-full:before { - content: "\f240"; -} - -.fa-battery-3:before, -.fa-battery-three-quarters:before { - content: "\f241"; -} - -.fa-battery-2:before, -.fa-battery-half:before { - content: "\f242"; -} - -.fa-battery-1:before, -.fa-battery-quarter:before { - content: "\f243"; -} - -.fa-battery-0:before, -.fa-battery-empty:before { - content: "\f244"; -} - -.fa-mouse-pointer:before { - content: "\f245"; -} - -.fa-i-cursor:before { - content: "\f246"; -} - -.fa-object-group:before { - content: "\f247"; -} - -.fa-object-ungroup:before { - content: "\f248"; -} - -.fa-sticky-note:before { - content: "\f249"; -} - -.fa-sticky-note-o:before { - content: "\f24a"; -} +.fa-staff-aesculapius::before { + content: "\e579"; } -.fa-cc-jcb:before { - content: "\f24b"; -} +.fa-head-side-cough-slash::before { + content: "\e062"; } -.fa-cc-diners-club:before { - content: "\f24c"; -} - -.fa-clone:before { - content: "\f24d"; -} - -.fa-balance-scale:before { - content: "\f24e"; -} - -.fa-hourglass-o:before { - content: "\f250"; -} - -.fa-hourglass-1:before, -.fa-hourglass-start:before { - content: "\f251"; -} - -.fa-hourglass-2:before, -.fa-hourglass-half:before { - content: "\f252"; -} - -.fa-hourglass-3:before, -.fa-hourglass-end:before { - content: "\f253"; -} - -.fa-hourglass:before { - content: "\f254"; -} - -.fa-hand-grab-o:before, -.fa-hand-rock-o:before { - content: "\f255"; -} - -.fa-hand-stop-o:before, -.fa-hand-paper-o:before { - content: "\f256"; -} - -.fa-hand-scissors-o:before { - content: "\f257"; -} - -.fa-hand-lizard-o:before { - content: "\f258"; -} - -.fa-hand-spock-o:before { - content: "\f259"; -} - -.fa-hand-pointer-o:before { - content: "\f25a"; -} - -.fa-hand-peace-o:before { - content: "\f25b"; -} - -.fa-trademark:before { - content: "\f25c"; -} - -.fa-registered:before { - content: "\f25d"; -} +.fa-truck-medical::before { + content: "\f0f9"; } -.fa-creative-commons:before { - content: "\f25e"; -} +.fa-ambulance::before { + content: "\f0f9"; } -.fa-gg:before { - content: "\f260"; -} +.fa-wheat-awn-circle-exclamation::before { + content: "\e598"; } -.fa-gg-circle:before { - content: "\f261"; -} +.fa-snowman::before { + content: "\f7d0"; } -.fa-tripadvisor:before { - content: "\f262"; -} +.fa-mortar-pestle::before { + content: "\f5a7"; } -.fa-odnoklassniki:before { - content: "\f263"; -} +.fa-road-barrier::before { + content: "\e562"; } -.fa-odnoklassniki-square:before { - content: "\f264"; -} +.fa-school::before { + content: "\f549"; } -.fa-get-pocket:before { - content: "\f265"; -} +.fa-igloo::before { + content: "\f7ae"; } -.fa-wikipedia-w:before { - content: "\f266"; -} +.fa-joint::before { + content: "\f595"; } -.fa-safari:before { - content: "\f267"; -} +.fa-angle-right::before { + content: "\f105"; } -.fa-chrome:before { - content: "\f268"; -} +.fa-horse::before { + content: "\f6f0"; } -.fa-firefox:before { - content: "\f269"; -} +.fa-q::before { + content: "\51"; } -.fa-opera:before { - content: "\f26a"; -} +.fa-g::before { + content: "\47"; } -.fa-internet-explorer:before { - content: "\f26b"; -} +.fa-notes-medical::before { + content: "\f481"; } -.fa-tv:before, -.fa-television:before { - content: "\f26c"; -} +.fa-temperature-half::before { + content: "\f2c9"; } -.fa-contao:before { - content: "\f26d"; -} +.fa-temperature-2::before { + content: "\f2c9"; } -.fa-500px:before { - content: "\f26e"; -} +.fa-thermometer-2::before { + content: "\f2c9"; } -.fa-amazon:before { - content: "\f270"; -} +.fa-thermometer-half::before { + content: "\f2c9"; } -.fa-calendar-plus-o:before { - content: "\f271"; -} +.fa-dong-sign::before { + content: "\e169"; } -.fa-calendar-minus-o:before { - content: "\f272"; -} +.fa-capsules::before { + content: "\f46b"; } -.fa-calendar-times-o:before { - content: "\f273"; -} +.fa-poo-storm::before { + content: "\f75a"; } -.fa-calendar-check-o:before { - content: "\f274"; -} +.fa-poo-bolt::before { + content: "\f75a"; } -.fa-industry:before { - content: "\f275"; -} +.fa-face-frown-open::before { + content: "\f57a"; } -.fa-map-pin:before { - content: "\f276"; -} +.fa-frown-open::before { + content: "\f57a"; } -.fa-map-signs:before { - content: "\f277"; -} +.fa-hand-point-up::before { + content: "\f0a6"; } -.fa-map-o:before { - content: "\f278"; -} +.fa-money-bill::before { + content: "\f0d6"; } -.fa-map:before { - content: "\f279"; -} +.fa-bookmark::before { + content: "\f02e"; } -.fa-commenting:before { - content: "\f27a"; -} +.fa-align-justify::before { + content: "\f039"; } -.fa-commenting-o:before { - content: "\f27b"; -} +.fa-umbrella-beach::before { + content: "\f5ca"; } -.fa-houzz:before { - content: "\f27c"; -} +.fa-helmet-un::before { + content: "\e503"; } -.fa-vimeo:before { - content: "\f27d"; -} +.fa-bullseye::before { + content: "\f140"; } -.fa-black-tie:before { - content: "\f27e"; -} +.fa-bacon::before { + content: "\f7e5"; } -.fa-fonticons:before { - content: "\f280"; -} +.fa-hand-point-down::before { + content: "\f0a7"; } -.fa-reddit-alien:before { - content: "\f281"; -} +.fa-arrow-up-from-bracket::before { + content: "\e09a"; } -.fa-edge:before { - content: "\f282"; -} +.fa-folder::before { + content: "\f07b"; } -.fa-credit-card-alt:before { - content: "\f283"; -} +.fa-folder-blank::before { + content: "\f07b"; } -.fa-codiepie:before { - content: "\f284"; -} +.fa-file-waveform::before { + content: "\f478"; } -.fa-modx:before { - content: "\f285"; -} +.fa-file-medical-alt::before { + content: "\f478"; } -.fa-fort-awesome:before { - content: "\f286"; -} +.fa-radiation::before { + content: "\f7b9"; } -.fa-usb:before { - content: "\f287"; -} +.fa-chart-simple::before { + content: "\e473"; } -.fa-product-hunt:before { - content: "\f288"; -} +.fa-mars-stroke::before { + content: "\f229"; } -.fa-mixcloud:before { - content: "\f289"; -} +.fa-vial::before { + content: "\f492"; } -.fa-scribd:before { - content: "\f28a"; -} +.fa-gauge::before { + content: "\f624"; } -.fa-pause-circle:before { - content: "\f28b"; -} +.fa-dashboard::before { + content: "\f624"; } -.fa-pause-circle-o:before { - content: "\f28c"; -} +.fa-gauge-med::before { + content: "\f624"; } -.fa-stop-circle:before { - content: "\f28d"; -} +.fa-tachometer-alt-average::before { + content: "\f624"; } -.fa-stop-circle-o:before { - content: "\f28e"; -} +.fa-wand-magic-sparkles::before { + content: "\e2ca"; } -.fa-shopping-bag:before { - content: "\f290"; -} +.fa-magic-wand-sparkles::before { + content: "\e2ca"; } -.fa-shopping-basket:before { - content: "\f291"; -} +.fa-e::before { + content: "\45"; } -.fa-hashtag:before { - content: "\f292"; -} +.fa-pen-clip::before { + content: "\f305"; } -.fa-bluetooth:before { - content: "\f293"; -} +.fa-pen-alt::before { + content: "\f305"; } -.fa-bluetooth-b:before { - content: "\f294"; -} +.fa-bridge-circle-exclamation::before { + content: "\e4ca"; } -.fa-percent:before { - content: "\f295"; -} +.fa-user::before { + content: "\f007"; } -.fa-gitlab:before { - content: "\f296"; -} +.fa-school-circle-check::before { + content: "\e56b"; } -.fa-wpbeginner:before { - content: "\f297"; -} +.fa-dumpster::before { + content: "\f793"; } -.fa-wpforms:before { - content: "\f298"; -} +.fa-van-shuttle::before { + content: "\f5b6"; } -.fa-envira:before { - content: "\f299"; -} +.fa-shuttle-van::before { + content: "\f5b6"; } -.fa-universal-access:before { - content: "\f29a"; -} +.fa-building-user::before { + content: "\e4da"; } -.fa-wheelchair-alt:before { - content: "\f29b"; -} +.fa-square-caret-left::before { + content: "\f191"; } -.fa-question-circle-o:before { - content: "\f29c"; -} +.fa-caret-square-left::before { + content: "\f191"; } -.fa-blind:before { - content: "\f29d"; -} +.fa-highlighter::before { + content: "\f591"; } -.fa-audio-description:before { - content: "\f29e"; -} +.fa-key::before { + content: "\f084"; } -.fa-volume-control-phone:before { - content: "\f2a0"; -} +.fa-bullhorn::before { + content: "\f0a1"; } -.fa-braille:before { - content: "\f2a1"; -} +.fa-globe::before { + content: "\f0ac"; } -.fa-assistive-listening-systems:before { - content: "\f2a2"; -} +.fa-synagogue::before { + content: "\f69b"; } -.fa-asl-interpreting:before, -.fa-american-sign-language-interpreting:before { - content: "\f2a3"; -} +.fa-person-half-dress::before { + content: "\e548"; } -.fa-deafness:before, -.fa-hard-of-hearing:before, -.fa-deaf:before { - content: "\f2a4"; -} +.fa-road-bridge::before { + content: "\e563"; } -.fa-glide:before { - content: "\f2a5"; -} +.fa-location-arrow::before { + content: "\f124"; } -.fa-glide-g:before { - content: "\f2a6"; -} +.fa-c::before { + content: "\43"; } -.fa-signing:before, -.fa-sign-language:before { - content: "\f2a7"; -} +.fa-tablet-button::before { + content: "\f10a"; } -.fa-low-vision:before { - content: "\f2a8"; -} +.fa-building-lock::before { + content: "\e4d6"; } -.fa-viadeo:before { - content: "\f2a9"; -} +.fa-pizza-slice::before { + content: "\f818"; } -.fa-viadeo-square:before { - content: "\f2aa"; -} +.fa-money-bill-wave::before { + content: "\f53a"; } -.fa-snapchat:before { - content: "\f2ab"; -} +.fa-chart-area::before { + content: "\f1fe"; } -.fa-snapchat-ghost:before { - content: "\f2ac"; -} +.fa-area-chart::before { + content: "\f1fe"; } -.fa-snapchat-square:before { - content: "\f2ad"; -} +.fa-house-flag::before { + content: "\e50d"; } -.fa-pied-piper:before { - content: "\f2ae"; -} +.fa-person-circle-minus::before { + content: "\e540"; } -.fa-first-order:before { - content: "\f2b0"; -} +.fa-ban::before { + content: "\f05e"; } -.fa-yoast:before { - content: "\f2b1"; -} +.fa-cancel::before { + content: "\f05e"; } -.fa-themeisle:before { - content: "\f2b2"; -} +.fa-camera-rotate::before { + content: "\e0d8"; } -.fa-google-plus-circle:before, -.fa-google-plus-official:before { - content: "\f2b3"; -} +.fa-spray-can-sparkles::before { + content: "\f5d0"; } -.fa-fa:before, -.fa-font-awesome:before { - content: "\f2b4"; -} +.fa-air-freshener::before { + content: "\f5d0"; } -.fa-handshake-o:before { - content: "\f2b5"; -} +.fa-star::before { + content: "\f005"; } -.fa-envelope-open:before { - content: "\f2b6"; -} +.fa-repeat::before { + content: "\f363"; } -.fa-envelope-open-o:before { - content: "\f2b7"; -} +.fa-cross::before { + content: "\f654"; } -.fa-linode:before { - content: "\f2b8"; -} +.fa-box::before { + content: "\f466"; } -.fa-address-book:before { - content: "\f2b9"; -} +.fa-venus-mars::before { + content: "\f228"; } -.fa-address-book-o:before { - content: "\f2ba"; -} +.fa-arrow-pointer::before { + content: "\f245"; } -.fa-vcard:before, -.fa-address-card:before { - content: "\f2bb"; -} +.fa-mouse-pointer::before { + content: "\f245"; } -.fa-vcard-o:before, -.fa-address-card-o:before { - content: "\f2bc"; -} +.fa-maximize::before { + content: "\f31e"; } -.fa-user-circle:before { - content: "\f2bd"; -} +.fa-expand-arrows-alt::before { + content: "\f31e"; } -.fa-user-circle-o:before { - content: "\f2be"; -} +.fa-charging-station::before { + content: "\f5e7"; } -.fa-user-o:before { - content: "\f2c0"; -} +.fa-shapes::before { + content: "\f61f"; } -.fa-id-badge:before { - content: "\f2c1"; -} +.fa-triangle-circle-square::before { + content: "\f61f"; } -.fa-drivers-license:before, -.fa-id-card:before { - content: "\f2c2"; -} +.fa-shuffle::before { + content: "\f074"; } -.fa-drivers-license-o:before, -.fa-id-card-o:before { - content: "\f2c3"; -} +.fa-random::before { + content: "\f074"; } -.fa-quora:before { - content: "\f2c4"; -} +.fa-person-running::before { + content: "\f70c"; } -.fa-free-code-camp:before { - content: "\f2c5"; -} +.fa-running::before { + content: "\f70c"; } -.fa-telegram:before { - content: "\f2c6"; -} - -.fa-thermometer-4:before, -.fa-thermometer:before, -.fa-thermometer-full:before { - content: "\f2c7"; -} - -.fa-thermometer-3:before, -.fa-thermometer-three-quarters:before { - content: "\f2c8"; -} - -.fa-thermometer-2:before, -.fa-thermometer-half:before { - content: "\f2c9"; -} - -.fa-thermometer-1:before, -.fa-thermometer-quarter:before { - content: "\f2ca"; -} - -.fa-thermometer-0:before, -.fa-thermometer-empty:before { - content: "\f2cb"; -} - -.fa-shower:before { - content: "\f2cc"; -} - -.fa-bathtub:before, -.fa-s15:before, -.fa-bath:before { - content: "\f2cd"; -} - -.fa-podcast:before { - content: "\f2ce"; -} - -.fa-window-maximize:before { - content: "\f2d0"; -} - -.fa-window-minimize:before { - content: "\f2d1"; -} - -.fa-window-restore:before { - content: "\f2d2"; -} - -.fa-times-rectangle:before, -.fa-window-close:before { - content: "\f2d3"; -} - -.fa-times-rectangle-o:before, -.fa-window-close-o:before { - content: "\f2d4"; -} +.fa-mobile-retro::before { + content: "\e527"; } -.fa-bandcamp:before { - content: "\f2d5"; -} +.fa-grip-lines-vertical::before { + content: "\f7a5"; } -.fa-grav:before { - content: "\f2d6"; -} +.fa-spider::before { + content: "\f717"; } -.fa-etsy:before { - content: "\f2d7"; -} +.fa-hands-bound::before { + content: "\e4f9"; } -.fa-imdb:before { - content: "\f2d8"; -} +.fa-file-invoice-dollar::before { + content: "\f571"; } -.fa-ravelry:before { - content: "\f2d9"; -} +.fa-plane-circle-exclamation::before { + content: "\e556"; } -.fa-eercast:before { - content: "\f2da"; -} +.fa-x-ray::before { + content: "\f497"; } -.fa-microchip:before { - content: "\f2db"; -} +.fa-spell-check::before { + content: "\f891"; } -.fa-snowflake-o:before { - content: "\f2dc"; -} +.fa-slash::before { + content: "\f715"; } -.fa-superpowers:before { - content: "\f2dd"; -} +.fa-computer-mouse::before { + content: "\f8cc"; } -.fa-wpexplorer:before { - content: "\f2de"; -} +.fa-mouse::before { + content: "\f8cc"; } -.fa-meetup:before { - content: "\f2e0"; -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} - -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} +.fa-arrow-right-to-bracket::before { + content: "\f090"; } + +.fa-sign-in::before { + content: "\f090"; } + +.fa-shop-slash::before { + content: "\e070"; } + +.fa-store-alt-slash::before { + content: "\e070"; } + +.fa-server::before { + content: "\f233"; } + +.fa-virus-covid-slash::before { + content: "\e4a9"; } + +.fa-shop-lock::before { + content: "\e4a5"; } + +.fa-hourglass-start::before { + content: "\f251"; } + +.fa-hourglass-1::before { + content: "\f251"; } + +.fa-blender-phone::before { + content: "\f6b6"; } + +.fa-building-wheat::before { + content: "\e4db"; } + +.fa-person-breastfeeding::before { + content: "\e53a"; } + +.fa-right-to-bracket::before { + content: "\f2f6"; } + +.fa-sign-in-alt::before { + content: "\f2f6"; } + +.fa-venus::before { + content: "\f221"; } + +.fa-passport::before { + content: "\f5ab"; } + +.fa-heart-pulse::before { + content: "\f21e"; } + +.fa-heartbeat::before { + content: "\f21e"; } + +.fa-people-carry-box::before { + content: "\f4ce"; } + +.fa-people-carry::before { + content: "\f4ce"; } + +.fa-temperature-high::before { + content: "\f769"; } + +.fa-microchip::before { + content: "\f2db"; } + +.fa-crown::before { + content: "\f521"; } + +.fa-weight-hanging::before { + content: "\f5cd"; } + +.fa-xmarks-lines::before { + content: "\e59a"; } + +.fa-file-prescription::before { + content: "\f572"; } + +.fa-weight-scale::before { + content: "\f496"; } + +.fa-weight::before { + content: "\f496"; } + +.fa-user-group::before { + content: "\f500"; } + +.fa-user-friends::before { + content: "\f500"; } + +.fa-arrow-up-a-z::before { + content: "\f15e"; } + +.fa-sort-alpha-up::before { + content: "\f15e"; } + +.fa-chess-knight::before { + content: "\f441"; } + +.fa-face-laugh-squint::before { + content: "\f59b"; } + +.fa-laugh-squint::before { + content: "\f59b"; } + +.fa-wheelchair::before { + content: "\f193"; } + +.fa-circle-arrow-up::before { + content: "\f0aa"; } + +.fa-arrow-circle-up::before { + content: "\f0aa"; } + +.fa-toggle-on::before { + content: "\f205"; } + +.fa-person-walking::before { + content: "\f554"; } + +.fa-walking::before { + content: "\f554"; } + +.fa-l::before { + content: "\4c"; } + +.fa-fire::before { + content: "\f06d"; } + +.fa-bed-pulse::before { + content: "\f487"; } + +.fa-procedures::before { + content: "\f487"; } + +.fa-shuttle-space::before { + content: "\f197"; } + +.fa-space-shuttle::before { + content: "\f197"; } + +.fa-face-laugh::before { + content: "\f599"; } + +.fa-laugh::before { + content: "\f599"; } + +.fa-folder-open::before { + content: "\f07c"; } + +.fa-heart-circle-plus::before { + content: "\e500"; } + +.fa-code-fork::before { + content: "\e13b"; } + +.fa-city::before { + content: "\f64f"; } + +.fa-microphone-lines::before { + content: "\f3c9"; } + +.fa-microphone-alt::before { + content: "\f3c9"; } + +.fa-pepper-hot::before { + content: "\f816"; } + +.fa-unlock::before { + content: "\f09c"; } + +.fa-colon-sign::before { + content: "\e140"; } + +.fa-headset::before { + content: "\f590"; } + +.fa-store-slash::before { + content: "\e071"; } + +.fa-road-circle-xmark::before { + content: "\e566"; } + +.fa-user-minus::before { + content: "\f503"; } + +.fa-mars-stroke-up::before { + content: "\f22a"; } + +.fa-mars-stroke-v::before { + content: "\f22a"; } + +.fa-champagne-glasses::before { + content: "\f79f"; } + +.fa-glass-cheers::before { + content: "\f79f"; } + +.fa-clipboard::before { + content: "\f328"; } + +.fa-house-circle-exclamation::before { + content: "\e50a"; } + +.fa-file-arrow-up::before { + content: "\f574"; } + +.fa-file-upload::before { + content: "\f574"; } + +.fa-wifi::before { + content: "\f1eb"; } + +.fa-wifi-3::before { + content: "\f1eb"; } + +.fa-wifi-strong::before { + content: "\f1eb"; } + +.fa-bath::before { + content: "\f2cd"; } + +.fa-bathtub::before { + content: "\f2cd"; } + +.fa-underline::before { + content: "\f0cd"; } + +.fa-user-pen::before { + content: "\f4ff"; } + +.fa-user-edit::before { + content: "\f4ff"; } + +.fa-signature::before { + content: "\f5b7"; } + +.fa-stroopwafel::before { + content: "\f551"; } + +.fa-bold::before { + content: "\f032"; } + +.fa-anchor-lock::before { + content: "\e4ad"; } + +.fa-building-ngo::before { + content: "\e4d7"; } + +.fa-manat-sign::before { + content: "\e1d5"; } + +.fa-not-equal::before { + content: "\f53e"; } + +.fa-border-top-left::before { + content: "\f853"; } + +.fa-border-style::before { + content: "\f853"; } + +.fa-map-location-dot::before { + content: "\f5a0"; } + +.fa-map-marked-alt::before { + content: "\f5a0"; } + +.fa-jedi::before { + content: "\f669"; } + +.fa-square-poll-vertical::before { + content: "\f681"; } + +.fa-poll::before { + content: "\f681"; } + +.fa-mug-hot::before { + content: "\f7b6"; } + +.fa-car-battery::before { + content: "\f5df"; } + +.fa-battery-car::before { + content: "\f5df"; } + +.fa-gift::before { + content: "\f06b"; } + +.fa-dice-two::before { + content: "\f528"; } + +.fa-chess-queen::before { + content: "\f445"; } + +.fa-glasses::before { + content: "\f530"; } + +.fa-chess-board::before { + content: "\f43c"; } + +.fa-building-circle-check::before { + content: "\e4d2"; } + +.fa-person-chalkboard::before { + content: "\e53d"; } + +.fa-mars-stroke-right::before { + content: "\f22b"; } + +.fa-mars-stroke-h::before { + content: "\f22b"; } + +.fa-hand-back-fist::before { + content: "\f255"; } + +.fa-hand-rock::before { + content: "\f255"; } + +.fa-square-caret-up::before { + content: "\f151"; } + +.fa-caret-square-up::before { + content: "\f151"; } + +.fa-cloud-showers-water::before { + content: "\e4e4"; } + +.fa-chart-bar::before { + content: "\f080"; } + +.fa-bar-chart::before { + content: "\f080"; } + +.fa-hands-bubbles::before { + content: "\e05e"; } + +.fa-hands-wash::before { + content: "\e05e"; } + +.fa-less-than-equal::before { + content: "\f537"; } + +.fa-train::before { + content: "\f238"; } + +.fa-eye-low-vision::before { + content: "\f2a8"; } + +.fa-low-vision::before { + content: "\f2a8"; } + +.fa-crow::before { + content: "\f520"; } + +.fa-sailboat::before { + content: "\e445"; } + +.fa-window-restore::before { + content: "\f2d2"; } + +.fa-square-plus::before { + content: "\f0fe"; } + +.fa-plus-square::before { + content: "\f0fe"; } + +.fa-torii-gate::before { + content: "\f6a1"; } + +.fa-frog::before { + content: "\f52e"; } + +.fa-bucket::before { + content: "\e4cf"; } + +.fa-image::before { + content: "\f03e"; } + +.fa-microphone::before { + content: "\f130"; } + +.fa-cow::before { + content: "\f6c8"; } + +.fa-caret-up::before { + content: "\f0d8"; } + +.fa-screwdriver::before { + content: "\f54a"; } + +.fa-folder-closed::before { + content: "\e185"; } + +.fa-house-tsunami::before { + content: "\e515"; } + +.fa-square-nfi::before { + content: "\e576"; } + +.fa-arrow-up-from-ground-water::before { + content: "\e4b5"; } + +.fa-martini-glass::before { + content: "\f57b"; } + +.fa-glass-martini-alt::before { + content: "\f57b"; } + +.fa-rotate-left::before { + content: "\f2ea"; } + +.fa-rotate-back::before { + content: "\f2ea"; } + +.fa-rotate-backward::before { + content: "\f2ea"; } + +.fa-undo-alt::before { + content: "\f2ea"; } + +.fa-table-columns::before { + content: "\f0db"; } + +.fa-columns::before { + content: "\f0db"; } + +.fa-lemon::before { + content: "\f094"; } + +.fa-head-side-mask::before { + content: "\e063"; } + +.fa-handshake::before { + content: "\f2b5"; } + +.fa-gem::before { + content: "\f3a5"; } + +.fa-dolly::before { + content: "\f472"; } + +.fa-dolly-box::before { + content: "\f472"; } + +.fa-smoking::before { + content: "\f48d"; } + +.fa-minimize::before { + content: "\f78c"; } + +.fa-compress-arrows-alt::before { + content: "\f78c"; } + +.fa-monument::before { + content: "\f5a6"; } + +.fa-snowplow::before { + content: "\f7d2"; } + +.fa-angles-right::before { + content: "\f101"; } + +.fa-angle-double-right::before { + content: "\f101"; } + +.fa-cannabis::before { + content: "\f55f"; } + +.fa-circle-play::before { + content: "\f144"; } + +.fa-play-circle::before { + content: "\f144"; } + +.fa-tablets::before { + content: "\f490"; } + +.fa-ethernet::before { + content: "\f796"; } + +.fa-euro-sign::before { + content: "\f153"; } + +.fa-eur::before { + content: "\f153"; } + +.fa-euro::before { + content: "\f153"; } + +.fa-chair::before { + content: "\f6c0"; } + +.fa-circle-check::before { + content: "\f058"; } + +.fa-check-circle::before { + content: "\f058"; } + +.fa-circle-stop::before { + content: "\f28d"; } + +.fa-stop-circle::before { + content: "\f28d"; } + +.fa-compass-drafting::before { + content: "\f568"; } + +.fa-drafting-compass::before { + content: "\f568"; } + +.fa-plate-wheat::before { + content: "\e55a"; } + +.fa-icicles::before { + content: "\f7ad"; } + +.fa-person-shelter::before { + content: "\e54f"; } + +.fa-neuter::before { + content: "\f22c"; } + +.fa-id-badge::before { + content: "\f2c1"; } + +.fa-marker::before { + content: "\f5a1"; } + +.fa-face-laugh-beam::before { + content: "\f59a"; } + +.fa-laugh-beam::before { + content: "\f59a"; } + +.fa-helicopter-symbol::before { + content: "\e502"; } + +.fa-universal-access::before { + content: "\f29a"; } + +.fa-circle-chevron-up::before { + content: "\f139"; } + +.fa-chevron-circle-up::before { + content: "\f139"; } + +.fa-lari-sign::before { + content: "\e1c8"; } + +.fa-volcano::before { + content: "\f770"; } + +.fa-person-walking-dashed-line-arrow-right::before { + content: "\e553"; } + +.fa-sterling-sign::before { + content: "\f154"; } + +.fa-gbp::before { + content: "\f154"; } + +.fa-pound-sign::before { + content: "\f154"; } + +.fa-viruses::before { + content: "\e076"; } + +.fa-square-person-confined::before { + content: "\e577"; } + +.fa-user-tie::before { + content: "\f508"; } + +.fa-arrow-down-long::before { + content: "\f175"; } + +.fa-long-arrow-down::before { + content: "\f175"; } + +.fa-tent-arrow-down-to-line::before { + content: "\e57e"; } + +.fa-certificate::before { + content: "\f0a3"; } + +.fa-reply-all::before { + content: "\f122"; } + +.fa-mail-reply-all::before { + content: "\f122"; } + +.fa-suitcase::before { + content: "\f0f2"; } + +.fa-person-skating::before { + content: "\f7c5"; } + +.fa-skating::before { + content: "\f7c5"; } + +.fa-filter-circle-dollar::before { + content: "\f662"; } + +.fa-funnel-dollar::before { + content: "\f662"; } + +.fa-camera-retro::before { + content: "\f083"; } + +.fa-circle-arrow-down::before { + content: "\f0ab"; } + +.fa-arrow-circle-down::before { + content: "\f0ab"; } + +.fa-file-import::before { + content: "\f56f"; } + +.fa-arrow-right-to-file::before { + content: "\f56f"; } + +.fa-square-arrow-up-right::before { + content: "\f14c"; } + +.fa-external-link-square::before { + content: "\f14c"; } + +.fa-box-open::before { + content: "\f49e"; } + +.fa-scroll::before { + content: "\f70e"; } + +.fa-spa::before { + content: "\f5bb"; } + +.fa-location-pin-lock::before { + content: "\e51f"; } + +.fa-pause::before { + content: "\f04c"; } + +.fa-hill-avalanche::before { + content: "\e507"; } + +.fa-temperature-empty::before { + content: "\f2cb"; } + +.fa-temperature-0::before { + content: "\f2cb"; } + +.fa-thermometer-0::before { + content: "\f2cb"; } + +.fa-thermometer-empty::before { + content: "\f2cb"; } + +.fa-bomb::before { + content: "\f1e2"; } + +.fa-registered::before { + content: "\f25d"; } + +.fa-address-card::before { + content: "\f2bb"; } + +.fa-contact-card::before { + content: "\f2bb"; } + +.fa-vcard::before { + content: "\f2bb"; } + +.fa-scale-unbalanced-flip::before { + content: "\f516"; } + +.fa-balance-scale-right::before { + content: "\f516"; } + +.fa-subscript::before { + content: "\f12c"; } + +.fa-diamond-turn-right::before { + content: "\f5eb"; } + +.fa-directions::before { + content: "\f5eb"; } + +.fa-burst::before { + content: "\e4dc"; } + +.fa-house-laptop::before { + content: "\e066"; } + +.fa-laptop-house::before { + content: "\e066"; } + +.fa-face-tired::before { + content: "\f5c8"; } + +.fa-tired::before { + content: "\f5c8"; } + +.fa-money-bills::before { + content: "\e1f3"; } + +.fa-smog::before { + content: "\f75f"; } + +.fa-crutch::before { + content: "\f7f7"; } + +.fa-cloud-arrow-up::before { + content: "\f0ee"; } + +.fa-cloud-upload::before { + content: "\f0ee"; } + +.fa-cloud-upload-alt::before { + content: "\f0ee"; } + +.fa-palette::before { + content: "\f53f"; } + +.fa-arrows-turn-right::before { + content: "\e4c0"; } + +.fa-vest::before { + content: "\e085"; } + +.fa-ferry::before { + content: "\e4ea"; } + +.fa-arrows-down-to-people::before { + content: "\e4b9"; } + +.fa-seedling::before { + content: "\f4d8"; } + +.fa-sprout::before { + content: "\f4d8"; } + +.fa-left-right::before { + content: "\f337"; } + +.fa-arrows-alt-h::before { + content: "\f337"; } + +.fa-boxes-packing::before { + content: "\e4c7"; } + +.fa-circle-arrow-left::before { + content: "\f0a8"; } + +.fa-arrow-circle-left::before { + content: "\f0a8"; } + +.fa-group-arrows-rotate::before { + content: "\e4f6"; } + +.fa-bowl-food::before { + content: "\e4c6"; } + +.fa-candy-cane::before { + content: "\f786"; } + +.fa-arrow-down-wide-short::before { + content: "\f160"; } + +.fa-sort-amount-asc::before { + content: "\f160"; } + +.fa-sort-amount-down::before { + content: "\f160"; } + +.fa-cloud-bolt::before { + content: "\f76c"; } + +.fa-thunderstorm::before { + content: "\f76c"; } + +.fa-text-slash::before { + content: "\f87d"; } + +.fa-remove-format::before { + content: "\f87d"; } + +.fa-face-smile-wink::before { + content: "\f4da"; } + +.fa-smile-wink::before { + content: "\f4da"; } + +.fa-file-word::before { + content: "\f1c2"; } + +.fa-file-powerpoint::before { + content: "\f1c4"; } + +.fa-arrows-left-right::before { + content: "\f07e"; } + +.fa-arrows-h::before { + content: "\f07e"; } + +.fa-house-lock::before { + content: "\e510"; } + +.fa-cloud-arrow-down::before { + content: "\f0ed"; } + +.fa-cloud-download::before { + content: "\f0ed"; } + +.fa-cloud-download-alt::before { + content: "\f0ed"; } + +.fa-children::before { + content: "\e4e1"; } + +.fa-chalkboard::before { + content: "\f51b"; } + +.fa-blackboard::before { + content: "\f51b"; } + +.fa-user-large-slash::before { + content: "\f4fa"; } + +.fa-user-alt-slash::before { + content: "\f4fa"; } + +.fa-envelope-open::before { + content: "\f2b6"; } + +.fa-handshake-simple-slash::before { + content: "\e05f"; } + +.fa-handshake-alt-slash::before { + content: "\e05f"; } + +.fa-mattress-pillow::before { + content: "\e525"; } + +.fa-guarani-sign::before { + content: "\e19a"; } + +.fa-arrows-rotate::before { + content: "\f021"; } + +.fa-refresh::before { + content: "\f021"; } + +.fa-sync::before { + content: "\f021"; } + +.fa-fire-extinguisher::before { + content: "\f134"; } + +.fa-cruzeiro-sign::before { + content: "\e152"; } + +.fa-greater-than-equal::before { + content: "\f532"; } + +.fa-shield-halved::before { + content: "\f3ed"; } + +.fa-shield-alt::before { + content: "\f3ed"; } + +.fa-book-atlas::before { + content: "\f558"; } + +.fa-atlas::before { + content: "\f558"; } + +.fa-virus::before { + content: "\e074"; } + +.fa-envelope-circle-check::before { + content: "\e4e8"; } + +.fa-layer-group::before { + content: "\f5fd"; } + +.fa-arrows-to-dot::before { + content: "\e4be"; } + +.fa-archway::before { + content: "\f557"; } + +.fa-heart-circle-check::before { + content: "\e4fd"; } + +.fa-house-chimney-crack::before { + content: "\f6f1"; } + +.fa-house-damage::before { + content: "\f6f1"; } + +.fa-file-zipper::before { + content: "\f1c6"; } + +.fa-file-archive::before { + content: "\f1c6"; } + +.fa-square::before { + content: "\f0c8"; } + +.fa-martini-glass-empty::before { + content: "\f000"; } + +.fa-glass-martini::before { + content: "\f000"; } + +.fa-couch::before { + content: "\f4b8"; } + +.fa-cedi-sign::before { + content: "\e0df"; } + +.fa-italic::before { + content: "\f033"; } + +.fa-church::before { + content: "\f51d"; } + +.fa-comments-dollar::before { + content: "\f653"; } + +.fa-democrat::before { + content: "\f747"; } + +.fa-z::before { + content: "\5a"; } + +.fa-person-skiing::before { + content: "\f7c9"; } + +.fa-skiing::before { + content: "\f7c9"; } + +.fa-road-lock::before { + content: "\e567"; } + +.fa-a::before { + content: "\41"; } + +.fa-temperature-arrow-down::before { + content: "\e03f"; } + +.fa-temperature-down::before { + content: "\e03f"; } + +.fa-feather-pointed::before { + content: "\f56b"; } + +.fa-feather-alt::before { + content: "\f56b"; } + +.fa-p::before { + content: "\50"; } + +.fa-snowflake::before { + content: "\f2dc"; } + +.fa-newspaper::before { + content: "\f1ea"; } + +.fa-rectangle-ad::before { + content: "\f641"; } + +.fa-ad::before { + content: "\f641"; } + +.fa-circle-arrow-right::before { + content: "\f0a9"; } + +.fa-arrow-circle-right::before { + content: "\f0a9"; } + +.fa-filter-circle-xmark::before { + content: "\e17b"; } + +.fa-locust::before { + content: "\e520"; } + +.fa-sort::before { + content: "\f0dc"; } + +.fa-unsorted::before { + content: "\f0dc"; } + +.fa-list-ol::before { + content: "\f0cb"; } + +.fa-list-1-2::before { + content: "\f0cb"; } + +.fa-list-numeric::before { + content: "\f0cb"; } + +.fa-person-dress-burst::before { + content: "\e544"; } + +.fa-money-check-dollar::before { + content: "\f53d"; } + +.fa-money-check-alt::before { + content: "\f53d"; } + +.fa-vector-square::before { + content: "\f5cb"; } + +.fa-bread-slice::before { + content: "\f7ec"; } + +.fa-language::before { + content: "\f1ab"; } + +.fa-face-kiss-wink-heart::before { + content: "\f598"; } + +.fa-kiss-wink-heart::before { + content: "\f598"; } + +.fa-filter::before { + content: "\f0b0"; } + +.fa-question::before { + content: "\3f"; } + +.fa-file-signature::before { + content: "\f573"; } + +.fa-up-down-left-right::before { + content: "\f0b2"; } + +.fa-arrows-alt::before { + content: "\f0b2"; } + +.fa-house-chimney-user::before { + content: "\e065"; } + +.fa-hand-holding-heart::before { + content: "\f4be"; } + +.fa-puzzle-piece::before { + content: "\f12e"; } + +.fa-money-check::before { + content: "\f53c"; } + +.fa-star-half-stroke::before { + content: "\f5c0"; } + +.fa-star-half-alt::before { + content: "\f5c0"; } + +.fa-code::before { + content: "\f121"; } + +.fa-whiskey-glass::before { + content: "\f7a0"; } + +.fa-glass-whiskey::before { + content: "\f7a0"; } + +.fa-building-circle-exclamation::before { + content: "\e4d3"; } + +.fa-magnifying-glass-chart::before { + content: "\e522"; } + +.fa-arrow-up-right-from-square::before { + content: "\f08e"; } + +.fa-external-link::before { + content: "\f08e"; } + +.fa-cubes-stacked::before { + content: "\e4e6"; } + +.fa-won-sign::before { + content: "\f159"; } + +.fa-krw::before { + content: "\f159"; } + +.fa-won::before { + content: "\f159"; } + +.fa-virus-covid::before { + content: "\e4a8"; } + +.fa-austral-sign::before { + content: "\e0a9"; } + +.fa-f::before { + content: "\46"; } + +.fa-leaf::before { + content: "\f06c"; } + +.fa-road::before { + content: "\f018"; } + +.fa-taxi::before { + content: "\f1ba"; } + +.fa-cab::before { + content: "\f1ba"; } + +.fa-person-circle-plus::before { + content: "\e541"; } + +.fa-chart-pie::before { + content: "\f200"; } + +.fa-pie-chart::before { + content: "\f200"; } + +.fa-bolt-lightning::before { + content: "\e0b7"; } + +.fa-sack-xmark::before { + content: "\e56a"; } + +.fa-file-excel::before { + content: "\f1c3"; } + +.fa-file-contract::before { + content: "\f56c"; } + +.fa-fish-fins::before { + content: "\e4f2"; } + +.fa-building-flag::before { + content: "\e4d5"; } + +.fa-face-grin-beam::before { + content: "\f582"; } + +.fa-grin-beam::before { + content: "\f582"; } + +.fa-object-ungroup::before { + content: "\f248"; } + +.fa-poop::before { + content: "\f619"; } + +.fa-location-pin::before { + content: "\f041"; } + +.fa-map-marker::before { + content: "\f041"; } + +.fa-kaaba::before { + content: "\f66b"; } + +.fa-toilet-paper::before { + content: "\f71e"; } + +.fa-helmet-safety::before { + content: "\f807"; } + +.fa-hard-hat::before { + content: "\f807"; } + +.fa-hat-hard::before { + content: "\f807"; } + +.fa-eject::before { + content: "\f052"; } + +.fa-circle-right::before { + content: "\f35a"; } + +.fa-arrow-alt-circle-right::before { + content: "\f35a"; } + +.fa-plane-circle-check::before { + content: "\e555"; } + +.fa-face-rolling-eyes::before { + content: "\f5a5"; } + +.fa-meh-rolling-eyes::before { + content: "\f5a5"; } + +.fa-object-group::before { + content: "\f247"; } + +.fa-chart-line::before { + content: "\f201"; } + +.fa-line-chart::before { + content: "\f201"; } + +.fa-mask-ventilator::before { + content: "\e524"; } + +.fa-arrow-right::before { + content: "\f061"; } + +.fa-signs-post::before { + content: "\f277"; } + +.fa-map-signs::before { + content: "\f277"; } + +.fa-cash-register::before { + content: "\f788"; } + +.fa-person-circle-question::before { + content: "\e542"; } + +.fa-h::before { + content: "\48"; } + +.fa-tarp::before { + content: "\e57b"; } + +.fa-screwdriver-wrench::before { + content: "\f7d9"; } + +.fa-tools::before { + content: "\f7d9"; } + +.fa-arrows-to-eye::before { + content: "\e4bf"; } + +.fa-plug-circle-bolt::before { + content: "\e55b"; } + +.fa-heart::before { + content: "\f004"; } + +.fa-mars-and-venus::before { + content: "\f224"; } + +.fa-house-user::before { + content: "\e1b0"; } + +.fa-home-user::before { + content: "\e1b0"; } + +.fa-dumpster-fire::before { + content: "\f794"; } + +.fa-house-crack::before { + content: "\e3b1"; } + +.fa-martini-glass-citrus::before { + content: "\f561"; } + +.fa-cocktail::before { + content: "\f561"; } + +.fa-face-surprise::before { + content: "\f5c2"; } + +.fa-surprise::before { + content: "\f5c2"; } + +.fa-bottle-water::before { + content: "\e4c5"; } + +.fa-circle-pause::before { + content: "\f28b"; } + +.fa-pause-circle::before { + content: "\f28b"; } + +.fa-toilet-paper-slash::before { + content: "\e072"; } + +.fa-apple-whole::before { + content: "\f5d1"; } + +.fa-apple-alt::before { + content: "\f5d1"; } + +.fa-kitchen-set::before { + content: "\e51a"; } + +.fa-r::before { + content: "\52"; } + +.fa-temperature-quarter::before { + content: "\f2ca"; } + +.fa-temperature-1::before { + content: "\f2ca"; } + +.fa-thermometer-1::before { + content: "\f2ca"; } + +.fa-thermometer-quarter::before { + content: "\f2ca"; } + +.fa-cube::before { + content: "\f1b2"; } + +.fa-bitcoin-sign::before { + content: "\e0b4"; } + +.fa-shield-dog::before { + content: "\e573"; } + +.fa-solar-panel::before { + content: "\f5ba"; } + +.fa-lock-open::before { + content: "\f3c1"; } + +.fa-elevator::before { + content: "\e16d"; } + +.fa-money-bill-transfer::before { + content: "\e528"; } + +.fa-money-bill-trend-up::before { + content: "\e529"; } + +.fa-house-flood-water-circle-arrow-right::before { + content: "\e50f"; } + +.fa-square-poll-horizontal::before { + content: "\f682"; } + +.fa-poll-h::before { + content: "\f682"; } + +.fa-circle::before { + content: "\f111"; } + +.fa-backward-fast::before { + content: "\f049"; } + +.fa-fast-backward::before { + content: "\f049"; } + +.fa-recycle::before { + content: "\f1b8"; } + +.fa-user-astronaut::before { + content: "\f4fb"; } + +.fa-plane-slash::before { + content: "\e069"; } + +.fa-trademark::before { + content: "\f25c"; } + +.fa-basketball::before { + content: "\f434"; } + +.fa-basketball-ball::before { + content: "\f434"; } + +.fa-satellite-dish::before { + content: "\f7c0"; } + +.fa-circle-up::before { + content: "\f35b"; } + +.fa-arrow-alt-circle-up::before { + content: "\f35b"; } + +.fa-mobile-screen-button::before { + content: "\f3cd"; } + +.fa-mobile-alt::before { + content: "\f3cd"; } + +.fa-volume-high::before { + content: "\f028"; } + +.fa-volume-up::before { + content: "\f028"; } + +.fa-users-rays::before { + content: "\e593"; } + +.fa-wallet::before { + content: "\f555"; } + +.fa-clipboard-check::before { + content: "\f46c"; } + +.fa-file-audio::before { + content: "\f1c7"; } + +.fa-burger::before { + content: "\f805"; } + +.fa-hamburger::before { + content: "\f805"; } + +.fa-wrench::before { + content: "\f0ad"; } + +.fa-bugs::before { + content: "\e4d0"; } + +.fa-rupee-sign::before { + content: "\f156"; } + +.fa-rupee::before { + content: "\f156"; } + +.fa-file-image::before { + content: "\f1c5"; } + +.fa-circle-question::before { + content: "\f059"; } + +.fa-question-circle::before { + content: "\f059"; } + +.fa-plane-departure::before { + content: "\f5b0"; } + +.fa-handshake-slash::before { + content: "\e060"; } + +.fa-book-bookmark::before { + content: "\e0bb"; } + +.fa-code-branch::before { + content: "\f126"; } + +.fa-hat-cowboy::before { + content: "\f8c0"; } + +.fa-bridge::before { + content: "\e4c8"; } + +.fa-phone-flip::before { + content: "\f879"; } + +.fa-phone-alt::before { + content: "\f879"; } + +.fa-truck-front::before { + content: "\e2b7"; } + +.fa-cat::before { + content: "\f6be"; } + +.fa-anchor-circle-exclamation::before { + content: "\e4ab"; } + +.fa-truck-field::before { + content: "\e58d"; } + +.fa-route::before { + content: "\f4d7"; } + +.fa-clipboard-question::before { + content: "\e4e3"; } + +.fa-panorama::before { + content: "\e209"; } + +.fa-comment-medical::before { + content: "\f7f5"; } + +.fa-teeth-open::before { + content: "\f62f"; } + +.fa-file-circle-minus::before { + content: "\e4ed"; } + +.fa-tags::before { + content: "\f02c"; } + +.fa-wine-glass::before { + content: "\f4e3"; } + +.fa-forward-fast::before { + content: "\f050"; } + +.fa-fast-forward::before { + content: "\f050"; } + +.fa-face-meh-blank::before { + content: "\f5a4"; } + +.fa-meh-blank::before { + content: "\f5a4"; } + +.fa-square-parking::before { + content: "\f540"; } + +.fa-parking::before { + content: "\f540"; } + +.fa-house-signal::before { + content: "\e012"; } + +.fa-bars-progress::before { + content: "\f828"; } + +.fa-tasks-alt::before { + content: "\f828"; } + +.fa-faucet-drip::before { + content: "\e006"; } + +.fa-cart-flatbed::before { + content: "\f474"; } + +.fa-dolly-flatbed::before { + content: "\f474"; } + +.fa-ban-smoking::before { + content: "\f54d"; } + +.fa-smoking-ban::before { + content: "\f54d"; } + +.fa-terminal::before { + content: "\f120"; } + +.fa-mobile-button::before { + content: "\f10b"; } + +.fa-house-medical-flag::before { + content: "\e514"; } + +.fa-basket-shopping::before { + content: "\f291"; } + +.fa-shopping-basket::before { + content: "\f291"; } + +.fa-tape::before { + content: "\f4db"; } + +.fa-bus-simple::before { + content: "\f55e"; } + +.fa-bus-alt::before { + content: "\f55e"; } + +.fa-eye::before { + content: "\f06e"; } + +.fa-face-sad-cry::before { + content: "\f5b3"; } + +.fa-sad-cry::before { + content: "\f5b3"; } + +.fa-audio-description::before { + content: "\f29e"; } + +.fa-person-military-to-person::before { + content: "\e54c"; } + +.fa-file-shield::before { + content: "\e4f0"; } + +.fa-user-slash::before { + content: "\f506"; } + +.fa-pen::before { + content: "\f304"; } + +.fa-tower-observation::before { + content: "\e586"; } + +.fa-file-code::before { + content: "\f1c9"; } + +.fa-signal::before { + content: "\f012"; } + +.fa-signal-5::before { + content: "\f012"; } + +.fa-signal-perfect::before { + content: "\f012"; } + +.fa-bus::before { + content: "\f207"; } + +.fa-heart-circle-xmark::before { + content: "\e501"; } + +.fa-house-chimney::before { + content: "\e3af"; } + +.fa-home-lg::before { + content: "\e3af"; } + +.fa-window-maximize::before { + content: "\f2d0"; } + +.fa-face-frown::before { + content: "\f119"; } + +.fa-frown::before { + content: "\f119"; } + +.fa-prescription::before { + content: "\f5b1"; } + +.fa-shop::before { + content: "\f54f"; } + +.fa-store-alt::before { + content: "\f54f"; } + +.fa-floppy-disk::before { + content: "\f0c7"; } + +.fa-save::before { + content: "\f0c7"; } + +.fa-vihara::before { + content: "\f6a7"; } + +.fa-scale-unbalanced::before { + content: "\f515"; } + +.fa-balance-scale-left::before { + content: "\f515"; } + +.fa-sort-up::before { + content: "\f0de"; } + +.fa-sort-asc::before { + content: "\f0de"; } + +.fa-comment-dots::before { + content: "\f4ad"; } + +.fa-commenting::before { + content: "\f4ad"; } + +.fa-plant-wilt::before { + content: "\e5aa"; } + +.fa-diamond::before { + content: "\f219"; } + +.fa-face-grin-squint::before { + content: "\f585"; } + +.fa-grin-squint::before { + content: "\f585"; } + +.fa-hand-holding-dollar::before { + content: "\f4c0"; } + +.fa-hand-holding-usd::before { + content: "\f4c0"; } + +.fa-bacterium::before { + content: "\e05a"; } + +.fa-hand-pointer::before { + content: "\f25a"; } + +.fa-drum-steelpan::before { + content: "\f56a"; } + +.fa-hand-scissors::before { + content: "\f257"; } + +.fa-hands-praying::before { + content: "\f684"; } + +.fa-praying-hands::before { + content: "\f684"; } + +.fa-arrow-rotate-right::before { + content: "\f01e"; } + +.fa-arrow-right-rotate::before { + content: "\f01e"; } + +.fa-arrow-rotate-forward::before { + content: "\f01e"; } + +.fa-redo::before { + content: "\f01e"; } + +.fa-biohazard::before { + content: "\f780"; } + +.fa-location-crosshairs::before { + content: "\f601"; } + +.fa-location::before { + content: "\f601"; } + +.fa-mars-double::before { + content: "\f227"; } + +.fa-child-dress::before { + content: "\e59c"; } + +.fa-users-between-lines::before { + content: "\e591"; } + +.fa-lungs-virus::before { + content: "\e067"; } + +.fa-face-grin-tears::before { + content: "\f588"; } + +.fa-grin-tears::before { + content: "\f588"; } + +.fa-phone::before { + content: "\f095"; } + +.fa-calendar-xmark::before { + content: "\f273"; } + +.fa-calendar-times::before { + content: "\f273"; } + +.fa-child-reaching::before { + content: "\e59d"; } + +.fa-head-side-virus::before { + content: "\e064"; } + +.fa-user-gear::before { + content: "\f4fe"; } + +.fa-user-cog::before { + content: "\f4fe"; } + +.fa-arrow-up-1-9::before { + content: "\f163"; } + +.fa-sort-numeric-up::before { + content: "\f163"; } + +.fa-door-closed::before { + content: "\f52a"; } + +.fa-shield-virus::before { + content: "\e06c"; } + +.fa-dice-six::before { + content: "\f526"; } + +.fa-mosquito-net::before { + content: "\e52c"; } + +.fa-bridge-water::before { + content: "\e4ce"; } + +.fa-person-booth::before { + content: "\f756"; } + +.fa-text-width::before { + content: "\f035"; } + +.fa-hat-wizard::before { + content: "\f6e8"; } + +.fa-pen-fancy::before { + content: "\f5ac"; } + +.fa-person-digging::before { + content: "\f85e"; } + +.fa-digging::before { + content: "\f85e"; } + +.fa-trash::before { + content: "\f1f8"; } + +.fa-gauge-simple::before { + content: "\f629"; } + +.fa-gauge-simple-med::before { + content: "\f629"; } + +.fa-tachometer-average::before { + content: "\f629"; } + +.fa-book-medical::before { + content: "\f7e6"; } + +.fa-poo::before { + content: "\f2fe"; } + +.fa-quote-right::before { + content: "\f10e"; } + +.fa-quote-right-alt::before { + content: "\f10e"; } + +.fa-shirt::before { + content: "\f553"; } + +.fa-t-shirt::before { + content: "\f553"; } + +.fa-tshirt::before { + content: "\f553"; } + +.fa-cubes::before { + content: "\f1b3"; } + +.fa-divide::before { + content: "\f529"; } + +.fa-tenge-sign::before { + content: "\f7d7"; } + +.fa-tenge::before { + content: "\f7d7"; } + +.fa-headphones::before { + content: "\f025"; } + +.fa-hands-holding::before { + content: "\f4c2"; } + +.fa-hands-clapping::before { + content: "\e1a8"; } + +.fa-republican::before { + content: "\f75e"; } + +.fa-arrow-left::before { + content: "\f060"; } + +.fa-person-circle-xmark::before { + content: "\e543"; } + +.fa-ruler::before { + content: "\f545"; } + +.fa-align-left::before { + content: "\f036"; } + +.fa-dice-d6::before { + content: "\f6d1"; } + +.fa-restroom::before { + content: "\f7bd"; } + +.fa-j::before { + content: "\4a"; } + +.fa-users-viewfinder::before { + content: "\e595"; } + +.fa-file-video::before { + content: "\f1c8"; } + +.fa-up-right-from-square::before { + content: "\f35d"; } + +.fa-external-link-alt::before { + content: "\f35d"; } + +.fa-table-cells::before { + content: "\f00a"; } + +.fa-th::before { + content: "\f00a"; } + +.fa-file-pdf::before { + content: "\f1c1"; } + +.fa-book-bible::before { + content: "\f647"; } + +.fa-bible::before { + content: "\f647"; } + +.fa-o::before { + content: "\4f"; } + +.fa-suitcase-medical::before { + content: "\f0fa"; } + +.fa-medkit::before { + content: "\f0fa"; } + +.fa-user-secret::before { + content: "\f21b"; } + +.fa-otter::before { + content: "\f700"; } + +.fa-person-dress::before { + content: "\f182"; } + +.fa-female::before { + content: "\f182"; } + +.fa-comment-dollar::before { + content: "\f651"; } + +.fa-business-time::before { + content: "\f64a"; } + +.fa-briefcase-clock::before { + content: "\f64a"; } + +.fa-table-cells-large::before { + content: "\f009"; } + +.fa-th-large::before { + content: "\f009"; } + +.fa-book-tanakh::before { + content: "\f827"; } + +.fa-tanakh::before { + content: "\f827"; } + +.fa-phone-volume::before { + content: "\f2a0"; } + +.fa-volume-control-phone::before { + content: "\f2a0"; } + +.fa-hat-cowboy-side::before { + content: "\f8c1"; } + +.fa-clipboard-user::before { + content: "\f7f3"; } + +.fa-child::before { + content: "\f1ae"; } + +.fa-lira-sign::before { + content: "\f195"; } + +.fa-satellite::before { + content: "\f7bf"; } + +.fa-plane-lock::before { + content: "\e558"; } + +.fa-tag::before { + content: "\f02b"; } + +.fa-comment::before { + content: "\f075"; } + +.fa-cake-candles::before { + content: "\f1fd"; } + +.fa-birthday-cake::before { + content: "\f1fd"; } + +.fa-cake::before { + content: "\f1fd"; } + +.fa-envelope::before { + content: "\f0e0"; } + +.fa-angles-up::before { + content: "\f102"; } + +.fa-angle-double-up::before { + content: "\f102"; } + +.fa-paperclip::before { + content: "\f0c6"; } + +.fa-arrow-right-to-city::before { + content: "\e4b3"; } + +.fa-ribbon::before { + content: "\f4d6"; } + +.fa-lungs::before { + content: "\f604"; } + +.fa-arrow-up-9-1::before { + content: "\f887"; } + +.fa-sort-numeric-up-alt::before { + content: "\f887"; } + +.fa-litecoin-sign::before { + content: "\e1d3"; } + +.fa-border-none::before { + content: "\f850"; } + +.fa-circle-nodes::before { + content: "\e4e2"; } + +.fa-parachute-box::before { + content: "\f4cd"; } + +.fa-indent::before { + content: "\f03c"; } + +.fa-truck-field-un::before { + content: "\e58e"; } + +.fa-hourglass::before { + content: "\f254"; } + +.fa-hourglass-empty::before { + content: "\f254"; } + +.fa-mountain::before { + content: "\f6fc"; } + +.fa-user-doctor::before { + content: "\f0f0"; } + +.fa-user-md::before { + content: "\f0f0"; } + +.fa-circle-info::before { + content: "\f05a"; } + +.fa-info-circle::before { + content: "\f05a"; } + +.fa-cloud-meatball::before { + content: "\f73b"; } + +.fa-camera::before { + content: "\f030"; } + +.fa-camera-alt::before { + content: "\f030"; } + +.fa-square-virus::before { + content: "\e578"; } + +.fa-meteor::before { + content: "\f753"; } + +.fa-car-on::before { + content: "\e4dd"; } + +.fa-sleigh::before { + content: "\f7cc"; } + +.fa-arrow-down-1-9::before { + content: "\f162"; } + +.fa-sort-numeric-asc::before { + content: "\f162"; } + +.fa-sort-numeric-down::before { + content: "\f162"; } + +.fa-hand-holding-droplet::before { + content: "\f4c1"; } + +.fa-hand-holding-water::before { + content: "\f4c1"; } + +.fa-water::before { + content: "\f773"; } + +.fa-calendar-check::before { + content: "\f274"; } + +.fa-braille::before { + content: "\f2a1"; } + +.fa-prescription-bottle-medical::before { + content: "\f486"; } + +.fa-prescription-bottle-alt::before { + content: "\f486"; } + +.fa-landmark::before { + content: "\f66f"; } + +.fa-truck::before { + content: "\f0d1"; } + +.fa-crosshairs::before { + content: "\f05b"; } + +.fa-person-cane::before { + content: "\e53c"; } + +.fa-tent::before { + content: "\e57d"; } + +.fa-vest-patches::before { + content: "\e086"; } + +.fa-check-double::before { + content: "\f560"; } + +.fa-arrow-down-a-z::before { + content: "\f15d"; } + +.fa-sort-alpha-asc::before { + content: "\f15d"; } + +.fa-sort-alpha-down::before { + content: "\f15d"; } + +.fa-money-bill-wheat::before { + content: "\e52a"; } + +.fa-cookie::before { + content: "\f563"; } + +.fa-arrow-rotate-left::before { + content: "\f0e2"; } + +.fa-arrow-left-rotate::before { + content: "\f0e2"; } + +.fa-arrow-rotate-back::before { + content: "\f0e2"; } + +.fa-arrow-rotate-backward::before { + content: "\f0e2"; } + +.fa-undo::before { + content: "\f0e2"; } + +.fa-hard-drive::before { + content: "\f0a0"; } + +.fa-hdd::before { + content: "\f0a0"; } + +.fa-face-grin-squint-tears::before { + content: "\f586"; } + +.fa-grin-squint-tears::before { + content: "\f586"; } + +.fa-dumbbell::before { + content: "\f44b"; } + +.fa-rectangle-list::before { + content: "\f022"; } + +.fa-list-alt::before { + content: "\f022"; } + +.fa-tarp-droplet::before { + content: "\e57c"; } + +.fa-house-medical-circle-check::before { + content: "\e511"; } + +.fa-person-skiing-nordic::before { + content: "\f7ca"; } + +.fa-skiing-nordic::before { + content: "\f7ca"; } + +.fa-calendar-plus::before { + content: "\f271"; } + +.fa-plane-arrival::before { + content: "\f5af"; } + +.fa-circle-left::before { + content: "\f359"; } + +.fa-arrow-alt-circle-left::before { + content: "\f359"; } + +.fa-train-subway::before { + content: "\f239"; } + +.fa-subway::before { + content: "\f239"; } + +.fa-chart-gantt::before { + content: "\e0e4"; } + +.fa-indian-rupee-sign::before { + content: "\e1bc"; } + +.fa-indian-rupee::before { + content: "\e1bc"; } + +.fa-inr::before { + content: "\e1bc"; } + +.fa-crop-simple::before { + content: "\f565"; } + +.fa-crop-alt::before { + content: "\f565"; } + +.fa-money-bill-1::before { + content: "\f3d1"; } + +.fa-money-bill-alt::before { + content: "\f3d1"; } + +.fa-left-long::before { + content: "\f30a"; } + +.fa-long-arrow-alt-left::before { + content: "\f30a"; } + +.fa-dna::before { + content: "\f471"; } + +.fa-virus-slash::before { + content: "\e075"; } + +.fa-minus::before { + content: "\f068"; } + +.fa-subtract::before { + content: "\f068"; } + +.fa-chess::before { + content: "\f439"; } + +.fa-arrow-left-long::before { + content: "\f177"; } + +.fa-long-arrow-left::before { + content: "\f177"; } + +.fa-plug-circle-check::before { + content: "\e55c"; } + +.fa-street-view::before { + content: "\f21d"; } + +.fa-franc-sign::before { + content: "\e18f"; } + +.fa-volume-off::before { + content: "\f026"; } + +.fa-hands-asl-interpreting::before { + content: "\f2a3"; } + +.fa-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-asl-interpreting::before { + content: "\f2a3"; } + +.fa-hands-american-sign-language-interpreting::before { + content: "\f2a3"; } + +.fa-gear::before { + content: "\f013"; } + +.fa-cog::before { + content: "\f013"; } + +.fa-droplet-slash::before { + content: "\f5c7"; } + +.fa-tint-slash::before { + content: "\f5c7"; } + +.fa-mosque::before { + content: "\f678"; } + +.fa-mosquito::before { + content: "\e52b"; } + +.fa-star-of-david::before { + content: "\f69a"; } + +.fa-person-military-rifle::before { + content: "\e54b"; } + +.fa-cart-shopping::before { + content: "\f07a"; } + +.fa-shopping-cart::before { + content: "\f07a"; } + +.fa-vials::before { + content: "\f493"; } + +.fa-plug-circle-plus::before { + content: "\e55f"; } + +.fa-place-of-worship::before { + content: "\f67f"; } + +.fa-grip-vertical::before { + content: "\f58e"; } + +.fa-arrow-turn-up::before { + content: "\f148"; } + +.fa-level-up::before { + content: "\f148"; } + +.fa-u::before { + content: "\55"; } + +.fa-square-root-variable::before { + content: "\f698"; } + +.fa-square-root-alt::before { + content: "\f698"; } + +.fa-clock::before { + content: "\f017"; } + +.fa-clock-four::before { + content: "\f017"; } + +.fa-backward-step::before { + content: "\f048"; } + +.fa-step-backward::before { + content: "\f048"; } + +.fa-pallet::before { + content: "\f482"; } + +.fa-faucet::before { + content: "\e005"; } + +.fa-baseball-bat-ball::before { + content: "\f432"; } + +.fa-s::before { + content: "\53"; } + +.fa-timeline::before { + content: "\e29c"; } + +.fa-keyboard::before { + content: "\f11c"; } + +.fa-caret-down::before { + content: "\f0d7"; } + +.fa-house-chimney-medical::before { + content: "\f7f2"; } + +.fa-clinic-medical::before { + content: "\f7f2"; } + +.fa-temperature-three-quarters::before { + content: "\f2c8"; } + +.fa-temperature-3::before { + content: "\f2c8"; } + +.fa-thermometer-3::before { + content: "\f2c8"; } + +.fa-thermometer-three-quarters::before { + content: "\f2c8"; } + +.fa-mobile-screen::before { + content: "\f3cf"; } + +.fa-mobile-android-alt::before { + content: "\f3cf"; } + +.fa-plane-up::before { + content: "\e22d"; } + +.fa-piggy-bank::before { + content: "\f4d3"; } + +.fa-battery-half::before { + content: "\f242"; } + +.fa-battery-3::before { + content: "\f242"; } + +.fa-mountain-city::before { + content: "\e52e"; } + +.fa-coins::before { + content: "\f51e"; } + +.fa-khanda::before { + content: "\f66d"; } + +.fa-sliders::before { + content: "\f1de"; } + +.fa-sliders-h::before { + content: "\f1de"; } + +.fa-folder-tree::before { + content: "\f802"; } + +.fa-network-wired::before { + content: "\f6ff"; } + +.fa-map-pin::before { + content: "\f276"; } + +.fa-hamsa::before { + content: "\f665"; } + +.fa-cent-sign::before { + content: "\e3f5"; } + +.fa-flask::before { + content: "\f0c3"; } + +.fa-person-pregnant::before { + content: "\e31e"; } + +.fa-wand-sparkles::before { + content: "\f72b"; } + +.fa-ellipsis-vertical::before { + content: "\f142"; } + +.fa-ellipsis-v::before { + content: "\f142"; } + +.fa-ticket::before { + content: "\f145"; } + +.fa-power-off::before { + content: "\f011"; } + +.fa-right-long::before { + content: "\f30b"; } + +.fa-long-arrow-alt-right::before { + content: "\f30b"; } + +.fa-flag-usa::before { + content: "\f74d"; } + +.fa-laptop-file::before { + content: "\e51d"; } + +.fa-tty::before { + content: "\f1e4"; } + +.fa-teletype::before { + content: "\f1e4"; } + +.fa-diagram-next::before { + content: "\e476"; } + +.fa-person-rifle::before { + content: "\e54e"; } + +.fa-house-medical-circle-exclamation::before { + content: "\e512"; } + +.fa-closed-captioning::before { + content: "\f20a"; } + +.fa-person-hiking::before { + content: "\f6ec"; } + +.fa-hiking::before { + content: "\f6ec"; } + +.fa-venus-double::before { + content: "\f226"; } + +.fa-images::before { + content: "\f302"; } + +.fa-calculator::before { + content: "\f1ec"; } + +.fa-people-pulling::before { + content: "\e535"; } + +.fa-n::before { + content: "\4e"; } + +.fa-cable-car::before { + content: "\f7da"; } + +.fa-tram::before { + content: "\f7da"; } + +.fa-cloud-rain::before { + content: "\f73d"; } + +.fa-building-circle-xmark::before { + content: "\e4d4"; } + +.fa-ship::before { + content: "\f21a"; } + +.fa-arrows-down-to-line::before { + content: "\e4b8"; } + +.fa-download::before { + content: "\f019"; } + +.fa-face-grin::before { + content: "\f580"; } + +.fa-grin::before { + content: "\f580"; } + +.fa-delete-left::before { + content: "\f55a"; } + +.fa-backspace::before { + content: "\f55a"; } + +.fa-eye-dropper::before { + content: "\f1fb"; } + +.fa-eye-dropper-empty::before { + content: "\f1fb"; } + +.fa-eyedropper::before { + content: "\f1fb"; } + +.fa-file-circle-check::before { + content: "\e5a0"; } + +.fa-forward::before { + content: "\f04e"; } + +.fa-mobile::before { + content: "\f3ce"; } + +.fa-mobile-android::before { + content: "\f3ce"; } + +.fa-mobile-phone::before { + content: "\f3ce"; } + +.fa-face-meh::before { + content: "\f11a"; } + +.fa-meh::before { + content: "\f11a"; } + +.fa-align-center::before { + content: "\f037"; } + +.fa-book-skull::before { + content: "\f6b7"; } + +.fa-book-dead::before { + content: "\f6b7"; } + +.fa-id-card::before { + content: "\f2c2"; } + +.fa-drivers-license::before { + content: "\f2c2"; } + +.fa-outdent::before { + content: "\f03b"; } + +.fa-dedent::before { + content: "\f03b"; } + +.fa-heart-circle-exclamation::before { + content: "\e4fe"; } + +.fa-house::before { + content: "\f015"; } + +.fa-home::before { + content: "\f015"; } + +.fa-home-alt::before { + content: "\f015"; } + +.fa-home-lg-alt::before { + content: "\f015"; } + +.fa-calendar-week::before { + content: "\f784"; } + +.fa-laptop-medical::before { + content: "\f812"; } + +.fa-b::before { + content: "\42"; } + +.fa-file-medical::before { + content: "\f477"; } + +.fa-dice-one::before { + content: "\f525"; } + +.fa-kiwi-bird::before { + content: "\f535"; } + +.fa-arrow-right-arrow-left::before { + content: "\f0ec"; } + +.fa-exchange::before { + content: "\f0ec"; } + +.fa-rotate-right::before { + content: "\f2f9"; } + +.fa-redo-alt::before { + content: "\f2f9"; } + +.fa-rotate-forward::before { + content: "\f2f9"; } + +.fa-utensils::before { + content: "\f2e7"; } + +.fa-cutlery::before { + content: "\f2e7"; } + +.fa-arrow-up-wide-short::before { + content: "\f161"; } + +.fa-sort-amount-up::before { + content: "\f161"; } + +.fa-mill-sign::before { + content: "\e1ed"; } + +.fa-bowl-rice::before { + content: "\e2eb"; } + +.fa-skull::before { + content: "\f54c"; } + +.fa-tower-broadcast::before { + content: "\f519"; } + +.fa-broadcast-tower::before { + content: "\f519"; } + +.fa-truck-pickup::before { + content: "\f63c"; } + +.fa-up-long::before { + content: "\f30c"; } + +.fa-long-arrow-alt-up::before { + content: "\f30c"; } + +.fa-stop::before { + content: "\f04d"; } + +.fa-code-merge::before { + content: "\f387"; } + +.fa-upload::before { + content: "\f093"; } + +.fa-hurricane::before { + content: "\f751"; } + +.fa-mound::before { + content: "\e52d"; } + +.fa-toilet-portable::before { + content: "\e583"; } + +.fa-compact-disc::before { + content: "\f51f"; } + +.fa-file-arrow-down::before { + content: "\f56d"; } + +.fa-file-download::before { + content: "\f56d"; } + +.fa-caravan::before { + content: "\f8ff"; } + +.fa-shield-cat::before { + content: "\e572"; } + +.fa-bolt::before { + content: "\f0e7"; } + +.fa-zap::before { + content: "\f0e7"; } + +.fa-glass-water::before { + content: "\e4f4"; } + +.fa-oil-well::before { + content: "\e532"; } + +.fa-vault::before { + content: "\e2c5"; } + +.fa-mars::before { + content: "\f222"; } + +.fa-toilet::before { + content: "\f7d8"; } + +.fa-plane-circle-xmark::before { + content: "\e557"; } + +.fa-yen-sign::before { + content: "\f157"; } + +.fa-cny::before { + content: "\f157"; } + +.fa-jpy::before { + content: "\f157"; } + +.fa-rmb::before { + content: "\f157"; } + +.fa-yen::before { + content: "\f157"; } + +.fa-ruble-sign::before { + content: "\f158"; } + +.fa-rouble::before { + content: "\f158"; } + +.fa-rub::before { + content: "\f158"; } + +.fa-ruble::before { + content: "\f158"; } + +.fa-sun::before { + content: "\f185"; } + +.fa-guitar::before { + content: "\f7a6"; } + +.fa-face-laugh-wink::before { + content: "\f59c"; } + +.fa-laugh-wink::before { + content: "\f59c"; } + +.fa-horse-head::before { + content: "\f7ab"; } + +.fa-bore-hole::before { + content: "\e4c3"; } + +.fa-industry::before { + content: "\f275"; } + +.fa-circle-down::before { + content: "\f358"; } + +.fa-arrow-alt-circle-down::before { + content: "\f358"; } + +.fa-arrows-turn-to-dots::before { + content: "\e4c1"; } + +.fa-florin-sign::before { + content: "\e184"; } + +.fa-arrow-down-short-wide::before { + content: "\f884"; } + +.fa-sort-amount-desc::before { + content: "\f884"; } + +.fa-sort-amount-down-alt::before { + content: "\f884"; } + +.fa-less-than::before { + content: "\3c"; } + +.fa-angle-down::before { + content: "\f107"; } + +.fa-car-tunnel::before { + content: "\e4de"; } + +.fa-head-side-cough::before { + content: "\e061"; } + +.fa-grip-lines::before { + content: "\f7a4"; } + +.fa-thumbs-down::before { + content: "\f165"; } + +.fa-user-lock::before { + content: "\f502"; } + +.fa-arrow-right-long::before { + content: "\f178"; } + +.fa-long-arrow-right::before { + content: "\f178"; } + +.fa-anchor-circle-xmark::before { + content: "\e4ac"; } + +.fa-ellipsis::before { + content: "\f141"; } + +.fa-ellipsis-h::before { + content: "\f141"; } + +.fa-chess-pawn::before { + content: "\f443"; } + +.fa-kit-medical::before { + content: "\f479"; } + +.fa-first-aid::before { + content: "\f479"; } + +.fa-person-through-window::before { + content: "\e5a9"; } + +.fa-toolbox::before { + content: "\f552"; } + +.fa-hands-holding-circle::before { + content: "\e4fb"; } + +.fa-bug::before { + content: "\f188"; } + +.fa-credit-card::before { + content: "\f09d"; } + +.fa-credit-card-alt::before { + content: "\f09d"; } + +.fa-car::before { + content: "\f1b9"; } + +.fa-automobile::before { + content: "\f1b9"; } + +.fa-hand-holding-hand::before { + content: "\e4f7"; } + +.fa-book-open-reader::before { + content: "\f5da"; } + +.fa-book-reader::before { + content: "\f5da"; } + +.fa-mountain-sun::before { + content: "\e52f"; } + +.fa-arrows-left-right-to-line::before { + content: "\e4ba"; } + +.fa-dice-d20::before { + content: "\f6cf"; } + +.fa-truck-droplet::before { + content: "\e58c"; } + +.fa-file-circle-xmark::before { + content: "\e5a1"; } + +.fa-temperature-arrow-up::before { + content: "\e040"; } + +.fa-temperature-up::before { + content: "\e040"; } + +.fa-medal::before { + content: "\f5a2"; } + +.fa-bed::before { + content: "\f236"; } + +.fa-square-h::before { + content: "\f0fd"; } + +.fa-h-square::before { + content: "\f0fd"; } + +.fa-podcast::before { + content: "\f2ce"; } + +.fa-temperature-full::before { + content: "\f2c7"; } + +.fa-temperature-4::before { + content: "\f2c7"; } + +.fa-thermometer-4::before { + content: "\f2c7"; } + +.fa-thermometer-full::before { + content: "\f2c7"; } + +.fa-bell::before { + content: "\f0f3"; } + +.fa-superscript::before { + content: "\f12b"; } + +.fa-plug-circle-xmark::before { + content: "\e560"; } + +.fa-star-of-life::before { + content: "\f621"; } + +.fa-phone-slash::before { + content: "\f3dd"; } + +.fa-paint-roller::before { + content: "\f5aa"; } + +.fa-handshake-angle::before { + content: "\f4c4"; } + +.fa-hands-helping::before { + content: "\f4c4"; } + +.fa-location-dot::before { + content: "\f3c5"; } + +.fa-map-marker-alt::before { + content: "\f3c5"; } + +.fa-file::before { + content: "\f15b"; } + +.fa-greater-than::before { + content: "\3e"; } + +.fa-person-swimming::before { + content: "\f5c4"; } + +.fa-swimmer::before { + content: "\f5c4"; } + +.fa-arrow-down::before { + content: "\f063"; } + +.fa-droplet::before { + content: "\f043"; } + +.fa-tint::before { + content: "\f043"; } + +.fa-eraser::before { + content: "\f12d"; } + +.fa-earth-americas::before { + content: "\f57d"; } + +.fa-earth::before { + content: "\f57d"; } + +.fa-earth-america::before { + content: "\f57d"; } + +.fa-globe-americas::before { + content: "\f57d"; } + +.fa-person-burst::before { + content: "\e53b"; } + +.fa-dove::before { + content: "\f4ba"; } + +.fa-battery-empty::before { + content: "\f244"; } + +.fa-battery-0::before { + content: "\f244"; } + +.fa-socks::before { + content: "\f696"; } + +.fa-inbox::before { + content: "\f01c"; } + +.fa-section::before { + content: "\e447"; } + +.fa-gauge-high::before { + content: "\f625"; } + +.fa-tachometer-alt::before { + content: "\f625"; } + +.fa-tachometer-alt-fast::before { + content: "\f625"; } + +.fa-envelope-open-text::before { + content: "\f658"; } + +.fa-hospital::before { + content: "\f0f8"; } + +.fa-hospital-alt::before { + content: "\f0f8"; } + +.fa-hospital-wide::before { + content: "\f0f8"; } + +.fa-wine-bottle::before { + content: "\f72f"; } + +.fa-chess-rook::before { + content: "\f447"; } + +.fa-bars-staggered::before { + content: "\f550"; } + +.fa-reorder::before { + content: "\f550"; } + +.fa-stream::before { + content: "\f550"; } + +.fa-dharmachakra::before { + content: "\f655"; } + +.fa-hotdog::before { + content: "\f80f"; } + +.fa-person-walking-with-cane::before { + content: "\f29d"; } + +.fa-blind::before { + content: "\f29d"; } + +.fa-drum::before { + content: "\f569"; } + +.fa-ice-cream::before { + content: "\f810"; } + +.fa-heart-circle-bolt::before { + content: "\e4fc"; } + +.fa-fax::before { + content: "\f1ac"; } + +.fa-paragraph::before { + content: "\f1dd"; } + +.fa-check-to-slot::before { + content: "\f772"; } + +.fa-vote-yea::before { + content: "\f772"; } + +.fa-star-half::before { + content: "\f089"; } + +.fa-boxes-stacked::before { + content: "\f468"; } + +.fa-boxes::before { + content: "\f468"; } + +.fa-boxes-alt::before { + content: "\f468"; } + +.fa-link::before { + content: "\f0c1"; } + +.fa-chain::before { + content: "\f0c1"; } + +.fa-ear-listen::before { + content: "\f2a2"; } + +.fa-assistive-listening-systems::before { + content: "\f2a2"; } + +.fa-tree-city::before { + content: "\e587"; } + +.fa-play::before { + content: "\f04b"; } + +.fa-font::before { + content: "\f031"; } + +.fa-rupiah-sign::before { + content: "\e23d"; } + +.fa-magnifying-glass::before { + content: "\f002"; } + +.fa-search::before { + content: "\f002"; } + +.fa-table-tennis-paddle-ball::before { + content: "\f45d"; } + +.fa-ping-pong-paddle-ball::before { + content: "\f45d"; } + +.fa-table-tennis::before { + content: "\f45d"; } + +.fa-person-dots-from-line::before { + content: "\f470"; } + +.fa-diagnoses::before { + content: "\f470"; } + +.fa-trash-can-arrow-up::before { + content: "\f82a"; } + +.fa-trash-restore-alt::before { + content: "\f82a"; } + +.fa-naira-sign::before { + content: "\e1f6"; } + +.fa-cart-arrow-down::before { + content: "\f218"; } + +.fa-walkie-talkie::before { + content: "\f8ef"; } + +.fa-file-pen::before { + content: "\f31c"; } + +.fa-file-edit::before { + content: "\f31c"; } + +.fa-receipt::before { + content: "\f543"; } + +.fa-square-pen::before { + content: "\f14b"; } + +.fa-pen-square::before { + content: "\f14b"; } + +.fa-pencil-square::before { + content: "\f14b"; } + +.fa-suitcase-rolling::before { + content: "\f5c1"; } + +.fa-person-circle-exclamation::before { + content: "\e53f"; } + +.fa-chevron-down::before { + content: "\f078"; } + +.fa-battery-full::before { + content: "\f240"; } + +.fa-battery::before { + content: "\f240"; } + +.fa-battery-5::before { + content: "\f240"; } + +.fa-skull-crossbones::before { + content: "\f714"; } + +.fa-code-compare::before { + content: "\e13a"; } + +.fa-list-ul::before { + content: "\f0ca"; } + +.fa-list-dots::before { + content: "\f0ca"; } + +.fa-school-lock::before { + content: "\e56f"; } + +.fa-tower-cell::before { + content: "\e585"; } + +.fa-down-long::before { + content: "\f309"; } + +.fa-long-arrow-alt-down::before { + content: "\f309"; } + +.fa-ranking-star::before { + content: "\e561"; } + +.fa-chess-king::before { + content: "\f43f"; } + +.fa-person-harassing::before { + content: "\e549"; } + +.fa-brazilian-real-sign::before { + content: "\e46c"; } + +.fa-landmark-dome::before { + content: "\f752"; } + +.fa-landmark-alt::before { + content: "\f752"; } + +.fa-arrow-up::before { + content: "\f062"; } + +.fa-tv::before { + content: "\f26c"; } + +.fa-television::before { + content: "\f26c"; } + +.fa-tv-alt::before { + content: "\f26c"; } + +.fa-shrimp::before { + content: "\e448"; } + +.fa-list-check::before { + content: "\f0ae"; } + +.fa-tasks::before { + content: "\f0ae"; } + +.fa-jug-detergent::before { + content: "\e519"; } + +.fa-circle-user::before { + content: "\f2bd"; } + +.fa-user-circle::before { + content: "\f2bd"; } + +.fa-user-shield::before { + content: "\f505"; } + +.fa-wind::before { + content: "\f72e"; } + +.fa-car-burst::before { + content: "\f5e1"; } + +.fa-car-crash::before { + content: "\f5e1"; } + +.fa-y::before { + content: "\59"; } + +.fa-person-snowboarding::before { + content: "\f7ce"; } + +.fa-snowboarding::before { + content: "\f7ce"; } + +.fa-truck-fast::before { + content: "\f48b"; } + +.fa-shipping-fast::before { + content: "\f48b"; } + +.fa-fish::before { + content: "\f578"; } + +.fa-user-graduate::before { + content: "\f501"; } + +.fa-circle-half-stroke::before { + content: "\f042"; } + +.fa-adjust::before { + content: "\f042"; } + +.fa-clapperboard::before { + content: "\e131"; } + +.fa-circle-radiation::before { + content: "\f7ba"; } + +.fa-radiation-alt::before { + content: "\f7ba"; } + +.fa-baseball::before { + content: "\f433"; } + +.fa-baseball-ball::before { + content: "\f433"; } + +.fa-jet-fighter-up::before { + content: "\e518"; } + +.fa-diagram-project::before { + content: "\f542"; } + +.fa-project-diagram::before { + content: "\f542"; } + +.fa-copy::before { + content: "\f0c5"; } + +.fa-volume-xmark::before { + content: "\f6a9"; } + +.fa-volume-mute::before { + content: "\f6a9"; } + +.fa-volume-times::before { + content: "\f6a9"; } + +.fa-hand-sparkles::before { + content: "\e05d"; } + +.fa-grip::before { + content: "\f58d"; } + +.fa-grip-horizontal::before { + content: "\f58d"; } + +.fa-share-from-square::before { + content: "\f14d"; } + +.fa-share-square::before { + content: "\f14d"; } + +.fa-child-combatant::before { + content: "\e4e0"; } + +.fa-child-rifle::before { + content: "\e4e0"; } + +.fa-gun::before { + content: "\e19b"; } + +.fa-square-phone::before { + content: "\f098"; } + +.fa-phone-square::before { + content: "\f098"; } + +.fa-plus::before { + content: "\2b"; } + +.fa-add::before { + content: "\2b"; } + +.fa-expand::before { + content: "\f065"; } + +.fa-computer::before { + content: "\e4e5"; } + +.fa-xmark::before { + content: "\f00d"; } + +.fa-close::before { + content: "\f00d"; } + +.fa-multiply::before { + content: "\f00d"; } + +.fa-remove::before { + content: "\f00d"; } + +.fa-times::before { + content: "\f00d"; } + +.fa-arrows-up-down-left-right::before { + content: "\f047"; } + +.fa-arrows::before { + content: "\f047"; } + +.fa-chalkboard-user::before { + content: "\f51c"; } + +.fa-chalkboard-teacher::before { + content: "\f51c"; } + +.fa-peso-sign::before { + content: "\e222"; } + +.fa-building-shield::before { + content: "\e4d8"; } + +.fa-baby::before { + content: "\f77c"; } + +.fa-users-line::before { + content: "\e592"; } + +.fa-quote-left::before { + content: "\f10d"; } + +.fa-quote-left-alt::before { + content: "\f10d"; } + +.fa-tractor::before { + content: "\f722"; } + +.fa-trash-arrow-up::before { + content: "\f829"; } + +.fa-trash-restore::before { + content: "\f829"; } + +.fa-arrow-down-up-lock::before { + content: "\e4b0"; } + +.fa-lines-leaning::before { + content: "\e51e"; } + +.fa-ruler-combined::before { + content: "\f546"; } + +.fa-copyright::before { + content: "\f1f9"; } + +.fa-equals::before { + content: "\3d"; } + +.fa-blender::before { + content: "\f517"; } + +.fa-teeth::before { + content: "\f62e"; } + +.fa-shekel-sign::before { + content: "\f20b"; } + +.fa-ils::before { + content: "\f20b"; } + +.fa-shekel::before { + content: "\f20b"; } + +.fa-sheqel::before { + content: "\f20b"; } + +.fa-sheqel-sign::before { + content: "\f20b"; } + +.fa-map::before { + content: "\f279"; } + +.fa-rocket::before { + content: "\f135"; } + +.fa-photo-film::before { + content: "\f87c"; } + +.fa-photo-video::before { + content: "\f87c"; } + +.fa-folder-minus::before { + content: "\f65d"; } + +.fa-store::before { + content: "\f54e"; } + +.fa-arrow-trend-up::before { + content: "\e098"; } + +.fa-plug-circle-minus::before { + content: "\e55e"; } + +.fa-sign-hanging::before { + content: "\f4d9"; } + +.fa-sign::before { + content: "\f4d9"; } + +.fa-bezier-curve::before { + content: "\f55b"; } + +.fa-bell-slash::before { + content: "\f1f6"; } + +.fa-tablet::before { + content: "\f3fb"; } + +.fa-tablet-android::before { + content: "\f3fb"; } + +.fa-school-flag::before { + content: "\e56e"; } + +.fa-fill::before { + content: "\f575"; } + +.fa-angle-up::before { + content: "\f106"; } + +.fa-drumstick-bite::before { + content: "\f6d7"; } + +.fa-holly-berry::before { + content: "\f7aa"; } + +.fa-chevron-left::before { + content: "\f053"; } + +.fa-bacteria::before { + content: "\e059"; } + +.fa-hand-lizard::before { + content: "\f258"; } + +.fa-notdef::before { + content: "\e1fe"; } + +.fa-disease::before { + content: "\f7fa"; } + +.fa-briefcase-medical::before { + content: "\f469"; } + +.fa-genderless::before { + content: "\f22d"; } + +.fa-chevron-right::before { + content: "\f054"; } + +.fa-retweet::before { + content: "\f079"; } + +.fa-car-rear::before { + content: "\f5de"; } + +.fa-car-alt::before { + content: "\f5de"; } + +.fa-pump-soap::before { + content: "\e06b"; } + +.fa-video-slash::before { + content: "\f4e2"; } + +.fa-battery-quarter::before { + content: "\f243"; } + +.fa-battery-2::before { + content: "\f243"; } + +.fa-radio::before { + content: "\f8d7"; } + +.fa-baby-carriage::before { + content: "\f77d"; } + +.fa-carriage-baby::before { + content: "\f77d"; } + +.fa-traffic-light::before { + content: "\f637"; } + +.fa-thermometer::before { + content: "\f491"; } + +.fa-vr-cardboard::before { + content: "\f729"; } + +.fa-hand-middle-finger::before { + content: "\f806"; } + +.fa-percent::before { + content: "\25"; } + +.fa-percentage::before { + content: "\25"; } + +.fa-truck-moving::before { + content: "\f4df"; } + +.fa-glass-water-droplet::before { + content: "\e4f5"; } + +.fa-display::before { + content: "\e163"; } + +.fa-face-smile::before { + content: "\f118"; } + +.fa-smile::before { + content: "\f118"; } + +.fa-thumbtack::before { + content: "\f08d"; } + +.fa-thumb-tack::before { + content: "\f08d"; } + +.fa-trophy::before { + content: "\f091"; } + +.fa-person-praying::before { + content: "\f683"; } + +.fa-pray::before { + content: "\f683"; } + +.fa-hammer::before { + content: "\f6e3"; } + +.fa-hand-peace::before { + content: "\f25b"; } + +.fa-rotate::before { + content: "\f2f1"; } + +.fa-sync-alt::before { + content: "\f2f1"; } + +.fa-spinner::before { + content: "\f110"; } + +.fa-robot::before { + content: "\f544"; } + +.fa-peace::before { + content: "\f67c"; } + +.fa-gears::before { + content: "\f085"; } + +.fa-cogs::before { + content: "\f085"; } + +.fa-warehouse::before { + content: "\f494"; } + +.fa-arrow-up-right-dots::before { + content: "\e4b7"; } + +.fa-splotch::before { + content: "\f5bc"; } + +.fa-face-grin-hearts::before { + content: "\f584"; } + +.fa-grin-hearts::before { + content: "\f584"; } + +.fa-dice-four::before { + content: "\f524"; } + +.fa-sim-card::before { + content: "\f7c4"; } + +.fa-transgender::before { + content: "\f225"; } + +.fa-transgender-alt::before { + content: "\f225"; } + +.fa-mercury::before { + content: "\f223"; } + +.fa-arrow-turn-down::before { + content: "\f149"; } + +.fa-level-down::before { + content: "\f149"; } + +.fa-person-falling-burst::before { + content: "\e547"; } + +.fa-award::before { + content: "\f559"; } + +.fa-ticket-simple::before { + content: "\f3ff"; } + +.fa-ticket-alt::before { + content: "\f3ff"; } + +.fa-building::before { + content: "\f1ad"; } + +.fa-angles-left::before { + content: "\f100"; } + +.fa-angle-double-left::before { + content: "\f100"; } + +.fa-qrcode::before { + content: "\f029"; } + +.fa-clock-rotate-left::before { + content: "\f1da"; } + +.fa-history::before { + content: "\f1da"; } + +.fa-face-grin-beam-sweat::before { + content: "\f583"; } + +.fa-grin-beam-sweat::before { + content: "\f583"; } + +.fa-file-export::before { + content: "\f56e"; } + +.fa-arrow-right-from-file::before { + content: "\f56e"; } + +.fa-shield::before { + content: "\f132"; } + +.fa-shield-blank::before { + content: "\f132"; } + +.fa-arrow-up-short-wide::before { + content: "\f885"; } + +.fa-sort-amount-up-alt::before { + content: "\f885"; } + +.fa-house-medical::before { + content: "\e3b2"; } + +.fa-golf-ball-tee::before { + content: "\f450"; } + +.fa-golf-ball::before { + content: "\f450"; } + +.fa-circle-chevron-left::before { + content: "\f137"; } + +.fa-chevron-circle-left::before { + content: "\f137"; } + +.fa-house-chimney-window::before { + content: "\e00d"; } + +.fa-pen-nib::before { + content: "\f5ad"; } + +.fa-tent-arrow-turn-left::before { + content: "\e580"; } + +.fa-tents::before { + content: "\e582"; } + +.fa-wand-magic::before { + content: "\f0d0"; } + +.fa-magic::before { + content: "\f0d0"; } + +.fa-dog::before { + content: "\f6d3"; } + +.fa-carrot::before { + content: "\f787"; } + +.fa-moon::before { + content: "\f186"; } + +.fa-wine-glass-empty::before { + content: "\f5ce"; } + +.fa-wine-glass-alt::before { + content: "\f5ce"; } + +.fa-cheese::before { + content: "\f7ef"; } + +.fa-yin-yang::before { + content: "\f6ad"; } + +.fa-music::before { + content: "\f001"; } + +.fa-code-commit::before { + content: "\f386"; } + +.fa-temperature-low::before { + content: "\f76b"; } + +.fa-person-biking::before { + content: "\f84a"; } + +.fa-biking::before { + content: "\f84a"; } + +.fa-broom::before { + content: "\f51a"; } + +.fa-shield-heart::before { + content: "\e574"; } + +.fa-gopuram::before { + content: "\f664"; } + +.fa-earth-oceania::before { + content: "\e47b"; } + +.fa-globe-oceania::before { + content: "\e47b"; } + +.fa-square-xmark::before { + content: "\f2d3"; } + +.fa-times-square::before { + content: "\f2d3"; } + +.fa-xmark-square::before { + content: "\f2d3"; } + +.fa-hashtag::before { + content: "\23"; } + +.fa-up-right-and-down-left-from-center::before { + content: "\f424"; } + +.fa-expand-alt::before { + content: "\f424"; } + +.fa-oil-can::before { + content: "\f613"; } + +.fa-t::before { + content: "\54"; } + +.fa-hippo::before { + content: "\f6ed"; } + +.fa-chart-column::before { + content: "\e0e3"; } + +.fa-infinity::before { + content: "\f534"; } + +.fa-vial-circle-check::before { + content: "\e596"; } + +.fa-person-arrow-down-to-line::before { + content: "\e538"; } + +.fa-voicemail::before { + content: "\f897"; } + +.fa-fan::before { + content: "\f863"; } + +.fa-person-walking-luggage::before { + content: "\e554"; } + +.fa-up-down::before { + content: "\f338"; } + +.fa-arrows-alt-v::before { + content: "\f338"; } + +.fa-cloud-moon-rain::before { + content: "\f73c"; } + +.fa-calendar::before { + content: "\f133"; } + +.fa-trailer::before { + content: "\e041"; } + +.fa-bahai::before { + content: "\f666"; } + +.fa-haykal::before { + content: "\f666"; } + +.fa-sd-card::before { + content: "\f7c2"; } + +.fa-dragon::before { + content: "\f6d5"; } + +.fa-shoe-prints::before { + content: "\f54b"; } + +.fa-circle-plus::before { + content: "\f055"; } + +.fa-plus-circle::before { + content: "\f055"; } + +.fa-face-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-grin-tongue-wink::before { + content: "\f58b"; } + +.fa-hand-holding::before { + content: "\f4bd"; } + +.fa-plug-circle-exclamation::before { + content: "\e55d"; } + +.fa-link-slash::before { + content: "\f127"; } + +.fa-chain-broken::before { + content: "\f127"; } + +.fa-chain-slash::before { + content: "\f127"; } + +.fa-unlink::before { + content: "\f127"; } + +.fa-clone::before { + content: "\f24d"; } + +.fa-person-walking-arrow-loop-left::before { + content: "\e551"; } + +.fa-arrow-up-z-a::before { + content: "\f882"; } + +.fa-sort-alpha-up-alt::before { + content: "\f882"; } + +.fa-fire-flame-curved::before { + content: "\f7e4"; } + +.fa-fire-alt::before { + content: "\f7e4"; } + +.fa-tornado::before { + content: "\f76f"; } + +.fa-file-circle-plus::before { + content: "\e494"; } + +.fa-book-quran::before { + content: "\f687"; } + +.fa-quran::before { + content: "\f687"; } + +.fa-anchor::before { + content: "\f13d"; } + +.fa-border-all::before { + content: "\f84c"; } + +.fa-face-angry::before { + content: "\f556"; } + +.fa-angry::before { + content: "\f556"; } + +.fa-cookie-bite::before { + content: "\f564"; } + +.fa-arrow-trend-down::before { + content: "\e097"; } + +.fa-rss::before { + content: "\f09e"; } + +.fa-feed::before { + content: "\f09e"; } + +.fa-draw-polygon::before { + content: "\f5ee"; } + +.fa-scale-balanced::before { + content: "\f24e"; } + +.fa-balance-scale::before { + content: "\f24e"; } + +.fa-gauge-simple-high::before { + content: "\f62a"; } + +.fa-tachometer::before { + content: "\f62a"; } + +.fa-tachometer-fast::before { + content: "\f62a"; } + +.fa-shower::before { + content: "\f2cc"; } + +.fa-desktop::before { + content: "\f390"; } + +.fa-desktop-alt::before { + content: "\f390"; } + +.fa-m::before { + content: "\4d"; } + +.fa-table-list::before { + content: "\f00b"; } + +.fa-th-list::before { + content: "\f00b"; } + +.fa-comment-sms::before { + content: "\f7cd"; } + +.fa-sms::before { + content: "\f7cd"; } + +.fa-book::before { + content: "\f02d"; } + +.fa-user-plus::before { + content: "\f234"; } + +.fa-check::before { + content: "\f00c"; } + +.fa-battery-three-quarters::before { + content: "\f241"; } + +.fa-battery-4::before { + content: "\f241"; } + +.fa-house-circle-check::before { + content: "\e509"; } + +.fa-angle-left::before { + content: "\f104"; } + +.fa-diagram-successor::before { + content: "\e47a"; } + +.fa-truck-arrow-right::before { + content: "\e58b"; } + +.fa-arrows-split-up-and-left::before { + content: "\e4bc"; } + +.fa-hand-fist::before { + content: "\f6de"; } + +.fa-fist-raised::before { + content: "\f6de"; } + +.fa-cloud-moon::before { + content: "\f6c3"; } + +.fa-briefcase::before { + content: "\f0b1"; } + +.fa-person-falling::before { + content: "\e546"; } + +.fa-image-portrait::before { + content: "\f3e0"; } + +.fa-portrait::before { + content: "\f3e0"; } + +.fa-user-tag::before { + content: "\f507"; } + +.fa-rug::before { + content: "\e569"; } + +.fa-earth-europe::before { + content: "\f7a2"; } + +.fa-globe-europe::before { + content: "\f7a2"; } + +.fa-cart-flatbed-suitcase::before { + content: "\f59d"; } + +.fa-luggage-cart::before { + content: "\f59d"; } + +.fa-rectangle-xmark::before { + content: "\f410"; } + +.fa-rectangle-times::before { + content: "\f410"; } + +.fa-times-rectangle::before { + content: "\f410"; } + +.fa-window-close::before { + content: "\f410"; } + +.fa-baht-sign::before { + content: "\e0ac"; } + +.fa-book-open::before { + content: "\f518"; } + +.fa-book-journal-whills::before { + content: "\f66a"; } + +.fa-journal-whills::before { + content: "\f66a"; } + +.fa-handcuffs::before { + content: "\e4f8"; } + +.fa-triangle-exclamation::before { + content: "\f071"; } + +.fa-exclamation-triangle::before { + content: "\f071"; } + +.fa-warning::before { + content: "\f071"; } + +.fa-database::before { + content: "\f1c0"; } + +.fa-share::before { + content: "\f064"; } + +.fa-mail-forward::before { + content: "\f064"; } + +.fa-bottle-droplet::before { + content: "\e4c4"; } + +.fa-mask-face::before { + content: "\e1d7"; } + +.fa-hill-rockslide::before { + content: "\e508"; } + +.fa-right-left::before { + content: "\f362"; } + +.fa-exchange-alt::before { + content: "\f362"; } + +.fa-paper-plane::before { + content: "\f1d8"; } + +.fa-road-circle-exclamation::before { + content: "\e565"; } + +.fa-dungeon::before { + content: "\f6d9"; } + +.fa-align-right::before { + content: "\f038"; } + +.fa-money-bill-1-wave::before { + content: "\f53b"; } + +.fa-money-bill-wave-alt::before { + content: "\f53b"; } + +.fa-life-ring::before { + content: "\f1cd"; } + +.fa-hands::before { + content: "\f2a7"; } + +.fa-sign-language::before { + content: "\f2a7"; } + +.fa-signing::before { + content: "\f2a7"; } + +.fa-calendar-day::before { + content: "\f783"; } + +.fa-water-ladder::before { + content: "\f5c5"; } + +.fa-ladder-water::before { + content: "\f5c5"; } + +.fa-swimming-pool::before { + content: "\f5c5"; } + +.fa-arrows-up-down::before { + content: "\f07d"; } + +.fa-arrows-v::before { + content: "\f07d"; } + +.fa-face-grimace::before { + content: "\f57f"; } + +.fa-grimace::before { + content: "\f57f"; } + +.fa-wheelchair-move::before { + content: "\e2ce"; } + +.fa-wheelchair-alt::before { + content: "\e2ce"; } + +.fa-turn-down::before { + content: "\f3be"; } + +.fa-level-down-alt::before { + content: "\f3be"; } + +.fa-person-walking-arrow-right::before { + content: "\e552"; } + +.fa-square-envelope::before { + content: "\f199"; } + +.fa-envelope-square::before { + content: "\f199"; } + +.fa-dice::before { + content: "\f522"; } + +.fa-bowling-ball::before { + content: "\f436"; } + +.fa-brain::before { + content: "\f5dc"; } + +.fa-bandage::before { + content: "\f462"; } + +.fa-band-aid::before { + content: "\f462"; } + +.fa-calendar-minus::before { + content: "\f272"; } + +.fa-circle-xmark::before { + content: "\f057"; } + +.fa-times-circle::before { + content: "\f057"; } + +.fa-xmark-circle::before { + content: "\f057"; } + +.fa-gifts::before { + content: "\f79c"; } + +.fa-hotel::before { + content: "\f594"; } + +.fa-earth-asia::before { + content: "\f57e"; } + +.fa-globe-asia::before { + content: "\f57e"; } + +.fa-id-card-clip::before { + content: "\f47f"; } + +.fa-id-card-alt::before { + content: "\f47f"; } + +.fa-magnifying-glass-plus::before { + content: "\f00e"; } + +.fa-search-plus::before { + content: "\f00e"; } + +.fa-thumbs-up::before { + content: "\f164"; } + +.fa-user-clock::before { + content: "\f4fd"; } + +.fa-hand-dots::before { + content: "\f461"; } + +.fa-allergies::before { + content: "\f461"; } + +.fa-file-invoice::before { + content: "\f570"; } + +.fa-window-minimize::before { + content: "\f2d1"; } + +.fa-mug-saucer::before { + content: "\f0f4"; } + +.fa-coffee::before { + content: "\f0f4"; } + +.fa-brush::before { + content: "\f55d"; } + +.fa-mask::before { + content: "\f6fa"; } + +.fa-magnifying-glass-minus::before { + content: "\f010"; } + +.fa-search-minus::before { + content: "\f010"; } + +.fa-ruler-vertical::before { + content: "\f548"; } + +.fa-user-large::before { + content: "\f406"; } + +.fa-user-alt::before { + content: "\f406"; } + +.fa-train-tram::before { + content: "\e5b4"; } + +.fa-user-nurse::before { + content: "\f82f"; } + +.fa-syringe::before { + content: "\f48e"; } + +.fa-cloud-sun::before { + content: "\f6c4"; } + +.fa-stopwatch-20::before { + content: "\e06f"; } + +.fa-square-full::before { + content: "\f45c"; } + +.fa-magnet::before { + content: "\f076"; } + +.fa-jar::before { + content: "\e516"; } + +.fa-note-sticky::before { + content: "\f249"; } + +.fa-sticky-note::before { + content: "\f249"; } + +.fa-bug-slash::before { + content: "\e490"; } + +.fa-arrow-up-from-water-pump::before { + content: "\e4b6"; } + +.fa-bone::before { + content: "\f5d7"; } + +.fa-user-injured::before { + content: "\f728"; } + +.fa-face-sad-tear::before { + content: "\f5b4"; } + +.fa-sad-tear::before { + content: "\f5b4"; } + +.fa-plane::before { + content: "\f072"; } + +.fa-tent-arrows-down::before { + content: "\e581"; } + +.fa-exclamation::before { + content: "\21"; } + +.fa-arrows-spin::before { + content: "\e4bb"; } + +.fa-print::before { + content: "\f02f"; } + +.fa-turkish-lira-sign::before { + content: "\e2bb"; } + +.fa-try::before { + content: "\e2bb"; } + +.fa-turkish-lira::before { + content: "\e2bb"; } + +.fa-dollar-sign::before { + content: "\24"; } + +.fa-dollar::before { + content: "\24"; } + +.fa-usd::before { + content: "\24"; } + +.fa-x::before { + content: "\58"; } + +.fa-magnifying-glass-dollar::before { + content: "\f688"; } + +.fa-search-dollar::before { + content: "\f688"; } + +.fa-users-gear::before { + content: "\f509"; } + +.fa-users-cog::before { + content: "\f509"; } + +.fa-person-military-pointing::before { + content: "\e54a"; } + +.fa-building-columns::before { + content: "\f19c"; } + +.fa-bank::before { + content: "\f19c"; } + +.fa-institution::before { + content: "\f19c"; } + +.fa-museum::before { + content: "\f19c"; } + +.fa-university::before { + content: "\f19c"; } + +.fa-umbrella::before { + content: "\f0e9"; } + +.fa-trowel::before { + content: "\e589"; } + +.fa-d::before { + content: "\44"; } + +.fa-stapler::before { + content: "\e5af"; } + +.fa-masks-theater::before { + content: "\f630"; } + +.fa-theater-masks::before { + content: "\f630"; } + +.fa-kip-sign::before { + content: "\e1c4"; } + +.fa-hand-point-left::before { + content: "\f0a5"; } + +.fa-handshake-simple::before { + content: "\f4c6"; } + +.fa-handshake-alt::before { + content: "\f4c6"; } + +.fa-jet-fighter::before { + content: "\f0fb"; } + +.fa-fighter-jet::before { + content: "\f0fb"; } + +.fa-square-share-nodes::before { + content: "\f1e1"; } + +.fa-share-alt-square::before { + content: "\f1e1"; } + +.fa-barcode::before { + content: "\f02a"; } + +.fa-plus-minus::before { + content: "\e43c"; } + +.fa-video::before { + content: "\f03d"; } + +.fa-video-camera::before { + content: "\f03d"; } + +.fa-graduation-cap::before { + content: "\f19d"; } + +.fa-mortar-board::before { + content: "\f19d"; } + +.fa-hand-holding-medical::before { + content: "\e05c"; } + +.fa-person-circle-check::before { + content: "\e53e"; } + +.fa-turn-up::before { + content: "\f3bf"; } + +.fa-level-up-alt::before { + content: "\f3bf"; } + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } +:root, :host { + --fa-style-family-brands: 'Font Awesome 6 Brands'; + --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; } + +@font-face { + font-family: 'Font Awesome 6 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../fonts/fa-brands-400.woff2") format("woff2"), url("../fonts/fa-brands-400.ttf") format("truetype"); } + +.fab, +.fa-brands { + font-weight: 400; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-redhat:before { + content: "\f7bc"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-cloudflare:before { + content: "\e07d"; } + +.fa-ups:before { + content: "\f7e0"; } + +.fa-pixiv:before { + content: "\e640"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-stackpath:before { + content: "\f842"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-guilded:before { + content: "\e07e"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-square-js:before { + content: "\f3b9"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-orcid:before { + content: "\f8d2"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-invision:before { + content: "\f7b0"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-unity:before { + content: "\e049"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-square-reddit:before { + content: "\f1a2"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-square-font-awesome:before { + content: "\e5ad"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-brave:before { + content: "\e63c"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-square-instagram:before { + content: "\e055"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-square-hacker-news:before { + content: "\f3af"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-threads:before { + content: "\e618"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-square-snapchat:before { + content: "\f2ad"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-artstation:before { + content: "\f77a"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-sourcetree:before { + content: "\f7d3"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-diaspora:before { + content: "\f791"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-square-font-awesome-stroke:before { + content: "\f35c"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-atlassian:before { + content: "\f77b"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-chromecast:before { + content: "\f838"; } + +.fa-evernote:before { + content: "\f839"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-watchman-monitoring:before { + content: "\e087"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-git-alt:before { + content: "\f841"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wizards-of-the-coast:before { + content: "\f730"; } + +.fa-square-viadeo:before { + content: "\f2aa"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-centos:before { + content: "\f789"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-opensuse:before { + content: "\e62b"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-square-dribbble:before { + content: "\f397"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-node:before { + content: "\f419"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-debian:before { + content: "\e60b"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-instalod:before { + content: "\e081"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-square-twitter:before { + content: "\f081"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-golang:before { + content: "\e40f"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-uncharted:before { + content: "\e084"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-square-youtube:before { + content: "\f431"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-rendact:before { + content: "\f3e4"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-nfc-directional:before { + content: "\e530"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-fedora:before { + content: "\f798"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-meta:before { + content: "\e49b"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-square-letterboxd:before { + content: "\e62e"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-creative-commons-zero:before { + content: "\f4f3"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-confluence:before { + content: "\f78d"; } + +.fa-shoelace:before { + content: "\e60c"; } + +.fa-mdb:before { + content: "\f8ca"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-unsplash:before { + content: "\e07c"; } + +.fa-yarn:before { + content: "\f7e3"; } + +.fa-square-steam:before { + content: "\f1b7"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-500px:before { + content: "\f26e"; } + +.fa-square-vimeo:before { + content: "\f194"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-flag:before { + content: "\f2b4"; } + +.fa-font-awesome-logo-full:before { + content: "\f2b4"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-hive:before { + content: "\e07f"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-padlet:before { + content: "\e4a0"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-square-github:before { + content: "\f092"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-fedex:before { + content: "\f797"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-shopify:before { + content: "\e057"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-square-threads:before { + content: "\e619"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-swift:before { + content: "\f8e1"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-google-scholar:before { + content: "\e63b"; } + +.fa-square-gitlab:before { + content: "\e5ae"; } + +.fa-gitlab-square:before { + content: "\e5ae"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-square-odnoklassniki:before { + content: "\f264"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-hashnode:before { + content: "\e499"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-itch-io:before { + content: "\f83a"; } + +.fa-umbraco:before { + content: "\f8e8"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-ubuntu:before { + content: "\f7df"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-dhl:before { + content: "\f790"; } + +.fa-square-pinterest:before { + content: "\f0d3"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-signal-messenger:before { + content: "\e663"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-dailymotion:before { + content: "\e052"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-bootstrap:before { + content: "\f836"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-nfc-symbol:before { + content: "\e531"; } + +.fa-mintbit:before { + content: "\e62f"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-speaker-deck:before { + content: "\f83c"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-brave-reverse:before { + content: "\e63d"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-square-google-plus:before { + content: "\f0d4"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-d-and-d-beyond:before { + content: "\f6ca"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-square-xing:before { + content: "\f169"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-usps:before { + content: "\f7e1"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-letterboxd:before { + content: "\e62d"; } + +.fa-symfony:before { + content: "\f83d"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-think-peaks:before { + content: "\f731"; } + +.fa-bilibili:before { + content: "\e3d9"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-x-twitter:before { + content: "\e61b"; } + +.fa-cotton-bureau:before { + content: "\f89e"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-42-group:before { + content: "\e080"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-square-pied-piper:before { + content: "\e01e"; } + +.fa-pied-piper-square:before { + content: "\e01e"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-square-facebook:before { + content: "\f082"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-mixer:before { + content: "\e056"; } + +.fa-square-lastfm:before { + content: "\f203"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-mendeley:before { + content: "\f7b3"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-figma:before { + content: "\f799"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-cmplid:before { + content: "\e360"; } + +.fa-upwork:before { + content: "\e641"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-deezer:before { + content: "\e077"; } + +.fa-raspberry-pi:before { + content: "\f7bb"; } + +.fa-jira:before { + content: "\f7b1"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-screenpal:before { + content: "\e570"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-microblog:before { + content: "\e01a"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-wirsindhandwerk:before { + content: "\e2d0"; } + +.fa-wsh:before { + content: "\e2d0"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-salesforce:before { + content: "\f83b"; } + +.fa-octopus-deploy:before { + content: "\e082"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-waze:before { + content: "\f83f"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ab"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-square-behance:before { + content: "\f1b5"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-webflow:before { + content: "\e65c"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-space-awesome:before { + content: "\e5ac"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-square-git:before { + content: "\f1d2"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-square-tumblr:before { + content: "\f174"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-perbyte:before { + content: "\e083"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-bots:before { + content: "\e340"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-ideal:before { + content: "\e013"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-dev:before { + content: "\f6cc"; } + +.fa-sketch:before { + content: "\f7c6"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-php:before { + content: "\f457"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-firefox-browser:before { + content: "\e007"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-suse:before { + content: "\f7d6"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-buffer:before { + content: "\f837"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-yammer:before { + content: "\f840"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-stubber:before { + content: "\e5c7"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f2c6"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-odysee:before { + content: "\e5c6"; } + +.fa-square-whatsapp:before { + content: "\f40c"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f198"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-square-x-twitter:before { + content: "\e61a"; } + +.fa-reacteurope:before { + content: "\f75d"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f23a"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-critical-role:before { + content: "\f6c9"; } + +.fa-sitrox:before { + content: "\e44a"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-airbnb:before { + content: "\f834"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-buy-n-large:before { + content: "\f8a6"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-canadian-maple-leaf:before { + content: "\f785"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-wodu:before { + content: "\e088"; } + +.fa-google-pay:before { + content: "\e079"; } + +.fa-intercom:before { + content: "\f7af"; } + +.fa-zhihu:before { + content: "\f63f"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-pix:before { + content: "\e43a"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../fonts/fa-regular-400.woff2") format("woff2"), url("../fonts/fa-regular-400.ttf") format("truetype"); } + +.far, +.fa-regular { + font-weight: 400; } +:root, :host { + --fa-style-family-classic: 'Font Awesome 6 Free'; + --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; } + +@font-face { + font-family: 'Font Awesome 6 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../fonts/fa-solid-900.woff2") format("woff2"), url("../fonts/fa-solid-900.ttf") format("truetype"); } + +.fas, +.fa-solid { + font-weight: 900; } +@font-face { + font-family: 'Font Awesome 5 Brands'; + font-display: block; + font-weight: 400; + src: url("../fonts/fa-brands-400.woff2") format("woff2"), url("../fonts/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 5 Free'; + font-display: block; + font-weight: 900; + src: url("../fonts/fa-solid-900.woff2") format("woff2"), url("../fonts/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'Font Awesome 5 Free'; + font-display: block; + font-weight: 400; + src: url("../fonts/fa-regular-400.woff2") format("woff2"), url("../fonts/fa-regular-400.ttf") format("truetype"); } +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../fonts/fa-solid-900.woff2") format("woff2"), url("../fonts/fa-solid-900.ttf") format("truetype"); } + +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../fonts/fa-brands-400.woff2") format("woff2"), url("../fonts/fa-brands-400.ttf") format("truetype"); } + +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../fonts/fa-regular-400.woff2") format("woff2"), url("../fonts/fa-regular-400.ttf") format("truetype"); + unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; } + +@font-face { + font-family: 'FontAwesome'; + font-display: block; + src: url("../fonts/fa-v4compatibility.woff2") format("woff2"), url("../fonts/fa-v4compatibility.ttf") format("truetype"); + unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; } diff --git a/template/acp/fonts/FontAwesome.otf b/template/acp/fonts/FontAwesome.otf deleted file mode 100644 index 401ec0f3..00000000 Binary files a/template/acp/fonts/FontAwesome.otf and /dev/null differ diff --git a/template/acp/fonts/fa-brands-400.ttf b/template/acp/fonts/fa-brands-400.ttf new file mode 100644 index 00000000..5efb1d4f Binary files /dev/null and b/template/acp/fonts/fa-brands-400.ttf differ diff --git a/template/acp/fonts/fa-brands-400.woff2 b/template/acp/fonts/fa-brands-400.woff2 new file mode 100644 index 00000000..36fbda7d Binary files /dev/null and b/template/acp/fonts/fa-brands-400.woff2 differ diff --git a/template/acp/fonts/fa-regular-400.ttf b/template/acp/fonts/fa-regular-400.ttf new file mode 100644 index 00000000..838b4e2c Binary files /dev/null and b/template/acp/fonts/fa-regular-400.ttf differ diff --git a/template/acp/fonts/fa-regular-400.woff2 b/template/acp/fonts/fa-regular-400.woff2 new file mode 100644 index 00000000..b6cabbac Binary files /dev/null and b/template/acp/fonts/fa-regular-400.woff2 differ diff --git a/template/acp/fonts/fa-solid-900.ttf b/template/acp/fonts/fa-solid-900.ttf new file mode 100644 index 00000000..ec24749d Binary files /dev/null and b/template/acp/fonts/fa-solid-900.ttf differ diff --git a/template/acp/fonts/fa-solid-900.woff2 b/template/acp/fonts/fa-solid-900.woff2 new file mode 100644 index 00000000..824d518e Binary files /dev/null and b/template/acp/fonts/fa-solid-900.woff2 differ diff --git a/template/acp/fonts/fa-v4compatibility.ttf b/template/acp/fonts/fa-v4compatibility.ttf new file mode 100644 index 00000000..b175aa8e Binary files /dev/null and b/template/acp/fonts/fa-v4compatibility.ttf differ diff --git a/template/acp/fonts/fa-v4compatibility.woff2 b/template/acp/fonts/fa-v4compatibility.woff2 new file mode 100644 index 00000000..e09b5a55 Binary files /dev/null and b/template/acp/fonts/fa-v4compatibility.woff2 differ diff --git a/template/acp/fonts/fontawesome-webfont.eot b/template/acp/fonts/fontawesome-webfont.eot deleted file mode 100644 index e9f60ca9..00000000 Binary files a/template/acp/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/template/acp/fonts/fontawesome-webfont.svg b/template/acp/fonts/fontawesome-webfont.svg deleted file mode 100644 index 76f1bae8..00000000 --- a/template/acp/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,2672 +0,0 @@ - - - - - Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 - By ,,, - Copyright Dave Gandy 2016. All rights reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/template/acp/fonts/fontawesome-webfont.ttf b/template/acp/fonts/fontawesome-webfont.ttf deleted file mode 100644 index 35acda2f..00000000 Binary files a/template/acp/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/template/acp/fonts/fontawesome-webfont.woff b/template/acp/fonts/fontawesome-webfont.woff deleted file mode 100644 index 400014a4..00000000 Binary files a/template/acp/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/template/acp/fonts/fontawesome-webfont.woff2 b/template/acp/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 4d13fc60..00000000 Binary files a/template/acp/fonts/fontawesome-webfont.woff2 and /dev/null differ diff --git a/template/acp/js/form.js b/template/acp/js/form.js index 72b0b995..168d4b8b 100644 --- a/template/acp/js/form.js +++ b/template/acp/js/form.js @@ -1,1257 +1,1540 @@ /*! * jQuery Form Plugin - * version: 3.51.0-2014.06.20 - * Requires jQuery v1.5 or later - * Copyright (c) 2014 M. Alsup - * Examples and documentation at: http://malsup.com/jquery/form/ - * Project repository: https://github.com/malsup/form - * Dual licensed under the MIT and GPL licenses. - * https://github.com/malsup/form#copyright-and-license + * version: 4.3.0 + * Requires jQuery v1.7.2 or later + * Project repository: https://github.com/jquery-form/form + + * Copyright 2017 Kevin Morris + * Copyright 2006 M. Alsup + + * Dual licensed under the LGPL-2.1+ or MIT licenses + * https://github.com/jquery-form/form#license + + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. */ -/*global ActiveXObject */ +/* global ActiveXObject */ -// AMD support +/* eslint-disable */ (function (factory) { - "use strict"; - if (typeof define === 'function' && define.amd) { - // using AMD; register as anon module - define(['jquery'], factory); - } else { - // no AMD; invoke directly - factory((typeof (jQuery) != 'undefined') ? jQuery : window.Zepto); - } -} - -(function ($) { - "use strict"; - - /* - Usage Note: - ----------- - Do not use both ajaxSubmit and ajaxForm on the same form. These - functions are mutually exclusive. Use ajaxSubmit if you want - to bind your own submit handler to the form. For example, - - $(document).ready(function() { - $('#myForm').on('submit', function(e) { - e.preventDefault(); // <-- important - $(this).ajaxSubmit({ - target: '#output' - }); - }); - }); - - Use ajaxForm when you want the plugin to manage all the event binding - for you. For example, - - $(document).ready(function() { - $('#myForm').ajaxForm({ - target: '#output' - }); - }); - - You can also use ajaxForm with delegation (requires jQuery v1.7+), so the - form does not have to exist when you invoke ajaxForm: - - $('#myForm').ajaxForm({ - delegation: true, - target: '#output' - }); - - When using ajaxForm, the ajaxSubmit function will be invoked for you - at the appropriate time. - */ - - /** - * Feature detection - */ - var feature = {}; - feature.fileapi = $("").get(0).files !== undefined; - feature.formdata = window.FormData !== undefined; - - var hasProp = !!$.fn.prop; - -// attr2 uses prop when it can but checks the return type for -// an expected string. this accounts for the case where a form -// contains inputs with names like "action" or "method"; in those -// cases "prop" returns the element - $.fn.attr2 = function () { - if (!hasProp) { - return this.attr.apply(this, arguments); - } - var val = this.prop.apply(this, arguments); - if ((val && val.jquery) || typeof val === 'string') { - return val; - } - return this.attr.apply(this, arguments); - }; - - /** - * ajaxSubmit() provides a mechanism for immediately submitting - * an HTML form using AJAX. - */ - $.fn.ajaxSubmit = function (options) { - /*jshint scripturl:true */ - - // fast fail if nothing selected (http://dev.jquery.com/ticket/2752) - if (!this.length) { - log('ajaxSubmit: skipping submit process - no element selected'); - return this; - } - - var method, action, url, $form = this; - - if (typeof options == 'function') { - options = {success: options}; - } else if (options === undefined) { - options = {}; - } - - method = options.type || this.attr2('method'); - action = options.url || this.attr2('action'); - - url = (typeof action === 'string') ? $.trim(action) : ''; - url = url || window.location.href || ''; - if (url) { - // clean url (don't include hash vaue) - url = (url.match(/^([^#]+)/) || [])[1]; - } - - options = $.extend(true, { - url: url, - success: $.ajaxSettings.success, - type: method || $.ajaxSettings.type, - iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' - }, options); - - // hook for manipulating the form data before it is extracted; - // convenient for use with rich editors like tinyMCE or FCKEditor - var veto = {}; - this.trigger('form-pre-serialize', [this, options, veto]); - if (veto.veto) { - log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); - return this; - } - - // provide opportunity to alter form data before it is serialized - if (options.beforeSerialize && options.beforeSerialize(this, options) === false) { - log('ajaxSubmit: submit aborted via beforeSerialize callback'); - return this; - } - - var traditional = options.traditional; - if (traditional === undefined) { - traditional = $.ajaxSettings.traditional; - } - - var elements = []; - var qx, a = this.formToArray(options.semantic, elements); - if (options.data) { - options.extraData = options.data; - qx = $.param(options.data, traditional); - } - - // give pre-submit callback an opportunity to abort the submit - if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) { - log('ajaxSubmit: submit aborted via beforeSubmit callback'); - return this; - } - - // fire vetoable 'validate' event - this.trigger('form-submit-validate', [a, this, options, veto]); - if (veto.veto) { - log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); - return this; - } - - var q = $.param(a, traditional); - if (qx) { - q = (q ? (q + '&' + qx) : qx); - } - if (options.type.toUpperCase() == 'GET') { - options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; - options.data = null; // data is null for 'get' - } else { - options.data = q; // data is the query string for 'post' - } - - var callbacks = []; - if (options.resetForm) { - callbacks.push(function () { - $form.resetForm(); - }); - } - if (options.clearForm) { - callbacks.push(function () { - $form.clearForm(options.includeHidden); - }); - } - - // perform a load on the target only if dataType is not provided - if (!options.dataType && options.target) { - var oldSuccess = options.success || function () { - }; - callbacks.push(function (data) { - var fn = options.replaceTarget ? 'replaceWith' : 'html'; - $(options.target)[fn](data).each(oldSuccess, arguments); - }); - } else if (options.success) { - callbacks.push(options.success); - } - - options.success = function (data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg - var context = options.context || this; // jQuery 1.4+ supports scope context - for (var i = 0, max = callbacks.length; i < max; i++) { - callbacks[i].apply(context, [data, status, xhr || $form, $form]); - } - }; - - if (options.error) { - var oldError = options.error; - options.error = function (xhr, status, error) { - var context = options.context || this; - oldError.apply(context, [xhr, status, error, $form]); - }; - } - - if (options.complete) { - var oldComplete = options.complete; - options.complete = function (xhr, status) { - var context = options.context || this; - oldComplete.apply(context, [xhr, status, $form]); - }; - } - - // are there files to upload? - - // [value] (issue #113), also see comment: - // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219 - var fileInputs = $('input[type=file]:enabled', this).filter(function () { - return $(this).val() !== ''; - }); - - var hasFileInputs = fileInputs.length > 0; - var mp = 'multipart/form-data'; - var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp); - - var fileAPI = feature.fileapi && feature.formdata; - log("fileAPI :" + fileAPI); - var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI; - - var jqxhr; - - // options.iframe allows user to force iframe mode - // 06-NOV-09: now defaulting to iframe mode if file input is detected - if (options.iframe !== false && (options.iframe || shouldUseFrame)) { - // hack to fix Safari hang (thanks to Tim Molendijk for this) - // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d - if (options.closeKeepAlive) { - $.get(options.closeKeepAlive, function () { - jqxhr = fileUploadIframe(a); - }); - } else { - jqxhr = fileUploadIframe(a); - } - } else if ((hasFileInputs || multipart) && fileAPI) { - jqxhr = fileUploadXhr(a); - } else { - jqxhr = $.ajax(options); - } - - $form.removeData('jqxhr').data('jqxhr', jqxhr); - - // clear element array - for (var k = 0; k < elements.length; k++) { - elements[k] = null; - } - - // fire 'notify' event - this.trigger('form-submit-notify', [this, options]); - return this; - - // utility fn for deep serialization - function deepSerialize(extraData) { - var serialized = $.param(extraData, options.traditional).split('&'); - var len = serialized.length; - var result = []; - var i, part; - for (i = 0; i < len; i++) { - // #252; undo param space replacement - serialized[i] = serialized[i].replace(/\+/g, ' '); - part = serialized[i].split('='); - // #278; use array instead of object storage, favoring array serializations - result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]); - } - return result; - } - - // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz) - function fileUploadXhr(a) { - var formdata = new FormData(); - - for (var i = 0; i < a.length; i++) { - formdata.append(a[i].name, a[i].value); - } - - if (options.extraData) { - var serializedData = deepSerialize(options.extraData); - for (i = 0; i < serializedData.length; i++) { - if (serializedData[i]) { - formdata.append(serializedData[i][0], serializedData[i][1]); - } - } - } - - options.data = null; - - var s = $.extend(true, {}, $.ajaxSettings, options, { - contentType: false, - processData: false, - cache: false, - type: method || 'POST' - }); - - if (options.uploadProgress) { - // workaround because jqXHR does not expose upload property - s.xhr = function () { - var xhr = $.ajaxSettings.xhr(); - if (xhr.upload) { - xhr.upload.addEventListener('progress', function (event) { - var percent = 0; - var position = event.loaded || event.position; /*event.position is deprecated*/ - var total = event.total; - if (event.lengthComputable) { - percent = Math.ceil(position / total * 100); - } - options.uploadProgress(event, position, total, percent); - }, false); - } - return xhr; - }; - } - - s.data = null; - var beforeSend = s.beforeSend; - s.beforeSend = function (xhr, o) { - //Send FormData() provided by user - if (options.formData) { - o.data = options.formData; - } else { - o.data = formdata; - } - if (beforeSend) { - beforeSend.call(this, xhr, o); - } - }; - return $.ajax(s); - } - - // private function for handling file uploads (hat tip to YAHOO!) - function fileUploadIframe(a) { - var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle; - var deferred = $.Deferred(); - - // #341 - deferred.abort = function (status) { - xhr.abort(status); - }; - - if (a) { - // ensure that every serialized input is still enabled - for (i = 0; i < elements.length; i++) { - el = $(elements[i]); - if (hasProp) { - el.prop('disabled', false); - } else { - el.removeAttr('disabled'); - } - } - } - - s = $.extend(true, {}, $.ajaxSettings, options); - s.context = s.context || s; - id = 'jqFormIO' + (new Date().getTime()); - if (s.iframeTarget) { - $io = $(s.iframeTarget); - n = $io.attr2('name'); - if (!n) { - $io.attr2('name', id); - } else { - id = n; - } - } else { - $io = $('' : "vimeo" === g.type && (c = ''), f.addClass("owl-video-playing"), this._playing = f, d = a('
    ' + c + "
    "), e.after(d) - }, d.prototype.isInFullScreen = function () { - var d = c.fullscreenElement || c.mozFullScreenElement || c.webkitFullscreenElement; - return d && a(d).parent().hasClass("owl-video-frame") && (this._core.speed(0), this._fullscreen = !0), d && this._fullscreen && this._playing ? !1 : this._fullscreen ? (this._fullscreen = !1, !1) : this._playing && this._core.state.orientation !== b.orientation ? (this._core.state.orientation = b.orientation, !1) : !0 - }, d.prototype.destroy = function () { - var a, b; - this._core.$element.off("click.owl.video"); - for (a in this._handlers) this._core.$element.off(a, this._handlers[a]); - for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null) - }, a.fn.owlCarousel.Constructor.Plugins.Video = d - }(window.Zepto || window.jQuery, window, document), function (a, b, c, d) { - var e = function (b) { - this.core = b, this.core.options = a.extend({}, e.Defaults, this.core.options), this.swapping = !0, this.previous = d, this.next = d, this.handlers = { - "change.owl.carousel": a.proxy(function (a) { - "position" == a.property.name && (this.previous = this.core.current(), this.next = a.property.value) - }, this), "drag.owl.carousel dragged.owl.carousel translated.owl.carousel": a.proxy(function (a) { - this.swapping = "translated" == a.type - }, this), "translate.owl.carousel": a.proxy(function () { - this.swapping && (this.core.options.animateOut || this.core.options.animateIn) && this.swap() - }, this) - }, this.core.$element.on(this.handlers) - }; - e.Defaults = {animateOut: !1, animateIn: !1}, e.prototype.swap = function () { - if (1 === this.core.settings.items && this.core.support3d) { - this.core.speed(0); - var b, c = a.proxy(this.clear, this), d = this.core.$stage.children().eq(this.previous), - e = this.core.$stage.children().eq(this.next), f = this.core.settings.animateIn, - g = this.core.settings.animateOut; - this.core.current() !== this.previous && (g && (b = this.core.coordinates(this.previous) - this.core.coordinates(this.next), d.css({left: b + "px"}).addClass("animated owl-animated-out").addClass(g).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", c)), f && e.addClass("animated owl-animated-in").addClass(f).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", c)) - } - }, e.prototype.clear = function (b) { - a(b.target).css({left: ""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut), this.core.transitionEnd() - }, e.prototype.destroy = function () { - var a, b; - for (a in this.handlers) this.core.$element.off(a, this.handlers[a]); - for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null) - }, a.fn.owlCarousel.Constructor.Plugins.Animate = e - }(window.Zepto || window.jQuery, window, document), function (a, b, c) { - var d = function (b) { - this.core = b, this.core.options = a.extend({}, d.Defaults, this.core.options), this.handlers = { - "translated.owl.carousel refreshed.owl.carousel": a.proxy(function () { - this.autoplay() - }, this), "play.owl.autoplay": a.proxy(function (a, b, c) { - this.play(b, c) - }, this), "stop.owl.autoplay": a.proxy(function () { - this.stop() - }, this), "mouseover.owl.autoplay": a.proxy(function () { - this.core.settings.autoplayHoverPause && this.pause() - }, this), "mouseleave.owl.autoplay": a.proxy(function () { - this.core.settings.autoplayHoverPause && this.autoplay() - }, this) - }, this.core.$element.on(this.handlers) - }; - d.Defaults = { - autoplay: !1, - autoplayTimeout: 5e3, - autoplayHoverPause: !1, - autoplaySpeed: !1 - }, d.prototype.autoplay = function () { - this.core.settings.autoplay && !this.core.state.videoPlay ? (b.clearInterval(this.interval), this.interval = b.setInterval(a.proxy(function () { - this.play() - }, this), this.core.settings.autoplayTimeout)) : b.clearInterval(this.interval) - }, d.prototype.play = function () { - return c.hidden === !0 || this.core.state.isTouch || this.core.state.isScrolling || this.core.state.isSwiping || this.core.state.inMotion ? void 0 : this.core.settings.autoplay === !1 ? void b.clearInterval(this.interval) : void this.core.next(this.core.settings.autoplaySpeed) - }, d.prototype.stop = function () { - b.clearInterval(this.interval) - }, d.prototype.pause = function () { - b.clearInterval(this.interval) - }, d.prototype.destroy = function () { - var a, c; - b.clearInterval(this.interval); - for (a in this.handlers) this.core.$element.off(a, this.handlers[a]); - for (c in Object.getOwnPropertyNames(this)) "function" != typeof this[c] && (this[c] = null) - }, a.fn.owlCarousel.Constructor.Plugins.autoplay = d - }(window.Zepto || window.jQuery, window, document), function (a) { - "use strict"; - var b = function (c) { - this._core = c, this._initialized = !1, this._pages = [], this._controls = {}, this._templates = [], this.$element = this._core.$element, this._overrides = { - next: this._core.next, - prev: this._core.prev, - to: this._core.to - }, this._handlers = { - "prepared.owl.carousel": a.proxy(function (b) { - this._core.settings.dotsData && this._templates.push(a(b.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot")) - }, this), "add.owl.carousel": a.proxy(function (b) { - this._core.settings.dotsData && this._templates.splice(b.position, 0, a(b.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot")) - }, this), "remove.owl.carousel prepared.owl.carousel": a.proxy(function (a) { - this._core.settings.dotsData && this._templates.splice(a.position, 1) - }, this), "change.owl.carousel": a.proxy(function (a) { - if ("position" == a.property.name && !this._core.state.revert && !this._core.settings.loop && this._core.settings.navRewind) { - var b = this._core.current(), c = this._core.maximum(), d = this._core.minimum(); - a.data = a.property.value > c ? b >= c ? d : c : a.property.value < d ? c : a.property.value - } - }, this), "changed.owl.carousel": a.proxy(function (a) { - "position" == a.property.name && this.draw() - }, this), "refreshed.owl.carousel": a.proxy(function () { - this._initialized || (this.initialize(), this._initialized = !0), this._core.trigger("refresh", null, "navigation"), this.update(), this.draw(), this._core.trigger("refreshed", null, "navigation") - }, this) - }, this._core.options = a.extend({}, b.Defaults, this._core.options), this.$element.on(this._handlers) - }; - b.Defaults = { - nav: !1, - navRewind: !0, - navText: ["prev", "next"], - navSpeed: !1, - navElement: "div", - navContainer: !1, - navContainerClass: "owl-nav", - navClass: ["owl-prev", "owl-next"], - slideBy: 1, - dotClass: "owl-dot", - dotsClass: "owl-dots", - dots: !0, - dotsEach: !1, - dotData: !1, - dotsSpeed: !1, - dotsContainer: !1, - controlsClass: "owl-controls" - }, b.prototype.initialize = function () { - var b, c, d = this._core.settings; - d.dotsData || (this._templates = [a("
    ").addClass(d.dotClass).append(a("")).prop("outerHTML")]), d.navContainer && d.dotsContainer || (this._controls.$container = a("
    ").addClass(d.controlsClass).appendTo(this.$element)), this._controls.$indicators = d.dotsContainer ? a(d.dotsContainer) : a("
    ").hide().addClass(d.dotsClass).appendTo(this._controls.$container), this._controls.$indicators.on("click", "div", a.proxy(function (b) { - var c = a(b.target).parent().is(this._controls.$indicators) ? a(b.target).index() : a(b.target).parent().index(); - b.preventDefault(), this.to(c, d.dotsSpeed) - }, this)), b = d.navContainer ? a(d.navContainer) : a("
    ").addClass(d.navContainerClass).prependTo(this._controls.$container), this._controls.$next = a("<" + d.navElement + ">"), this._controls.$previous = this._controls.$next.clone(), this._controls.$previous.addClass(d.navClass[0]).html(d.navText[0]).hide().prependTo(b).on("click", a.proxy(function () { - this.prev(d.navSpeed) - }, this)), this._controls.$next.addClass(d.navClass[1]).html(d.navText[1]).hide().appendTo(b).on("click", a.proxy(function () { - this.next(d.navSpeed) - }, this)); - for (c in this._overrides) this._core[c] = a.proxy(this[c], this) - }, b.prototype.destroy = function () { - var a, b, c, d; - for (a in this._handlers) this.$element.off(a, this._handlers[a]); - for (b in this._controls) this._controls[b].remove(); - for (d in this.overides) this._core[d] = this._overrides[d]; - for (c in Object.getOwnPropertyNames(this)) "function" != typeof this[c] && (this[c] = null) - }, b.prototype.update = function () { - var a, b, c, d = this._core.settings, e = this._core.clones().length / 2, f = e + this._core.items().length, - g = d.center || d.autoWidth || d.dotData ? 1 : d.dotsEach || d.items; - if ("page" !== d.slideBy && (d.slideBy = Math.min(d.slideBy, d.items)), d.dots || "page" == d.slideBy) for (this._pages = [], a = e, b = 0, c = 0; f > a; a++) (b >= g || 0 === b) && (this._pages.push({ - start: a - e, - end: a - e + g - 1 - }), b = 0, ++c), b += this._core.mergers(this._core.relative(a)) - }, b.prototype.draw = function () { - var b, c, d = "", e = this._core.settings, - f = (this._core.$stage.children(), this._core.relative(this._core.current())); - if (!e.nav || e.loop || e.navRewind || (this._controls.$previous.toggleClass("disabled", 0 >= f), this._controls.$next.toggleClass("disabled", f >= this._core.maximum())), this._controls.$previous.toggle(e.nav), this._controls.$next.toggle(e.nav), e.dots) { - if (b = this._pages.length - this._controls.$indicators.children().length, e.dotData && 0 !== b) { - for (c = 0; c < this._controls.$indicators.children().length; c++) d += this._templates[this._core.relative(c)]; - this._controls.$indicators.html(d) - } else b > 0 ? (d = new Array(b + 1).join(this._templates[0]), this._controls.$indicators.append(d)) : 0 > b && this._controls.$indicators.children().slice(b).remove(); - this._controls.$indicators.find(".active").removeClass("active"), this._controls.$indicators.children().eq(a.inArray(this.current(), this._pages)).addClass("active") - } - this._controls.$indicators.toggle(e.dots) - }, b.prototype.onTrigger = function (b) { - var c = this._core.settings; - b.page = { - index: a.inArray(this.current(), this._pages), - count: this._pages.length, - size: c && (c.center || c.autoWidth || c.dotData ? 1 : c.dotsEach || c.items) - } - }, b.prototype.current = function () { - var b = this._core.relative(this._core.current()); - return a.grep(this._pages, function (a) { - return a.start <= b && a.end >= b - }).pop() - }, b.prototype.getPosition = function (b) { - var c, d, e = this._core.settings; - return "page" == e.slideBy ? (c = a.inArray(this.current(), this._pages), d = this._pages.length, b ? ++c : --c, c = this._pages[(c % d + d) % d].start) : (c = this._core.relative(this._core.current()), d = this._core.items().length, b ? c += e.slideBy : c -= e.slideBy), c - }, b.prototype.next = function (b) { - a.proxy(this._overrides.to, this._core)(this.getPosition(!0), b) - }, b.prototype.prev = function (b) { - a.proxy(this._overrides.to, this._core)(this.getPosition(!1), b) - }, b.prototype.to = function (b, c, d) { - var e; - d ? a.proxy(this._overrides.to, this._core)(b, c) : (e = this._pages.length, a.proxy(this._overrides.to, this._core)(this._pages[(b % e + e) % e].start, c)) - }, a.fn.owlCarousel.Constructor.Plugins.Navigation = b - }(window.Zepto || window.jQuery, window, document), function (a, b) { - "use strict"; - var c = function (d) { - this._core = d, this._hashes = {}, this.$element = this._core.$element, this._handlers = { - "initialized.owl.carousel": a.proxy(function () { - "URLHash" == this._core.settings.startPosition && a(b).trigger("hashchange.owl.navigation") - }, this), "prepared.owl.carousel": a.proxy(function (b) { - var c = a(b.content).find("[data-hash]").andSelf("[data-hash]").attr("data-hash"); - this._hashes[c] = b.content - }, this) - }, this._core.options = a.extend({}, c.Defaults, this._core.options), this.$element.on(this._handlers), a(b).on("hashchange.owl.navigation", a.proxy(function () { - var a = b.location.hash.substring(1), c = this._core.$stage.children(), - d = this._hashes[a] && c.index(this._hashes[a]) || 0; - return a ? void this._core.to(d, !1, !0) : !1 - }, this)) - }; - c.Defaults = {URLhashListener: !1}, c.prototype.destroy = function () { - var c, d; - a(b).off("hashchange.owl.navigation"); - for (c in this._handlers) this._core.$element.off(c, this._handlers[c]); - for (d in Object.getOwnPropertyNames(this)) "function" != typeof this[d] && (this[d] = null) - }, a.fn.owlCarousel.Constructor.Plugins.Hash = c - }(window.Zepto || window.jQuery, window, document); - -}(jQuery)); - - -(function ($) { - /*! Lazy Load 1.9.5 - MIT license - Copyright 2010-2015 Mika Tuupola */ - !function (a, b, c, d) { - var e = a(b); - a.fn.lazyload = function (f) { - function g() { - var b = 0; - i.each(function () { - var c = a(this); - if (!j.skip_invisible || c.is(":visible")) if (a.abovethetop(this, j) || a.leftofbegin(this, j)) ; else if (a.belowthefold(this, j) || a.rightoffold(this, j)) { - if (++b > j.failure_limit) return !1 - } else c.trigger("appear"), b = 0 - }) - } - - var h, i = this, j = { - threshold: 0, - failure_limit: 0, - event: "scroll", - effect: "show", - container: b, - data_attribute: "original", - skip_invisible: !1, - appear: null, - load: null, - placeholder: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" - }; - return f && (d !== f.failurelimit && (f.failure_limit = f.failurelimit, delete f.failurelimit), d !== f.effectspeed && (f.effect_speed = f.effectspeed, delete f.effectspeed), a.extend(j, f)), h = j.container === d || j.container === b ? e : a(j.container), 0 === j.event.indexOf("scroll") && h.bind(j.event, function () { - return g() - }), this.each(function () { - var b = this, c = a(b); - b.loaded = !1, (c.attr("src") === d || c.attr("src") === !1) && c.is("img") && c.attr("src", j.placeholder), c.one("appear", function () { - if (!this.loaded) { - if (j.appear) { - var d = i.length; - j.appear.call(b, d, j) - } - a("").bind("load", function () { - var d = c.attr("data-" + j.data_attribute); - c.hide(), c.is("img") ? c.attr("src", d) : c.css("background-image", "url('" + d + "')"), c[j.effect](j.effect_speed), b.loaded = !0; - var e = a.grep(i, function (a) { - return !a.loaded - }); - if (i = a(e), j.load) { - var f = i.length; - j.load.call(b, f, j) - } - }).attr("src", c.attr("data-" + j.data_attribute)) - } - }), 0 !== j.event.indexOf("scroll") && c.bind(j.event, function () { - b.loaded || c.trigger("appear") - }) - }), e.bind("resize", function () { - g() - }), /(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion) && e.bind("pageshow", function (b) { - b.originalEvent && b.originalEvent.persisted && i.each(function () { - a(this).trigger("appear") - }) - }), a(c).ready(function () { - g() - }), this - }, a.belowthefold = function (c, f) { - var g; - return g = f.container === d || f.container === b ? (b.innerHeight ? b.innerHeight : e.height()) + e.scrollTop() : a(f.container).offset().top + a(f.container).height(), g <= a(c).offset().top - f.threshold - }, a.rightoffold = function (c, f) { - var g; - return g = f.container === d || f.container === b ? e.width() + e.scrollLeft() : a(f.container).offset().left + a(f.container).width(), g <= a(c).offset().left - f.threshold - }, a.abovethetop = function (c, f) { - var g; - return g = f.container === d || f.container === b ? e.scrollTop() : a(f.container).offset().top, g >= a(c).offset().top + f.threshold + a(c).height() - }, a.leftofbegin = function (c, f) { - var g; - return g = f.container === d || f.container === b ? e.scrollLeft() : a(f.container).offset().left, g >= a(c).offset().left + f.threshold + a(c).width() - }, a.inviewport = function (b, c) { - return !(a.rightoffold(b, c) || a.leftofbegin(b, c) || a.belowthefold(b, c) || a.abovethetop(b, c)) - }, a.extend(a.expr[":"], { - "below-the-fold": function (b) { - return a.belowthefold(b, {threshold: 0}) - }, "above-the-top": function (b) { - return !a.belowthefold(b, {threshold: 0}) - }, "right-of-screen": function (b) { - return a.rightoffold(b, {threshold: 0}) - }, "left-of-screen": function (b) { - return !a.rightoffold(b, {threshold: 0}) - }, "in-viewport": function (b) { - return a.inviewport(b, {threshold: 0}) - }, "above-the-fold": function (b) { - return !a.belowthefold(b, {threshold: 0}) - }, "right-of-fold": function (b) { - return a.rightoffold(b, {threshold: 0}) - }, "left-of-fold": function (b) { - return !a.rightoffold(b, {threshold: 0}) - } - }) - }(jQuery, window, document); - -}(jQuery)); - - -(function ($) { - /* - * Snap.js - * - * Copyright 2013, Jacob Kelley - http://jakiestfu.com/ - * Released under the MIT Licence - * http://opensource.org/licenses/MIT - * - * Github: http://github.com/jakiestfu/Snap.js/ - * Version: 1.9.3 (with elementMirror for fixed navigation bars) - */ - /*jslint browser: true*/ - /*global define, module, ender*/ - (function (win, doc) { - 'use strict'; - var Snap = Snap || function (userOpts) { - var settings = { - element: null, - elementMirror: null, - elementMirror2: null, - dragger: null, - disable: 'none', - addBodyClasses: true, - hyperextensible: true, - resistance: 0.5, - flickThreshold: 50, - transitionSpeed: 0.3, - easing: 'ease', - maxPosition: 266, - minPosition: -266, - tapToClose: true, - touchToDrag: true, - slideIntent: 40, // degrees - minDragDistance: 5 - }, - cache = { - simpleStates: { - opening: null, - towards: null, - hyperExtending: null, - halfway: null, - flick: null, - translation: { - absolute: 0, - relative: 0, - sinceDirectionChange: 0, - percentage: 0 - } - } - }, - eventList = {}, - utils = { - hasTouch: ('ontouchstart' in doc.documentElement || win.navigator.msPointerEnabled), - eventType: function (action) { - var eventTypes = { - down: (utils.hasTouch ? 'touchstart' : 'mousedown'), - move: (utils.hasTouch ? 'touchmove' : 'mousemove'), - up: (utils.hasTouch ? 'touchend' : 'mouseup'), - out: (utils.hasTouch ? 'touchcancel' : 'mouseout') - }; - return eventTypes[action]; - }, - page: function (t, e) { - return (utils.hasTouch && e.touches.length && e.touches[0]) ? e.touches[0]['page' + t] : e['page' + t]; - }, - klass: { - has: function (el, name) { - return (el.className).indexOf(name) !== -1; - }, - add: function (el, name) { - if (!utils.klass.has(el, name) && settings.addBodyClasses) { - el.className += " " + name; - } - }, - remove: function (el, name) { - if (settings.addBodyClasses) { - el.className = (el.className).replace(name, "").replace(/^\s+|\s+$/g, ''); - } - } - }, - dispatchEvent: function (type) { - if (typeof eventList[type] === 'function') { - return eventList[type].call(); - } - }, - vendor: function () { - var tmp = doc.createElement("div"), - prefixes = 'webkit Moz O ms'.split(' '), - i; - for (i in prefixes) { - if (typeof tmp.style[prefixes[i] + 'Transition'] !== 'undefined') { - return prefixes[i]; - } - } - }, - transitionCallback: function () { - return (cache.vendor === 'Moz' || cache.vendor === 'ms') ? 'transitionend' : cache.vendor + 'TransitionEnd'; - }, - canTransform: function () { - settings.element - return typeof settings.element.style[cache.vendor + 'Transform'] !== 'undefined'; - }, - deepExtend: function (destination, source) { - var property; - for (property in source) { - if (source[property] && source[property].constructor && source[property].constructor === Object) { - destination[property] = destination[property] || {}; - utils.deepExtend(destination[property], source[property]); - } else { - destination[property] = source[property]; - } - } - return destination; - }, - angleOfDrag: function (x, y) { - var degrees, theta; - // Calc Theta - theta = Math.atan2(-(cache.startDragY - y), (cache.startDragX - x)); - if (theta < 0) { - theta += 2 * Math.PI; - } - // Calc Degrees - degrees = Math.floor(theta * (180 / Math.PI) - 180); - if (degrees < 0 && degrees > -180) { - degrees = 360 - Math.abs(degrees); - } - return Math.abs(degrees); - }, - events: { - addEvent: function addEvent(element, eventName, func) { - if (element.addEventListener) { - return element.addEventListener(eventName, func, false); - } else if (element.attachEvent) { - return element.attachEvent("on" + eventName, func); - } - }, - removeEvent: function addEvent(element, eventName, func) { - if (element.addEventListener) { - return element.removeEventListener(eventName, func, false); - } else if (element.attachEvent) { - return element.detachEvent("on" + eventName, func); - } - }, - prevent: function (e) { - if (e.preventDefault) { - e.preventDefault(); - } else { - e.returnValue = false; - } - } - }, - parentUntil: function (el, attr) { - var isStr = typeof attr === 'string'; - while (el.parentNode) { - if (isStr && el.getAttribute && el.getAttribute(attr)) { - return el; - } else if (!isStr && el === attr) { - return el; - } - el = el.parentNode; - } - return null; - } - }, - action = { - translate: { - get: { - matrix: function (index) { - - if (!utils.canTransform()) { - return parseInt(settings.element.style.left, 10); - } else { - var matrix = win.getComputedStyle(settings.element)[cache.vendor + 'Transform'].match(/\((.*)\)/), - ieOffset = 8; - if (matrix) { - matrix = matrix[1].split(','); - if (matrix.length === 16) { - index += ieOffset; - } - return parseInt(matrix[index], 10); - } - return 0; - } - } - }, - easeCallback: function () { - settings.element.style[cache.vendor + 'Transition'] = ''; - settings.elementMirror.style[cache.vendor + 'Transition'] = ''; - settings.elementMirror2.style[cache.vendor + 'Transition'] = ''; - cache.translation = action.translate.get.matrix(4); - cache.easing = false; - clearInterval(cache.animatingInterval); - - if (cache.easingTo === 0) { - utils.klass.remove(doc.body, 'snapjs-right'); - utils.klass.remove(doc.body, 'snapjs-left'); - } - - utils.dispatchEvent('animated'); - utils.events.removeEvent(settings.element, utils.transitionCallback(), action.translate.easeCallback); - }, - easeTo: function (n) { - - if (!utils.canTransform()) { - cache.translation = n; - action.translate.x(n); - } else { - cache.easing = true; - cache.easingTo = n; - - settings.element.style[cache.vendor + 'Transition'] = 'all ' + settings.transitionSpeed + 's ' + settings.easing; - settings.elementMirror.style[cache.vendor + 'Transition'] = 'all ' + settings.transitionSpeed + 's ' + settings.easing; - settings.elementMirror2.style[cache.vendor + 'Transition'] = 'all ' + settings.transitionSpeed + 's ' + settings.easing; - - cache.animatingInterval = setInterval(function () { - utils.dispatchEvent('animating'); - }, 1); - - utils.events.addEvent(settings.element, utils.transitionCallback(), action.translate.easeCallback); - action.translate.x(n); - } - if (n === 0) { - settings.element.style[cache.vendor + 'Transform'] = ''; - settings.elementMirror.style[cache.vendor + 'Transform'] = ''; - settings.elementMirror2.style[cache.vendor + 'Transform'] = ''; - } - }, - x: function (n) { - if ((settings.disable === 'left' && n > 0) || - (settings.disable === 'right' && n < 0) - ) { - return; - } - - if (!settings.hyperextensible) { - if (n === settings.maxPosition || n > settings.maxPosition) { - n = settings.maxPosition; - } else if (n === settings.minPosition || n < settings.minPosition) { - n = settings.minPosition; - } - } - - n = parseInt(n, 10); - if (isNaN(n)) { - n = 0; - } - - if (utils.canTransform()) { - var theTranslate = 'translate3d(' + n + 'px, 0,0)'; - settings.element.style[cache.vendor + 'Transform'] = theTranslate; - settings.elementMirror.style[cache.vendor + 'Transform'] = theTranslate; - settings.elementMirror2.style[cache.vendor + 'Transform'] = theTranslate; - } else { - settings.element.style.width = (win.innerWidth || doc.documentElement.clientWidth) + 'px'; - settings.elementMirror.style.width = (win.innerWidth || doc.documentElement.clientWidth) + 'px'; - settings.elementMirror2.style.width = (win.innerWidth || doc.documentElement.clientWidth) + 'px'; - - settings.element.style.left = n + 'px'; - settings.elementMirror.style.left = n + 'px'; - settings.elementMirror2.style.left = n + 'px'; - settings.element.style.right = ''; - settings.elementMirror.style.right = ''; - settings.elementMirror2.style.right = ''; - - } - } - }, - drag: { - listen: function () { - cache.translation = 0; - cache.easing = false; - utils.events.addEvent(settings.element, utils.eventType('down'), action.drag.startDrag); - utils.events.addEvent(settings.element, utils.eventType('move'), action.drag.dragging); - utils.events.addEvent(settings.element, utils.eventType('up'), action.drag.endDrag); - }, - stopListening: function () { - utils.events.removeEvent(settings.element, utils.eventType('down'), action.drag.startDrag); - utils.events.removeEvent(settings.element, utils.eventType('move'), action.drag.dragging); - utils.events.removeEvent(settings.element, utils.eventType('up'), action.drag.endDrag); - }, - startDrag: function (e) { - // No drag on ignored elements - var target = e.target ? e.target : e.srcElement, - ignoreParent = utils.parentUntil(target, 'data-snap-ignore'); - - if (ignoreParent) { - utils.dispatchEvent('ignore'); - return; - } - - - if (settings.dragger) { - var dragParent = utils.parentUntil(target, settings.dragger); - - // Only use dragger if we're in a closed state - if (!dragParent && - (cache.translation !== settings.minPosition && - cache.translation !== settings.maxPosition - )) { - return; - } - } - - utils.dispatchEvent('start'); - settings.element.style[cache.vendor + 'Transition'] = ''; - settings.elementMirror.style[cache.vendor + 'Transition'] = ''; - settings.elementMirror2.style[cache.vendor + 'Transition'] = ''; - cache.isDragging = true; - cache.hasIntent = null; - cache.intentChecked = false; - cache.startDragX = utils.page('X', e); - cache.startDragY = utils.page('Y', e); - cache.dragWatchers = { - current: 0, - last: 0, - hold: 0, - state: '' - }; - cache.simpleStates = { - opening: null, - towards: null, - hyperExtending: null, - halfway: null, - flick: null, - translation: { - absolute: 0, - relative: 0, - sinceDirectionChange: 0, - percentage: 0 - } - }; - }, - dragging: function (e) { - if (cache.isDragging && settings.touchToDrag) { - - var thePageX = utils.page('X', e), - thePageY = utils.page('Y', e), - translated = cache.translation, - absoluteTranslation = action.translate.get.matrix(4), - whileDragX = thePageX - cache.startDragX, - openingLeft = absoluteTranslation > 0, - translateTo = whileDragX, - diff; - - // Shown no intent already - if ((cache.intentChecked && !cache.hasIntent)) { - return; - } - - if (settings.addBodyClasses) { - if ((absoluteTranslation) > 0) { - utils.klass.add(doc.body, 'snapjs-left'); - utils.klass.remove(doc.body, 'snapjs-right'); - } else if ((absoluteTranslation) < 0) { - utils.klass.add(doc.body, 'snapjs-right'); - utils.klass.remove(doc.body, 'snapjs-left'); - } - } - - if (cache.hasIntent === false || cache.hasIntent === null) { - var deg = utils.angleOfDrag(thePageX, thePageY), - inRightRange = (deg >= 0 && deg <= settings.slideIntent) || (deg <= 360 && deg > (360 - settings.slideIntent)), - inLeftRange = (deg >= 180 && deg <= (180 + settings.slideIntent)) || (deg <= 180 && deg >= (180 - settings.slideIntent)); - if (!inLeftRange && !inRightRange) { - cache.hasIntent = false; - } else { - cache.hasIntent = true; - } - cache.intentChecked = true; - } - - if ( - (settings.minDragDistance >= Math.abs(thePageX - cache.startDragX)) || // Has user met minimum drag distance? - (cache.hasIntent === false) - ) { - return; - } - - utils.events.prevent(e); - utils.dispatchEvent('drag'); - - cache.dragWatchers.current = thePageX; - // Determine which direction we are going - if (cache.dragWatchers.last > thePageX) { - if (cache.dragWatchers.state !== 'left') { - cache.dragWatchers.state = 'left'; - cache.dragWatchers.hold = thePageX; - } - cache.dragWatchers.last = thePageX; - } else if (cache.dragWatchers.last < thePageX) { - if (cache.dragWatchers.state !== 'right') { - cache.dragWatchers.state = 'right'; - cache.dragWatchers.hold = thePageX; - } - cache.dragWatchers.last = thePageX; - } - if (openingLeft) { - // Pulling too far to the right - if (settings.maxPosition < absoluteTranslation) { - diff = (absoluteTranslation - settings.maxPosition) * settings.resistance; - translateTo = whileDragX - diff; - } - cache.simpleStates = { - opening: 'left', - towards: cache.dragWatchers.state, - hyperExtending: settings.maxPosition < absoluteTranslation, - halfway: absoluteTranslation > (settings.maxPosition / 2), - flick: Math.abs(cache.dragWatchers.current - cache.dragWatchers.hold) > settings.flickThreshold, - translation: { - absolute: absoluteTranslation, - relative: whileDragX, - sinceDirectionChange: (cache.dragWatchers.current - cache.dragWatchers.hold), - percentage: (absoluteTranslation / settings.maxPosition) * 100 - } - }; - } else { - // Pulling too far to the left - if (settings.minPosition > absoluteTranslation) { - diff = (absoluteTranslation - settings.minPosition) * settings.resistance; - translateTo = whileDragX - diff; - } - cache.simpleStates = { - opening: 'right', - towards: cache.dragWatchers.state, - hyperExtending: settings.minPosition > absoluteTranslation, - halfway: absoluteTranslation < (settings.minPosition / 2), - flick: Math.abs(cache.dragWatchers.current - cache.dragWatchers.hold) > settings.flickThreshold, - translation: { - absolute: absoluteTranslation, - relative: whileDragX, - sinceDirectionChange: (cache.dragWatchers.current - cache.dragWatchers.hold), - percentage: (absoluteTranslation / settings.minPosition) * 100 - } - }; - } - action.translate.x(translateTo + translated); - } - }, - endDrag: function (e) { - if (cache.isDragging) { - utils.dispatchEvent('end'); - var translated = action.translate.get.matrix(4); - - // Tap Close - if (cache.dragWatchers.current === 0 && translated !== 0 && settings.tapToClose) { - utils.dispatchEvent('close'); - utils.events.prevent(e); - action.translate.easeTo(0); - cache.isDragging = false; - cache.startDragX = 0; - return; - } - - // Revealing Left - if (cache.simpleStates.opening === 'left') { - // Halfway, Flicking, or Too Far Out - if ((cache.simpleStates.halfway || cache.simpleStates.hyperExtending || cache.simpleStates.flick)) { - if (cache.simpleStates.flick && cache.simpleStates.towards === 'left') { // Flicking Closed - action.translate.easeTo(0); - } else if ( - (cache.simpleStates.flick && cache.simpleStates.towards === 'right') || // Flicking Open OR - (cache.simpleStates.halfway || cache.simpleStates.hyperExtending) // At least halfway open OR hyperextending - ) { - action.translate.easeTo(settings.maxPosition); // Open Left - } - } else { - action.translate.easeTo(0); // Close Left - } - // Revealing Right - } else if (cache.simpleStates.opening === 'right') { - // Halfway, Flicking, or Too Far Out - if ((cache.simpleStates.halfway || cache.simpleStates.hyperExtending || cache.simpleStates.flick)) { - if (cache.simpleStates.flick && cache.simpleStates.towards === 'right') { // Flicking Closed - action.translate.easeTo(0); - } else if ( - (cache.simpleStates.flick && cache.simpleStates.towards === 'left') || // Flicking Open OR - (cache.simpleStates.halfway || cache.simpleStates.hyperExtending) // At least halfway open OR hyperextending - ) { - action.translate.easeTo(settings.minPosition); // Open Right - } - } else { - action.translate.easeTo(0); // Close Right - } - } - cache.isDragging = false; - cache.startDragX = utils.page('X', e); - } - } - } - }, - init = function (opts) { - if (opts.element) { - utils.deepExtend(settings, opts); - cache.vendor = utils.vendor(); - action.drag.listen(); - } - }; - /* - * Public - */ - this.open = function (side) { - utils.dispatchEvent('open'); - utils.klass.remove(doc.body, 'snapjs-expand-left'); - utils.klass.remove(doc.body, 'snapjs-expand-right'); - - if (side === 'left') { - cache.simpleStates.opening = 'left'; - cache.simpleStates.towards = 'right'; - utils.klass.add(doc.body, 'snapjs-left'); - utils.klass.remove(doc.body, 'snapjs-right'); - action.translate.easeTo(settings.maxPosition); - } else if (side === 'right') { - cache.simpleStates.opening = 'right'; - cache.simpleStates.towards = 'left'; - utils.klass.remove(doc.body, 'snapjs-left'); - utils.klass.add(doc.body, 'snapjs-right'); - action.translate.easeTo(settings.minPosition); - } - }; - this.close = function () { - utils.dispatchEvent('close'); - action.translate.easeTo(0); - }; - this.expand = function (side) { - var to = win.innerWidth || doc.documentElement.clientWidth; - - if (side === 'left') { - utils.dispatchEvent('expandLeft'); - utils.klass.add(doc.body, 'snapjs-expand-left'); - utils.klass.remove(doc.body, 'snapjs-expand-right'); - } else { - utils.dispatchEvent('expandRight'); - utils.klass.add(doc.body, 'snapjs-expand-right'); - utils.klass.remove(doc.body, 'snapjs-expand-left'); - to *= -1; - } - action.translate.easeTo(to); - }; - - this.on = function (evt, fn) { - eventList[evt] = fn; - return this; - }; - this.off = function (evt) { - if (eventList[evt]) { - eventList[evt] = false; - } - }; - - this.enable = function () { - utils.dispatchEvent('enable'); - action.drag.listen(); - }; - this.disable = function () { - utils.dispatchEvent('disable'); - action.drag.stopListening(); - }; - - this.settings = function (opts) { - utils.deepExtend(settings, opts); - }; - - this.state = function () { - var state, - fromLeft = action.translate.get.matrix(4); - if (fromLeft === settings.maxPosition) { - state = 'left'; - } else if (fromLeft === settings.minPosition) { - state = 'right'; - } else { - state = 'closed'; - } - return { - state: state, - info: cache.simpleStates - }; - }; - init(userOpts); - }; - if ((typeof module !== 'undefined') && module.exports) { - module.exports = Snap; - } - if (typeof ender === 'undefined') { - this.Snap = Snap; - } - if ((typeof define === "function") && define.amd) { - define("snap", [], function () { - return Snap; - }); - } - }).call(this, window, document); -}(jQuery));// JavaScript Document - -(function ($) { - /*License MIT & GPL 3.0 Licenses.*/ - /* https://github.com/rendro/countdown */ - - !function (t) { - if ("object" == typeof exports && "undefined" != typeof module) module.exports = t(); else if ("function" == typeof define && define.amd) define([], t); else { - var e; - "undefined" != typeof window ? e = window : "undefined" != typeof global ? e = global : "undefined" != typeof self && (e = self), e.Countdown = t() - } - }(function () { - return function t(e, i, n) { - function s(r, a) { - if (!i[r]) { - if (!e[r]) { - var d = "function" == typeof require && require; - if (!a && d) return d(r, !0); - if (o) return o(r, !0); - var f = new Error("Cannot find module '" + r + "'"); - throw f.code = "MODULE_NOT_FOUND", f - } - var h = i[r] = {exports: {}}; - e[r][0].call(h.exports, function (t) { - var i = e[r][1][t]; - return s(i ? i : t) - }, h, h.exports, t, e, i, n) - } - return i[r].exports - } - - for (var o = "function" == typeof require && require, r = 0; r < n.length; r++) s(n[r]); - return s - }({ - 1: [function (t, e) { - var i = { - date: "June 7, 2087 15:03:25", refresh: 1e3, offset: 0, onEnd: function () { - }, render: function (t) { - this.el.innerHTML = "
    " + t.years + "years
    " + t.days + "days
    " + this.leadingZeros(t.hours) + "hours
    " + this.leadingZeros(t.min) + "minutes
    " + this.leadingZeros(t.sec) + "seconds
    " - } - }, n = function (t, e) { - this.el = t, this.options = {}, this.interval = !1; - for (var n in i) i.hasOwnProperty(n) && (this.options[n] = "undefined" != typeof e[n] ? e[n] : i[n], "date" === n && "object" != typeof this.options.date && (this.options.date = new Date(this.options.date)), "function" == typeof this.options[n] && (this.options[n] = this.options[n].bind(this))); - this.getDiffDate = function () { - var t = (this.options.date.getTime() - Date.now() + this.options.offset) / 1e3, - e = {years: 0, days: 0, hours: 0, min: 0, sec: 0, millisec: 0}; - return 0 >= t ? (this.interval && (this.stop(), this.options.onEnd()), e) : (t >= 31557600 && (e.years = Math.floor(t / 31557600), t -= 365.25 * e.years * 86400), t >= 86400 && (e.days = Math.floor(t / 86400), t -= 86400 * e.days), t >= 3600 && (e.hours = Math.floor(t / 3600), t -= 3600 * e.hours), t >= 60 && (e.min = Math.floor(t / 60), t -= 60 * e.min), e.sec = Math.round(t), e.millisec = t % 1 * 1e3, e) - }.bind(this), this.leadingZeros = function (t, e) { - return e = e || 2, t = String(t), t.length > e ? t : (Array(e + 1).join("0") + t).substr(-e) - }, this.update = function (t) { - return "object" != typeof t && (t = new Date(t)), this.options.date = t, this.render(), this - }.bind(this), this.stop = function () { - return this.interval && (clearInterval(this.interval), this.interval = !1), this - }.bind(this), this.render = function () { - return this.options.render(this.getDiffDate()), this - }.bind(this), this.start = function () { - return this.interval ? void 0 : (this.render(), this.options.refresh && (this.interval = setInterval(this.render, this.options.refresh)), this) - }.bind(this), this.updateOffset = function (t) { - return this.options.offset = t, this - }.bind(this), this.start() - }; - e.exports = n - }, {}], 2: [function (t, e) { - var i = t("./countdown.js"), n = "countdown", s = "date"; - jQuery.fn.countdown = function (t) { - return $.each(this, function (e, o) { - var r = $(o); - r.data(n) || (r.data(s) && (t.date = r.data(s)), r.data(n, new i(o, t))) - }) - }, e.exports = i - }, {"./countdown.js": 1}] - }, {}, [2])(2) - }); -}(jQuery)); - - -(function ($) { - /*! - * Chart.js - * http://chartjs.org/ - * Version: 1.0.2 - * - * Copyright 2015 Nick Downie - * Released under the MIT license - * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md - */ - (function () { - "use strict"; - var t = this, i = t.Chart, e = function (t) { - this.canvas = t.canvas, this.ctx = t; - var i = function (t, i) { - return t["offset" + i] ? t["offset" + i] : document.defaultView.getComputedStyle(t).getPropertyValue(i) - }, e = this.width = i(t.canvas, "Width"), n = this.height = i(t.canvas, "Height"); - t.canvas.width = e, t.canvas.height = n; - var e = this.width = t.canvas.width, n = this.height = t.canvas.height; - return this.aspectRatio = this.width / this.height, s.retinaScale(this), this - }; - e.defaults = { - global: { - animation: false, - animationSteps: 60, - animationEasing: "easeOutQuart", - showScale: !0, - scaleOverride: !1, - scaleSteps: null, - scaleStepWidth: null, - scaleStartValue: null, - scaleLineColor: "rgba(0,0,0,.1)", - scaleLineWidth: 1, - scaleShowLabels: !0, - scaleLabel: "<%=value%>", - scaleIntegersOnly: !0, - scaleBeginAtZero: !1, - scaleFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", - scaleFontSize: 12, - scaleFontStyle: "normal", - scaleFontColor: "#666", - responsive: true, - maintainAspectRatio: true, - showTooltips: !0, - customTooltips: !1, - tooltipEvents: ["mousemove", "touchstart", "touchmove", "mouseout"], - tooltipFillColor: "rgba(0,0,0,0.8)", - tooltipFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", - tooltipFontSize: 14, - tooltipFontStyle: "normal", - tooltipFontColor: "#fff", - tooltipTitleFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", - tooltipTitleFontSize: 14, - tooltipTitleFontStyle: "bold", - tooltipTitleFontColor: "#fff", - tooltipYPadding: 6, - tooltipXPadding: 6, - tooltipCaretSize: 8, - tooltipCornerRadius: 6, - tooltipXOffset: 10, - tooltipTemplate: "<%if (label){%><%=label%>: <%}%><%= value %>", - multiTooltipTemplate: "<%= value %>", - multiTooltipKeyBackground: "#fff", - onAnimationProgress: function () { - }, - onAnimationComplete: function () { - } - } - }, e.types = {}; - var s = e.helpers = {}, n = s.each = function (t, i, e) { - var s = Array.prototype.slice.call(arguments, 3); - if (t) if (t.length === +t.length) { - var n; - for (n = 0; n < t.length; n++) i.apply(e, [t[n], n].concat(s)) - } else for (var o in t) i.apply(e, [t[o], o].concat(s)) - }, o = s.clone = function (t) { - var i = {}; - return n(t, function (e, s) { - t.hasOwnProperty(s) && (i[s] = e) - }), i - }, a = s.extend = function (t) { - return n(Array.prototype.slice.call(arguments, 1), function (i) { - n(i, function (e, s) { - i.hasOwnProperty(s) && (t[s] = e) - }) - }), t - }, h = s.merge = function () { - var t = Array.prototype.slice.call(arguments, 0); - return t.unshift({}), a.apply(null, t) - }, l = s.indexOf = function (t, i) { - if (Array.prototype.indexOf) return t.indexOf(i); - for (var e = 0; e < t.length; e++) if (t[e] === i) return e; - return -1 - }, r = (s.where = function (t, i) { - var e = []; - return s.each(t, function (t) { - i(t) && e.push(t) - }), e - }, s.findNextWhere = function (t, i, e) { - e || (e = -1); - for (var s = e + 1; s < t.length; s++) { - var n = t[s]; - if (i(n)) return n - } - }, s.findPreviousWhere = function (t, i, e) { - e || (e = t.length); - for (var s = e - 1; s >= 0; s--) { - var n = t[s]; - if (i(n)) return n - } - }, s.inherits = function (t) { - var i = this, e = t && t.hasOwnProperty("constructor") ? t.constructor : function () { - return i.apply(this, arguments) - }, s = function () { - this.constructor = e - }; - return s.prototype = i.prototype, e.prototype = new s, e.extend = r, t && a(e.prototype, t), e.__super__ = i.prototype, e - }), c = s.noop = function () { - }, u = s.uid = function () { - var t = 0; - return function () { - return "chart-" + t++ - } - }(), d = s.warn = function (t) { - window.console && "function" == typeof window.console.warn && console.warn(t) - }, p = s.amd = "function" == typeof define && define.amd, f = s.isNumber = function (t) { - return !isNaN(parseFloat(t)) && isFinite(t) - }, g = s.max = function (t) { - return Math.max.apply(Math, t) - }, m = s.min = function (t) { - return Math.min.apply(Math, t) - }, v = (s.cap = function (t, i, e) { - if (f(i)) { - if (t > i) return i - } else if (f(e) && e > t) return e; - return t - }, s.getDecimalPlaces = function (t) { - return t % 1 !== 0 && f(t) ? t.toString().split(".")[1].length : 0 - }), S = s.radians = function (t) { - return t * (Math.PI / 180) - }, x = (s.getAngleFromPoint = function (t, i) { - var e = i.x - t.x, s = i.y - t.y, n = Math.sqrt(e * e + s * s), o = 2 * Math.PI + Math.atan2(s, e); - return 0 > e && 0 > s && (o += 2 * Math.PI), {angle: o, distance: n} - }, s.aliasPixel = function (t) { - return t % 2 === 0 ? 0 : .5 - }), y = (s.splineCurve = function (t, i, e, s) { - var n = Math.sqrt(Math.pow(i.x - t.x, 2) + Math.pow(i.y - t.y, 2)), - o = Math.sqrt(Math.pow(e.x - i.x, 2) + Math.pow(e.y - i.y, 2)), a = s * n / (n + o), - h = s * o / (n + o); - return { - inner: {x: i.x - a * (e.x - t.x), y: i.y - a * (e.y - t.y)}, - outer: {x: i.x + h * (e.x - t.x), y: i.y + h * (e.y - t.y)} - } - }, s.calculateOrderOfMagnitude = function (t) { - return Math.floor(Math.log(t) / Math.LN10) - }), C = (s.calculateScaleRange = function (t, i, e, s, n) { - var o = 2, a = Math.floor(i / (1.5 * e)), h = o >= a, l = g(t), r = m(t); - l === r && (l += .5, r >= .5 && !s ? r -= .5 : l += .5); - for (var c = Math.abs(l - r), u = y(c), d = Math.ceil(l / (1 * Math.pow(10, u))) * Math.pow(10, u), p = s ? 0 : Math.floor(r / (1 * Math.pow(10, u))) * Math.pow(10, u), f = d - p, v = Math.pow(10, u), S = Math.round(f / v); (S > a || a > 2 * S) && !h;) if (S > a) v *= 2, S = Math.round(f / v), S % 1 !== 0 && (h = !0); else if (n && u >= 0) { - if (v / 2 % 1 !== 0) break; - v /= 2, S = Math.round(f / v) - } else v /= 2, S = Math.round(f / v); - return h && (S = o, v = f / S), {steps: S, stepValue: v, min: p, max: p + S * v} - }, s.template = function (t, i) { - function e(t, i) { - var e = /\W/.test(t) ? new Function("obj", "var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('" + t.replace(/[\r\t\n]/g, " ").split("<%").join(" ").replace(/((^|%>)[^\t]*)'/g, "$1\r").replace(/\t=(.*?)%>/g, "',$1,'").split(" ").join("');").split("%>").join("p.push('").split("\r").join("\\'") + "');}return p.join('');") : s[t] = s[t]; - return i ? e(i) : e - } - - if (t instanceof Function) return t(i); - var s = {}; - return e(t, i) - }), w = (s.generateLabels = function (t, i, e, s) { - var o = new Array(i); - return labelTemplateString && n(o, function (i, n) { - o[n] = C(t, {value: e + s * (n + 1)}) - }), o - }, s.easingEffects = { - linear: function (t) { - return t - }, easeInQuad: function (t) { - return t * t - }, easeOutQuad: function (t) { - return -1 * t * (t - 2) - }, easeInOutQuad: function (t) { - return (t /= .5) < 1 ? .5 * t * t : -0.5 * (--t * (t - 2) - 1) - }, easeInCubic: function (t) { - return t * t * t - }, easeOutCubic: function (t) { - return 1 * ((t = t / 1 - 1) * t * t + 1) - }, easeInOutCubic: function (t) { - return (t /= .5) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2) - }, easeInQuart: function (t) { - return t * t * t * t - }, easeOutQuart: function (t) { - return -1 * ((t = t / 1 - 1) * t * t * t - 1) - }, easeInOutQuart: function (t) { - return (t /= .5) < 1 ? .5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2) - }, easeInQuint: function (t) { - return 1 * (t /= 1) * t * t * t * t - }, easeOutQuint: function (t) { - return 1 * ((t = t / 1 - 1) * t * t * t * t + 1) - }, easeInOutQuint: function (t) { - return (t /= .5) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2) - }, easeInSine: function (t) { - return -1 * Math.cos(t / 1 * (Math.PI / 2)) + 1 - }, easeOutSine: function (t) { - return 1 * Math.sin(t / 1 * (Math.PI / 2)) - }, easeInOutSine: function (t) { - return -0.5 * (Math.cos(Math.PI * t / 1) - 1) - }, easeInExpo: function (t) { - return 0 === t ? 1 : 1 * Math.pow(2, 10 * (t / 1 - 1)) - }, easeOutExpo: function (t) { - return 1 === t ? 1 : 1 * (-Math.pow(2, -10 * t / 1) + 1) - }, easeInOutExpo: function (t) { - return 0 === t ? 0 : 1 === t ? 1 : (t /= .5) < 1 ? .5 * Math.pow(2, 10 * (t - 1)) : .5 * (-Math.pow(2, -10 * --t) + 2) - }, easeInCirc: function (t) { - return t >= 1 ? t : -1 * (Math.sqrt(1 - (t /= 1) * t) - 1) - }, easeOutCirc: function (t) { - return 1 * Math.sqrt(1 - (t = t / 1 - 1) * t) - }, easeInOutCirc: function (t) { - return (t /= .5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1) - }, easeInElastic: function (t) { - var i = 1.70158, e = 0, s = 1; - return 0 === t ? 0 : 1 == (t /= 1) ? 1 : (e || (e = .3), s < Math.abs(1) ? (s = 1, i = e / 4) : i = e / (2 * Math.PI) * Math.asin(1 / s), -(s * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * (1 * t - i) * Math.PI / e))) - }, easeOutElastic: function (t) { - var i = 1.70158, e = 0, s = 1; - return 0 === t ? 0 : 1 == (t /= 1) ? 1 : (e || (e = .3), s < Math.abs(1) ? (s = 1, i = e / 4) : i = e / (2 * Math.PI) * Math.asin(1 / s), s * Math.pow(2, -10 * t) * Math.sin(2 * (1 * t - i) * Math.PI / e) + 1) - }, easeInOutElastic: function (t) { - var i = 1.70158, e = 0, s = 1; - return 0 === t ? 0 : 2 == (t /= .5) ? 1 : (e || (e = .3 * 1.5), s < Math.abs(1) ? (s = 1, i = e / 4) : i = e / (2 * Math.PI) * Math.asin(1 / s), 1 > t ? -.5 * s * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * (1 * t - i) * Math.PI / e) : s * Math.pow(2, -10 * (t -= 1)) * Math.sin(2 * (1 * t - i) * Math.PI / e) * .5 + 1) - }, easeInBack: function (t) { - var i = 1.70158; - return 1 * (t /= 1) * t * ((i + 1) * t - i) - }, easeOutBack: function (t) { - var i = 1.70158; - return 1 * ((t = t / 1 - 1) * t * ((i + 1) * t + i) + 1) - }, easeInOutBack: function (t) { - var i = 1.70158; - return (t /= .5) < 1 ? .5 * t * t * (((i *= 1.525) + 1) * t - i) : .5 * ((t -= 2) * t * (((i *= 1.525) + 1) * t + i) + 2) - }, easeInBounce: function (t) { - return 1 - w.easeOutBounce(1 - t) - }, easeOutBounce: function (t) { - return (t /= 1) < 1 / 2.75 ? 7.5625 * t * t : 2 / 2.75 > t ? 1 * (7.5625 * (t -= 1.5 / 2.75) * t + .75) : 2.5 / 2.75 > t ? 1 * (7.5625 * (t -= 2.25 / 2.75) * t + .9375) : 1 * (7.5625 * (t -= 2.625 / 2.75) * t + .984375) - }, easeInOutBounce: function (t) { - return .5 > t ? .5 * w.easeInBounce(2 * t) : .5 * w.easeOutBounce(2 * t - 1) + .5 - } - }), b = s.requestAnimFrame = function () { - return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (t) { - return window.setTimeout(t, 1e3 / 60) - } - }(), P = s.cancelAnimFrame = function () { - return window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame || function (t) { - return window.clearTimeout(t, 1e3 / 60) - } - }(), L = (s.animationLoop = function (t, i, e, s, n, o) { - var a = 0, h = w[e] || w.linear, l = function () { - a++; - var e = a / i, r = h(e); - t.call(o, r, e, a), s.call(o, r, e), i > a ? o.animationFrame = b(l) : n.apply(o) - }; - b(l) - }, s.getRelativePosition = function (t) { - var i, e, s = t.originalEvent || t, n = t.currentTarget || t.srcElement, o = n.getBoundingClientRect(); - return s.touches ? (i = s.touches[0].clientX - o.left, e = s.touches[0].clientY - o.top) : (i = s.clientX - o.left, e = s.clientY - o.top), { - x: i, - y: e - } - }, s.addEvent = function (t, i, e) { - t.addEventListener ? t.addEventListener(i, e) : t.attachEvent ? t.attachEvent("on" + i, e) : t["on" + i] = e - }), k = s.removeEvent = function (t, i, e) { - t.removeEventListener ? t.removeEventListener(i, e, !1) : t.detachEvent ? t.detachEvent("on" + i, e) : t["on" + i] = c - }, F = (s.bindEvents = function (t, i, e) { - t.events || (t.events = {}), n(i, function (i) { - t.events[i] = function () { - e.apply(t, arguments) - }, L(t.chart.canvas, i, t.events[i]) - }) - }, s.unbindEvents = function (t, i) { - n(i, function (i, e) { - k(t.chart.canvas, e, i) - }) - }), R = s.getMaximumWidth = function (t) { - var i = t.parentNode; - return i.clientWidth - }, T = s.getMaximumHeight = function (t) { - var i = t.parentNode; - return i.clientHeight - }, A = (s.getMaximumSize = s.getMaximumWidth, s.retinaScale = function (t) { - var i = t.ctx, e = t.canvas.width, s = t.canvas.height; - window.devicePixelRatio && (i.canvas.style.width = e + "px", i.canvas.style.height = s + "px", i.canvas.height = s * window.devicePixelRatio, i.canvas.width = e * window.devicePixelRatio, i.scale(window.devicePixelRatio, window.devicePixelRatio)) - }), M = s.clear = function (t) { - t.ctx.clearRect(0, 0, t.width, t.height) - }, W = s.fontString = function (t, i, e) { - return i + " " + t + "px " + e - }, z = s.longestText = function (t, i, e) { - t.font = i; - var s = 0; - return n(e, function (i) { - var e = t.measureText(i).width; - s = e > s ? e : s - }), s - }, B = s.drawRoundedRectangle = function (t, i, e, s, n, o) { - t.beginPath(), t.moveTo(i + o, e), t.lineTo(i + s - o, e), t.quadraticCurveTo(i + s, e, i + s, e + o), t.lineTo(i + s, e + n - o), t.quadraticCurveTo(i + s, e + n, i + s - o, e + n), t.lineTo(i + o, e + n), t.quadraticCurveTo(i, e + n, i, e + n - o), t.lineTo(i, e + o), t.quadraticCurveTo(i, e, i + o, e), t.closePath() - }; - e.instances = {}, e.Type = function (t, i, s) { - this.options = i, this.chart = s, this.id = u(), e.instances[this.id] = this, i.responsive && this.resize(), this.initialize.call(this, t) - }, a(e.Type.prototype, { - initialize: function () { - return this - }, clear: function () { - return M(this.chart), this - }, stop: function () { - return P(this.animationFrame), this - }, resize: function (t) { - this.stop(); - var i = this.chart.canvas, e = R(this.chart.canvas), - s = this.options.maintainAspectRatio ? e / this.chart.aspectRatio : T(this.chart.canvas); - return i.width = this.chart.width = e, i.height = this.chart.height = s, A(this.chart), "function" == typeof t && t.apply(this, Array.prototype.slice.call(arguments, 1)), this - }, reflow: c, render: function (t) { - return t && this.reflow(), this.options.animation && !t ? s.animationLoop(this.draw, this.options.animationSteps, this.options.animationEasing, this.options.onAnimationProgress, this.options.onAnimationComplete, this) : (this.draw(), this.options.onAnimationComplete.call(this)), this - }, generateLegend: function () { - return C(this.options.legendTemplate, this) - }, destroy: function () { - this.clear(), F(this, this.events); - var t = this.chart.canvas; - t.width = this.chart.width, t.height = this.chart.height, t.style.removeProperty ? (t.style.removeProperty("width"), t.style.removeProperty("height")) : (t.style.removeAttribute("width"), t.style.removeAttribute("height")), delete e.instances[this.id] - }, showTooltip: function (t, i) { - "undefined" == typeof this.activeElements && (this.activeElements = []); - var o = function (t) { - var i = !1; - return t.length !== this.activeElements.length ? i = !0 : (n(t, function (t, e) { - t !== this.activeElements[e] && (i = !0) - }, this), i) - }.call(this, t); - if (o || i) { - if (this.activeElements = t, this.draw(), this.options.customTooltips && this.options.customTooltips(!1), t.length > 0) if (this.datasets && this.datasets.length > 1) { - for (var a, h, r = this.datasets.length - 1; r >= 0 && (a = this.datasets[r].points || this.datasets[r].bars || this.datasets[r].segments, h = l(a, t[0]), -1 === h); r--) ; - var c = [], u = [], d = function () { - var t, i, e, n, o, a = [], l = [], r = []; - return s.each(this.datasets, function (i) { - t = i.points || i.bars || i.segments, t[h] && t[h].hasValue() && a.push(t[h]) - }), s.each(a, function (t) { - l.push(t.x), r.push(t.y), c.push(s.template(this.options.multiTooltipTemplate, t)), u.push({ - fill: t._saved.fillColor || t.fillColor, - stroke: t._saved.strokeColor || t.strokeColor - }) - }, this), o = m(r), e = g(r), n = m(l), i = g(l), { - x: n > this.chart.width / 2 ? n : i, - y: (o + e) / 2 - } - }.call(this, h); - new e.MultiTooltip({ - x: d.x, - y: d.y, - xPadding: this.options.tooltipXPadding, - yPadding: this.options.tooltipYPadding, - xOffset: this.options.tooltipXOffset, - fillColor: this.options.tooltipFillColor, - textColor: this.options.tooltipFontColor, - fontFamily: this.options.tooltipFontFamily, - fontStyle: this.options.tooltipFontStyle, - fontSize: this.options.tooltipFontSize, - titleTextColor: this.options.tooltipTitleFontColor, - titleFontFamily: this.options.tooltipTitleFontFamily, - titleFontStyle: this.options.tooltipTitleFontStyle, - titleFontSize: this.options.tooltipTitleFontSize, - cornerRadius: this.options.tooltipCornerRadius, - labels: c, - legendColors: u, - legendColorBackground: this.options.multiTooltipKeyBackground, - title: t[0].label, - chart: this.chart, - ctx: this.chart.ctx, - custom: this.options.customTooltips - }).draw() - } else n(t, function (t) { - var i = t.tooltipPosition(); - new e.Tooltip({ - x: Math.round(i.x), - y: Math.round(i.y), - xPadding: this.options.tooltipXPadding, - yPadding: this.options.tooltipYPadding, - fillColor: this.options.tooltipFillColor, - textColor: this.options.tooltipFontColor, - fontFamily: this.options.tooltipFontFamily, - fontStyle: this.options.tooltipFontStyle, - fontSize: this.options.tooltipFontSize, - caretHeight: this.options.tooltipCaretSize, - cornerRadius: this.options.tooltipCornerRadius, - text: C(this.options.tooltipTemplate, t), - chart: this.chart, - custom: this.options.customTooltips - }).draw() - }, this); - return this - } - }, toBase64Image: function () { - return this.chart.canvas.toDataURL.apply(this.chart.canvas, arguments) - } - }), e.Type.extend = function (t) { - var i = this, s = function () { - return i.apply(this, arguments) - }; - if (s.prototype = o(i.prototype), a(s.prototype, t), s.extend = e.Type.extend, t.name || i.prototype.name) { - var n = t.name || i.prototype.name, - l = e.defaults[i.prototype.name] ? o(e.defaults[i.prototype.name]) : {}; - e.defaults[n] = a(l, t.defaults), e.types[n] = s, e.prototype[n] = function (t, i) { - var o = h(e.defaults.global, e.defaults[n], i || {}); - return new s(t, o, this) - } - } else d("Name not provided for this chart, so it hasn't been registered"); - return i - }, e.Element = function (t) { - a(this, t), this.initialize.apply(this, arguments), this.save() - }, a(e.Element.prototype, { - initialize: function () { - }, restore: function (t) { - return t ? n(t, function (t) { - this[t] = this._saved[t] - }, this) : a(this, this._saved), this - }, save: function () { - return this._saved = o(this), delete this._saved._saved, this - }, update: function (t) { - return n(t, function (t, i) { - this._saved[i] = this[i], this[i] = t - }, this), this - }, transition: function (t, i) { - return n(t, function (t, e) { - this[e] = (t - this._saved[e]) * i + this._saved[e] - }, this), this - }, tooltipPosition: function () { - return {x: this.x, y: this.y} - }, hasValue: function () { - return f(this.value) - } - }), e.Element.extend = r, e.Point = e.Element.extend({ - display: !0, inRange: function (t, i) { - var e = this.hitDetectionRadius + this.radius; - return Math.pow(t - this.x, 2) + Math.pow(i - this.y, 2) < Math.pow(e, 2) - }, draw: function () { - if (this.display) { - var t = this.ctx; - t.beginPath(), t.arc(this.x, this.y, this.radius, 0, 2 * Math.PI), t.closePath(), t.strokeStyle = this.strokeColor, t.lineWidth = this.strokeWidth, t.fillStyle = this.fillColor, t.fill(), t.stroke() - } - } - }), e.Arc = e.Element.extend({ - inRange: function (t, i) { - var e = s.getAngleFromPoint(this, {x: t, y: i}), - n = e.angle >= this.startAngle && e.angle <= this.endAngle, - o = e.distance >= this.innerRadius && e.distance <= this.outerRadius; - return n && o - }, tooltipPosition: function () { - var t = this.startAngle + (this.endAngle - this.startAngle) / 2, - i = (this.outerRadius - this.innerRadius) / 2 + this.innerRadius; - return {x: this.x + Math.cos(t) * i, y: this.y + Math.sin(t) * i} - }, draw: function (t) { - var i = this.ctx; - i.beginPath(), i.arc(this.x, this.y, this.outerRadius, this.startAngle, this.endAngle), i.arc(this.x, this.y, this.innerRadius, this.endAngle, this.startAngle, !0), i.closePath(), i.strokeStyle = this.strokeColor, i.lineWidth = this.strokeWidth, i.fillStyle = this.fillColor, i.fill(), i.lineJoin = "bevel", this.showStroke && i.stroke() - } - }), e.Rectangle = e.Element.extend({ - draw: function () { - var t = this.ctx, i = this.width / 2, e = this.x - i, s = this.x + i, - n = this.base - (this.base - this.y), o = this.strokeWidth / 2; - this.showStroke && (e += o, s -= o, n += o), t.beginPath(), t.fillStyle = this.fillColor, t.strokeStyle = this.strokeColor, t.lineWidth = this.strokeWidth, t.moveTo(e, this.base), t.lineTo(e, n), t.lineTo(s, n), t.lineTo(s, this.base), t.fill(), this.showStroke && t.stroke() - }, height: function () { - return this.base - this.y - }, inRange: function (t, i) { - return t >= this.x - this.width / 2 && t <= this.x + this.width / 2 && i >= this.y && i <= this.base - } - }), e.Tooltip = e.Element.extend({ - draw: function () { - var t = this.chart.ctx; - t.font = W(this.fontSize, this.fontStyle, this.fontFamily), this.xAlign = "center", this.yAlign = "above"; - var i = this.caretPadding = 2, e = t.measureText(this.text).width + 2 * this.xPadding, - s = this.fontSize + 2 * this.yPadding, n = s + this.caretHeight + i; - this.x + e / 2 > this.chart.width ? this.xAlign = "left" : this.x - e / 2 < 0 && (this.xAlign = "right"), this.y - n < 0 && (this.yAlign = "below"); - var o = this.x - e / 2, a = this.y - n; - if (t.fillStyle = this.fillColor, this.custom) this.custom(this); else { - switch (this.yAlign) { - case"above": - t.beginPath(), t.moveTo(this.x, this.y - i), t.lineTo(this.x + this.caretHeight, this.y - (i + this.caretHeight)), t.lineTo(this.x - this.caretHeight, this.y - (i + this.caretHeight)), t.closePath(), t.fill(); - break; - case"below": - a = this.y + i + this.caretHeight, t.beginPath(), t.moveTo(this.x, this.y + i), t.lineTo(this.x + this.caretHeight, this.y + i + this.caretHeight), t.lineTo(this.x - this.caretHeight, this.y + i + this.caretHeight), t.closePath(), t.fill() - } - switch (this.xAlign) { - case"left": - o = this.x - e + (this.cornerRadius + this.caretHeight); - break; - case"right": - o = this.x - (this.cornerRadius + this.caretHeight) - } - B(t, o, a, e, s, this.cornerRadius), t.fill(), t.fillStyle = this.textColor, t.textAlign = "center", t.textBaseline = "middle", t.fillText(this.text, o + e / 2, a + s / 2) - } - } - }), e.MultiTooltip = e.Element.extend({ - initialize: function () { - this.font = W(this.fontSize, this.fontStyle, this.fontFamily), this.titleFont = W(this.titleFontSize, this.titleFontStyle, this.titleFontFamily), this.height = this.labels.length * this.fontSize + (this.labels.length - 1) * (this.fontSize / 2) + 2 * this.yPadding + 1.5 * this.titleFontSize, this.ctx.font = this.titleFont; - var t = this.ctx.measureText(this.title).width, - i = z(this.ctx, this.font, this.labels) + this.fontSize + 3, e = g([i, t]); - this.width = e + 2 * this.xPadding; - var s = this.height / 2; - this.y - s < 0 ? this.y = s : this.y + s > this.chart.height && (this.y = this.chart.height - s), this.x > this.chart.width / 2 ? this.x -= this.xOffset + this.width : this.x += this.xOffset - }, getLineHeight: function (t) { - var i = this.y - this.height / 2 + this.yPadding, e = t - 1; - return 0 === t ? i + this.titleFontSize / 2 : i + (1.5 * this.fontSize * e + this.fontSize / 2) + 1.5 * this.titleFontSize - }, draw: function () { - if (this.custom) this.custom(this); else { - B(this.ctx, this.x, this.y - this.height / 2, this.width, this.height, this.cornerRadius); - var t = this.ctx; - t.fillStyle = this.fillColor, t.fill(), t.closePath(), t.textAlign = "left", t.textBaseline = "middle", t.fillStyle = this.titleTextColor, t.font = this.titleFont, t.fillText(this.title, this.x + this.xPadding, this.getLineHeight(0)), t.font = this.font, s.each(this.labels, function (i, e) { - t.fillStyle = this.textColor, t.fillText(i, this.x + this.xPadding + this.fontSize + 3, this.getLineHeight(e + 1)), t.fillStyle = this.legendColorBackground, t.fillRect(this.x + this.xPadding, this.getLineHeight(e + 1) - this.fontSize / 2, this.fontSize, this.fontSize), t.fillStyle = this.legendColors[e].fill, t.fillRect(this.x + this.xPadding, this.getLineHeight(e + 1) - this.fontSize / 2, this.fontSize, this.fontSize) - }, this) - } - } - }), e.Scale = e.Element.extend({ - initialize: function () { - this.fit() - }, buildYLabels: function () { - this.yLabels = []; - for (var t = v(this.stepValue), i = 0; i <= this.steps; i++) this.yLabels.push(C(this.templateString, {value: (this.min + i * this.stepValue).toFixed(t)})); - this.yLabelWidth = this.display && this.showLabels ? z(this.ctx, this.font, this.yLabels) : 0 - }, addXLabel: function (t) { - this.xLabels.push(t), this.valuesCount++, this.fit() - }, removeXLabel: function () { - this.xLabels.shift(), this.valuesCount--, this.fit() - }, fit: function () { - this.startPoint = this.display ? this.fontSize : 0, this.endPoint = this.display ? this.height - 1.5 * this.fontSize - 5 : this.height, this.startPoint += this.padding, this.endPoint -= this.padding; - var t, i = this.endPoint - this.startPoint; - for (this.calculateYRange(i), this.buildYLabels(), this.calculateXLabelRotation(); i > this.endPoint - this.startPoint;) i = this.endPoint - this.startPoint, t = this.yLabelWidth, this.calculateYRange(i), this.buildYLabels(), t < this.yLabelWidth && this.calculateXLabelRotation() - }, calculateXLabelRotation: function () { - this.ctx.font = this.font; - var t, i, e = this.ctx.measureText(this.xLabels[0]).width, - s = this.ctx.measureText(this.xLabels[this.xLabels.length - 1]).width; - if (this.xScalePaddingRight = s / 2 + 3, this.xScalePaddingLeft = e / 2 > this.yLabelWidth + 10 ? e / 2 : this.yLabelWidth + 10, this.xLabelRotation = 0, this.display) { - var n, o = z(this.ctx, this.font, this.xLabels); - this.xLabelWidth = o; - for (var a = Math.floor(this.calculateX(1) - this.calculateX(0)) - 6; this.xLabelWidth > a && 0 === this.xLabelRotation || this.xLabelWidth > a && this.xLabelRotation <= 90 && this.xLabelRotation > 0;) n = Math.cos(S(this.xLabelRotation)), t = n * e, i = n * s, t + this.fontSize / 2 > this.yLabelWidth + 8 && (this.xScalePaddingLeft = t + this.fontSize / 2), this.xScalePaddingRight = this.fontSize / 2, this.xLabelRotation++, this.xLabelWidth = n * o; - this.xLabelRotation > 0 && (this.endPoint -= Math.sin(S(this.xLabelRotation)) * o + 3) - } else this.xLabelWidth = 0, this.xScalePaddingRight = this.padding, this.xScalePaddingLeft = this.padding - }, calculateYRange: c, drawingArea: function () { - return this.startPoint - this.endPoint - }, calculateY: function (t) { - var i = this.drawingArea() / (this.min - this.max); - return this.endPoint - i * (t - this.min) - }, calculateX: function (t) { - var i = (this.xLabelRotation > 0, this.width - (this.xScalePaddingLeft + this.xScalePaddingRight)), - e = i / Math.max(this.valuesCount - (this.offsetGridLines ? 0 : 1), 1), - s = e * t + this.xScalePaddingLeft; - return this.offsetGridLines && (s += e / 2), Math.round(s) - }, update: function (t) { - s.extend(this, t), this.fit() - }, draw: function () { - var t = this.ctx, i = (this.endPoint - this.startPoint) / this.steps, - e = Math.round(this.xScalePaddingLeft); - this.display && (t.fillStyle = this.textColor, t.font = this.font, n(this.yLabels, function (n, o) { - var a = this.endPoint - i * o, h = Math.round(a), l = this.showHorizontalLines; - t.textAlign = "right", t.textBaseline = "middle", this.showLabels && t.fillText(n, e - 10, a), 0 !== o || l || (l = !0), l && t.beginPath(), o > 0 ? (t.lineWidth = this.gridLineWidth, t.strokeStyle = this.gridLineColor) : (t.lineWidth = this.lineWidth, t.strokeStyle = this.lineColor), h += s.aliasPixel(t.lineWidth), l && (t.moveTo(e, h), t.lineTo(this.width, h), t.stroke(), t.closePath()), t.lineWidth = this.lineWidth, t.strokeStyle = this.lineColor, t.beginPath(), t.moveTo(e - 5, h), t.lineTo(e, h), t.stroke(), t.closePath() - }, this), n(this.xLabels, function (i, e) { - var s = this.calculateX(e) + x(this.lineWidth), - n = this.calculateX(e - (this.offsetGridLines ? .5 : 0)) + x(this.lineWidth), - o = this.xLabelRotation > 0, a = this.showVerticalLines; - 0 !== e || a || (a = !0), a && t.beginPath(), e > 0 ? (t.lineWidth = this.gridLineWidth, t.strokeStyle = this.gridLineColor) : (t.lineWidth = this.lineWidth, t.strokeStyle = this.lineColor), a && (t.moveTo(n, this.endPoint), t.lineTo(n, this.startPoint - 3), t.stroke(), t.closePath()), t.lineWidth = this.lineWidth, t.strokeStyle = this.lineColor, t.beginPath(), t.moveTo(n, this.endPoint), t.lineTo(n, this.endPoint + 5), t.stroke(), t.closePath(), t.save(), t.translate(s, o ? this.endPoint + 12 : this.endPoint + 8), t.rotate(-1 * S(this.xLabelRotation)), t.font = this.font, t.textAlign = o ? "right" : "center", t.textBaseline = o ? "middle" : "top", t.fillText(i, 0, 0), t.restore() - }, this)) - } - }), e.RadialScale = e.Element.extend({ - initialize: function () { - this.size = m([this.height, this.width]), this.drawingArea = this.display ? this.size / 2 - (this.fontSize / 2 + this.backdropPaddingY) : this.size / 2 - }, calculateCenterOffset: function (t) { - var i = this.drawingArea / (this.max - this.min); - return (t - this.min) * i - }, update: function () { - this.lineArc ? this.drawingArea = this.display ? this.size / 2 - (this.fontSize / 2 + this.backdropPaddingY) : this.size / 2 : this.setScaleSize(), this.buildYLabels() - }, buildYLabels: function () { - this.yLabels = []; - for (var t = v(this.stepValue), i = 0; i <= this.steps; i++) this.yLabels.push(C(this.templateString, {value: (this.min + i * this.stepValue).toFixed(t)})) - }, getCircumference: function () { - return 2 * Math.PI / this.valuesCount - }, setScaleSize: function () { - var t, i, e, s, n, o, a, h, l, r, c, u, - d = m([this.height / 2 - this.pointLabelFontSize - 5, this.width / 2]), p = this.width, g = 0; - for (this.ctx.font = W(this.pointLabelFontSize, this.pointLabelFontStyle, this.pointLabelFontFamily), i = 0; i < this.valuesCount; i++) t = this.getPointPosition(i, d), e = this.ctx.measureText(C(this.templateString, {value: this.labels[i]})).width + 5, 0 === i || i === this.valuesCount / 2 ? (s = e / 2, t.x + s > p && (p = t.x + s, n = i), t.x - s < g && (g = t.x - s, a = i)) : i < this.valuesCount / 2 ? t.x + e > p && (p = t.x + e, n = i) : i > this.valuesCount / 2 && t.x - e < g && (g = t.x - e, a = i); - l = g, r = Math.ceil(p - this.width), o = this.getIndexAngle(n), h = this.getIndexAngle(a), c = r / Math.sin(o + Math.PI / 2), u = l / Math.sin(h + Math.PI / 2), c = f(c) ? c : 0, u = f(u) ? u : 0, this.drawingArea = d - (u + c) / 2, this.setCenterPoint(u, c) - }, setCenterPoint: function (t, i) { - var e = this.width - i - this.drawingArea, s = t + this.drawingArea; - this.xCenter = (s + e) / 2, this.yCenter = this.height / 2 - }, getIndexAngle: function (t) { - var i = 2 * Math.PI / this.valuesCount; - return t * i - Math.PI / 2 - }, getPointPosition: function (t, i) { - var e = this.getIndexAngle(t); - return {x: Math.cos(e) * i + this.xCenter, y: Math.sin(e) * i + this.yCenter} - }, draw: function () { - if (this.display) { - var t = this.ctx; - if (n(this.yLabels, function (i, e) { - if (e > 0) { - var s, n = e * (this.drawingArea / this.steps), o = this.yCenter - n; - if (this.lineWidth > 0) if (t.strokeStyle = this.lineColor, t.lineWidth = this.lineWidth, this.lineArc) t.beginPath(), t.arc(this.xCenter, this.yCenter, n, 0, 2 * Math.PI), t.closePath(), t.stroke(); else { - t.beginPath(); - for (var a = 0; a < this.valuesCount; a++) s = this.getPointPosition(a, this.calculateCenterOffset(this.min + e * this.stepValue)), 0 === a ? t.moveTo(s.x, s.y) : t.lineTo(s.x, s.y); - t.closePath(), t.stroke() - } - if (this.showLabels) { - if (t.font = W(this.fontSize, this.fontStyle, this.fontFamily), this.showLabelBackdrop) { - var h = t.measureText(i).width; - t.fillStyle = this.backdropColor, t.fillRect(this.xCenter - h / 2 - this.backdropPaddingX, o - this.fontSize / 2 - this.backdropPaddingY, h + 2 * this.backdropPaddingX, this.fontSize + 2 * this.backdropPaddingY) - } - t.textAlign = "center", t.textBaseline = "middle", t.fillStyle = this.fontColor, t.fillText(i, this.xCenter, o) - } - } - }, this), !this.lineArc) { - t.lineWidth = this.angleLineWidth, t.strokeStyle = this.angleLineColor; - for (var i = this.valuesCount - 1; i >= 0; i--) { - if (this.angleLineWidth > 0) { - var e = this.getPointPosition(i, this.calculateCenterOffset(this.max)); - t.beginPath(), t.moveTo(this.xCenter, this.yCenter), t.lineTo(e.x, e.y), t.stroke(), t.closePath() - } - var s = this.getPointPosition(i, this.calculateCenterOffset(this.max) + 5); - t.font = W(this.pointLabelFontSize, this.pointLabelFontStyle, this.pointLabelFontFamily), t.fillStyle = this.pointLabelFontColor; - var o = this.labels.length, a = this.labels.length / 2, h = a / 2, l = h > i || i > o - h, - r = i === h || i === o - h; - t.textAlign = 0 === i ? "center" : i === a ? "center" : a > i ? "left" : "right", t.textBaseline = r ? "middle" : l ? "bottom" : "top", t.fillText(this.labels[i], s.x, s.y) - } - } - } - } - }), s.addEvent(window, "resize", function () { - var t; - return function () { - clearTimeout(t), t = setTimeout(function () { - n(e.instances, function (t) { - t.options.responsive && t.resize(t.render, !0) - }) - }, 50) - } - }()), p ? define(function () { - return e - }) : "object" == typeof module && module.exports && (module.exports = e), t.Chart = e, e.noConflict = function () { - return t.Chart = i, e - } - }).call(this), function () { - "use strict"; - var t = this, i = t.Chart, e = i.helpers, s = { - scaleBeginAtZero: !0, - scaleShowGridLines: !0, - scaleGridLineColor: "rgba(0,0,0,.05)", - scaleGridLineWidth: 1, - scaleShowHorizontalLines: !0, - scaleShowVerticalLines: !0, - barShowStroke: !0, - barStrokeWidth: 2, - barValueSpacing: 5, - barDatasetSpacing: 1, - legendTemplate: '
      <% for (var i=0; i
    • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
    • <%}%>
    ' - }; - i.Type.extend({ - name: "Bar", defaults: s, initialize: function (t) { - var s = this.options; - this.ScaleClass = i.Scale.extend({ - offsetGridLines: !0, calculateBarX: function (t, i, e) { - var n = this.calculateBaseWidth(), o = this.calculateX(e) - n / 2, - a = this.calculateBarWidth(t); - return o + a * i + i * s.barDatasetSpacing + a / 2 - }, calculateBaseWidth: function () { - return this.calculateX(1) - this.calculateX(0) - 2 * s.barValueSpacing - }, calculateBarWidth: function (t) { - var i = this.calculateBaseWidth() - (t - 1) * s.barDatasetSpacing; - return i / t - } - }), this.datasets = [], this.options.showTooltips && e.bindEvents(this, this.options.tooltipEvents, function (t) { - var i = "mouseout" !== t.type ? this.getBarsAtEvent(t) : []; - this.eachBars(function (t) { - t.restore(["fillColor", "strokeColor"]) - }), e.each(i, function (t) { - t.fillColor = t.highlightFill, t.strokeColor = t.highlightStroke - }), this.showTooltip(i) - }), this.BarClass = i.Rectangle.extend({ - strokeWidth: this.options.barStrokeWidth, - showStroke: this.options.barShowStroke, - ctx: this.chart.ctx - }), e.each(t.datasets, function (i) { - var s = {label: i.label || null, fillColor: i.fillColor, strokeColor: i.strokeColor, bars: []}; - this.datasets.push(s), e.each(i.data, function (e, n) { - s.bars.push(new this.BarClass({ - value: e, - label: t.labels[n], - datasetLabel: i.label, - strokeColor: i.strokeColor, - fillColor: i.fillColor, - highlightFill: i.highlightFill || i.fillColor, - highlightStroke: i.highlightStroke || i.strokeColor - })) - }, this) - }, this), this.buildScale(t.labels), this.BarClass.prototype.base = this.scale.endPoint, this.eachBars(function (t, i, s) { - e.extend(t, { - width: this.scale.calculateBarWidth(this.datasets.length), - x: this.scale.calculateBarX(this.datasets.length, s, i), - y: this.scale.endPoint - }), t.save() - }, this), this.render() - }, update: function () { - this.scale.update(), e.each(this.activeElements, function (t) { - t.restore(["fillColor", "strokeColor"]) - }), this.eachBars(function (t) { - t.save() - }), this.render() - }, eachBars: function (t) { - e.each(this.datasets, function (i, s) { - e.each(i.bars, t, this, s) - }, this) - }, getBarsAtEvent: function (t) { - for (var i, s = [], n = e.getRelativePosition(t), o = function (t) { - s.push(t.bars[i]) - }, a = 0; a < this.datasets.length; a++) for (i = 0; i < this.datasets[a].bars.length; i++) if (this.datasets[a].bars[i].inRange(n.x, n.y)) return e.each(this.datasets, o), s; - return s - }, buildScale: function (t) { - var i = this, s = function () { - var t = []; - return i.eachBars(function (i) { - t.push(i.value) - }), t - }, n = { - templateString: this.options.scaleLabel, - height: this.chart.height, - width: this.chart.width, - ctx: this.chart.ctx, - textColor: this.options.scaleFontColor, - fontSize: this.options.scaleFontSize, - fontStyle: this.options.scaleFontStyle, - fontFamily: this.options.scaleFontFamily, - valuesCount: t.length, - beginAtZero: this.options.scaleBeginAtZero, - integersOnly: this.options.scaleIntegersOnly, - calculateYRange: function (t) { - var i = e.calculateScaleRange(s(), t, this.fontSize, this.beginAtZero, this.integersOnly); - e.extend(this, i) - }, - xLabels: t, - font: e.fontString(this.options.scaleFontSize, this.options.scaleFontStyle, this.options.scaleFontFamily), - lineWidth: this.options.scaleLineWidth, - lineColor: this.options.scaleLineColor, - showHorizontalLines: this.options.scaleShowHorizontalLines, - showVerticalLines: this.options.scaleShowVerticalLines, - gridLineWidth: this.options.scaleShowGridLines ? this.options.scaleGridLineWidth : 0, - gridLineColor: this.options.scaleShowGridLines ? this.options.scaleGridLineColor : "rgba(0,0,0,0)", - padding: this.options.showScale ? 0 : this.options.barShowStroke ? this.options.barStrokeWidth : 0, - showLabels: this.options.scaleShowLabels, - display: this.options.showScale - }; - this.options.scaleOverride && e.extend(n, { - calculateYRange: e.noop, - steps: this.options.scaleSteps, - stepValue: this.options.scaleStepWidth, - min: this.options.scaleStartValue, - max: this.options.scaleStartValue + this.options.scaleSteps * this.options.scaleStepWidth - }), this.scale = new this.ScaleClass(n) - }, addData: function (t, i) { - e.each(t, function (t, e) { - this.datasets[e].bars.push(new this.BarClass({ - value: t, - label: i, - x: this.scale.calculateBarX(this.datasets.length, e, this.scale.valuesCount + 1), - y: this.scale.endPoint, - width: this.scale.calculateBarWidth(this.datasets.length), - base: this.scale.endPoint, - strokeColor: this.datasets[e].strokeColor, - fillColor: this.datasets[e].fillColor - })) - }, this), this.scale.addXLabel(i), this.update() - }, removeData: function () { - this.scale.removeXLabel(), e.each(this.datasets, function (t) { - t.bars.shift() - }, this), this.update() - }, reflow: function () { - e.extend(this.BarClass.prototype, {y: this.scale.endPoint, base: this.scale.endPoint}); - var t = e.extend({height: this.chart.height, width: this.chart.width}); - this.scale.update(t) - }, draw: function (t) { - var i = t || 1; - this.clear(); - this.chart.ctx; - this.scale.draw(i), e.each(this.datasets, function (t, s) { - e.each(t.bars, function (t, e) { - t.hasValue() && (t.base = this.scale.endPoint, t.transition({ - x: this.scale.calculateBarX(this.datasets.length, s, e), - y: this.scale.calculateY(t.value), - width: this.scale.calculateBarWidth(this.datasets.length) - }, i).draw()) - }, this) - }, this) - } - }) - }.call(this), function () { - "use strict"; - var t = this, i = t.Chart, e = i.helpers, s = { - segmentShowStroke: !0, - segmentStrokeColor: "#fff", - segmentStrokeWidth: 2, - percentageInnerCutout: 50, - animationSteps: 100, - animationEasing: "easeOutBounce", - animateRotate: !0, - animateScale: !1, - legendTemplate: '
      <% for (var i=0; i
    • <%if(segments[i].label){%><%=segments[i].label%><%}%>
    • <%}%>
    ' - }; - i.Type.extend({ - name: "Doughnut", defaults: s, initialize: function (t) { - this.segments = [], this.outerRadius = (e.min([this.chart.width, this.chart.height]) - this.options.segmentStrokeWidth / 2) / 2, this.SegmentArc = i.Arc.extend({ - ctx: this.chart.ctx, - x: this.chart.width / 2, - y: this.chart.height / 2 - }), this.options.showTooltips && e.bindEvents(this, this.options.tooltipEvents, function (t) { - var i = "mouseout" !== t.type ? this.getSegmentsAtEvent(t) : []; - e.each(this.segments, function (t) { - t.restore(["fillColor"]) - }), e.each(i, function (t) { - t.fillColor = t.highlightColor - }), this.showTooltip(i) - }), this.calculateTotal(t), e.each(t, function (t, i) { - this.addData(t, i, !0) - }, this), this.render() - }, getSegmentsAtEvent: function (t) { - var i = [], s = e.getRelativePosition(t); - return e.each(this.segments, function (t) { - t.inRange(s.x, s.y) && i.push(t) - }, this), i - }, addData: function (t, i, e) { - var s = i || this.segments.length; - this.segments.splice(s, 0, new this.SegmentArc({ - value: t.value, - outerRadius: this.options.animateScale ? 0 : this.outerRadius, - innerRadius: this.options.animateScale ? 0 : this.outerRadius / 100 * this.options.percentageInnerCutout, - fillColor: t.color, - highlightColor: t.highlight || t.color, - showStroke: this.options.segmentShowStroke, - strokeWidth: this.options.segmentStrokeWidth, - strokeColor: this.options.segmentStrokeColor, - startAngle: 1.5 * Math.PI, - circumference: this.options.animateRotate ? 0 : this.calculateCircumference(t.value), - label: t.label - })), e || (this.reflow(), this.update()) - }, calculateCircumference: function (t) { - return 2 * Math.PI * (Math.abs(t) / this.total) - }, calculateTotal: function (t) { - this.total = 0, e.each(t, function (t) { - this.total += Math.abs(t.value) - }, this) - }, update: function () { - this.calculateTotal(this.segments), e.each(this.activeElements, function (t) { - t.restore(["fillColor"]) - }), e.each(this.segments, function (t) { - t.save() - }), this.render() - }, removeData: function (t) { - var i = e.isNumber(t) ? t : this.segments.length - 1; - this.segments.splice(i, 1), this.reflow(), this.update() - }, reflow: function () { - e.extend(this.SegmentArc.prototype, { - x: this.chart.width / 2, - y: this.chart.height / 2 - }), this.outerRadius = (e.min([this.chart.width, this.chart.height]) - this.options.segmentStrokeWidth / 2) / 2, e.each(this.segments, function (t) { - t.update({ - outerRadius: this.outerRadius, - innerRadius: this.outerRadius / 100 * this.options.percentageInnerCutout - }) - }, this) - }, draw: function (t) { - var i = t ? t : 1; - this.clear(), e.each(this.segments, function (t, e) { - t.transition({ - circumference: this.calculateCircumference(t.value), - outerRadius: this.outerRadius, - innerRadius: this.outerRadius / 100 * this.options.percentageInnerCutout - }, i), t.endAngle = t.startAngle + t.circumference, t.draw(), 0 === e && (t.startAngle = 1.5 * Math.PI), e < this.segments.length - 1 && (this.segments[e + 1].startAngle = t.endAngle) - }, this) - } - }), i.types.Doughnut.extend({name: "Pie", defaults: e.merge(s, {percentageInnerCutout: 0})}) - }.call(this), function () { - "use strict"; - var t = this, i = t.Chart, e = i.helpers, s = { - scaleShowGridLines: !0, - scaleGridLineColor: "rgba(0,0,0,.05)", - scaleGridLineWidth: 1, - scaleShowHorizontalLines: !0, - scaleShowVerticalLines: !0, - bezierCurve: !0, - bezierCurveTension: .4, - pointDot: !0, - pointDotRadius: 4, - pointDotStrokeWidth: 1, - pointHitDetectionRadius: 20, - datasetStroke: !0, - datasetStrokeWidth: 2, - datasetFill: !0, - legendTemplate: '
      <% for (var i=0; i
    • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
    • <%}%>
    ' - }; - i.Type.extend({ - name: "Line", defaults: s, initialize: function (t) { - this.PointClass = i.Point.extend({ - strokeWidth: this.options.pointDotStrokeWidth, - radius: this.options.pointDotRadius, - display: this.options.pointDot, - hitDetectionRadius: this.options.pointHitDetectionRadius, - ctx: this.chart.ctx, - inRange: function (t) { - return Math.pow(t - this.x, 2) < Math.pow(this.radius + this.hitDetectionRadius, 2) - } - }), this.datasets = [], this.options.showTooltips && e.bindEvents(this, this.options.tooltipEvents, function (t) { - var i = "mouseout" !== t.type ? this.getPointsAtEvent(t) : []; - this.eachPoints(function (t) { - t.restore(["fillColor", "strokeColor"]) - }), e.each(i, function (t) { - t.fillColor = t.highlightFill, t.strokeColor = t.highlightStroke - }), this.showTooltip(i) - }), e.each(t.datasets, function (i) { - var s = { - label: i.label || null, - fillColor: i.fillColor, - strokeColor: i.strokeColor, - pointColor: i.pointColor, - pointStrokeColor: i.pointStrokeColor, - points: [] - }; - this.datasets.push(s), e.each(i.data, function (e, n) { - s.points.push(new this.PointClass({ - value: e, - label: t.labels[n], - datasetLabel: i.label, - strokeColor: i.pointStrokeColor, - fillColor: i.pointColor, - highlightFill: i.pointHighlightFill || i.pointColor, - highlightStroke: i.pointHighlightStroke || i.pointStrokeColor - })) - }, this), this.buildScale(t.labels), this.eachPoints(function (t, i) { - e.extend(t, {x: this.scale.calculateX(i), y: this.scale.endPoint}), t.save() - }, this) - }, this), this.render() - }, update: function () { - this.scale.update(), e.each(this.activeElements, function (t) { - t.restore(["fillColor", "strokeColor"]) - }), this.eachPoints(function (t) { - t.save() - }), this.render() - }, eachPoints: function (t) { - e.each(this.datasets, function (i) { - e.each(i.points, t, this) - }, this) - }, getPointsAtEvent: function (t) { - var i = [], s = e.getRelativePosition(t); - return e.each(this.datasets, function (t) { - e.each(t.points, function (t) { - t.inRange(s.x, s.y) && i.push(t) - }) - }, this), i - }, buildScale: function (t) { - var s = this, n = function () { - var t = []; - return s.eachPoints(function (i) { - t.push(i.value) - }), t - }, o = { - templateString: this.options.scaleLabel, - height: this.chart.height, - width: this.chart.width, - ctx: this.chart.ctx, - textColor: this.options.scaleFontColor, - fontSize: this.options.scaleFontSize, - fontStyle: this.options.scaleFontStyle, - fontFamily: this.options.scaleFontFamily, - valuesCount: t.length, - beginAtZero: this.options.scaleBeginAtZero, - integersOnly: this.options.scaleIntegersOnly, - calculateYRange: function (t) { - var i = e.calculateScaleRange(n(), t, this.fontSize, this.beginAtZero, this.integersOnly); - e.extend(this, i) - }, - xLabels: t, - font: e.fontString(this.options.scaleFontSize, this.options.scaleFontStyle, this.options.scaleFontFamily), - lineWidth: this.options.scaleLineWidth, - lineColor: this.options.scaleLineColor, - showHorizontalLines: this.options.scaleShowHorizontalLines, - showVerticalLines: this.options.scaleShowVerticalLines, - gridLineWidth: this.options.scaleShowGridLines ? this.options.scaleGridLineWidth : 0, - gridLineColor: this.options.scaleShowGridLines ? this.options.scaleGridLineColor : "rgba(0,0,0,0)", - padding: this.options.showScale ? 0 : this.options.pointDotRadius + this.options.pointDotStrokeWidth, - showLabels: this.options.scaleShowLabels, - display: this.options.showScale - }; - this.options.scaleOverride && e.extend(o, { - calculateYRange: e.noop, - steps: this.options.scaleSteps, - stepValue: this.options.scaleStepWidth, - min: this.options.scaleStartValue, - max: this.options.scaleStartValue + this.options.scaleSteps * this.options.scaleStepWidth - }), this.scale = new i.Scale(o) - }, addData: function (t, i) { - e.each(t, function (t, e) { - this.datasets[e].points.push(new this.PointClass({ - value: t, - label: i, - x: this.scale.calculateX(this.scale.valuesCount + 1), - y: this.scale.endPoint, - strokeColor: this.datasets[e].pointStrokeColor, - fillColor: this.datasets[e].pointColor - })) - }, this), this.scale.addXLabel(i), this.update() - }, removeData: function () { - this.scale.removeXLabel(), e.each(this.datasets, function (t) { - t.points.shift() - }, this), this.update() - }, reflow: function () { - var t = e.extend({height: this.chart.height, width: this.chart.width}); - this.scale.update(t) - }, draw: function (t) { - var i = t || 1; - this.clear(); - var s = this.chart.ctx, n = function (t) { - return null !== t.value - }, o = function (t, i, s) { - return e.findNextWhere(i, n, s) || t - }, a = function (t, i, s) { - return e.findPreviousWhere(i, n, s) || t - }; - this.scale.draw(i), e.each(this.datasets, function (t) { - var h = e.where(t.points, n); - e.each(t.points, function (t, e) { - t.hasValue() && t.transition({ - y: this.scale.calculateY(t.value), - x: this.scale.calculateX(e) - }, i) - }, this), this.options.bezierCurve && e.each(h, function (t, i) { - var s = i > 0 && i < h.length - 1 ? this.options.bezierCurveTension : 0; - t.controlPoints = e.splineCurve(a(t, h, i), t, o(t, h, i), s), t.controlPoints.outer.y > this.scale.endPoint ? t.controlPoints.outer.y = this.scale.endPoint : t.controlPoints.outer.y < this.scale.startPoint && (t.controlPoints.outer.y = this.scale.startPoint), t.controlPoints.inner.y > this.scale.endPoint ? t.controlPoints.inner.y = this.scale.endPoint : t.controlPoints.inner.y < this.scale.startPoint && (t.controlPoints.inner.y = this.scale.startPoint) - }, this), s.lineWidth = this.options.datasetStrokeWidth, s.strokeStyle = t.strokeColor, s.beginPath(), e.each(h, function (t, i) { - if (0 === i) s.moveTo(t.x, t.y); else if (this.options.bezierCurve) { - var e = a(t, h, i); - s.bezierCurveTo(e.controlPoints.outer.x, e.controlPoints.outer.y, t.controlPoints.inner.x, t.controlPoints.inner.y, t.x, t.y) - } else s.lineTo(t.x, t.y) - }, this), s.stroke(), this.options.datasetFill && h.length > 0 && (s.lineTo(h[h.length - 1].x, this.scale.endPoint), s.lineTo(h[0].x, this.scale.endPoint), s.fillStyle = t.fillColor, s.closePath(), s.fill()), e.each(h, function (t) { - t.draw() - }) - }, this) - } - }) - }.call(this), function () { - "use strict"; - var t = this, i = t.Chart, e = i.helpers, s = { - scaleShowLabelBackdrop: !0, - scaleBackdropColor: "rgba(255,255,255,0.75)", - scaleBeginAtZero: !0, - scaleBackdropPaddingY: 2, - scaleBackdropPaddingX: 2, - scaleShowLine: !0, - segmentShowStroke: !0, - segmentStrokeColor: "#fff", - segmentStrokeWidth: 2, - animationSteps: 100, - animationEasing: "easeOutBounce", - animateRotate: !0, - animateScale: !1, - legendTemplate: '
      <% for (var i=0; i
    • <%if(segments[i].label){%><%=segments[i].label%><%}%>
    • <%}%>
    ' - }; - i.Type.extend({ - name: "PolarArea", defaults: s, initialize: function (t) { - this.segments = [], this.SegmentArc = i.Arc.extend({ - showStroke: this.options.segmentShowStroke, - strokeWidth: this.options.segmentStrokeWidth, - strokeColor: this.options.segmentStrokeColor, - ctx: this.chart.ctx, - innerRadius: 0, - x: this.chart.width / 2, - y: this.chart.height / 2 - }), this.scale = new i.RadialScale({ - display: this.options.showScale, - fontStyle: this.options.scaleFontStyle, - fontSize: this.options.scaleFontSize, - fontFamily: this.options.scaleFontFamily, - fontColor: this.options.scaleFontColor, - showLabels: this.options.scaleShowLabels, - showLabelBackdrop: this.options.scaleShowLabelBackdrop, - backdropColor: this.options.scaleBackdropColor, - backdropPaddingY: this.options.scaleBackdropPaddingY, - backdropPaddingX: this.options.scaleBackdropPaddingX, - lineWidth: this.options.scaleShowLine ? this.options.scaleLineWidth : 0, - lineColor: this.options.scaleLineColor, - lineArc: !0, - width: this.chart.width, - height: this.chart.height, - xCenter: this.chart.width / 2, - yCenter: this.chart.height / 2, - ctx: this.chart.ctx, - templateString: this.options.scaleLabel, - valuesCount: t.length - }), this.updateScaleRange(t), this.scale.update(), e.each(t, function (t, i) { - this.addData(t, i, !0) - }, this), this.options.showTooltips && e.bindEvents(this, this.options.tooltipEvents, function (t) { - var i = "mouseout" !== t.type ? this.getSegmentsAtEvent(t) : []; - e.each(this.segments, function (t) { - t.restore(["fillColor"]) - }), e.each(i, function (t) { - t.fillColor = t.highlightColor - }), this.showTooltip(i) - }), this.render() - }, getSegmentsAtEvent: function (t) { - var i = [], s = e.getRelativePosition(t); - return e.each(this.segments, function (t) { - t.inRange(s.x, s.y) && i.push(t) - }, this), i - }, addData: function (t, i, e) { - var s = i || this.segments.length; - this.segments.splice(s, 0, new this.SegmentArc({ - fillColor: t.color, - highlightColor: t.highlight || t.color, - label: t.label, - value: t.value, - outerRadius: this.options.animateScale ? 0 : this.scale.calculateCenterOffset(t.value), - circumference: this.options.animateRotate ? 0 : this.scale.getCircumference(), - startAngle: 1.5 * Math.PI - })), e || (this.reflow(), this.update()) - }, removeData: function (t) { - var i = e.isNumber(t) ? t : this.segments.length - 1; - this.segments.splice(i, 1), this.reflow(), this.update() - }, calculateTotal: function (t) { - this.total = 0, e.each(t, function (t) { - this.total += t.value - }, this), this.scale.valuesCount = this.segments.length - }, updateScaleRange: function (t) { - var i = []; - e.each(t, function (t) { - i.push(t.value) - }); - var s = this.options.scaleOverride ? { - steps: this.options.scaleSteps, - stepValue: this.options.scaleStepWidth, - min: this.options.scaleStartValue, - max: this.options.scaleStartValue + this.options.scaleSteps * this.options.scaleStepWidth - } : e.calculateScaleRange(i, e.min([this.chart.width, this.chart.height]) / 2, this.options.scaleFontSize, this.options.scaleBeginAtZero, this.options.scaleIntegersOnly); - e.extend(this.scale, s, { - size: e.min([this.chart.width, this.chart.height]), - xCenter: this.chart.width / 2, - yCenter: this.chart.height / 2 - }) - }, update: function () { - this.calculateTotal(this.segments), e.each(this.segments, function (t) { - t.save() - }), this.reflow(), this.render() - }, reflow: function () { - e.extend(this.SegmentArc.prototype, { - x: this.chart.width / 2, - y: this.chart.height / 2 - }), this.updateScaleRange(this.segments), this.scale.update(), e.extend(this.scale, { - xCenter: this.chart.width / 2, - yCenter: this.chart.height / 2 - }), e.each(this.segments, function (t) { - t.update({outerRadius: this.scale.calculateCenterOffset(t.value)}) - }, this) - }, draw: function (t) { - var i = t || 1; - this.clear(), e.each(this.segments, function (t, e) { - t.transition({ - circumference: this.scale.getCircumference(), - outerRadius: this.scale.calculateCenterOffset(t.value) - }, i), t.endAngle = t.startAngle + t.circumference, 0 === e && (t.startAngle = 1.5 * Math.PI), e < this.segments.length - 1 && (this.segments[e + 1].startAngle = t.endAngle), t.draw() - }, this), this.scale.draw() - } - }) - }.call(this), function () { - "use strict"; - var t = this, i = t.Chart, e = i.helpers; - i.Type.extend({ - name: "Radar", - defaults: { - scaleShowLine: !0, - angleShowLineOut: !0, - scaleShowLabels: !1, - scaleBeginAtZero: !0, - angleLineColor: "rgba(0,0,0,.1)", - angleLineWidth: 1, - pointLabelFontFamily: "'Arial'", - pointLabelFontStyle: "normal", - pointLabelFontSize: 10, - pointLabelFontColor: "#666", - pointDot: !0, - pointDotRadius: 3, - pointDotStrokeWidth: 1, - pointHitDetectionRadius: 20, - datasetStroke: !0, - datasetStrokeWidth: 2, - datasetFill: !0, - legendTemplate: '
      <% for (var i=0; i
    • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
    • <%}%>
    ' - }, - initialize: function (t) { - this.PointClass = i.Point.extend({ - strokeWidth: this.options.pointDotStrokeWidth, - radius: this.options.pointDotRadius, - display: this.options.pointDot, - hitDetectionRadius: this.options.pointHitDetectionRadius, - ctx: this.chart.ctx - }), this.datasets = [], this.buildScale(t), this.options.showTooltips && e.bindEvents(this, this.options.tooltipEvents, function (t) { - var i = "mouseout" !== t.type ? this.getPointsAtEvent(t) : []; - this.eachPoints(function (t) { - t.restore(["fillColor", "strokeColor"]) - }), e.each(i, function (t) { - t.fillColor = t.highlightFill, t.strokeColor = t.highlightStroke - }), this.showTooltip(i) - }), e.each(t.datasets, function (i) { - var s = { - label: i.label || null, - fillColor: i.fillColor, - strokeColor: i.strokeColor, - pointColor: i.pointColor, - pointStrokeColor: i.pointStrokeColor, - points: [] - }; - this.datasets.push(s), e.each(i.data, function (e, n) { - var o; - this.scale.animation || (o = this.scale.getPointPosition(n, this.scale.calculateCenterOffset(e))), s.points.push(new this.PointClass({ - value: e, - label: t.labels[n], - datasetLabel: i.label, - x: this.options.animation ? this.scale.xCenter : o.x, - y: this.options.animation ? this.scale.yCenter : o.y, - strokeColor: i.pointStrokeColor, - fillColor: i.pointColor, - highlightFill: i.pointHighlightFill || i.pointColor, - highlightStroke: i.pointHighlightStroke || i.pointStrokeColor - })) - }, this) - }, this), this.render() - }, - eachPoints: function (t) { - e.each(this.datasets, function (i) { - e.each(i.points, t, this) - }, this) - }, - getPointsAtEvent: function (t) { - var i = e.getRelativePosition(t), - s = e.getAngleFromPoint({x: this.scale.xCenter, y: this.scale.yCenter}, i), - n = 2 * Math.PI / this.scale.valuesCount, o = Math.round((s.angle - 1.5 * Math.PI) / n), a = []; - return (o >= this.scale.valuesCount || 0 > o) && (o = 0), s.distance <= this.scale.drawingArea && e.each(this.datasets, function (t) { - a.push(t.points[o]) - }), a - }, - buildScale: function (t) { - this.scale = new i.RadialScale({ - display: this.options.showScale, - fontStyle: this.options.scaleFontStyle, - fontSize: this.options.scaleFontSize, - fontFamily: this.options.scaleFontFamily, - fontColor: this.options.scaleFontColor, - showLabels: this.options.scaleShowLabels, - showLabelBackdrop: this.options.scaleShowLabelBackdrop, - backdropColor: this.options.scaleBackdropColor, - backdropPaddingY: this.options.scaleBackdropPaddingY, - backdropPaddingX: this.options.scaleBackdropPaddingX, - lineWidth: this.options.scaleShowLine ? this.options.scaleLineWidth : 0, - lineColor: this.options.scaleLineColor, - angleLineColor: this.options.angleLineColor, - angleLineWidth: this.options.angleShowLineOut ? this.options.angleLineWidth : 0, - pointLabelFontColor: this.options.pointLabelFontColor, - pointLabelFontSize: this.options.pointLabelFontSize, - pointLabelFontFamily: this.options.pointLabelFontFamily, - pointLabelFontStyle: this.options.pointLabelFontStyle, - height: this.chart.height, - width: this.chart.width, - xCenter: this.chart.width / 2, - yCenter: this.chart.height / 2, - ctx: this.chart.ctx, - templateString: this.options.scaleLabel, - labels: t.labels, - valuesCount: t.datasets[0].data.length - }), this.scale.setScaleSize(), this.updateScaleRange(t.datasets), this.scale.buildYLabels() - }, - updateScaleRange: function (t) { - var i = function () { - var i = []; - return e.each(t, function (t) { - t.data ? i = i.concat(t.data) : e.each(t.points, function (t) { - i.push(t.value) - }) - }), i - }(), s = this.options.scaleOverride ? { - steps: this.options.scaleSteps, - stepValue: this.options.scaleStepWidth, - min: this.options.scaleStartValue, - max: this.options.scaleStartValue + this.options.scaleSteps * this.options.scaleStepWidth - } : e.calculateScaleRange(i, e.min([this.chart.width, this.chart.height]) / 2, this.options.scaleFontSize, this.options.scaleBeginAtZero, this.options.scaleIntegersOnly); - e.extend(this.scale, s) - }, - addData: function (t, i) { - this.scale.valuesCount++, e.each(t, function (t, e) { - var s = this.scale.getPointPosition(this.scale.valuesCount, this.scale.calculateCenterOffset(t)); - this.datasets[e].points.push(new this.PointClass({ - value: t, - label: i, - x: s.x, - y: s.y, - strokeColor: this.datasets[e].pointStrokeColor, - fillColor: this.datasets[e].pointColor - })) - }, this), this.scale.labels.push(i), this.reflow(), this.update() - }, - removeData: function () { - this.scale.valuesCount--, this.scale.labels.shift(), e.each(this.datasets, function (t) { - t.points.shift() - }, this), this.reflow(), this.update() - }, - update: function () { - this.eachPoints(function (t) { - t.save() - }), this.reflow(), this.render() - }, - reflow: function () { - e.extend(this.scale, { - width: this.chart.width, - height: this.chart.height, - size: e.min([this.chart.width, this.chart.height]), - xCenter: this.chart.width / 2, - yCenter: this.chart.height / 2 - }), this.updateScaleRange(this.datasets), this.scale.setScaleSize(), this.scale.buildYLabels() - }, - draw: function (t) { - var i = t || 1, s = this.chart.ctx; - this.clear(), this.scale.draw(), e.each(this.datasets, function (t) { - e.each(t.points, function (t, e) { - t.hasValue() && t.transition(this.scale.getPointPosition(e, this.scale.calculateCenterOffset(t.value)), i) - }, this), s.lineWidth = this.options.datasetStrokeWidth, s.strokeStyle = t.strokeColor, s.beginPath(), e.each(t.points, function (t, i) { - 0 === i ? s.moveTo(t.x, t.y) : s.lineTo(t.x, t.y) - }, this), s.closePath(), s.stroke(), s.fillStyle = t.fillColor, s.fill(), e.each(t.points, function (t) { - t.hasValue() && t.draw() - }) - }, this) - } - }) - }.call(this); - -}(jQuery)); - - -(function ($) { - //Deprecated// -}(jQuery)); - - -(function ($) { - /* - * SimpleModal 1.4.4 - jQuery Plugin - * http://simplemodal.com/ - * Copyright (c) 2013 Eric Martin - * Licensed under MIT and GPL - * Date: Sun, Jan 20 2013 15:58:56 -0800 - */ - (function (b) { - "function" === typeof define && define.amd ? define(["jquery"], b) : b(jQuery) - })(function (b) { - var j = [], - n = b(document), - k = navigator.userAgent.toLowerCase(), - l = b(window), - g = [], - o = null, - p = /msie/.test(k) && !/opera/.test(k), - q = /opera/.test(k), - m, r; - m = p && /msie 6./.test(k) && "object" !== typeof window.XMLHttpRequest; - r = p && /msie 7.0/.test(k); - b.modal = function (a, h) { - return b.modal.impl.init(a, h) - }; - b.modal.close = function () { - b.modal.impl.close() - }; - b.modal.focus = function (a) { - b.modal.impl.focus(a) - }; - b.modal.setContainerDimensions = - function () { - b.modal.impl.setContainerDimensions() - }; - b.modal.setPosition = function () { - b.modal.impl.setPosition() - }; - b.modal.update = function (a, h) { - b.modal.impl.update(a, h) - }; - b.fn.modal = function (a) { - return b.modal.impl.init(this, a) - }; - b.modal.defaults = { - appendTo: "body", - focus: !1, - opacity: 80, - overlayId: "simplemodal-overlay", - overlayCss: {}, - containerId: "simplemodal-container", - containerCss: {}, - dataId: "simplemodal-data", - dataCss: {}, - minHeight: null, - minWidth: null, - maxHeight: null, - maxWidth: null, - autoResize: !0, - autoPosition: !0, - zIndex: 99999, - close: !0, - closeHTML: '
    ', - closeClass: "modal-close", - escClose: !0, - overlayClose: !0, - fixed: !0, - position: null, - persist: !1, - modal: !0, - onOpen: function (dialog) { - dialog.overlay.fadeIn(150); - dialog.data.fadeOut(250); - dialog.container.fadeIn(250); - dialog.data.fadeIn(250); - }, - onShow: null, - onClose: function (dialog) { - dialog.overlay.fadeOut(500); - dialog.data.fadeOut(250); - dialog.container.fadeOut(250); - dialog.data.fadeOut('250', function () { - setTimeout(function () { - $.modal.close(); - }, 250); - }); - } - }; - b.modal.impl = { - d: {}, - init: function (a, h) { - if (this.d.data) return !1; - o = p && !b.support.boxModel; - this.o = b.extend({}, b.modal.defaults, h); - this.zIndex = this.o.zIndex; - this.occb = !1; - if ("object" === typeof a) { - if (a = a instanceof b ? a : b(a), this.d.placeholder = !1, 0 < a.parent().parent().size() && (a.before(b("").attr("id", - "simplemodal-placeholder").css({ - display: "none" - })), this.d.placeholder = !0, this.display = a.css("display"), !this.o.persist)) this.d.orig = a.clone(!0) - } else if ("string" === typeof a || "number" === typeof a) a = b("
    ").html(a); - else return alert("SimpleModal Error: Unsupported data type: " + typeof a), this; - this.create(a); - this.open(); - b.isFunction(this.o.onShow) && this.o.onShow.apply(this, [this.d]); - return this - }, - create: function (a) { - this.getDimensions(); - if (this.o.modal && m) this.d.iframe = b('').css(b.extend(this.o.iframeCss, { - display: "none", - opacity: 0, - position: "fixed", - height: g[0], - width: g[1], - zIndex: this.o.zIndex, - top: 0, - left: 0 - })).appendTo(this.o.appendTo); - this.d.overlay = b("
    ").attr("id", this.o.overlayId).addClass("simplemodal-overlay").css(b.extend(this.o.overlayCss, { - display: "none", - opacity: this.o.opacity / 100, - height: this.o.modal ? j[0] : 0, - width: this.o.modal ? j[1] : 0, - position: "fixed", - left: 0, - top: 0, - zIndex: this.o.zIndex + 1 - })).appendTo(this.o.appendTo); - this.d.container = b("
    ").attr("id", this.o.containerId).addClass("simplemodal-container").css(b.extend({ - position: this.o.fixed ? - "fixed" : "absolute" - }, this.o.containerCss, { - display: "none", - zIndex: this.o.zIndex + 2 - })).append(this.o.close && this.o.closeHTML ? b(this.o.closeHTML).addClass(this.o.closeClass) : "").appendTo(this.o.appendTo); - this.d.wrap = b("
    ").attr("tabIndex", -1).addClass("simplemodal-wrap").css({ - height: "100%", - outline: 0, - width: "100%" - }).appendTo(this.d.container); - this.d.data = a.attr("id", a.attr("id") || this.o.dataId).addClass("simplemodal-data").css(b.extend(this.o.dataCss, { - display: "none" - })).appendTo("body"); - this.setContainerDimensions(); - this.d.data.appendTo(this.d.wrap); - (m || o) && this.fixIE() - }, - bindEvents: function () { - var a = this; - b("." + a.o.closeClass).bind("click.simplemodal", function (b) { - b.preventDefault(); - a.close() - }); - a.o.modal && a.o.close && a.o.overlayClose && a.d.overlay.bind("click.simplemodal", function (b) { - b.preventDefault(); - a.close() - }); - n.bind("keydown.simplemodal", function (b) { - a.o.modal && 9 === b.keyCode ? a.watchTab(b) : a.o.close && a.o.escClose && 27 === b.keyCode && (b.preventDefault(), a.close()) - }); - l.bind("resize.simplemodal orientationchange.simplemodal", - function () { - a.getDimensions(); - a.o.autoResize ? a.setContainerDimensions() : a.o.autoPosition && a.setPosition(); - m || o ? a.fixIE() : a.o.modal && (a.d.iframe && a.d.iframe.css({ - height: g[0], - width: g[1] - }), a.d.overlay.css({ - height: j[0], - width: j[1] - })) - }) - }, - unbindEvents: function () { - b("." + this.o.closeClass).unbind("click.simplemodal"); - n.unbind("keydown.simplemodal"); - l.unbind(".simplemodal"); - this.d.overlay.unbind("click.simplemodal") - }, - fixIE: function () { - var a = this.o.position; - b.each([this.d.iframe || null, !this.o.modal ? null : this.d.overlay, - "fixed" === this.d.container.css("position") ? this.d.container : null - ], function (b, e) { - if (e) { - var f = e[0].style; - f.position = "absolute"; - if (2 > b) f.removeExpression("height"), f.removeExpression("width"), f.setExpression("height", 'document.body.scrollHeight > document.body.clientHeight ? document.body.scrollHeight : document.body.clientHeight + "px"'), f.setExpression("width", 'document.body.scrollWidth > document.body.clientWidth ? document.body.scrollWidth : document.body.clientWidth + "px"'); - else { - var c, d; - a && a.constructor === - Array ? (c = a[0] ? "number" === typeof a[0] ? a[0].toString() : a[0].replace(/px/, "") : e.css("top").replace(/px/, ""), c = -1 === c.indexOf("%") ? c + ' + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"' : parseInt(c.replace(/%/, "")) + ' * ((document.documentElement.clientHeight || document.body.clientHeight) / 100) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"', a[1] && (d = "number" === typeof a[1] ? - a[1].toString() : a[1].replace(/px/, ""), d = -1 === d.indexOf("%") ? d + ' + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"' : parseInt(d.replace(/%/, "")) + ' * ((document.documentElement.clientWidth || document.body.clientWidth) / 100) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"')) : (c = '(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"', - d = '(document.documentElement.clientWidth || document.body.clientWidth) / 2 - (this.offsetWidth / 2) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"'); - f.removeExpression("top"); - f.removeExpression("left"); - f.setExpression("top", c); - f.setExpression("left", d) - } - } - }) - }, - focus: function (a) { - var h = this, - a = a && -1 !== b.inArray(a, ["first", "last"]) ? a : "first", - e = b(":input:enabled:visible:" + a, h.d.wrap); - setTimeout(function () { - 0 < e.length ? e.focus() : h.d.wrap.focus() - }, - 10) - }, - getDimensions: function () { - var a = "undefined" === typeof window.innerHeight ? l.height() : window.innerHeight; - j = [n.height(), n.width()]; - g = [a, l.width()] - }, - getVal: function (a, b) { - return a ? "number" === typeof a ? a : "auto" === a ? 0 : 0 < a.indexOf("%") ? parseInt(a.replace(/%/, "")) / 100 * ("h" === b ? g[0] : g[1]) : parseInt(a.replace(/px/, "")) : null - }, - update: function (a, b) { - if (!this.d.data) return !1; - this.d.origHeight = this.getVal(a, "h"); - this.d.origWidth = this.getVal(b, "w"); - this.d.data.hide(); - a && this.d.container.css("height", a); - b && this.d.container.css("width", - b); - this.setContainerDimensions(); - this.d.data.show(); - this.o.focus && this.focus(); - this.unbindEvents(); - this.bindEvents() - }, - setContainerDimensions: function () { - var a = m || r, - b = this.d.origHeight ? this.d.origHeight : q ? this.d.container.height() : this.getVal(a ? this.d.container[0].currentStyle.height : this.d.container.css("height"), "h"), - a = this.d.origWidth ? this.d.origWidth : q ? this.d.container.width() : this.getVal(a ? this.d.container[0].currentStyle.width : this.d.container.css("width"), "w"), - e = this.d.data.outerHeight(!0), - f = - this.d.data.outerWidth(!0); - this.d.origHeight = this.d.origHeight || b; - this.d.origWidth = this.d.origWidth || a; - var c = this.o.maxHeight ? this.getVal(this.o.maxHeight, "h") : null, - d = this.o.maxWidth ? this.getVal(this.o.maxWidth, "w") : null, - c = c && c < g[0] ? c : g[0], - d = d && d < g[1] ? d : g[1], - i = this.o.minHeight ? this.getVal(this.o.minHeight, "h") : "auto", - b = b ? this.o.autoResize && b > c ? c : b < i ? i : b : e ? e > c ? c : this.o.minHeight && "auto" !== i && e < i ? i : e : i, - c = this.o.minWidth ? this.getVal(this.o.minWidth, "w") : "auto", - a = a ? this.o.autoResize && a > d ? d : a < c ? c : a : f ? - f > d ? d : this.o.minWidth && "auto" !== c && f < c ? c : f : c; - this.d.container.css({ - height: b, - width: a - }); - this.d.wrap.css({ - overflow: e > b || f > a ? "auto" : "visible" - }); - this.o.autoPosition && this.setPosition() - }, - setPosition: function () { - var a, b; - a = g[0] / 2 - this.d.container.outerHeight(!0) / 2; - b = g[1] / 2 - this.d.container.outerWidth(!0) / 2; - var e = "fixed" !== this.d.container.css("position") ? l.scrollTop() : 0; - this.o.position && "[object Array]" === Object.prototype.toString.call(this.o.position) ? (a = e + (this.o.position[0] || a), b = this.o.position[1] || b) : - a = e + a; - this.d.container.css({ - left: b, - top: a - }) - }, - watchTab: function (a) { - if (0 < b(a.target).parents(".simplemodal-container").length) { - if (this.inputs = b(":input:enabled:visible:first, :input:enabled:visible:last", this.d.data[0]), !a.shiftKey && a.target === this.inputs[this.inputs.length - 1] || a.shiftKey && a.target === this.inputs[0] || 0 === this.inputs.length) a.preventDefault(), this.focus(a.shiftKey ? "last" : "first") - } else a.preventDefault(), this.focus() - }, - open: function () { - this.d.iframe && this.d.iframe.show(); - b.isFunction(this.o.onOpen) ? - this.o.onOpen.apply(this, [this.d]) : (this.d.overlay.show(), this.d.container.show(), this.d.data.show()); - this.o.focus && this.focus(); - this.bindEvents() - }, - close: function () { - if (!this.d.data) return !1; - this.unbindEvents(); - if (b.isFunction(this.o.onClose) && !this.occb) this.occb = !0, this.o.onClose.apply(this, [this.d]); - else { - if (this.d.placeholder) { - var a = b("#simplemodal-placeholder"); - this.o.persist ? a.replaceWith(this.d.data.removeClass("simplemodal-data").css("display", this.display)) : (this.d.data.hide().remove(), a.replaceWith(this.d.orig)) - } else this.d.data.hide().remove(); - this.d.container.hide().remove(); - this.d.overlay.hide(); - this.d.iframe && this.d.iframe.hide().remove(); - this.d.overlay.remove(); - this.d = {} - } - } - } - }); - -}(jQuery)); - - -(function ($) { - /*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh) - * Licensed under the MIT License. - * - * jquery.mousewheel.min.js - * Version: 3.1.12 - * - * Requires: jQuery 1.2.2+ - */ - !function (a) { - "function" == typeof define && define.amd ? define(["jquery"], a) : "object" == typeof exports ? module.exports = a : a(jQuery) - }(function (a) { - function b(b) { - var g = b || window.event, h = i.call(arguments, 1), j = 0, l = 0, m = 0, n = 0, o = 0, p = 0; - if (b = a.event.fix(g), b.type = "mousewheel", "detail" in g && (m = -1 * g.detail), "wheelDelta" in g && (m = g.wheelDelta), "wheelDeltaY" in g && (m = g.wheelDeltaY), "wheelDeltaX" in g && (l = -1 * g.wheelDeltaX), "axis" in g && g.axis === g.HORIZONTAL_AXIS && (l = -1 * m, m = 0), j = 0 === m ? l : m, "deltaY" in g && (m = -1 * g.deltaY, j = m), "deltaX" in g && (l = g.deltaX, 0 === m && (j = -1 * l)), 0 !== m || 0 !== l) { - if (1 === g.deltaMode) { - var q = a.data(this, "mousewheel-line-height"); - j *= q, m *= q, l *= q - } else if (2 === g.deltaMode) { - var r = a.data(this, "mousewheel-page-height"); - j *= r, m *= r, l *= r - } - if (n = Math.max(Math.abs(m), Math.abs(l)), (!f || f > n) && (f = n, d(g, n) && (f /= 40)), d(g, n) && (j /= 40, l /= 40, m /= 40), j = Math[j >= 1 ? "floor" : "ceil"](j / f), l = Math[l >= 1 ? "floor" : "ceil"](l / f), m = Math[m >= 1 ? "floor" : "ceil"](m / f), k.settings.normalizeOffset && this.getBoundingClientRect) { - var s = this.getBoundingClientRect(); - o = b.clientX - s.left, p = b.clientY - s.top - } - return b.deltaX = l, b.deltaY = m, b.deltaFactor = f, b.offsetX = o, b.offsetY = p, b.deltaMode = 0, h.unshift(b, j, l, m), e && clearTimeout(e), e = setTimeout(c, 200), (a.event.dispatch || a.event.handle).apply(this, h) - } - } - - function c() { - f = null - } - - function d(a, b) { - return k.settings.adjustOldDeltas && "mousewheel" === a.type && b % 120 === 0 - } - - var e, f, g = ["wheel", "mousewheel", "DOMMouseScroll", "MozMousePixelScroll"], - h = "onwheel" in document || document.documentMode >= 9 ? ["wheel"] : ["mousewheel", "DomMouseScroll", "MozMousePixelScroll"], - i = Array.prototype.slice; - if (a.event.fixHooks) for (var j = g.length; j;) a.event.fixHooks[g[--j]] = a.event.mouseHooks; - var k = a.event.special.mousewheel = { - version: "3.1.12", setup: function () { - if (this.addEventListener) for (var c = h.length; c;) this.addEventListener(h[--c], b, !1); else this.onmousewheel = b; - a.data(this, "mousewheel-line-height", k.getLineHeight(this)), a.data(this, "mousewheel-page-height", k.getPageHeight(this)) - }, teardown: function () { - if (this.removeEventListener) for (var c = h.length; c;) this.removeEventListener(h[--c], b, !1); else this.onmousewheel = null; - a.removeData(this, "mousewheel-line-height"), a.removeData(this, "mousewheel-page-height") - }, getLineHeight: function (b) { - var c = a(b), d = c["offsetParent" in a.fn ? "offsetParent" : "parent"](); - return d.length || (d = a("body")), parseInt(d.css("fontSize"), 10) || parseInt(c.css("fontSize"), 10) || 16 - }, getPageHeight: function (b) { - return a(b).height() - }, settings: {adjustOldDeltas: !0, normalizeOffset: !0} - }; - a.fn.extend({ - mousewheel: function (a) { - return a ? this.bind("mousewheel", a) : this.trigger("mousewheel") - }, unmousewheel: function (a) { - return this.unbind("mousewheel", a) - } - }) - }); -}(jQuery)); - - -(function ($) { - /* - Morphext - v2.3.4 - 2015-04-14 - Morphext is licensed under the MIT license (http://ian.mit-license.org/) - */ - !function (a) { - "use strict"; - - function b(b, c) { - this.element = a(b), this.settings = a.extend({}, d, c), this._defaults = d, this._init() - } - - var c = "Morphext", d = {animation: "bounceIn", separator: ",", speed: 2e3, complete: a.noop}; - b.prototype = { - _init: function () { - var b = this; - this.phrases = [], this.element.addClass("morphext"), a.each(this.element.text().split(this.settings.separator), function (a, c) { - b.phrases.push(c.trim()) - }), this.index = -1, this.animate(), this.start() - }, animate: function () { - this.index = ++this.index % this.phrases.length, this.element[0].innerHTML = '' + this.phrases[this.index] + "", a.isFunction(this.settings.complete) && this.settings.complete.call(this) - }, start: function () { - var a = this; - this._interval = setInterval(function () { - a.animate() - }, this.settings.speed) - }, stop: function () { - this._interval = clearInterval(this._interval) - } - }, a.fn[c] = function (d) { - return this.each(function () { - a.data(this, "plugin_" + c) || a.data(this, "plugin_" + c, new b(this, d)) - }) - } - }(jQuery); -}(jQuery)); - - -(function ($) { - /*! - * Justified Gallery - v3.6.0 - * http://miromannino.github.io/Justified-Gallery/ - * Copyright (c) 2015 Miro Mannino - * Licensed under the MIT license. - */ - !function (t) { - var i = function (i, e) { - this.settings = e, this.checkSettings(), this.imgAnalyzerTimeout = null, this.entries = null, this.buildingRow = { - entriesBuff: [], - width: 0, - aspectRatio: 0 - }, this.lastAnalyzedIndex = -1, this["yield"] = { - every: 2, - flushed: 0 - }, this.border = e.border >= 0 ? e.border : e.margins, this.maxRowHeight = this.retrieveMaxRowHeight(), this.suffixRanges = this.retrieveSuffixRanges(), this.offY = this.border, this.spinner = { - phase: 0, - timeSlot: 150, - $el: t('
    '), - intervalId: null - }, this.checkWidthIntervalId = null, this.galleryWidth = i.width(), this.$gallery = i - }; - i.prototype.getSuffix = function (t, i) { - var e, s; - for (e = t > i ? t : i, s = 0; s < this.suffixRanges.length; s++) if (e <= this.suffixRanges[s]) return this.settings.sizeRangeSuffixes[this.suffixRanges[s]]; - return this.settings.sizeRangeSuffixes[this.suffixRanges[s - 1]] - }, i.prototype.removeSuffix = function (t, i) { - return t.substring(0, t.length - i.length) - }, i.prototype.endsWith = function (t, i) { - return -1 !== t.indexOf(i, t.length - i.length) - }, i.prototype.getUsedSuffix = function (t) { - for (var i in this.settings.sizeRangeSuffixes) if (this.settings.sizeRangeSuffixes.hasOwnProperty(i)) { - if (0 === this.settings.sizeRangeSuffixes[i].length) continue; - if (this.endsWith(t, this.settings.sizeRangeSuffixes[i])) return this.settings.sizeRangeSuffixes[i] - } - return "" - }, i.prototype.newSrc = function (t, i, e) { - var s = t.match(this.settings.extension), n = null != s ? s[0] : "", - r = t.replace(this.settings.extension, ""); - return r = this.removeSuffix(r, this.getUsedSuffix(r)), r += this.getSuffix(i, e) + n - }, i.prototype.showImg = function (t, i) { - this.settings.cssAnimation ? (t.addClass("entry-visible"), i && i()) : t.stop().fadeTo(this.settings.imagesAnimationDuration, 1, i) - }, i.prototype.extractImgSrcFromImage = function (t) { - var i = "undefined" != typeof t.data("safe-src") ? t.data("safe-src") : t.attr("src"); - return t.data("jg.originalSrc", i), i - }, i.prototype.imgFromEntry = function (t) { - var i = t.find("> img"); - return 0 === i.length && (i = t.find("> a > img")), 0 === i.length ? null : i - }, i.prototype.captionFromEntry = function (t) { - var i = t.find("> .caption"); - return 0 === i.length ? null : i - }, i.prototype.displayEntry = function (i, e, s, n, r, a) { - i.width(n), i.height(a), i.css("top", s), i.css("left", e); - var o = this.imgFromEntry(i); - if (null !== o) { - o.css("width", n), o.css("height", r), o.css("margin-left", -n / 2), o.css("margin-top", -r / 2); - var h = o.attr("src"), g = this.newSrc(h, n, r); - o.one("error", function () { - o.attr("src", o.data("jg.originalSrc")) - }); - var l = function () { - h !== g && o.attr("src", g) - }; - "skipped" === i.data("jg.loaded") ? this.onImageEvent(h, t.proxy(function () { - this.showImg(i, l), i.data("jg.loaded", !0) - }, this)) : this.showImg(i, l) - } else this.showImg(i); - this.displayEntryCaption(i) - }, i.prototype.displayEntryCaption = function (i) { - var e = this.imgFromEntry(i); - if (null !== e && this.settings.captions) { - var s = this.captionFromEntry(i); - if (null == s) { - var n = e.attr("alt"); - "undefined" == typeof n && (n = i.attr("title")), "undefined" != typeof n && (s = t('
    ' + n + "
    "), i.append(s), i.data("jg.createdCaption", !0)) - } - null !== s && (this.settings.cssAnimation || s.stop().fadeTo(0, this.settings.captionSettings.nonVisibleOpacity), this.addCaptionEventsHandlers(i)) - } else this.removeCaptionEventsHandlers(i) - }, i.prototype.onEntryMouseEnterForCaption = function (i) { - var e = this.captionFromEntry(t(i.currentTarget)); - this.settings.cssAnimation ? e.addClass("caption-visible").removeClass("caption-hidden") : e.stop().fadeTo(this.settings.captionSettings.animationDuration, this.settings.captionSettings.visibleOpacity) - }, i.prototype.onEntryMouseLeaveForCaption = function (i) { - var e = this.captionFromEntry(t(i.currentTarget)); - this.settings.cssAnimation ? e.removeClass("caption-visible").removeClass("caption-hidden") : e.stop().fadeTo(this.settings.captionSettings.animationDuration, this.settings.captionSettings.nonVisibleOpacity) - }, i.prototype.addCaptionEventsHandlers = function (i) { - var e = i.data("jg.captionMouseEvents"); - "undefined" == typeof e && (e = { - mouseenter: t.proxy(this.onEntryMouseEnterForCaption, this), - mouseleave: t.proxy(this.onEntryMouseLeaveForCaption, this) - }, i.on("mouseenter", void 0, void 0, e.mouseenter), i.on("mouseleave", void 0, void 0, e.mouseleave), i.data("jg.captionMouseEvents", e)) - }, i.prototype.removeCaptionEventsHandlers = function (t) { - var i = t.data("jg.captionMouseEvents"); - "undefined" != typeof i && (t.off("mouseenter", void 0, i.mouseenter), t.off("mouseleave", void 0, i.mouseleave), t.removeData("jg.captionMouseEvents")) - }, i.prototype.prepareBuildingRow = function (t) { - var i, e, s, n, r, a = !0, o = 0, - h = this.galleryWidth - 2 * this.border - (this.buildingRow.entriesBuff.length - 1) * this.settings.margins, - g = h / this.buildingRow.aspectRatio, l = this.buildingRow.width / h > this.settings.justifyThreshold; - if (t && "hide" === this.settings.lastRow && !l) { - for (i = 0; i < this.buildingRow.entriesBuff.length; i++) e = this.buildingRow.entriesBuff[i], this.settings.cssAnimation ? e.removeClass("entry-visible") : e.stop().fadeTo(0, 0); - return -1 - } - for (t && !l && "nojustify" === this.settings.lastRow && (a = !1), i = 0; i < this.buildingRow.entriesBuff.length; i++) e = this.buildingRow.entriesBuff[i], s = e.data("jg.width") / e.data("jg.height"), a ? (n = i === this.buildingRow.entriesBuff.length - 1 ? h : g * s, r = g) : (n = this.settings.rowHeight * s, r = this.settings.rowHeight), h -= Math.round(n), e.data("jg.jwidth", Math.round(n)), e.data("jg.jheight", Math.ceil(r)), (0 === i || o > r) && (o = r); - return this.settings.fixedHeight && o > this.settings.rowHeight && (o = this.settings.rowHeight), { - minHeight: o, - justify: a - } - }, i.prototype.clearBuildingRow = function () { - this.buildingRow.entriesBuff = [], this.buildingRow.aspectRatio = 0, this.buildingRow.width = 0 - }, i.prototype.flushRow = function (t) { - var i, e, s, n = this.settings, r = this.border; - if (s = this.prepareBuildingRow(t), e = s.minHeight, t && "hide" === n.lastRow && -1 === e) return void this.clearBuildingRow(); - this.maxRowHeight.percentage ? this.maxRowHeight.value * n.rowHeight < e && (e = this.maxRowHeight.value * n.rowHeight) : this.maxRowHeight.value > 0 && this.maxRowHeight.value < e && (e = this.maxRowHeight.value); - for (var a = 0; a < this.buildingRow.entriesBuff.length; a++) i = this.buildingRow.entriesBuff[a], this.displayEntry(i, r, this.offY, i.data("jg.jwidth"), i.data("jg.jheight"), e), r += i.data("jg.jwidth") + n.margins; - this.$gallery.height(this.offY + e + this.border + (this.isSpinnerActive() ? this.getSpinnerHeight() : 0)), (!t || e <= this.settings.rowHeight && s.justify) && (this.offY += e + this.settings.margins, this.clearBuildingRow(), this.$gallery.trigger("jg.rowflush")) - }, i.prototype.checkWidth = function () { - this.checkWidthIntervalId = setInterval(t.proxy(function () { - var t = parseInt(this.$gallery.width(), 10); - this.galleryWidth !== t && (this.galleryWidth = t, this.rewind(), this.startImgAnalyzer(!0)) - }, this), this.settings.refreshTime) - }, i.prototype.isSpinnerActive = function () { - return null != this.spinner.intervalId - }, i.prototype.getSpinnerHeight = function () { - return this.spinner.$el.innerHeight() - }, i.prototype.stopLoadingSpinnerAnimation = function () { - clearInterval(this.spinner.intervalId), this.spinner.intervalId = null, this.$gallery.height(this.$gallery.height() - this.getSpinnerHeight()), this.spinner.$el.detach() - }, i.prototype.startLoadingSpinnerAnimation = function () { - var t = this.spinner, i = t.$el.find("span"); - clearInterval(t.intervalId), this.$gallery.append(t.$el), this.$gallery.height(this.offY + this.getSpinnerHeight()), t.intervalId = setInterval(function () { - t.phase < i.length ? i.eq(t.phase).fadeTo(t.timeSlot, 1) : i.eq(t.phase - i.length).fadeTo(t.timeSlot, 0), t.phase = (t.phase + 1) % (2 * i.length) - }, t.timeSlot) - }, i.prototype.rewind = function () { - this.lastAnalyzedIndex = -1, this.offY = this.border, this.clearBuildingRow() - }, i.prototype.hideBuildingRowImages = function () { - for (var t = 0; t < this.buildingRow.entriesBuff.length; t++) this.settings.cssAnimation ? this.buildingRow.entriesBuff[t].removeClass("entry-visible") : this.buildingRow.entriesBuff[t].stop().fadeTo(0, 0) - }, i.prototype.updateEntries = function (i) { - return this.entries = this.$gallery.find(this.settings.selector).toArray(), 0 === this.entries.length ? !1 : (this.settings.filter ? this.modifyEntries(this.filterArray, i) : this.modifyEntries(this.resetFilters, i), t.isFunction(this.settings.sort) ? this.modifyEntries(this.sortArray, i) : this.settings.randomize && this.modifyEntries(this.shuffleArray, i), !0) - }, i.prototype.insertToGallery = function (i) { - var e = this; - t.each(i, function () { - t(this).appendTo(e.$gallery) - }) - }, i.prototype.shuffleArray = function (t) { - var i, e, s; - for (i = t.length - 1; i > 0; i--) e = Math.floor(Math.random() * (i + 1)), s = t[i], t[i] = t[e], t[e] = s; - return this.insertToGallery(t), t - }, i.prototype.sortArray = function (t) { - return t.sort(this.settings.sort), this.insertToGallery(t), t - }, i.prototype.resetFilters = function (i) { - for (var e = 0; e < i.length; e++) t(i[e]).removeClass("jg-filtered"); - return i - }, i.prototype.filterArray = function (i) { - var e = this.settings; - return "string" === t.type(e.filter) ? i.filter(function (i) { - var s = t(i); - return s.is(e.filter) ? (s.removeClass("jg-filtered"), !0) : (s.addClass("jg-filtered"), !1) - }) : t.isFunction(e.filter) ? i.filter(e.filter) : void 0 - }, i.prototype.modifyEntries = function (t, i) { - var e = i ? this.entries.splice(this.lastAnalyzedIndex + 1, this.entries.length - this.lastAnalyzedIndex - 1) : this.entries; - e = t.call(this, e), this.entries = i ? this.entries.concat(e) : e - }, i.prototype.destroy = function () { - clearInterval(this.checkWidthIntervalId), t.each(this.entries, t.proxy(function (i, e) { - var s = t(e); - s.css("width", ""), s.css("height", ""), s.css("top", ""), s.css("left", ""), s.data("jg.loaded", void 0), s.removeClass("jg-entry"); - var n = this.imgFromEntry(s); - n.css("width", ""), n.css("height", ""), n.css("margin-left", ""), n.css("margin-top", ""), n.attr("src", n.data("jg.originalSrc")), n.data("jg.originalSrc", void 0), this.removeCaptionEventsHandlers(s); - var r = this.captionFromEntry(s); - s.data("jg.createdCaption") ? (s.data("jg.createdCaption", void 0), null != r && r.remove()) : null != r && r.fadeTo(0, 1) - }, this)), this.$gallery.css("height", ""), this.$gallery.removeClass("justified-gallery"), this.$gallery.data("jg.controller", void 0) - }, i.prototype.analyzeImages = function (i) { - for (var e = this.lastAnalyzedIndex + 1; e < this.entries.length; e++) { - var s = t(this.entries[e]); - if (s.data("jg.loaded") === !0 || "skipped" === s.data("jg.loaded")) { - var n = this.galleryWidth - 2 * this.border - (this.buildingRow.entriesBuff.length - 1) * this.settings.margins, - r = s.data("jg.width") / s.data("jg.height"); - if (n / (this.buildingRow.aspectRatio + r) < this.settings.rowHeight && (this.flushRow(!1), ++this["yield"].flushed >= this["yield"].every)) return void this.startImgAnalyzer(i); - this.buildingRow.entriesBuff.push(s), this.buildingRow.aspectRatio += r, this.buildingRow.width += r * this.settings.rowHeight, this.lastAnalyzedIndex = e - } else if ("error" !== s.data("jg.loaded")) return - } - this.buildingRow.entriesBuff.length > 0 && this.flushRow(!0), this.isSpinnerActive() && this.stopLoadingSpinnerAnimation(), this.stopImgAnalyzerStarter(), this.$gallery.trigger(i ? "jg.resize" : "jg.complete") - }, i.prototype.stopImgAnalyzerStarter = function () { - this["yield"].flushed = 0, null !== this.imgAnalyzerTimeout && clearTimeout(this.imgAnalyzerTimeout) - }, i.prototype.startImgAnalyzer = function (t) { - var i = this; - this.stopImgAnalyzerStarter(), this.imgAnalyzerTimeout = setTimeout(function () { - i.analyzeImages(t) - }, .001) - }, i.prototype.onImageEvent = function (i, e, s) { - if (e || s) { - var n = new Image, r = t(n); - e && r.one("load", function () { - r.off("load error"), e(n) - }), s && r.one("error", function () { - r.off("load error"), s(n) - }), n.src = i - } - }, i.prototype.init = function () { - var i = !1, e = !1, s = this; - t.each(this.entries, function (n, r) { - var a = t(r), o = s.imgFromEntry(a); - if (a.addClass("jg-entry"), a.data("jg.loaded") !== !0 && "skipped" !== a.data("jg.loaded")) if (null !== s.settings.rel && a.attr("rel", s.settings.rel), null !== s.settings.target && a.attr("target", s.settings.target), null !== o) { - var h = s.extractImgSrcFromImage(o); - if (o.attr("src", h), s.settings.waitThumbnailsLoad === !1) { - var g = parseInt(o.attr("width"), 10), l = parseInt(o.attr("height"), 10); - if (!isNaN(g) && !isNaN(l)) return a.data("jg.width", g), a.data("jg.height", l), a.data("jg.loaded", "skipped"), e = !0, s.startImgAnalyzer(!1), !0 - } - a.data("jg.loaded", !1), i = !0, s.isSpinnerActive() || s.startLoadingSpinnerAnimation(), s.onImageEvent(h, function (t) { - a.data("jg.width", t.width), a.data("jg.height", t.height), a.data("jg.loaded", !0), s.startImgAnalyzer(!1) - }, function () { - a.data("jg.loaded", "error"), s.startImgAnalyzer(!1) - }) - } else a.data("jg.loaded", !0), a.data("jg.width", a.width() | a.css("width") | 1), a.data("jg.height", a.height() | a.css("height") | 1) - }), i || e || this.startImgAnalyzer(!1), this.checkWidth() - }, i.prototype.checkOrConvertNumber = function (i, e) { - if ("string" === t.type(i[e]) && (i[e] = parseFloat(i[e])), "number" !== t.type(i[e])) throw e + " must be a number"; - if (isNaN(i[e])) throw "invalid number for " + e - }, i.prototype.checkSizeRangesSuffixes = function () { - if ("object" !== t.type(this.settings.sizeRangeSuffixes)) throw "sizeRangeSuffixes must be defined and must be an object"; - var i = []; - for (var e in this.settings.sizeRangeSuffixes) this.settings.sizeRangeSuffixes.hasOwnProperty(e) && i.push(e); - for (var s = {0: ""}, n = 0; n < i.length; n++) if ("string" === t.type(i[n])) try { - var r = parseInt(i[n].replace(/^[a-z]+/, ""), 10); - s[r] = this.settings.sizeRangeSuffixes[i[n]] - } catch (a) { - throw "sizeRangeSuffixes keys must contains correct numbers (" + a + ")" - } else s[i[n]] = this.settings.sizeRangeSuffixes[i[n]]; - this.settings.sizeRangeSuffixes = s - }, i.prototype.retrieveMaxRowHeight = function () { - var i = {}; - if ("string" === t.type(this.settings.maxRowHeight)) this.settings.maxRowHeight.match(/^[0-9]+%$/) ? (i.value = parseFloat(this.settings.maxRowHeight.match(/^([0-9])+%$/)[1]) / 100, i.percentage = !1) : (i.value = parseFloat(this.settings.maxRowHeight), i.percentage = !0); else { - if ("number" !== t.type(this.settings.maxRowHeight)) throw "maxRowHeight must be a number or a percentage"; - i.value = this.settings.maxRowHeight, i.percentage = !1 - } - if (isNaN(i.value)) throw "invalid number for maxRowHeight"; - return i.percentage ? i.value < 100 && (i.value = 100) : i.value > 0 && i.value < this.settings.rowHeight && (i.value = this.settings.rowHeight), i - }, i.prototype.checkSettings = function () { - if (this.checkSizeRangesSuffixes(), this.checkOrConvertNumber(this.settings, "rowHeight"), this.checkOrConvertNumber(this.settings, "margins"), this.checkOrConvertNumber(this.settings, "border"), "nojustify" !== this.settings.lastRow && "justify" !== this.settings.lastRow && "hide" !== this.settings.lastRow) throw 'lastRow must be "nojustify", "justify" or "hide"'; - if (this.checkOrConvertNumber(this.settings, "justifyThreshold"), this.settings.justifyThreshold < 0 || this.settings.justifyThreshold > 1) throw "justifyThreshold must be in the interval [0,1]"; - if ("boolean" !== t.type(this.settings.cssAnimation)) throw "cssAnimation must be a boolean"; - if ("boolean" !== t.type(this.settings.captions)) throw "captions must be a boolean"; - if (this.checkOrConvertNumber(this.settings.captionSettings, "animationDuration"), this.checkOrConvertNumber(this.settings.captionSettings, "visibleOpacity"), this.settings.captionSettings.visibleOpacity < 0 || this.settings.captionSettings.visibleOpacity > 1) throw "captionSettings.visibleOpacity must be in the interval [0, 1]"; - if (this.checkOrConvertNumber(this.settings.captionSettings, "nonVisibleOpacity"), this.settings.captionSettings.nonVisibleOpacity < 0 || this.settings.captionSettings.nonVisibleOpacity > 1) throw "captionSettings.nonVisibleOpacity must be in the interval [0, 1]"; - if ("boolean" !== t.type(this.settings.fixedHeight)) throw "fixedHeight must be a boolean"; - if (this.checkOrConvertNumber(this.settings, "imagesAnimationDuration"), this.checkOrConvertNumber(this.settings, "refreshTime"), "boolean" !== t.type(this.settings.randomize)) throw "randomize must be a boolean"; - if ("string" !== t.type(this.settings.selector)) throw "selector must be a string"; - if (this.settings.sort !== !1 && !t.isFunction(this.settings.sort)) throw "sort must be false or a comparison function"; - if (this.settings.filter !== !1 && !t.isFunction(this.settings.sort) && "string" !== t.type(this.settings.filter)) throw "filter must be false, a string or a filter function" - }, i.prototype.retrieveSuffixRanges = function () { - var t = []; - for (var i in this.settings.sizeRangeSuffixes) this.settings.sizeRangeSuffixes.hasOwnProperty(i) && t.push(parseInt(i, 10)); - return t.sort(function (t, i) { - return t > i ? 1 : i > t ? -1 : 0 - }), t - }, i.prototype.updateSettings = function (i) { - this.settings = t.extend({}, this.settings, i), this.checkSettings(), this.border = this.settings.border >= 0 ? this.settings.border : this.settings.margins, this.maxRowHeight = this.retrieveMaxRowHeight(), this.suffixRanges = this.retrieveSuffixRanges() - }, t.fn.justifiedGallery = function (e) { - return this.each(function (s, n) { - var r = t(n); - r.addClass("justified-gallery"); - var a = r.data("jg.controller"); - if ("undefined" == typeof a) { - if ("undefined" != typeof e && null !== e && "object" !== t.type(e)) throw "The argument must be an object"; - a = new i(r, t.extend({}, t.fn.justifiedGallery.defaults, e)), r.data("jg.controller", a) - } else if ("norewind" === e) a.hideBuildingRowImages(); else { - if ("destroy" === e) return void a.destroy(); - a.updateSettings(e), a.rewind() - } - a.updateEntries("norewind" === e) && a.init() - }) - }, t.fn.justifiedGallery.defaults = { - sizeRangeSuffixes: {}, - rowHeight: 120, - maxRowHeight: "200%", - margins: 1, - border: -1, - lastRow: "nojustify", - justifyThreshold: .75, - fixedHeight: !1, - waitThumbnailsLoad: !0, - captions: !1, - cssAnimation: !1, - imagesAnimationDuration: 500, - captionSettings: {animationDuration: 500, visibleOpacity: .7, nonVisibleOpacity: 0}, - rel: null, - target: null, - extension: /\.[^.\\/]+$/, - refreshTime: 100, - randomize: !1, - sort: !1, - filter: !1, - selector: "> a, > div:not(.spinner)" - } - }(jQuery); - -}(jQuery)); - -(function () { - /* Add to Homescreen v3.2.2 ~ (c) 2015 Matteo Spinelli ~ @license: http://cubiq.org/license */ - !function (e, t) { - function i() { - e.removeEventListener("load", i, !1), r = !0 - } - - function n(e) { - return l = l || new n.Class(e) - } - - function o(e, t) { - for (var i in t) e[i] = t[i]; - return e - } - - function s() { - "#ath" == t.location.hash && history.replaceState("", e.document.title, t.location.href.split("#")[0]), h.test(t.location.href) && history.replaceState("", e.document.title, t.location.href.replace(h, "$1")), d.test(t.location.search) && history.replaceState("", e.document.title, t.location.href.replace(d, "$2")) - } - - var a = "addEventListener" in e, r = !1; - "complete" === t.readyState ? r = !0 : a && e.addEventListener("load", i, !1); - var l, h = /\/ath(\/)?$/, d = /([\?&]ath=[^&]*$|&ath=[^&]*(&))/; - n.intl = { - de_de: { - ios: "Um diese Web-App zum Home-Bildschirm hinzuzufügen, tippen Sie auf %icon und dann Zum Home-Bildschirm.", - android: 'Um diese Web-App zum Home-Bildschirm hinzuzufügen, öffnen Sie das Menü und tippen dann auf Zum Startbildschirm hinzufügen. Wenn Ihr Gerät eine Menütaste hat, lässt sich das Browsermenü über diese öffnen. Ansonsten tippen Sie auf icon.' - }, - da_dk: { - ios: "For at tilføje denne web app til hjemmeskærmen: Tryk %icon og derefter Føj til hjemmeskærm.", - android: 'For at tilføje denne web app til hjemmeskærmen, åbn browser egenskaber menuen og tryk på Føj til hjemmeskærm. Denne menu kan tilgås ved at trykke på menu knappen, hvis din enhed har en, eller ved at trykke på det øverste højre menu ikon icon.' - }, - en_us: { - ios: "To add this web app to the home screen: tap %icon and then Add to Home Screen.", - android: 'To add this web app to the home screen open the browser option menu and tap on Add to homescreen. The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon

    icon
    ' - }, - es_es: { - ios: "Para añadir esta aplicación web a la pantalla de inicio: pulsa %icon y selecciona Añadir a pantalla de inicio.", - android: 'Para añadir esta aplicación web a la pantalla de inicio, abre las opciones y pulsa Añadir a pantalla inicio. El menú se puede acceder pulsando el botón táctil en caso de tenerlo, o bien el icono de la parte superior derecha de la pantalla icon.' - }, - fi_fi: { - ios: "Liitä tämä sovellus kotivalikkoon: klikkaa %icon ja tämän jälkeen Lisää kotivalikkoon.", - android: 'Lisätäksesi tämän sovelluksen aloitusnäytölle, avaa selaimen valikko ja klikkaa tähti -ikonia tai Lisää aloitusnäytölle tekstiä. Valikkoon pääsee myös painamalla menuvalikkoa, jos laitteessasi on sellainen tai koskettamalla oikealla yläkulmassa menu ikonia icon.' - }, - fr_fr: { - ios: "Pour ajouter cette application web sur l'écran d'accueil : Appuyez %icon et sélectionnez Ajouter sur l'écran d'accueil.", - android: 'Pour ajouter cette application web sur l\'écran d\'accueil : Appuyez sur le bouton "menu", puis sur Ajouter sur l\'écran d\'accueil. Le menu peut-être accessible en appyant sur le bouton "menu" du téléphone s\'il en possède un . Sinon, il se trouve probablement dans la coin supérieur droit du navigateur %icon.' - }, - he_il: { - ios: 'להוספת האפליקציה למסך הבית: ללחוץ על %icon ואז הוסף למסך הבית.', - android: 'To add this web app to the home screen open the browser option menu and tap on Add to homescreen. The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon icon.' - }, - it_it: { - ios: "Per aggiungere questa web app alla schermata iniziale: premi %icon e poi Aggiungi a Home.", - android: 'Per aggiungere questa web app alla schermata iniziale, apri il menu opzioni del browser e premi su Aggiungi alla homescreen. Puoi accedere al menu premendo il pulsante hardware delle opzioni se la tua device ne ha uno, oppure premendo l\'icona icon in alto a destra.' - }, - ja_jp: { - ios: "このウェプアプリをホーム画面に追加するために%iconを押してホーム画面に追加。", - android: 'To add this web app to the home screen open the browser option menu and tap on Add to homescreen. The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon icon.' - }, - ko_kr: { - ios: "홈 화면에 바로가기 생성: %icon 을 클릭한 후 홈 화면에 추가.", - android: '브라우저 옵션 메뉴의 홈 화면에 추가를 클릭하여 홈화면에 바로가기를 생성할 수 있습니다. 옵션 메뉴는 장치의 메뉴 버튼을 누르거나 오른쪽 상단의 메뉴 아이콘 icon을 클릭하여 접근할 수 있습니다.' - }, - nb_no: { - ios: "For å installere denne appen på hjem-skjermen: trykk på %icon og deretter Legg til på Hjem-skjerm.", - android: 'For å legge til denne webappen på startsiden åpner en nettlesermenyen og velger Legg til på startsiden. Menyen åpnes ved å trykke på den fysiske menyknappen hvis enheten har det, eller ved å trykke på menyikonet øverst til høyre icon.' - }, - pt_br: { - ios: "Para adicionar este app à tela de início: clique %icon e então Tela de início.", - android: 'To add this web app to the home screen open the browser option menu and tap on Add to homescreen. The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon icon.' - }, - pt_pt: { - ios: "Para adicionar esta app ao ecrã principal: clique %icon e depois Ecrã principal.", - android: 'To add this web app to the home screen open the browser option menu and tap on Add to homescreen. The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon icon.' - }, - nl_nl: { - ios: "Om deze webapp op je telefoon te installeren, klik op %icon en dan Zet in beginscherm.", - android: 'To add this web app to the home screen open the browser option menu and tap on Add to homescreen. The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon icon.' - }, - ru_ru: { - ios: 'Чтобы добавить этот сайт на свой домашний экран, нажмите на иконку %icon и затем На экран "Домой".', - android: 'Чтобы добавить сайт на свой домашний экран, откройте меню браузера и нажмите на Добавить на главный экран. Меню можно вызвать, нажав на кнопку меню вашего телефона, если она есть. Или найдите иконку сверху справа иконка.' - }, - sv_se: { - ios: "För att lägga till denna webbapplikation på hemskärmen: tryck på %icon och därefter Lägg till på hemskärmen.", - android: 'För att lägga till den här webbappen på hemskärmen öppnar du webbläsarens alternativ-meny och väljer Lägg till på startskärmen. Man hittar menyn genom att trycka på hårdvaruknappen om din enhet har en sådan, eller genom att trycka på menyikonen högst upp till höger icon.' - }, - zh_cn: { - ios: "如要把应用程式加至主屏幕,请点击%icon, 然后加至主屏幕", - android: 'To add this web app to the home screen open the browser option menu and tap on Add to homescreen. The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon icon.' - }, - zh_tw: { - ios: "如要把應用程式加至主屏幕, 請點擊%icon, 然後加至主屏幕.", - android: 'To add this web app to the home screen open the browser option menu and tap on Add to homescreen. The menu can be accessed by pressing the menu hardware button if your device has one, or by tapping the top right menu icon icon.' - } - }; - for (var p in n.intl) n.intl[p.substr(0, 2)] = n.intl[p]; - n.defaults = { - appID: "org.cubiq.11addtohome", - fontSize: 15, - debug: !1, - logging: !1, - modal: !1, - mandatory: !1, - autostart: !0, - skipFirstVisit: !1, - startDelay: 1, - lifespan: 15, - displayPace: 1440, - maxDisplayCount: 0, - icon: !0, - message: "", - validLocation: [], - onInit: null, - onShow: null, - onRemove: null, - onAdd: null, - onPrivate: null, - privateModeOverride: !1, - detectHomescreen: !1 - }; - var c = e.navigator.userAgent, m = e.navigator; - o(n, { - hasToken: "#ath" == t.location.hash || h.test(t.location.href) || d.test(t.location.search), - isRetina: e.devicePixelRatio && e.devicePixelRatio > 1, - isIDevice: /iphone|ipod|ipad/i.test(c), - isMobileChrome: c.indexOf("Android") > -1 && /Chrome\/[.0-9]*/.test(c) && -1 == c.indexOf("Version"), - isMobileIE: c.indexOf("Windows Phone") > -1, - language: m.language && m.language.toLowerCase().replace("-", "_") || "" - }), n.language = n.language && n.language in n.intl ? n.language : "en_us", n.isMobileSafari = n.isIDevice && c.indexOf("Safari") > -1 && c.indexOf("CriOS") < 0, n.OS = n.isIDevice ? "ios" : n.isMobileChrome ? "android" : n.isMobileIE ? "windows" : "unsupported", n.OSVersion = c.match(/(OS|Android) (\d+[_\.]\d+)/), n.OSVersion = n.OSVersion && n.OSVersion[2] ? +n.OSVersion[2].replace("_", ".") : 0, n.isStandalone = "standalone" in e.navigator && e.navigator.standalone, n.isTablet = n.isMobileSafari && c.indexOf("iPad") > -1 || n.isMobileChrome && c.indexOf("Mobile") < 0, n.isCompatible = n.isMobileSafari && n.OSVersion >= 6 || n.isMobileChrome; - var u = {lastDisplayTime: 0, returningVisitor: !1, displayCount: 0, optedout: !1, added: !1}; - n.removeSession = function (e) { - try { - if (!localStorage) throw new Error("localStorage is not defined"); - localStorage.removeItem(e || n.defaults.appID) - } catch (t) { - } - }, n.doLog = function (e) { - this.options.logging && console.log(e) - }, n.Class = function (i) { - if (this.doLog = n.doLog, this.options = o({}, n.defaults), o(this.options, i), i.debug && "undefined" == typeof i.logging && (this.options.logging = !0), a) { - if (this.options.mandatory = this.options.mandatory && ("standalone" in e.navigator || this.options.debug), this.options.modal = this.options.modal || this.options.mandatory, this.options.mandatory && (this.options.startDelay = -.5), this.options.detectHomescreen = this.options.detectHomescreen === !0 ? "hash" : this.options.detectHomescreen, this.options.debug && (n.isCompatible = !0, n.OS = "string" == typeof this.options.debug ? this.options.debug : "unsupported" == n.OS ? "android" : n.OS, n.OSVersion = "ios" == n.OS ? "8" : "4"), this.container = t.documentElement, this.session = this.getItem(this.options.appID), this.session = this.session ? JSON.parse(this.session) : void 0, !n.hasToken || n.isCompatible && this.session || (n.hasToken = !1, s()), !n.isCompatible) return void this.doLog("Add to homescreen: not displaying callout because device not supported"); - this.session = this.session || u; - try { - if (!localStorage) throw new Error("localStorage is not defined"); - localStorage.setItem(this.options.appID, JSON.stringify(this.session)), n.hasLocalStorage = !0 - } catch (r) { - n.hasLocalStorage = !1, this.options.onPrivate && this.options.onPrivate.call(this) - } - for (var l = !this.options.validLocation.length, h = this.options.validLocation.length; h--;) if (this.options.validLocation[h].test(t.location.href)) { - l = !0; - break - } - if (this.getItem("addToHome") && this.optOut(), this.session.optedout) return void this.doLog("Add to homescreen: not displaying callout because user opted out"); - if (this.session.added) return void this.doLog("Add to homescreen: not displaying callout because already added to the homescreen"); - if (!l) return void this.doLog("Add to homescreen: not displaying callout because not a valid location"); - if (n.isStandalone) return this.session.added || (this.session.added = !0, this.updateSession(), this.options.onAdd && n.hasLocalStorage && this.options.onAdd.call(this)), void this.doLog("Add to homescreen: not displaying callout because in standalone mode"); - if (this.options.detectHomescreen) { - if (n.hasToken) return s(), this.session.added || (this.session.added = !0, this.updateSession(), this.options.onAdd && n.hasLocalStorage && this.options.onAdd.call(this)), void this.doLog("Add to homescreen: not displaying callout because URL has token, so we are likely coming from homescreen"); - "hash" == this.options.detectHomescreen ? history.replaceState("", e.document.title, t.location.href + "#ath") : "smartURL" == this.options.detectHomescreen ? history.replaceState("", e.document.title, t.location.href.replace(/(\/)?$/, "/ath$1")) : history.replaceState("", e.document.title, t.location.href + (t.location.search ? "&" : "?") + "ath=") - } - if (!this.session.returningVisitor && (this.session.returningVisitor = !0, this.updateSession(), this.options.skipFirstVisit)) return void this.doLog("Add to homescreen: not displaying callout because skipping first visit"); - if (!this.options.privateModeOverride && !n.hasLocalStorage) return void this.doLog("Add to homescreen: not displaying callout because browser is in private mode"); - this.ready = !0, this.options.onInit && this.options.onInit.call(this), this.options.autostart && (this.doLog("Add to homescreen: autostart displaying callout"), this.show()) - } - }, n.Class.prototype = { - events: { - load: "_delayedShow", - error: "_delayedShow", - orientationchange: "resize", - resize: "resize", - scroll: "resize", - click: "remove", - touchmove: "_preventDefault", - transitionend: "_removeElements", - webkitTransitionEnd: "_removeElements", - MSTransitionEnd: "_removeElements" - }, handleEvent: function (e) { - var t = this.events[e.type]; - t && this[t](e) - }, show: function (i) { - if (this.options.autostart && !r) return void setTimeout(this.show.bind(this), 50); - if (this.shown) return void this.doLog("Add to homescreen: not displaying callout because already shown on screen"); - var o = Date.now(), s = this.session.lastDisplayTime; - if (i !== !0) { - if (!this.ready) return void this.doLog("Add to homescreen: not displaying callout because not ready"); - if (o - s < 6e4 * this.options.displayPace) return void this.doLog("Add to homescreen: not displaying callout because displayed recently"); - if (this.options.maxDisplayCount && this.session.displayCount >= this.options.maxDisplayCount) return void this.doLog("Add to homescreen: not displaying callout because displayed too many times already") - } - this.shown = !0, this.session.lastDisplayTime = o, this.session.displayCount++, this.updateSession(), this.applicationIcon || (this.applicationIcon = t.querySelector("ios" == n.OS ? 'head link[rel^=apple-touch-icon][sizes="152x152"],head link[rel^=apple-touch-icon][sizes="144x144"],head link[rel^=apple-touch-icon][sizes="120x120"],head link[rel^=apple-touch-icon][sizes="114x114"],head link[rel^=apple-touch-icon]' : 'head link[rel^="shortcut icon"][sizes="196x196"],head link[rel^=apple-touch-icon]')); - var a = ""; - "object" == typeof this.options.message && n.language in this.options.message ? a = this.options.message[n.language][n.OS] : "object" == typeof this.options.message && n.OS in this.options.message ? a = this.options.message[n.OS] : this.options.message in n.intl ? a = n.intl[this.options.message][n.OS] : "" !== this.options.message ? a = this.options.message : n.OS in n.intl[n.language] && (a = n.intl[n.language][n.OS]), a = "

    " + a.replace("%icon", 'icon') + "

    ", this.viewport = t.createElement("div"), this.viewport.className = "ath-viewport", this.options.modal && (this.viewport.className += " ath-modal"), this.options.mandatory && (this.viewport.className += " ath-mandatory"), this.viewport.style.position = "absolute", this.element = t.createElement("div"), this.element.className = "ath-container ath-" + n.OS + " ath-" + n.OS + (n.OSVersion + "").substr(0, 1) + " ath-" + (n.isTablet ? "tablet" : "phone"), this.element.style.cssText = "-webkit-transition-property:-webkit-transform,opacity;-webkit-transition-duration:0s;-webkit-transition-timing-function:ease-out;transition-property:transform,opacity;transition-duration:0s;transition-timing-function:ease-out;", this.element.style.webkitTransform = "translate3d(0,-" + e.innerHeight + "px,0)", this.element.style.transform = "translate3d(0,-" + e.innerHeight + "px,0)", this.options.icon && this.applicationIcon && (this.element.className += " ath-icon", this.img = t.createElement("img"), this.img.className = "ath-application-icon", this.img.addEventListener("load", this, !1), this.img.addEventListener("error", this, !1), this.img.src = this.applicationIcon.href, this.element.appendChild(this.img)), this.element.innerHTML += a, this.viewport.style.left = "-99999em", this.viewport.appendChild(this.element), this.container.appendChild(this.viewport), this.img ? this.doLog("Add to homescreen: not displaying callout because waiting for img to load") : this._delayedShow() - }, _delayedShow: function () { - setTimeout(this._show.bind(this), 1e3 * this.options.startDelay + 500) - }, _show: function () { - var i = this; - this.updateViewport(), e.addEventListener("resize", this, !1), e.addEventListener("scroll", this, !1), e.addEventListener("orientationchange", this, !1), this.options.modal && t.addEventListener("touchmove", this, !0), this.options.mandatory || setTimeout(function () { - i.element.addEventListener("click", i, !0) - }, 1e3), setTimeout(function () { - i.element.style.webkitTransitionDuration = "1.2s", i.element.style.transitionDuration = "1.2s", i.element.style.webkitTransform = "translate3d(0,0,0)", i.element.style.transform = "translate3d(0,0,0)" - }, 0), this.options.lifespan && (this.removeTimer = setTimeout(this.remove.bind(this), 1e3 * this.options.lifespan)), this.options.onShow && this.options.onShow.call(this) - }, remove: function () { - clearTimeout(this.removeTimer), this.img && (this.img.removeEventListener("load", this, !1), this.img.removeEventListener("error", this, !1)), e.removeEventListener("resize", this, !1), e.removeEventListener("scroll", this, !1), e.removeEventListener("orientationchange", this, !1), t.removeEventListener("touchmove", this, !0), this.element.removeEventListener("click", this, !0), this.element.addEventListener("transitionend", this, !1), this.element.addEventListener("webkitTransitionEnd", this, !1), this.element.addEventListener("MSTransitionEnd", this, !1), this.element.style.webkitTransitionDuration = "0.3s", this.element.style.opacity = "0" - }, _removeElements: function () { - this.element.removeEventListener("transitionend", this, !1), this.element.removeEventListener("webkitTransitionEnd", this, !1), this.element.removeEventListener("MSTransitionEnd", this, !1), this.container.removeChild(this.viewport), this.shown = !1, this.options.onRemove && this.options.onRemove.call(this) - }, updateViewport: function () { - if (this.shown) { - this.viewport.style.width = e.innerWidth + "px", this.viewport.style.height = e.innerHeight + "px", this.viewport.style.left = e.scrollX + "px", this.viewport.style.top = e.scrollY + "px"; - var i = t.documentElement.clientWidth; - this.orientation = i > t.documentElement.clientHeight ? "landscape" : "portrait"; - var o = "ios" == n.OS ? "portrait" == this.orientation ? screen.width : screen.height : screen.width; - this.scale = screen.width > i ? 1 : o / e.innerWidth, this.element.style.fontSize = this.options.fontSize / this.scale + "px" - } - }, resize: function () { - clearTimeout(this.resizeTimer), this.resizeTimer = setTimeout(this.updateViewport.bind(this), 100) - }, updateSession: function () { - n.hasLocalStorage !== !1 && localStorage && localStorage.setItem(this.options.appID, JSON.stringify(this.session)) - }, clearSession: function () { - this.session = u, this.updateSession() - }, getItem: function (e) { - try { - if (!localStorage) throw new Error("localStorage is not defined"); - return localStorage.getItem(e) - } catch (t) { - n.hasLocalStorage = !1 - } - }, optOut: function () { - this.session.optedout = !0, this.updateSession() - }, optIn: function () { - this.session.optedout = !1, this.updateSession() - }, clearDisplayCount: function () { - this.session.displayCount = 0, this.updateSession() - }, _preventDefault: function (e) { - e.preventDefault(), e.stopPropagation() - } - }, e.addToHomescreen = n - }(window, document); -}(jQuery)); - -/* - *jQuery Contact form developed by CosminCotor & Enabled - *Licensed to be used ONLY by CosminCotor & Enabled on the Envato Marketplaces - *DO NOT use in commercial projects outside Regular or Extended licenses for the marketplaces. -*/ - -(function ($) { - var formSubmitted = "false"; - jQuery(document).ready(function (e) { - function t(t, n) { - formSubmitted = "true"; - var r = e("#" + t).serialize(); - e.post(e("#" + t).attr("action"), r, function (n) { - e("#" + t).hide(); - e("#formSuccessMessageWrap").fadeIn(500) - }) - } - - function n(n, r) { - e(".formValidationError").hide(); - e(".fieldHasError").removeClass("fieldHasError"); - e("#" + n + " .requiredField").each(function (i) { - if (e(this).val() == "" || e(this).val() == e(this).attr("data-dummy")) { - e(this).val(e(this).attr("data-dummy")); - e(this).focus(); - e(this).addClass("fieldHasError"); - e("#" + e(this).attr("id") + "Error").fadeIn(300); - return false - } - if (e(this).hasClass("requiredEmailField")) { - var s = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; - var o = "#" + e(this).attr("id"); - if (!s.test(e(o).val())) { - e(o).focus(); - e(o).addClass("fieldHasError"); - e(o + "Error2").fadeIn(300); - return false - } - } - if (formSubmitted == "false" && i == e("#" + n + " .requiredField").length - 1) { - t(n, r) - } - }) - } - - e("#formSuccessMessageWrap").hide(0); - e(".formValidationError").fadeOut(0); - e('input[type="text"], input[type="password"], textarea').focus(function () { - if (e(this).val() == e(this).attr("data-dummy")) { - e(this).val("") - } - }); - e("input, textarea").blur(function () { - if (e(this).val() == "") { - e(this).val(e(this).attr("data-dummy")) - } - }); - e("#contactSubmitButton").click(function () { - n(e(this).attr("data-formId")); - return false - }) - }) -}(jQuery)); - - - - \ No newline at end of file diff --git a/template/megp/js/functions.js b/template/megp/js/functions.js deleted file mode 100644 index ba8d8198..00000000 --- a/template/megp/js/functions.js +++ /dev/null @@ -1,103 +0,0 @@ -function help_notice_check() { - $.getJSON(home + 'help/section/notice/go', - function (data) { - $.each(data, function (i, val) { - if (i == 'empty') { - hnt = false; - help_notice_title(true); - $('.header-icon-1').css('animation', 'none'); - } - - if (i == 'reply') { - if (val) { - if (val > getCookie('help') || getCookie('help') == undefined) { - setCookie('help', val, {expires: 86400}); - help_notice_sound(); - } - } - - $('.header-icon-1').css('animation', 'fa-spin 2s infinite cubic-bezier(0, 0, 0.15, 0.96)'); - } - - if (i == 'notice') { - help_notice_sound(); - $('.header-icon-1').css('animation', 'fa-spin 2s infinite cubic-bezier(0, 0, 0.15, 0.96)'); - } - }); - }); - - setTimeout(function () { - help_notice_check() - }, 10000); -} - -function help_notice_sound() { - - hnt = true; - help_notice_title(); - - var audio = new Audio(); - audio.preload = 'auto'; - audio.src = '/notice.wav'; - audio.play(); -} - -function help_notice_title(stop) { - if (document.title == title && !stop) - document.title = 'Новое сообщение'; - else - document.title = title; - - if (hnt) - setTimeout(function () { - help_notice_title() - }, 1000); -} - -function setCookie(name, value, options) { - options = options || {}; - - var expires = options.expires; - - if (typeof expires == 'number' && expires) { - var d = new Date(); - d.setTime(d.getTime() + expires * 1000); - expires = options.expires = d; - } - - if (expires && expires.toUTCString) - options.expires = expires.toUTCString(); - - value = encodeURIComponent(value); - - var updatedCookie = name + '=' + value + '; path=/'; - - for (var propName in options) { - updatedCookie += '; ' + propName; - var propValue = options[propName]; - - if (propValue !== true) - updatedCookie += '=' + propValue; - } - - document.cookie = updatedCookie; -} - -function getCookie(name) { - var matches = document.cookie.match(new RegExp( - "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" - )); - - return matches ? decodeURIComponent(matches[1]) : undefined; -} - -function deleteCookie(name) { - setCookie(name, '', {expires: -1}) -} - -$(document).ready(function () { - $('.spoiler').click(function () { - $(this).parent().children('div.spoiler_main').toggle(0); - }); - help_notice_check(); -}); \ No newline at end of file diff --git a/template/megp/js/help.js b/template/megp/js/help.js deleted file mode 100644 index 366804a7..00000000 --- a/template/megp/js/help.js +++ /dev/null @@ -1,217 +0,0 @@ -$('#create').ajaxForm({ - dataType: 'json', - success: function (data) { - $.each(data, function (i, val) { - if (i == 'e') - bootbox.dialog('

    Ошибка

    ' + val, - [{ - "label": "OK", - "class": "btn-small btn-primary", - }] - ); - - if (i == 's') - location.href = home + 'help/section/dialog/id/' + val; - }); - - return false; - } -}); - -$('#reply').ajaxForm({ - dataType: 'json', - success: function (data) { - $.each(data, function (i, val) { - if (i == 'e') - bootbox.dialog('

    Ошибка

    ' + val, - [{ - "label": "OK", - "class": "btn-small btn-primary", - }] - ); - - if (i == 'с') { - bootbox.dialog('

    Внимание

    ' + val, - [{ - "label": "OK", - "class": "btn-small btn-primary", - }] - ); - - location.reload(); - } - - if (i == 'i') { - bootbox.dialog('

    Внимание

    ' + val, - [{ - "label": "OK", - "class": "btn-small btn-primary", - }] - ); - - dialog_update(false); - } - - if (i == 's') { - $('#text').val(''); - $('#text').html(''); - document.getElementById("text").removeAttribute("style"); - - dialog_update(false); - } - }); - - return false; - } -}); - -function help_open(id) { - $.getJSON(home + 'help/section/close/action/open/id/' + id, - function (data) { - $.each(data, function (i, val) { - if (i == 'e') - bootbox.dialog('

    Ошибка

    ' + val, - [{ - "label": "OK", - "class": "btn-small btn-primary", - }] - ); - - if (i == 's') - location.href = home + 'help/section/dialog/id/' + id; - }); - }); -} - -function help_msg_del(id, msg) { - $.getJSON(home + 'help/section/dialog/action/remove/id/' + id + '/msg/' + msg, - function (data) { - $.each(data, function (i, val) { - if (i == 'e') - bootbox.dialog('

    Ошибка

    ' + val, - [{ - "label": "OK", - "class": "btn-small btn-primary", - }] - ); - - if (i == 's') - dialog_update(false); - }); - }); - - return false; -} - -function help_close(id) { - $.getJSON(home + 'help/section/open/action/close/id/' + id, - function (data) { - $.each(data, function (i, val) { - if (i == 'e') - bootbox.dialog('

    Ошибка

    ' + val, - [{ - "label": "OK", - "class": "btn-small btn-primary", - }] - ); - - if (i == 's') - location.reload(); - }); - }); -} - -function help_readers() { - $.get(home + 'help/section/dialog/action/read/id/' + help, - function (readers) { - setTimeout(function () { - help_readers() - }, 9000); - }); -} - -function help_writers(now) { - write = ''; - - if ($('#text').val() != '') - write = '/write/1'; - - $.get(home + 'help/section/dialog/action/write/id/' + help + write, - function (writers) { - if (!now) - setTimeout(function () { - help_writers(false) - }, 9000); - }); -} - -function dialog_update(go) { - if (go) { - spoilers = $('.spoiler_main'); - update = true; - for (var i = 0; i < spoilers.length; i++) { - if (spoilers[i].style.display == 'block') { - setTimeout(function () { - dialog_update(true) - }, 15000); - - return false; - } - } - } - - $.getJSON(home + 'help/section/dialog/id/' + help + '/ajax', - function (data) { - $.each(data, function (i, val) { - if (i == 'dialog') { - $('#dialog').html(val); - - $('.spoiler').click(function () { - $(this).parent().children('div.spoiler_main').toggle(0); - }); - } - - if (i == 'status') - $('#help_status').html(val); - }); - - if (go) - setTimeout(function () { - dialog_update(true) - }, 15000); - }); -} - -// Переустановка сервера (подтверждение) -function help_delete(id) { - bootbox.dialog('

    Внимание

    Вы уверены, что хотите удалить этот вопрос?', - [{ - "label": "Подтвердить", - "class": "btn-small btn-primary", - callback: function () { - help_delete_go(id) - } - }, { - "label": "Отмена", - "class": "btn-small btn-primary", - }] - ); -} - -function help_delete_go(id) { - $.getJSON(home + 'help/section/open/action/delete/id/' + id, - function (data) { - $.each(data, function (i, val) { - if (i == 'e') - bootbox.dialog('

    Ошибка

    ' + val, - [{ - "label": "OK", - "class": "btn-small btn-primary", - }] - ); - - if (i == 's') - location.reload(); - }); - }); -} \ No newline at end of file diff --git a/template/megp/js/jquery.js b/template/megp/js/jquery.js deleted file mode 100644 index 0f60b7bd..00000000 --- a/template/megp/js/jquery.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; - -return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
    a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:k.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("