<p>&nbsp;</p>
<style>
    /* استایل کلی بدن صفحه */
    body {
        margin: 0;
        padding: 0;
        overflow: hidden;
        height: 100vh;
        background-color: #f0f0f0;
        font-family: Arial, sans-serif;
    }

    /* کانتینر iframe */
    .iframe-container {
        position: relative;
        width: 100%;
        height: 100vh;
        overflow: hidden;
    }

    /* استایل‌های iframe */
    iframe {
        width: 100%;
        height: calc(100% + 11.5cm);
        border: none;
        display: none; /* مخفی تا زمانی که سایت بارگذاری شود */
        position: relative;
        top: -11.5cm;
    }

    /* استایل‌های لودینگ */
    .loading {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        display: flex;
        flex-direction: column;
        align-items: center;
        z-index: 10000;
        background-color: transparent; /* حذف پس‌زمینه */
        padding: 20px;
        border-radius: 10px;
        /* حذف سایه */
    }

    .loading-message {
        margin-bottom: 20px;
        font-size: 18px;
    }

    /* استایل‌های نوار پیشرفت */
    .progress {
        width: 80%;
        max-width: 400px;
        height: 20px;
        background-color: #ddd;
        border-radius: 5px;
        overflow: hidden;
    }

    .progress-bar {
        height: 100%;
        width: 0;
        background-color: #4caf50;
        transition: width 1s;
    }

    .error-message {
        display: none;
        color: red;
        margin-top: 20px;
        font-size: 16px;
        text-align: center;
    }

    #retryButton {
        display: none;
        margin-top: 10px;
        padding: 10px 20px;
        font-size: 16px;
        cursor: pointer;
        background-color: #4caf50;
        color: white;
        border: none;
        border-radius: 5px;
    }

    /* دکمه‌های دانلود و توضیحات */
    .download-button, .description-button {
        display: block;
        width: 120px;
        color: white;
        text-align: center;
        padding: 8px;
        border-radius: 5px;
        cursor: pointer;
        font-size: 12px;
        transition: background-color 0.3s;
        position: fixed;
        top: 10px;
        z-index: 10001;
        text-decoration: none;
    }

    .download-button {
        background-color: #4CAF50;
        right: 10px;
    }

    .description-button {
        background-color: rgb(84, 110, 122);
        left: 10px;
    }

    .download-button:hover, .description-button:hover {
        background-color: #45a049;
    }

    /* سبک پنجره‌های مودال */
    .modal {
        display: none;
        position: fixed;
        z-index: 10002;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.5);
    }

    .modal-content {
        background-color: #fefefe;
        margin: 10% auto;
        padding: 20px;
        border: 1px solid #888;
        width: 90%;
        max-width: 500px;
        text-align: center;
        border-radius: 5px;
    }

    .modal-button {
        margin-top: 20px;
        padding: 10px 20px;
        border: none;
        border-radius: 5px;
        cursor: pointer;
        font-size: 14px;
    }

    .close-btn {
        background-color: #f44336;
        color: white;
    }

    .translate-btn {
        background-color: #4CAF50;
        color: white;
    }

    .translate-btn:hover {
        background-color: #45a049;
    }

    .image-container {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        margin-top: 20px;
    }

    .image-item {
        margin: 10px;
        text-align: center;
    }

    .image-item img {
        width: 100px;
        height: 100px;
        object-fit: cover;
        border-radius: 5px;
        margin-bottom: 5px;
    }

    .image-item button {
        background-color: #4CAF50;
        color: white;
        padding: 5px 10px;
        border: none;
        border-radius: 5px;
        cursor: pointer;
        font-size: 12px;
    }

    .image-item button:hover {
        background-color: #45a049;
    }

    /* دکمه دانلود در پایین صفحه */
    .download-button-bottom {
        position: fixed;
        bottom: 10px;
        left: 50%;
        transform: translateX(-50%);
        background-color: #4CAF50;
        padding: 10px;
        border-radius: 5px;
        color: white;
        text-align: center;
        font-size: 14px;
        text-decoration: none;
        z-index: 10001;
        cursor: pointer;
    }

    .download-button-bottom:hover {
        background-color: #45a049;
    }

    /* افزودن media query برای موبایل */
    @media (max-width: 768px) {
        iframe {
            height: calc(100% + 11.5cm);
            top: -11.5cm;
        }
    }
