';$Ae=array("select"=>lang(40));if(support("table")||support("indexes"))$Ae["table"]=lang(41);$ge=false;if(support("table")){$ge=is_view($Yh);if($ge)$Ae["view"]=lang(42);else$Ae["create"]=lang(43);}if($O!==null)$Ae["edit"]=lang(44);$D=$Yh["Name"];foreach($Ae
as$_=>$X)echo" $X";echo
doc_link(array(JUSH=>$n->tableHelp($D,$ge)),"?"),"\n";}function
foreignKeys($R){return
foreign_keys($R);}function
backwardKeys($R,$Xh){return
array();}function
backwardKeysPrint($Ea,$K){}function
selectQuery($H,$Oh,$Nc=false){global$n;$J="
\n";if(!$Nc&&($oj=$n->warnings())){$w="warnings";$J=", ".($n->functions||$n->grouping?html_select("columns[$v][fun]",array(-1=>"")+array_filter(array(lang(53)=>$n->functions,lang(54)=>$n->grouping)),$X["fun"]).on_help("event.target.value && event.target.value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($_!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($e)":$e)."
\n";$v++;}echo"\n";}function
selectSearchPrint($Z,$f,$z){print_fieldset("search",lang(55),$Z);foreach($z
as$v=>$y){if($y["type"]=="FULLTEXT")echo"".select_input(" name='where[$v][col]'",$f,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(56).")"),html_select("where[$v][op]",$this->operators,$X["op"],$Ta),"",script("mixin(qsl('input'), {oninput: function () { $Ta }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"
\n";}echo"\n";}function
selectOrderPrint($Gf,$f,$z){print_fieldset("sort",lang(57),$Gf);$v=0;foreach((array)$_GET["order"]as$_=>$X){if($X!=""){echo"".select_input(" name='order[$v]'",$f,$X,"selectFieldChange"),checkbox("desc[$v]",1,isset($_GET["desc"][$_]),lang(58))."
\n";$v++;}}echo"".select_input(" name='order[$v]'",$f,"","selectAddRow"),checkbox("desc[$v]",1,false,lang(58))."
\n","\n";}function
selectLimitPrint($A){echo"($D) ".h($V.($N!=""?"@".$this->serverName($N):"").($l!=""?" - $l":""))."\n";}}}}if($Tf)echo"\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$Ye&&DB!=""){$h->select_db(DB);$T=table_status('',true);}$this->syntaxHighlighting($T);$this->databasesPrint($Ye);$ma=array();if(DB==""||!$Ye){if(support("sql")){$ma[]="".lang(63)."";$ma[]="".lang(71)."";}$ma[]="".lang(72)."";}$Od=$_GET["ns"]!==""&&!$Ye&&DB!="";if($Od)$ma[]='".lang(73)."";echo($ma?"\n".implode("\n",$ma)."\n":"");if($Od){if($T)$this->tablesPrint($T);else
echo"
".lang(9)."
\n";}}}function
syntaxHighlighting($T){global$h;echo
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.1.0");if(support("sql")){echo"\n";}echo
script("syntaxHighlighting('".(is_object($h)?preg_replace('~^(\d\.?\d).*~s','\1',$h->server_info):"")."'".($h->flavor=='maria'?", 'maria'":($h->flavor=='cockroach'?", 'cockroach'":"")).");");}function
databasesPrint($Ye){global$b,$h;$k=$this->databases();if(DB&&$k&&!in_array(DB,$k))array_unshift($k,DB);echo"\n";}function
tablesPrint($T){echo"".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
as$R=>$P){$D=$this->tableName($P);if($D!="")echo'- ".lang(76)." ",(support("table")||support("indexes")?'$D":"$D")."\n";}echo"
\n";}}class
Plugins
extends
Adminer{var$plugins;function
__construct($mg){if($mg===null){$mg=array();$Ia="adminer-plugins";if(is_dir($Ia)){foreach(glob("$Ia/*.php")as$r)$Pd=include_once"./$r";}$Dd=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ia.php")){$Pd=include_once"./$Ia.php";if(is_array($Pd)){foreach($Pd
as$lg)$mg[get_class($lg)]=$lg;}else$this->error.=lang(77,"$Ia.php",$Dd)."
";}foreach(get_declared_classes()as$cb){if(!$mg[$cb]&&preg_match('~^Adminer\w~i',$cb)){$Og=new
\ReflectionClass($cb);$vb=$Og->getConstructor();if($vb&&$vb->getNumberOfRequiredParameters())$this->error.=lang(78,$Dd,"$cb","$Ia.php")."
";else$mg[$cb]=new$cb;}}}$this->plugins=$mg;}private
function
callParent($u,$d){return
call_user_func_array(array('parent',$u),$d);}private
function
applyPlugin($u,$Yf){$d=array();foreach($Yf
as$_=>$X)$d[]=&$Yf[$_];foreach($this->plugins
as$lg){if(method_exists($lg,$u)){$J=call_user_func_array(array($lg,$u),$d);if($J!==null)return$J;}}return$this->callParent($u,$d);}private
function
appendPlugin($u,$d){$J=$this->callParent($u,$d);foreach($this->plugins
as$lg){if(method_exists($lg,$u)){$Y=call_user_func_array(array($lg,$u),$d);if($Y)$J+=$Y;}}return$J;}function
dumpFormat(){$d=func_get_args();return$this->appendPlugin(__FUNCTION__,$d);}function
dumpOutput(){$d=func_get_args();return$this->appendPlugin(__FUNCTION__,$d);}function
editRowPrint($R,$q,$K,$Vi){$d=func_get_args();return$this->appendPlugin(__FUNCTION__,$d);}function
editFunctions($p){$d=func_get_args();return$this->appendPlugin(__FUNCTION__,$d);}function
name(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
credentials(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
connectSsl(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
permanentLogin($j=false){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
bruteForceKey(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
serverName($N){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
database(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
schemas(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
databases($bd=true){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
queryTimeout(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
headers(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
csp(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
head($Hb=null){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
css(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
loginForm(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
loginFormField($D,$Cd,$Y){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
login($Ce,$G){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
tableName($Yh){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
fieldName($p,$Gf=0){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectLinks($Yh,$O=""){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
foreignKeys($R){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
backwardKeys($R,$Xh){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
backwardKeysPrint($Ea,$K){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectQuery($H,$Oh,$Nc=false){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
sqlCommandQuery($H){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
sqlPrintAfter(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
rowDescription($R){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
rowDescriptions($L,$ed){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectLink($X,$p){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectVal($X,$B,$p,$Qf){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
editVal($X,$p){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
tableStructurePrint($q,$Yh=null){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
tableIndexesPrint($z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectColumnsPrint($M,$f){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectSearchPrint($Z,$f,$z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectOrderPrint($Gf,$f,$z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectLimitPrint($A){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectLengthPrint($oi){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectActionPrint($z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectCommandPrint(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectImportPrint(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectEmailPrint($pc,$f){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectColumnsProcess($f,$z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectSearchProcess($q,$z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectOrderProcess($q,$z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectLimitProcess(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectLengthProcess(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectEmailProcess($Z,$ed){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
selectQueryBuild($M,$Z,$qd,$Gf,$A,$F){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
messageQuery($H,$pi,$Nc=false){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
editInput($R,$p,$za,$Y){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
editHint($R,$p,$Y){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
processInput($p,$Y,$u=""){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
dumpDatabase($l){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
dumpTable($R,$Sh,$ge=0){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
dumpData($R,$Sh,$H){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
dumpFilename($Id){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
dumpHeaders($Id,$af=false){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
dumpFooter(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
importServerPath(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
homepage(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
navigation($Ye){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
syntaxHighlighting($T){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
databasesPrint($Ye){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function
tablesPrint($T){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}}if(function_exists('adminer_object'))$b=adminer_object();elseif(is_dir("adminer-plugins")||file_exists("adminer-plugins.php"))$b=new
Plugins(null);else$b=new
Adminer;$bc=array("server"=>"MySQL / MariaDB")+$bc;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class
Db
extends
\MySQLi{var$extension="MySQLi",$flavor='';function
__construct(){parent::init();}function
connect($N="",$V="",$G="",$Kb=null,$ng=null,$Ch=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($Gd,$ng)=explode(":",$N,2);$Nh=$b->connectSsl();if($Nh)$this->ssl_set($Nh['key'],$Nh['cert'],$Nh['ca'],'','');$J=@$this->real_connect(($N!=""?$Gd:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$G!=""?$G:ini_get("mysqli.default_pw")),$Kb,(is_numeric($ng)?$ng:ini_get("mysqli.default_port")),(!is_numeric($ng)?$ng:$Ch),($Nh?($Nh['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$J;}function
set_charset($Ua){if(parent::set_charset($Ua))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $Ua");}function
result($H,$p=0){$I=$this->query($H);if(!$I)return
false;$K=$I->fetch_array();return($K?$K[$p]:false);}function
quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
Db{var$extension="MySQL",$flavor='',$server_info,$affected_rows,$info,$errno,$error;private$link,$result;function
connect($N,$V,$G){if(ini_bool("mysql.allow_local_infile")){$this->error=lang(79,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");return
false;}$this->link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),("$N$V"!=""?$V:ini_get("mysql.default_user")),("$N$V$G"!=""?$G:ini_get("mysql.default_password")),true,131072);if($this->link)$this->server_info=mysql_get_server_info($this->link);else$this->error=mysql_error();return(bool)$this->link;}function
set_charset($Ua){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Ua,$this->link))return
true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Ua");}function
quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function
select_db($Kb){return
mysql_select_db($Kb,$this->link);}function
query($H,$Ni=false){$I=@($Ni?mysql_unbuffered_query($H,$this->link):mysql_query($H,$this->link));$this->error="";if(!$I){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return
false;}if($I===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return
true;}return
new
Result($I);}function
multi_query($H){return$this->result=$this->query($H);}function
store_result(){return$this->result;}function
next_result(){return
false;}function
result($H,$p=0){$I=$this->query($H);return($I?$I->fetch_column($p):false);}}class
Result{var$num_rows;private$result,$offset=0;function
__construct($I){$this->result=$I;$this->num_rows=mysql_num_rows($I);}function
fetch_assoc(){return
mysql_fetch_assoc($this->result);}function
fetch_row(){return
mysql_fetch_row($this->result);}function
fetch_column($p){return($this->num_rows?mysql_result($this->result,0,$p):false);}function
fetch_field(){$J=mysql_fetch_field($this->result,$this->offset++);$J->orgtable=$J->table;$J->charsetnr=($J->blob?63:0);return$J;}function
__destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class
Db
extends
PdoDb{var$extension="PDO_MySQL";function
connect($N,$V,$G){global$b;$Ef=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$Nh=$b->connectSsl();if($Nh){if($Nh['key'])$Ef[\PDO::MYSQL_ATTR_SSL_KEY]=$Nh['key'];if($Nh['cert'])$Ef[\PDO::MYSQL_ATTR_SSL_CERT]=$Nh['cert'];if($Nh['ca'])$Ef[\PDO::MYSQL_ATTR_SSL_CA]=$Nh['ca'];if(isset($Nh['verify']))$Ef[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$Nh['verify'];}$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$G,$Ef);return
true;}function
set_charset($Ua){$this->query("SET NAMES $Ua");}function
select_db($Kb){return$this->query("USE ".idf_escape($Kb));}function
query($H,$Ni=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Ni);return
parent::query($H,$Ni);}}}class
Driver
extends
SqlDriver{static$rg=array("MySQLi","MySQL","PDO_MySQL");static$ie="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");function
__construct($h){parent::__construct($h);$this->types=array(lang(25)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(26)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(27)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(80)=>array("enum"=>65535,"set"=>64),lang(28)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(30)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->editFunctions=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));if(min_version('5.7.8',10.2,$h))$this->types[lang(27)]["json"]=4294967295;if(min_version('',10.7,$h)){$this->types[lang(27)]["uuid"]=128;$this->editFunctions[0]['uuid']='uuid';}if(min_version(9,'',$h)){$this->types[lang(25)]["vector"]=16383;$this->editFunctions[0]['vector']='string_to_vector';}if(min_version(5.7,10.2,$h))$this->generated=array("STORED","VIRTUAL");}function
unconvertFunction($p){return(preg_match("~binary~",$p["type"])?"UNHEX
":($p["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"b''
"):(preg_match("~geometry|point|linestring|polygon~",$p["type"])?"GeomFromText
":"")));}function
insert($R,$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
insertUpdate($R,$L,$vg){$f=array_keys(reset($L));$tg="INSERT INTO ".table($R)." (".implode(", ",$f).") VALUES\n";$gj=array();foreach($f
as$_)$gj[$_]="$_ = VALUES($_)";$Uh="\nON DUPLICATE KEY UPDATE ".implode(", ",$gj);$gj=array();$ye=0;foreach($L
as$O){$Y="(".implode(", ",$O).")";if($gj&&(strlen($tg)+$ye+strlen($Y)+strlen($Uh)>1e6)){if(!queries($tg.implode(",\n",$gj).$Uh))return
false;$gj=array();$ye=0;}$gj[]=$Y;$ye+=strlen($Y)+2;}return
queries($tg.implode(",\n",$gj).$Uh);}function
slowQuery($H,$qi){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$qi FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$C))return"$C[1] /*+ MAX_EXECUTION_TIME(".($qi*1000).") */ $C[2]";}}function
convertSearch($x,$X,$p){return(preg_match('~char|text|enum|set~',$p["type"])&&!preg_match("~^utf8~",$p["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($x USING ".charset($this->conn).")":$x);}function
warnings(){$I=$this->conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();select($I);return
ob_get_clean();}}function
tableHelp($D,$ge=false){$Ee=($this->conn->flavor=='maria');if(information_schema(DB))return
strtolower("information-schema-".($Ee?"$D-table/":str_replace("_","-",$D)."-table.html"));if(DB=="mysql")return($Ee?"mysql$D-table/":"system-schema.html");}function
hasCStyleEscapes(){static$Qa;if($Qa===null){$Lh=$this->conn->result("SHOW VARIABLES LIKE 'sql_mode'",1);$Qa=(strpos($Lh,'NO_BACKSLASH_ESCAPES')===false);}return$Qa;}function
engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}}function
idf_escape($x){return"`".str_replace("`","``",$x)."`";}function
table($x){return
idf_escape($x);}function
connect($Cb){global$bc;$h=new
Db;if($h->connect($Cb[0],$Cb[1],$Cb[2])){$h->set_charset(charset($h));$h->query("SET sql_quote_show_create = 1, autocommit = 1");$h->flavor=(preg_match('~MariaDB~',$h->server_info)?'maria':'');$bc[DRIVER]=($h->flavor=='maria'?"MariaDB":"MySQL");return$h;}$J=$h->error;if(function_exists('iconv')&&!is_utf8($J)&&strlen($eh=iconv("windows-1250","utf-8",$J))>strlen($J))$J=$eh;return$J;}function
get_databases($bd){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($bd?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function
limit($H,$Z,$A,$E=0,$qh=" "){return" $H$Z".($A!==null?$qh."LIMIT $A".($E?" OFFSET $E":""):"");}function
limit1($R,$H,$Z,$qh="\n"){return
limit($H,$Z,1,0,$qh);}function
db_collation($l,$ib){$J=null;$j=get_val("SHOW CREATE DATABASE ".idf_escape($l),1);if(preg_match('~ COLLATE ([^ ]+)~',$j,$C))$J=$C[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$j,$C))$J=$ib[$C[1]][-1];return$J;}function
logged_user(){return
get_val("SELECT USER()");}function
tables_list(){return
get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME");}function
count_tables($k){$J=array();foreach($k
as$l)$J[$l]=count(get_vals("SHOW TABLES IN ".idf_escape($l)));return$J;}function
table_status($D="",$Oc=false){$J=array();foreach(get_rows($Oc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($D!=""){$K["Name"]=$D;return$K;}$J[$K["Name"]]=$K;}return$J;}function
is_view($S){return$S["Engine"]===null;}function
fk_support($S){return
preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&min_version(5.6));}function
fields($R){global$h;$Ee=($h->flavor=='maria');$J=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$K){$p=$K["COLUMN_NAME"];$U=$K["COLUMN_TYPE"];$nd=$K["GENERATION_EXPRESSION"];$Lc=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Lc,$md);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$He);$m=$K["COLUMN_DEFAULT"];if($m!=""){$fe=preg_match('~text|json~',$He[1]);if(!$Ee&&$fe)$m=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($m));if($Ee||$fe){$m=($m=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($C){return
stripslashes(str_replace("''","'",$C[1]));},$m));}if(!$Ee&&preg_match('~binary~',$He[1])&&preg_match('~^0x(\w*)$~',$m,$C))$m=pack("H*",$C[1]);}$J[$p]=array("field"=>$p,"full_type"=>$U,"type"=>$He[1],"length"=>$He[2],"unsigned"=>ltrim($He[3].$He[4]),"default"=>($md?($Ee?$nd:stripslashes($nd)):$m),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Lc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Lc,$C)?$C[1]:""),"collation"=>$K["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$K[PRIVILEGES],where,order")),"comment"=>$K["COLUMN_COMMENT"],"primary"=>($K["COLUMN_KEY"]=="PRI"),"generated"=>($md[1]=="PERSISTENT"?"STORED":$md[1]),);}return$J;}function
indexes($R,$i=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$i)as$K){$D=$K["Key_name"];$J[$D]["type"]=($D=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$D]["columns"][]=$K["Column_name"];$J[$D]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$D]["descs"][]=null;}return$J;}function
foreign_keys($R){global$n;static$hg='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$Ab=get_val("SHOW CREATE TABLE ".table($R),1);if($Ab){preg_match_all("~CONSTRAINT ($hg) FOREIGN KEY ?\\(((?:$hg,? ?)+)\\) REFERENCES ($hg)(?:\\.($hg))? \\(((?:$hg,? ?)+)\\)(?: ON DELETE ($n->onActions))?(?: ON UPDATE ($n->onActions))?~",$Ab,$Ie,PREG_SET_ORDER);foreach($Ie
as$C){preg_match_all("~$hg~",$C[2],$Eh);preg_match_all("~$hg~",$C[5],$ii);$J[idf_unescape($C[1])]=array("db"=>idf_unescape($C[4]!=""?$C[3]:$C[4]),"table"=>idf_unescape($C[4]!=""?$C[4]:$C[3]),"source"=>array_map('Adminer\idf_unescape',$Eh[0]),"target"=>array_map('Adminer\idf_unescape',$ii[0]),"on_delete"=>($C[6]?:"RESTRICT"),"on_update"=>($C[7]?:"RESTRICT"),);}}return$J;}function
view($D){return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($D),1)));}function
collations(){$J=array();foreach(get_rows("SHOW COLLATION")as$K){if($K["Default"])$J[$K["Charset"]][-1]=$K["Collation"];else$J[$K["Charset"]][]=$K["Collation"];}ksort($J);foreach($J
as$_=>$X)asort($J[$_]);return$J;}function
information_schema($l){return($l=="information_schema")||(min_version(5.5)&&$l=="performance_schema");}function
error(){global$h;return
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$h->error));}function
create_database($l,$hb){return
queries("CREATE DATABASE ".idf_escape($l).($hb?" COLLATE ".q($hb):""));}function
drop_databases($k){$J=apply_queries("DROP DATABASE",$k,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$J;}function
rename_database($D,$hb){$J=false;if(create_database($D,$hb)){$T=array();$lj=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$lj[]=$R;else$T[]=$R;}$J=(!$T&&!$lj)||move_tables($T,$lj,$D);drop_databases($J?array(DB):array());}return$J;}function
auto_increment(){$Ba=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$y){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$y["columns"],true)){$Ba="";break;}if($y["type"]=="PRIMARY")$Ba=" UNIQUE";}}return" AUTO_INCREMENT$Ba";}function
alter_table($R,$D,$q,$dd,$nb,$sc,$hb,$Aa,$dg){global$h;$c=array();foreach($q
as$p){if($p[1]){$m=$p[1][3];if(preg_match('~ GENERATED~',$m)){$p[1][3]=($h->flavor=='maria'?"":$p[1][2]);$p[1][2]=$m;}$c[]=($R!=""?($p[0]!=""?"CHANGE ".idf_escape($p[0]):"ADD"):" ")." ".implode($p[1]).($R!=""?$p[2]:"");}else$c[]="DROP ".idf_escape($p[0]);}$c=array_merge($c,$dd);$P=($nb!==null?" COMMENT=".q($nb):"").($sc?" ENGINE=".q($sc):"").($hb?" COLLATE ".q($hb):"").($Aa!=""?" AUTO_INCREMENT=$Aa":"");if($R=="")return
queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$c)."\n)$P$dg");if($R!=$D)$c[]="RENAME TO ".table($D);if($P)$c[]=ltrim($P);return($c||$dg?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$c).$dg):true);}function
alter_indexes($R,$c){foreach($c
as$_=>$X)$c[$_]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return
queries("ALTER TABLE ".table($R).implode(",",$c));}function
truncate_tables($T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views($lj){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$lj)));}function
drop_tables($T){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
move_tables($T,$lj,$ii){global$h;$Sg=array();foreach($T
as$R)$Sg[]=table($R)." TO ".idf_escape($ii).".".table($R);if(!$Sg||queries("RENAME TABLE ".implode(", ",$Sg))){$Rb=array();foreach($lj
as$R)$Rb[table($R)]=view($R);$h->select_db($ii);$l=idf_escape(DB);foreach($Rb
as$D=>$kj){if(!queries("CREATE VIEW $D AS ".str_replace(" $l."," ",$kj["select"]))||!queries("DROP VIEW $l.$D"))return
false;}return
true;}return
false;}function
copy_tables($T,$lj,$ii){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
as$R){$D=($ii==DB?table("copy_$R"):idf_escape($ii).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $D"))||!queries("CREATE TABLE $D LIKE ".table($R))||!queries("INSERT INTO $D SELECT * FROM ".table($R)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K){$Gi=$K["Trigger"];if(!queries("CREATE TRIGGER ".($ii==DB?idf_escape("copy_$Gi"):idf_escape($ii).".".idf_escape($Gi))." $K[Timing] $K[Event] ON $D FOR EACH ROW\n$K[Statement];"))return
false;}}foreach($lj
as$R){$D=($ii==DB?table("copy_$R"):idf_escape($ii).".".table($R));$kj=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $D"))||!queries("CREATE VIEW $D AS $kj[select]"))return
false;}return
true;}function
trigger($D){if($D=="")return
array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return
reset($L);}function
triggers($R){$J=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K)$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);return$J;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
routine($D,$U){global$n;$ua=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$Fh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$uc=$n->enumLength;$Li="((".implode("|",array_merge(array_keys($n->types()),$ua)).")\\b(?:\\s*\\(((?:[^'\")]|$uc)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$hg="$Fh*(".($U=="FUNCTION"?"":$n->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$Li";$j=get_val("SHOW CREATE $U ".idf_escape($D),2);preg_match("~\\(((?:$hg\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$Li\\s+":"")."(.*)~is",$j,$C);$q=array();preg_match_all("~$hg\\s*,?~is",$C[1],$Ie,PREG_SET_ORDER);foreach($Ie
as$Xf)$q[]=array("field"=>str_replace("``","`",$Xf[2]).$Xf[3],"type"=>strtolower($Xf[5]),"length"=>preg_replace_callback("~$uc~s",'Adminer\normalize_enum',$Xf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Xf[8] $Xf[7]"))),"null"=>1,"full_type"=>$Xf[4],"inout"=>strtoupper($Xf[1]),"collation"=>strtolower($Xf[9]),);return
array("fields"=>$q,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($D)),)+($U!="FUNCTION"?array("definition"=>$C[11]):array("returns"=>array("type"=>$C[12],"length"=>$C[13],"unsigned"=>$C[15],"collation"=>$C[16]),"definition"=>$C[17],"language"=>"SQL",));}function
routines(){return
get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function
routine_languages(){return
array();}function
routine_id($D,$K){return
idf_escape($D);}function
last_id($I){return
get_val("SELECT LAST_INSERT_ID()");}function
explain($h,$H){return$h->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$H);}function
found_rows($S,$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
create_sql($R,$Aa,$Sh){$J=get_val("SHOW CREATE TABLE ".table($R),1);if(!$Aa)$J=preg_replace('~ AUTO_INCREMENT=\d+~','',$J);return$J;}function
truncate_sql($R){return"TRUNCATE ".table($R);}function
use_sql($Kb){return"USE ".idf_escape($Kb);}function
trigger_sql($R){$J="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$K)$J.="\nCREATE TRIGGER ".idf_escape($K["Trigger"])." $K[Timing] $K[Event] ON ".table($K["Table"])." FOR EACH ROW\n$K[Statement];;\n";return$J;}function
show_variables(){return
get_rows("SHOW VARIABLES");}function
show_status(){return
get_rows("SHOW STATUS");}function
process_list(){return
get_rows("SHOW FULL PROCESSLIST");}function
convert_field($p){if(preg_match("~binary~",$p["type"]))return"HEX(".idf_escape($p["field"]).")";if($p["type"]=="bit")return"BIN(".idf_escape($p["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$p["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($p["field"]).")";}function
unconvert_field($p,$J){if(preg_match("~binary~",$p["type"]))$J="UNHEX($J)";if($p["type"]=="bit")$J="CONVERT(b$J, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$p["type"])){$tg=(min_version(8)?"ST_":"");$J=$tg."GeomFromText($J, $tg"."SRID($p[field]))";}return$J;}function
support($Pc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(8)?"":"|descidx".(min_version(5.1)?"":"|event|partitioning")).(min_version('8.0.16','10.2.1')?"":"|check")."~",$Pc);}function
kill_process($X){return
queries("KILL ".number($X));}function
connection_id(){return"SELECT CONNECTION_ID()";}function
max_connections(){return
get_val("SELECT @@max_connections");}}define('Adminer\JUSH',Driver::$ie);define('Adminer\SERVER',$_GET[DRIVER]);define('Adminer\DB',$_GET["db"]);define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').($_GET["ext"]?"ext=".urlencode($_GET["ext"]).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function
page_header($si,$o="",$Na=array(),$ti=""){global$ca,$ia,$b,$bc;page_headers();if(is_ajax()&&$o){page_messages($o);exit;}if(!ob_get_level())ob_start(null,4096);$ui=$si.($ti!=""?": $ti":"");$vi=strip_tags($ui.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'
',$vi,'
';$Eb=$b->css();$zd=false;$xd=false;foreach($Eb
as$r){if(strpos($r,"adminer.css")!==false)$zd=true;if(strpos($r,"adminer-dark.css")!==false)$xd=true;}$Hb=($zd?($xd?null:false):($xd?:null));$Qe=" media='(prefers-color-scheme: dark)'";if($Hb!==false)echo"\n";echo"\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.1.0");if($b->head($Hb))echo"\n","\n";foreach($Eb
as$X)echo"\n";echo"\n\n";$r=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($r)&&filemtime($r)+86400>time()){$jj=unserialize(file_get_contents($r));$Cg="-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK
RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs
DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8
h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO
jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B
nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ
fQIDAQAB
-----END PUBLIC KEY-----
";if(openssl_verify($jj["version"],base64_decode($jj["signature"]),$Cg)==1)$_COOKIE["adminer_version"]=$jj["version"];}echo
script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '$ia', '".js_escape(ME)."', '".get_token()."')")."});
document.body.classList.replace('nojs', 'js');
const offlineMessage = '".js_escape(lang(82))."';
const thousandsSeparator = '".js_escape(lang(4))."';"),"\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"\n";if($Na!==null){$B=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'
'.$bc[DRIVER].' » ';$B=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$N=$b->serverName(SERVER);$N=($N!=""?$N:lang(33));if($Na===false)echo"$N\n";else{echo"$N » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Na)))echo''.h(DB).' » ';if(is_array($Na)){if($_GET["ns"]!="")echo''.h($_GET["ns"]).' » ';foreach($Na
as$_=>$X){$Tb=(is_array($X)?$X[1]:h($X));if($Tb!="")echo"$Tb » ";}}echo"$si\n";}}echo"
$ui
\n","
\n";restart_session();page_messages($o);$k=&get_session("dbs");if(DB!=""&&$k&&!in_array(DB,$k,true))$k=null;stop_session();define('Adminer\PAGE_HEADER',1);}function
page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach($b->csp()as$Db){$Bd=array();foreach($Db
as$_=>$X)$Bd[]="$_ $X";header("Content-Security-Policy: ".implode("; ",$Bd));}$b->headers();}function
csp(){return
array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
get_nonce(){static$kf;if(!$kf)$kf=base64_encode(rand_string());return$kf;}function
page_messages($o){global$b;$Wi=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$We=$_SESSION["messages"][$Wi];if($We){echo"
".implode("
\n
",$We)."
".script("messagesPrint();");unset($_SESSION["messages"][$Wi]);}if($o)echo"
$o
\n";if($b->error)echo"
$b->error
\n";}function
page_footer($Ye=""){global$b;echo"
\n\n\n\n";if($Ye!="auth")echo'
';echo
script("setupSubmitHighlight(document);");}function
int32($cf){while($cf>=2147483648)$cf-=4294967296;while($cf<=-2147483649)$cf+=4294967296;return(int)$cf;}function
long2str($W,$nj){$eh='';foreach($W
as$X)$eh.=pack('V',$X);if($nj)return
substr($eh,0,end($W));return$eh;}function
str2long($eh,$nj){$W=array_values(unpack('V*',str_pad($eh,4*ceil(strlen($eh)/4),"\0")));if($nj)$W[]=strlen($eh);return$W;}function
xxtea_mx($uj,$tj,$Vh,$je){return
int32((($uj>>5&0x7FFFFFF)^$tj<<2)+(($tj>>3&0x1FFFFFFF)^$uj<<4))^int32(($Vh^$tj)+($je^$uj));}function
encrypt_string($Qh,$_){if($Qh=="")return"";$_=array_values(unpack("V*",pack("H*",md5($_))));$W=str2long($Qh,true);$cf=count($W)-1;$uj=$W[$cf];$tj=$W[0];$Dg=floor(6+52/($cf+1));$Vh=0;while($Dg-->0){$Vh=int32($Vh+0x9E3779B9);$jc=$Vh>>2&3;for($Vf=0;$Vf<$cf;$Vf++){$tj=$W[$Vf+1];$bf=xxtea_mx($uj,$tj,$Vh,$_[$Vf&3^$jc]);$uj=int32($W[$Vf]+$bf);$W[$Vf]=$uj;}$tj=$W[0];$bf=xxtea_mx($uj,$tj,$Vh,$_[$Vf&3^$jc]);$uj=int32($W[$cf]+$bf);$W[$cf]=$uj;}return
long2str($W,false);}function
decrypt_string($Qh,$_){if($Qh=="")return"";if(!$_)return
false;$_=array_values(unpack("V*",pack("H*",md5($_))));$W=str2long($Qh,false);$cf=count($W)-1;$uj=$W[$cf];$tj=$W[0];$Dg=floor(6+52/($cf+1));$Vh=int32($Dg*0x9E3779B9);while($Vh){$jc=$Vh>>2&3;for($Vf=$cf;$Vf>0;$Vf--){$uj=$W[$Vf-1];$bf=xxtea_mx($uj,$tj,$Vh,$_[$Vf&3^$jc]);$tj=int32($W[$Vf]-$bf);$W[$Vf]=$tj;}$uj=$W[$cf];$bf=xxtea_mx($uj,$tj,$Vh,$_[$Vf&3^$jc]);$tj=int32($W[0]-$bf);$W[0]=$tj;$Vh=int32($Vh-0x9E3779B9);}return
long2str($W,true);}$h='';$Ad=$_SESSION["token"];if(!$Ad)$_SESSION["token"]=rand(1,1e6);$yi=get_token();$jg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($_)=explode(":",$X);$jg[$_]=$X;}}function
add_invalid_login(){global$b;$Ga=get_temp_dir()."/adminer.invalid";foreach(glob("$Ga*")?:array($Ga)as$r){$t=file_open_lock($r);if($t)break;}if(!$t)$t=file_open_lock("$Ga-".rand_string());if(!$t)return;$be=unserialize(stream_get_contents($t));$pi=time();if($be){foreach($be
as$ce=>$X){if($X[0]<$pi)unset($be[$ce]);}}$ae=&$be[$b->bruteForceKey()];if(!$ae)$ae=array($pi+30*60,0);$ae[1]++;file_write_unlock($t,serialize($be));}function
check_invalid_login(){global$b;$be=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$r){$t=file_open_lock($r);if($t){$be=unserialize(stream_get_contents($t));file_unlock($t);break;}}$ae=($be?$be[$b->bruteForceKey()]:array());$jf=($ae[1]>29?$ae[0]-time():0);if($jf>0)auth_error(lang(84,ceil($jf/60)));}$_a=$_POST["auth"];if($_a){session_regenerate_id();$ij=$_a["driver"];$N=$_a["server"];$V=$_a["username"];$G=(string)$_a["password"];$l=$_a["db"];set_password($ij,$N,$V,$G);$_SESSION["db"][$ij][$N][$V][$l]=true;if($_a["permanent"]){$_=implode("-",array_map('base64_encode',array($ij,$N,$V,$l)));$yg=$b->permanentLogin(true);$jg[$_]="$_:".base64_encode($yg?encrypt_string($G,$yg):"");cookie("adminer_permanent",implode(" ",$jg));}if(count($_POST)==1||DRIVER!=$ij||SERVER!=$N||$_GET["username"]!==$V||DB!=$l)redirect(auth_url($ij,$N,$V,$l));}elseif($_POST["logout"]&&(!$Ad||verify_token())){foreach(array("pwds","db","dbs","queries")as$_)set_session($_,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(85).' '.lang(86));}elseif($jg&&!$_SESSION["pwds"]){session_regenerate_id();$yg=$b->permanentLogin();foreach($jg
as$_=>$X){list(,$bb)=explode(":",$X);list($ij,$N,$V,$l)=array_map('base64_decode',explode("-",$_));set_password($ij,$N,$V,decrypt_string(base64_decode($bb),$yg));$_SESSION["db"][$ij][$N][$V][$l]=true;}}function
unset_permanent(){global$jg;foreach($jg
as$_=>$X){list($ij,$N,$V,$l)=array_map('base64_decode',explode("-",$_));if($ij==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$l==DB)unset($jg[$_]);}cookie("adminer_permanent",implode(" ",$jg));}function
auth_error($o){global$b,$Ad;$wh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$wh]||$_GET[$wh])&&!$Ad)$o=lang(87);else{restart_session();add_invalid_login();$G=get_password();if($G!==null){if($G===false)$o.=($o?'
':'').lang(88,target_blank(),'permanentLogin()
');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$wh]&&$_GET[$wh]&&ini_bool("session.use_only_cookies"))$o=lang(89);$Yf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$Yf["lifetime"]);page_header(lang(37),$o,null);echo"\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header(lang(91),lang(92,implode(", ",Driver::$rg)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])&&is_string(get_password())){list($Gd,$ng)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$ng,$C)&&($C[1]<1024||$C[1]>65535))auth_error(lang(93));check_invalid_login();$h=connect($b->credentials());if(is_object($h)){$n=new
Driver($h);if($b->operators===null)$b->operators=$n->operators;if(Driver::$ie=='sql'||$h->flavor=='cockroach')save_settings(array("vendor-".DRIVER."-".SERVER=>$bc[DRIVER]));}}$Ce=null;if(!is_object($h)||($Ce=$b->login($_GET["username"],get_password()))!==true){$o=(is_string($h)?nl_br(h($h)):(is_string($Ce)?$Ce:lang(94)));auth_error($o.(preg_match('~^ | $~',get_password())?'
'.lang(95):''));}if($_POST["logout"]&&$Ad&&!verify_token()){page_header(lang(83),lang(96));page_footer("db");exit;}if($_a&&$_POST["token"])$_POST["token"]=$yi;$o='';if($_POST){if(!verify_token()){$Vd="max_input_vars";$Oe=ini_get($Vd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$_){$X=ini_get($_);if($X&&(!$Oe||$X<$Oe)){$Vd=$_;$Oe=$X;}}}$o=(!$_POST["token"]&&$Oe?lang(97,"'$Vd'"):lang(96).' '.lang(98));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$o=lang(99,"'post_max_size'");if(isset($_GET["sql"]))$o.=' '.lang(100);}function
select($I,$i=null,$Kf=array(),$A=0){$Ae=array();$z=array();$f=array();$La=array();$Mi=array();$J=array();for($v=0;(!$A||$v<$A)&&($K=$I->fetch_row());$v++){if(!$v){echo"":"".lang(12))."\n";return$J;}function
referencable_primary($oh){$J=array();foreach(table_status('',true)as$ai=>$R){if($ai!=$oh&&fk_support($R)){foreach(fields($ai)as$p){if($p["primary"]){if($J[$ai]){unset($J[$ai]);break;}$J[$ai]=$p;}}}}return$J;}function
textarea($D,$Y,$L=10,$jb=80){echo"";}function
select_input($za,$Ef,$Y="",$zf="",$kg=""){$hi=($Ef?"select":"input");return"<$hi$za".($Ef?">