<!--
--  Uploaded on : https://haxor.my.id/open/somser-sms.html
--  Official Web : https://prinsh.com
--  script-deface-generator.prinsh.com
-->
<!DOCTYPE html><html lang="en"><head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>SMS BOMBER</title>
  <!-- Google Font for a sleek look -->
  <link href="https://fonts.googleapis.com/css?family=Roboto+Mono:400,700&display=swap" rel="stylesheet">
  <style>
    /* Reset & Base Styles */
    * { margin: 0; padding: 0; box-sizing: border-box; }
    body {
      background: linear-gradient(135deg, #0d0d0d, #1a1a1a, #262626);
      color: #00d9ff;
      font-family: 'Roboto Mono', monospace;
      text-align: center;
      overflow-x: hidden;
      animation: fadeIn 1.5s forwards;
    }
    @keyframes fadeIn { to { opacity: 1; } }
    .container {
      padding: 20px;
      margin: 5vh auto;
      max-width: 600px;
      background: rgba(0,0,0,0.4);
      border-radius: 15px;
      box-shadow: 0 0 15px rgba(0,217,255,0.3);
      animation: slideIn 1s ease-out;
    }
    @keyframes slideIn {
      from { transform: translateY(50px); opacity: 0; }
      to { transform: translateY(0); opacity: 1; }
    }
    /* Editable text areas with neon glow */
    h1, p, footer {
      cursor: text;
      user-select: none;
      transition: color 0.3s ease, text-shadow 0.3s ease;
      animation: neonGlow 3s infinite alternate;
    }
    h1:hover, p:hover, footer:hover { color: #ffeb3b; text-shadow: 0 0 8px #ffeb3b; }
    @keyframes neonGlow {
      0% { text-shadow: 0 0 5px #00d9ff, 0 0 10px #00bcd4; }
      50% { text-shadow: 0 0 10px #ffeb3b, 0 0 20px #ffc107; }
      100% { text-shadow: 0 0 5px #00d9ff, 0 0 10px #00bcd4; }
    }
    /* Input fields with smooth transitions */
    input {
      width: 80%;
      padding: 12px;
      margin: 10px;
      font-size: 18px;
      background: #121212;
      border: 2px solid #00d9ff;
      border-radius: 5px;
      color: #00d9ff;
      text-align: center;
      transition: border-color 0.3s ease, transform 0.3s;
    }
    input:focus { border-color: #ffeb3b; transform: scale(1.02); outline: none; }
    /* Button styling with pulse animation */
    .button {
      padding: 12px 25px;
      margin: 10px;
      font-size: 18px;
      background: linear-gradient(45deg, #00d9ff, #00bcd4);
      border: none;
      border-radius: 5px;
      cursor: pointer;
      transition: transform 0.2s ease, background 0.3s ease;
      font-weight: bold;
      animation: pulse 2s infinite;
    }
    .button:hover { background: linear-gradient(45deg, #ffeb3b, #ffc107); transform: scale(1.05); }
    .button:disabled { background: grey; cursor: not-allowed; animation: none; }
    @keyframes pulse {
      0% { box-shadow: 0 0 0 0 rgba(0,217,255,0.7); }
      70% { box-shadow: 0 0 0 10px rgba(0,217,255,0); }
      100% { box-shadow: 0 0 0 0 rgba(0,217,255,0); }
    }
    /* Spinner Animation */
    .spinner {
      border: 4px solid rgba(0,217,255,0.2);
      border-top: 4px solid #00d9ff;
      border-radius: 50%;
      width: 30px;
      height: 30px;
      animation: spin 1s linear infinite;
      display: inline-block;
      vertical-align: middle;
      margin-right: 10px;
    }
    @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
    /* Progress Bar with Glow */
    .progress-container {
      width: 80%;
      background: #333;
      border-radius: 20px;
      margin: 20px auto;
      height: 20px;
      overflow: hidden;
      box-shadow: inset 0 0 5px #00d9ff;
    }
    .progress-bar {
      height: 100%;
      width: 0%;
      background: linear-gradient(45deg, #00d9ff, #00bcd4);
      transition: width 0.5s ease;
      animation: progressGlow 2s infinite;
    }
    @keyframes progressGlow {
      0%, 100% { box-shadow: 0 0 10px #00d9ff; }
      50% { box-shadow: 0 0 20px #00bcd4; }
    }
    /* Status and Usage Information with emojis */
    .status {
      font-size: 18px;
      margin-top: 20px;
      font-weight: bold;
      min-height: 40px;
    }
    .usage-info {
      margin: 15px 0;
      font-size: 16px;
      color: #ffeb3b;
    }
    /* Intro text (non-editable) */
    #intro {
      font-size: 16px;
      margin: 15px 0;
      color: #ffeb3b;
    }
  </style>
  <script>
    // Set the initial daily remaining count and reset timestamp from PHP.
    var dailyRemaining = 200;
    var resetTimestamp = 0;

    // Update usage info: remaining requests and countdown timer.
    function updateUsageDisplay() {
      if (resetTimestamp > 0) {
        var now = new Date().getTime();
        var diff = resetTimestamp * 1000 - now;
        if(diff < 0) diff = 0;
        var hours = Math.floor(diff / 3600000);
        var minutes = Math.floor((diff % 3600000) / 60000);
        var seconds = Math.floor((diff % 60000) / 1000);
        document.getElementById("usageInfo").innerHTML = "🕒 Daily Requests Remaining: <strong>" + dailyRemaining + "</strong> / 200. Reset in: " +
          ("0" + hours).slice(-2) + "h " + ("0" + minutes).slice(-2) + "m " + ("0" + seconds).slice(-2) + "s";
      } else {
        document.getElementById("usageInfo").innerHTML = "🕒 Daily Requests Remaining: <strong>" + dailyRemaining + "</strong> / 200. Timer starts on your first request!";
      }
    }
    setInterval(updateUsageDisplay, 1000);
    updateUsageDisplay();

    // Save editable texts via AJAX.
    function saveTexts() {
      const title = document.getElementById("title").innerText;
      const subtitle = document.getElementById("subtitle").innerText;
      const footer = document.getElementById("footer").innerText;
      const formData = new FormData();
      formData.append("action", "save_texts");
      formData.append("title", title);
      formData.append("subtitle", subtitle);
      formData.append("footer", footer);

      fetch("", { method: "POST", body: formData })
        .then(response => response.json())
        .then(data => alert(data.message))
        .catch(error => console.error("Error saving texts:", error));
    }

    // Recursive function to send SMS requests.
    function sendSingleSMS(phone, currentCount, totalCount) {
      const formData = new FormData();
      formData.append("action", "send_sms");
      formData.append("phone", phone);

      fetch("", { method: "POST", body: formData })
        .then(response => response.json())
        .then(data => {
          if (!data.success) {
            document.getElementById("status").innerHTML = "<span style='color:#ff4444;'>" + data.message + "</span>";
            document.getElementById("bombBtn").disabled = false;
            if (data.remaining !== undefined) { dailyRemaining = data.remaining; updateUsageDisplay(); }
            if (data.reset_timestamp !== undefined) { resetTimestamp = data.reset_timestamp; }
            return;
          }
          if (data.remaining !== undefined) { dailyRemaining = data.remaining; updateUsageDisplay(); }
          if (data.reset_timestamp !== undefined) { resetTimestamp = data.reset_timestamp; }
          updateProgress(currentCount, totalCount);
          if (currentCount < totalCount) {
            setTimeout(() => { sendSingleSMS(phone, currentCount + 1, totalCount); }, 5000);
          } else {
            document.getElementById("status").innerHTML = "<span style='color:#00d9ff;'>done✅ āϏāĻŋāĻŽ āϏ⧇āĻ¨ā§āĻĄ āĻšāχāϛ⧇ 😏>";
            document.getElementById("bombBtn").disabled = false;
          }
        })
        .catch(error => {
          document.getElementById("status").innerHTML = "<span style='color:#ff4444;'>❌ āĻĻ⧁āϰ āĻšāĻžāϞāĻž āĻšā§Ÿ āύāĻŋ āφāĻŦāĻžāϰ āĻŽāĻžāϰ</span>";
          document.getElementById("bombBtn").disabled = false;
          console.error("Error sending SMS:", error);
        });
    }

    // Update the progress bar.
    function updateProgress(currentCount, totalCount) {
      const progressPercent = Math.round((currentCount / totalCount) * 100);
      document.getElementById("progressBar").style.width = progressPercent + "%";
      document.getElementById("status").innerHTML = "<div class='spinner'></div>🚀āϏāĻŋāĻŽ āĻĄāĻŋāϏāϟāĻŋāĻ‚ " 
        + currentCount + " of " + totalCount + " (" + progressPercent + "%)";
    }

    // Start the SMS sequence.
    function sendSMS() {
      const phone = document.getElementById("phone").value.trim();
      const amount = parseInt(document.getElementById("amount").value) || 1;
      if (!/^01\d{9}$/.test(phone)) {
        alert("❌ āύāĻŽā§āĻŦāĻžāϰ ā§§ā§§ āĻšā§Ÿ āύāĻŋ '01'.");
        return;
      }
      document.getElementById("bombBtn").disabled = true;
      document.getElementById("progressBar").style.width = "0%";
      document.getElementById("status").innerHTML = "<div class='spinner'></div>âŗ Initializing SMS dispatch sequence...";
      sendSingleSMS(phone, 1, amount);
    }
  </script>
</head>
<body>
  <div class="container">
    <!-- Editable Heading and Subheading -->
    <h1 id="title" contenteditable="" onblur="saveTexts()">SOMSER BOMBER </h1>
    <p id="subtitle" contenteditable="" onblur="saveTexts()"> āύāĻŽā§āĻŦāϰ āĻĻāĻŋā§Ÿā§‡ āĻāĻŽāĻžāωāĻ¨ā§āϟ ⧍ā§Ļā§ĻāĻĻāĻŋ⧟āĻž āϗ⧁āϤāĻž āĻĻāĻžāĻ“ đŸ˜Ŧ</p>
    
    <!-- Introductory message -->
    <div id="intro">
      â„ĸ Islamic Cyber Security Force 
    </div>
    
    <!-- Usage Info & Countdown -->
    <div id="usageInfo" class="usage-info"></div>
    
    <!-- Input Fields -->
    <input type="text" id="phone" placeholder="āύāĻŽā§āĻŦāĻžāϰ āĻĻāĻžāĻ“ (e.g., 01XXXXXXXXX)" maxlength="11">
    <input type="number" id="amount" placeholder="āĻāĻŽāĻžāωāĻ¨ā§āϟ" min="1">
    
    <!-- Start Button -->
    <button class="button" id="bombBtn" onclick="sendSMS()">āϗ⧁āϤāĻž āĻĻāĻžāĻ“</button>
 
    <!-- Progress Bar -->
    <div class="progress-container">
      <div class="progress-bar" id="progressBar"></div>
    </div>

    <!-- Status Message -->
    <p class="status" id="status"></p>

    <!-- Editable Footer -->
    <footer id="footer" contenteditable="" onblur="saveTexts()">Š MADE BY  SOMSER </footer>
  </div>


</body></html>