</style>
<!-- دکمه‌های دانلود و توضیحات -->
<p><a href="#" class="download-button" id="downloadButton">دانلود تصویر 📥</a> <a href="#" class="description-button" id="descriptionButton">توضیحات</a></p>
<!-- پنجره سفارشی (modal) برای نمایش تصاویر دانلود -->
<div id="downloadModal" class="modal">
<div class="modal-content">
<p style="text-align: center;">تصاویر شناسایی شده</p>
<div class="image-container" id="imageContainer"></div>
<button class="modal-button close-btn" id="closeDownloadModalBtn">بستن</button></div>
</div>
<!-- پنجره سفارشی (modal) برای نمایش توضیحات -->
<div id="myModal" class="modal">
<div class="modal-content">
<p style="text-align: center;">افزایش کیفیت تصاویر</p>
<p style="text-align: center;">با <span style="color: #008080;">هوش مصنوعی</span></p>
<p style="text-align: center;">وضوح تصاویر را با استفاده از پیشرفته&zwnj;ترین مدل بالا ببرید.</p>
<p style="text-align: center;">عکس&zwnj;های تار و پیکسلی را با این هوش مصنوعی افزایش دهید.</p>
<button class="modal-button translate-btn" id="translateBtn">مترجم</button> <button class="modal-button close-btn" id="closeBtn">بستن</button></div>
</div>
<!-- لودینگ و iframe -->
<div class="iframe-container">
<div class="loading" id="loadingContainer">
<div class="loading-message">لطفاً صبر کنید...</div>
<div class="progress">
<div class="progress-bar" id="progressBar"></div>
</div>
<div class="error-message" id="errorMessage">بارگیری زیاد طول کشید در صورت عدم بارگذاری فیلتر شکن خود را روشن کنید.</div>
<button id="retryButton">بارگذاری مجدد</button></div>
<!-- افزودن ویژگی‌های sandbox و allow به iframe --> <iframe id="myIframe" sandbox="allow-scripts allow-same-origin allow-forms allow-modals" allow="clipboard-read; clipboard-write"></iframe></div>
<!-- دکمه دانلود تصویر در پایین صفحه -->
<p><a href="#" class="download-button-bottom" id="downloadButtonBottom">دانلود تصویر 📥</a></p>
<p>
<script>
    let progress = 0;
    const progressBar = document.getElementById('progressBar');
    const retryButton = document.getElementById('retryButton');
    const errorMessage = document.getElementById('errorMessage');
    const loadingContainer = document.getElementById('loadingContainer');
    const iframe = document.getElementById('myIframe');
    let interval;
    let iframeLoadedFlag = false;
    let isOffline = false; // متغیر برای بررسی وضعیت اتصال

    // لیست URL هایی که در iframe باید حذف شوند (می‌توانید به دلخواه خود اضافه کنید)
    const excludeUrls = [
        // URL های غیر مطلوب را در اینجا اضافه کنید
        'https://finegrain-finegrain-object-eraser.hf.space/--replicas/any_replica/file=/tmp/example/path/image.png'
        // می‌توانید URL‌های دیگری را نیز اضافه کنید
    ];

    // متونی که باید جایگزین شوند
    const textsToReplace = {
        "FACodec for NaturalSpeech 3": "ربات ساخت صدای اختصاصی",
        "Overview": "🗣️نمای کلی",
        "FACodec is a core component of the advanced text-to-speech (TTS) model NaturalSpeech 3. FACodec converts complex speech waveform into disentangled subspaces representing speech attributes of content, prosody, timbre, and acoustic details and reconstruct high-quality speech waveform from these attributes. FACodec decomposes complex speech into subspaces representing different attributes, thus simplifying the modeling of speech representation.": "توضیحات ربات",
        "Research can use FACodec to develop different modes of TTS models, such as non-autoregressive based discrete diffusion (NaturalSpeech 3) or autoregressive models (like VALL-E).": "توضیحات دوم",
        "What should we erase?": "چه چیزی رو حذف کنیم ؟ انگلیسی وارد کن",
        "Erase Object": "شروع ساخت",
        "Give it a shot!": "",
        "This space is powered by Refiners, our open source micro-framework for simple foundation model adaptation.": "",
        "If you enjoyed it, please consider starring Refiners on GitHub!": "این ابزار با استفاده از تکنولوژی پیشرفته هوش مصنوعی اشیاء رو از تصاویر حذف می‌کنه و با برنامه های ادیت کاملا متفاوت است.",
        "Examples": "نمونه ها",
        "no manual work required!": "",
        "Not only will the object disappear, but so will its effects on the scene, like shadows or reflections.": "",
        "You have exceeded your GPU quota": "محدودیت جی پی یو: انگار با ربات زیاد کار کردی! این محدودیت ۱۲ ساعت بعد برداشته میشه،اما اگه الان میخوای این محدودیت برداشته بشه امکانش است. طبق ویدیو آموزشی داخل برنامه فیلترشکن پور لایت یک بار خاموش کن و دوباره روشن کن این محدودیت برداشته میشه.",
        "Object Eraser Powered By Refiners": "نسخه پیشرفته حذف اشیاء دلخواه",
        "Erase any object from your image just by naming it — ": "هر شیئی را از تصویر خود تنها با نام بردن آن پاک کنید — بدون نیاز به کار دستی! نه تنها آن شیء ناپدید خواهد شد، بلکه اثرات آن بر روی صحنه مثل سایه‌ها یا انعکاس‌ها نیز از بین خواهند رفت.",
        "On mobile, the connection can break if this tab is unfocused or the device sleeps, losing your position in queue.": "اجرای دستور کاربر برای افزایش کیفیت عکس با برنامه هوش مصنوعی",
        "Error": "خسته شدم🥺 میخوای دوباره بسازم؟ مشکلی نیست آی‌پی عوض کن",
        "error": "خسته شدم🥺 میخوای دوباره بسازم؟ مشکلی نیست آی‌پی عوض کن"
    };

    // متونی که باید مخفی شوند
    const unwantedTexts = [
        "Pixel-Aware Stable Diffusion for Realistic Image Super-resolution and Personalized Stylization",
        "FACodec: Speech Codec with Attribute Factorization used for NaturalSpeech 3",
        ,
        "Finegrain Editor",
        "all the Finegrain spaces are now reunited under the"
        // می‌توانید متون دیگری را نیز اضافه کنید
    ];

    // لینک‌هایی که باید مخفی شوند
    const linksToHide = [
        'https://arxiv.org/pdf/2403.03100.pdf',
        'https://speechresearch.github.io/naturalspeech3/',
        'https://huggingface.co/amphion/naturalspeech3_facodec'
        // می‌توانید لینک‌های دیگری را نیز اضافه کنید
    ];

    function startProgress() {
        loadingContainer.style.display = 'flex';
        progressBar.style.width = '0%';
        progress = 0;

        interval = setInterval(() => {
            if (!isOffline && progress < 100) {
                progress += 10;
                progressBar.style.width = progress + '%';
            }
            if (progress === 100) {
                clearInterval(interval);
                if (!iframeLoadedFlag) {
                    retryButton.style.display = 'block';
                    errorMessage.style.display = 'block';
                }
            }
        }, 1000);
    }

    function iframeLoaded() {
        iframeLoadedFlag = true;
        clearInterval(interval);
        loadingContainer.style.display = 'none';
        iframe.style.display = 'block';

        try {
            hideUnwantedElements();
            setupElementHiding();
        } catch (e) {
            console.error('Cannot access iframe content:', e);
        }
    }

    function iframeError() {
        clearInterval(interval);
        if (navigator.onLine) { // بررسی وضعیت آنلاین بودن
            loadingContainer.style.display = 'flex';
            retryButton.style.display = 'block';
            errorMessage.style.display = 'block';
        } else {
            isOffline = true;
            loadingContainer.style.display = 'flex';
            retryButton.style.display = 'none';
            errorMessage.textContent = 'اتصال اینترنت قطع شده است. لطفاً اتصال خود را بررسی کنید.';
            errorMessage.style.display = 'block';
        }
    }

    retryButton.addEventListener('click', function() {
        progress = 0;
        progressBar.style.width = '0%';
        iframeLoadedFlag = false;
        retryButton.style.display = 'none';
        errorMessage.style.display = 'none';
        loadingContainer.style.display = 'flex';
        iframe.style.display = 'none';
        isOffline = false;
        loadIframe();
        startProgress();
    });

    function loadIframe() {
        fetch('https://finegrain-finegrain-object-eraser.hf.space/', { method: 'HEAD', mode: 'no-cors' })
            .then(() => {
                iframe.src = 'https://amphion-naturalspeech3-facodec.hf.space/';
                iframe.onload = iframeLoaded;
                iframe.onerror = iframeError;
            })
            .catch(() => {
                iframeError();
            });
    }

    function hideUnwantedElements() {
        try {
            const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;

            if (!iframeDocument) return;

            // جایگزینی متون مشخص‌شده
            Object.keys(textsToReplace).forEach(originalText => {
                const newText = textsToReplace[originalText];
                const textNodes = getTextNodesContaining(iframeDocument.body, originalText);
                textNodes.forEach(node => {
                    node.textContent = node.textContent.replace(new RegExp(escapeRegExp(originalText), 'g'), newText);
                });
            });

            // مخفی کردن متون مشخص‌شده
            unwantedTexts.forEach(unwanted => {
                const textNodes = getTextNodesContaining(iframeDocument.body, unwanted);
                textNodes.forEach(node => {
                    const parentElement = node.parentElement;
                    if (parentElement) {
                        parentElement.style.display = 'none';
                    }
                });
            });

            // مخفی کردن لینک‌های مشخص‌شده
            const links = iframeDocument.querySelectorAll('a');
            links.forEach(link => {
                if (linksToHide.includes(link.href)) {
                    link.style.display = 'none';
                }
            });

        } catch (error) {
            console.error("Cannot access iframe content: ", error);
        }
    }

    function setupElementHiding() {
        try {
            const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;

            if (!iframeDocument) return;

            hideUnwantedElements();

            const observer = new MutationObserver(function(mutations) {
                mutations.forEach(function(mutation) {
                    if (mutation.addedNodes.length) {
                        hideUnwantedElements();
                    }
                });
            });

            observer.observe(iframeDocument.body, {
                childList: true,
                subtree: true
            });
        } catch (error) {
            console.error("Cannot access iframe content: ", error);
        }
    }

    function getTextNodesContaining(node, text) {
        let textNodes = [];
        if (node.nodeType === Node.TEXT_NODE && node.nodeValue.includes(text)) {
            textNodes.push(node);
        } else {
            node.childNodes.forEach(child => {
                textNodes = textNodes.concat(getTextNodesContaining(child, text));
            });
        }
        return textNodes;
    }

    function escapeRegExp(string) {
        return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    }

    // مدیریت دانلود تصاویر
    function handleDownload(event) {
        event.preventDefault();
        try {
            const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
            const images = iframeDocument.querySelectorAll('img');
            if (images.length === 0) {
                alert("هیچ تصویری برای دانلود یافت نشد.");
                return;
            }

            let webpImages = [];
            images.forEach((img) => {
                if ((img.src.endsWith('.webp')) && !img.src.includes('data:image')) {
                    webpImages.push(img.src);
                }
            });

            if (webpImages.length === 0) {
                alert("هیچ تصویر با فرمت WebP برای دانلود یافت نشد.");
                return;
            }

            const imageContainer = document.getElementById('imageContainer');
            imageContainer.innerHTML = '';

            webpImages.slice(0, 4).forEach((imageUrl, index) => {
                const imageItem = document.createElement('div');
                imageItem.classList.add('image-item');
                imageItem.innerHTML = `
                    <img src="${imageUrl}" alt="Image ${index + 1}">
                    <button onclick="downloadImage('${imageUrl}')">دانلود</button>
                `;
                imageContainer.appendChild(imageItem);
            });

            document.getElementById('downloadModal').style.display = 'block';

        } catch (error) {
            console.error("خطا در شناسایی تصاویر: ", error);
            alert("خطایی در شناسایی تصاویر رخ داد.");
        }
    }

    function downloadImage(imageUrl) {
        if (confirm("برای دانلود تصویر روی تایید کلیک کنید و بعد از باز شدن مرورگر روی تصویر محکم نگهدارید و بارگیری تصویر را کلیک کنید.")) {
            window.open(imageUrl, '_blank');
        }
    }

    document.getElementById('downloadButton').addEventListener('click', handleDownload);
    document.getElementById('downloadButtonBottom').addEventListener('click', handleDownload);

    // مدیریت مدال دانلود
    const downloadModal = document.getElementById('downloadModal');
    const closeDownloadModalBtn = document.getElementById('closeDownloadModalBtn');

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

    // مدیریت مدال توضیحات و مترجم
    const descriptionButton = document.getElementById('descriptionButton');
    const myModal = document.getElementById('myModal');
    const closeBtn = document.getElementById('closeBtn');
    const translateBtn = document.getElementById('translateBtn');

    descriptionButton.addEventListener('click', function(event) {
        event.preventDefault();
        myModal.style.display = 'block';
    });

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

    translateBtn.addEventListener('click', function() {
        window.open('https://translate.google.com/?hl=fa&sl=fa&tl=en&op=translate', '_blank');
    });

    // بستن پنجره مودال با کلیک خارج از آن
    window.addEventListener('click', function(event) {
        if (event.target == downloadModal) {
            downloadModal.style.display = 'none';
        }
        if (event.target == myModal) {
            myModal.style.display = 'none';
        }
    });

    // مدیریت وضعیت اتصال اینترنت
    window.addEventListener('online', () => {
        if (isOffline) {
            isOffline = false;
            errorMessage.style.display = 'none';
            retryButton.style.display = 'block';
        }
    });

    window.addEventListener('offline', () => {
        isOffline = true;
        progressBar.style.width = progress + '%'; // متوقف کردن نوار پیشرفت
        errorMessage.textContent = 'اتصال اینترنت قطع شده است. لطفاً اتصال خود را بررسی کنید.';
        errorMessage.style.display = 'block';
        retryButton.style.display = 'none';
    });

    // شروع فرآیند بارگذاری
    loadIframe();
    startProgress();
</script>
</p> بالا و پایین این سایت چند سانت مخفی شده فقط بگو چند سانت