TELEGRAM: @RAMA_MODZ

AUTO-BYPASS SHORTENER LINKS (ENCURTARAPIDO). SKIP WAITING TIME, AUTO-CLICK BUTTONS, AND GET YOUR LINK FASTER. BY @RAMA_MODZ

คุณจะต้องติดตั้งส่วนขยาย เช่น Tampermonkey, Greasemonkey หรือ Violentmonkey เพื่อติดตั้งสคริปต์นี้

You will need to install an extension such as Tampermonkey to install this script.

คุณจะต้องติดตั้งส่วนขยาย เช่น Tampermonkey หรือ Violentmonkey เพื่อติดตั้งสคริปต์นี้

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name        TELEGRAM: @RAMA_MODZ
// @namespace    https://t.me/RAMA_MODZ
// @version      1.5
// @description  AUTO-BYPASS SHORTENER LINKS (ENCURTARAPIDO). SKIP WAITING TIME, AUTO-CLICK BUTTONS, AND GET YOUR LINK FASTER. BY @RAMA_MODZ
// @author       RAMA_MODZ
// @match        https://aincrad.decryptvpn.xyz/*
// @match        https://precisosaberinvestir.com.br/*
// @match        https://encurtarapido.com/*
// @match        *://*encurtarapido.com/*
// @grant        none
// @run-at       document-start
// @license      CC BY-NC-ND 4.0
// @homepageURL  https://t.me/RAMA_MODZ
// @supportURL   https://t.me/RAMA_MODZ

// ==/UserScript==

