credentials();$I=Driver::connect($mc[0],$mc[1],$mc[2]);return(is_object($I)?$I:null);}function idf_unescape($u){if(!preg_match('~^[`\'"[]~',$u))return$u;$_g=substr($u,-1);return str_replace($_g.$_g,$_g,substr($u,1,-1));}function q($Q){return connection()->quote($Q);}function idx($Ga,$x,$l=null){return($Ga&&array_key_exists($x,$Ga)?$Ga[$x]:$l);}function number($X){return preg_replace('~[^0-9]+~','',$X);}function int_type(){return'(tiny|small|medium|big)?int(eger|\d)?';}function number_type(){return'(^('.int_type().'|decimal|numeric|number|real|(binary_|half_|scaled_)?float\d?|(binary_)?double( precision)?|(small)?money)$)';}function text_type(){return'char|text'.(JUSH=="sql"?'|enum|set':'');}function is_user_type($U){return in_array($U,idx(driver()->structuredTypes(),lang(0),[]));}function full_type_sql(array$n){$U=$n["type"];return(is_user_type($U)?idf_escape($U).substr($n["full_type"],strlen($U)):$n["full_type"]);}function is_searchable(array$n,array$X){if(!isset($n["privileges"]["where"]))return false;if(preg_match('~NULL$~',$X["op"]))return true;$U=$n["type"];$fl=$X["val"];$Za='binary$|bytea|raw|image|bfile|^vector$'.(JUSH=="mssql"?'|^timestamp$':'|^bit').(JUSH=="oracle"?'|^blob|^long|rowid':'');if(preg_match("~$Za~",$U))return false;if(preg_match(number_type(),$U)){$ki='-?\d+(\.\d+)?';$Eh='';if(preg_match('~IN$~',$X["op"])){$fl=preg_replace('~^\s*\(\s*(.*?)\s*\)\s*$~s','\1',$fl);$Eh="( *, *$ki)*";}elseif($X["op"]=="BETWEEN")$Eh="\\s+AND\\s+$ki";return(bool)preg_match('~^'.$ki.$Eh.'$~i',$fl);}if(preg_match('~^(small)?date|^timestamp~',$U))return(bool)preg_match('~^\d+-\d+-\d+~',$fl);if(preg_match('~^time~',$U))return(bool)preg_match('~^\d+:\d+~',$fl);if(preg_match('~^bool~',$U)||(JUSH=="mssql"&&$U=="bit"))return(bool)preg_match('~^(t|f|true|false|[01])$~i',$fl);return true;}function bracket_escape($u,$Sa=false){static$in=[':'=>':1',']'=>':2','['=>':3','"'=>':4','='=>':5'];return strtr($u,($Sa?array_flip($in):$in));}function url_escape($Q){static$in=[];if(!$in){$in=[' '=>'+'];foreach(str_split("\"'<>#%&+=?".ini_get("arg_separator.input"))as$qb)$in[$qb]=sprintf('%%%02X',ord($qb));for($s=0;$s<256;$s++){if($s<32||$s>126)$in[chr($s)]=sprintf('%%%02X',$s);}}return strtr((string)$Q,$in);}function min_version($io,$Vg="",$h=null){$h=connection($h);$Cl=$h->server_info;if($Vg&&preg_match('~([\d.]+)-MariaDB~',$Cl,$A)){$Cl=$A[1];$io=$Vg;}return$io&&version_compare($Cl,$io)>=0;}function charset(Db$g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function ini_set($Ii,$Y){return(function_exists('ini_set')?\ini_set($Ii,$Y):false);}function ini_bool($Pf){$X=ini_get($Pf);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function ini_bytes($Pf){$X=ini_get($Pf);switch(strtolower(substr($X,-1))){case'g':$X=(int)$X*1024;case'm':$X=(int)$X*1024;case'k':$X=(int)$X*1024;}return$X;}function max_input_vars($J,$aj){$Zg=(int)ini_get("max_input_vars");return($Zg?(int)floor(($Zg-$aj)/$J):0);}function max_input_vars_error(){$Pf="max_input_vars";return lang(1,"$Pf = ".ini_get($Pf)."");}function sid(){static$I;if($I===null)$I=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$I;}function set_password($ho,$N,$V,$E){$_SESSION["pwds"][$ho][$N][$V]=($_COOKIE["adminer_key"]&&is_string($E)?[encrypt_string($E,$_COOKIE["adminer_key"])]:$E);}function get_password(){$I=get_session("pwds");if(is_array($I))$I=($_COOKIE["adminer_key"]?decrypt_string($I[0],$_COOKIE["adminer_key"]):false);return$I;}function get_val($G,$n=0,$Ub=null){$Ub=connection($Ub);$H=$Ub->query($G);if(!is_object($H))return false;$J=$H->fetch_row();return($J?$J[$n]:false);}function get_vals($G,$d=0){$I=[];$H=connection()->query($G);if(is_object($H)){while($J=$H->fetch_row())$I[]=$J[$d];}return$I;}function get_key_vals($G,$h=null,$Fl=true){$h=connection($h);$I=[];$H=$h->query($G);if(is_object($H)){while($J=$H->fetch_row()){if($Fl)$I[$J[0]]=$J[1];else$I[]=$J[0];}}return$I;}function get_rows($G,$h=null,$m="

"){$Ub=connection($h);$I=[];$H=$Ub->query($G);if(is_object($H)){while($J=$H->fetch_assoc())$I[]=$J;}elseif(!$H&&!$h&&$m&&(defined('Adminer\PAGE_HEADER')||$m=="-- "))echo$m.adminer()->error()."\n";return$I;}function unique_array($J,array$w){foreach($w as$v){if(preg_match("~^(PRIMARY|UNIQUE)$~",$v["type"])&&!$v["partial"]&&!$v["invalid"]){$I=[];foreach($v["columns"]as$x){if(!isset($J[$x]))continue 2;$I[$x]=$J[$x];}return$I;}}}function where_function($He,$d,array$n){if($He=="md5")return driver()->md5($d,$n)?:$d;return(in_array($He,driver()->functions)||in_array($He,driver()->grouping)?apply_sql_function($He,$d):$d);}function where(array$Z,array$o=[]){$I=[];foreach((array)$Z["where"]as$x=>$X){$x=bracket_escape($x,true);$d=idf_escape($x);$n=idx($o,$x,[]);$ee=$n["type"];$cg=$n&&(is_blob($n)||preg_match('~binary~',$ee));$I[]=$d.($cg&&!is_utf8($X)?" = ".driver()->quoteBinary($X):(JUSH=="sql"&&$ee=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^jsonb?$~',$n["full_type"])?"::jsonb = ".q($X)."::jsonb":(JUSH=="pgsql"&&preg_match('~\.~',$ee)?"::text = ".q($X):(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($ee,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($n,q($X))))))));if(JUSH=="sql"&&preg_match('~char|text~',$ee)&&preg_match("~[^ -@]~",$X))$I[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$x)$I[]=idf_escape($x)." IS NULL";foreach((array)$Z["col"]as$s=>$Fb){$X=idx($Z["val"],$s);$I[]=where_function(idx($Z["fun"],$s),idf_escape($Fb),idx($o,$Fb,[])).($X!==null?" = ".q($X):" IS NULL");}return implode(" AND ",$I);}function where_columns(array$o){$I=[];foreach((array)$_GET["null"]as$x)$I[$x]=true;foreach(array_keys((array)$_GET["where"])as$x)$I[bracket_escape($x,true)]=true;foreach((array)$_GET["col"]as$Fb)$I[$Fb]=true;return array_intersect_key($I,$o);}function where_check($X,array$o=[]){parse_str($X,$tb);return where($tb,$o);}function where_link($s,$d,$Y,$Fi="="){$Ci=($Y!==null?$Fi:"IS NULL");return"&where[$s][col]=".url_escape($d).($Ci!=first(adminer()->operators())?"&where[$s][op]=".url_escape($Ci):"")."&where[$s][val]=".url_escape($Y);}function convert_fields(array$e,array$o,array$M=[]){$I="";foreach($e as$x=>$X){if($M&&!in_array(idf_escape($x),$M))continue;$Ha=convert_field($o[$x]);if($Ha)$I .=", $Ha AS ".idf_escape($x);}return$I;}function cookie_path(){return strtr(preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),[";"=>"%3B",","=>"%2C"]);}function cookie($B,$Y,$Jg=2592000){header("Set-Cookie: $B=".rawurlencode($Y).($Jg?"; expires=".gmdate("D, d M Y H:i:s",time()+$Jg)." GMT":"")."; path=".cookie_path().(HTTPS?"; secure":"").($B=="adminer_import"?"":"; HttpOnly")."; SameSite=lax",false);}function php_error_text($m){return(ini_bool("html_errors")?html_entity_decode(strip_tags($m)):$m);}function php_errors($lb){$Ed=[];set_error_handler(function($Bd,$m)use(&$Ed){$Ed[]=preg_replace('~^\w+\([^)]*\)( \[[^]]*])?:\s*~','',php_error_text($m));return true;},E_WARNING|E_NOTICE);$lb();restore_error_handler();return$Ed;}function get_url($Qn,$dc){$Ed=php_errors(function()use($Qn,$dc,&$I,&$gf){$http_response_header=null;$I=file_get_contents($Qn,false,$dc);$gf=(function_exists('http_get_last_response_headers')?http_get_last_response_headers():$http_response_header);});return[$I,(preg_match('~^HTTP/[\d.]+ (\d+)~',idx($gf,0,''),$A)?$A[1]:''),(array)$gf,($I===false?implode("\n",$Ed):''),];}function json_decode_exact($kg){$kg=str_replace(['\\\\','\\"'],['\\u005c','\\u0022'],$kg);$kg=preg_replace('~"(\\\\u0001[^"]*+")|"[^"]*+"(*SKIP)(*FAIL)~','"\\\\u0001$1',$kg);return json_decode(preg_replace('~"[^"]*+"(*SKIP)(*FAIL)|-?\d[-+.\deE]*+~','"\\\\u0001$0"',$kg));}function json_scalar($X){return(is_string($X)&&substr($X,0,1)=="\1"?substr($X,1):$X);}function json_encode_exact($X,$qe=0){$kg=str_replace(['\\\\','\\"'],["\2","\3"],json_encode($X,$qe));$kg=preg_replace('~"\\\\u0001(-?\d[^"\\\\]*)"|(")\\\\u0001(\\\\u0001[^"]*+")|"[^"]*+"(*SKIP)(*FAIL)~','$1$2$3',$kg);return str_replace(["\2","\3"],['\\\\','\\"'],$kg);}function get_settings($hc){parse_str($_COOKIE[$hc],$Gl);return$Gl;}function get_setting($x,$hc="adminer_settings",$l=null){return idx(get_settings($hc),$x,$l);}function save_settings(array$Gl,$hc="adminer_settings"){$Y=http_build_query($Gl+get_settings($hc));cookie($hc,$Y);$_COOKIE[$hc]=$Y;}function restart_session(){if(!ini_bool("session.use_cookies")&&session_status()==PHP_SESSION_NONE)session_start();}function stop_session($te=false){$Tn=ini_bool("session.use_cookies");if(!$Tn||$te){session_write_close();if($Tn&&ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function set_session($x,$X){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$X;}function auth_url($ho,$N,$V,$k=null){$Pn=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($k!==null?"db|":"").($ho=='mssql'||$ho=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$Pn,$A);return"$A[1]?".(sid()?SID."&":"").($_GET["ext"]?"ext=".url_escape($_GET["ext"])."&":"").($ho!="server"||$N!=""?url_escape($ho)."=".url_escape($N)."&":"")."username=".url_escape($V).($k!=""?"&db=".url_escape($k):"").($A[2]?"&$A[2]":"");}function is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function redirect($Rg,$ph=null,$P=303){if($ph!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($Rg!==null?$Rg:$_SERVER["REQUEST_URI"]))][]=$ph;}if($Rg!==null){if($Rg=="")$Rg=".";header("Location: $Rg",true,$P);exit;}}function query_redirect($G,$Rg,$ph,$tk=true,$Md=true,$Xd=false,$Um=""){if($Md){$cm=microtime(true);$Xd=!connection()->query($G);$Um=format_time($cm);}$Vl=($G?adminer()->messageQuery($G,$Um,$Xd):"");if($Xd){adminer()->error .=adminer()->error().$Vl.script("messagesPrint();")."
";return false;}if($tk)redirect($Rg,$ph.$Vl);return true;}class Queries{static$queries=[];static$start=0;}function remember_query($G){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(driver()->delimiter!=';'?$G:(preg_match('~;$~',$G)?"DELIMITER ;;\n$G;\nDELIMITER ":$G).";");}function queries($G){remember_query($G);return connection()->query($G);}function apply_queries($G,array$T,$Gd='Adminer\table'){foreach($T as$R){if(!queries("$G ".$Gd($R)))return false;}return true;}function queries_redirect($Rg,$ph,$tk){$kk=implode("\n",Queries::$queries);$Um=format_time(Queries::$start);return query_redirect($kk,$Rg,$ph,$tk,false,!$tk,$Um);}function format_time($cm){return lang(2,max(0,microtime(true)-$cm));}function relative_uri($Pn=''){return preg_replace_callback('~^[^?]*~',function($A){return str_replace(":","%3A",$A[0]);},preg_replace('~^[^?]*/([^?]*)~','\1',($Pn?:$_SERVER["REQUEST_URI"])));}function remove_from_uri($hj=""){return substr(preg_replace("~(?<=[?&])($hj".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function get_files($B,$Ac=false){$ge=$_FILES[$B];if(!$ge)return null;foreach($ge as$x=>$X)$ge[$x]=(array)$X;$I=[];foreach($ge["error"]as$x=>$m){if($m)return$m;$p=$ge["name"][$x];$cn=$ge["tmp_name"][$x];$bc=file_get_contents($Ac&&preg_match('~\.gz$~',$p)?"compress.zlib://$cn":$cn);if($Ac){$cm=substr($bc,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$cm))$bc=iconv("utf-16","utf-8",$bc);elseif($cm=="\xEF\xBB\xBF")$bc=substr($bc,3);}$I[]=[$p,$bc];}return$I;}function get_file($x,$Ac=false,$Ic=""){$je=get_files($x,$Ac);if(!is_array($je))return$je;$I='';foreach($je as$ge){$bc=$ge[1];$I .=$bc;if($Ic)$I .=(preg_match("($Ic\\s*\$)",$bc)?"":$Ic)."\n\n";}return$I;}function upload_error($m){$hh=($m==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($m?lang(3).($hh?" ".lang(4,$hh):""):lang(5));}function is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function utf8_length($X){return strlen(preg_replace('~[\x80-\xBF]~','',$X));}function format_number($X){preg_match('~^#+([^#0]+)(?:(#+)\1)?(#*0)$~u',lang(6),$A);$Kl=strlen($A[3]);$I=number_format($X,0,".","");$I=preg_replace('~\B(?=(\d{'.(strlen($A[2])?:$Kl).'})*\d{'.$Kl.'}$)~',$A[1],$I);return strtr($I,preg_split('~~u',lang(7),-1,PREG_SPLIT_NO_EMPTY));}function format_status(array$S,$x){$X=idx($S,$x,'?');if(!is_numeric($X))return h($X);if($X<0)return'?';$Ca=($x=="Rows"&&(JUSH=="sqlite"||$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")));$X=in_array($x,["Data_length","Index_length","Data_free"])?adminer()->formatSizeValue($X):format_number($X);return($Ca?"~ ":"").$X;}function friendly_url($X){return preg_replace('~\W~i','-',$X);}function table_status1($R,$Yd=false){$I=table_status($R,$Yd);return($I?reset($I):["Name"=>$R]);}function column_foreign_keys($R){$I=[];foreach(adminer()->foreignKeys($R)as$q){foreach($q["source"]as$X)$I[$X][]=$q;}return$I;}function fields_from_edit(){$I=[];foreach((array)$_POST["field_keys"]as$x=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$x];$_POST["fields"][$X]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$X){$B=bracket_escape($x,true);$I[$B]=["field"=>$B,"full_type"=>"","type"=>"","privileges"=>["insert"=>1,"update"=>1,"where"=>1,"order"=>1],"null"=>true,"auto_increment"=>($B==driver()->primary),];}return$I;}function dump_headers($uf,$Ih=false){$I=adminer()->dumpHeaders($uf,$Ih);$cj=$_POST["output"];if($cj!="text"||$I=="tar"){$Qb=($cj!="text"&&$cj!="file"&&preg_match('~^[0-9a-z]+$~',$cj)?".$cj":"");header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($uf).".$I$Qb");}session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$I;}function dump_csv(array$J){$vn=$_POST["format"]=="tsv";foreach($J as$x=>$X){if(preg_match('~["\n]|^0[^.]|\.\d*0$|'.($vn?'\t':'[,;]|^$').'~',$X))$J[$x]='"'.str_replace('"','""',$X).'"';}echo implode(($_POST["format"]=="csv"?",":($vn?"\t":";")),$J)."\r\n";}function parse_csv($pc,$rl){$I=[];preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$pc,$Xg);foreach($Xg[0]as$J){preg_match_all("~((?>\"[^\"]*\")+|[^$rl]*)$rl~",$J.$rl,$Yg);$I[]=$Yg[1];}return$I;}function csv_value($X){return(preg_match('~^".*"$~s',$X)?idf_unescape($X):$X);}function apply_sql_function($r,$d){return($r?($r=="unixepoch"?"DATETIME($d, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$d)"):$d);}function get_temp_dir(){return ini_get("upload_tmp_dir")?:sys_get_temp_dir();}function file_open_lock($p){if(is_link($p))return;$_e=@fopen($p,"c+");if(!$_e)return;@chmod($p,0660);if(!flock($_e,LOCK_EX)){fclose($_e);return;}return$_e;}function file_write_unlock($_e,$tc){rewind($_e);fwrite($_e,$tc);ftruncate($_e,strlen($tc));file_unlock($_e);}function file_unlock($_e){flock($_e,LOCK_UN);fclose($_e);}function first(array$Ga){return reset($Ga);}function password_file($i){$p=get_temp_dir()."/adminer.key";if(!$i&&!file_exists($p))return'';$_e=file_open_lock($p);if(!$_e)return'';$I=stream_get_contents($_e);if(!$I){$I=rand_string();file_write_unlock($_e,$I);}else file_unlock($_e);return$I;}function rand_string(){return(function_exists('random_bytes')?bin2hex(random_bytes(16)):md5(uniqid(strval(mt_rand()),true)));}function select_value($X,$_,array$n,$Sm,array$Cj=[]){if(is_array($X)){$I="";if(array_filter($X,'is_array')==array_values($X)){$qg=[];foreach($X as$W)$qg+=array_fill_keys(array_keys($W),null);foreach(array_keys($qg)as$ng)$I .="".h($ng);foreach($X as$W){$I .="";foreach(array_merge($qg,$W)as$ao)$I .="".select_value($ao,$_,$n,$Sm,$Cj);}}else{foreach($X as$ng=>$W)$I .="".($X!=array_values($X)?"".h($ng):"")."".select_value($W,$_,$n,$Sm,$Cj);}return"$I
";}if(!$_)$_=adminer()->selectLink($X,$n);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$X=driver()->value($X,$n);$I=adminer()->editVal($X,$n);if($I!==null){if(!is_utf8($I))$I="\0";elseif($Sm!=""&&is_shortable($n))$I=shorten_utf8($I,max(0,+$Sm),"",$Cj);else$I=highlight_matches($I,$Cj);}return adminer()->selectVal($I,$_,$n,$X);}function is_blob(array$n){return preg_match('~blob|bytea|raw|file'.(JUSH=="mssql"?'|binary|image':'').'~',$n["type"])&&!in_array($n["type"],idx(driver()->structuredTypes(),lang(0),[]));}function is_identity_always(array$n){return$n["auto_increment"]&&(JUSH=="mssql"||$n["default"]=="GENERATED ALWAYS AS IDENTITY");}function is_mail($rd){$Ja='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$bd='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Bj="$Ja+(\\.$Ja+)*@($bd?\\.)+$bd";return is_string($rd)&&preg_match("(^$Bj(,\\s*$Bj)*\$)i",$rd);}function is_url($Q){$bd='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return preg_match("~^((https?):)?//($bd?\\.)+$bd(:\\d+)?(/\\S*)?(\\?\\S*)?(#\\S*)?\$~iD",$Q);}function is_ipv6($pa){$Oe='[\da-f]{1,4}';$bg='\d{1,3}(\.\d{1,3}){3}';return(bool)preg_match("~^(($Oe:){7}$Oe|($Oe:){6}$bg|(($Oe:)*$Oe)?::(($Oe:)*($Oe|$bg))?)$~iD",$pa);}function is_shortable(array$n){return!preg_match('~'.number_type().'|date|time|year~',$n["type"]);}function url_host($qf){return(strpos($qf,":")!==false?"[$qf]":$qf);}function server_parts(array$wj){return["scheme"=>(string)$wj["scheme"],"host"=>(string)$wj["host"],"port"=>(string)$wj["port"],"socket"=>(string)$wj["socket"],"path"=>(string)$wj["path"],];}function parse_server($N){if($N=="")return server_parts([]);if($N[0]==":"&&!is_ipv6($N)){$Gk=substr($N,1);if(preg_match('~^\d+$~D',$Gk))return server_parts(["port"=>$Gk]);return(preg_match('~^/[-\w.:/]*$~D',$Gk)?server_parts(["socket"=>$Gk]):null);}$dl="";if(preg_match('~^([-+.\w]+)://~',$N,$A)){$dl=strtolower($A[1]);$N=substr($N,strlen($A[0]));}if(preg_match('~^\[(.+)](:(\d+))?(/[-\w./]*)?$~D',$N,$A))return(is_ipv6($A[1])?server_parts(["scheme"=>$dl,"host"=>$A[1],"port"=>$A[3],"path"=>$A[4]]):null);if(is_ipv6($N))return server_parts(["scheme"=>$dl,"host"=>$N]);if(preg_match('~^(/[-\w./]*)(:(\d+))?$~D',$N,$A))return server_parts(["scheme"=>$dl,"host"=>$A[1],"port"=>$A[3]]);return(preg_match('~^([-\w.]*)(:(\d+))?(/[-\w./]*)?$~D',$N,$A)?server_parts(["scheme"=>$dl,"host"=>$A[1],"port"=>$A[3],"path"=>$A[4]]):null);}function count_rows($R,array$Z,$dg,array$Oe){$G=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($dg&&(JUSH=="sql"||count($Oe)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$Oe).")$G":"SELECT COUNT(*)".($dg?" FROM (SELECT 1$G GROUP BY ".implode(", ",$Oe).") x":$G));}function slow_query($G){$Ml=driver()->slowQuery($G,adminer()->queryTimeout());ob_flush();flush();return@get_key_vals(($Ml?:$G),null,false);}function get_token(){$qk=rand(1,1e6);return($qk^$_SESSION["token"]).":$qk";}function verify_token(){list($dn,$qk)=explode(":",$_POST["token"]);return($qk^$_SESSION["token"])==$dn&&in_array($_SERVER["HTTP_SEC_FETCH_SITE"],["","same-origin"]);}function compress_alphabet(){return strtr(implode(range('"','~')),"'\\","!\n");}function decompress_string($Q,$Pc=""){$_a=array_flip(str_split(compress_alphabet()));$y=strlen($Q);$do=($y?13*($y-1)/2-$_a[$Q[0]]:0);$Za="";$Gk=0;$Hk=0;for($s=1;$s<$y;$s+=2){$Gk=($Gk<<13)+$_a[$Q[$s]]*93+$_a[$Q[$s+1]];$Hk+=13;while($Hk>=8&&$do>=8){$Hk-=8;$do-=8;$Za .=chr($Gk>>$Hk);$Gk&=(1<<$Hk)-1;}}if($Za=="")return"";if($Pc!=""&&function_exists('inflate_init'))return inflate_add(inflate_init(ZLIB_ENCODING_RAW,['dictionary'=>$Pc]),$Za,ZLIB_FINISH);return($Pc==""&&function_exists('gzinflate')?gzinflate($Za):inflate($Za,$Pc));}function inflate($Za,$Pc=""){$Gg=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258];$Hg=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];$Tc=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577];$Vc=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];$I=$Pc;$F=0;do{$le=inflate_bits($Za,$F,1);$U=inflate_bits($Za,$F,2);if(!$U){$F=($F+7)&~7;$y=inflate_bits($Za,$F,16);$F+=16;$I .=substr($Za,$F>>3,$y);$F+=$y<<3;}else{if($U==1){$Pg=array_merge(array_fill(0,144,8),array_fill(0,112,9),array_fill(0,24,7),array_fill(0,8,8));$Wc=array_fill(0,30,5);}else{$Og=inflate_bits($Za,$F,5)+257;$Uc=inflate_bits($Za,$F,5)+1;$Ni=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];$wh=array_fill(0,19,0);$vh=inflate_bits($Za,$F,4)+4;for($s=0;$s<$vh;$s++)$wh[$Ni[$s]]=inflate_bits($Za,$F,3);$xh=inflate_table($wh);$Ig=[];while(count($Ig)<$Og+$Uc){$rm=inflate_symbol($Za,$F,$xh);if($rm==16)$Ig=array_merge($Ig,array_fill(0,inflate_bits($Za,$F,2)+3,end($Ig)));elseif($rm==17)$Ig=array_merge($Ig,array_fill(0,inflate_bits($Za,$F,3)+3,0));elseif($rm==18)$Ig=array_merge($Ig,array_fill(0,inflate_bits($Za,$F,7)+11,0));else$Ig[]=$rm;}$Pg=array_slice($Ig,0,$Og);$Wc=array_slice($Ig,$Og);}$Qg=inflate_table($Pg);$Yc=inflate_table($Wc);while(($rm=inflate_symbol($Za,$F,$Qg))!=256){if($rm<256)$I .=chr($rm);else{$y=$Gg[$rm-257]+inflate_bits($Za,$F,$Hg[$rm-257]);$Xc=inflate_symbol($Za,$F,$Yc);$C=strlen($I)-$Tc[$Xc]-inflate_bits($Za,$F,$Vc[$Xc]);for($s=0;$s<$y;$s++)$I .=$I[$C+$s];}}}}while(!$le);return($Pc==""?$I:substr($I,strlen($Pc)));}function inflate_bits($Za,&$F,$jc){$I=0;for($s=0;$s<$jc;$s++){$I+=((ord($Za[$F>>3])>>($F&7))&1)<<$s;$F++;}return$I;}function inflate_table(array$Ig){$R=[];$Eb=0;for($ab=1;$ab<=max($Ig);$ab++){foreach($Ig as$rm=>$y){if($y==$ab){$R[$ab][$Eb]=$rm;$Eb++;}}$Eb<<=1;}return$R;}function inflate_symbol($Za,&$F,array$R){$Eb=0;$ab=0;do{$Eb=($Eb<<1)+inflate_bits($Za,$F,1);$ab++;}while(!isset($R[$ab][$Eb]));return$R[$ab][$Eb];}function script($Rl,$hn="\n"){return"$Rl$hn";}function script_src($Qn,$Ec=false){return"\n";}function nonce(){return' nonce="'.get_nonce().'"';}function on($Hd,$Xe,$Da=null){$Fa=[];foreach(array_slice(func_get_args(),2)as$X)$Fa[]=json_encode($X,JSON_UNESCAPED_UNICODE);return" data-on$Hd='".str_replace(['&','<',"'"],['&','<','''],"$Xe(".implode(", ",$Fa).")")."'";}function input_hidden($B,$Y=""){return"\n";}function input_token(){return input_hidden("token",get_token());}function target_blank(){return' target="_blank" rel="noreferrer noopener"';}function h($Q){return str_replace(['&','<','"',"'","\0"],['&','<','"',''','�'],$Q);}function nl_br($Q){return str_replace("\n","
",$Q);}function checkbox($B,$Y,$wb,$ug="",$c="",$Bb="",$wg=""){$I="";return($ug!=""?"$I".h($ug)."":$I);}function optionlist($Ki,$nl=null,$Un=false){$I="";foreach($Ki as$ng=>$W){$Mi=[$ng=>$W];if(is_array($W)){$I .='';$Mi=$W;}foreach($Mi as$x=>$X)$I .=''.h($X);if(is_array($W))$I .='';}return$I;}function group_system(array$Qh,$cl=false){$I=[];$sm=[];foreach($Qh as$B){if($cl?driver()->isSystem(DB,$B):driver()->isSystem($B))$sm[]=$B;else$I[]=$B;}if($sm)$I[lang(8,'')]=$sm;return$I;}function html_select($B,array$Ki,$Y="",$c="",$wg=""){static$ug=0;$vg="";if(!$wg&&substr($Ki[""],0,1)=="("){$ug++;$wg="label-$ug";$vg="

","$Fg","","
\n";}function selectSearchPrint(array$Z,array$e,array$w,$um=null){print_fieldset("search",lang(18),$Z);foreach($w as$s=>$v){if($v["type"]=="FULLTEXT")echo"
(".implode(", ",array_map('Adminer\h',$v["columns"])).") ".h(driver()->fulltextOperator)," ",(JUSH=='sql'?checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL"):''),"
\n";}$Gi=adminer()->operators($um);foreach(array_merge((array)$_GET["where"],[[]])as$s=>$X){if(!$X||(("$X[col]$X[val]"!=""||preg_match('~NULL$~',$X["op"]))&&in_array($X["op"],$Gi)))echo"
".adminer()->selectColumnInput(" name='where[$s][col]' data-default=''".on('change',($X?'selectFieldChange':'selectAddRow')),$e,$X["col"],"(".lang(71).")"),html_select("where[$s][op]",$Gi,$X["op"]," data-default='".h(first($Gi))."'".on('change','selectFirstChange')),"","
\n";}echo"\n";}function selectOrderPrint(array$Ni,array$e,array$w){print_fieldset("sort",lang(72),$Ni);$s=0;foreach((array)$_GET["order"]as$x=>$X){if($X!=""){echo"
".adminer()->selectColumnInput(" name='order[$s]' data-default=''".on('change','selectFieldChange'),$e,$X),checkbox("desc[$s]",1,isset($_GET["desc"][$x]),lang(73))."
\n";$s++;}}echo"
".adminer()->selectColumnInput(" name='order[$s]' data-default=''".on('change','selectAddRow'),$e),checkbox("desc[$s]",1,false,lang(73))."
\n","\n";}function selectLimitPrint($z){echo"
".lang(74)."
","","
\n";}function selectLengthPrint($Sm){echo"
".lang(75)."
","","
\n";}function selectActionPrint(array$w){echo"
".lang(76)."
",""," ","\n","const indexColumns = ";$e=[];foreach($w as$v){$rc=reset($v["columns"]);if($v["type"]!="FULLTEXT"&&$rc)$e[$rc]=1;}$e[""]=1;foreach($e as$x=>$X)json_row($x);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","\n","
\n";}function selectCommandPrint(){return!information_schema(DB);}function selectImportPrint(){return!information_schema(DB);}function selectEmailPrint(array$sd,array$e){}function selectColumnsProcess(array$e,array$w){$M=[];$Oe=[];foreach((array)$_GET["columns"]as$x=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$M[$x]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$Oe[]=$M[$x];}}return[$M,$Oe];}function selectSearchProcess(array$o,array$w,$um=null){$I=[];foreach($w as$s=>$v){if($v["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$s)!="")$I[]=driver()->fulltextSql($s,$v,$_GET["fulltext"][$s],isset($_GET["boolean"][$s]));}$Gi=adminer()->operators($um);foreach((array)$_GET["where"]as$x=>$X){$X+=["col"=>"","op"=>first($Gi),"val"=>""];$_GET["where"][$x]=$X;$Fb=$X["col"];if(("$Fb$X[val]"!=""||preg_match('~NULL$~',$X["op"]))&&in_array($X["op"],$Gi)){if($X["op"]=="SQL"&&(!$_POST||!verify_token()))SqlDb::$untrusted=true;$Sb=[];foreach(($Fb!=""?[$Fb=>idx($o,$Fb,[])]:$o)as$B=>$n){if($Fb!=""||is_searchable($n,$X))$Sb[]=adminer()->selectSearchCondition(driver()->convertSearch(idf_escape($B),$X,$n),$X["op"],$X["val"]);}$I[]=(count($Sb)==1?$Sb[0]:($Sb?"(".implode(" OR ",$Sb).")":"1 = 0"));}}return$I;}function selectSearchCondition($d,$Ci,$X){if(preg_match('~IN$~',$Ci))return"$d $Ci ".($X!=""?process_in($X):"(NULL)");if($Ci=="BETWEEN")return"$d $Ci ".process_between($X);if($Ci=="SQL")return"$d $X";if(preg_match('~^(I?LIKE) %%$~',$Ci,$A))return"$d $A[1] ".q("%$X%");if($Ci=="FIND_IN_SET")return"$Ci(".q($X).", $d)";return"$d $Ci".(!preg_match('~NULL$~',$Ci)?" ".q($X):"");}function selectOrderProcess(array$o,array$w){$I=[];foreach((array)$_GET["order"]as$x=>$X){if($X!="")$I[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$x])?" DESC".(JUSH=='pgsql'&&idx($o[$X],"null")?" NULLS LAST":""):"");}return$I;}function selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function selectLengthProcess(){return(isset($_GET["text_length"])?"$_GET[text_length]":"100");}function selectEmailProcess(array$Z,array$ve){return false;}function selectQueryBuild(array$M,array$Z,array$Oe,array$Ni,$z,$D){return"";}function executeQuery($G,$lb){return$lb();}function messageQuery($G,$Um,$Xd=false){restart_session();$nf=&get_session("queries");if(!idx($nf,$_GET["db"]))$nf[$_GET["db"]]=[];if(strlen($G)>1e6)$G=preg_replace('~[\x80-\xFF]+$~','',substr($G,0,1e6))."\n…";$nf[$_GET["db"]][]=[$G,time(),$Um];$Xl="sql-".count($nf[$_GET["db"]]);$I="".lang(78)." ".copy_icon()."\n";if(!$Xd&&($oo=driver()->warnings())){$t="warnings-".count($nf[$_GET["db"]]);$I="".lang(61).", $I\n";}return" ".@date("H:i:s").""." $I';}function error(){return error();}function editRowPrint($R,array$o,$J,$Ln,$G='',$Um=''){echo($G!=""?"

".h(str_replace("\n"," ",$G))." ($Um)\n":"");}function editFunctions(array$n){$I=($n["null"]?"NULL/":"");$df=isset($_GET["select"])||where($_GET);foreach([driver()->insertFunctions,driver()->editFunctions]as$x=>$Ie){if(!$x||(!isset($_GET["call"])&&$df)){foreach($Ie as$Bj=>$X){if(!$Bj||preg_match("~$Bj~",$n["type"]))$I .="/$X";}}if($x&&$Ie&&!preg_match('~set|bool~',$n["type"])&&!is_blob($n))$I .="/SQL";}if($n["auto_increment"]&&!$df)$I=lang(66);return explode("/",$I);}function editInput($R,array$n,$c,$Y){if($n["type"]=="enum")return(isset($_GET["select"])?" ":"").enum_input("radio",$c,$n,$Y,"NULL");return"";}function editHint($R,array$n,$Y){return"";}function processInput(array$n,$Y,$r=""){if($r=="SQL")return$Y;$B=$n["field"];$I=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$I="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$I=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$I=idf_escape($B)." $r $I";elseif(preg_match('~^[+-] interval$~',$r))$I=idf_escape($B)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)&&JUSH!="pgsql"?$Y:$I);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$I="$r(".idf_escape($B).", $I)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$I="$r($I)";return unconvert_field($n,$I);}function dumpOutput(){$I=['text'=>lang(79),'file'=>lang(80)];if(function_exists('gzencode'))$I['gz']='gzip';return$I;}function dumpFormat(){return(support("dump")?['sql'=>'SQL']:[])+['csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV'];}function dumpPrint(){}function dumpDatabase($k){}function dumpTable($R,$km,$hg=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($km)dump_csv(array_keys(fields($R)));}else{if($hg==2){$o=[];foreach(fields($R)as$B=>$n)$o[]=idf_escape($B)." ".full_type_sql($n);$i="CREATE TABLE ".table($R)." (".implode(", ",$o).")";}else$i=create_sql($R,$_POST["auto_increment"],$km);set_utf8mb4($i);if($km&&$i){if(($km=="DROP+CREATE"&&!function_exists('Adminer\drop_sql'))||$hg==1)echo"DROP ".($hg==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($hg==1)$i=remove_definer($i);echo"$i;\n\n";}}}function dumpData($R,$km,$G,array$M=[],array$Z=[],array$Oe=[],array$Ni=[]){if($km){$dh=(JUSH=="sqlite"?0:1048576);$o=[];$wf=false;if($_POST["format"]=="sql"){if($km=="TRUNCATE+INSERT"&&!function_exists('Adminer\truncate_all_sql'))echo truncate_sql($R).";\n";$o=fields($R);if(JUSH=="mssql"){foreach($o as$n){if($n["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$wf=true;break;}}}}$H=($G!=""?connection()->query($G,1):driver()->select($R,($M?:["*"]),$Z,$Oe,$Ni,0));if($H){$Sf="";$eb="";$qg=[];$Je=[];$mm="";$be=($R!=''?'fetch_assoc':'fetch_row');$jc=0;while($J=$H->$be()){if(!$qg){$fo=[];foreach($J as$X){$n=$H->fetch_field();if(idx($o[$n->name],'generated')){$Je[$n->name]=true;continue;}$qg[]=$n->name;$x=idf_escape($n->name);$fo[]="$x = VALUES($x)";}$mm=($km=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$fo):"").";\n";}foreach($J as$x=>$X){if(is_array($X))$J[$x]=json_encode($X,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);}if($_POST["format"]!="sql"){if($km=="table"){dump_csv($qg);$km="INSERT";}dump_csv($J);}else{if(!$Sf)$Sf="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$qg)).") VALUES";foreach($J as$x=>$X){if($Je[$x]){unset($J[$x]);continue;}$n=$o[$x];$J[$x]=($X===null?"NULL":($X===false?0:unconvert_field($n,preg_match(number_type(),$n["type"])&&!preg_match('~\[~',$n["full_type"])&&is_numeric($X)?$X:(!is_blob($n)||is_utf8($X)?q($X):driver()->quoteBinary($X)))));}$Zk=($dh?"\n":" ")."(".implode(",\t",$J).")";if(!$eb)$eb=$Sf.$Zk;elseif(JUSH=='mssql'?$jc%1000!=0:strlen($eb)+4+strlen($Zk)+strlen($mm)<$dh)$eb .=",$Zk";else{echo$eb.$mm;$eb=$Sf.$Zk;}}$jc++;}if($eb)echo$eb.$mm;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";else dump_csv([connection()->error]);if($wf)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function dumpFilename($uf){return friendly_url($uf!=""?$uf:(SERVER?:"localhost"));}function dumpHeaders($uf,$Ih=false){$cj=$_POST["output"];$Sd=(preg_match('~sql~',$_POST["format"])?"sql":($Ih?"tar":"csv"));header("Content-Type: ".($cj=="gz"?"application/x-gzip":($Sd=="tar"?"application/x-tar":($Sd=="sql"||$cj!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($cj=="gz"){ob_start(function($Q){return gzencode($Q);},1e6);}return$Sd;}function dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function importServerPath(){return"adminer.sql";}function importPrint(){}function importProcess(){return false;}function homepage(){echo'

".adminer()->name()." ".VERSION;$ci=$_COOKIE["adminer_version"];echo" ".(version_compare(VERSION,$ci)<0?h($ci):"").version_iframe()."","

\n";switch_lang();if($Ah=="auth"){$cj="";foreach((array)$_SESSION["pwds"]as$ho=>$Dl){foreach($Dl as$N=>$Zn){$B=h(get_setting("vendor-$ho-$N")?:get_driver($ho));foreach($Zn as$V=>$E){if($B&&$E!==null){$_c=$_SESSION["db"][$ho][$N][$V];foreach(($_c?array_keys($_c):[""])as$k)$cj .="
  • ($B) ".h("$V@").($N!=""?adminer()->serverName($N):"").h($k!=""?" - $k":"")."\n";}}}}if($cj)echo"
      \n$cj
    \n";}else{$T=[];if($_POST&&!$Ah&&DB!=""){connection()->select_db(DB);if(support("scheme")&&$_GET["ns"]!="")set_schema($_GET["ns"]);}if($_GET["ns"]!==""&&!$Ah&&DB!="")$T=table_status('',true);adminer()->syntaxHighlighting($T);adminer()->databasesPrint($Ah);$la=[];if(DB==""||!$Ah){if(support("sql")){$la['sql']="".lang(78)."";$la['import']="".lang(89)."";}$la['dump']="".lang(90)."";}$Bf=$_GET["ns"]!==""&&!$Ah&&DB!="";if($Bf&&function_exists('Adminer\alter_table'))$la['create']='".lang(91)."";$la=adminer()->menuActions($la,$Ah);echo($la?"

    ".lang(19)."

    \n";}}}function syntaxHighlighting(array$T){echo script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=6.3.0+9afc53aa",true);$Dh=preg_replace('~<(?=/script)~i','<\\',Driver::jushModule());echo($Dh?script("addEventListener('DOMContentLoaded', () => {\n$Dh\n});"):"");if(support("sql")){echo"\n";if($T){$Ng=[];foreach($T as$R=>$U)$Ng[]=js_escape_re($R);echo"var jushLinks = { ".JUSH.":";json_row(js_escape(ME).(support("table")?"table":"select").'=$&','/\b(? { autocompleter = $Pa; });\n":"");}}echo"\n";}echo script("syntaxHighlighting('".doc_version()."', '".connection()->flavor."');");}function databasesPrint($Ah){if(support("single_db"))return;$j=adminer()->databases();if(DB&&$j&&!in_array(DB,$j))array_unshift($j,DB);echo"
    \n

    \n";hidden_fields_get();$xc=on('mousedown','dbMouseDown').on('change','dbChange');echo"","\n";if(support("scheme")){if($Ah!="db"&&DB!="")echo"
    ";}foreach(["import","sql","schema","dump","privileges"]as$X){if(isset($_GET[$X])){echo input_hidden($X);break;}}echo"

    \n";}function menuActions(array$la,$Ah){return$la;}function tablesPrint(array$T){echo"
      ";foreach($T as$R=>$P){$R="$R";$B=adminer()->tableName($P);if($B!=""&&!$P["dependent"])echo'
    • ".lang(13)." ",(support("table")||support("indexes")?'$B":"$B")."\n";}echo"
    \n";}function showVariables(){return show_variables();}function showStatus(){return show_status();}function processList(){return process_list();}function killProcess($t){return kill_process($t);}function formatSizeValue($X){return format_number($X);}}class Plugins{private static$append=['dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true];var$plugins;var$disabled=[];var$drivers=[];var$driverFiles=[];var$error='';private$hooks=[];function __construct($Jj){$dd=SqlDriver::$drivers;$jf=" href='https://www.adminer.org/plugins/#use'".target_blank();if($Jj===null){$Jj=[];$Xa="adminer-plugins";if(is_dir($Xa)){foreach(glob("$Xa/*.php")as$p){$he=SqlDriver::$drivers;$this->includeOnce($p);foreach(array_diff_key(SqlDriver::$drivers,$he)as$t=>$B)$this->driverFiles[$t]=$p;}}if(file_exists("$Xa.php")){$Df=$this->includeOnce("$Xa.php");if(is_array($Df)){foreach($Df as$x=>$Gj)$Jj[is_object($Gj)?get_class($Gj):$x]=$Gj;}else$this->error .=lang(95,"$Xa.php",$jf)."
    ";}foreach(get_declared_classes()as$Bb){if(!$Jj[$Bb]&&(preg_match('~^Adminer\w~i',$Bb)||is_subclass_of($Bb,'Adminer\Plugin'))){$yk=new \ReflectionClass($Bb);$ac=$yk->getConstructor();if($ac&&$ac->getNumberOfRequiredParameters())$this->error .=lang(96,$jf,"$Bb","$Xa.php")."
    ";else$Jj[$Bb]=new$Bb;}}}$Xf=array_filter($Jj,function($Gj){return!is_object($Gj);});if($Xf){$this->error .=lang(97,$jf)."
    ";$Jj=array_diff_key($Jj,$Xf);}$qm=get_setting("plugins","adminer_config");foreach($Jj as$x=>$Gj){if($Gj instanceof Plugin&&$Gj::$optional){$dm=idx($qm,get_class($Gj));if($dm!==null?!$dm:!$Gj->enabled){$this->disabled[]=$Gj;unset($Jj[$x]);}}}$this->drivers=array_diff_key(SqlDriver::$drivers,$dd);$this->plugins=$Jj;$qa=new Adminer;$Jj[]=$qa;$yk=new \ReflectionObject($qa);foreach($yk->getMethods()as$yh){foreach($Jj as$Gj){$B=$yh->getName();if(method_exists($Gj,$B))$this->hooks[$B][]=$Gj;}}}function includeOnce($p){return include_once"./$p";}static function pluginName($Gj){return preg_replace('~^ Adminer\\\\? ~','',preg_replace('~[A-Z]~',' $0',get_class($Gj)));}static function describe($Gj){$Lc=(method_exists($Gj,'description')?$Gj->description():"");if(!$Lc){$yk=new \ReflectionObject($Gj);if(preg_match('~^/[\s*]+(.+?)(?:\s*\*/)?$~m',$yk->getDocComment(),$A))$Lc=$A[1];}$el=(method_exists($Gj,'screenshot')?$Gj->screenshot():"");return h($Lc).($el?($Lc?" ":"")."(".lang(98).")":"");}static function checksum($p){$ge=str_replace("\r","",file_get_contents($p));$ge=preg_replace('~\n\tprotected \$translations = array\(.*?\n\t\);~s','',$ge);return dechex(crc32($ge));}function checksums(){$ie=array_values($this->driverFiles);foreach($this->plugins as$Gj){$yk=new \ReflectionObject($Gj);$ie[]=$yk->getFileName();}$I=[];foreach($ie as$p)$I[basename($p,'.php')]=self::checksum($p);return$I;}static function officialChecksums(){return['adminer.js'=>'a0599090','backward-keys'=>'1c017d59','before-unload'=>'9674d220','config'=>'7f179b4f','dark-switcher'=>'8c201319','database-hide'=>'e304a899','designs'=>'c0a56b18','donation'=>'365aa745','dump-alter'=>'896b579e','dump-bz2'=>'c0d6de78','dump-date'=>'512aad63','dump-json'=>'f8aa6b99','dump-xml'=>'aedd2d3a','dump-zip'=>'96882e78','edit-foreign'=>'d04a0ac8','edit-textarea'=>'a178d7d9','editor-setup'=>'a7dc3a37','editor-views'=>'5c12b185','enum-option'=>'e9005cb0','file-upload'=>'10add0e8','foreign-system'=>'634ce119','frames'=>'b0e1d11a','highlight-codemirror'=>'ada4b569','highlight-monaco'=>'95cf93b3','highlight-prism'=>'19933b19','import-csv'=>'bcecfad2','login-ip'=>'4d174fea','login-otp'=>'66bd013d','login-passkey'=>'a73c386f','login-password-less'=>'e150daac','login-reverse-proxy'=>'24558ea2','login-servers'=>'19c42e45','login-ssl'=>'2b06a5b7','login-table'=>'811f8cef','menu-links'=>'55b9b15c','name-patterns'=>'84c10d09','remote-color'=>'c5e74631','row-numbers'=>'1ad1b6cf','select-email'=>'c33a2661','select-expression'=>'b6a4b3f1','select-foreign'=>'255d4532','select-image'=>'3cefeee4','slugify'=>'7b422f0e','sql-gemini'=>'c60ab309','sql-log'=>'b9aa4ea6','sql-url-length'=>'cd70f1a0','table-indexes-structure'=>'e0b1433','table-structure'=>'f71ec61b','tables-filter'=>'2729bf7','timeout'=>'9e9bce60','version-github'=>'627cadf9','version-noverify'=>'966937e9','clickhouse'=>'a5a5e5b4','elastic'=>'b7e4a70d','firebird'=>'5f3d9493','igdb'=>'39c028f6','imap'=>'35808394','mongo'=>'e6e3303b','redis'=>'c2f04eae','simpledb'=>'9eb464cf',];}function __call($B,array$jj){$Fa=[];foreach($jj as$x=>$X)$Fa[]=&$jj[$x];$I=null;foreach($this->hooks[$B]as$Gj){$Y=call_user_func_array([$Gj,$B],$Fa);if($Y!==null){if(!self::$append[$B])return$Y;$I=$Y+(array)$I;}}return$I;}}abstract class Plugin{static$optional=false;var$enabled=true;protected$translations=[];function disable(){$this->enabled=false;return$this;}function description(){return$this->lang('');}function screenshot(){return"";}protected function lang($u,$ki=null){$Fa=func_get_args();$Fa[0]=idx($this->translations[LANG],$u)?:$u;return call_user_func_array('Adminer\lang_format',$Fa);}}class Password{private$password_hash;private$password_matches=null;function __construct($yj){$this->password_hash=$yj;}function description(){return lang(99);}function credentials(){$E=get_password();return[SERVER,$_GET["username"],($this->passwordMatches($E)&&!password_required()?"":$E)];}function login($Sg,$E){if($this->passwordMatches($E))return true;if(!Driver::$passwords||!password_required())return false;}protected function passwordMatches($E){if($this->password_matches===null)$this->password_matches=(function_exists('password_verify')&&password_verify(strval($E),$this->password_hash));return$this->password_matches;}}Adminer::$instance=(function_exists('adminer_object')?adminer_object():(is_dir("adminer-plugins")||file_exists("adminer-plugins.php")?new Plugins(null):new Adminer));SqlDriver::$drivers=["server"=>"MySQL / MariaDB"]+SqlDriver::$drivers;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class Db extends \mysqli{static$instance;var$extension="MySQLi",$flavor='';function __construct(){parent::init();}function attach(array$N,$V,$E){mysqli_report(MYSQLI_REPORT_OFF);$Kj=$N["port"];$ud=("$N[host]$Kj$N[socket]"=="");$bm=adminer()->connectSsl();$Vn=($bm&&($bm['key']||$bm['cert']||$bm['ca']||isset($bm['verify'])));if($Vn)$this->ssl_set($bm['key'],$bm['cert'],$bm['ca'],'','');$I=@$this->real_connect((!$ud?$N["host"]:ini_get("mysqli.default_host")),(!$ud||$V!=""?$V:ini_get("mysqli.default_user")),(!$ud||$V.$E!=""?$E:ini_get("mysqli.default_pw")),null,($Kj!=""?intval($Kj):ini_get("mysqli.default_port")),($Kj!=""?null:$N["socket"]),($Vn?($bm['verify']!==false?MYSQLI_CLIENT_SSL:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($I?'':$this->error);}function set_charset($rb){if($this->send_charset($rb))return true;$this->send_charset('utf8');return$this->query("SET NAMES $rb");}private function send_charset($rb){return adminer()->executeQuery("SET NAMES $rb",function()use($rb){return parent::set_charset($rb);});}function select_db($wc){return adminer()->executeQuery("USE ".idf_escape($wc),function()use($wc){return parent::select_db($wc);});}function query($G,$Kk=MYSQLI_STORE_RESULT){return adminer()->executeQuery($G,function()use($G,$Kk){return parent::query($G,$Kk);});}function multi_query($G){return adminer()->executeQuery($G,function()use($G){return parent::multi_query($G);});}function next_result(){return self::more_results()&&parent::next_result();}function quote($Q){return"'".$this->escape_string($Q)."'";}function inTransaction(){return false;}function begin(){return(method_exists($this,'begin_transaction')?adminer()->executeQuery("BEGIN",function(){return$this->begin_transaction();}):!!$this->query("BEGIN"));}function commit($qe=0,$B=null){return adminer()->executeQuery("COMMIT",function(){return parent::commit();});}function rollback($qe=0,$B=null){return adminer()->executeQuery("ROLLBACK",function(){return parent::rollback();});}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class Db extends SqlDb{private$link;function attach(array$N,$V,$E){if(ini_bool("mysql.allow_local_infile"))return lang(100,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$Kj="$N[port]$N[socket]";$B=$N["host"].($Kj!=""?":$Kj":"");$this->link=@mysql_connect(($B!=""?$B:ini_get("mysql.default_host")),($B.$V!=""?$V:ini_get("mysql.default_user")),($B.$V.$E!=""?$E:ini_get("mysql.default_password")),true,131072);if(!$this->link)return mysql_error();$this->server_info=mysql_get_server_info($this->link);return'';}function set_charset($rb){return$this->send_charset($rb)||$this->send_charset('utf8');}private function send_charset($rb){return adminer()->executeQuery("SET NAMES $rb",function()use($rb){return mysql_set_charset($rb,$this->link);});}function quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function select_db($wc){return adminer()->executeQuery("USE ".idf_escape($wc),function()use($wc){return mysql_select_db($wc,$this->link);});}function query($G,$An=false){$H=adminer()->executeQuery($G,function()use($G,$An){return@($An?mysql_unbuffered_query($G,$this->link):mysql_query($G,$this->link));});$this->error="";if(!$H){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return false;}if($H===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return true;}return new Result($H);}}class Result{var$num_rows;private$result;private$offset=0;function __construct($H){$this->result=$H;$this->num_rows=mysql_num_rows($H);}function fetch_assoc(){return mysql_fetch_assoc($this->result);}function fetch_row(){return mysql_fetch_row($this->result);}function fetch_field(){$I=mysql_fetch_field($this->result,$this->offset++);$I->orgtable=$I->table;$I->native_type=idx(["string"=>"varchar","real"=>"double"],$I->type,$I->type);return$I;}}}elseif(extension_loaded("pdo_mysql")){class Db extends PdoDb{var$extension="PDO_MySQL";function attach(array$N,$V,$E){$Ki=[\PDO::MYSQL_ATTR_LOCAL_INFILE=>false];if(isset($_GET["select"]))$Ki[1012]=false;$bm=adminer()->connectSsl();if($bm){if($bm['key'])$Ki[\PDO::MYSQL_ATTR_SSL_KEY]=$bm['key'];if($bm['cert'])$Ki[\PDO::MYSQL_ATTR_SSL_CERT]=$bm['cert'];if($bm['ca'])$Ki[\PDO::MYSQL_ATTR_SSL_CA]=$bm['ca'];if(isset($bm['verify']))$Ki[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$bm['verify'];}$qf=$N["host"];$Kj=$N["port"];$Nl=$N["socket"];return$this->dsn("mysql:charset=utf8".($qf!=""?";host=$qf":'').($Kj!=""?";port=$Kj":($Nl!=""?";unix_socket=$Nl":"")),$V,$E,$Ki);}function set_charset($rb){return$this->query("SET NAMES $rb");}function select_db($wc){return$this->query("USE ".idf_escape($wc));}function query($G,$An=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$An);return parent::query($G,$An);}}}class Driver extends SqlDriver{static$extensions=["MySQLi","MySQL","PDO_MySQL"];static$jush="sql";static$serverSocket=true;var$unsigned=["unsigned","zerofill","unsigned zerofill"];var$functions=["char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper"];var$grouping=["avg","count","count distinct","group_concat","max","min","sum"];var$partitionBy=["HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST"];function operators($um){return["=","<",">","<=",">=","!=","&","LIKE","LIKE %%","REGEXP","IN","BETWEEN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL"];}static function connect($N,$V,$E){$g=parent::connect($N,$V,$E);if(is_string($g)){if(function_exists('iconv')&&!is_utf8($g)&&strlen($Zk=iconv("windows-1252","utf-8//IGNORE",$g))>strlen($g))$g=$Zk;return$g;}$g->set_charset(charset($g));$g->query("SET sql_quote_show_create = 1, autocommit = 1");$g->flavor=(preg_match('~MariaDB~',$g->server_info)?'maria':'mysql');add_driver(DRIVER,($g->flavor=='maria'?"MariaDB":"MySQL"));return$g;}function __construct(Db$g){parent::__construct($g);$this->types=[lang(35)=>["tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21],lang(36)=>["date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4],lang(37)=>["char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295],lang(101)=>["enum"=>65535,"set"=>64],lang(38)=>["bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295],lang(40)=>["geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0],];$this->insertFunctions=["char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",];$this->editFunctions=[number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",];if(min_version('5.7.8',10.2,$g))$this->types[lang(37)]["json"]=4294967295;if(min_version('',10.7,$g)){$this->types[lang(37)]["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version('',10.5,$g)){$this->types[lang(39)]["inet6"]=39;if(min_version('','10.10',$g))$this->types[lang(39)]["inet4"]=15;}if(min_version(9,11.7,$g))$this->types[lang(35)]["vector"]=16383;if(min_version(5.7,10.2,$g))$this->generated=["STORED","VIRTUAL"];}function unconvertFunction(array$n){return(preg_match("~binary~",$n["type"])?"UNHEX":($n["type"]=="bit"?doc_link(['sql'=>'bit-value-literals.html'],"b''"):($n["type"]=="vector"?"".($this->conn->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."":(preg_match("~geom|point|linestring|polygon~",$n["type"])?"GeomFromText":""))));}function insert($R,array$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function insertUpdate($R,array$K,array$Xj){$e=array_keys(reset($K));$Sj="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$fo=[];foreach($e as$x)$fo[$x]="$x = VALUES($x)";$mm="\nON DUPLICATE KEY UPDATE ".implode(", ",$fo);$fo=[];$y=0;foreach($K as$O){$Y="(".implode(", ",$O).")";if($fo&&(strlen($Sj)+$y+strlen($Y)+strlen($mm)>1e6)){if(!queries($Sj.implode(",\n",$fo).$mm))return false;$fo=[];$y=0;}$fo[]=$Y;$y+=strlen($Y)+2;}return queries($Sj.implode(",\n",$fo).$mm);}function slowQuery($G,$Vm){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$Vm FOR $G";elseif(preg_match('~^(SELECT\b)(.+)~is',$G,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($Vm*1000).") */ $A[2]";}}function convertColumn($u,array$n){if(preg_match("~binary~",$n["type"]))return"HEX($u)";if($n["type"]=="bit")return"BIN($u + 0)";if($n["type"]=="vector")return($this->conn->flavor=='maria'?"VEC_ToText":"VECTOR_TO_STRING")."($u)";if(preg_match("~geom|point|linestring|polygon~",$n["type"]))return(min_version(8)?"ST_":"")."AsWKT($u)";return"";}function convertSearch($u,array$X,array$n){return($this->convertColumn($u,$n)?:(preg_match('~'.text_type().'~',$n["type"])&&!preg_match("~^utf8~",$n["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($u USING ".charset($this->conn).")":$u));}function typeName(\stdClass$n){$B=parent::typeName($n);if($B!=""){$_n=["TINY"=>"tinyint","SHORT"=>"smallint","LONG"=>"int","INT24"=>"mediumint","LONGLONG"=>"bigint","NEWDECIMAL"=>"decimal","VAR_STRING"=>"varchar","STRING"=>"char",];return idx($_n,$B,strtolower($B));}$_n=["decimal","tinyint","smallint","int","float","double",7=>"timestamp","bigint","mediumint","date","time","datetime","year",15=>"varchar","bit",242=>"vector",245=>"json","decimal","enum","set","tinytext","mediumtext","longtext","text","varchar","char","geometry",];$I=idx($_n,$n->type,"");return($n->charsetnr==63?str_replace(["text","varchar","char"],["blob","varbinary","binary"],$I):$I);}function quoteBinary($Zk){return"X".q(bin2hex($Zk));}function md5($d,array$n){if(is_blob($n)||preg_match('~'.text_type().'~',$n["type"]))return"MD5(".(is_blob($n)||preg_match("~^utf8~",$n["collation"])?$d:"CONVERT($d USING ".charset($this->conn).")").")";}function warnings(){$H=$this->conn->query("SHOW WARNINGS");if($H&&$H->num_rows){ob_start();print_select_result($H);return ob_get_clean();}}function errorLine($G){return(preg_match('~ at line (\d+)$~',$this->conn->error,$A)?(int)$A[1]:0);}function tableHelp($B,$hg=false){$Ug=($this->conn->flavor=='maria');if(information_schema(DB))return strtolower(str_replace("_","-",DB)."-".($Ug?"$B-table/":str_replace("_","-",$B)."-table.html"));if(DB=="sys")return($Ug?"sys-schema/":strtolower("sys-".str_replace("_","-",preg_replace('~^x\$~','',$B)).".html"));if(DB=="mysql")return($Ug?"mysql$B-table/":"system-schema.html");}function partitionsInfo($R){$Ce="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$H=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $Ce ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=($H?$H->fetch_row():null);if(!$J)return[];$I=[];list($I["partition_by"],$I["partition"],$I["partitions"])=$J;$uj=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Ce AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$I["partition_names"]=array_keys($uj);$I["partition_values"]=array_values($uj);return$I;}function checkConstraints($R){$I=parent::checkConstraints($R);return($this->conn->flavor=='maria'?$I:array_map('stripslashes',$I));}function hasCStyleEscapes(){static$hb;if($hb===null){$Yl=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$hb=(strpos($Yl,'NO_BACKSLASH_ESCAPES')===false);}return$hb;}function hasEstimatedRows(){return true;}function isSystem($k,$L=""){return information_schema($k,$L)||in_array($k,["mysql","sys"]);}function lineComment(){return"#|-- ";}function engines(){$I=[];foreach(get_rows("SHOW ENGINES")as$J){if(preg_match("~YES|DEFAULT~",$J["Support"]))$I[]=$J["Engine"];}return$I;}function indexAlgorithms(array$um){return(preg_match('~^(MEMORY|NDB)$~',$um["Engine"])?["HASH","BTREE"]:[]);}}function idf_escape($u){return"`".str_replace("`","``",$u)."`";}function table($u){return idf_escape($u);}function get_databases($se){$I=get_session("dbs");if($I===null){$G="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$cm=microtime(true);$I=($se?slow_query($G):get_vals($G));if(microtime(true)-$cm>0.1){restart_session();set_session("dbs",$I);stop_session();}}return$I;}function limit($G,$Z,$z,$C=0,$rl=" "){return" $G$Z".($z?$rl."LIMIT $z".($C?" OFFSET $C":""):"");}function limit1($R,$G,$Z,$rl="\n"){return limit($G,$Z,1,0,$rl);}function db_collation($k,array$Ib){static$I;if($I===null)$I=get_key_vals("SELECT SCHEMA_NAME, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA");return$I[$k];}function logged_user(){return get_val("SELECT CURRENT_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(array$j){$I=[];foreach($j as$k)$I[$k]=count(get_vals("SHOW TABLES IN ".idf_escape($k)));return$I;}function table_status($B="",$Yd=false){$I=[];$G="SELECT ENGINE AS Engine, TABLE_NAME AS Name, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($B!=""?"AND TABLE_NAME = ".q($B):"ORDER BY Name");$L=[];foreach(($Yd?[]:get_rows($G))as$J)$L[$J["Name"]]=$J;$Wj=null;foreach(get_rows($Yd?$G:"SHOW TABLE STATUS".($B!=""?" LIKE ".q(addcslashes($B,"%_\\")):""))as$J){$Yi=idx($L,$J["Name"]);if($Yi){if($J["Comment"]!==$Yi["Comment"]&&$J["Comment"]!==$Wj)$J["Error"]=$J["Comment"];$Wj=$J["Comment"];$J["Comment"]=$Yi["Comment"];$J["Engine"]=$Yi["Engine"];}if($J["Engine"]=="InnoDB")$J["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$J["Comment"]);if(!isset($J["Engine"]))$J["Comment"]="";if($B!="")$J["Name"]=$B;$I[$J["Name"]]=$J;}return$I;}function is_view(array$S){return$S["Engine"]===null;}function fk_support(array$S){return preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function parse_type($Fe){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$Fe,$A);return[$A[1],$A[2],ltrim($A[3].$A[4])];}function fields($R){$Ug=(connection()->flavor=='maria');$I=[];foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$J){$n=$J["COLUMN_NAME"];$U=$J["COLUMN_TYPE"];$Ke=$J["GENERATION_EXPRESSION"];$Vd=$J["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Vd,$Je);list($zn,$y,$Jn)=parse_type($U);$l=$J["COLUMN_DEFAULT"];$Dc=false;if($l!=""){$pk=$Ug;if($Ug)$Dc=!preg_match("~^('(?:[^'\\\\]|\\\\.|'')*'|NULL|[-+]?[\\d.]+)$~s",$l);elseif(preg_match('~text|json~',$zn)||preg_match('~\bDEFAULT_GENERATED\b~',$Vd)){$l=stripslashes($l);$pk=preg_match("~^(_\\w+)?('(?:[^'\\\\]|\\\\.|'')*')$~s",$l,$A);if($pk)$l=$A[2];else$Dc=true;}elseif(preg_match("~^[bx]'[\\da-f]*'$~i",$l))$Dc=true;if($pk)$l=($l=="NULL"?null:(preg_match("~^'.*'$~s",$l)?stripslashes(idf_unescape($l)):$l));if(preg_match('~binary~',$zn)&&preg_match("~^(?:0x(\\w*)|x'(\\w*)')$~",$l,$A)){$l=pack("H*",$A[1].idx($A,2));$Dc=false;}}$I[$n]=["field"=>$n,"full_type"=>$U,"type"=>$zn,"length"=>$y,"unsigned"=>$Jn,"default"=>($Je?($Ug?$Ke:stripslashes($Ke)):$l),"default_sql"=>(!$Je&&$Dc),"null"=>($J["IS_NULLABLE"]=="YES"),"auto_increment"=>($Vd=="auto_increment"),"on_update"=>(preg_match('~\bon update current_timestamp\b~i',$Vd)?"CURRENT_TIMESTAMP":""),"collation"=>$J["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$J[PRIVILEGES],where,order")),"comment"=>$J["COLUMN_COMMENT"],"primary"=>($J["COLUMN_KEY"]=="PRI"),"generated"=>($Je[1]=="PERSISTENT"?"STORED":$Je[1]),];}return$I;}function indexes($R,$h=null){$I=[];foreach(get_rows("SHOW INDEX FROM ".table($R),$h)as$J){$B=$J["Key_name"];$I[$B]["type"]=($B=="PRIMARY"?"PRIMARY":($J["Index_type"]=="FULLTEXT"?"FULLTEXT":($J["Non_unique"]?(preg_match('~^(SPATIAL|VECTOR)$~',$J["Index_type"])?$J["Index_type"]:"INDEX"):"UNIQUE")));$I[$B]["columns"][]=$J["Column_name"];$I[$B]["lengths"][]=($J["Index_type"]=="SPATIAL"?null:$J["Sub_part"]);$I[$B]["descs"][]=null;$I[$B]["algorithm"]=$J["Index_type"];}return$I;}function foreign_keys($R){static$Bj='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$I=[];$kc=get_val("SHOW CREATE TABLE ".table($R),1);if($kc){preg_match_all("~CONSTRAINT ($Bj) FOREIGN KEY ?\\(((?:$Bj,? ?)+)\\) REFERENCES ($Bj)(?:\\.($Bj))? \\(((?:$Bj,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$kc,$Xg,PREG_SET_ORDER);foreach($Xg as$A){preg_match_all("~$Bj~",$A[2],$Rl);preg_match_all("~$Bj~",$A[5],$Lm);$I[idf_unescape($A[1])]=["db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('Adminer\idf_unescape',$Rl[0]),"target"=>array_map('Adminer\idf_unescape',$Lm[0]),"on_delete"=>($A[6]?:"RESTRICT"),"on_update"=>($A[7]?:"RESTRICT"),];}}return$I;}function view($B){return["select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($B),1))];}function collations(){$I=[];foreach(get_rows("SHOW COLLATION")as$J)$I[$J["Charset"]][]=$J["Collation"];ksort($I);foreach($I as$x=>$X)sort($I[$x]);return$I;}function information_schema($k,$L=""){return($k=="information_schema")||(min_version(5.5)&&$k=="performance_schema");}function error(){return h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function create_database($k,$Hb){return queries("CREATE DATABASE ".idf_escape($k).($Hb?" COLLATE ".q($Hb):""));}function drop_databases(array$j){$I=apply_queries("DROP DATABASE",$j,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$I;}function rename_database($B,$Hb){$I=false;if(create_database($B,$Hb)){$T=[];$ko=[];foreach(tables_list()as$R=>$U){if($U=='VIEW')$ko[]=$R;else$T[]=$R;}$I=(!$T&&!$ko)||move_tables($T,$ko,$B);drop_databases($I?[DB]:[]);}return$I;}function auto_increment(){$Oa=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$Oa="";break;}if($v["type"]=="PRIMARY")$Oa=" UNIQUE";}}return" AUTO_INCREMENT$Oa";}function alter_table($R,$B,array$o,array$ue,$f,$xd,$Hb,$Na,$tj){$b=[];foreach($o as$n){if($n[1]){$l=$n[1][3];if(preg_match('~ GENERATED~',$l)){$n[1][3]=(connection()->flavor=='maria'?"":$n[1][2]);$n[1][2]=$l;}$b[]=($R!=""?($n[0]!=""?"CHANGE ".idf_escape($n[0]):"ADD"):" ")." ".implode($n[1]).($R!=""?$n[2]:"");}else$b[]="DROP ".idf_escape($n[0]);}$b=array_merge($b,$ue);$P=($f!==null?" COMMENT=".q($f):"").($xd?" ENGINE=".q($xd):"").($Hb?" COLLATE ".q($Hb):"").($Na!=""?" AUTO_INCREMENT=$Na":"");if($tj){$uj=[];if($tj["partition_by"]=='RANGE'||$tj["partition_by"]=='LIST'){foreach($tj["partition_names"]as$x=>$X){$Y=$tj["partition_values"][$x];$uj[]="\n PARTITION ".idf_escape($X)." VALUES ".($tj["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$P .="\nPARTITION BY $tj[partition_by]($tj[partition])";if($uj)$P .=" (".implode(",",$uj)."\n)";elseif($tj["partitions"])$P .=" PARTITIONS ".(+$tj["partitions"]);}elseif($tj===null)$P .="\nREMOVE PARTITIONING";if($R=="")return queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)$P");if($R!=$B)$b[]="RENAME TO ".table($B);if($P)$b[]=ltrim($P);return($b?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b)):true);}function alter_indexes($R,$b){$pb=[];foreach($b as$X)$pb[]=($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(",",$pb));}function truncate_tables(array$T){return apply_queries("TRUNCATE TABLE",$T);}function drop_views(array$ko){return queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$ko)));}function drop_tables(array$T){return queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function move_tables(array$T,array$ko,$Lm){$Dk=[];foreach($T as$R)$Dk[]=table($R)." TO ".idf_escape($Lm).".".table($R);if(!$Dk||queries("RENAME TABLE ".implode(", ",$Dk))){$Hc=[];foreach($ko as$R)$Hc[table($R)]=view($R);connection()->select_db($Lm);$k=idf_escape(DB);foreach($Hc as$B=>$jo){if(!queries("CREATE VIEW $B AS ".str_replace(" $k."," ",$jo["select"]))||!queries("DROP VIEW $k.$B"))return false;}return true;}return false;}function copy_tables(array$T,array$ko,$Lm){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T as$R){$B=($Lm==DB?table("copy_$R"):idf_escape($Lm).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $B"))||!queries("CREATE TABLE $B LIKE ".table($R))||!queries("INSERT INTO $B SELECT * FROM ".table($R)))return false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$J){$pn=$J["Trigger"];list($Hd,$ni)=trigger_event($J);if(!queries("CREATE TRIGGER ".($Lm==DB?idf_escape("copy_$pn"):idf_escape($Lm).".".idf_escape($pn))." $J[Timing] $Hd".($ni!=""?" $ni":"")." ON $B FOR EACH ROW\n$J[Statement];"))return false;}}foreach($ko as$R){$B=($Lm==DB?table("copy_$R"):idf_escape($Lm).".".table($R));$jo=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $B"))||!queries("CREATE VIEW $B AS $jo[select]"))return false;}return true;}function trigger_event(array$J){$Jd=explode(",",$J["Event"]);$I=[];foreach(["DELETE","INSERT","UPDATE"]as$Hd){if(in_array($Hd,$Jd))$I[]=$Hd;}$I=implode(" OR ",$I);if(in_array("UPDATE",$Jd)&&min_version('','12.0.1')&&preg_match('~\s(?:BEFORE|AFTER)\s+(.+?)\s+ON\s~is',get_val("SHOW CREATE TRIGGER ".idf_escape($J["Trigger"]),2),$A)&&preg_match('~\bOF\s+(.+)~is',$A[1],$ni))return["$I OF",$ni[1]];return[$I,""];}function trigger($B,$R){if($B=="")return[];$K=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($B));$I=reset($K);if($I)list($I["Event"],$I["Of"])=trigger_event($I);return($I?:[]);}function triggers($R){$I=[];foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$J){list($Hd)=trigger_event($J);$I[$J["Trigger"]]=[$J["Timing"],$Hd];}return$I;}function trigger_options(){return["Timing"=>["BEFORE","AFTER"],"Event"=>(min_version('','12.0.1')?["INSERT","UPDATE","UPDATE OF","DELETE","INSERT OR UPDATE","INSERT OR UPDATE OF","DELETE OR INSERT","DELETE OR UPDATE","DELETE OR UPDATE OF","DELETE OR INSERT OR UPDATE","DELETE OR INSERT OR UPDATE OF",]:["INSERT","UPDATE","DELETE"]),"Type"=>["FOR EACH ROW"],];}function routine($B,$U){$K=get_rows("SELECT PARAMETER_NAME, DTD_IDENTIFIER, PARAMETER_MODE, COLLATION_NAME FROM information_schema.PARAMETERS WHERE SPECIFIC_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND SPECIFIC_NAME = ".q($B)." ORDER BY ORDINAL_POSITION");$o=[];foreach($K as$J){$Fe=$J["DTD_IDENTIFIER"];list($zn,$y,$Jn)=parse_type($Fe);$o[]=["field"=>$J["PARAMETER_NAME"],"type"=>$zn,"length"=>$y,"unsigned"=>$Jn,"null"=>true,"full_type"=>$Fe,"inout"=>($U=="FUNCTION"?"":$J["PARAMETER_MODE"]),"collation"=>$J["COLLATION_NAME"],];}$I=connection()->query("SELECT ROUTINE_COMMENT comment, ROUTINE_DEFINITION definition, LOWER(EXTERNAL_LANGUAGE) language, IF(DEFINER = CURRENT_USER(), '', DEFINER) definer, IF(IS_DETERMINISTIC = 'YES', 'DETERMINISTIC', 'NOT DETERMINISTIC') is_deterministic, SQL_DATA_ACCESS data_access, CONCAT('SQL SECURITY ', SECURITY_TYPE) security FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND ROUTINE_NAME = ".q($B))->fetch_assoc();if(!$I)return[];$I['options']=["DEFINER"=>$I['definer'],"DETERMINISTIC"=>$I['is_deterministic'],"SQL_DATA_ACCESS"=>$I['data_access'],"SQL_SECURITY"=>$I['security'],"COMMENT"=>$I['comment'],];if($o&&$o[0]['field']=='')$I['returns']=array_shift($o);$I['fields']=$o;return$I;}function routines(){return get_rows("SELECT SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function routine_languages(){return(min_version(9,99)?["sql"=>"sql","javascript"=>"js"]:[]);}function routine_options($Qk){return["DEFINER"=>[],"DETERMINISTIC"=>["NOT DETERMINISTIC","DETERMINISTIC"],"SQL_DATA_ACCESS"=>["CONTAINS SQL","NO SQL","READS SQL DATA","MODIFIES SQL DATA"],"SQL_SECURITY"=>["SQL SECURITY DEFINER","SQL SECURITY INVOKER"],"COMMENT"=>[],];}function routine_id($B,array$J){return idf_escape($B);}function last_id($H){return get_val("SELECT LAST_INSERT_ID()");}function explain(Db$g,$G){return$g->query("EXPLAIN ".(min_version(5.7)?"":"PARTITIONS ").$G);}function found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function create_sql($R,$Na,$km){$I=get_val("SHOW CREATE TABLE ".table($R),1);if(!$Na)$I=preg_replace('~(\n\)[^\n]*?) AUTO_INCREMENT=\d+~','\1',$I);return$I;}function truncate_sql($R){return"TRUNCATE ".table($R);}function use_sql($wc,$km=""){$B=idf_escape($wc);$I="";if(preg_match('~CREATE~',$km)&&($i=get_val("SHOW CREATE DATABASE $B",1))){set_utf8mb4($i);if($km=="DROP+CREATE")$I="DROP DATABASE IF EXISTS $B;\n";$I .="$i;\n";}return$I."USE $B";}function trigger_sql($R){$I="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$J){list($J["Event"],$J["Of"])=trigger_event($J);$I .="\n".create_trigger(" ON ".table($J["Table"]),$J+["Type"=>"FOR EACH ROW"]).";\n";}return$I;}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(array$n){return driver()->convertColumn(idf_escape($n["field"]),$n);}function unconvert_field(array$n,$I){if(preg_match("~binary~",$n["type"]))$I="UNHEX($I)";if($n["type"]=="bit")$I="CONVERT(b$I, UNSIGNED)";if($n["type"]=="vector")$I=(connection()->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."($I)";if(preg_match("~geom|point|linestring|polygon~",$n["type"])){$Sj=(min_version(8)?"ST_":"");$I=$Sj."GeomFromText($I, $Sj"."SRID($n[field]))";}return$I;}function support($Zd){return preg_match('~^(comment|columns|copy|database|drop_col|dump|event|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').(min_version(8,99)?'|fast_status':'').')$~',$Zd);}function kill_process($t){return queries("KILL ".number($t));}function max_connections(){return get_val("SELECT @@max_connections");}function types($Ud=false){return[];}function type_values($t){return"";}function type_definition($t){return["kind"=>"","definition"=>""];}function schemas(){return[];}function get_schema(){return"";}function set_schema($L,$h=null){return true;}function schema_comment($L){return"";}function set_schema_comment($L,$f){return true;}}define('Adminer\JUSH',Driver::$jush);define('Adminer\SERVER',"".$_GET[DRIVER]);define('Adminer\DB',"$_GET[db]");define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').($_GET["ext"]?"ext=".url_escape($_GET["ext"]).'&':'').(isset($_GET[DRIVER])?DRIVER."=".url_escape(SERVER).'&':'').(isset($_GET["username"])?"username=".url_escape($_GET["username"]).'&':'').(isset($_GET["db"])?'db='.url_escape(DB).'&'.(isset($_GET["ns"])?"ns=".url_escape($_GET["ns"])."&":""):''));if(isset($_GET["manifest"])){header("Content-Type: application/manifest+json; charset=utf-8");header("Cache-Control: no-cache");echo json_encode(adminer()->manifest(),JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);exit;}function page_header($Xm,$m="",$db=[],$Ym="",$gi=false,$Zc=""){if($gi){header("HTTP/1.1 404 Not Found");$m=($m?:lang(102));}page_headers();if(is_ajax()&&$m){page_messages($m);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$Zm=$Xm.($Ym!=""?": $Ym":"");$an=strip_tags($Zm.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo' ',$an,' ';$oc=adminer()->css();if(is_int(key($oc)))$oc=array_fill_keys($oc,'light');$af=in_array('light',$oc)||in_array('',$oc);$Ye=in_array('dark',$oc)||in_array('',$oc);$sc=($af?($Ye?null:false):($Ye?:null));$mh=" media='(prefers-color-scheme: dark)'";if($sc!==false)echo"\n";echo"\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=6.3.0+9afc53aa");if(adminer()->head($sc))echo"\n","\n";if(adminer()->manifest())echo"\n";foreach($oc as$Qn=>$Bh){$c=($Bh=='dark'&&!$sc?$mh:($Bh=='light'&&$Ye?" media='(prefers-color-scheme: light)'":""));echo"\n";}echo"\n\n",script((isset($_COOKIE["adminer_version"])||!adminer()->verifyVersion()?"":"onload = partial(verifyVersion, '".VERSION."');\n")." const offlineMessage = '".js_escape(lang(104))."'; const numberFormat = '".js_escape(lang(6))."'; const numberDigits = '".js_escape(lang(7))."'; const urlSeparators = '".js_escape(ini_get("arg_separator.input"))."';"),"\n","
    \n","\n";if($db!==null){$lg=(class_exists('Adminer\Db')&&connection());$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'
    \n";hidden_fields_get();echo(DB!=""?input_hidden("db",DB):""),(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""),"
    \n",script("jumpSetup();");}}echo"

    $Zm$Zc

    \n","
    \n";restart_session();page_messages($m);adminer()->serviceWorker();$j=&get_session("dbs");if(DB!=""&&$j&&!in_array(DB,$j,true))$j=null;stop_session();define('Adminer\PAGE_HEADER',1);ob_flush();flush();if($gi){page_footer($gi===true?"":$gi);exit;}}function service_worker(){$Ak=has_passwords();$Eb=($Ak?"navigator.serviceWorker.register('".js_escape(preg_replace('~\?.*~','',ME)."?file=worker.js&version=6.3.0+9afc53aa")."', {scope: location.pathname}).catch(() => {});":"navigator.serviceWorker.getRegistration().then(registration => registration && registration.unregister()); caches.keys().then(keys => keys.forEach(key => key.startsWith('adminer-') && caches.delete(key)));");echo script("if (navigator.serviceWorker) {\n\t$Eb\n}");}function has_passwords(){foreach((array)$_SESSION["pwds"]as$Dl){foreach($Dl as$Zn){foreach($Zn as$E){if($E!==null)return true;}}}return false;}function page_headers(){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(adminer()->csp(csp())as$nc){$ff=[];foreach($nc as$x=>$X)$ff[]="$x $X";header("Content-Security-Policy: ".implode("; ",$ff));}adminer()->headers();}function csp(){return[["script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self' https://www.adminer.org","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",],];}function design_checksums(){$Wn=[];foreach(array_keys(adminer()->css())as$Qn)$Wn[preg_replace('~\?.*~','',$Qn)]=true;$I=[];foreach(["adminer.css","adminer-dark.css"]as$p){if($Wn[$p]&&file_exists($p)){preg_match('~^/\* Adminer design ([-\w]+) \*/~',file_get_contents($p),$A);$I[$p]=[(string)$A[1],Plugins::checksum($p)];}}return$I;}function official_design_checksums(){return['adminer-dark/adminer-dark.css'=>'a26bcd7b','brade/adminer.css'=>'be4161f0','bueltge/adminer.css'=>'1a8f00b4','cpanel/adminer.css'=>'59ce604e','dracula/adminer-dark.css'=>'cfaf61dd','esterka/adminer.css'=>'1f805f36','flat/adminer.css'=>'49a61af9','galkaev/adminer-dark.css'=>'16c46f94','haeckel/adminer.css'=>'147a3565','hever/adminer.css'=>'c9d1d11c','konya/adminer.css'=>'2b409696','lavender-light/adminer.css'=>'bf03f5d7','lucas-sandery/adminer.css'=>'6596353','mancave/adminer-dark.css'=>'d9169f12','mvt/adminer.css'=>'ebd3afdc','nette/adminer.css'=>'a8babfc5','ng9/adminer.css'=>'488583cf','nicu/adminer.css'=>'a38b3b6a','pappu687/adminer.css'=>'b58d128c','paranoiq/adminer.css'=>'64d27e5','pepa-linha/adminer.css'=>'baf25f0','pokorny/adminer.css'=>'ee9eea6d','price/adminer.css'=>'81be9a85','rmsoft/adminer.css'=>'6cd4a237','rmsoft_blue-dark/adminer.css'=>'32102a8','rmsoft_blue/adminer.css'=>'7d8d5b18','win98/adminer.css'=>'e82d63c3',];}function version_iframe(){return(isset($_COOKIE["adminer_version"])||!adminer()->verifyVersion()?"":"");}function get_nonce(){static$fi;if(!$fi)$fi=base64_encode(rand_string());return$fi;}function page_messages($m){$Pn=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$th=idx($_SESSION["messages"],$Pn);if($th){echo"
    ".implode("
    \n
    ",$th)."
    ".script("messagesPrint();");unset($_SESSION["messages"][$Pn]);}if($m)echo"
    $m
    \n";if(adminer()->error)echo"
    ".adminer()->error."
    \n";}function page_footer($Ah=""){echo"
    \n\n\n\n",script("setupSubmitHighlight(document);");}function int32($Kh){while($Kh>=2147483648)$Kh-=4294967296;while($Kh<=-2147483649)$Kh+=4294967296;return(int)$Kh;}function long2str(array$W,$mo){$Zk='';foreach($W as$X)$Zk .=pack('V',$X);if($mo)return substr($Zk,0,end($W));return$Zk;}function str2long($Zk,$mo){$W=array_values(unpack('V*',str_pad($Zk,4*ceil(strlen($Zk)/4),"\0")));if($mo)$W[]=strlen($Zk);return$W;}function xxtea_mx($yo,$xo,$nm,$ng){return int32((($yo>>5&0x7FFFFFF)^$xo<<2)+(($xo>>3&0x1FFFFFFF)^$yo<<4))^int32(($nm^$xo)+($ng^$yo));}function encrypt_string($hm,$x){if($hm=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($hm,true);$Kh=count($W)-1;$yo=$W[$Kh];$xo=$W[0];$ik=floor(6+52/($Kh+1));$nm=0;while($ik-->0){$nm=int32($nm+0x9E3779B9);$kd=$nm>>2&3;for($ej=0;$ej<$Kh;$ej++){$xo=$W[$ej+1];$Jh=xxtea_mx($yo,$xo,$nm,$x[$ej&3^$kd]);$yo=int32($W[$ej]+$Jh);$W[$ej]=$yo;}$xo=$W[0];$Jh=xxtea_mx($yo,$xo,$nm,$x[$ej&3^$kd]);$yo=int32($W[$Kh]+$Jh);$W[$Kh]=$yo;}return long2str($W,false);}function decrypt_string($hm,$x){if($hm=="")return"";if(!$x)return false;$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($hm,false);$Kh=count($W)-1;$yo=$W[$Kh];$xo=$W[0];$ik=floor(6+52/($Kh+1));$nm=int32($ik*0x9E3779B9);while($nm){$kd=$nm>>2&3;for($ej=$Kh;$ej>0;$ej--){$yo=$W[$ej-1];$Jh=xxtea_mx($yo,$xo,$nm,$x[$ej&3^$kd]);$xo=int32($W[$ej]-$Jh);$W[$ej]=$xo;}$yo=$W[$Kh];$Jh=xxtea_mx($yo,$xo,$nm,$x[$ej&3^$kd]);$xo=int32($W[0]-$Jh);$W[0]=$xo;$nm=int32($nm-0x9E3779B9);}return long2str($W,true);}$Ej=[];if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$Ej[$x]=$X;}}function add_invalid_login(){$Va=get_temp_dir()."/adminer-invalid";foreach(glob("$Va*")?:[$Va]as$p){$_e=file_open_lock($p);if($_e)break;}if(!$_e)$_e=file_open_lock("$Va-".rand_string());if(!$_e)return;$Zf=json_decode(stream_get_contents($_e),true);$Um=time();if($Zf){foreach($Zf as$ag=>$X){if($X[0]<$Um)unset($Zf[$ag]);}}$Xf=&$Zf[adminer()->bruteForceKey()];if(!$Xf)$Xf=[$Um+30*60,0];$Xf[1]++;file_write_unlock($_e,json_encode($Zf));}function check_invalid_login(array&$Ej){$Zf=[];foreach(glob(get_temp_dir()."/adminer-invalid*")as$p){$_e=file_open_lock($p);if($_e){$Zf=json_decode(stream_get_contents($_e),true);file_unlock($_e);break;}}$x=adminer()->bruteForceKey();$Xf=idx($Zf,$x,[]);$ei=($Xf[1]>29?$Xf[0]-time():0);if($ei>0){$m=lang(107,ceil($ei/60));if($_SERVER["HTTP_X_FORWARDED_FOR"]!=""&&$x==$_SERVER["REMOTE_ADDR"])$m .='
    '.lang(108,'login-reverse-proxy'," href='https://www.adminer.org/plugins/?version=".VERSION."'".target_blank());auth_error($m,$Ej,false);}}function password_required(){static$I;if($I===null){$I=(bool)get_session("password_required");if(!$I){$mc=adminer()->credentials();$I=!is_object(Driver::connect($mc[0],$mc[1],""));if($I)set_session("password_required",true);}}return$I;}function require_password_link($E){$Fh="".lang(109)."";if(!function_exists('password_hash'))return" $Fh";$Hj=($E!==null?$E:base64_encode(substr(hex2bin(rand_string()),0,12)));$ef=password_hash($Hj,PASSWORD_DEFAULT);$p="adminer-plugins.php";$Od=file_exists("adminer-plugins.php");if($Od)$Vf=($E!==null?lang(110,"$p"):lang(111,"$p","$Hj"));else{$p="";$Vf=($E!==null?lang(112,$p):lang(113,$p,"$Hj"));}$Lg="\tnew Adminer\\Password('".h($ef)."'),";$I="

    $Vf

    ".($Od?$Lg:"<?php\nreturn array(\n$Lg\n);")."

    $Fh ";return" ".lang(114)."

    ";}if(preg_match('~^[-\w$./]+$~',$_POST["password_less"])&&verify_token()){header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=adminer-plugins.php");echo"verifyLoginToken()||verify_token())){session_regenerate_id();$ho=$Ma["driver"];$N=$Ma["server"];$V=$Ma["username"];$E=(string)$Ma["password"];$k=$Ma["db"];set_password($ho,$N,$V,$E);$_SESSION["db"][$ho][$N][$V][$k]=true;if($Ma["permanent"]){$x=implode("-",array_map('base64_encode',[$ho,$N,$V,$k]));$ak=adminer()->permanentLogin(true);$Ej[$x]="$x:".base64_encode($ak?encrypt_string($E,$ak):"");cookie("adminer_permanent",implode(" ",$Ej));}if(!array_diff(array_keys($_POST),["auth","token"])||$ho!=DRIVER||$N!=SERVER||$V!==$_GET["username"]||$k!=DB)redirect(auth_url($ho,$N,$V,$k));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){Driver::disconnect();foreach(["pwds","db","dbs","queries"]as$x)set_session($x,null);unset_permanent($Ej);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(115).' '.lang(116," href='https://www.adminer.org/donation/'".target_blank()));}elseif($Ej&&!$_SESSION["pwds"]){session_regenerate_id();$ak=adminer()->permanentLogin();foreach($Ej as$x=>$X){list(,$Ab)=explode(":",$X);list($ho,$N,$V,$k)=array_map('base64_decode',explode("-",$x));set_password($ho,$N,$V,decrypt_string(base64_decode($Ab),$ak));$_SESSION["db"][$ho][$N][$V][$k]=true;}}function unset_permanent(array&$Ej){foreach($Ej as$x=>$X){list($ho,$N,$V,$k)=array_map('base64_decode',explode("-",$x));if($ho==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$k==DB)unset($Ej[$x]);}cookie("adminer_permanent",implode(" ",$Ej));}function auth_error($m,array&$Ej,$Yf=true){$El=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$El]||$_GET[$El])&&!$_SESSION["token"])$m=lang(117);elseif($Yf&&($E=get_password())!==null){restart_session();add_invalid_login();if($E===false)$m .=($m?'
    ':'').lang(118,target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);unset_permanent($Ej);}}if(!$_COOKIE[$El]&&$_GET[$El]&&ini_bool("session.use_only_cookies"))$m=lang(119);$jj=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$jj["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header(lang(51),$m,null);echo"
    \n","
    ";if(hidden_fields($_POST,["auth","token"]))echo"

    ".lang(120)."\n";echo input_token(),"

    \n";adminer()->loginForm();echo"
    \n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($Ej);page_header(lang(121),lang(122,implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$g='';if(isset($_GET["username"])&&is_string(get_password())){check_invalid_login($Ej);$mc=adminer()->credentials();$g=Driver::connect($mc[0],$mc[1],$mc[2]);if(is_object($g)){Db::$instance=$g;Driver::$instance=new Driver($g);if($g->flavor)save_settings(["vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)]);}}$Sg=null;if(!is_object($g)||($Sg=adminer()->login($_GET["username"],get_password()))!==true){$m=(is_string($g)?nl_br(h($g)):(is_string($Sg)?$Sg:lang(123))).(preg_match('~^ | $~',get_password())?'
    '.lang(124):'');auth_error($m,$Ej);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header(lang(106),lang(125));page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);$m='';if($_POST){if(!verify_token()){header("HTTP/1.1 403 Forbidden");$m=lang(125).' '.lang(126);}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){header("HTTP/1.1 413 Content Too Large");$m=lang(127,"post_max_size");if(isset($_GET["sql"]))$m .=' '.lang(128);}function print_select_result($H,$h=null,array$Ri=[],&$z=0,&$ld=false){$Ng=[];$w=[];$e=[];$T=[];$Xj=[];$pd=[];$_n=[];$I=[];$Ch=$ld;$ld=false;for($s=0;(!$z||$s<$z)&&is_array($J=$H->fetch_row());$s++){if(!$s){echo"
    \n","\n","";for($jg=0;$jgfetch_field();$B=$n->name;$R=(isset($n->table)?$n->table:"");$Qi=(isset($n->orgtable)?$n->orgtable:"");$Pi=(isset($n->orgname)?$n->orgname:$B);$zn=driver()->typeName($n);if($Ri&&JUSH=="sql")$Ng[$jg]=($B=="table"?"table=":($B=="possible_keys"?"indexes=":null));elseif($Qi!=""){$wa=($R!=""?$R:$Qi);if($R!="")$I[$R]=$Qi;if(!isset($w[$wa])){if(!isset($Xj[$Qi])){$Xj[$Qi]=[];foreach(indexes($Qi,$h)as$v){if($v["type"]=="PRIMARY"){$Xj[$Qi]=array_flip($v["columns"]);break;}}}$T[$wa]=$Qi;$w[$wa]=$Xj[$Qi];$e[$wa]=$Xj[$Qi];}if(isset($e[$wa][$Pi])){unset($e[$wa][$Pi]);$w[$wa][$Pi]=$jg;$Ng[$jg]=$wa;}elseif($Ch&&isset($n->orgname)&&$n->db==DB&&!is_blob(["type"=>$zn]))$pd[$jg]=[$wa,$Pi,preg_match('~text|json|lob~',$zn)];}$_n[$jg]=$zn;echo"\n";}$xf=[];foreach($w as$wa=>$v){if($v&&!$e[$wa]){$u="";foreach($v as$Fb=>$jg){if($J[$jg]===null){$u=null;break;}$u .="&where[".url_escape(bracket_escape($Fb))."]=".url_escape($J[$jg]);}$xf[$wa]=$u;}}echo"";foreach($J as$x=>$X){$_="";if(isset($Ng[$x])){if($Ri&&JUSH=="sql"){$R=$J[array_search("table=",$Ng)];$_=ME.$Ng[$x].url_escape($Ri[$R]!=""?$Ri[$R]:$R);}elseif(idx($xf,$Ng[$x])!==null)$_=ME."edit=".url_escape($T[$Ng[$x]]).$xf[$Ng[$x]];}$sf=select_value($X,$_,['type'=>(preg_match('~binary~',$_n[$x])?'blob':$_n[$x])],null);$c="";$mb=idx($pd,$x);if($mb&&idx($xf,$mb[0])!==null&&is_utf8($X)){$ld=true;$c=" data-name='".h("val[".bracket_escape($T[$mb[0]])."][".bracket_escape(substr($xf[$mb[0]],1))."][".bracket_escape($mb[1])."]")."' data-text='".($mb[2]?1:0)."'".(html_entity_decode(strip_tags($sf),ENT_QUOTES,"UTF-8")!==$X?" data-value='".h($X)."'":"");}echo"$sf";}}$z=$s;echo($s?"
    ".h($B).($Ri?doc_link(['sql'=>"explain-output.html#explain_".strtolower($B),'mariadb'=>"explain/#the-columns-in-explain-select",]):"");}foreach($pd as$jg=>$mb){if($e[$mb[0]])unset($pd[$jg]);}echo"
    \n
    ":"

    ".lang(22))."\n";return$I;}function textarea($B,$Y,$K=10,$Jb=80,$mg=JUSH,$Cd=0){echo"";}function select_input($c,array$Ki,$Y="",$Fj=""){if($Ki&&$Y!=""&&!isset($Ki[$Y]))$Ki=[$Y=>$Y]+$Ki;$Km=($Ki?"select":"input");return"<$Km$c".($Ki?">

    ".lang(147,get_driver(DRIVER),"".h(connection()->server_info)."","".connection()->extension."")."\n","

    ".lang(148,"".h(logged_user())."")."\n";$j=adminer()->databases();$ke=$_GET["filter"];if($ke!=""){foreach($j as$x=>$k){if(stripos($k,$ke)===false)unset($j[$x]);}}if($j){$dl=support("scheme");echo"

    \n","\n","".(support("database")?"\n";$j=($_GET["dbsize"]?count_tables($j):array_flip($j));foreach($j as$k=>$T){$Pk=h(preg_replace('~&db=[^&]*~','',ME))."db=".url_escape($k);$t=h("Db-".$k);echo"".(support("database")?"
    ":"")."".lang(17).(get_session("dbs")!==null?" - ".lang(149)."":"")."".lang(150)."".lang(151)."".lang(152)." - ".lang(153).""."
    ".checkbox("db[]",$k,in_array($k,(array)$_POST["db"]),"","","",$t):""),"".h($k)."";$Hb=h(db_collation($k,[]));echo"".(support("database")?"$Hb":$Hb),"".($_GET["dbsize"]?format_number($T):"?")."","".($_GET["dbsize"]?db_size($k):"?"),"\n";}echo"
    \n",(support("database")?"\n":""),input_token(),"
    \n",script("tableCheck();");}$qa=adminer();$Jj=($qa instanceof Plugins?$qa->plugins:[]);$dd=($qa instanceof Plugins?$qa->drivers:[]);$Oc=design_checksums();if($Jj||$dd||$Oc){$zb=($qa instanceof Plugins?$qa->checksums():[]);$pi=Plugins::officialChecksums();$Mn=function($Qn){return" (".VERSION.")";};$Ij=function($ge)use($zb,$pi,$Mn){return($zb[$ge]&&$pi[$ge]&&$zb[$ge]!==$pi[$ge]?$Mn("https://www.adminer.org/plugins/?version=".VERSION):"");};echo"
    \n","

    ".lang(156)."

    \n
      \n";foreach($Jj as$Gj){$yk=new \ReflectionObject($Gj);$Lc=Plugins::describe($Gj);echo"
    • ".h(Plugins::pluginName($Gj))."".($Lc!=""?": $Lc":"").$Ij(basename((string)$yk->getFileName(),'.php'))."\n";}foreach($dd as$t=>$B)echo"
    • ".h($t).": ".h($B).$Ij(basename((string)$qa->driverFiles[$t],'.php'))."\n";if($Oc){$ri=official_design_checksums();foreach($Oc as$p=>$Nc){list($B,$yb)=$Nc;$qi=$ri["$B/$p"];echo"
    • ".h($p)."".h($B?": $B":"").($qi&&$qi!==$yb?$Mn("https://www.adminer.org/?version=".VERSION."#extras"):"")."\n";}}echo"
    \n";adminer()->pluginsLinks();echo"
    \n";}}page_footer("db");exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~&db=[^&]+~','\0&ns='.url_escape(get_schema()),relative_uri()));if(!set_schema($_GET["ns"]))page_header(lang(16).h(": $_GET[ns]"),adminer()->error(),true,"","ns");}}adminer()->afterConnect();class TmpFile{private$handler;var$size=0;function __construct(){$this->handler=tmpfile();}function write($cc){$this->size+=strlen($cc);fwrite($this->handler,$cc);}function send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if($_GET["select"]!=""&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$o=fields($a);header("Content-Type: application/octet-stream");$fo=array_merge((array)$_GET["where"],(array)$_GET["val"]);header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$fo)).".".friendly_url($_GET["field"]));$M=[idf_escape($_GET["field"])];$H=driver()->select($a,$M,[where($_GET,$o)],$M);$J=($H?$H->fetch_row():[]);echo driver()->value($J[0],$o[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$o=fields($a);if(!$o)$m=adminer()->error();$S=table_status1($a);$B=adminer()->tableName($S);$m=$m?:h($S["Error"]);page_header(($o&&is_view($S)?$S['Engine']=='materialized view'?lang(157):lang(158):lang(159)).": ".($B!=""?$B:h($a)),$m,[],"",!$o,($o?doc_link([JUSH=>driver()->tableHelp($a,is_view($S))]):""));$Ok=[];foreach($o as$x=>$n)$Ok+=$n["privileges"];adminer()->selectLinks($S,(isset($Ok["insert"])||!support("table")?"":null));$f=$S["Comment"];if($f!="")echo"

    ".lang(65).": ".adminer()->commentValue('TABLE',$f)."\n";if($o)adminer()->tableStructurePrint($o,$S);function tables_links(array$T){echo"

    \n";}$Of=driver()->inheritsFrom($a);if($Of){echo"

    ".lang(160)."

    \n";tables_links($Of);}if(support("indexes")&&driver()->supportsIndex($S)){echo"
    \n","

    ".lang(161)."

    \n";$w=indexes($a);if($w)adminer()->tableIndexesPrint($w,$S);if(driver()->supportsAlterIndex($S))echo'
    \n";}if(!is_view($S)&&driver()->supportsAlterTable($S)){if(fk_support($S)){echo"
    \n","

    ".lang(129)."

    \n";$we=foreign_keys($a);$Aa=function_exists('Adminer\alter_table');if($we){echo"\n","\n";foreach($we as$B=>$q){echo"","
    ".lang(163)."".lang(164)."".lang(132)."".lang(131).($Aa?"":"")."
    ".implode(", ",array_map('Adminer\h',$q["source"]))."";$_=($q["db"]!=""?preg_replace('~&db=[^&]*~',"&db=".url_escape($q["db"]),ME):($q["ns"]!=""?preg_replace('~&ns=[^&]*~',"&ns=".url_escape($q["ns"]),ME):ME));echo"".($q["db"]!=""&&$q["db"]!=DB?"".h($q["db"]).".":"").($q["ns"]!=""&&$q["ns"]!=$_GET["ns"]?"".h($q["ns"]).".":"").h($q["table"])."","(".implode(", ",array_map('Adminer\h',$q["target"])).")","".h($q["on_delete"]),"".h($q["on_update"]),($Aa?''.lang(165).'':''),"\n";}echo"
    \n";}echo($Aa?'
    \n";}if(support("check")){echo"
    \n","

    ".lang(167)."

    \n";$ub=driver()->checkConstraints($a);if($ub){echo"\n";foreach($ub as$x=>$X)echo"","
    ".shorten_utf8(preg_replace('~\s+~',' ',ltrim($X)),80,""),"".lang(165)."","\n";echo"
    \n";}echo'
    \n";}}if(support(is_view($S)?"view_trigger":"trigger")&&driver()->supportsAlterTable($S)){echo"
    \n","

    ".lang(169)."

    \n";$tn=triggers($a);if($tn){echo"\n";foreach($tn as$x=>$X){echo"
    ".h($X[0])."".h($X[1])."".h($x)."".lang(165)."";$Qk=$X[2];if($Qk){$Sk=preg_replace('~&ns=[^&]*~',"&ns=".url_escape($Qk["ns"]),ME).'function='.url_escape($Qk["function"]).'&name='.url_escape($Qk["name"]);echo", ".lang(170)."";}echo"\n";}echo"
    \n";}echo'
    \n";}$Hl=driver()->shadowTables($a);if($Hl){echo"

    ".lang(172)."

    \n";tables_links($Hl);}$Nf=driver()->inheritedTables($a);if($Nf){echo"

    ".lang(173)."

    \n";$oj=driver()->partitionsInfo($a);if($oj)echo"

    BY ".h("$oj[partition_by]($oj[partition])")."\n";tables_links($Nf);}}elseif(isset($_GET["schema"])){page_header(lang(84),"",[],h(DB.($_GET["ns"]?".$_GET[ns]":"")));function schema_column($R,array$xk,array&$e){if(!isset($e[$R])){$e[$R]=0;foreach((array)idx($xk,$R)as$B=>$zk){if($B!=$R)$e[$R]=max($e[$R],schema_column($B,$xk,$e)+1);}}return$e[$R];}function type_class($U){foreach(['char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',]as$x=>$X){if(preg_match("~$x|$X~",$U))return" class='$x'";}}$Bm=[];$Dm=[];$Cm=[];$de=[];$da=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$da,$Xg,PREG_SET_ORDER);foreach($Xg as$s=>$A){$Bm[$A[1]]=[(float)$A[2],(float)$A[3]];$Dm[]="\n\t'".js_escape($A[1])."': [ $A[2], $A[3] ]";}$L=[];$xk=[];$we=[];$za=driver()->allFields();$kf=[];$Em=[];foreach(table_status('',true)as$R=>$S){if(!is_view($S)){if(adminer()->tableName($S)!=""&&!$S["dependent"])$Em[$R]=$S;else$kf[$R]=true;}}foreach($Em as$R=>$S){$F=0;$L[$R]["fields"]=[];foreach($za[$R]as$n){$F+=1.25;$de[$R][$n["field"]]=$F;$L[$R]["fields"][$n["field"]]=$n;}foreach(adminer()->foreignKeys($R)as$X){if($X["db"]==""&&$X["ns"]==""&&!$kf[$X["table"]]){$we[$R][]=$X;$xk[$X["table"]][$R]=[];}}}$e=[];$Ne=[];$vo=[];$Ue=[];foreach(array_keys($L)as$B)schema_column($B,$xk,$e);arsort($e);foreach($e as$B=>$d){$zh=null;foreach((array)idx($we,$B)as$X){if($X["table"]!=$B&&$L[$X["table"]])$zh=($zh===null?$e[$X["table"]]:min($zh,$e[$X["table"]]));}$e[$B]=max($d,(int)$zh-1);}$Gm=[];foreach($L as$B=>$R){$d=$e[$B];$Ne[$d][]=$B;$Tm=.75*strlen($B);foreach($R["fields"]as$n)$Tm=max($Tm,.65*strlen($n["field"]));$Gm[$B]=ceil($Tm)+1;$vo[$d]=max(idx($vo,$d,0),$Gm[$B]);}foreach($we as$B=>$eo){foreach($eo as$X){$Te=$e[$B]+(idx($e,$X["table"],$e[$B])>$e[$B]?1:0);$Ue[$Te]=idx($Ue,$Te,0)+1;}}ksort($Ne);$if=0;$uo=0;$Kb=0;$Vj=null;$ym=[];foreach($Ne as$d=>$T){if($Vj!==null){$Kb=round($Kb+$vo[$Vj]+1.7+idx($Ue,$d,0)*.1,1);$Ni=[];foreach($T as$B){$nm=0;$jc=0;$Sh=array_keys((array)idx($xk,$B));foreach((array)idx($we,$B)as$X)$Sh[]=$X["table"];foreach($Sh as$Lh){if($L[$Lh]&&$e[$Lh]<$d){$nm+=$L[$Lh]["pos"][0];$jc++;}}$Ni[$B]=($jc?$nm/$jc:$if);}asort($Ni);$T=array_keys($Ni);}$en=0;foreach($T as$B){$F=1.25*count($L[$B]["fields"]);$L[$B]["pos"]=($Bm[$B]?:[$en,$Kb]);$ym[$B]=$L[$B]["pos"][1];$en+=2.5+$F;$if=max($if,$L[$B]["pos"][0]+2.5+$F);$uo=max($uo,round($L[$B]["pos"][1]+$vo[$d],1));if(!$Bm[$B])$Cm[]="\n\t'".js_escape($B)."': [ ".$L[$B]["pos"][0].", ".$L[$B]["pos"][1]." ]";}$Vj=$d;}$Eg=[];$Wa=[];foreach($we as$B=>$eo){foreach($eo as$X){$Mm=idx($ym,$X["table"],$ym[$B]);$Sl=$ym[$B]+$vo[$e[$B]];$Nk=($Mm-1>$Sl);$Cg=($Nk?$Sl+1:min($ym[$B],$Mm)-1);$Va=idx($Wa,(string)$Cg,0);$Wa[(string)$Cg]=$Va+1;$Cg=round($Nk?min($Cg+$Va*.1,$Mm-1):$Cg-$Va*.1,1);while($Eg[(string)$Cg])$Cg-=.0001;$L[$B]["references"][$X["table"]][(string)$Cg]=[$X["source"],$X["target"]];$xk[$X["table"]][$B][(string)$Cg]=$X["target"];$Eg[(string)$Cg]=true;}}echo'

    const tablePos = {',implode(",",$Dm)."\n",'}; const tablePosDefault = {',implode(",",$Cm)."\n",'}; const em = qs(\'#schema\').offsetHeight / ',$if,'; document.onmousemove = schemaMousemove; document.onmouseup = event => schemaMouseup(event, \'',js_escape(DB),'\'); ';foreach($L as$B=>$R){echo"
    ",''.h($B)."";foreach($R["fields"]as$n){$X=''.h($n["field"]).'';echo"
    ".($n["primary"]?"$X":$X);}foreach((array)$R["references"]as$Nm=>$zk){foreach($zk as$Cg=>$uk){$Dg=$Cg-$R["pos"][1];$km=($Dg>0?"left: 100%; width: calc($Dg"."em - 100%)":"left: $Dg"."em");$uo=($Dg>0?"100%":(-$Dg)."em");$s=0;foreach($uk[0]as$Rl)echo"\n
    "."
    ";}}foreach((array)$xk[$B]as$Nm=>$zk){foreach($zk as$Cg=>$Om){$Dg=$Cg-$R["pos"][1];$s=0;foreach($Om as$Lm)echo"\n
    "."
    "."
    ";}}echo"\n
    \n";}foreach($L as$B=>$R){foreach((array)$R["references"]as$Nm=>$zk){if($L[$Nm]){foreach($zk as$Cg=>$uk){$_h=$if;$fh=-10;foreach($uk[0]as$x=>$Rl){$Lj=$R["pos"][0]+$de[$B][$Rl];$Mj=$L[$Nm]["pos"][0]+$de[$Nm][$uk[1][$x]];$_h=min($_h,$Lj,$Mj);$fh=max($fh,$Lj,$Mj);}echo"
    \n";}}}}echo'
    ';$zc=['','USE','DROP+CREATE','CREATE'];$bl=(JUSH=="mssql"?['','DROP+CREATE','CREATE']:$zc);$Fm=['','DROP+CREATE','CREATE'];$uc=['','TRUNCATE+INSERT','INSERT'];if(JUSH=="sql")$uc[]='INSERT+UPDATE';$J=get_settings("adminer_export");if(!$J)$J=["output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"schema_style"=>"","table_style"=>"DROP+CREATE","data_style"=>"INSERT"];echo"
    ".lang(175)."".html_radios("output",adminer()->dumpOutput(),$J["output"])."\n","
    ".lang(176)."".html_radios("format",adminer()->dumpFormat(),$J["format"])."\n",(JUSH=="sqlite"?"":"
    ".lang(17)."".html_select('db_style',$zc,$J["db_style"]).(support("type")?checkbox("types",1,$J["types"],lang(0)):"").(support("routine")?checkbox("routines",1,$J["routines"],lang(86)):"").(support("event")?checkbox("events",1,$J["events"],lang(88)):"")),(function_exists('Adminer\use_schema_sql')?"
    ".lang(16)."".html_select('schema_style',$bl,$J["schema_style"]):""),"
    ".lang(151)."".html_select('table_style',$Fm,$J["table_style"]).checkbox("auto_increment",1,$J["auto_increment"],lang(66)).(support("trigger")?checkbox("triggers",1,$J["triggers"],lang(169)):""),"
    ".lang(177)."".html_select('data_style',$uc,$J["data_style"]),'
    ';adminer()->dumpPrint();echo'

    ',input_token(),' ';$Tj=[];if($_GET["ns"]===""&&support("scheme")){echo"","","\n";foreach(adminer()->schemas()as$L){if(!information_schema(DB,$L))echo"".checkbox("schemas[]",$L,true,$L,"","block")."\n";}}elseif(DB!=""){$wb=($a!=""?"":" checked");echo"","","","\n";$ko="";$Im=tables_list();foreach($Im as$B=>$U){$Sj=preg_replace('~_.*~','',$B);$wb=($a==""||$a==(substr($a,-1)=="%"?"$Sj%":$B));$Zj="".checkbox("tables[]",$B,$wb,$B,"","block");if($U!==null&&!preg_match('~table~i',$U))$ko .="$Zj\n";else echo"$Zj\n";$Tj[$Sj]++;}echo$ko;if($Im)echo script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{$j=adminer()->databases();echo"","","\n";if($j){foreach($j as$k){if(!information_schema($k)){$Sj=preg_replace('~_.*~','',$k);echo"".checkbox("databases[]",$k,$a==""||$a=="$Sj%",$k,"","block")."\n";$Tj[$Sj]++;}}}else echo"";}echo' ';$me=true;foreach($Tj as$x=>$X){if($x!=""&&$X>1){echo($me?"

    ":" ")."".h($x)."";$me=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(85));echo'

    \n";hidden_fields_get();echo input_hidden("db",DB),($Le?"":input_hidden("grant")),"\n","\n";while($J=$H->fetch_assoc())echo'
    ".lang(49)."".lang(47)."
    '.h($J["User"]),"".h($J["Host"]),''.lang(20)."\n";if(!$Le||DB!="")echo"
    ","","\n";echo"
    \n","

    \n";}elseif(isset($_GET["sql"])){if(!$m&&$_POST["export"]){save_settings(["output"=>$_POST["output"],"format"=>$_POST["format"]],"adminer_import");dump_headers("sql");if($_POST["format"]=="sql")echo"$_POST[query]\n";else{adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();}exit;}if(!$m&&$_POST["val"]){$ta=0;$lm=true;$nb=[];$Yk=0;foreach($_POST["val"]as$K)$Yk+=count($K);$Ya=$Yk>1&&driver()->begin();foreach($_POST["val"]as$wm=>$K){$R=bracket_escape($wm,true);$o=fields($R);$xm=indexes($R);foreach($K as$u=>$J){parse_str(bracket_escape($u,true),$Z);$Dn=[];foreach($Z["where"]as$x=>$X)$Dn[bracket_escape($x,true)]=$X;if(!$o||$Z["null"]||array_diff_key($Dn,$o)||!unique_array($Dn,$xm)){$lm=false;break 2;}$O=[];$M=[];foreach($J as$og=>$X){$x=bracket_escape($og,true);$n=idx($o,$x);if(!$n){$lm=false;break 3;}$O[idf_escape($x)]=(preg_match('~char|text~',$n["type"])||$X!=""?adminer()->processInput($n,$X):"NULL");$M[$og]=$x;}$ok=where($Z,$o);if(!driver()->update($R,$O," WHERE $ok",0," ")){$lm=false;break 2;}$ta+=connection()->affected_rows;$e=[];foreach($M as$x)$e[]=idf_escape($x);$Nn=driver()->select($R,$e,[$ok],$e);$Zh=($Nn?$Nn->fetch_row():[]);$jg=0;foreach($M as$og=>$x){$n=$o[$x];$jm=['type'=>(preg_match('~binary~',$n["type"])?'blob':$n["type"])];$nb["val[$wm][$u][$og]"]=select_value(idx($Zh,$jg++),"",$jm,null);}}}if($Ya&&$lm)$lm=driver()->commit();queries_redirect(null,lang(180,$ta),$lm);if($Ya&&!$lm)driver()->rollback();page_headers();page_messages($m);foreach($nb as$B=>$X)echo"\n";exit;}restart_session();$of=&get_session("queries");$nf=&$of[DB];if(!$m&&$_POST["clear"]){$nf=[];redirect(remove_from_uri("history"));}stop_session();$ra=get_settings("adminer_import");if($_POST&&$ra)save_settings($ra,"adminer_import");page_header((isset($_GET["import"])?lang(89):lang(78)),$m);$Mg=driver()->lineComment();$Cd=0;function query_error_line($Rm,$C,$G,$Lg){return substr_count(substr($Rm,0,$C),"\n")+($Lg?:substr_count(substr($G,0,strspn($G," \t\r\n")),"\n")+1);}if(!$m&&$_POST&&!(isset($_GET["import"])&&adminer()->importProcess())){$Ic=driver()->delimiter;$_e=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$Wl=adminer()->importServerPath();$_e=@fopen((file_exists($Wl)?$Wl:"compress.zlib://$Wl.gz"),"rb");$G=($_e?fread($_e,1e6):false);}else$G=get_file("sql_file",true,$Ic);if(is_string($G)){if(($nh=ini_bytes("memory_limit"))!="-1")ini_set("memory_limit",max($nh,strval(2*strlen($G)+memory_get_usage()+8e6)));if($G!=""&&strlen($G)<1e6){$ik=$G.(preg_match("~$Ic\\s*\$~",$G)?"":$Ic);if(!$nf||first(end($nf))!=$ik){restart_session();$nf[]=[$ik,time()];set_session("queries",$of);stop_session();}}$Tl="(?:\\s|\xEF\xBB\xBF|/\\*[\s\S]*?\\*/|(?:$Mg)[^\n]*\n?|--\r?\n)";$C=0;$mk=0;$ud=true;$ic=false;$uh=false;$h=connect();if($h&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$Mb=0;$Ed=[];$lj='[\'"'.(JUSH=="sql"?'`':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$Mg.'|$'.(JUSH=="pgsql"?'|\$([a-zA-Z]\w*)?\$':'');$gn=microtime(true);while($G!=""){if(!$C&&preg_match("~^$Tl*+DELIMITER\\s+(\\S+)~i",$G,$A)){$Ic=preg_quote($A[1]);$G=substr($G,strlen($A[0]));$mk+=strlen($A[0]);}elseif(!$C&&JUSH=='pgsql'&&preg_match("~^($Tl*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$G,$A)){$Ic="\n\\\\\\.\r?\n";$ic=true;$C=strlen($A[0]);}elseif(!$C&&JUSH=='pgsql'&&preg_match("~^$Tl*+\\\\connect[ \t][^\n]*~",$G,$A)){$Ic="\n";$uh=true;$C=strlen($A[0]);}else{preg_match("($Ic\\s*|$lj)",$G,$A,PREG_OFFSET_CAPTURE,$C);list($ye,$F)=$A[0];if(!$ye&&$_e&&!feof($_e))$G .=fread($_e,1e5);else{if(!$ye&&rtrim($G)=="")break;$C=$F+strlen($ye);if($ye&&!preg_match("(^$Ic)",$ye)){$ib=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($F>0&&strtolower($G[$F-1])=="e"));$Bj=($ye=='/*'?'\*/':($ye=='['?']':(preg_match("~^(?:$Mg)~",$ye)?"\n":preg_quote($ye).($ib?'|\\\\.':''))));while(preg_match("($Bj|\$)s",$G,$A,PREG_OFFSET_CAPTURE,$C)){$Zk=$A[0][0];if(!$Zk&&$_e&&!feof($_e))$G .=fread($_e,1e5);else{$C=$A[0][1]+strlen($Zk);if(!$Zk||$Zk[0]!="\\")break;}}}else{$ik=substr($G,0,$F+($ic?3:0));$G=substr($G,$C);$jk=$mk;$mk+=$C;$C=0;if($ic||$uh){$Ic=driver()->delimiter;$ic=false;$uh=false;}$Eb="".adminer()->sqlCommandQuery($ik)."";if(preg_match("~^$Tl*+\$~",$ik)&&!preg_match('~/\*M?!~',$ik)){echo($_POST["only_errors"]?"":"
    $Eb
    \n");continue;}$ud=false;$Mb++;$Zj="
    $Eb
    \n";if(JUSH=="sqlite"&&preg_match("~^$Tl*+(ATTACH|VACUUM\\b.*\\bINTO)\\b~is",$ik,$A)!==0){echo$Zj,"

    ".lang(181,preg_match('~ATTACH~i',$A[1])?'ATTACH':'VACUUM INTO')."\n";$Ed[]=" $Mb";if(!$Cd&&!isset($_GET["import"]))$Cd=query_error_line($_POST["query"],$jk,$ik,0);if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Zj;ob_flush();flush();}$cm=microtime(true);if(JUSH=="pgsql"&&preg_match("~^$Tl*+\\\\connect\\s+(\"(?:[^\"]|\"\")+\"|[^\\s\";]+)\\s*;*\\s*\$~",$ik,$A)){$k=idf_unescape($A[1]);if(connection()->select_db($k)){if($h)$h->select_db($k);echo($_POST["only_errors"]?"":"

    ".lang(17).": ".h($k)." (".format_time($cm).")\n");continue;}}elseif(connection()->multi_query($ik)&&$h&&preg_match("~^$Tl*+USE\\b~i",$ik))$h->query($ik);do{$H=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$Zj:""),"

    ".lang(182).(connection()->errno?" (".connection()->errno.")":"").": ".adminer()->error()."\n";$Ed[]=" $Mb";if(!$Cd&&!isset($_GET["import"]))$Cd=query_error_line($_POST["query"],$jk,$ik,driver()->errorLine($ik));if($_POST["error_stops"])break 2;}else{$_=ME."sql=".url_escape(trim($ik));$Um=" (".format_time($cm).")".(strlen($_)sqlUrlLength()-100?" ".lang(20)."":"");$ta=connection()->affected_rows;$oo=($_POST["only_errors"]?"":driver()->warnings());$po="warnings-$Mb";if($oo)$Um .=", ".lang(61)."";$Pd="";$Qd="explain-$Mb";if(is_object($H)){$z=$_POST["limit"];$ji=$z;$ld=!$_POST["only_errors"];if($ld)echo"

    \n";$Ri=print_select_result($H,$h,[],$ji,$ld);if(!$_POST["only_errors"]){$ji=max($H->num_rows,$ji);echo"
    \n";}}else{if(preg_match("~^$Tl*+(CREATE|DROP|ALTER)$Tl++(DATABASE|SCHEMA)\\b~i",$ik)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"

    ".lang(186,$ta)."$Um\n";}echo($oo?"

    \n":""),($Pd!=""?"\n":"");}$cm=microtime(true);}while(connection()->next_result());}}}}}if($ud)echo"

    ".lang(187)."\n";else{$Cf=connection()->inTransaction();driver()->rollback();if($Cf)echo"

    ROLLBACK".(JUSH=="mssql"?" TRANSACTION":"")." -- Adminer
    \n";if($_POST["only_errors"])echo"

    ".lang(188,$Mb-count($Ed))," (".format_time($gn).")\n";elseif($Ed&&$Mb>1)echo"

    ".lang(182).": ".implode("",$Ed)."\n";}}else echo"

    ".upload_error($G)."\n";}echo'

    sqlUrlLength());else echo on_upload_progress($On);echo'> ';$Md="";if(!isset($_GET["import"])){$ik=$_GET["sql"];if($_POST)$ik=$_POST["query"];elseif($_GET["history"]=="all")$ik=$nf;elseif($_GET["history"]!="")$ik=idx($nf[$_GET["history"]],0);echo"

    ";textarea("query",$ik,20,80,JUSH,$Cd);echo($_POST?"":script("qs('textarea').focus();")),"

    ";adminer()->sqlPrintAfter();echo"$Md\n",lang(190).": \n";}else{$Ve=(extension_loaded("zlib")?"[.gz]":"");echo"

    ".lang(191)."
    ",($On?input_hidden(ini_get("session.upload_progress.name"),$On):""),"SQL$Ve: ".file_input(" name='sql_file[]' multiple","\n$Md"),($On?" ":""),"
    \n";$_f=adminer()->importServerPath();if($_f)echo"
    ".lang(192)."
    ",lang(193,"".h($_f)."$Ve")," ","
    \n";adminer()->importPrint();echo"

    ";}echo checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(195))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(196))."\n",input_token();if(!isset($_GET["import"])&&$nf){print_fieldset("history",lang(197),$_GET["history"]!="");for($X=end($nf);$X;$X=prev($nf)){$x=key($nf);list($ik,$Um,$qd)=$X;echo'

    '.lang(20).""." ".@date("H:i:s",$Um).""." ".shorten_utf8(preg_replace('~\s+~',' ',ltrim(preg_replace("~^(?:$Mg).*~m",'',$ik))),80,"").($qd?" ($qd)":"")."
    \n";}echo"\n","".lang(199)."\n","\n";}echo'
    ';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$o=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$o):""):where($_GET,$o));$Ln=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($o as$B=>$n){if((!$Ln&&!isset($n["privileges"]["insert"]))||adminer()->fieldName($n)=="")unset($o[$B]);}if($_POST&&!$m&&!isset($_GET["select"])){$Rg=relative_uri((string)$_POST["referer"]);if($_POST["insert"])$Rg=($Ln?null:relative_uri());elseif(!preg_match('~^.+&select=.+$~',$Rg))$Rg=ME."select=".url_escape($a);$w=indexes($a);$En=unique_array($_GET["where"],$w);$ok="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($Rg,lang(200),driver()->delete($a,$ok,$En?0:1));else{$O=[];foreach($o as$B=>$n){$X=process_input($n);if($X!==false&&$X!==null)$O[idf_escape($B)]=$X;}if($Ln){if(!$O)redirect($Rg);queries_redirect($Rg,lang(201),driver()->update($a,$O,$ok,$En?0:1));if(is_ajax()){page_headers();page_messages($m);exit;}}else{$H=driver()->insert($a,$O);$Bg=($H?last_id($H):0);queries_redirect($Rg,lang(202,($Bg?" $Bg":"")),$H);}}}$J=null;$G="";$Um="";if($Z){$M=[];$ml=["*"];foreach($o as$B=>$n){if(isset($n["privileges"]["select"])){$Ha=($_POST["clone"]&&$n["auto_increment"]?"''":convert_field($n));$d=($Ha?"$Ha AS ":"").idf_escape($B);$M[]=$d;if($Ha)$ml[]=$d;}}$J=[];if(!support("table")){$M=["*"];$ml=$M;}if($M){$cm=microtime(true);$H=driver()->select($a,$M,[$Z],$M,[],(isset($_GET["select"])?2:1));$G=str_replace("SELECT ".implode(", ",$M),"SELECT ".implode(", ",$ml),driver()->query);$Um=format_time($cm);if(!$H)$m=adminer()->error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!$o&&driver()->primary!=""){if(!$Z){$H=driver()->select($a,["*"],[],["*"]);$J=($H?$H->fetch_assoc():false);if(!$J)$J=[driver()->primary=>""];}if($J){foreach($J as$x=>$X){if(!$Z)$J[$x]=null;$o[$x]=["field"=>$x,"null"=>($x!=driver()->primary),"auto_increment"=>($x==driver()->primary)];}}}if($_POST["save"]){$Nj=[];foreach((array)$_POST["fields"]as$x=>$X)$Nj[bracket_escape($x,true)]=$X;$J=$Nj+($J?$J:[]);}edit_form($a,$o,$J,$Ln,$m,$G,$Um);}elseif(isset($_GET["create"])){function referencable_primary($pl){$I=[];foreach(table_status('',true)as$_m=>$R){if($_m!=$pl&&!$R["dependent"]&&fk_support($R)){foreach(fields($_m)as$n){if($n["primary"]){if($I[$_m]){unset($I[$_m]);break;}$I[$_m]=$n;}}}}return$I;}$a=$_GET["create"];$qj=driver()->partitionBy;$vj=($qj&&$a!=""?driver()->partitionsInfo($a):[]);$wk=referencable_primary($a);$we=[];foreach($wk as$_m=>$n)$we[str_replace("`","``",$_m)."`".str_replace("`","``",$n["field"])]=$_m;$Vi=[];$S=[];$gi=false;if($a!=""){$Vi=fields($a);$S=table_status1($a);$gi=(count($S)<2);}$Aa=($a==""||driver()->supportsAlterTable($S));$J=$_POST;$J["fields"]=(array)$J["fields"];if($J["auto_increment_col"])$J["fields"][$J["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!$m)save_settings(["comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]]);if($_POST&&!process_fields($J["fields"])&&!$m){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(203),drop_tables([$a]));else{$o=[];$za=[];$Sn=false;$ue=[];$Ui=reset($Vi);$va=" FIRST";foreach($J["fields"]as$n){$q=$we[$n["type"]];$wn=($q!==null?$wk[$q]:$n);if($n["field"]!=""){if(!$n["generated"])$n["default"]=null;$n["default_sql"]=($n["generated"]=="DEFAULT SQL");$ek=process_field($n,$wn);$za[]=[$n["orig"],$ek,$va];if(!$Ui||$ek!==process_field($Ui,$Ui)){$o[]=[$n["orig"],$ek,$va];if($n["orig"]!=""||$va||(JUSH=="sqlite"&&$n["comment"]!=""))$Sn=true;}if($q!==null)$ue[idf_escape($n["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(['table'=>$we[$n["type"]],'source'=>[$n["field"]],'target'=>[$wn["field"]],'on_delete'=>$n["on_delete"],],object_name("FOREIGN",trim($J["name"]),[$n["field"]]));$va=" AFTER ".idf_escape($n["field"]);}elseif($n["orig"]!=""){$Sn=true;$o[]=[$n["orig"]];}if($n["orig"]!=""){$Ui=next($Vi);if(!$Ui)$va="";}}$tj=[];if(in_array($J["partition_by"],$qj)){foreach($J as$x=>$X){if(preg_match('~^partition~',$x))$tj[$x]=$X;}foreach($tj["partition_names"]as$x=>$B){if($B==""){unset($tj["partition_names"][$x]);unset($tj["partition_values"][$x]);}}$tj["partition_names"]=array_values($tj["partition_names"]);$tj["partition_values"]=array_values($tj["partition_values"]);if($tj==$vj)$tj=[];}elseif(preg_match("~partitioned~",$S["Create_options"]))$tj=null;$ph=lang(204);if($a==""){cookie("adminer_engine",$J["Engine"]);$ph=lang(205);}$B=trim($J["name"]);$Rg=ME.(support("table")?"table=":"select=").url_escape($B);$f=($J["Comment"]!=$S["Comment"]?$J["Comment"]:null);$xd=($J["Engine"]&&$J["Engine"]!=$S["Engine"]?$J["Engine"]:"");$H=alter_table($a,$B,(JUSH=="sqlite"&&($Sn||$ue||$f!==null||$xd)?$za:$o),$ue,$f,$xd,($J["Collation"]&&$J["Collation"]!=$S["Collation"]?$J["Collation"]:""),($J["Auto_increment"]!=""?number($J["Auto_increment"]):""),$tj);if($H&&!Queries::$queries&&$a!=""&&!$o&&!$ue)redirect($Rg);queries_redirect($Rg,$ph,$H);}}$em=($a!=""?"alter":"create");page_header(($a!=""?lang(59):lang(91)),$m,["table"=>$a],h($a),$gi,doc_link(['sql'=>"$em-table.html",'mariadb'=>($a!=""?"$em-table":""),'pgsql'=>"sql-$em"."table.html",'cockroach'=>"$em-table",'mssql'=>"t-sql/statements/$em-table-transact-sql",'sqlite'=>"lang_{$em}table.html",'oracle'=>"sqlrf/".strtoupper($em)."-TABLE.html",]));if(!$_POST){$_n=driver()->types();$J=["Engine"=>$_COOKIE["adminer_engine"],"fields"=>[["field"=>"","type"=>(isset($_n["int"])?"int":(isset($_n["integer"])?"integer":"")),"on_update"=>""]],"partition_names"=>[""],];if($a!=""){$J=$S;$J["name"]=$a;$J["fields"]=[];if(!$_GET["auto_increment"])$J["Auto_increment"]="";foreach($Vi as$n){if($n["generated"])$n["default"]=ltrim($n["default"]);$n["generated"]=$n["generated"]?:(isset($n["default"])?($n["default_sql"]?"DEFAULT SQL":"DEFAULT"):"");$J["fields"][]=$n;}if($qj){$J+=$vj;$J["partition_names"][]="";$J["partition_values"][]="";}}}$Ib=flat_collations();$yd=driver()->engines();foreach($yd as$xd){if(!strcasecmp($xd,$J["Engine"])){$J["Engine"]=$xd;break;}}$ah=max_input_vars(12,20);if($ah){$kf=(count($J["fields"])>$ah?"":" hidden");echo"".max_input_vars_error()."\n";}echo'

    ';if(support("columns")||$a==""){echo lang(206).": \n",(!$Aa?h($S["Engine"])."\n":($yd?html_select("Engine",[""=>"(".lang(207).")"]+$yd,$J["Engine"],on('change','helpClose').on_help_value())."\n":""));if($Ib)echo"".optionlist($Ib)."\n",(preg_match("~sqlite|mssql~",JUSH)?"":"\n");echo"\n";}if(support("columns")&&$Aa){echo"

    \n","\n";edit_fields($J["fields"],$Ib,"TABLE",$we);echo"
    \n",script("editFields();"),"
    \n

    \n",lang(66).": \n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),lang(208),on('click','columnShowClick',6),"jsonly");$Pb=($_POST?$_POST["comments"]:get_setting("comments"));if(support("comment")){echo checkbox("comments",1,$Pb,lang(65),on('click','editingCommentsClick',true),"jsonly").' ';$c=" name='Comment' data-maxlength='".(min_version(5.5)?2048:60)."'".($Pb?"":" class='hidden'");echo adminer()->commentInput('TABLE',$c,$J["Comment"]);}echo'

    ';}echo' ';if($a!="")echo' ';if($qj&&(JUSH=='sql'||$a=="")){$rj=preg_match('~RANGE|LIST~',$J["partition_by"]);print_fieldset("partition",lang(210),$J["partition_by"]);echo"

    ".html_select("partition_by",array_merge([""],$qj),$J["partition_by"],on('change','partitionByChange').on_help_value('.','PARTITION BY $&'))."\n","()\n",lang(211).": \n","\n","\n";foreach($J["partition_names"]as$x=>$X)echo'','\n\n";}echo input_token(),'

    ';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$If=["PRIMARY","UNIQUE","INDEX"];$S=table_status1($a,true);$Ff=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$If[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$If[]="SPATIAL";if(min_version('',11.7)&&preg_match('~MyISAM|InnoDB~i',$S["Engine"]))$If[]="VECTOR";$w=indexes($a);$o=fields($a);$Xj=[];if(JUSH=="mongo"){$Xj=$w["_id_"];unset($If[0]);unset($w["_id_"]);}$J=$_POST;if($J)save_settings(["index_options"=>$J["options"]]);if($_POST&&!$m&&!$_POST["add"]&&!$_POST["drop_col"]){$b=[];foreach($J["indexes"]as$v){$B=$v["name"];if(in_array($v["type"],$If)){$e=[];$Ig=[];$Mc=[];$Ei=[];$Gf=(support("partial_indexes")?$v["partial"]:"");$Ef=(in_array($v["algorithm"],$Ff)?$v["algorithm"]:"");$O=[];ksort($v["columns"]);foreach($v["columns"]as$x=>$d){if($d!=""){$y=idx($v["lengths"],$x);$Kc=idx($v["descs"],$x);$Di=idx($v["opclasses"],$x);$O[]=($o[$d]?idf_escape($d):$d).($y?"(".(+$y).")":"").($Di!=""?" ".idf_escape($Di):"").($Kc?" DESC":"");$e[]=$d;$Ig[]=($y?:null);$Mc[]=$Kc;$Ei[]="$Di";}}$Nd=$w[$B];if($Nd){ksort($Nd["columns"]);ksort($Nd["lengths"]);ksort($Nd["descs"]);if($v["type"]==$Nd["type"]&&array_values($Nd["columns"])===$e&&(!$Nd["lengths"]||array_values($Nd["lengths"])===$Ig)&&array_values($Nd["descs"])===$Mc&&(!$Nd["opclasses"]||array_values($Nd["opclasses"])===$Ei)&&$Nd["partial"]==$Gf&&(!$Ff||$Nd["algorithm"]==$Ef)&&!$Nd["invalid"]){unset($w[$B]);continue;}}if($e)$b[]=[$v["type"],$B,$O,$Ef,$Gf];}}foreach($w as$B=>$Nd)$b[]=[$Nd["type"],$B,"DROP"];if(!$b)redirect(ME."table=".url_escape($a));queries_redirect(ME."table=".url_escape($a),lang(214),alter_indexes($a,$b));}page_header(lang(161),$m,["table"=>$a],h($a),false,doc_link(['sql'=>"create-index.html",'pgsql'=>"sql-createindex.html",'cockroach'=>"create-index",'mssql'=>"t-sql/statements/create-index-transact-sql",'sqlite'=>"lang_createindex.html",'oracle'=>"sqlrf/CREATE-INDEX.html",]));$fe=array_keys($o);if($_POST["add"]){foreach($J["indexes"]as$x=>$v){if($v["columns"][count($v["columns"])]!="")$J["indexes"][$x]["columns"][]="";}$v=end($J["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$J["indexes"][]=["columns"=>[1=>""]];}if(!$J){foreach($w as$x=>$v){$w[$x]["name"]=$x;$w[$x]["columns"][]="";}$w[]=["columns"=>[1=>""]];$J["indexes"]=$w;}$Ig=(JUSH=="sql"||JUSH=="mssql");$Ei=driver()->indexOpclasses();$Il=($_POST?$_POST["options"]:get_setting("index_options"));$Nh=[];foreach($If as$U)$Nh[$U]=str_replace("{table}",$a,adminer()->namePattern($U));echo'
    ';if($Xj){echo"
    ',lang(215);$yf=" class='idxopts".($Il?"":" hidden")."'";if($Ff)echo"".lang(216).doc_link(['sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/','pgsql'=>'indexes-types.html','cockroach'=>'create-index#parameters',]);echo'',lang(217).($Ig?" (".lang(218).")":"");if($Ig||support("descidx"))echo checkbox("options",1,$Il,lang(136),on('click','indexOptionsShow'),"jsonly")."\n";echo'',lang(219);if(support("partial_indexes"))echo"".lang(220);echo'
    PRIMARY";foreach($Xj["columns"]as$x=>$d)echo select_input(" disabled",array_combine($fe,$fe),$d)," ";echo"\n";}$jg=1;foreach($J["indexes"]as$v){if(!$_POST["drop_col"]||$jg!=key($_POST["drop_col"])){echo"
    ".html_select("indexes[$jg][type]",[-1=>""]+$If,$v["type"],on('change','indexesChangeType',$Nh),"label-type");if($Ff)echo"".html_select("indexes[$jg][algorithm]",array_merge([""],$Ff),$v['algorithm'],"","label-algorithm");echo"";ksort($v["columns"]);$s=1;foreach($v["columns"]as$x=>$d){echo"".select_input(" name='indexes[$jg][columns][$s]' title='".lang(63)."'".on('change','indexesChangeColumn',$Nh),($o&&($d==""||$o[$d])?array_combine($fe,$fe):[]),$d)," ",($Ig?"":"");if($Ei){$Di=idx($v["opclasses"],$x);echo html_select("indexes[$jg][opclasses][$s]",[""=>"(".lang(221).")"]+array_combine($Ei,$Ei)+($Di!=""?[$Di=>$Di]:[]),$Di),doc_link(['pgsql'=>'indexes-opclass.html']);}echo(support("descidx")?checkbox("indexes[$jg][descs][$s]",1,idx($v["descs"],$x),lang(73)):""),"
    ","
    ";$s++;}echo"
    \n";if(support("partial_indexes"))echo"\n";echo"".icon("cross","drop_col[$jg]","x",lang(139),on('click','editingRemoveRow','indexes$1[type]')),(idx($w[$v["name"]],"invalid")?" INVALID":""),"\n";}$jg++;}echo'

    ';if(support("concurrent_indexes"))echo checkbox("concurrently",1,$_POST["concurrently"],"concurrently").doc_link(['pgsql'=>'sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY'])."\n";echo input_token(),'

    ';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$m&&!$_POST["add"]){$B=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(222),drop_databases([DB]));}elseif($B!==DB){if(DB!=""){$_GET["db"]=$B;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".url_escape($B),lang(223),rename_database($B,(string)$J["collation"]));}else{$j=explode("\n",str_replace("\r","",$B));$lm=true;$_g="";foreach($j as$k){if(count($j)==1||$k!=""){if(!create_database($k,(string)$J["collation"]))$lm=false;$_g=$k;}}restart_session();set_session("dbs",null);queries_redirect(preg_replace('~&db=[^&]*~','',ME)."db=".url_escape($_g),lang(224),$lm);}}else{if(!$J["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($B).(preg_match('~^[a-z0-9_]+$~i',$J["collation"])?" COLLATE $J[collation]":""),substr(ME,0,-1),lang(225));}}$em=(DB!=""?"alter":"create");page_header(DB!=""?lang(81):lang(143),$m,[],h(DB),false,doc_link(['sql'=>"$em-database.html",'mariadb'=>(DB!=""?"":"$em-database"),'pgsql'=>"sql-$em"."database.html",'cockroach'=>"$em-database",'mssql'=>"t-sql/statements/$em-database-transact-sql",'oracle'=>"sqlrf/".strtoupper($em)."-USER.html",]));$Ib=collations();$B=DB;if($_POST)$B=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$Ib);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$Le){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$Le,$A)&&$A[1]){$B=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo'

    ',($_POST["add"]||strpos($B,"\n")?"
    ':'')."\n",($Ib?"".optionlist(flat_collations()).""."".doc_link(['sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",'mssql'=>"relational-databases/system-functions/sys-fn-helpcollations-transact-sql",]):"")."\n",' ';if(DB!="")echo"\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo icon("plus","add[0]","+",lang(137))."\n";echo input_token(),'

    ';}elseif(isset($_GET["scheme"])){$J=$_POST;$f=(support("comment")&&$_GET["ns"]!=""?schema_comment($_GET["ns"]):"");if($_POST&&!$m){$_=preg_replace('~&ns=[^&]*~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,lang(226));else{$B=trim($J["name"]);$_ .=url_escape($B);$Uh=(support("comment")?$J["comment"]:$f);$H=true;$ph=lang(227);if($_GET["ns"]==""){$H=queries("CREATE SCHEMA ".idf_escape($B));$ph=lang(228);}elseif($_GET["ns"]!=$B)$H=queries("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($B));elseif($Uh===$f)redirect($_);if($H&&$Uh!==$f)$H=set_schema_comment($B,$Uh);queries_redirect($_,$ph,$H);}}$em=($_GET["ns"]!=""?"alter":"create");page_header($_GET["ns"]!=""?lang(82):lang(83),$m,[],"",false,doc_link(['pgsql'=>"sql-$em"."schema.html",'cockroach'=>"$em-schema",'mssql'=>"t-sql/statements/create-schema-transact-sql",]));if(!$J){$J["name"]=$_GET["ns"];$J["comment"]=$f;}echo'

    ';if($_GET["ns"]!="")echo"\n";echo(support("comment")?"

    ".lang(65).": ".adminer()->commentInput('SCHEMA'," name='comment'",$J["comment"])."\n":""),input_token(),'

    ';}elseif(isset($_GET["call"])){$ca=($_GET["name"]?:$_GET["call"]);$Vk=(isset($_GET["callf"])?"FUNCTION":"PROCEDURE");$Qk=routine($_GET["call"],$Vk);$gg=(idx($Qk["returns"],"type")=="trigger");page_header(($gg?lang(169):lang(229)).": ".h($ca),$m,"#routines","",!$Qk,(isset($_GET["callf"])?"":doc_link(['sql'=>"call.html",'pgsql'=>"sql-call.html",'cockroach'=>"call",'mssql'=>"t-sql/language-elements/execute-transact-sql",])));$Af=[];$bj=[];foreach($Qk["fields"]as$s=>$n){if(substr($n["inout"],-3)=="OUT"&&JUSH=='sql')$bj[$s]="@".idf_escape($n["field"])." AS ".idf_escape($n["field"]);if(!$n["inout"]||preg_match('~^(IN|OUTPUT)~',$n["inout"]))$Af[]=$s;}if(!$m&&$_POST){$kb=[];foreach($Qk["fields"]as$x=>$n){$X="";if(in_array($x,$Af)){$X=process_input($n);if($X===false)$X="''";if(isset($bj[$x]))connection()->query("SET @".idf_escape($n["field"])." = $X");}if(isset($bj[$x]))$kb[]="@".idf_escape($n["field"]);elseif(in_array($x,$Af))$kb[]=$X;}$Fa=implode(", ",$kb);$G=(isset($_GET["callf"])||JUSH!="mssql"?(isset($_GET["callf"])?"SELECT ":"CALL ").(idx($Qk["returns"],"type")=="record"?"* FROM ":"").table($ca)."($Fa)":"EXEC ".table($ca).($Fa!=""?" $Fa":""));$cm=microtime(true);$H=connection()->multi_query($G);$ta=connection()->affected_rows;echo adminer()->selectQuery($G,$cm,!$H);if(!$H)echo"

    ".adminer()->error()."\n";else{$h=connect();if($h)$h->select_db(DB);do{$H=connection()->store_result();if(is_object($H))print_select_result($H,$h);else echo"

    ".lang(230,$ta)." ".@date("H:i:s")."\n";}while(connection()->next_result());if($bj)print_select_result(connection()->query("SELECT ".implode(", ",$bj)));}}if($gg){$tn=driver()->routineTriggers($_GET["call"]);if($tn){echo"\n";foreach($tn as$J){$_=preg_replace('~&ns=[^&]*~',"&ns=".url_escape($J["ns"]),ME);echo"
    ".h($J["trigger"])."".($J["ns"]!=$_GET["ns"]?"".h($J["ns"]).".":"").h($J["table"]).""."".lang(165)."\n";}echo"
    \n";}}else{echo'

    ';if($Af){echo"\n";foreach($Af as$x){$n=$Qk["fields"][$x];$B=$n["field"];echo"
    ".adminer()->fieldName($n);$Y=idx($_POST["fields"],$B);if($Y!=""){if($n["type"]=="set")$Y=implode(",",$Y);}input($n,$Y,idx($_POST["function"],$B,""));echo"\n";}echo"
    \n";}echo'

    ',input_token(),'

    ';}echo' ',adminer()->commentValue($Vk,$Qk['comment']);}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$B=$_GET["name"];$J=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$Lm=[];foreach($J["source"]as$x=>$X)$Lm[$x]=$J["target"][$x];$J["target"]=$Lm;}$Ya=false;if(JUSH=="sqlite")$H=recreate_table($a,$a,[],[],[" $B"=>($J["drop"]?"":" ".format_foreign_key($J))]);else{$Yb=$J["constraint"];$b="ALTER TABLE ".table($a);$ed="$b DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($B?:'');if($J["drop"])$H=queries($ed);else{$ma=" ADD".format_foreign_key($J,$Yb);if($B=="")$H=queries($b.$ma);elseif(JUSH=="pgsql"||(JUSH=="sql"&&$Yb!=$B))$H=queries("$ed,$ma");else{$Ya=support("transaction_ddl")&&driver()->begin();$H=($Ya||idx(foreign_keys($a),$B)?queries($ed):true)&&queries($b.$ma)&&(!$Ya||driver()->commit());}}}queries_redirect(ME."table=".url_escape($a),($J["drop"]?lang(231):($B!=""?lang(232):lang(233))),$H);if($Ya)driver()->rollback();if(!$J["drop"])$m=lang(234);}$gi=false;if(!$_POST&&$B!=""){$we=foreign_keys($a);$J=idx($we,$B,[]);$gi=!$J;}$Mh=str_replace("{table}",$a,adminer()->namePattern("FOREIGN"));$Ph="^".str_replace('\{columns\}','.*',preg_quote($Mh))."$";page_header(($B!=""?lang(235):lang(166)),$m,["table"=>$a],h($B!=""?$B:$a),$gi,doc_link(['sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-PARMS-REFERENCES",'cockroach'=>"foreign-key",'mssql'=>"t-sql/statements/create-table-transact-sql",'oracle'=>"sqlrf/constraint.html",]));if($_POST){ksort($J["source"]);if($_POST["change"]||$_POST["change-js"])$J["target"]=[];else$J["source"][]="";}elseif($B!=""){$J["source"][]="";$J["constraint"]=$B;}else{$J["table"]=$a;$J["source"]=[""];$J["constraint"]=str_replace("{columns}","",$Mh);}echo'
    ';$Rl=array_keys(fields($a));if($J["db"]!="")connection()->select_db($J["db"]);$Wi=null;if($J["ns"]!=""){$Wi=get_schema();set_schema($J["ns"]);}$vk=array_keys(array_filter(table_status('',true),function(array$S){return!$S["dependent"]&&fk_support($S);}));$Lm=array_keys(fields(in_array($J["table"],$vk)?$J["table"]:reset($vk)));$c=on('change','foreignChange');echo"

    \n";if(support("scheme")){$hi=($J["ns"]!=""?$J["ns"]:$_GET["ns"]);$cl=array_filter(adminer()->schemas(),function($L)use($hi){return!driver()->isSystem(DB,$L)||$L==$hi||$L==$_GET["ns"];});echo"";if($Wi!==null)set_schema($Wi);}elseif(JUSH!="sqlite"){$nl=($J["db"]!=""?$J["db"]:DB);$_c=[];foreach(adminer()->databases()as$k){if(!driver()->isSystem($k)||$k==$nl||$k==DB)$_c[]=$k;}echo"";}if($J["db"]!="")connection()->select_db(DB);echo input_hidden("change-js"),'

    ',lang(163),'',lang(164),' ';$jg=0;foreach($J["source"]as$x=>$X){echo"","".html_select("source[".(+$x)."]",[-1=>""]+$Rl,$X,($jg==count($J["source"])-1?on('change','foreignAddRow'):""),"label-source"),"".html_select("target[".(+$x)."]",$Lm,idx($J["target"],$x),"","label-target");$jg++;}echo'

    ',(support("deferrable")?html_select("deferrable",['NOT DEFERRABLE','DEFERRABLE','DEFERRABLE INITIALLY DEFERRED'],$J["deferrable"]):''),'

    ';if($B!="")echo' ';if(JUSH!="sqlite"){print_fieldset("options",lang(136),$J["constraint"]!=$B&&!preg_match("($Ph)",$J["constraint"]));echo"\n","\n";}echo input_token(),'

    ';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$Xi="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status1($a);$Xi=strtoupper($P["Engine"]);}if($_POST&&!$m){$B=trim($J["name"]);$Ha=" AS\n$J[select]";$Rg=ME."table=".url_escape($B);$ph=lang(239);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$B&&JUSH!="sqlite"&&$U=="VIEW"&&$Xi=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($B).$Ha,$Rg,$ph);else{$Pm="adminer_".uniqid();drop_create("DROP $Xi ".table($a),"CREATE $U ".table($B).$Ha,"DROP $U ".table($B),"CREATE $U ".table($Pm).$Ha,"DROP $U ".table($Pm),($_POST["drop"]?substr(ME,0,-1):$Rg),lang(240),$ph,lang(241),$a,$B);}}$gi=false;if(!$_POST&&$a!=""){$J=view($a);$gi=!$J["select"];$J["name"]=$a;$J["materialized"]=($Xi!="VIEW");if(!$m)$m=adminer()->error();}page_header(($a!=""?lang(58):lang(92)),$m,["table"=>$a],h($a),$gi,doc_link(['sql'=>"create-view.html",'pgsql'=>"sql-createview.html",'cockroach'=>"create-view",'mssql'=>"t-sql/statements/create-view-transact-sql",'sqlite'=>"lang_createview.html",'oracle'=>"sqlrf/CREATE-VIEW.html",]));echo'

    ',lang(219),': ',(support("materializedview")?" ".checkbox("materialized",1,$J["materialized"],lang(157)):""),'

    ';textarea("select",$J["select"]);echo'

    ';if($a!="")echo' ';echo input_token(),'

    ';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Wf=["YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND"];$gm=["ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE"];$J=$_POST;if($_POST&&!$m){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(242));elseif(in_array($J["INTERVAL_FIELD"],$Wf)&&isset($gm[$J["STATUS"]])){$al="\nON SCHEDULE ".($J["INTERVAL_VALUE"]?"EVERY ".q($J["INTERVAL_VALUE"])." $J[INTERVAL_FIELD]".($J["STARTS"]?" STARTS ".q($J["STARTS"]):"").($J["ENDS"]?" ENDS ".q($J["ENDS"]):""):"AT ".q($J["STARTS"]))." ON COMPLETION".($J["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(243):lang(244)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$al.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$al)."\n".$gm[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}$gi=false;if(!$J&&$aa!=""){$K=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$gi=!$K;$J=reset($K);}page_header(($aa!=""?lang(245).": ".h($aa):lang(246)),$m,"#events","",$gi,doc_link(['sql'=>"create-event.html"]));echo'
    ',lang(219),'
    ',lang(247),'
    ',lang(248),'
    ',lang(249),' ',html_select("INTERVAL_FIELD",$Wf,$J["INTERVAL_FIELD"]),'
    ',lang(146),'',html_select("STATUS",$gm,$J["STATUS"]),'
    ',lang(65),'
    ',checkbox("ON_COMPLETION","PRESERVE",$J["ON_COMPLETION"]=="PRESERVE",lang(250)),'

    ';textarea("EVENT_DEFINITION",$J["EVENT_DEFINITION"]);echo'

    ';if($aa!="")echo' ';echo input_token(),'

    ';}elseif(isset($_GET["procedure"])){$ca=($_GET["name"]?:$_GET["procedure"]);$Qk=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$m){foreach($J["fields"]as$x=>$n){if($n["field"]=="")unset($J["fields"][$x]);}$xi=routine($_GET["procedure"],$Qk);$vi=($xi?routine_id($ca,$xi):"");$Wh=routine_id($J["name"],$J);$i=create_routine($Qk,$J);$Rg=substr(ME,0,-1);$ph=lang(251);if(!$_POST["drop"]&&$vi==$Wh&&connection()->flavor!="mysql")queries_redirect($Rg,$ph,queries(substr_replace($i,(JUSH=="mssql"?' OR ALTER':' OR REPLACE'),6,0)));else{$Pm="adminer_".uniqid();drop_create("DROP $Qk $vi",$i,"DROP $Qk $Wh",create_routine($Qk,["name"=>$Pm]+$J),"DROP $Qk ".routine_id($Pm,$J),$Rg,lang(252),$ph,lang(253),$ca,$J["name"]);}}$gi=false;if(!$_POST&&$ca!=""){$J=routine($_GET["procedure"],$Qk);$gi=!$J;$J["name"]=$ca;}$Tk=strtolower($Qk);page_header(($ca!=""?(isset($_GET["function"])?lang(170):lang(254)).": ".h($ca):(isset($_GET["function"])?lang(255):lang(256))),$m,"#routines","",$gi,doc_link(['sql'=>"create-procedure.html",'mariadb'=>"create-$Tk/",'pgsql'=>"sql-create$Tk.html",'cockroach'=>"create-$Tk",'mssql'=>"t-sql/statements/create-$Tk-transact-sql",]));if(!$_POST&&$ca=="")$J["language"]="sql";$Ib=(JUSH=="sql"?flat_collations():[]);$Rk=routine_languages();echo($Ib?"".optionlist($Ib)."":""),'

    ',lang(219),': ',($Rk?"\n":""),'

    ';edit_fields($J["fields"],$Ib,$Qk);if(isset($_GET["function"])){echo"
    ".lang(257);edit_type("returns",(array)$J["returns"],$Ib,[],(JUSH=="pgsql"?["void","trigger"]:[]));}echo'
    ',script("editFields();"),'

    ';textarea("definition",$J["definition"],20,80,($Rk[$J["language"]]?:JUSH));echo'

    ';if($ca!="")echo' ';$Uk=routine_options($Qk);if($Uk){$Li=false;foreach($Uk as$x=>$fo){$l=($fo?reset($fo):"");$J["options"][$x]=idx($J["options"],$x,$l);if($J["options"][$x]!=$l)$Li=true;}print_fieldset("options",lang(136),$Li);echo"\n";foreach($Uk as$x=>$fo){$ug="label-option-$x";$Xm=str_replace("_"," ",$x);$M=[];foreach($fo as$Y)$M[$Y]=(strpos($Y,"$Xm ")===0?substr($Y,strlen($Xm)+1):$Y);echo"
    $Xm".($M?html_select("options[$x]",$M,$J["options"][$x],"",$ug):"")."\n";}echo"
    \n\n";}echo input_token(),'

    ';}elseif(isset($_GET["sequence"])){$ea=$_GET["sequence"];$J=$_POST;if($_POST&&!$m){$_=substr(ME,0,-1);$B=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($ea),$_,lang(258));elseif($ea=="")query_redirect("CREATE SEQUENCE ".idf_escape($B),$_,lang(259));elseif($ea!=$B)query_redirect("ALTER SEQUENCE ".idf_escape($ea)." RENAME TO ".idf_escape($B),$_,lang(260));else redirect($_);}$gi=(!$_POST&&$ea!=""&&!get_val("SELECT relname FROM pg_class WHERE relkind = 'S' AND relnamespace = ".driver()->nsOid." AND relname = ".q($ea)));page_header(($ea!=""?lang(261).": ".h($ea):lang(262)),$m,"#sequences","",$gi,doc_link(['pgsql'=>"sql-createsequence.html",'cockroach'=>"create-sequence",]));if(!$J)$J["name"]=$ea;echo'

    ';if($ea!="")echo"\n";echo input_token(),'

    ';}elseif(isset($_GET["type"])){function enum_values($Gc){$Y="'(?:[^']|'')*'";if(!preg_match('~^AS\s+ENUM\s*\(\s*('.$Y.'(?:\s*,\s*'.$Y.')*)\s*\)$~i',$Gc,$A))return null;preg_match_all('~'.$Y.'~',$A[1],$Xg);return$Xg[0];}function add_enum_values($U,$ti,$Th){$zi=enum_values($ti);$bi=enum_values($Th);if($zi===null||$bi===null)return null;$I=[];$s=0;foreach($bi as$Y){if($Y===idx($zi,$s))$s++;else$I[]="ALTER TYPE ".idf_escape($U)." ADD VALUE $Y".($s"sql-createtype.html",'cockroach'=>"create-type",]));if(!$J){$J["name"]=$fa;$J["as"]=($fa!=""?$U["definition"]:"AS ");}echo'

    ',lang(219).": \n";textarea("as",$J["as"]);echo"

    \n";if($fa!="")echo"\n";echo input_token(),'

    ';}elseif(isset($_GET["check"])){$a=$_GET["check"];$B="$_GET[name]";$J=$_POST;if($J&&!$m){$Rg=ME."table=".url_escape($a);$sh=lang(268);$qh=lang(269);$rh=lang(270);if(JUSH=="sqlite"&&!(min_version(3.53)&&($B==""||idx(driver()->checkConstraints($a),$B)!=$B))){$ma=($J["drop"]?"":($J["name"]!=""?"CONSTRAINT ".idf_escape($J["name"])." ":"")."CHECK ($J[clause])");queries_redirect($Rg,($J["drop"]?$sh:($B!=""?$qh:$rh)),recreate_table($a,$a,[],[],[],"",[],"$B",$ma));}else{$b="ALTER TABLE ".table($a);$tb=" CHECK ($J[clause])";$Pm="adminer_".uniqid();drop_create("$b DROP CONSTRAINT ".idf_escape($B),"$b ADD".($J["name"]!=""?" CONSTRAINT ".idf_escape($J["name"]):"").$tb,"$b DROP CONSTRAINT ".idf_escape($J["name"]),"$b ADD CONSTRAINT ".idf_escape($Pm).$tb,"$b DROP CONSTRAINT ".idf_escape($Pm),$Rg,$sh,$qh,$rh,$B,$J["name"]);}}$gi=false;if(!$J){$xb=driver()->checkConstraints($a);$gi=($B!=""&&!$xb[$B]);$J=["name"=>($B==""?object_name("CHECK",$a,[]):($xb[$B]!=$B?$B:"")),"clause"=>$xb[$B]];}page_header(($B!=""?lang(271):lang(168)),$m,["table"=>$a],h($B!=""?$B:$a),$gi,doc_link(['sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",'pgsql'=>"ddl-constraints.html#DDL-CONSTRAINTS-CHECK-CONSTRAINTS",'cockroach'=>"check",'mssql'=>"relational-databases/tables/create-check-constraints",'sqlite'=>"lang_createtable.html#check_constraints",]));echo'

    ';textarea("clause",$J["clause"]);echo'

    ';if($B!="")echo' ';echo input_token(),'

    ';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$B="$_GET[name]";$sn=trigger_options();$J=trigger($B,$a);$gi=($B!=""&&!$J);$Mh=str_replace("{table}",$a,adminer()->namePattern("TRIGGER"));$J+=["Trigger"=>strtr($Mh,["{timing}"=>"b","{event}"=>"i","{columns}"=>"","{type}"=>"row"])];if($_POST){if(!$m&&in_array($_POST["Timing"],$sn["Timing"])&&in_array($_POST["Event"],$sn["Event"])&&in_array($_POST["Type"],$sn["Type"])){$_i=" ON ".table($a);$ed="DROP TRIGGER ".idf_escape($B).(JUSH=="pgsql"?$_i:"");$Rg=ME."table=".url_escape($a);if($_POST["drop"])query_redirect($ed,$Rg,lang(272));else{if($B!="")queries($ed);queries_redirect($Rg,($B!=""?lang(273):lang(274)),queries(create_trigger($_i,$_POST)));if($B!="")queries(create_trigger($_i,$J+["Type"=>reset($sn["Type"])]));}}$J=$_POST;}page_header(($B!=""?lang(275):lang(171)),$m,["table"=>$a],h($B!=""?$B:$a),$gi,doc_link(['sql'=>"create-trigger.html",'pgsql'=>"sql-createtrigger.html",'cockroach'=>"create-trigger",'mssql'=>"t-sql/statements/create-trigger-transact-sql",'sqlite'=>"lang_createtrigger.html",'oracle'=>"lnpls/CREATE-TRIGGER-statement.html",]));$Ph=strtr(preg_quote($Mh),['\{timing\}'=>'[abi]','\{event\}'=>'[iud]*','\{columns\}'=>'.*','\{type\}'=>'(row|statement)']);$qn=on('change','triggerChange',"^$Ph$",$Mh);$oi=on('input','triggerChange',"^$Ph$",$Mh);echo'
    ',lang(276),'',html_select("Timing",$sn["Timing"],$J["Timing"],$qn),'
    ',lang(277),'',html_select("Event",$sn["Event"],$J["Event"],$qn),(in_array("UPDATE OF",$sn["Event"])?" ":""),'
    ',lang(64),'',html_select("Type",$sn["Type"],$J["Type"],$qn),'
    ',lang(219),'
    ',script("fire(qs('#form')['Timing'], 'change');"),'

    ';textarea("Statement",$J["Statement"]);echo'

    ';if($B!="")echo' ';echo input_token(),'

    ';}elseif(isset($_GET["user"])){function grant($Le,array$ck,$e,$_i){if(!$ck)return true;if($ck==["ALL PRIVILEGES","GRANT OPTION"])return($Le=="GRANT"?queries("$Le ALL PRIVILEGES$_i WITH GRANT OPTION"):queries("$Le ALL PRIVILEGES$_i")&&queries("$Le GRANT OPTION$_i"));return queries("$Le ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$ck).$e).$_i);}$ga=$_GET["user"];$ck=[""=>["All privileges"=>""]];foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$dc)$ck[$dc=="File access on server"?"Server Admin":$dc][$J["Privilege"]]=$J["Comment"];}unset($ck["Server Admin"]["Usage"]);foreach($ck["Tables"]as$x=>$X)unset($ck["Databases"][$x]);$Vh=[];if($_POST){foreach($_POST["objects"]as$x=>$X)$Vh[$X]=(array)$Vh[$X]+idx($_POST["grants"],$x,[]);}$Me=[];$H=(isset($_GET["host"])?connection()->query("SHOW GRANTS FOR ".q($ga)."@".q($_GET["host"])):null);$gi=(isset($_GET["host"])&&!$H);if($H){while($J=$H->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$J[0],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$A[1],$Xg,PREG_SET_ORDER)){foreach($Xg as$X){if($X[1]!="USAGE")$Me["$A[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$J[0]))$Me["$A[2]$X[2]"]["GRANT OPTION"]=true;}}}}if($_POST&&!$m){$yi=(isset($_GET["host"])?q($ga)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $yi",ME."privileges=",lang(278));else{$ai=q($_POST["user"])."@".q($_POST["host"]);$xj=$_POST["pass"];$lc=false;$H=true;if($yi!=$ai){$lc=queries("CREATE USER $ai IDENTIFIED BY ".($_POST["hashed"]?"PASSWORD ":"").q($xj));$H=$lc;}elseif($xj!="")$H=queries("SET PASSWORD FOR $ai = ".(min_version(8,99)||$_POST["hashed"]?q($xj):"PASSWORD(".q($xj).")"));if($H){$Mk=[];foreach($Vh as$li=>$Le){if(isset($_GET["grant"]))$Le=array_filter($Le);$Le=array_keys($Le);if(isset($_GET["grant"]))$Mk=array_diff(array_keys(array_filter($Vh[$li],'strlen')),$Le);elseif($yi==$ai){$ui=array_keys((array)$Me[$li]);$Mk=array_diff($ui,$Le);$Le=array_diff($Le,$ui);unset($Me[$li]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$li,$A)&&(!grant("REVOKE",$Mk,$A[2]," ON $A[1] FROM $ai")||!grant("GRANT",$Le,$A[2]," ON $A[1] TO $ai"))){$H=false;break;}}}if($H&&isset($_GET["host"])){if($yi!=$ai)queries("DROP USER $yi");elseif(!isset($_GET["grant"])){foreach($Me as$li=>$Mk){if(preg_match('~^(.+)(\(.*\))?$~U',$li,$A))grant("REVOKE",array_keys($Mk),$A[2]," ON $A[1] FROM $ai");}}}if($H&&!Queries::$queries)redirect(ME."privileges=");queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(279):lang(280)),$H);if($lc)connection()->query("DROP USER $ai");}}page_header((isset($_GET["host"])?lang(49).": ".h("$ga@$_GET[host]"):lang(179)),$m,["privileges"=>['',lang(85)]],"",$gi,doc_link(['sql'=>"grant.html",'mariadb'=>"grant"]));$J=$_POST;if($J)$Me=$Vh;else{$J=$_GET+["host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)")];$Me[(DB==""||$Me?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=[];}echo'
    ',lang(47),'
    ',lang(49),'
    ',lang(50),' ',($J["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8,99)?"":checkbox("hashed",1,$J["hashed"],lang(281),on('click','hashedClick'))),'
    ',"\n","\n";foreach([""=>"","Server Admin"=>lang(47),"Databases"=>lang(17),"Tables"=>lang(159),"Procedures"=>lang(282),]as$dc=>$Kc){foreach((array)$ck[$dc]as$bk=>$f){echo"$Kc'.h($bk);$s=0;foreach($Me as$li=>$Le){$B="'grants[$s][".h(strtoupper($bk))."]'";$Y=$Le[strtoupper($bk)];if($dc=="Server Admin"&&$li!=(isset($Me["*.*"])?"*.*":".*"))echo"
    ".lang(85);$s=0;foreach($Me as$li=>$Le){echo''.($li!="*.*"?"":input_hidden("objects[$s]","*.*")."*.*");$s++;}echo"
    ";elseif(isset($_GET["grant"]))echo"";else echo"";$s++;}}}echo"
    \n",'

    ';if(isset($_GET["host"]))echo' ';echo input_token(),'

    ';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$m){$rg=0;foreach((array)$_POST["kill"]as$X){if(adminer()->killProcess($X))$rg++;}queries_redirect(ME."processlist=",lang(285,$rg),$rg||!$_POST["kill"]);}}page_header(lang(144),$m);echo'
    ';$s=-1;foreach(adminer()->processList()as$s=>$J){if(!$s){echo"".(support("kill")?"\n";}echo"".(support("kill")?"
    ":"");foreach($J as$x=>$X)echo"$x".doc_link(['sql'=>"show-processlist.html#processlist_".strtolower($x),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"refrn/V-SESSION.html",]);echo"
    ".checkbox("kill[]",$J[JUSH=="sql"?"Id":"pid"],0):"");foreach($J as$x=>$X)echo"".($X!=""&&((JUSH=="sql"&&$x=="Info"&&preg_match("~Query|Killed~",$J["Command"]))||(JUSH=="pgsql"&&$x=="query")||(JUSH=="oracle"&&$x=="sql_text"))?"".shorten_utf8($X,100,"").' '.lang(286).''.' '.copy_icon():h($X));echo"\n";}echo'

    ',script("copyCode(qsl('table'));");if(support("kill"))echo format_number($s+1)."/".lang(287,max_connections()),"

    \n";echo input_token(),'

    ',script("tableCheck();");}elseif($_GET["select"]!=""){$a=$_GET["select"];$S=table_status1($a);$w=indexes($a);$o=fields($a);$we=column_foreign_keys($a);$si=$S["Oid"];$Ok=[];$e=[];$gl=[];$Oi=[];$Sm=null;foreach($o as$x=>$n){$B=adminer()->fieldName($n);$Oh=html_entity_decode(strip_tags($B),ENT_QUOTES);if(isset($n["privileges"]["select"])&&$B!=""){$e[$x]=$Oh;if(is_shortable($n))$Sm=adminer()->selectLengthProcess();}if(isset($n["privileges"]["where"])&&$B!="")$gl[$x]=$Oh;if(isset($n["privileges"]["order"])&&$B!="")$Oi[$x]=$Oh;$Ok+=$n["privileges"];}list($M,$Oe)=adminer()->selectColumnsProcess($e,$w);$M=array_unique($M);$Oe=array_unique($Oe);$dg=count($Oe)selectSearchProcess($o,$w,$S);$Ni=adminer()->selectOrderProcess($o,$w);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Fn=>$J){$Ha=convert_field($o[key($J)]);$M=[$Ha?:idf_escape(key($J))];$Z[]=where_check(bracket_escape($Fn,true),$o);$I=driver()->select($a,$M,$Z,$M);if($I)echo first($I->fetch_row());}exit;}$Xj=$In=[];foreach($w as$v){if($v["type"]=="PRIMARY"){$Xj=array_flip($v["columns"]);$In=($M?$Xj:[]);foreach($In as$x=>$X){if(in_array(idf_escape($x),$M))unset($In[$x]);}break;}}if($si&&!$Xj){$Xj=$In=[$si=>0];$w[]=["type"=>"PRIMARY","columns"=>[$si]];}if($_POST&&!$m){$ro=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$xb=[];foreach($_POST["check"]as$tb)$xb[]=where_check($tb,$o);$ro[]="((".implode(") OR (",$xb)."))";}$to=$ro;$ro=($ro?"\nWHERE ".implode(" AND ",$ro):"");if($_POST["export"]){save_settings(["output"=>$_POST["output"],"format"=>$_POST["format"]],"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$ll=($M?:["*"]);$gc=convert_fields($e,$o,$M);if($gc)$ll[]=substr($gc,2);$G="";if(is_array($_POST["check"])&&!$Xj){$Ce=implode(", ",$ll)."\nFROM ".table($a);$Qe=($Oe&&$dg?"\nGROUP BY ".implode(", ",$Oe):"").($Ni?"\nORDER BY ".implode(", ",$Ni):"");$Cn=[];foreach($_POST["check"]as$X)$Cn[]="(SELECT".limit($Ce,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o).$Qe,1).")";$G=implode(" UNION ALL ",$Cn);}adminer()->dumpData($a,"table",$G,$ll,$to,($dg?$Oe:[]),$Ni);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$we)){if($_POST["save"]||$_POST["delete"]){$H=true;$ta=0;$Ya=false;$O=[];if(!$_POST["delete"]){foreach($o as$B=>$X){$u=bracket_escape($B);if(isset($_POST["fields"][$u])||$_FILES["fields-$u"]){$X=process_input($o[$B]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($B)]=($X!==false?$X:idf_escape($B));}}}if($_POST["delete"]||$O){$G=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a):"");if($_POST["all"]||($Xj&&is_array($_POST["check"]))||$dg){$H=($_POST["delete"]?driver()->delete($a,$ro):($_POST["clone"]?queries("INSERT $G$ro".driver()->insertReturning($a)):driver()->update($a,$O,$ro)));$ta=connection()->affected_rows;if(is_object($H))$ta+=$H->num_rows;}else{$Ya=count((array)$_POST["check"])>1&&driver()->begin();foreach((array)$_POST["check"]as$X){$qo="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o);$H=($_POST["delete"]?driver()->delete($a,$qo,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$qo)):driver()->update($a,$O,$qo,1)));if(!$H)break;$ta+=connection()->affected_rows;}if($Ya&&$H&&!driver()->commit())$H=false;}}$ph=lang(180,$ta);if($_POST["clone"]&&$H&&$ta==1){$Bg=last_id($H);if($Bg)$ph=lang(202," $Bg");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page|next":""),$ph,$H);if($Ya)driver()->rollback();if(!$_POST["delete"]){$Nj=(array)$_POST["fields"];edit_form($a,array_intersect_key($o,$Nj),$Nj,!$_POST["clone"],$m);page_footer();exit;}}elseif(!$_POST["import"]){$H=true;$ta=0;$Ya=count((array)$_POST["val"])>1&&driver()->begin();foreach((array)$_POST["val"]as$Fn=>$J){$O=[];foreach($J as$x=>$X){$x=bracket_escape($x,true);$O[idf_escape($x)]=(preg_match('~char|text~',$o[$x]["type"])||$X!=""?adminer()->processInput($o[$x],$X):"NULL");}$H=driver()->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check(bracket_escape($Fn,true),$o),($dg||$Xj?0:1)," ");if(!$H)break;$ta+=connection()->affected_rows;}if($Ya)$H=$H&&driver()->commit();queries_redirect(remove_from_uri(),lang(180,$ta),$H);if($Ya)driver()->rollback();}else{save_settings(["format"=>$_POST["separator"]],"adminer_import");$ge=get_file("csv_file",true);if(!is_string($ge))$m=upload_error($ge);elseif(!preg_match('~~u',$ge))$m=lang(289);else{$Jb=array_keys($o);$rl=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$pc=parse_csv($ge,$rl);$ta=count($pc);driver()->begin();$K=[];foreach($pc as$x=>$fo){if(!$x&&!array_diff($fo,$Jb)){$Jb=$fo;$ta--;}else{$O=[];foreach($fo as$s=>$Fb)$O[idf_escape($Jb[$s])]=($Fb==""&&$o[$Jb[$s]]["null"]?"NULL":q(csv_value($Fb)));$K[]=$O;}}$H=(!$K||driver()->insertUpdate($a,$K,$Xj));if($H)driver()->commit();queries_redirect(remove_from_uri("page|next"),lang(290,$ta),$H);driver()->rollback();}}}}$_m=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else page_header(lang(68).": $_m",$m,[],"",(!$o&&support("table")),($o?doc_link([JUSH=>driver()->tableHelp($a,is_view($S))]):""));$O=null;if(isset($Ok["insert"])||!support("table")){$O="";foreach((array)$_GET["where"]as$X){$Y=$X["val"];if(is_array($Y))$Y=(count($Y)==1&&preg_match('~^val-(.*)~s',reset($Y),$A)?$A[1]:"");if($X["col"]!=""&&$Y!=""&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$Y)))))$O .="&set[".url_escape(bracket_escape($X["col"]))."]=".url_escape($Y);}}adminer()->selectLinks($S,$O);if(!$e&&support("table"))echo"

    ".lang(291)."\n";else{echo"

    \n","\n";adminer()->selectColumnsPrint($M,$e);adminer()->selectSearchPrint($Z,$gl,$w,$S);adminer()->selectOrderPrint($Ni,$Oi,$w);adminer()->selectLimitPrint($z);if($Sm!==null)adminer()->selectLengthPrint($Sm);adminer()->selectActionPrint($w);echo"
    \n";foreach((array)$_GET["where"]as$X){if($X["op"]=="SQL"&&!in_array($_SERVER["HTTP_SEC_FETCH_SITE"],["","same-origin"])){echo"

    ".lang(125).' '.lang(126)."\n";page_footer();exit;}}$D=$_GET["page"];$ze=null;if($D=="last"){$ze=get_val(count_rows($a,$Z,$dg,$Oe));$D=floor(max(0,intval($ze)-1)/$z);}$kl=$M;$Pe=$Oe;if(!$kl){$kl[]="*";$gc=convert_fields($e,$o,$M);if($gc)$kl[]=substr($gc,2);}foreach($M as$x=>$X){$n=$o[idf_unescape($X)];if($n&&($Ha=convert_field($n)))$kl[$x]="$Ha AS $X";}if(JUSH=="pgsql"||JUSH=="mssql"){foreach((array)$_GET["columns"]as$x=>$X){if(isset($kl[$x])&&$X["fun"])$kl[$x].=" AS ".idf_escape(apply_sql_function($X["fun"],($X["col"]!=""?$X["col"]:"*")));}}if(!$dg&&$In){foreach($In as$x=>$X){$kl[]=idf_escape($x);if($Pe)$Pe[]=idf_escape($x);}}$H=driver()->select($a,$kl,$Z,$Pe,$Ni,$z,$D,true);if(!is_object($H))echo"

    ".(adminer()->error()?:lang(32))."\n";else{if(JUSH=="mssql"&&$D)$H->seek($z*$D);$td=[];$K=[];while($J=$H->fetch_assoc()){if($D&&JUSH=="oracle")unset($J["RNUM"]);$K[]=$J;}$bf=($z&&(support("cursor")?$_GET["next"]!="":count($K)>=$z));if(is_ajax()&&$bf)header("X-Next-Page: ".pagination_href($D+1));if($_GET["modify"]&&$K){$gh=max_input_vars(count($K[0])+1,20);echo($gh&&count($K)>$gh?"

    ".max_input_vars_error()."\n":"");}echo"

    \n";if($_GET["page"]!="last"&&$z&&$Oe&&$dg&&JUSH=="sql")$ze=get_val(" SELECT FOUND_ROWS()");if(!$K)echo"

    ".lang(22)."\n";else{$Ua=adminer()->backwardKeys($a,$_m);$Jk=[];reset($M);foreach($K[0]as$x=>$X){if(!isset($In[$x])){$X=idx($_GET["columns"],key($M))?:[];$Jk[$x]=["fun"=>$X["fun"],"col"=>($M?$X["col"]:$x)];next($M);}}echo"

    ","\n","".(!$Oe&&$M?"":"\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($K,$we)as$Kh=>$J){$En=unique_array($K[$Kh],$w);if(!$En){$En=[];foreach($K[$Kh]as$x=>$X){if(!in_array(idx(idx($Jk,$x,[]),"fun"),driver()->grouping))$En[$x]=$X;}}$Fn="";$s=0;foreach($En as$x=>$X){$Ik=idx($Jk,$x,[]);if($M&&$Ik&&!isset($o[$Ik["col"]]))continue;$He=idx($Ik,"fun","");$Fb=($He?$Ik["col"]:$x);$n=(array)$o[$Fb];$cg=is_blob($n);if(!$He&&strlen($X)>64&&driver()->md5(idf_escape($Fb),$n)){$He="md5";$X=md5($cg?(string)driver()->value($X,$n):$X);}if($He){$Fn .="&fun[$s]=".url_escape($He)."&col[$s]=".url_escape($Fb).($X!==null?"&val[$s]=".url_escape($X===false?"f":$X):"");$s++;}else$Fn .="&".($X!==null?"where[".url_escape(bracket_escape($Fb))."]=".url_escape($X===false?"f":$X):"null[]=".url_escape($Fb));}echo"".(!$Oe&&$M?"":"\n";}if(is_ajax())exit;echo"
    ");$Qh=[];$sk=1;foreach($Jk as$x=>$X){$n=$o[$X["col"]];$B=($n?adminer()->fieldName($n,$sk):($X["fun"]?($X["col"]!=""?h($X["col"]):"*"):h($x)));if($B!=""){$sk++;$Qh[$x]=$B;$d=idf_escape($x);$rf=remove_from_uri('(order|desc)[^=]*|page|next').'&order[0]='.url_escape($x);$Kc="&desc[0]=1";$Ol=preg_replace('~ DESC( NULLS LAST)?$~','',$Ni[0]);$Ql=($Ol==$d||$Ol==$x);echo"";$He=apply_sql_function(h($X["fun"]),$B);$Pl=isset($n["privileges"]["order"])||$X["fun"];echo($Pl?"$He":$He),doc_link([JUSH=>$n["doc"]]);$oh=($Pl?" ↓":'');if(!$X["fun"]&&isset($n["privileges"]["where"]))$oh .=" =";echo($oh?"$oh":"");}}$Ig=[];if($_GET["modify"]){foreach($K as$J){foreach($J as$x=>$X)$Ig[$x]=max($Ig[$x],min(40,utf8_length((string)$X)));}}$mf=[];$lf=[];foreach((array)$_GET["where"]as$X){$X+=["col"=>"","op"=>"","val"=>""];$Fb=$X["col"];$fl=$X["val"];if(!is_array($fl)&&($fl!=""||preg_match('~NULL$~',$X["op"]))&&(!$X["op"]||in_array($X["op"],adminer()->operators($S)))){$Kg=strtr(preg_quote($fl),["%"=>".*?","_"=>"."]);$Cj=["LIKE %%"=>$Kg,"ILIKE %%"=>$Kg,"REGEXP"=>$fl]+(JUSH=="pgsql"?["~"=>$fl,"~*"=>$fl]:[])+($Fb!=""?[]:["="=>'^'.preg_quote($fl).'\z',"IN"=>'^(?:'.implode("|",array_map('preg_quote',array_map('trim',explode(",",$fl)))).')\z',"LIKE"=>"^$Kg\\z","ILIKE"=>"^$Kg\\z","FIND_IN_SET"=>'(?<=^|,)'.preg_quote($fl).'(?=,|\z)',]);foreach(($Fb!=""?[$Fb=>$o[$Fb]]:$o)as$B=>$n){if($Fb!=""||is_searchable($n,$X)){$Ci=$X["op"]?:(!preg_match('~'.text_type().'~',$n["type"])?"IN":(preg_match('~%~',$fl)?"LIKE":"LIKE %%"));if(isset($Cj[$Ci])){$_b=preg_match('~^ILIKE|\*$~',$Ci)||($Ci!="~"&&preg_match('~^(sql|mssql|sqlite)$~',JUSH));$mf[$B][]="(?".($_b?"i":"").":$Cj[$Ci])";}elseif($Ci=="IS NULL"&&$Fb=="")$lf[$B]=true;}}}}echo($Ua?"".lang(293):"")."
    ".($dg||information_schema(DB)?"":"".lang(294)." ").checkbox("check[]",substr($Fn,1),in_array(substr($Fn,1),(array)$_POST["check"])));foreach($J as$x=>$X){if(isset($Qh[$x])){$He=$Jk[$x]["fun"];$Fb=$Jk[$x]["col"];$n=(array)$o[$x];if($X!=""&&(!isset($td[$x])||$td[$x]!=""))$td[$x]=(is_mail($X)?$Qh[$x]:"");$_="";if(is_blob($n)&&$X!="")$_=ME.'download='.url_escape($a).'&field='.url_escape($x).$Fn;if(!$_&&$X!==null){foreach((array)$we[$x]as$q){if(count($we[$x])==1||end($q["source"])==$x){$_="";foreach($q["source"]as$s=>$Rl)$_ .=where_link($s,$q["target"][$s],$K[$Kh][$Rl]);$_=($q["db"]!=""?preg_replace('~&db=[^&]*~',"&db=".url_escape($q["db"]),ME):ME).'select='.url_escape($q["table"]).$_;if($q["ns"]!="")$_=preg_replace('~&ns=[^&]*~',"&ns=".url_escape($q["ns"]),$_);if(count($q["source"])==1)break;}}}if($He=="count"&&$Fb==""){$_=ME."select=".url_escape($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$En))$_ .=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($En as$ng=>$W){if(idx(idx($Jk,$ng,[]),"fun")){$_="";break;}$_ .=where_link($s++,$ng,$W);}}$sf=select_value($X,$_,$n,$Sm,($He?[]:idx($mf,$x,[])));if($X===null&&!$He&&isset($lf[$x]))$sf="$sf";$u=bracket_escape($Fn);$t=h("val[$u][".bracket_escape($x)."]");$Pj=idx(idx($_POST["val"],$u),bracket_escape($x));$Ln=idx($n["privileges"],"update")&&!is_identity_always($n);$od=$K[$Kh][$x];$pd=!is_array($J[$x])&&!is_blob($n)&&is_utf8($od)&&!$He&&!$n["generated"]&&$Ln;$U=($He=="min"||$He=="max"?$o[$Fb]["type"]:$n["type"]);$Rm=preg_match('~text|json|lob~',$U);$eg=preg_match(number_type(),$U)||preg_match('~^(avg|ceil|char_length|count|count distinct|floor|len|length|round|sum|time_to_sec)$~',$He);echo"".($Rm?"":"");}else{$Tg=strpos($sf,"…");$nd=adminer()->editVal($od,$n);echo($Ln?" data-text='".($Tg?2:($Rm?1:0))."'".($pd?"":" data-warning='".lang(295)."'").($pd&&!$Tg&&html_entity_decode(strip_tags($sf),ENT_QUOTES,"UTF-8")!==$nd?" data-value='".h($nd)."'":""):"").">$sf";}}}if($Ua)echo"";adminer()->backwardKeysPrint($Ua,$K[$Kh]);echo"
    \n","
    \n";}if(!is_ajax()){$sa=get_settings("adminer_import");if($K||$D||$bf){$Ld=true;if($_GET["page"]!="last"){if(!$z||(count($K)<$z&&($K||!$D)))$ze=($D?$D*$z:0)+count($K);elseif(JUSH!="sql"||!$dg){$ze=($dg?null:found_rows($S,$Z));$Ld=!driver()->hasEstimatedRows();if($ze===null||(!$Ld&&$ze$z);$gj=($z&&($bf||$D));if($gj)echo($bf?'

    '.lang(297).'':''),"\n";echo"

    \n";}if(adminer()->selectImportPrint())echo"

    ","".lang(89)."","";echo input_token(),"

    \n",(!$Oe&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?lang(146):lang(145));$go=($P?adminer()->showStatus():adminer()->showVariables());if(!$go)echo"

    ".lang(22)."\n";else{echo"\n";foreach($go as$J){echo"";$x=array_shift($J);echo"
    ".h($x)."";foreach($J as$X)echo"".nl_br(h($X));}echo"
    \n";}}elseif(isset($_GET["script"])){header("Content-Type: application/json; charset=utf-8");if($_GET["script"]=="db"){$om=["Data_length"=>0,"Index_length"=>0,"Data_free"=>0];foreach(table_status()as$B=>$S){json_row("Comment-$B",h($S["Comment"]).($S["Error"]?" ".h($S["Error"])."":""));if(!is_view($S)||preg_match('~materialized~i',$S["Engine"])){foreach(["Engine","Collation"]as$x)json_row("$x-$B",h($S[$x]));foreach(array_keys($om+["Auto_increment"=>0,"Rows"=>0])as$x){if(array_key_exists($x,$S))json_row("$x-$B",format_status($S,$x));if($S[$x]!=""&&isset($om[$x]))$om[$x]+=($S["Engine"]!="InnoDB"||$x!="Data_free"?$S[$x]:0);}}}if(function_exists('Adminer\db_status'))$om=db_status();foreach($om as$x=>$X)json_row("sum-$x",adminer()->formatSizeValue($X));json_row("");}else{foreach(count_tables(adminer()->databases(false))as$k=>$X){json_row("tables-$k",format_number($X));json_row("size-$k",db_size($k));}json_row("");}exit;}else{if(!isset($_GET["select"])&&support("single_table")){$T=tables_list();if($T)redirect(ME.(support("table")?"table=":"select=").url_escape(key($T)));}$lh=ME.(isset($_GET["select"])?"select=&":"");$Jm=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Jm&&!$m&&!$_POST["search"]){$H=true;$ph="";if(JUSH=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$H=truncate_tables($_POST["tables"]);$ph=lang(302);}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$ph=lang(303);}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$ph=lang(304);}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$ph=lang(305);}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$J)$ph .="".h($R).": ".h($J["integrity_check"])."
    ";}}elseif(JUSH=="mssql"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("DBCC CHECKTABLE (".q(table($R)).") WITH TABLERESULTS")as$J)$ph .="".h($R).": ".h($J["MessageText"])."
    ";}}elseif(JUSH!="sql"){$H=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?" ANALYZE":""),(array)$_POST["tables"]));$ph=lang(306);}elseif(!$_POST["tables"])$ph=lang(19);elseif($H=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($J=$H->fetch_assoc())$ph .="".h($J["Table"]).": ".h($J["Msg_text"])."
    ";}queries_redirect(relative_uri(),$ph,$H);}page_header(($_GET["ns"]==""?lang(17).": ".h(DB):lang(16).": ".h($_GET["ns"])),$m,true);if(adminer()->homepage()){if($_GET["ns"]!==""){if(support("scheme")&&support("comment")){$f=schema_comment($_GET["ns"]);if($f!="")echo"

    ".lang(65).": ".adminer()->commentValue('SCHEMA',$f)."\n";}$Ni=$_GET["order"];$Ee=($Ni||support("fast_status"));echo"

    \n","

    ".lang(307)."

    \n";$Im=($Ee?table_status():tables_list());$ke=$_GET["filter"];if($ke!=""){foreach($Im as$R=>$P){if(stripos("$R",$ke)===false)unset($Im[$R]);}}if(!$Im)echo"

    ".lang(19)."\n";else{echo"

    \n";if(support("table")){echo"
    ".lang(15)."
    ",html_select("op",adminer()->operators(),idx($_POST,"op",JUSH=="elastic"?"should":"LIKE %%"));$G=($_POST?$_POST["query"]:$_GET["query"]);echo" "," \n","
    \n";if(!$m&&(!$_POST||$_POST["search"])&&$G!=""){$_GET["where"][0]["op"]=idx($_POST,"op",JUSH=="elastic"?"should":"LIKE %%");search_tables($G);}}echo"
    \n","\n",'','\n";if($Ni){uasort($Im,function($ia,$Ra)use($Ni,$Ia){$I=($ia[$Ni]<$Ra[$Ni]?-1:($ia[$Ni]>$Ra[$Ni]?1:0));return(in_array($Ni,$Ia)?$I:-$I);});}$T=0;$om=["Data_length"=>0,"Index_length"=>0,"Data_free"=>0];foreach($Im as$B=>$P){$jo=($Ee?is_view($P):$P!==null&&!preg_match('~table|sequence~i',$P));$P=($Ee?$P:['Engine'=>$P]);$t=h("Table-".$B);echo'
    ',''.lang(159).'';$e=["Engine"=>[lang(308).doc_link(['sql'=>'storage-engines.html'])]];$Ib=collations();if($Ib)$e["Collation"]=[lang(150).doc_link(['sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/'])];if(function_exists('Adminer\alter_table'))$e["Data_length"]=[lang(309).doc_link(['sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'refrn/ALL_TABLES.html']),"create",lang(59),];if(support("indexes"))$e["Index_length"]=[lang(310).doc_link(['sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT']),"indexes",lang(162),];$e["Data_free"]=[lang(311).doc_link(['sql'=>'show-table-status.html']),"edit",lang(60)];if(function_exists('Adminer\alter_table'))$e["Auto_increment"]=[lang(66).doc_link(['sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/']),"auto_increment=1&create",lang(59),];$e["Rows"]=[lang(312).doc_link(['sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'refrn/ALL_TABLES.html']),"select",lang(56),];if(support("comment"))$e["Comment"]=[lang(65).doc_link(['sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE','cockroach'=>'comment-on']),];$Ia=['Engine','Collation','Comment'];foreach($e as$x=>$d)echo"$d[0]";echo"
    '.checkbox(($jo?"views[]":"tables[]"),$B,in_array("$B",$Jm,true),"","","",$t),''.(support("table")||support("indexes")?"".h($B).'':h($B));if($jo&&!preg_match('~materialized~i',$P['Engine'])){$Xm=lang(158);echo''.(support("view")?"$Xm":$Xm),"?";if(support("comment"))echo''.h($P['Comment']);}else{if($Ee){foreach(array_keys($om)as$x)$om[$x]+=($P["Engine"]!="InnoDB"||$x!="Data_free"?idx($P,$x):0);}foreach($e as$x=>$d){$t=" id='$x-".h($B)."'";echo($d[1]?"".($x=="Index_length"&&$P["invalid_index"]?"INVALID ":"")."".format_status($P,$x)."":"".h(idx($P,$x,'?')).($x=="Comment"&&$P["Error"]?" ".h($P["Error"])."":""));}$T++;}echo"\n";}echo"
    ".lang(287,count($Im)),"".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),($Ib?"".h(db_collation(DB,$Ib)):'');if($Ee&&function_exists('Adminer\db_status'))$om=db_status();foreach($om as$x=>$nm)echo($e[$x]?"".($Ee?adminer()->formatSizeValue($nm):""):"");echo"\n","
    \n",($Ee?'':script("ajaxSetHtml('".js_escape(ME)."script=db');")),"
    \n";if(!information_schema(DB)){$bo=" ";$Hi=" ";$Zj=(JUSH=="sqlite"?$bo." ":(JUSH=="pgsql"?$bo.$Hi:(JUSH=="mssql"?" ":(JUSH=="sql"?" ".$Hi." "." ":"")))).(function_exists('Adminer\truncate_tables')?" ":"").(function_exists('Adminer\drop_tables')?"":"");echo($Zj?"\n";}echo"
    \n",script("tableCheck();");}echo(function_exists('Adminer\alter_table')?"
    \n";if(support("routine")){echo"
    \n","

    ".lang(86)."

    \n";$Wk=routines();if($Wk){echo"\n",'\n";foreach($Wk as$J){$B=($J["SPECIFIC_NAME"]==$J["ROUTINE_NAME"]?"":"&name=".url_escape($J["ROUTINE_NAME"]));echo'','
    '.lang(219).''.lang(64).''.lang(257)."
    '.h($J["ROUTINE_NAME"]).'',''.h($J["ROUTINE_TYPE"]),''.h($J["DTD_IDENTIFIER"]),''.lang(165)."";}echo"
    \n";}echo'
    \n";}if(support("sequence")){echo"
    \n","

    ".lang(87)."

    \n";$vl=get_vals("SELECT relname FROM pg_class WHERE relkind = 'S' AND relnamespace = ".driver()->nsOid." ORDER BY relname");if($vl){echo"\n","\n";foreach($vl as$X)echo"
    ".lang(219)."
    ".h($X)."\n";echo"
    \n";}echo"
    \n";}if(support("type")){echo"
    \n","

    ".lang(0)."

    \n";$Yn=types();if($Yn){echo"\n","\n";foreach($Yn as$X)echo"
    ".lang(219)."
    ".h($X)."\n";echo"
    \n";}echo"
    \n";}if(support("event")){echo"
    \n","

    ".lang(88)."

    \n";$K=get_rows("SHOW EVENTS");if($K){echo"\n","\n";foreach($K as$J)echo"","
    ".lang(219)."".lang(321)."".lang(247)."".lang(248)."
    ".h($J["Name"]),"".($J["Execute at"]?lang(322)."".h($J["Execute at"]):lang(249)." ".h($J["Interval value"])." ".h($J["Interval field"])."".h($J["Starts"])),"".h($J["Ends"]),''.lang(165).'';echo"
    \n";$Id=get_val("SELECT @@event_scheduler");if($Id&&$Id!="ON")echo"

    event_scheduler: ".h($Id)."\n";}echo'

    \n";}}elseif(support("extension")){$Ud=get_rows("SELECT e.extname, e.extversion, n.nspname, obj_description(e.oid, 'pg_extension') AS comment FROM pg_extension e JOIN pg_namespace n ON n.oid = e.extnamespace ORDER BY e.extname");if($Ud){echo"
    \n","

    ".lang(93)."

    \n","\n","\n";foreach($Ud as$J)echo"
    ".lang(219)."".lang(323)."".lang(16)."".lang(65)."
    ".h($J["extname"])."","".h($J["extversion"]),"".h($J["nspname"])."","".h($J["comment"]),"\n";echo"
    \n","
    \n";}}}}page_footer();