[Premium] Faucet Monitor with Faucetpay Rotator

Fully automated support for HCaptcha, ReCaptcha, and Antibot measures with a user-friendly interface on https://coinfinity.top/faucetlist for site management and settings. Updated weekly for optimal performance.

目前為 2024-03-07 提交的版本,檢視 最新版本

// ==UserScript==
// @name         [Premium] Faucet Monitor with Faucetpay Rotator
// @namespace    https://greasyfork.org/users/1162863
// @version      3.9.1
// @description  Fully automated support for HCaptcha, ReCaptcha, and Antibot measures with a user-friendly interface on https://coinfinity.top/faucetlist for site management and settings. Updated weekly for optimal performance.
// @author       Andrewblood
// @match        *://*.coinfinity.top/*
// @match        *://*.faucetpay.io/*
// @match        *://*.dogenetwork.fun/*
// @match        *://*.solnetwork.fun/*
// @match        *://*.sollcrypto.com/*
// @match        *://*.cryptoclaps.com/*
// @match        *://*.baltoniearn.com/*
// @match        *://*.vptron.online/*
// @match        *://*.claimcoins.site/*
// @match        *://*.bnbminers.site/*
// @match        *://*.ltcmines.site/*
// @match        *://*.tronxminer.com/*
// @match        *://*.etcoin.site/*
// @match        *://*.fescrypto.com/*
// @match        *://*.sitoo.site/*
// @match        *://*.earnsolana.xyz/*
// @match        *://*.autofaucet.dutchycorp.space/*
// @match        *://*.freebitco.in/*
// @match        *://*.rollercoin.com/*
// @match        *://*.coinpayu.com/*
// @match        *://*.firefaucet.win/*
// @match        *://*.freebitcoin.io/*
// @match        *://*.freebinancecoin.com/*
// @match        *://*.free-doge.com/*
// @match        *://*.freetether.com/*
// @match        *://*.freecardano.com/*
// @match        *://*.freedash.io/*
// @match        *://*.freeethereum.com/*
// @match        *://*.freebfg.com/*
// @match        *://*.freebittorrent.com/*
// @match        *://*.freepancake.com/*
// @match        *://*.freematic.com/*
// @match        *://*.freeshibainu.com/*
// @match        *://*.coinfaucet.io/*
// @match        *://*.freenem.com/*
// @match        *://*.freeusdcoin.com/*
// @match        *://*.free-tron.com/*
// @match        *://*.freesteam.io/*
// @match        *://*.freeneo.io/*
// @match        *://*.free-ltc.com/*
// @match        *://*.freecryptom.com/*
// @icon         https://coinfinity.top/favicon.ico
// @require      https://cdnjs.cloudflare.com/ajax/libs/tesseract.js/5.0.4/tesseract.min.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/tesseract.js/5.0.4/worker.min.js
// @grant        GM_addStyle
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_listValues
// @grant        GM_deleteValue
// @grant        GM_getTabs
// @grant        GM_saveTab
// @grant        unsafeWindow
// @grant        window.close
// @grant        window.focus
// @antifeature  referral-link     Referral-Link is in this Script integrated.
// @antifeature  ads               Advertisment Button with usefull sites.
// @license      Copyright Andrewblood
// ==/UserScript==
/*
To successfully set up the script, please follow these steps:

1. First, install the script in your preferred browser extension, preferably in Tampermonkey.
2. Then, visit the website <a href="https://coinfinity.top/faucetlist" target="_blank">coinfinity.top/faucetlist</a>.
3. At the bottom of the page, you will find several buttons displayed by the script to configure it. Click on the "About" button to get more information.

Features:

- User Interface: You can use the interface for managing websites, installing requirements, saving Faucetpay email address, and handling stored URLs
- Settings Integration: Provides extension and script recommendations with install buttons for enhanced functionality.
- HCaptcha/ReCaptcha/Antibot Handling: Intelligently tackles security challenges, ensuring a smooth claiming process.
- Advanced Automation: Seamlessly fills forms and clicks buttons on Faucet sites, reducing manual effort.
- Efficient Navigation: Automatically moves through supported Faucet URLs, preventing revisits site until next day if it is empty or dayli limit reached for strategic claiming.
- Error Handling: Reloads pages, ensuring up-to-date claiming and avoiding downtime.


        "https://earnsolana.xyz/faucet/currency/btc",
        "https://earnsolana.xyz/faucet/currency/ltc",
        "https://earnsolana.xyz/faucet/currency/doge",
        "https://earnsolana.xyz/faucet/currency/trx",
        "https://earnsolana.xyz/faucet/currency/sol",
        "https://earnsolana.xyz/faucet/currency/bnb",
        "https://earnsolana.xyz/faucet/currency/bch",
        "https://earnsolana.xyz/faucet/currency/eth",
        "https://earnsolana.xyz/faucet/currency/fey",
        "https://earnsolana.xyz/faucet/currency/usdt",
        "https://earnsolana.xyz/faucet/currency/zec",
        "https://earnsolana.xyz/faucet/currency/dash",
        "https://earnsolana.xyz/faucet/currency/dgb"
*/
(function() {
    'use strict';


    GM_addStyle(`
    .overlay-button {
        position: fixed;
        bottom: 10px;
    }

    #advertisementButton {
        left: 10px;
    }

    #faucetMonitorButton {
        left: calc(50% - 70px);
        transform: translateX(-50%);
    }

    #faucetpayRotatorButton {
        bottom: 10px;
        right: calc(50% - 150px);
    }

    #settingsButton {
        right: 75px;
    }

    #aboutButton {
        right: 10px;
    }
    #overlay {
        display: none;
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.5);
        z-index: 999;
    }
    #overlay-content {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        background-color: white;
        padding: 20px;
        border-radius: 5px;
        max-height: 80%;
        overflow-y: auto;
    }
    #overlay-content table th,
    #overlay-content table td {
        padding-right: 15px;
    }

    #overlay-content table th,
    #overlay-content table td {
        padding-right: 15px;
    }
#resetAllUrlsButton {
    display: block;
    margin: 0 auto;
    margin-top: 10px;
}
        #coinBTC, #coinETH, #coinADA, #coinSOL, #coinBNB, #coinXRP,
        #coinUSDT, #coinDOGE, #coinLTC, #coinBCH, #coinTRX, #coinDGB,
        #coinDASH, #coinZEC, #coinMATIC, #coinFEY {
            width: 450px;
        }
`);

    var urls = [
        { name: 'Faucetpay - Dayli Reward', url: 'https://faucetpay.io' },
        { name: 'Freebitco.in - Faucet Roll/Auto choose 1000% BTC Bonus/WoF Spin', url: 'https://freebitco.in' },
        { name: 'Dutchycorp - DUTCHY Roll/Coin Roll/PTC Wall/Surf Ads/Shortlink Wall', url: 'https://autofaucet.dutchycorp.space' },
        { name: 'Firefaucet - Dayli Bonus/Faucet Roll/Level Rewards/Dayli Tasks/Shortlinks/PTC with captcha solver (70% success rate)', url: 'https://firefaucet.win' },
        { name: 'Coinpayu - Window and Surf Ads window close by hand', url: 'https://www.coinpayu.com' },
        { name: 'Rollercoin - Marketplace buyer', url: 'https://rollercoin.com' },
        { name: 'CF Freebitcoin - Shortlinks/Promotions Bypass', url: 'https://app.freebitcoin.io' },
        { name: 'CF Freebinancecoin - Shortlinks/Promotions Bypass', url: 'https://app.freebinancecoin.com' },
        { name: 'CF Freedoge - Shortlinks/Promotions Bypass', url: 'https://app.free-doge.com' },
        { name: 'CF Freetether - Shortlinks/Promotions Bypass', url: 'https://app.freetether.com' },
        { name: 'CF Freecardano - Shortlinks/Promotions Bypass', url: 'https://app.freecardano.com' },
        { name: 'CF Freedash - Shortlinks/Promotions Bypass', url: 'https://app.freedash.io' },
        { name: 'CF Freeethereum - Shortlinks/Promotions Bypass', url: 'https://app.freeethereum.com' },
        { name: 'CF Freebfg - Shortlinks/Promotions Bypass', url: 'https://app.freebfg.com' },
        { name: 'CF Freebittorrent - Shortlinks/Promotions Bypass', url: 'https://app.freebittorrent.com' },
        { name: 'CF Freepancake - Shortlinks/Promotions Bypass', url: 'https://app.freepancake.com' },
        { name: 'CF Freematic - Shortlinks/Promotions Bypass', url: 'https://app.freematic.com' },
        { name: 'CF Freeshibainu - Shortlinks/Promotions Bypass', url: 'https://app.freeshibainu.com' },
        { name: 'CF Coinfaucet - Shortlinks/Promotions Bypass', url: 'https://app.coinfaucet.io' },
        { name: 'CF Freenem - Shortlinks/Promotions Bypass', url: 'https://app.freenem.com' },
        { name: 'CF Freeusdcoin - Shortlinks/Promotions Bypass', url: 'https://app.freeusdcoin.com' },
        { name: 'CF Free-tron - Shortlinks/Promotions Bypass', url: 'https://app.free-tron.com' },
        { name: 'CF Freesteam - Shortlinks/Promotions Bypass', url: 'https://app.freesteam.io' },
        { name: 'CF Freeneo - Shortlinks/Promotions Bypass', url: 'https://app.freeneo.io' },
        { name: 'CF Free-ltc - Shortlinks/Promotions Bypass', url: 'https://app.free-ltc.com' },
        { name: 'CF Freecryptom - Shortlinks/Promotions Bypass', url: 'https://app.freecryptom.com' }
    ];

    var faucetpayurls = [
        "https://claimcoins.site/reward/bitcoin/",
        "https://bnbminers.site/earns/bitcoin/",
        "https://etcoin.site/earn/bitcoin/",
        "https://fescrypto.com/faucet/bitcoin/",
        "https://tronxminer.com/rewards/bitcoin/",
        "https://sollcrypto.com/home/page/bitcoin/",
        "https://sitoo.site/page/reward/BTC/",
        "https://ltcmines.site/earns/bitcoin/",
        "https://baltoniearn.com/claim/tron/",
        "https://vptron.online/TRX/",
        "https://bnbminers.site/earns/tron/",
        "https://claimcoins.site/reward/tron/",
        "https://ltcmines.site/earns/tron/",
        "https://tronxminer.com/rewards/tron/",
        "https://cryptoclaps.com/earn/tron/",
        "https://sitoo.site/page/reward/TRX/",
        "https://fescrypto.com/faucet/tron/",
        "https://etcoin.site/earn/tron/",
        "https://sollcrypto.com/home/page/tron/",
        "https://claimcoins.site/reward/doge/",
        "https://ltcmines.site/earns/doge/",
        "https://tronxminer.com/rewards/doge/",
        "https://etcoin.site/earn/doge/",
        "https://cryptoclaps.com/earn/dogecoin/",
        "https://sollcrypto.com/home/page/doge/",
        "https://fescrypto.com/faucet/doge/",
        "https://claimcoins.site/reward/litecoin/",
        "https://bnbminers.site/earns/litecoin/",
        "https://ltcmines.site/earns/litecoin/",
        "https://cryptoclaps.com/earn/litecoin/",
        "https://etcoin.site/earn/litecoin/",
        "https://sollcrypto.com/home/page/litecoin/",
        "https://claimcoins.site/reward/binance/",
        "https://etcoin.site/earn/binance/",
        "https://bnbminers.site/earns/binance/",
        "https://ltcmines.site/earns/binance/",
        "https://tronxminer.com/rewards/binance/",
        "https://sollcrypto.com/home/page/binance/",
        "https://cryptoclaps.com/earn/binance/",
        "https://tronxminer.com/rewards/ripple/",
        "https://claimcoins.site/reward/ripple/",
        "https://bnbminers.site/earns/ripple/",
        "https://ltcmines.site/earns/ripple/",
        "https://cryptoclaps.com/earn/xrp/",
        "https://sollcrypto.com/home/page/xrp/",
        "https://etcoin.site/earn/ripple/",
        "https://bnbminers.site/earns/ethereum/",
        "https://ltcmines.site/earns/ethereum/",
        "https://cryptoclaps.com/earn/ethereum/",
        "https://sollcrypto.com/home/page/ethereum/",
        "https://etcoin.site/earn/ethereum/",
        "https://cryptoclaps.com/earn/polygon/",
        "https://cryptoclaps.com/earn/usdt/",
        "https://sollcrypto.com/home/page/digibyte/",
        "https://sollcrypto.com/home/page/bch/",
        "https://cryptoclaps.com/earn/bch/",
        "https://cryptoclaps.com/earn/dash/",
        "https://sollcrypto.com/home/page/dash/",
        "https://cryptoclaps.com/earn/zcash/",
        "https://sollcrypto.com/home/page/zcash/",
        "https://tronxminer.com/rewards/feyorra/",
        "https://bnbminers.site/earns/feyorra/",
        "https://cryptoclaps.com/earn/solana/",
        "https://sollcrypto.com/home/page/solana/",
    ];

    const referralLinks = {
        "https://faucetpay.io/": "https://faucetpay.io/?r=2922788",
        "https://freebitco.in/signup/?op=s": "https://freebitco.in/signup/?op=s&r=3595810",
        "https://autofaucet.dutchycorp.space/signup.php": "https://autofaucet.dutchycorp.space/signup.php?r=Andrewblood",
        "https://www.coinpayu.com/": "https://www.coinpayu.com/?r=Andrewblood",
        "https://rollercoin.com/": "https://rollercoin.com/?r=llfv26zk",
        "https://rollercoin.com/sign-up": "https://rollercoin.com/sign-up?r=llfv26zk",
        "https://earnsolana.xyz/": "https://earnsolana.xyz/?r=8455",
        "https://freebitcoin.io/": "https://freebitcoin.io/?ref=804096",
        "https://freebinancecoin.com/": "https://freebinancecoin.com/?ref=418938",
        "https://free-doge.com/": "https://free-doge.com/?ref=334834",
        "https://freeusdcoin.com/": "https://freeusdcoin.com/?ref=237334",
        "https://freecryptom.com/": "https://freecryptom.com/?ref=145077",
        "https://free-ltc.com/": "https://free-ltc.com/?ref=278353",
        "https://freedash.io/": "https://freedash.io/?ref=241665",
        "https://freeneo.io/": "https://freeneo.io/?ref=172683",
        "https://freecardano.com/": "https://freecardano.com/?ref=495783",
        "https://freebfg.com/": "https://freebfg.com/?ref=34816",
        "https://freepancake.com/": "https://freepancake.com/?ref=63758",
        "https://freebittorrent.com/": "https://freebittorrent.com/?ref=33463",
        "https://coinfaucet.io/": "https://coinfaucet.io/?ref=966105",
        "https://freematic.com/": "https://freematic.com/?ref=102515",
        "https://freetether.com/": "https://freetether.com/?ref=353801",
        "https://freesteam.io/": "https://freesteam.io/?ref=190554",
        "https://freenem.com/": "https://freenem.com/?ref=367461",
        "https://freeshibainu.com/": "https://freeshibainu.com/?ref=206136",
        "https://free-tron.com/": "https://free-tron.com/?ref=526291",
        "https://freeethereum.com/": "https://freeethereum.com/?ref=430971"
    };

    var URLnow = window.location.href;

    if (referralLinks[URLnow] && URLnow !== referralLinks[URLnow]) {
        window.location.replace(referralLinks[URLnow]);
    }



    if (window.location.href.includes("firefaucet.win/register")) {
        function checkAndRedirect() {
            var referByCookie = getCookie("refer_by");

            // Überprüfen, ob der Cookie existiert und den richtigen Wert hat
            if (referByCookie !== null && referByCookie === "79539") {
                console.log("Cookie 'refer_by' mit dem richtigen Wert gefunden.");
            } else {
                console.log("Cookie 'refer_by' nicht gefunden oder hat den falschen Wert. Weiterleitung...");

                // Durchführung der Weiterleitung
                window.location.href = "https://firefaucet.win/ref/79539";
            }
        }

        // Funktion zur Abfrage von Cookies
        function getCookie(name) {
            var value = "; " + document.cookie;
            var parts = value.split("; " + name + "=");
            if (parts.length == 2) return parts.pop().split(";").shift();
        }

        // Überprüfung und Weiterleitung beim Laden der Seite
        checkAndRedirect();
    }





    var storedUrls = GM_getValue('storedUrls', []) || [];

    if (window.location.href.includes("coinfinity.top/faucetlist")){

        function createButton(id, text, content) {
            var button = document.createElement('button');
            button.id = id;
            button.className = 'overlay-button';
            button.innerHTML = text;
            button.addEventListener('click', function() {
                var overlay = document.getElementById('overlay');
                overlay.style.display = 'block';
                var overlayContent = document.getElementById('overlay-content');
                overlayContent.innerHTML = content;
            });
            document.body.appendChild(button);
        }

        createButton('advertisementButton', 'Advertisement', '<h2>Advertisement</h2><p>Explore more earning opportunities from script developer on <a href="https://coinfinity.top/downloads" target="_blank">Coinfinity.top</a></p>');

        createButton('faucetMonitorButton', 'Faucet Monitor', '<h2>Faucet Monitor</h2><p>Faucet Monitor content goes here</p>');

        function showFaucetMonitorTable() {
            var tableContent = '<h2>Faucet Monitor</h2><table><tr><th>Connect</th><th>Name</th><th>Active</th></tr>';

            urls.forEach(function(item) {
                var isActive = GM_getValue(item.url, false);
                tableContent += '<tr><td><a href="' + item.url + '" target="_blank">Connect</a></td><td>' + item.name + '</td><td><input type="checkbox" id="active-' + item.url + '"' + (isActive ? ' checked' : '') + '></td></tr>';
            });

            tableContent += '</table>';

            var overlay = document.getElementById('overlay');
            overlay.style.display = 'block';
            var overlayContent = document.getElementById('overlay-content');
            overlayContent.innerHTML = tableContent;

            urls.forEach(function(item) {
                var checkbox = document.getElementById('active-' + item.url);
                checkbox.addEventListener('change', function() {
                    GM_setValue(item.url, checkbox.checked);
                });
            });
        }

        document.getElementById('faucetMonitorButton').addEventListener('click', showFaucetMonitorTable);

        createButton('faucetpayRotatorButton', 'Faucetpay Rotator', '<h2>Faucetpay Rotator</h2><p>Faucetpay Rotator content goes here</p>');

        function showFaucetpayUrlsTable() {
            var tableContent = '<h2>Faucetpay Rotator</h2><table><tr><th>Connect</th><th>URL</th><th>Deactivated Until</th><th>Reason</th><th>Reset Time</th></tr>';

            faucetpayurls.forEach(function(url) {
                var storedUrlInfo = storedUrls.find(function(storedUrl) {
                    return storedUrl.url === url;
                });

                var connectLink = '<a href="' + url + '" target="_blank">Connect</a>';
                var time = 'N/A';
                var reason = 'N/A';
                var resetTimeLink = '';

                if (storedUrlInfo && new Date(storedUrlInfo.timestamp) > new Date()) {
                    time = storedUrlInfo.timestamp;
                    reason = storedUrlInfo.reason;
                    resetTimeLink = '<a href="#" onclick="resetStoredUrl(\'' + url + '\')">Reset</a>';
                }

                tableContent += '<tr><td>' + connectLink + '</td><td>' + url + '</td><td>' + time + '</td><td>' + reason + '</td><td>' + resetTimeLink + '</td></tr>';
            });

            tableContent += '</table>';

            tableContent += '<button id="resetAllUrlsButton" onclick="resetAllStoredUrls()">Reset All URLs</button>';

            var overlay = document.getElementById('overlay');
            overlay.style.display = 'block';
            var overlayContent = document.getElementById('overlay-content');
            overlayContent.innerHTML = tableContent;
        }

        unsafeWindow.resetStoredUrl = function(url) {
            var storedUrls = GM_getValue('storedUrls', []);
            var indexToRemove = storedUrls.findIndex(function(item) {
                return item.url === url;
            });

            if (indexToRemove !== -1) {
                storedUrls.splice(indexToRemove, 1);
                GM_setValue('storedUrls', storedUrls);
                alert('URL entry reset successfully!');
                showFaucetpayUrlsTable();
            } else {
                alert('URL entry not found!');
            }
        };

        unsafeWindow.resetAllStoredUrls = function () {
            var confirmation = confirm('Are you sure you want to reset all stored URLs?');
            if (confirmation) {
                GM_deleteValue('storedUrls');
                alert('All stored URLs reset successfully!');
                showFaucetpayUrlsTable();
            }
        };

        document.getElementById('faucetpayRotatorButton').addEventListener('click', showFaucetpayUrlsTable);

        // Create Settings button
        createButton('settingsButton', 'Settings', `
 <h2>Download Captcha Solver</h2>
<p>For full automation you need to install this additional scripts.</p>
<ul>
    <li><b>HCaptcha + ReCaptcha:</b> NoCoding Data Scraper and CAPTCHA Solver - <a href="https://chromewebstore.google.com/search/minirpa.net" target="_blank">Install Here</a></li>
    <li><b>Antibot Words:</b> AB Links Solver - <a href="https://greasyfork.org/de/scripts/459453-ab-links-solver" target="_blank">Install Here</a></li>
    <li><b>Cf-Turnstile:</b> Autopass Cloudflare CAPTCHA - <a href="https://greasyfork.org/de/scripts/464785-autopass-cloudflare-captcha" target="_blank">Install Here</a></li>
</ul>
<h3>Faucetpay Settings</h3>
<label for="faucetpayEmail">Save at first your <a href="https://faucetpay.io/?r=2922788" target="_blank">Faucetpay</a> Email:</label>
<input type="text" id="faucetpayEmail" placeholder="Enter your Faucetpay Email">
<button onclick="saveFaucetpayEmail()">Save</button>
<br>
<br>
<p>Then save your Faucetpay Coin Addresses or scan <a href="https://faucetpay.io/page/user-admin/linked-addresses?r=2922788" target="_blank">here</a>.</p>
<label for="coinBTC">Bitcoin (BTC):</label>
<input type="text" id="coinBTC" placeholder="Enter BTC Address"><br>

<label for="coinETH">Ethereum (ETH):</label>
<input type="text" id="coinETH" placeholder="Enter ETH Address"><br>

<label for="coinADA">Cardano (ADA):</label>
<input type="text" id="coinADA" placeholder="Enter ADA Address"><br>

<label for="coinSOL">Solana (SOL):</label>
<input type="text" id="coinSOL" placeholder="Enter SOL Address"><br>

<label for="coinBNB">Binance Coin (BNB):</label>
<input type="text" id="coinBNB" placeholder="Enter BNB Address"><br>

<label for="coinXRP">Ripple (XRP):</label>
<input type="text" id="coinXRP" placeholder="Enter XRP Address"><br>

<label for="coinUSDT">Tether TRC20 (USDT):</label>
<input type="text" id="coinUSDT" placeholder="Enter USDT Address"><br>

<label for="coinDOGE">Dogecoin (DOGE):</label>
<input type="text" id="coinDOGE" placeholder="Enter DOGE Address"><br>

<label for="coinLTC">Litecoin (LTC):</label>
<input type="text" id="coinLTC" placeholder="Enter LTC Address"><br>

<label for="coinBCH">Bitcoin Cash (BCH):</label>
<input type="text" id="coinBCH" placeholder="Enter BCH Address"><br>

<label for="coinTRX">Tron (TRX):</label>
<input type="text" id="coinTRX" placeholder="Enter TRX Address"><br>

<label for="coinDGB">DigiByte (DGB):</label>
<input type="text" id="coinDGB" placeholder="Enter DGB Address"><br>

<label for="coinDASH">Dash (DASH):</label>
<input type="text" id="coinDASH" placeholder="Enter DASH Address"><br>

<label for="coinZEC">Zcash (ZEC):</label>
<input type="text" id="coinZEC" placeholder="Enter ZEC Address"><br>

<label for="coinMATIC">Polygon (MATIC):</label>
<input type="text" id="coinMATIC" placeholder="Enter MATIC Address"><br>

<label for="coinFEY">Feyorra (FEY):</label>
<input type="text" id="coinFEY" placeholder="Enter FEY Address"><br>

<button onclick="saveCoinAddresses()">Save</button>
`);

        unsafeWindow.saveCoinAddresses = function () {
            var coinAddresses = {
                BTC: document.getElementById('coinBTC').value,
                ETH: document.getElementById('coinETH').value,
                ADA: document.getElementById('coinADA').value,
                SOL: document.getElementById('coinSOL').value,
                BNB: document.getElementById('coinBNB').value,
                XRP: document.getElementById('coinXRP').value,
                USDT: document.getElementById('coinUSDT').value,
                DOGE: document.getElementById('coinDOGE').value,
                LTC: document.getElementById('coinLTC').value,
                BCH: document.getElementById('coinBCH').value,
                TRX: document.getElementById('coinTRX').value,
                DGB: document.getElementById('coinDGB').value,
                DASH: document.getElementById('coinDASH').value,
                ZEC: document.getElementById('coinZEC').value,
                MATIC: document.getElementById('coinMATIC').value,
                FEY: document.getElementById('coinFEY').value
            };
            GM_setValue('coinAddresses', coinAddresses);
            alert('Coin Addresses saved successfully!');
        };

        // Save Faucetpay Email function
        unsafeWindow.saveFaucetpayEmail = function () {
            var faucetpayEmail = document.getElementById('faucetpayEmail').value;
            GM_setValue('faucetpayEmail', faucetpayEmail);
            alert('Faucetpay Email saved successfully!');
        };

        document.getElementById('settingsButton').addEventListener('click', function() {
            // Retrieve Faucetpay Email and pre-fill the input field
            var savedFaucetpayEmail = GM_getValue('faucetpayEmail', '');
            var faucetpayEmailInput = document.getElementById('faucetpayEmail');
            if (savedFaucetpayEmail !== '' && faucetpayEmailInput !== null) {
                faucetpayEmailInput.value = savedFaucetpayEmail;
            }

            // Retrieve saved coin addresses and pre-fill the input fields
            var savedCoinAddresses = GM_getValue('coinAddresses', {});
            document.getElementById('coinBTC').value = savedCoinAddresses.BTC || '';
            document.getElementById('coinETH').value = savedCoinAddresses.ETH || '';
            document.getElementById('coinADA').value = savedCoinAddresses.ADA || '';
            document.getElementById('coinSOL').value = savedCoinAddresses.SOL || '';
            document.getElementById('coinBNB').value = savedCoinAddresses.BNB || '';
            document.getElementById('coinXRP').value = savedCoinAddresses.XRP || '';
            document.getElementById('coinUSDT').value = savedCoinAddresses.USDT || '';
            document.getElementById('coinDOGE').value = savedCoinAddresses.DOGE || '';
            document.getElementById('coinLTC').value = savedCoinAddresses.LTC || '';
            document.getElementById('coinBCH').value = savedCoinAddresses.BCH || '';
            document.getElementById('coinTRX').value = savedCoinAddresses.TRX || '';
            document.getElementById('coinDGB').value = savedCoinAddresses.DGB || '';
            document.getElementById('coinDASH').value = savedCoinAddresses.DASH || '';
            document.getElementById('coinZEC').value = savedCoinAddresses.ZEC || '';
            document.getElementById('coinMATIC').value = savedCoinAddresses.MATIC || '';
            document.getElementById('coinFEY').value = savedCoinAddresses.FEY || '';
        });


        createButton('aboutButton', 'About', `
    <h2>About the Interface</h2>

    <p><strong>Faucet Monitor</strong></p>
    <p>
        Each website has its own functions, and you can activate and deactivate it as desired.
        When it is deactivated in the interface, it will not be executed on that page.
    </p>
    <p>
        You must be logged in on each webpage to function correctly when activated.
    </p>
    <p>
        As I use a different script, this script automatically close the pages after they have fulfilled their functions.
        This is because the other script reopens the pages automatically. Because of that,
        I prefer not to integrate the functionality for automatically reopening the websites.
    </p>

    <p><strong>Faucetpay Rotator</strong></p>
    <p>
        To fully automate the Faucetpay Rotator, ensure that the settings are correctly filled out
        and the required extensions and scripts are installed. Otherwise, an error will be returned during automatic claiming.
        For more information, please refer to "Settings".
    </p>
    <p>
        The Connect column allows you to establish a unique connection with each website.
        Once tasks are completed on a website, the process jumps to the next enabled website in the list.
        You can use the ResetTime function to reactivate each website individually, or alternatively,
        you can use ResetAllURLs to reactivate all websites simultaneously.
    </p>

    <p><strong>Settings</strong></p>
    <p>
        You must input your Faucetpay email address for the Faucetpay Rotator feature.
        Coin addresses are optional but recommended. Without the email address,
        the Faucetpay Rotator feature won't function properly, and without coin addresses,
        certain websites may not allow claiming. The scan function for Faucetpay addresses connects to two Faucetpay pages,
        where the user should be logged in, and they need to press the blue button located at the bottom center of the screen
        to automatically save the Faucetpay addresses.
    </p>
    <p>
        To automatically fill in Captchas, the script requires specific extensions or scripts.
        Please install these to ensure the script functions properly.
    </p>

    <h2>General Information</h2>

    <p><strong>Privacy Policy</strong></p>
    <p>
        This script stores user data locally within TamperMonkey and is exclusively used for script functionality.
        It is not shared with the script creator or third parties.
    </p>

    <p><strong>Support</strong></p>
    <p>
        If you have any questions or need assistance, don't hesitate to reach out the creator and supporter,
        <a href="https://greasyfork.org/users/1162863" target="_blank">Andrewblood</a>.
    </p>
    `);

        window.addEventListener('click', function(event) {
            var overlay = document.getElementById('overlay');
            if (event.target == overlay) {
                overlay.style.display = 'none';
            }
        });

        var overlay = document.createElement('div');
        overlay.id = 'overlay';
        var overlayContent = document.createElement('div');
        overlayContent.id = 'overlay-content';
        overlay.appendChild(overlayContent);
        document.body.appendChild(overlay);

    }

    var currentURL = new URL(window.location.href).origin;

    // Freebitco.in
    if (GM_getValue(currentURL) && window.location.href.includes("freebitco.in")) {
        function isCaptchaChecked() {
            return hcaptcha && hcaptcha.getResponse().length !== 0;
        }

        if(window.location.href === ("https://freebitco.in/") || window.location.href === ("https://freebitco.in/?op=home") || window.location.href === ("https://freebitco.in/#")) {
            setTimeout(function() {

                if (document.querySelector("#free_play_form_button").style.display == "none"){
                    console.log("Wait for next Roll.");
                    setTimeout(function() {
                        window.close();
                    }, 1000*30);
                }
                else
                {
                    // click WoF
                    if (document.querySelector("#free_wof_spins_msg")){
                        console.log("Make the WoF Spins.");
                        window.open('https://freebitco.in/static/html/wof/wof-premium.html', '_blank');
                    }
                    console.log("Let's look for Bonus");
                    document.querySelector("body > div.large-12.fixed > div > nav > section > ul > li:nth-child(8) > a").click();
                    document.querySelector("#rewards_tab > div.row.reward_category_container_main_div > div > div:nth-child(4) > div.reward_category_name").click();
                    setTimeout(function() {
                        var yourrwp = parseFloat(document.querySelector("#rewards_tab > div:nth-child(2) > div > div.reward_table_box.br_0_0_5_5.user_reward_points.font_bold").innerText.replace(/,/, ''))
                        console.log("Your current Reward Points are:");
                        console.log(yourrwp);
                        var bonuscost = parseFloat(document.querySelector("#fp_bonus_rewards > div:nth-child(2) > div:nth-child(2) > div.large-6.small-12.columns > div").innerText.replace(/,/, ''))
                        console.log("The Price for 1000% BTC-Bonus is:");
                        console.log(bonuscost);
                        if (yourrwp > bonuscost){
                            document.querySelector("#fp_bonus_rewards > div:nth-child(2) > div:nth-child(2) > div:nth-child(3) > button").click();
                        }
                        else
                        {
                            console.log("Your balance is too low to buy.");
                        }
                        document.querySelector("#free_play_link_li > a").click();
                    }, 1000*5);

                    // Make the Roll
                    setTimeout(function() {
                        if (document.querySelector("#anchor")){
                            console.log("Wait for Captcha and.....");

                            if (isCaptchaChecked()) {
                                document.querySelector("#free_play_form_button").click();
                                setTimeout(function() {
                                    window.close();
                                }, 1000*30);
                            }
                        }
                        else
                        {
                            document.querySelector("#free_play_form_button").click();
                            setTimeout(function() {
                                window.close();
                            }, 1000*10);
                        }
                    }, 1000*10);
                }
            }, 1000*5);
        }

        if (window.location.href.includes("https://freebitco.in/static/html/wof/wof-premium.html")) {
            setTimeout(function() {
                document.querySelector("#wofc-section > div > div.wofc-spins > p > button:nth-child(2)").click();
            }, 1000*10);
            setTimeout(function() {
                window.close();
            }, 1000*30);
        }
    }

    // Dutchycorp
    if (GM_getValue(currentURL) && window.location.href.includes("dutchycorp")) {
        function isCaptchaChecked() {
            return grecaptcha && grecaptcha.getResponse().length !== 0;
        }

        function visibleCheck(elm) {
            if (!elm.offsetHeight && !elm.offsetWidth) { return false; }
            if (getComputedStyle(elm).visibility === 'hidden') { return false; }
            return true;
        }

        if (window.location.href.indexOf('login') === -1 && window.location.href.indexOf('register') === -1) {

            var isRecaptchaEnabled = GM_getValue('recaptchaStatus');

            if (isRecaptchaEnabled) {
                runScript();
            } else {
                if (window.location.href !== 'https://autofaucet.dutchycorp.space/account.php') {
                    window.location.href = 'https://autofaucet.dutchycorp.space/account.php';
                } else {
                    document.querySelector("#methods > form > font > form:nth-child(16) > div > input").click();
                    var selectElement = document.querySelector('select[name="captcha"]');

                    if (selectElement) {
                        var options = selectElement.options;
                        for (var i = 0; i < options.length; i++) {
                            if (options[i].value === '3') {
                                options[i].selected = true;
                                var event = new Event('change');
                                selectElement.dispatchEvent(event);
                                break;
                            }
                        }
                    }
                    var updateButton = document.querySelector('button[name="change-captcha"]');
                    updateButton.click();

                    GM_setValue('recaptchaStatus', 'enabled');
                }
            }

            function runScript() {
                setTimeout(function(){
                    location.reload();
                }, 180000);

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/account.php")) {
                    window.location.replace("https://autofaucet.dutchycorp.space/dashboard.php");
                }

                if (window.location.href == "https://autofaucet.dutchycorp.space/dashboard.php") {
                    window.location.replace("https://autofaucet.dutchycorp.space/roll.php");
                }

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/roll.php")) {
                    if (!document.querySelector("#timer")) {
                        setInterval(function() {
                            if (isCaptchaChecked()) {
                                if (document.querySelector(".boost-btn.unlockbutton")) {
                                    document.querySelector(".boost-btn.unlockbutton").click();
                                }
                                if (visibleCheck(document.querySelector("#claim_boosted"))) {
                                    document.querySelector("#claim_boosted").click();
                                }
                            }
                        }, 5000);
                    } else {
                        setTimeout(function() {
                            window.location.replace("https://autofaucet.dutchycorp.space/coin_roll.php");
                        }, 5000);
                    }
                }

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/coin_roll.php")) {
                    if (!document.querySelector("#timer")) {
                        setInterval(function() {
                            if (isCaptchaChecked()) {
                                if (document.querySelector(".boost-btn.unlockbutton")) {
                                    document.querySelector(".boost-btn.unlockbutton").click();
                                }
                                if (visibleCheck(document.querySelector("#claim_boosted"))) {
                                    document.querySelector("#claim_boosted").click();
                                }
                            }
                        }, 5000);
                    } else {
                        setTimeout(function() {
                            window.location.replace("https://autofaucet.dutchycorp.space/ptc/wall.php");
                        }, 5000);
                    }
                }

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/ptc/wall.php")) {
                    var wallLink = document.querySelectorAll(".col.s10.m6.l4 a[name='claim']");
                    if (wallLink.length >= 1) {
                        wallLink[0].style.backgroundColor = "red";
                        let match = wallLink[0].onmousedown.toString().match(/'href', '(.+)'/);
                        let hrefValue = match[1];
                        setTimeout(function() {
                            window.location.replace("https://autofaucet.dutchycorp.space" + hrefValue);
                        }, 5000);
                    } else {
                        setTimeout(function() {
                            window.location.replace("https://autofaucet.dutchycorp.space/ptc/");
                        }, 5000);
                    }
                }

                if (window.location.href.includes("https://autofaucet.dutchycorp.space/ptc/view")) {
                    setInterval(function() {
                        if (document.querySelector("#sec").innerText === 'Payout in  0 seconds') {
                            document.getElementsByClassName("g-recaptcha bordeaux-btn btn-small waves-effect waves-red")[0].click();
                            setTimeout(function() {
                                console.log("Wait for Captcha");
                            }, 30000);
                        } else {
                            console.log("Wait on timer.");
                        }
                    }, 5000);
                }

                if (window.location.href === "https://autofaucet.dutchycorp.space/ptc/") {
                    setInterval(function() {
                        if (document.querySelector(".col.s12.m12.l10 > center:nth-child(1) > h4") && (document.querySelector(".col.s12.m12.l10 > center:nth-child(1) > h4").innerText === ' All Available Ads Watched')) {
                            // window.location.replace("https://autofaucet.dutchycorp.space/shortlinks-wall.php");
                            window.close();
                        }
                        else if (visibleCheck(document.getElementsByClassName("g-recaptcha gradient-btn btn-small waves-effect waves-purple")[0])) {
                            document.getElementsByClassName("g-recaptcha gradient-btn btn-small waves-effect waves-purple")[0].click();
                        }
                        else {
                            console.log("Wait on timer.");

                        }
                    }, 5000);
                }


                if (window.location.href.includes("autofaucet.dutchycorp.space/shortlinks-wall")) {
                    window.addEventListener('load', function() {
                        setTimeout(function() {

                            var elements = document.querySelectorAll('p');
                            elements.forEach(function(element) {
                                if (element.outerText === "Ouo" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=74")
                                }
                                else if (element.outerText === "Link1s" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=55")
                                }
                                else if (element.outerText === "DS8 " ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=69")
                                }
                                else if (element.outerText === "DS Pr" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=3")
                                }
                                else if (element.outerText === "DS Smart" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=90")
                                }
                                else if (element.outerText === "ShrkEarn " ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=78")
                                }
                                else if (element.outerText === "1sNet" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=61")
                                }
                                //                                else if (element.outerText === "FC " ) {
                                //                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=36")
                                //                                }
                                //                                else if (element.outerText === "Cuty" ) {
                                //                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=67")
                                //                                }
                                else if (element.outerText === "Pkr" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=58")
                                }
                                else if (element.outerText === "CLK" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=47")
                                }
                                else if (element.outerText === "Tmearn" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=98")
                                }
                                else if (element.outerText === "LinkRex" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=65")
                                }
                                else if (element.outerText === "1Bit " ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=53")
                                }
                                else if (element.outerText === "Mitly" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=10")
                                }
                                else if (element.outerText === "Bird " ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=20")
                                }
                                //                                else if (element.outerText === "ShrinkMe" ) {
                                //                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=5")
                                //                                }
                                else if (element.outerText === "Illink" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=71")
                                }
                                else if (element.outerText === "InsFly" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=2")
                                }
                                else if (element.outerText === "Usa" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=25")
                                }
                                else if (element.outerText === "Mgnet " ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=33")
                                }
                                else if (element.outerText === "Owlink " ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=75")
                                }
                                else if (element.outerText === "Clock" ) {
                                    window.location.replace("https://autofaucet.dutchycorp.space/extend_claim_count_wall_nu_link_per_click_version.php?username=Andrewblood&id=54")
                                }
                            });

                        }, 1000*5);
                    });

                }

            }
        }
    }



    if (GM_getValue(currentURL) && window.location.href.includes("firefaucet")) {

        setTimeout(function() {

            if (window.location.href === "https://firefaucet.win/") {
                const dailyBonus = document.querySelector(".col.s12.m12.l6 > div > center:nth-child(1) > div:nth-child(7) > div:nth-child(3) > a");
                const dailyBonusDisabled = document.querySelector("#disabled");
                const faucet = document.querySelector("#faucet_btn");
                const taskButton = document.querySelector(".dashboard-action-btns > a:nth-child(6)");
                const taskValue = document.querySelector("#data__tasks_available_to_collect");
                const ptc = document.querySelector("#ptc-btn");
                const shortlinks = document.querySelector(".dashboard-action-btns > a:nth-child(1)");
                const reward = document.querySelector(".level-reward-section > div:nth-child(2) > a");

                if (dailyBonus) {
                    dailyBonus.click();
                } else if (faucet && !faucet.innerText.includes('s')) {
                    faucet.click();
                } else if (reward && reward.innerText.includes('Claim')) {
                    reward.click();
                } else if (taskButton && taskValue.innerText > 0) {
                    taskButton.click();
                } else if (ptc && !ptc.innerText.includes('0')) {
                    ptc.click();
                } else {
                    shortlinks.click();
                }
            }

            if (window.location.href === "https://firefaucet.win/daily/") {
                const continuebutton = document.querySelector(".col.s12.m12.l6 > div > center > a > button")

                if (continuebutton) {
                    continuebutton.click();
                }

                const selectturnstile = document.querySelector("#select-turnstile");
                const selecthcaptcha = document.querySelector("#select-hcaptcha");
                const selectrecaptcha = document.querySelector("#select-recaptcha");


                if (selectturnstile) {
                    selectturnstile.click();
                } else if (selectrecaptcha) {
                    selectrecaptcha.click();
                } else if (selecthcaptcha) {
                    selecthcaptcha.click();
                }

                setInterval(function() {
                    const turnstileElement = document.querySelector("#turnstilecaptcha");
                    const hcaptchaElement = document.querySelector("#captcha-hcaptcha")
                    const recaptchaElement = document.querySelector("#recaptcha");
                    const daylibonus = document.querySelector("body > div.row > div.col.s12.m12.l6 > div > center > form > button");

                    if (turnstileElement && document.querySelector('[name="cf-turnstile-response"]').value.length > 0) {
                        daylibonus.click();
                    }
                    else if (recaptchaElement && document.querySelector("#g-recaptcha-response").value.length > 0) {
                        daylibonus.click();
                    }
                    else if (hcaptchaElement && document.querySelector('[name="h-captcha-response"]').value.length > 0) {
                        daylibonus.click();
                    }
                    else {
                        console.log("Wait for Captcha")
                    }
                }, 3000);
            }

            if (window.location.href.includes("firefaucet.win/levels")) {
                const collect = document.querySelector(".z-depth-1 > table > tbody > tr:nth-child(1) > th:nth-child(4) > a")

                if (collect && collect.innerText.includes("Collect")) {
                    collect.click();
                }
                else {
                    window.location.replace("https://firefaucet.win/");
                }
            }




            if (window.location.href === "https://firefaucet.win/faucet/") {
                const reward = document.querySelector("#get_reward_button")
                const selectturnstile = document.querySelector("#select-turnstile");
                const selecthcaptcha = document.querySelector("#select-hcaptcha");
                const selectrecaptcha = document.querySelector("#select-recaptcha");


                if (!selectturnstile && !selecthcaptcha && !selectrecaptcha) {
                    reward.click();
                }

                if (selectturnstile) {
                    selectturnstile.click();
                } else if (selectrecaptcha) {
                    selectrecaptcha.click();
                } else if (selecthcaptcha) {
                    selecthcaptcha.click();
                }

                setInterval(function() {
                    const turnstileElement = document.querySelector("#turnstilecaptcha");
                    const hcaptchaElement = document.querySelector("#captcha-hcaptcha")
                    const recaptchaElement = document.querySelector("#captcha-recaptcha");


                    if (turnstileElement && document.querySelector('[name="cf-turnstile-response"]').value.length > 0) {
                        reward.click();
                    }
                    else if (recaptchaElement && document.querySelector("#g-recaptcha-response").value.length > 0) {
                        reward.click();
                    }
                    else if (hcaptchaElement && document.querySelector('[name="h-captcha-response"]').value.length > 0) {
                        reward.click();
                    }
                    else {
                        console.log("Wait for Captcha")
                    }
                }, 3000);
            }

            if (window.location.href === "https://firefaucet.win/ptc/" || window.location.href === "https://firefaucet.win/ptc/#!") {
                const allviewed = document.querySelector(".card-panel > center:nth-child(11) > i")
                const allviewed2 = document.querySelector(".card-panel > center:nth-child(9) > i")
                const viewadvert = document.querySelector(".row > div:nth-child(1) > div > div:nth-child(3) > a")
                const sucessmessage = document.querySelector(".success_msg.hoverable")

                if (viewadvert) {
                    viewadvert.click();
                }
                else {
                    window.location.replace("https://firefaucet.win/");
                }
            }

            if (window.location.href.includes("https://firefaucet.win/tasks")) {
                var elements = document.getElementsByClassName("bi bi-clipboard-check f-14");

                function clickElementsWithDelay(index) {
                    if (index < elements.length) {
                        elements[index].click();
                        setTimeout(function() {
                            clickElementsWithDelay(index + 1);
                        }, 3000);
                    } else {
                        window.location.replace("https://firefaucet.win/");
                    }
                }
                clickElementsWithDelay(0);
            }

            if (window.location.href.includes("firefaucet.win/shortlinks")) {
                window.focus();
                setTimeout(function() {

                    let helpers = {
                        typer: function(inputElm, value) {
                            let lastValue = inputElm.value;
                            inputElm.value = value;
                            let event = new Event('input', { bubbles: true });
                            event.simulated = true;
                            let tracker = inputElm._valueTracker;
                            if (tracker) {
                                tracker.setValue(lastValue);
                            }
                            inputElm.dispatchEvent(event);
                        },

                        triggerMouseEvent: function(elm, eventType) {
                            let clickEvent = document.createEvent('MouseEvents');
                            clickEvent.initEvent(eventType, true, true);
                            elm.dispatchEvent(clickEvent);
                        },

                        alternativeClick: function(elm) {
                            helpers.triggerMouseEvent(elm, "mouseover");
                            helpers.triggerMouseEvent(elm, "mousedown");
                            helpers.triggerMouseEvent(elm, "mouseup");
                            helpers.triggerMouseEvent(elm, "click");
                        }
                    };

                    // Mausposition setzen
                    function moveMouseTo(x, y) {
                        var event = new MouseEvent('mousemove', {
                            bubbles: true,
                            cancelable: true,
                            view: document.defaultView,
                            clientX: x,
                            clientY: y
                        });
                        document.dispatchEvent(event);
                    }

                    // Beispiel: Die Maus zur Position (100, 100) bewegen
                    moveMouseTo(100, 100);

                    var link1 = document.querySelector("body > div.row > div.col.s12.m12.l8 > div > div:nth-child(6) > div.sl-views-section > form:nth-child(1) button[type='submit']")
                    var link2 = document.querySelector("body > div.row > div.col.s12.m12.l8 > div > div:nth-child(6) > div.sl-views-section > form:nth-child(2) button[type='submit']")
                    var link3 = document.querySelector("body > div.row > div.col.s12.m12.l8 > div > div:nth-child(6) > div.sl-views-section > form:nth-child(3) button[type='submit']")
                    var link4 = document.querySelector("body > div.row > div.col.s12.m12.l8 > div > div:nth-child(6) > div.sl-views-section > form:nth-child(4) button[type='submit']")
                    var link5 = document.querySelector("body > div.row > div.col.s12.m12.l8 > div > div:nth-child(6) > div.sl-views-section > form:nth-child(5) button[type='submit']")
                    var link6 = document.querySelector("body > div.row > div.col.s12.m12.l8 > div > div:nth-child(6) > div.sl-views-section > form:nth-child(6) button[type='submit']")
                    var link7 = document.querySelector("body > div.row > div.col.s12.m12.l8 > div > div:nth-child(6) > div.sl-views-section > form:nth-child(7) button[type='submit']")
                    var link8 = document.querySelector("body > div.row > div.col.s12.m12.l8 > div > div:nth-child(6) > div.sl-views-section > form:nth-child(8) button[type='submit']")
                    var link9 = document.querySelector("body > div.row > div.col.s12.m12.l8 > div > div:nth-child(6) > div.sl-views-section > form:nth-child(9) button[type='submit']")
                    var link10 = document.querySelector("body > div.row > div.col.s12.m12.l8 > div > div:nth-child(6) > div.sl-views-section > form:nth-child(10) button[type='submit']")
                    setTimeout(function() {

                        if (link1 && link1.innerText.includes("1")){
                            helpers.alternativeClick(link1);
                            window.close();
                        }
                        else if (link2 && link2.innerText.includes("2")){
                            helpers.alternativeClick(link2);
                            window.close();
                        }
                        else if (link3 && link3.innerText.includes("3")){
                            helpers.alternativeClick(link3);
                            window.close();
                        }
                        else if (link4 && link4.innerText.includes("4")){
                            helpers.alternativeClick(link4);
                            window.close();
                        }
                        else if (link5 && link5.innerText.includes("5")){
                            helpers.alternativeClick(link5);
                            window.close();
                        }
                        else if (link6 && link6.innerText.includes("6")){
                            helpers.alternativeClick(link6);
                            window.close();
                        }
                        else if (link7 && link7.innerText.includes("7")){
                            helpers.alternativeClick(link7);
                            window.close();
                        }
                        else if (link8 && link8.innerText.includes("8")){
                            helpers.alternativeClick(link8);
                            window.close();
                        }
                        else if (link9 && link9.innerText.includes("9")){
                            helpers.alternativeClick(link9);
                            window.close();
                        }
                        else if (link10 && link10.innerText.includes("10")){
                            helpers.alternativeClick(link10);
                            window.close();
                        }
                        else
                        {
                            window.close();
                        }
                    }, 3000);

                }, 3000);
            }

            if(window.location.href.includes("firefaucet.win/visitx/")){
                window.location.replace("https://firefaucet.win/shortlinks");
            }

            if (window.location.href.includes("https://firefaucet.win/viewptc")) {

                GM_addStyle(`
    #imageOverlay {
        position: fixed;
        top: 20px;
        right: 20px;
        z-index: 9999;
        background-color: rgba(0, 0, 0, 0.8);
        color: white;
        padding: 10px;
        border-radius: 5px;
    }
    #imageOverlay img {
        max-width: 200px;
        max-height: 200px;
        width: auto;
        height: auto;
    }
`);

                // Create the overlay div and add it to the document
                const overlayDiv = document.createElement('div');
                overlayDiv.id = 'imageOverlay';
                document.body.appendChild(overlayDiv);

                var script = document.createElement('script');
                script.src = 'https://docs.opencv.org/4.5.5/opencv.js';
                script.onload = function() {

                    // Funktion zum Polling bis das Element sichtbar ist
                    function waitForElement(selector, callback) {
                        const element = document.querySelector(selector);
                        if (element && element.offsetHeight > 1) {
                            callback(element);
                        } else {
                            setTimeout(() => waitForElement(selector, callback), 1000);
                        }
                    }

                    // Funktion zum Laden und Bearbeiten des Bildes
                    function loadAndProcessImage() {
                        console.log("Starte Überwachung des Bildes...");

                        // Überwachungsfunktion, die in bestimmten Intervallen prüft, ob das Bild vorhanden ist
                        let interval = setInterval(function() {
                            let imgElement = document.querySelector("#description > img");
                            if (imgElement) {
                                clearInterval(interval); // Stoppe das Intervall, wenn das Bild vorhanden ist
                                console.log("Bild gefunden. Starte Bearbeitung...");
                                processImage(imgElement); // Lade und bearbeite das Bild
                            } else {
                                console.log("Bild nicht gefunden. Warte weiter...");
                            }
                        }, 1000); // Überprüfe alle 1 Sekunde, ob das Bild vorhanden ist
                    }

                    // Funktion zum Laden und Bearbeiten des Bildes
                    function processImage(imgElement) {
                        let src = cv.imread(imgElement);

                        // Schritt 0: Vergrößere das Bild
                        let resized = new cv.Mat();
                        let dsize = new cv.Size(src.cols * 4, src.rows * 4); // Verdreifache die Größe des Bildes
                        cv.resize(src, resized, dsize, 0, 0, cv.INTER_LINEAR);

                        let dst = new cv.Mat();
                        let M = cv.Mat.ones(5, 5, cv.CV_8U);
                        let anchor = new cv.Point(-1, -1);

                        // Schritt 1: Ändere die Schriftfarbe auf Weiß und den Hintergrund auf Schwarz
                        cv.cvtColor(resized, dst, cv.COLOR_RGB2GRAY);
                        cv.threshold(dst, dst, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU);

                        // Schritt 2: Verwende Morphologie-Operationen, um das Bild zu bearbeiten
                        cv.dilate(dst, dst, M, anchor, 2, cv.BORDER_CONSTANT, cv.morphologyDefaultBorderValue());
                        //        cv.erode(dst, dst, M, anchor, 1, cv.BORDER_CONSTANT, cv.morphologyDefaultBorderValue());

                        // Schritt 3: Konvertiere das bearbeitete Bild zurück in ein DOM-Element
                        let canvas = document.createElement('canvas');
                        cv.imshow(canvas, dst);
                        let manipulatedImageSrc = canvas.toDataURL();

                        // Füge das bearbeitete Bild dem Overlay-DIV hinzu
                        let manipulatedImageElement = document.createElement('img');
                        manipulatedImageElement.src = manipulatedImageSrc;
                        overlayDiv.appendChild(manipulatedImageElement);

                        console.log("Bild erfolgreich bearbeitet und dem Overlay hinzugefügt.");

                        // Texterkennung mit Tesseract.js
                        Tesseract.recognize(
                            manipulatedImageSrc,
                            'eng',
                            {
                                logger: m => console.log("Tesseract Log:", m),
                                psm: 7,
                                oem: 3,
                                tessedit_char_whitelist: "0123456789"
                            }
                        ).then(({ data: { text } }) => {
                            console.log("Roh-Text:", text);

                            // Filtere nur Zahlen von 0 bis 9 aus dem erkannten Text
                            const filteredText = text.replace(/[^0-9]/g, '');

                            console.log("Text nach der Filterung:", filteredText);

                            // Füge den gefilterten Text dem Eingabefeld hinzu
                            var textField = document.querySelector("#description > input.captcha-input");

                            // Überprüfe, ob die Länge des Textes korrekt ist
                            if (filteredText.length === 4) {
                                textField.value = filteredText;

                                // Warte auf die Höhe des Elements #submit-button > i
                                waitForElement("#submit-button > i", (submitButtonIcon) => {
                                    // Klicke auf das Element
                                    submitButtonIcon.click();
                                    setTimeout(function() {
                                        window.close();
                                    }, 500);
                                });
                            } else {
                                // Lade die Seite neu
                                location.reload();
                            }
                        });

                        // Bereinige Ressourcen
                        src.delete();
                        dst.delete();
                        M.delete();
                        resized.delete();
                    }

                    // Starte das Laden und Bearbeiten des Bildes
                    loadAndProcessImage();
                }
            };
            document.head.appendChild(script);
        }, 5000);
    }




    // Coinpayu
    if (GM_getValue(currentURL) && window.location.href.includes("coinpayu")) {

        setTimeout(function() {
            const navDashbord = document.querySelector("#navbarCollapse > ul.mt-2.mt-md-0.nav.navbar-nav.navbar-right.padding-nav.index-nav-right > li > a")
            if(window.location.href.includes("https://www.coinpayu.com/?r=Andrewblood") && (navDashbord) && (navDashbord).innerText === ('Dashboard')){
                window.location.replace("https://www.coinpayu.com/dashboard/ads_active")
            }
        }, 3000);

        if(window.location.href.includes("coinpayu.com/dashboard/ads_active")){
            setTimeout(function() {
                var elements = document.querySelectorAll('.clearfix.ags-list-box:not(.gray-all.clearfix.ags-list-box)');
                if (elements.length > 0) {
                    var firstElement = elements[0].querySelector('.text-overflow.ags-description > span');
                    var timeElement = elements[0].querySelector('.ags-detail-time span');
                    var url = elements[0].querySelector('.text-overflow.ags-description').getAttribute('title');
                    var time = parseInt(timeElement.textContent);

                    console.log("URL:", url);
                    console.log("Time:", time);

                    if (firstElement) {
                        firstElement.click();
                        // Wait for the alert-div.alert-green element to appear, then reload the page
                        var interval = setInterval(function() {
                            var alertElement = document.querySelector(".alert-div.alert-green");
                            if (alertElement) {
                                clearInterval(interval);
                                window.focus();
                                window.location.reload();
                            }
                        }, 1000); // Check every 1 second
                    }
                }
                else {
                    window.location.replace("https://www.coinpayu.com/dashboard/ads_surf");
                }
            }, 5000); // 5000 milliseconds = 5 seconds
        }

        if(window.location.href.includes("coinpayu.com/dashboard/ads_surf")){
            setTimeout(function() {
                var elements = document.querySelectorAll('.clearfix.ags-list-box:not(.gray-all.clearfix.ags-list-box)');
                if (elements.length > 0) {
                    var firstElement = elements[0].querySelector('.text-overflow.ags-description > span');
                    var timeElement = elements[0].querySelector('.ags-detail-time span');
                    var url = elements[0].querySelector('.text-overflow.ags-description').getAttribute('title');
                    var time = parseInt(timeElement.textContent);

                    console.log("URL:", url);
                    console.log("Time:", time);

                    if (firstElement) {
                        firstElement.click();
                        window.focus();
                        // Wait for the alert-div.alert-green element to appear, then reload the page
                        var interval = setInterval(function() {
                            var alertElement = document.querySelector(".alert-div.alert-green");
                            if (alertElement) {
                                clearInterval(interval);
                                window.location.reload();
                            }
                        }, 1000); // Check every 1 second
                    }
                }
                else {
                    window.close();
                }
            }, 5000); // 5000 milliseconds = 5 seconds
        }
    }



    // CF Faucets
    if (GM_getValue(currentURL) && (window.location.href.includes("freebitcoin") ||
                                    window.location.href.includes("freebinancecoin") ||
                                    window.location.href.includes("free-doge") ||
                                    window.location.href.includes("freeusdcoin") ||
                                    window.location.href.includes("freecryptom") ||
                                    window.location.href.includes("free-ltc") ||
                                    window.location.href.includes("freedash") ||
                                    window.location.href.includes("freeneo") ||
                                    window.location.href.includes("freecardano") ||
                                    window.location.href.includes("freebfg") ||
                                    window.location.href.includes("freepancake") ||
                                    window.location.href.includes("freebittorrent") ||
                                    window.location.href.includes("coinfaucet") ||
                                    window.location.href.includes("freematic") ||
                                    window.location.href.includes("freetether") ||
                                    window.location.href.includes("freesteam") ||
                                    window.location.href.includes("freenem") ||
                                    window.location.href.includes("freeshibainu") ||
                                    window.location.href.includes("free-tron") ||
                                    window.location.href.includes("freeethereum"))) {

        setInterval(function() {
            if (window.location.href.includes("free-rolls")) {
                setTimeout(function(){
                    window.location.replace("promotion/csw1td1eqp");
                }, 5000);
            }
        }, 1000);

        if (window.location.href.includes("csw1td1eqp")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.location.replace("q5rlm6ot3r")
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }

        if (window.location.href.includes("q5rlm6ot3r")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.location.replace("5g57e0vksm")
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }

        if (window.location.href.includes("5g57e0vksm")){
            setTimeout(function() {
                document.location.reload();
            }, 120000);
            setInterval(function(){
                if (document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-error.my-8 > div") || document.querySelector("#__nuxt > div > div > main > div > div > div.p-message.p-component.p-message-success.my-8 > div"))
                {
                    window.close()
                }
                else
                {
                    console.log("Captcha is not solved yet, next check in 3 seconds.");
                }
            }, 3000)
        }
    }

    // Rollercoin
    if (GM_getValue(currentURL) && window.location.href.includes("rollercoin")) {
        var button = document.createElement('button');
        button.innerHTML = 'Show Saved Marketplace Products';

        GM_addStyle(`
        .show-saved-products-button {
            position: fixed;
            bottom: 10px;
            left: 250px;
            z-index: 9999;
            padding: 5px 10px;
            background-color: #007bff;
            color: #fff;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            font-size: 12px;
        }

        .rollercoinoverlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.5);
            z-index: 9998;
            display: none;
            color: black;
        }

        .rollercoinoverlay-content {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background-color: #fff;
            padding: 20px;
            border-radius: 5px;
            color: black;
        }
        .saved-products-table {
            width: 100%;
            border-collapse: collapse;
        }
        .saved-products-table th, .saved-products-table td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: left;
        }
        .saved-products-table th {
            background-color: #f2f2f2;
        }
    `);

        button.classList.add('show-saved-products-button');

        document.body.appendChild(button);

        var rollercoinoverlay = document.createElement('div');
        rollercoinoverlay.classList.add('rollercoinoverlay');
        var rollercoinoverlayContent = document.createElement('div');
        rollercoinoverlayContent.classList.add('rollercoinoverlay-content');
        rollercoinoverlay.appendChild(rollercoinoverlayContent);
        document.body.appendChild(rollercoinoverlay);

        button.addEventListener('click', function() {
            updateOverlayContent();
            rollercoinoverlay.style.display = 'block';
        });

        rollercoinoverlay.addEventListener('click', function() {
            rollercoinoverlay.style.display = 'none';
        });

        function updateOverlayContent() {
            var savedProducts = GM_listValues().map(function(key) {
                return {url: key, data: GM_getValue(key)};
            });

            var tableHTML = '<h2>Saved Marketplace Products</h2><table class="saved-products-table">';
            tableHTML += '<tr><th>Connect</th><th>Product Name</th><th>Saved Buy Price</th></tr>';

            savedProducts.forEach(function(product) {
                if (product.url.includes("rollercoin.com/marketplace/buy")) {
                    tableHTML += '<tr>';
                    tableHTML += '<td><a href="' + product.url + '">Connect</a></td>';
                    tableHTML += '<td>' + product.data.itemText + '</td>';
                    tableHTML += '<td>' + product.data.buyPrice + ' RLT</td>';
                    tableHTML += '</tr>';
                }
            });

            tableHTML += '</table>';

            rollercoinoverlayContent.innerHTML = tableHTML;
        }

        let overlayCreated = false;
        let itemPrice = '';

        function createOverlay() {
            if (overlayCreated) return;

            GM_addStyle(`
            #customOverlay {
                position: fixed;
                bottom: 50px;
                left: 20px;
                width: 350px;
                background-color: rgba(255, 255, 255, 0.9);
                border: 1px solid #ccc;
                z-index: 9999;
                padding: 5px;
                overflow: auto;
                text-align: left;
            }
            #customOverlay h2 {
                font-size: 20px;
                color: black;
                text-align: center;
            }
            #customOverlay table {
                width: 100%;
            }
            #customOverlay table tr {
                border-bottom: 1px solid #ccc;
            }
            #customOverlay table tr:last-child {
                border-bottom: none;
            }
            #customOverlay table td {
                padding: 8px;
                font-size: 16px;
                color: black;
            }
            #customOverlay p {
                font-size: 16px;
                color: black;
                margin: 5px 0;
                text-align: center;
            }
            #customOverlay input {
                width: 80%;
                margin: 0 auto;
                display: block;
            }
            #customOverlay button {
                width: 80%;
                margin: 10px auto;
                display: block;
                padding: 8px;
                border-radius: 4px;
                cursor: pointer;
            }
            #startButton {
                background-color: #4CAF50;
                color: white;
                border: none;
            }
            #stopButton {
                background-color: #f44336;
                color: white;
                border: none;
            }
        `);

            const currentURL = window.location.href;
            const savedData = GM_getValue(currentURL);

            const overlay = document.createElement('div');
            overlay.id = 'customOverlay';
            overlay.innerHTML = `
            <h2>Marketplace buyer</h2>
            <table>
                <tr>
                    <td>Product Name</td>
                    <td id="itemText"></td>
                </tr>
                <tr>
                    <td>Current Buy Price</td>
                    <td id="itemPrice"></td>
                </tr>
                <tr>
                    <td>Saved Buy Price</td>
                    <td id="buyPriceDisplay">${savedData ? savedData.buyPrice + ' RLT' : 'Not Saved'}</td>
                </tr>
            </table>
            <input type="text" id="buyPriceInput" placeholder="Enter New Buy Price">
            <button id="saveButton">Save</button>
            <button id="startButton">Start Automatic Buy</button>
            <button id="stopButton" style="display: none;">Stop Automatic Buy</button>
        `;
            document.body.appendChild(overlay);

            overlayCreated = true;

            const buyPriceInput = document.getElementById('buyPriceInput');
            buyPriceInput.addEventListener('click', function (event) {
                if (buyPriceInput.value === '' && itemPrice) {
                    const cleanItemPrice = itemPrice.replace(" RLT", "");
                    buyPriceInput.value = cleanItemPrice;
                }
            });

            const saveButton = document.getElementById('saveButton');
            saveButton.addEventListener('click', function (event) {
                const itemText = document.getElementById('itemText').textContent;
                const buyPrice = document.getElementById('buyPriceInput').value;

                let savedData = GM_getValue(currentURL);

                if (savedData) {
                    savedData.buyPrice = buyPrice;
                    GM_setValue(currentURL, savedData);
                    alert(`Buy Price updated for URL: ${currentURL}\nItem Text: ${itemText}\nNew Buy Price: ${buyPrice} RLT`);
                    window.location.reload()
                } else {
                    savedData = { itemText, buyPrice };
                    GM_setValue(currentURL, savedData);
                    alert(`New data saved for URL: ${currentURL}\nItem Text: ${itemText}\nBuy Price: ${buyPrice} RLT`);
                    window.location.reload()
                }

                document.getElementById('buyPriceDisplay').textContent = buyPrice + ' RLT';
            });

            const startButton = document.getElementById('startButton');
            const stopButton = document.getElementById('stopButton');

            let buyPrice = '';
            let intervalId;

            if (savedData && savedData.intervalRunning) {
                startButton.style.display = 'none';
                stopButton.style.display = 'block';

                setTimeout(function() {
                    window.location.reload();
                }, 1000*60*5);

                intervalId = setInterval(checkPrice, 500);
            }

            startButton.addEventListener('click', function (event) {
                startButton.style.display = 'none';
                stopButton.style.display = 'block';

                setTimeout(function() {
                    window.location.reload();
                }, 1000*60*5);

                GM_setValue(currentURL, { ...savedData, intervalRunning: true });
                intervalId = setInterval(checkPrice, 500);
            });

            stopButton.addEventListener('click', function (event) {
                startButton.style.display = 'block';
                stopButton.style.display = 'none';

                GM_setValue(currentURL, { ...savedData, intervalRunning: false });
                clearInterval(intervalId);
            });

            function checkPrice() {
                const itemPriceElement = document.querySelector(".input-price-wrapper > p.item-price");
                const itemPrice = itemPriceElement ? parseFloat(itemPriceElement.innerText.replace(" RLT", "")) : 0;

                const currentURL = window.location.href;
                const savedData = GM_getValue(currentURL);
                const buyPrice = parseFloat(savedData.buyPrice);

                if (itemPrice === 0) return;

                if (buyPrice > itemPrice) {
                    document.querySelector(".item-info-buy-wrapper.col-12.col-lg-4 > button").click();

                    const intervalId = setInterval(function () {
                        const overlayButton = document.querySelector(".modal.fade.show > div > div > div > div > button.roller-button.default.cyan");
                        if (overlayButton && overlayButton.offsetParent !== null) {
                            overlayButton.click();
                            clearInterval(intervalId);
                            window.location.reload();
                        }
                    }, 500);
                }
            }
        }

        setInterval(function () {
            if (window.location.href.match(/^https?:\/\/[^/]+\/marketplace\/buy\//)) {
                createOverlay();

                const itemTitle = document.querySelector(".col-12.col-lg-9 > div > h4");
                const itemText = itemTitle ? itemTitle.innerText : '';
                const itemPriceElement = document.querySelector(".input-price-wrapper > p.item-price");
                itemPrice = itemPriceElement ? itemPriceElement.innerText : '';

                document.getElementById('itemText').textContent = itemText;
                document.getElementById('itemPrice').textContent = itemPrice;
            } else if (!window.location.href.match(/^https?:\/\/[^/]+\/marketplace\/buy\//) && overlayCreated) {
                const existingOverlay = document.getElementById('customOverlay');
                if (existingOverlay) {
                    const stopButton = document.querySelector("#stopButton");
                    if (stopButton.style.display === 'block') {
                        stopButton.click();
                    }
                    existingOverlay.remove();
                    overlayCreated = false;
                }
            }
        }, 500);
    }

    if (GM_getValue(currentURL) && window.location.href.includes("faucetpay")) {

        if (window.location.href.includes("faucetpay.io/page/user-admin/linked-addresses")){

            // Create a button to trigger the script
            const buttonHTML = '<button id="startScriptButton">Save Wallet Addresses</button>';
            document.body.insertAdjacentHTML('beforeend', buttonHTML);

            // Add some basic styling to the button
            GM_addStyle(`
        #startScriptButton {
            position: fixed;
            bottom: 40px;
            left: calc(50% - 100px); /* Half the button width for centering */
            padding: 10px 20px;
            background-color: #007bff;
            color: #fff;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            z-index: 9999;
        }
    `);

            function startAddressCollection() {
                const tableRows = document.querySelectorAll('.style_rowWrapper__3zn_i');

                const storedAddresses = GM_getValue('coinAddresses') || {};

                tableRows.forEach(row => {
                    const coinName = row.querySelector('span:nth-child(3) img').alt;
                    const walletAddress = row.querySelector('span:nth-child(2)').textContent.trim();

                    if (!storedAddresses.hasOwnProperty(coinName)) {
                        storedAddresses[coinName] = [walletAddress];
                    } else {
                        if (!Array.isArray(storedAddresses[coinName])) {
                            storedAddresses[coinName] = [];
                        }

                        if (!storedAddresses[coinName].includes(walletAddress)) {
                            storedAddresses[coinName].push(walletAddress);
                        }
                    }
                });

                // Save updated addresses
                GM_setValue('coinAddresses', storedAddresses);

                // Display updated addresses in console
                alert('Coin addresses saved!');
                console.log('Coin addresses saved:\n', storedAddresses);
            }

            // Add event listener to the button
            document.getElementById('startScriptButton').addEventListener('click', startAddressCollection);

        }



        function clickUserDashboardLink() {
            var userDashboardLink = document.querySelector('a[href="/page/user-admin"]');

            if (userDashboardLink && userDashboardLink.offsetParent !== null) {
                userDashboardLink.click();
                clearInterval(checkInterval1);
            }
        }

        var checkInterval1 = setInterval(clickUserDashboardLink, 3000);
    }




    var currentPageUrl = window.location.href



    if (window.location.href.includes("earnsolana")){

        setTimeout(function() {

            if (window.location.href.includes("https://earnsolana.xyz/?r=8455")){
                var savedFaucetpayEmail = GM_getValue('faucetpayEmail', '');
                document.querySelector("#InputEmail").value = savedFaucetpayEmail;
                document.querySelector(".row.justify-content-center > div > div > div > div > div > form > button").click();

                if (document.querySelector("#content > div > div:nth-child(4) > div > div > div")) {
                    window.location.replace("https://earnsolana.xyz/faucet/currency/btc");
                }
            }


            function saveUrl(url, timestamp, reason) {
                var urlWithTimestamp = { url: url, timestamp: timestamp, reason: reason };

                var existingUrlIndex = storedUrls.findIndex(function (storedUrl) {
                    return storedUrl.url === url;
                });

                if (existingUrlIndex !== -1) {
                    storedUrls[existingUrlIndex].timestamp = timestamp;
                    storedUrls[existingUrlIndex].reason = reason;
                } else {
                    storedUrls.push(urlWithTimestamp);
                }

                GM_setValue('storedUrls', storedUrls);
            }

            var storedUrls = GM_getValue('storedUrls', []) || [];
            var currentFaucetIndex = faucetpayurls.indexOf(window.location.href);
            var getRewardButton = document.querySelector("#submit");
            var successMessage = document.querySelector("#swal2-content");
            var okButton = document.querySelector(".swal2-confirm.swal2-styled");

            if (okButton) {
                if (successMessage.innerText.includes("sent")) {
                    okButton.click();
                    var currentUrl = window.location.href

                    console.log("Current URL:", currentUrl);

                    var currentIndex = faucetpayurls.indexOf(currentUrl);

                    console.log("Current Index:", currentIndex);

                    var validUrlFound = false;

                    for (var i = currentIndex + 1; i < currentIndex + faucetpayurls.length; i++) {
                        var nextUrl = faucetpayurls[i % faucetpayurls.length];

                        console.log("Checking next URL:", nextUrl);

                        var storedUrlInfo = storedUrls.find(function (storedUrl) {
                            return storedUrl.url === nextUrl;
                        });

                        console.log("Stored URL Info:", storedUrlInfo);

                        if (!storedUrlInfo || new Date() > new Date(storedUrlInfo.timestamp)) {
                            console.log("Connecting to the next valid URL:", nextUrl);

                            window.location.href = nextUrl;

                            validUrlFound = true;

                            break;
                        }
                    }

                    if (!validUrlFound) {
                        alert("All sites are empty or daily limit reached. Please start the script tomorrow again. You can also change the Faucetpay E-Mail and set all a new time Active");
                    }
                }
                else if (successMessage.innerText.includes("Captcha")) {
                    okButton.click();
                    setTimeout(function() {
                        getRewardButton.click();
                    }, 1000);
                }
                else if (successMessage.innerText.includes("sufficient")) {
                    okButton.click();
                    var reason1 = 'sufficient funds';
                    var timestamp1 = new Date(new Date().getTime() + 6 * 60 * 60 * 1000).toISOString().slice(0, 19).replace('T', ' ');
                    saveUrl(window.location.href, timestamp1, reason1);
                    okButton.click();
                    let currentUrl = window.location.href

                    console.log("Current URL:", currentUrl);

                    let currentIndex = faucetpayurls.indexOf(currentUrl);

                    console.log("Current Index:", currentIndex);

                    let validUrlFound = false;

                    for (let i = currentIndex + 1; i < currentIndex + faucetpayurls.length; i++) {
                        let nextUrl = faucetpayurls[i % faucetpayurls.length];

                        console.log("Checking next URL:", nextUrl);

                        let storedUrlInfo = storedUrls.find(function (storedUrl) {
                            return storedUrl.url === nextUrl;
                        });

                        console.log("Stored URL Info:", storedUrlInfo);

                        if (!storedUrlInfo || new Date() > new Date(storedUrlInfo.timestamp)) {
                            console.log("Connecting to the next valid URL:", nextUrl);

                            window.location.href = nextUrl;

                            validUrlFound = true;

                            break;
                        }
                    }

                    if (!validUrlFound) {
                        alert("All sites are empty or daily limit reached. Please start the script tomorrow again. You can also change the Faucetpay E-Mail and set all a new time Active");
                    }
                }

            } else if (getRewardButton) {
                getRewardButton.click();
            }

        }, 3000);
    }




    if (faucetpayurls.includes(currentPageUrl) || window.location.href.includes("[email protected]")) {
        function isElementVisible(selector) {
            var element = document.querySelector(selector);
            return element && element.offsetWidth > 0 && element.offsetHeight > 0;
        }

        function clickButton(selector) {
            var button = document.querySelector(selector);
            if (button) {
                button.click();
            }
        }

        setTimeout(function () {
            location.reload();
        }, 120000);

        var indexOfRParameter = currentPageUrl.indexOf("?r=");
        if (indexOfRParameter !== -1) {
            currentPageUrl = currentPageUrl.substring(0, indexOfRParameter);
        }

        var selector1 = ".alert.alert-danger.fade.show";
        if (isElementVisible(selector1) && document.querySelector(selector1)?.innerText === ' The faucet does not have sufficient funds for this transaction.') {
            var reason1 = 'sufficient funds';
            var timestamp1 = new Date(new Date().getTime() + 6 * 60 * 60 * 1000).toISOString().slice(0, 19).replace('T', ' ');
            saveUrl(currentPageUrl, timestamp1, reason1);
        }

        var selector2 = ".alert.alert-danger.fade.show";
        if (isElementVisible(selector2) && document.querySelector(selector2)?.innerText === ' Your daily claim limit has been reached. Please come back in tomorrow.') {
            var reason2 = 'daily claim limit';
            var timestamp2 = new Date(new Date().getTime() + 12 * 60 * 60 * 1000).toISOString().slice(0, 19).replace('T', ' ');
            //            var tomorrow = new Date();
            //            tomorrow.setDate(tomorrow.getDate() + 1);
            //            tomorrow.setHours(2, 0, 0, 0);
            //            var timestamp2 = tomorrow.toISOString().slice(0, 19).replace('T', ' ');
            saveUrl(currentPageUrl, timestamp2, reason2);
        }

        function saveUrl(url, timestamp, reason) {
            var urlWithTimestamp = { url: url, timestamp: timestamp, reason: reason };

            var existingUrlIndex = storedUrls.findIndex(function (storedUrl) {
                return storedUrl.url === url;
            });

            if (existingUrlIndex !== -1) {
                storedUrls[existingUrlIndex].timestamp = timestamp;
                storedUrls[existingUrlIndex].reason = reason;
            } else {
                storedUrls.push(urlWithTimestamp);
            }

            GM_setValue('storedUrls', storedUrls);
        }

        if ((isElementVisible(".alert.alert-success.fade.show") &&
             document.querySelector(".alert.alert-success.fade.show").innerText.includes('satoshi')) ||
            (isElementVisible(".alert.alert-danger.fade.show") &&
             document.querySelector(".alert.alert-danger.fade.show").innerText === ' The faucet does not have sufficient funds for this transaction.') ||
            (isElementVisible(".alert.alert-danger.fade.show") &&
             document.querySelector(".alert.alert-danger.fade.show").innerText === ' Session invalid, try again') ||
            (isElementVisible(".alert.alert-danger.fade.show") &&
             document.querySelector(".alert.alert-danger.fade.show").innerText.includes('wait')) ||
            (isElementVisible(".alert.alert-danger.fade.show") &&
             document.querySelector(".alert.alert-danger.fade.show").innerText === ' Your daily claim limit has been reached. Please come back in tomorrow.')) {
            function checkAndConnectNextUrl() {
                var currentUrl = window.location.href.includes('?r=') ? window.location.href.split('?r=')[0] : window.location.href;

                console.log("Current URL:", currentUrl);

                var currentIndex = faucetpayurls.indexOf(currentUrl);

                console.log("Current Index:", currentIndex);

                var validUrlFound = false;

                for (var i = currentIndex + 1; i < currentIndex + faucetpayurls.length; i++) {
                    var nextUrl = faucetpayurls[i % faucetpayurls.length];

                    console.log("Checking next URL:", nextUrl);

                    var storedUrlInfo = storedUrls.find(function (storedUrl) {
                        return storedUrl.url === nextUrl;
                    });

                    console.log("Stored URL Info:", storedUrlInfo);

                    if (!storedUrlInfo || new Date() > new Date(storedUrlInfo.timestamp)) {
                        console.log("Connecting to the next valid URL:", nextUrl);

                        window.location.href = nextUrl;

                        validUrlFound = true;

                        break;
                    }
                }

                if (!validUrlFound) {
                    alert("All sites are empty or daily limit reached. Please start the script tomorrow again. You can also change the Faucetpay E-Mail and set all a new time Active");
                }
            }

            checkAndConnectNextUrl();
        } else if (!window.location.href.includes("earnsolana")) {
            let currentURL = window.location.href;
            let referralCode = '[email protected]';

            if (!currentURL.includes(referralCode)) {
                currentURL += referralCode;
                window.location.href = currentURL;
            } else {

                var savedFaucetpayEmail = GM_getValue('faucetpayEmail', '');
                var savedCoinAddresses = GM_getValue('coinAddresses', {});

                if (window.location.href.includes('/btc') || window.location.href.includes('/bitcoin') || window.location.href.includes('/BTC')) {
                    if (savedCoinAddresses.BTC) {
                        document.querySelector("#address").value = savedCoinAddresses.BTC;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/eth')) {
                    if (savedCoinAddresses.ETH) {
                        document.querySelector("#address").value = savedCoinAddresses.ETH;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/ada') || window.location.href.includes('/cardano')) {
                    if (savedCoinAddresses.ADA) {
                        document.querySelector("#address").value = savedCoinAddresses.ADA;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/sol')) {
                    if (savedCoinAddresses.SOL) {
                        document.querySelector("#address").value = savedCoinAddresses.SOL;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/bnb') || window.location.href.includes('/binance')) {
                    if (savedCoinAddresses.BNB) {
                        document.querySelector("#address").value = savedCoinAddresses.BNB;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/xrp') || window.location.href.includes('/ripple')) {
                    if (savedCoinAddresses.XRP) {
                        document.querySelector("#address").value = savedCoinAddresses.XRP;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/usdt') || window.location.href.includes('/tether')) {
                    if (savedCoinAddresses.USDT) {
                        document.querySelector("#address").value = savedCoinAddresses.USDT;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/doge') || window.location.href.includes('/DOGE')) {
                    if (savedCoinAddresses.DOGE) {
                        document.querySelector("#address").value = savedCoinAddresses.DOGE;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/ltc') || window.location.href.includes('/litecoin')) {
                    if (savedCoinAddresses.LTC) {
                        document.querySelector("#address").value = savedCoinAddresses.LTC;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/bch') || window.location.href.includes('/bitcoin cash')) {
                    if (savedCoinAddresses.BCH) {
                        document.querySelector("#address").value = savedCoinAddresses.BCH;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/trx') || window.location.href.includes('/tron') || window.location.href.includes('/TRX')) {
                    if (savedCoinAddresses.TRX) {
                        document.querySelector("#address").value = savedCoinAddresses.TRX;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/dgb') || window.location.href.includes('/digibyte')) {
                    if (savedCoinAddresses.DGB) {
                        document.querySelector("#address").value = savedCoinAddresses.DGB;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/dash')) {
                    if (savedCoinAddresses.DASH) {
                        document.querySelector("#address").value = savedCoinAddresses.DASH;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/zec') || window.location.href.includes('/zcash')) {
                    if (savedCoinAddresses.ZEC) {
                        document.querySelector("#address").value = savedCoinAddresses.ZEC;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/matic') || window.location.href.includes('/polygon')) {
                    if (savedCoinAddresses.MATIC) {
                        document.querySelector("#address").value = savedCoinAddresses.MATIC;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                } else if (window.location.href.includes('/fey')) {
                    if (savedCoinAddresses.FEY) {
                        document.querySelector("#address").value = savedCoinAddresses.FEY;
                    } else if (savedFaucetpayEmail) {
                        document.querySelector("#address").value = savedFaucetpayEmail;
                    } else {
                        alert("The coin address and email are not saved.");
                    }
                }
                else {
                    alert("The coin from this website was not recognized correctly.");
                }

                var loginbutton = document.querySelectorAll('button[data-target="#captchaModal"]');
                loginbutton[0].click();

                if (document.querySelector("#captchaModal").innerText.includes('AntiBot links')) {
                    var intervalId = setInterval(function() {
                        var antibotLinksValue = document.querySelector("#antibotlinks").value.length;
                        var recaptchaResponseValue = document.querySelector("#g-recaptcha-response").value.length;

                        if (antibotLinksValue > 1 && recaptchaResponseValue > 1) {
                            clearInterval(intervalId);

                            clickButton("#login");
                        }
                    }, 1000);
                } else {
                    var intervalId2 = setInterval(function() {
                        var recaptchaResponseValue = document.querySelector("#g-recaptcha-response").value.length;

                        if (recaptchaResponseValue > 1) {
                            clearInterval(intervalId2);

                            clickButton("#login");
                        }
                    }, 1000);
                }


            }
        }

    }



})();