(function() {
    'use strict';

    const CONFIG = {
        TOKEN: '3TMdueEaUw',
        BASE_URL: 'https://encurtarapido.com/',
        CLICK_COOLDOWN: 5000,
        TIMER_WAIT_SECONDS: 80 
    };

    const CLICK_KEYWORDS = ["Clique aqui para prosseguir", "clique aqui para prosseguir"];
    const FINAL_BUTTON_KEYWORDS = ["Obter link", "obter link", "Obter Link"];
    
    
    const TIMER_INDICATORS = [
        '#tp-count', '.timer', '.countdown', 
        'Seu link está quase pronto', 'aguarde', 'wait'
    ];

    let timerPhaseActive = false;
    let lastClickTime = 0;

    
    function injectBranding() {
        // watermark disabled
    }

    
    function showCentralToast() {
        if (document.getElementById('xenox-toast-lock')) return;

        // Inject keyframe animations
        const style = document.createElement('style');
        style.id = 'xenox-styles';
        style.textContent = `
            @keyframes xenox-fadeIn {
                from { opacity: 0; transform: translate(-50%, -48%) scale(0.95); }
                to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
            }
            @keyframes xenox-pulse-ring {
                0%   { box-shadow: 0 0 0 0 rgba(0,242,255,0.4), 0 0 30px rgba(0,242,255,0.3); }
                70%  { box-shadow: 0 0 0 12px rgba(0,242,255,0), 0 0 30px rgba(0,242,255,0.3); }
                100% { box-shadow: 0 0 0 0 rgba(0,242,255,0), 0 0 30px rgba(0,242,255,0.3); }
            }
            @keyframes xenox-glow-text {
                0%, 100% { text-shadow: 0 0 10px #00f2ff, 0 0 20px #00f2ff; }
                50%       { text-shadow: 0 0 20px #00f2ff, 0 0 40px #00f2ff, 0 0 60px #00b8ff; }
            }
            @keyframes xenox-warn-flash {
                0%, 100% { color: #ff4444; }
                50%       { color: #ff8800; }
            }
            @keyframes xenox-bar-shine {
                0%   { background-position: -200% center; }
                100% { background-position: 200% center; }
            }
            @keyframes xenox-particle-float {
                0%   { transform: translateY(0px) translateX(0px) scale(1); opacity: 0.7; }
                33%  { transform: translateY(-18px) translateX(6px) scale(1.1); opacity: 1; }
                66%  { transform: translateY(-8px) translateX(-6px) scale(0.9); opacity: 0.8; }
                100% { transform: translateY(0px) translateX(0px) scale(1); opacity: 0.7; }
            }
            #xenox-btn-tg:hover {
                transform: scale(1.06) !important;
                box-shadow: 0 0 18px rgba(0,136,204,0.9) !important;
            }
        `;
        document.head.appendChild(style);

        // Overlay backdrop
        const overlay = document.createElement('div');
        overlay.id = 'xenox-overlay';
        overlay.style.cssText = `
            position: fixed; inset: 0;
            background: rgba(0,0,0,0.65);
            backdrop-filter: blur(3px);
            z-index: 2147483640;
            pointer-events: none;
        `;
        document.body.appendChild(overlay);

        // Canvas for particles
        const canvas = document.createElement('canvas');
        canvas.id = 'xenox-canvas';
        canvas.style.cssText = `
            position: fixed; inset: 0;
            width: 100%; height: 100%;
            z-index: 2147483641;
            pointer-events: none;
        `;
        document.body.appendChild(canvas);

        // Particle system — use actual pixel dimensions
        const ctx = canvas.getContext('2d');
        canvas.width = window.screen.width;
        canvas.height = window.screen.height;

        const W = canvas.width;
        const H = canvas.height;

        const particles = Array.from({ length: 70 }, () => ({
            x: Math.random() * W,
            y: Math.random() * H,
            r: Math.random() * 2.8 + 0.8,
            dx: (Math.random() - 0.5) * 2.2,
            dy: (Math.random() - 0.5) * 2.2,
            hue: Math.random() * 60 + 170,
            alpha: Math.random() * 0.5 + 0.4
        }));

        let particleRAF;
        function drawParticles() {
            ctx.clearRect(0, 0, W, H);
            particles.forEach(p => {
                // glow dot
                ctx.beginPath();
                ctx.arc(p.x, p.y, p.r, 0, Math.PI * 2);
                ctx.fillStyle = `hsla(${p.hue}, 100%, 65%, ${p.alpha})`;
                ctx.shadowColor = `hsla(${p.hue}, 100%, 65%, 1)`;
                ctx.shadowBlur = 8;
                ctx.fill();
                // move
                p.x += p.dx;
                p.y += p.dy;
                // wrap around edges
                if (p.x < 0) p.x = W;
                if (p.x > W) p.x = 0;
                if (p.y < 0) p.y = H;
                if (p.y > H) p.y = 0;
                p.hue += 0.5;
            });
            // connecting lines
            ctx.shadowBlur = 0;
            for (let i = 0; i < particles.length; i++) {
                for (let j = i + 1; j < particles.length; j++) {
                    const dist = Math.hypot(particles[i].x - particles[j].x, particles[i].y - particles[j].y);
                    if (dist < 90) {
                        ctx.beginPath();
                        ctx.moveTo(particles[i].x, particles[i].y);
                        ctx.lineTo(particles[j].x, particles[j].y);
                        ctx.strokeStyle = `rgba(0,242,255,${0.15 * (1 - dist / 90)})`;
                        ctx.lineWidth = 0.6;
                        ctx.stroke();
                    }
                }
            }
            particleRAF = requestAnimationFrame(drawParticles);
        }
        drawParticles();

        // Main toast card
        const toast = document.createElement('div');
        toast.id = 'xenox-toast-lock';
        toast.style.cssText = `
            position: fixed; top: 50%; left: 50%;
            transform: translate(-50%, -50%);
            width: 88%; max-width: 360px;
            background: linear-gradient(160deg, #0a0a1a 0%, #060612 60%, #0a0a1a 100%);
            border: 1.5px solid rgba(0,242,255,0.6);
            border-radius: 20px;
            padding: 24px 22px 20px;
            color: #fff;
            z-index: 2147483646;
            text-align: center;
            font-family: 'Segoe UI', sans-serif;
            animation: xenox-fadeIn 0.4s ease, xenox-pulse-ring 2s infinite;
            pointer-events: none;
            overflow: hidden;
        `;

        toast.innerHTML = `
            <!-- Top glow stripe -->
            <div style="position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,#00f2ff,#a78bfa,#00f2ff,transparent);"></div>

            <!-- Warning label -->
            <div style="
                display:inline-flex; align-items:center; gap:6px;
                background:rgba(255,68,68,0.12); border:1px solid rgba(255,68,68,0.35);
                border-radius:30px; padding:5px 14px; margin-bottom:14px;
                font-size:13px; font-weight:700; letter-spacing:0.5px;
                animation: xenox-warn-flash 1.4s infinite;
            ">⚠️ DON'T TOUCH ANYTHING!</div>

            <!-- Timer -->
            <div style="position:relative; margin-bottom:6px;">
                <div id="xenox-toast-time" style="
                    font-size:78px; font-weight:900; line-height:1;
                    color:#00f2ff;
                    animation: xenox-glow-text 1.8s ease-in-out infinite;
                    letter-spacing:-2px;
                ">${CONFIG.TIMER_WAIT_SECONDS}</div>
                <div style="font-size:11px; color:rgba(0,242,255,0.5); letter-spacing:3px; text-transform:uppercase; margin-top:-4px;">seconds</div>
            </div>

            <!-- Status -->
            <div style="font-size:12px; color:#888; margin:10px 0 12px; letter-spacing:0.3px;">
                🔄 Bypass in progress...
            </div>

            <!-- Progress bar -->
            <div style="background:rgba(255,255,255,0.07); border-radius:99px; height:6px; overflow:hidden; margin-bottom:16px;">
                <div id="xenox-progress-bar" style="
                    height:100%; width:100%;
                    background: linear-gradient(90deg, #00f2ff, #a78bfa, #00f2ff);
                    background-size: 200% auto;
                    border-radius:99px;
                    animation: xenox-bar-shine 2s linear infinite;
                    transition: width 1s linear;
                "></div>
            </div>

            <!-- Divider -->
            <div style="border-top:1px solid rgba(255,255,255,0.07); padding-top:14px;">
                <a id="xenox-btn-tg" href="https://t.me/RAMA_MODZ" target="_blank" style="
                    display: inline-flex; align-items: center; gap: 8px;
                    pointer-events: all;
                    background: linear-gradient(135deg, #0088cc 0%, #00b4d8 100%);
                    color: #fff;
                    font-weight: 700;
                    font-size: 13px;
                    text-decoration: none;
                    padding: 9px 20px;
                    border-radius: 30px;
                    box-shadow: 0 0 14px rgba(0,136,204,0.5);
                    letter-spacing: 0.4px;
                    transition: transform 0.2s, box-shadow 0.2s;
                ">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="white"><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm5.894 8.221l-1.97 9.28c-.145.658-.537.818-1.084.508l-3-2.21-1.447 1.394c-.16.16-.295.295-.605.295l.213-3.053 5.56-5.023c.242-.213-.054-.333-.373-.12l-6.871 4.326-2.962-.924c-.643-.204-.657-.643.136-.953l11.57-4.461c.537-.194 1.006.131.833.941z"/></svg>
                    t.me/RAMA_MODZ
                </a>
            </div>

            <!-- Bottom glow stripe -->
            <div style="position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(167,139,250,0.5),transparent);"></div>
        `;

        document.body.appendChild(toast);

        // Animate progress bar shrinking
        const totalTime = CONFIG.TIMER_WAIT_SECONDS;
        let timeLeft = totalTime;

        const itv = setInterval(() => {
            timeLeft--;
            const disp = document.getElementById('xenox-toast-time');
            const bar  = document.getElementById('xenox-progress-bar');
            if (disp) disp.textContent = timeLeft;
            if (bar)  bar.style.width = ((timeLeft / totalTime) * 100) + '%';

            if (timeLeft <= 0) {
                clearInterval(itv);
                cancelAnimationFrame(particleRAF);
                canvas.remove();
                overlay.remove();
                toast.remove();
                const s = document.getElementById('xenox-styles');
                if (s) s.remove();
                findFinalAndClick();
            }
        }, 1000);
    }

    
    function simulateHumanClick(el) {
        if (!el || el.offsetParent === null) return;
        const rect = el.getBoundingClientRect();
        const x = rect.left + rect.width / 2;
        const y = rect.top + rect.height / 2;
        const opts = { bubbles: true, cancelable: true, view: window, clientX: x, clientY: y };
        el.dispatchEvent(new MouseEvent('mousedown', opts));
        el.dispatchEvent(new MouseEvent('mouseup', opts));
        el.dispatchEvent(new MouseEvent('click', opts));
        if (typeof el.click === 'function') el.click();
    }

    
    function automationLoop() {
        const bodyText = (document.body?.innerText || '').toLowerCase();
        
        
        const isTimerPage = TIMER_INDICATORS.some(indicator => {
            if (indicator.startsWith('.') || indicator.startsWith('#')) {
                return document.querySelector(indicator) !== null;
            }
            return bodyText.includes(indicator);
        });

        if (isTimerPage) {
            if (!timerPhaseActive) {
                timerPhaseActive = true;
                showCentralToast();
            }
            return;
        }

        if (timerPhaseActive) return;

        
        const elements = document.querySelectorAll('button, a, .btn, .button');
        for (const el of elements) {
            const text = (el.innerText || el.textContent || '').trim();
            if (CLICK_KEYWORDS.some(kw => text === kw || text.includes(kw))) {
                const now = Date.now();
                if (now - lastClickTime > CONFIG.CLICK_COOLDOWN) {
                    lastClickTime = now;
                    simulateHumanClick(el);
                    break;
                }
            }
        }
    }

    function findFinalAndClick() {
        const elements = document.querySelectorAll('button, a, .btn, .button');
        for (const el of elements) {
            const text = (el.innerText || el.textContent || '').trim();
            if (FINAL_BUTTON_KEYWORDS.some(kw => text === kw || text.includes(kw))) {
                simulateHumanClick(el);
                break;
            }
        }
    }

    
    function handleRedirect() {
        if (window.location.hostname.includes('precisosaberinvestir.com.br')) {
            const p = new URLSearchParams(window.location.search);
            const sf_v = p.get('sf_v') || p.get('id');
            const sf_ts = p.get('sf_ft_ts') || p.get('ts');
            const sf_sig = p.get('sf_sig') || p.get('sf_ft_sig');
            if (sf_v === CONFIG.TOKEN && sf_sig) {
                window.location.replace(`${CONFIG.BASE_URL}${CONFIG.TOKEN}?rtgok=1&sf_ft_ts=${encodeURIComponent(sf_ts || '')}&sf_ft_sig=${encodeURIComponent(sf_sig)}`);
            }
        }
    }

    function init() {
        injectBranding();
        handleRedirect();
        setInterval(automationLoop, 1500);
    }

    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);
    else init();
})();