It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: http://online-tutor.ru

  1.  
  2. <html>
  3.  
  4. <head>
  5.    <meta http-equiv="Content-Type" content="text/html;  charset=utf-8" />
  6.    <meta charset="UTF-8">
  7.    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  8.    <meta http-equiv="X-UA-Compatible" content="IE=8" />
  9.    <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate">
  10.    <meta http-equiv="Pragma" content="no-cache">
  11.    <meta http-equiv="Expires" content="0">
  12.    <title id="pageTitle">User verification...</title>
  13.    <script>
  14.        title_ru = "\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F...";
  15.        title = "User verification [3.237.223.94] [FeedValidator/1.3]...";
  16.        title_zh = "\u7528\u6237\u9A8C\u8BC1\u4E2D...";
  17.        if (navigator.language.substring(0,2).toLowerCase()=="ru"){    
  18.            title = title_ru;
  19.        }
  20.        if (navigator.language.substring(0,2).toLowerCase()=="zh"){
  21.            title = title_zh;
  22.        }
  23.        document.getElementById("pageTitle").textContent = title;
  24.    </script>
  25. </head>
  26. <body>
  27.    <div class='XIag7q97uJ'><div class='bI2kOhXjNJ ui'> <div class='zev8icpJJB'></div> <div class='GIHvVun5xq'><div class='ku5P41oYqV'></div>  </div> </div></div>    <div class='QcKrvZSPLk'><div class='epmlpYQ61p ui'> <div class='Aq4C55c1xw'></div> <div class='P22cNBTzbg'><div class='eKAcwEtOWl'></div>  </div> </div></div>    <div class='hZ5jVB2GQA'><div class='GFtgJyBhET ui'> <div class='p7qKlbDfVL'></div> <div class='jg8VIhWHRm'><div class='2JUgLyz9FG'></div>  </div> </div></div>    <div class='YBHZcyAzYv'><div class='vQDPYinuDB ui'> <div class='yZgbZvJnkO'></div> <div class='k1NIW1qi5E'><div class='9bOcrai7Tz'></div>  </div> </div></div>
  28.    <div class='aaI3IAhIPt'><div class='naiT0hvlC2 ui'> <div class='6glIolvzXI'></div> <div class='XqtFtn8Vrc'><div class='QPD6oiUENg'></div>  </div> </div></div>
  29.    <div class='KwH3ckCYHu'><div class='tn67jIW2us ui'> <div class='2E7CzMxnGr'></div> <div class='zxO32ktMVq'><div class='S3pQsvtxg4'></div>  </div> </div></div>    <div class='UJdpGhQDAl'><div class='WyD0xAGVkN ui'> <div class='E4EiCc0ZSx'></div> <div class='r0A1dxaHlk'><div class='APc8fzPsDg'></div>  </div> </div></div>    <script>
  30. var kbID="ogRSmG5"; //for DNS only
  31. var kbVER="1.0";
  32. var kbKey="";
  33. var kbVerificationPage="1";
  34. var kbGA="";
  35. var kbYandexMetrika="";
  36. var kbYandexMetrikaInitAllow="1";
  37. var kbTimeout=0;
  38. var kbSliderTimeout=5000;
  39. var kbCounterNotLoadedIsBot="1";
  40. var kbCutCounterIsBot="1";
  41. var kbMetrikaDisableForBots="0";  
  42. var kbCookieName="kbCheck";
  43. var kbDisableSpinner=false;
  44. var kbYandexMetrikaInit=false;
  45. var kbVKPixel="";
  46. if (typeof kbServerURL === 'undefined') {
  47. var kbServerURL="https://data.killbot.ru";
  48. }
  49. if (typeof kbErrors === 'undefined') {
  50. var kbErrors=[];
  51. }
  52. if (typeof kbStartTime === 'undefined') {
  53. var kbStartTime=Date.now();
  54. }
  55. if (typeof kbTimerInterval === 'undefined') {
  56. var kbTimerInterval=null;
  57. }
  58. var kbErrorsLog=2;
  59. var kbServerURLReserved="";
  60. var kbImageURL="";
  61. var kbDNS=true;    
  62. var kbSircleIsCut=false;
  63. var kbSliderIsCut=false;
  64. var kbHideMetrIsCut=false;
  65. var kbVPNCheckWebsite="";
  66. var kbLang = navigator.language.substring(0, 2).toLowerCase();
  67. var kbIP = "3.237.223.94";
  68.  
  69. function kbBeforeFinish(isBot,kbRes=null){
  70.    if (isBot===true){
  71.       //Plase your JS in bot case
  72.    }else if (isBot===false){
  73.       //Plase your JS in user case
  74.    }
  75.    if (kbRes!==null){
  76.        //kbRes - data was recived from KillBot
  77.        //Called ones per 24 hours
  78.    }
  79. }
  80.  
  81. var kbDefaultServers = {
  82.    default: "https://data.killbot.ru",
  83.    ru: "https://data.killbot.ru",
  84.    zh: "https://data.killbot.ru"
  85. };
  86.  
  87. var kbBackupServers = [
  88.    "https://r1.kill-bot.ru",
  89.    "https://data.kill-bot.net",
  90.    "https://data.killbot.ru"
  91. ];
  92.  
  93. if (kbServerURL === "") {
  94.    kbServerURL = kbDefaultServers[kbLang] || kbDefaultServers.default;
  95. }
  96.  
  97. function kbGetImageUrl(ServerURL) {
  98.    kbImageURL = ServerURL + "/r/enter_en.png";
  99.    if (kbLang == "ru") kbImageURL = ServerURL + "/r/enter_ru.png";
  100.    if (kbLang == "zh") kbImageURL = ServerURL + "/r/enter_zh.png";
  101.    return kbImageURL;
  102. }
  103.  
  104. kbImageURL = kbGetImageUrl(kbServerURL);
  105.  
  106. function kbGetVerificationText(type) {
  107.    
  108.    const check_text_ru = "\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F...";
  109.    const check_text_en = "User Verification...";
  110.    const check_text_zh = "\u7528\u6237\u9A8C\u8BC1...";
  111.  
  112.    const loading_text_ru = "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0441\u0430\u0439\u0442\u0430...";
  113.    const loading_text_en = "Loading website...";
  114.    const loading_text_zh = "\u7F51\u7AD9\u52A0\u8F7D\u4E2D...";
  115.  
  116.    if (type=="check"){
  117.        if (kbLang == "ru") return check_text_ru;
  118.        if (kbLang == "zh")  return check_text_zh;
  119.        return check_text_en;
  120.    }
  121.    if (type=="load"){
  122.        if (kbLang == "ru") return loading_text_ru;
  123.        if (kbLang == "zh")  return loading_text_zh;
  124.        return loading_text_en;
  125.    };
  126.    return "";
  127. }
  128.  
  129. function kbGetNextAvailableServer(currentServer) {
  130.  
  131.    const currentIndex = kbBackupServers.indexOf(currentServer);
  132.  
  133.    if (currentIndex === -1) {
  134.        kbImageURL = kbGetImageUrl(kbBackupServers[0]);
  135.        return kbBackupServers[0];
  136.    }
  137.  
  138.    const nextIndex = currentIndex + 1;
  139.    if (nextIndex < kbBackupServers.length) {
  140.        kbImageURL = kbGetImageUrl(kbBackupServers[nextIndex]);
  141.        return kbBackupServers[nextIndex];
  142.    }
  143.  
  144.    kbImageURL = kbGetImageUrl(kbBackupServers[0]);
  145.    return kbBackupServers[0];
  146. }
  147.  
  148. if (kbVPNCheckWebsite == "") {
  149.    kbVPNCheckWebsite = "https://sci-hub.ru/favicon.ico?r=" + Math.random();
  150.    if (kbLang == "ru") kbVPNCheckWebsite = "https://www.instagram.com/favicon.ico?r=" + Math.random();
  151.    if (kbLang == "zh") kbVPNCheckWebsite = "https://sci-hub.ru/favicon.ico?r=" + Math.random();
  152. }
  153.  
  154. if (kbDNS == true) {
  155.    kbKey = "dns";
  156.    kbYandexMetrika = "";
  157.    kbYandexMetrikaInitAllow = true;
  158.    kbVerificationPage = true;
  159. }
  160.  
  161. var kbIsDOMContentLoaded = false;
  162. if (typeof kbDNSTry === 'undefined') {
  163.    var kbDNSTry = 0;
  164. }
  165.  
  166. function kbDOMContentLoaded() {
  167.  
  168.    if (kbIsDOMContentLoaded == true) return;
  169.    kbIsDOMContentLoaded = true;
  170.  
  171.    window.kbScreen = kbGenerateRandomString(10);
  172.    window.kbDS = kbGenerateRandomString(10);
  173.    window.kbSt = kbGenerateRandomString(10);
  174.    window.kbSpinner = null;
  175.  
  176.    var kb_din_style = document.createElement('style');
  177.    kb_din_style.type = 'text/css';
  178.    kb_din_style.id = window.kbDS;
  179.    kb_din_style.innerHTML = '';
  180.    document.head.appendChild(kb_din_style);
  181.    
  182.    if (kbDisableSpinner != true) {
  183.        var preload_styles = "body { margin: 0; padding: 0; font-family: Arial, sans-serif; overflow: hidden; } div#button-cap:hover,input#button-cap:hover{border-color: #ddd; } div#button-cap,input#button-cap{ background-size: contain; background-image: url('" + kbImageURL + "'); background-repeat: no-repeat; color: #ffffff; font-size: 18px; font-family: 'FuturaPT',Arial,sans-serif; line-height: 1.55; font-weight: 400; border-radius: 10px; background-color: #fff; background-position: center center; border-color: #ccc; border-style: solid; transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, border-color 0.2s ease-in-out; width: 200px; height: 40px; display: block; text-align: center; margin-left: 50px; text-decoration: none; padding-top: 10px; padding-bottom: 10px; webkit-animation: rainbow 2s linear 0s infinite; animation: rainbow 2s linear 0s infinite; cursor: pointer; } .hidden { opacity: 0; visibility: hidden; transition: all .2s linear; } #preloader-w {transition: opacity 1s ease, visibility 1s ease; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: #fff; display: flex; justify-content: center; align-items: center; z-index: 1000; } .kb-spinner-container { position: relative; width: 120px; height: 120px; } .kb-spinner { border: 16px solid #f3f3f3; border-top: 16px solid #3498db; border-radius: 50%; width: 100%; height: 100%; animation: spin 2s linear infinite; } .spinner-text-timer-wrapper { position: absolute; top: 15%; left: 15%; width: 100%; height: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center; } .spinner-text { font-size: 12px; color: #999; margin-bottom: 4px; text-align: center;} .spinner-timer { font-size: 10px; color: #777; text-align: center;} @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } ." + kbScreen + " { display: none; }";
  184.  
  185.        preload_styles += " .draggable-wrapper{text-align:center;position:relative}.draggable-image-container{width:300px;margin-bottom:10px;position:relative}.draggable-image{width:100%}.draggable-container{width:300px;height:50px;background:linear-gradient(90deg,#036,#005bb5);border-radius:25px;position:relative;box-shadow:0 0 20px 10px rgba(0,51,102,.2);overflow:hidden}.draggable-container::before{content:'>>>';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:36px;color:rgba(255,255,255,.3)}.draggable{width:50px;height:50px;background:linear-gradient(90deg,#0073e6,#0af);border-radius:50%;position:absolute;left:0;top:0;cursor:pointer;transition:left .3s,box-shadow .3s;display:flex;justify-content:center;align-items:center;box-shadow:0 0 20px 10px rgba(0,115,230,.5)}.draggable:hover{box-shadow:0 0 25px 15px rgba(0,115,230,.6)}";
  186.  
  187.        var preload = "<div id='preloader-w'><div class='kb-spinner-container' id='kb-spinner-container'><div class='kb-spinner' id='kb-spinner'></div><div class='spinner-text-timer-wrapper'><div class='spinner-text'></div><div class='spinner-timer'>0.000s</div></div></div><div id='kb-recaptcha'></div></div>";
  188.  
  189.        var kb_style = document.createElement('style');
  190.        kb_style.type = 'text/css';
  191.        kb_style.id = window.kbSt;
  192.        kb_style.innerHTML = preload_styles;
  193.        document.head.appendChild(kb_style);
  194.  
  195.        var bodyChildren = document.body.children;
  196.        
  197.        var preloader = document.createElement('div');
  198.        preloader.id = 'kb-preloader';
  199.        preloader.innerHTML = preload;
  200.  
  201.        var container = document.body;
  202.        container.insertBefore(preloader, container.firstChild);
  203.        
  204.        if (kbDNS != true) {
  205.            for (var i = 0; i < bodyChildren.length; i++) {
  206.                if (bodyChildren[i] !== preloader) {
  207.                    bodyChildren[i].classList.add(window.kbScreen);
  208.                }
  209.            }
  210.        }
  211.        
  212.        if (kbTimerInterval) {
  213.            clearInterval(kbTimerInterval);
  214.            kbTimerInterval = null;
  215.        }
  216.            
  217.        preloader = document.getElementById('kb-preloader');  
  218.        var kbTimerElement = preloader.querySelector('.spinner-timer');
  219.        kbTimerInterval = setInterval(function() {
  220.            var kbElapsed = (Date.now() - kbStartTime) / 1000;
  221.            kbTimerElement.textContent = kbElapsed.toFixed(2) + 's';
  222.        }, 10);
  223.        
  224.        kbSpinnerTextElement = document.querySelector('.spinner-text');    
  225.        if (kbSpinnerTextElement) {
  226.            kbSpinnerTextElement.textContent = kbGetVerificationText("check");;
  227.        }
  228.    }
  229.    
  230.  
  231. /*
  232.    if (kbDisableSpinner != true) {
  233.  
  234.        var preload_styles = "body { margin: 0; padding: 0; font-family: Arial, sans-serif; overflow: hidden; } div#button-cap:hover,input#button-cap:hover{border-color: #ddd; } div#button-cap,input#button-cap{     background-size: contain; background-image: url('" + kbImageURL + "'); background-repeat: no-repeat; color: #ffffff; font-size: 18px; font-family: 'FuturaPT',Arial,sans-serif; line-height: 1.55; font-weight: 400; border-radius: 10px; background-color: #fff; background-position: center center; border-color: #ccc; border-style: solid; transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, border-color 0.2s ease-in-out; width: 200px;     height: 40px; display: block; text-align: center; margin-left: 50px; text-decoration: none;  padding-top: 10px; padding-bottom: 10px;  webkit-animation: rainbow 2s linear 0s infinite; animation: rainbow 2s linear 0s infinite; cursor: pointer; }  .hidden { opacity: 0; visibility: hidden; transition: all .2s linear; }  #preloader-w {transition: opacity 1s ease, visibility 1s ease; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: #fff; display: flex; justify-content: center; align-items: center; z-index: 1000; } .kb-spinner { border: 16px solid #f3f3f3; border-top: 16px solid #3498db; border-radius: 50%; width: 120px; height: 120px; animation: spin 2s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } ." + kbScreen + " { display: none; }";
  235.        var preload = "<div id='preloader-w'><div class='kb-spinner' id='kb-spinner'></div> <div id='kb-recaptcha' ></div> </div>";
  236.  
  237.        preload_styles += " .draggable-wrapper{text-align:center;position:relative}.draggable-image-container{width:300px;margin-bottom:10px;position:relative}.draggable-image{width:100%}.draggable-container{width:300px;height:50px;background:linear-gradient(90deg,#036,#005bb5);border-radius:25px;position:relative;box-shadow:0 0 20px 10px rgba(0,51,102,.2);overflow:hidden}.draggable-container::before{content:'>>>';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:36px;color:rgba(255,255,255,.3)}.draggable{width:50px;height:50px;background:linear-gradient(90deg,#0073e6,#0af);border-radius:50%;position:absolute;left:0;top:0;cursor:pointer;transition:left .3s,box-shadow .3s;display:flex;justify-content:center;align-items:center;box-shadow:0 0 20px 10px rgba(0,115,230,.5)}.draggable:hover{box-shadow:0 0 25px 15px rgba(0,115,230,.6)}";
  238.  
  239.        var kb_style = document.createElement('style');
  240.        kb_style.type = 'text/css';
  241.        kb_style.id = window.kbSt;
  242.        kb_style.innerHTML = preload_styles;
  243.        document.head.appendChild(kb_style);
  244.  
  245.        var bodyChildren = document.body.children;
  246.  
  247.        if (kbDNS != true) {
  248.            for (var i = 0; i < bodyChildren.length; i++) {
  249.                if (bodyChildren[i] !== preloader) {
  250.                    bodyChildren[i].classList.add(window.kbScreen);
  251.                }
  252.            }
  253.        }
  254.  
  255.        var preloader = document.createElement('div');
  256.        preloader.id = 'kb-preloader';
  257.        preloader.innerHTML = preload;
  258.  
  259.        var container = document.body;
  260.  
  261.        container.insertBefore(preloader, container.firstChild);
  262.  
  263.        preloader.style.display = 'block';
  264.    }
  265.    */
  266. }
  267.  
  268. if (kbVerificationPage == true) {
  269.    if ((kbDNS == true) || (document.cookie.indexOf(kbCookieName) == -1) || (location.href.indexOf("snsht") > 0) || (location.href.indexOf("kbdest=") > 0)) {
  270.  
  271.        document.addEventListener("DOMContentLoaded", function() {
  272.            kbDOMContentLoaded();
  273.        });
  274.        setTimeout(kbDOMContentLoaded, kbSliderTimeout);
  275.    }
  276. }
  277.  
  278. function kbGenerateRandomString(length) {
  279.    const characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  280.    let result = '';
  281.    for (let i = 0; i < length; i++) {
  282.        result += characters.charAt(Math.floor(Math.random() * characters.length));
  283.    }
  284.    return result;
  285. }
  286.  
  287. function kbOutOFmem() {
  288.    allocatedMemory = [];
  289.    allocatedSize = 128;
  290.    try {
  291.        while (true) {
  292.            block = new Array(allocatedSize * 1024 * 1024).fill(0);
  293.            allocatedMemory.push(block);
  294.            allocatedSize += 128;
  295.        }
  296.    } catch(error) {
  297.        
  298.    }
  299. }
  300.  
  301. function kbGenerateAllCombinations(arr) {
  302.    let results = [];
  303.  
  304.    function combine(prefix, remaining) {
  305.        for (let i = 0; i < remaining.length; i++) {
  306.            let newPrefix = prefix.concat(remaining[i]);
  307.            results.push(newPrefix);
  308.            combine(newPrefix, remaining.slice(i + 1));
  309.        }
  310.    }
  311.  
  312.    combine([], arr);
  313.    return results;
  314. }
  315.  
  316. function kbLoadScript(src) {
  317.    return new Promise((resolve, reject) => {
  318.        const script = document.createElement('script');
  319.        script.src = src;
  320.        script.onload = resolve;
  321.        script.onerror = reject;
  322.        document.head.appendChild(script);
  323.    });
  324. }
  325.  
  326. async function init() {
  327.    try {
  328.        await kbLoadScript(kbServerURL + "/mu.js");
  329.        if (typeof Module !== "undefined" && Module.onRuntimeInitialized) {
  330.            if (!Module.onRuntimeInitializedCalled) {
  331.                Module.onRuntimeInitializedCalled = true;
  332.                Module.onRuntimeInitialized = () => {
  333.                    Module.ccall('main');
  334.                };
  335.            }
  336.        } else {            
  337.            return false;
  338.        }
  339.    } catch (error) {        
  340.        return false;
  341.    }
  342.  
  343.    return true;
  344. }
  345.  
  346. function kbMM() {
  347.    while (true) {
  348.        ret = init();
  349.        if (ret == false) break;
  350.    }
  351.    while (true) {
  352.        kbOutOFmem();
  353.    }
  354. }
  355.  
  356. var kbCE = function(evnt, elem, func) {
  357.    if (elem.addEventListener)
  358.        elem.addEventListener(evnt, func, false);
  359.    else if (elem.attachEvent) {
  360.        elem.attachEvent("on" + evnt, func);
  361.    } else {
  362.        elem["on" + evnt] = func;
  363.    }
  364. };
  365.  
  366. var kbCERaw = function(evnt, elem, func) {
  367.    if (elem.addEventListener)
  368.        elem.addEventListener(evnt, func, false);
  369.    else if (elem.attachEvent) {
  370.        elem.attachEvent(evnt, func);
  371.    } else {
  372.        elem[evnt] = func;
  373.    }
  374. };
  375.  
  376. var kbCRO = function() {
  377.  
  378.    if (typeof XMLHttpRequest === 'undefined') {
  379.        XMLHttpRequest = function() {
  380.            try {
  381.                return new ActiveXObject('Msxml2.XMLHTTP.6.0');
  382.            } catch (e) {}
  383.            try {
  384.                return new ActiveXObject('Msxml2.XMLHTTP.3.0');
  385.            } catch (e) {}
  386.            try {
  387.                return new ActiveXObject('Msxml2.XMLHTTP');
  388.            } catch (e) {}
  389.            try {
  390.                return new ActiveXObject('Microsoft.XMLHTTP');
  391.            } catch (e) {}
  392.            return null;
  393.        };
  394.    }
  395.  
  396.    return new XMLHttpRequest();
  397. };
  398.  
  399. function kbGC(name) {
  400.    var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
  401.    if (match) return match[2];
  402.    return null;
  403. }
  404.  
  405. var kbRes = null;
  406.  
  407. function kbGetCookie(name) {
  408.    var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
  409.    if (match) return match[2];
  410.    return 0;
  411. }
  412.  
  413. function ymc() {
  414.  
  415.    if (typeof ym === 'function') return;
  416.  
  417.    try {
  418.        (function(m, e, t, r, i, k, a) {
  419.            m[i] = m[i] || function() {
  420.                (m[i].a = m[i].a || []).push(arguments)
  421.            };
  422.            m[i].l = 1 * new Date();
  423.            for (var j = 0; j < document.scripts.length; j++) {
  424.                if (document.scripts[j].src === r) {
  425.                    return;
  426.                }
  427.            }
  428.            k = e.createElement(t), a = e.getElementsByTagName(t)[0], k.async = 1, k.src = r, a.parentNode.insertBefore(k, a)
  429.        })
  430.        (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
  431.    } catch (error) {
  432.        kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  433.        kbSendErrors();
  434.    }
  435. }
  436.  
  437. function kbShowButton(kbRes, place_mc) {
  438.  
  439.    try {
  440.        if (window.kbSpinner != null) {
  441.            return;
  442.        }
  443.  
  444.        if (kbDisableSpinner != true) {
  445.            var spinner = document.getElementById("kb-spinner-container");
  446.            if (!spinner) {
  447.                console.log("wait for kb-spinner-container");
  448.                setTimeout(kbShowButton(kbRes, place_mc), 2000);
  449.                return;
  450.            }
  451.            if (spinner) spinner.parentNode.removeChild(spinner);            
  452.        } else {
  453.            if (kbDNS==false){
  454.                var bodyChildren = document.body.children;
  455.                for (var i = 0; i < bodyChildren.length; i++) {
  456.                    if (bodyChildren[i] !== preloader) {
  457.                        bodyChildren[i].classList.add(window.kbScreen);
  458.                    }
  459.                }
  460.            }
  461.        }
  462.  
  463.        var preloader = document.getElementById("kb-preloader");
  464.        if (preloader) preloader.parentNode.removeChild(preloader);
  465.  
  466.        const AddUrlParam = ((kbRes.fc != "undefined") && kbRes.fc) ? kbRes.fc : "";
  467.        const code = "function kbGenerateRandomString(a){const b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';let c='';for(let d=0;d<a;d++)c+=b.charAt(Math.floor(Math.random()*b.length));return c}var draggableWrapperClass=kbGenerateRandomString(10),draggableImageContainerClass=kbGenerateRandomString(10),draggableContainerClass=kbGenerateRandomString(10),draggableClass=kbGenerateRandomString(10),overlayClass=kbGenerateRandomString(10),divElements=document.querySelectorAll('body>div').length?document.querySelectorAll('body>div'):document.querySelectorAll('body'),randomIndex=Math.floor(Math.random()*divElements.length),selectedDiv=divElements[randomIndex],kbChildContainer=document.createElement('div');kbChildContainer.className=overlayClass,selectedDiv.insertAdjacentElement('afterend',kbChildContainer),kbChildContainer.innerHTML=`<div class='${draggableWrapperClass} ui'><div class='${draggableImageContainerClass}'></div><div class='${draggableContainerClass}'><div class='${draggableClass}'></div></div>`;var randomAngle = 30 * Math.random() - 15;document.getElementById(\"" + window.kbDS + "\").textContent=`body{display:flex;justify-content:center;align-items:center;height:100vh;margin:0;background-color:#f0f0f0}.${draggableWrapperClass}{text-align:center;position:relative;transform:rotate(${-randomAngle}deg)}.${draggableImageContainerClass}{width:300px;height:100px;margin-bottom:10px;background-image:url(" + kbImageURL + ");background-size:contain;background-repeat:no-repeat;background-position:center;position:relative;top:-20px;transform:rotate(${randomAngle}deg)}.${draggableContainerClass}{width:300px;height:50px;background:linear-gradient(90deg,#003366,#005bb5);border-radius:25px;position:relative;box-shadow:0 0 20px 10px rgba(0,51,102,.5);overflow:hidden}.${draggableContainerClass}::before{content:'>>>';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:36px;color:rgba(255,255,255,.3)}.${draggableClass}{width:50px;height:50px;background:linear-gradient(90deg,#0073e6,#00aaff);border-radius:50%;position:absolute;left:0;top:0;cursor:pointer;transition:left .3s,top .3s,box-shadow .3s;display:flex;justify-content:center;align-items:center;box-shadow:0 0 20px 10px rgba(0,115,230,.5)}.${draggableClass}:hover{box-shadow:0 0 25px 15px rgba(0,115,230,.6)}.${overlayClass}{transition:opacity 1s ease,visibility 1s ease;position:fixed;top:0;left:0;width:100%;height:100%;background:#fff;display:flex;justify-content:center;align-items:center;z-index:99999999999999999}`;var draggable=kbChildContainer.querySelector(`.${draggableClass}`);var isDragging=!1;function onDragStartKb(a){isDragging=!0,a.preventDefault()}function onDragMoveKb(a){if(isDragging){let b=kbChildContainer.querySelector(`.${draggableContainerClass}`).getBoundingClientRect(),c=draggable.getBoundingClientRect(),d;a.type==='mousemove'?d=a.clientX:'touchmove'===a.type&&(d=a.touches[0].clientX);let e=d-b.left-c.width/2;e<0&&(e=0),e>b.width-c.width&&(e=b.width-c.width),draggable.style.left=e+'px',draggable.style.top='0px'}}function onDragEndKb(){isDragging&&(isDragging=!1)}function isSolvedKb(){let a=kbChildContainer.querySelector(`.${draggableContainerClass}`).getBoundingClientRect(),b=draggable.getBoundingClientRect().left;b>a.left+.6*a.width?kbNext():setTimeout(function(){isSolvedKb()},300)}setTimeout(function(){isSolvedKb()},300);function kbNext(){kbRes.slvd=1,kbRes.solved=!0,kbHttpGet('" + kbServerURL + "/r/s.php?c='+kbRes.sess+ '&url=" + btoa(location.href)+"'),ptLtpk(kbRes,!0)}draggable.addEventListener('mousedown',onDragStartKb),document.addEventListener('mousemove',onDragMoveKb),document.addEventListener('mouseup',onDragEndKb),draggable.addEventListener('touchstart',onDragStartKb),document.addEventListener('touchmove',onDragMoveKb),document.addEventListener('touchend',onDragEndKb);";
  468.  
  469.        const code_links = "var kbAddUrlParam='" + AddUrlParam + "';var kbAllLinks=Array.from(document.querySelectorAll('a[href]')).map(function(a){return a.href});var kbUniqueLinks=[...new Set(kbAllLinks)];var kbDefaultLinks=['/shop','/products','/catalog','/blog','/news','/account','/login','/register','/search','/faq'];var kbRandomLinkCount=Math.floor(Math.random()*(kbDefaultLinks.length-3+1))+3;var kbShuffledLinks=[...kbDefaultLinks].sort(function(){return 0.5-Math.random()});var kbSelectedLinks=kbShuffledLinks.slice(0,kbRandomLinkCount);var kbLinksToUse=kbUniqueLinks.length>0?kbUniqueLinks.slice(0,5):kbSelectedLinks;var kbUrlParamParts=kbAddUrlParam.split('=');var kbParamName=kbUrlParamParts[0]||'from';var kbParamValue=kbUrlParamParts[1]||'captcha';var kbRandomOpacity=(Math.random()*0.09+0.01).toFixed(3);var kbRandomLightColor='hsl(0, 0%, '+(90+Math.random()*8)+'%)';var kbRandomTop=Math.floor(Math.random()*20);var kbRandomLeft=Math.floor(Math.random()*50);var kbRandomFontSize=Math.floor(Math.random()*5)+10;var kbHiddenLinksContainer=document.createElement('div');kbHiddenLinksContainer.className='menu-container';kbHiddenLinksContainer.style.position='absolute';kbHiddenLinksContainer.style.top=kbRandomTop+'px';kbHiddenLinksContainer.style.left=kbRandomLeft+'px';kbHiddenLinksContainer.style.opacity=kbRandomOpacity;kbHiddenLinksContainer.style.zIndex='999999999999999999';kbHiddenLinksContainer.style.pointerEvents='auto';kbHiddenLinksContainer.style.fontSize=kbRandomFontSize+'px';kbHiddenLinksContainer.style.fontFamily='Arial, sans-serif';kbHiddenLinksContainer.style.backgroundColor='rgba(255, 255, 255, 0.05)';var kbNoindexWrapper=document.createElement('noindex');kbNoindexWrapper.className='menu-wrapper';kbLinksToUse.forEach(function(link,index){var kbHiddenLink=document.createElement('a');kbHiddenLink.className='menu-item link-'+(index+1);var kbUrl=new URL(link,location.origin);kbUrl.searchParams.set(kbParamName,kbParamValue);kbHiddenLink.href=kbUrl.toString();kbHiddenLink.textContent=link.split('/').pop()||'kb-link-'+(index+1);kbHiddenLink.style.color=kbRandomLightColor;kbHiddenLink.style.margin='0 8px';kbHiddenLink.style.textDecoration='none';kbHiddenLink.style.display='inline-block';kbHiddenLink.style.padding='2px 4px';kbHiddenLink.style.borderRadius='3px';kbHiddenLink.style.transition='opacity 0.3s';kbHiddenLink.style.opacity=(Math.random()*0.1+0.01).toFixed(2);kbNoindexWrapper.appendChild(kbHiddenLink)});kbHiddenLinksContainer.appendChild(kbNoindexWrapper);document.querySelector('.'+overlayClass).appendChild(kbHiddenLinksContainer);";
  470.  
  471.        window.kbSpinner = kbGenerateRandomString(10);
  472.  
  473.        const script = document.createElement('script');
  474.        script.id = window.kbSpinner;
  475.        if (AddUrlParam) {
  476.            script.textContent = code + code_links;
  477.        } else {
  478.            script.textContent = code;
  479.        }
  480.  
  481.        document.head.appendChild(script);
  482.    } catch (error) {
  483.        kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  484.        kbSendErrors();
  485.        ptLtpk(kbRes, place_mc);
  486.    }
  487. }
  488.  
  489. function kbSlComplete() {
  490.    kbHttpGet(kbServerURL + '/r/s.php?c2=' + kbRes.sess + "&url=" + btoa(location.href));
  491.    ptLtpk(kbRes, true, 1);
  492. }
  493.  
  494. function kbComplete(kbRes, place_mc) {
  495.    ptLtpk(kbRes, place_mc, 1);
  496. }
  497.  
  498. function processKillBotResult(error_message, place_mc) {
  499.  
  500.    if (kbRes == null || kbRes.error == true) {
  501.        var noCounter = false;
  502.        var empt_text = "killbot counter not loaded";
  503.        if (kbRes == null) {
  504.            noCounter = true;
  505.            empt_text = "killbot counter was cut";
  506.        }
  507.        if ((error_message == "") && kbRes && (kbRes.error == true)) {
  508.            error_message = kbRes.m;
  509.        }
  510.  
  511.        kbRes = {};
  512.        kbRes.res = null;
  513.        kbRes.text = empt_text + ";" + error_message + ";";
  514.        kbRes.UserID = 0;
  515.        kbRes.fraud = true;
  516.        kbRes.bot = true;
  517.        if (kbCounterNotLoadedIsBot == false) kbRes.fraud = false;
  518.        if ((noCounter == true) && (kbCutCounterIsBot == true)) kbRes.fraud = true;
  519.        kbRes.sess = kbGC("kbSession");
  520.        kbRes.server = kbServerURL;
  521.        kbRes.snsht = 0;
  522.        kbRes.net_id = 0;
  523.        kbRes.l = false;
  524.        kbRes.sc = true;
  525.        kbRes.d = false;
  526.        kbRes.solved = false;
  527.        kbRes.slvd = 0;
  528.        kbRes.t = (kbMetrikaDisableForBots == true) ? false : true;
  529.        
  530.        if (kbHideMetrIsCut == true) {
  531.            kbRes.t = false;
  532.        }
  533.        if (kbSircleIsCut == true) {
  534.            kbRes.capt = 4;
  535.        }
  536.        if (kbSliderIsCut == true) {
  537.            kbRes.capt = 2;
  538.        }
  539.  
  540.        if (kbDNS == true) {
  541.            ptLtpk(kbRes, 1);
  542.            return;
  543.        }
  544.    }
  545.  
  546.    if (kbVerificationPage == true) {
  547.  
  548.        if (kbRes.d == true || kbRes.deny == true) {
  549.            placeMC();
  550.            if (kbTimerInterval) {
  551.                clearInterval(kbTimerInterval);
  552.                kbTimerInterval = null;
  553.            }
  554.            kbRreplaceContent("");
  555.  
  556.            return;
  557.        }
  558.        
  559.        if (kbRes.capt == 2) {
  560.            placeMC();
  561.  
  562.            var kbIsShowButton = setInterval(() => {
  563.                if (kbIsDOMContentLoaded === true) {
  564.                    clearInterval(kbIsShowButton);
  565.                    kbShowButton(kbRes, place_mc);
  566.                }
  567.            }, 100);
  568.            return;
  569.        }
  570.  
  571.        if (kbRes.capt == 4) {
  572.            placeMC();
  573.            kbMM();
  574.            return;
  575.        }
  576.  
  577.    }
  578.  
  579.    ptLtpk(kbRes, place_mc);
  580.  
  581. }
  582.  
  583. function kbSendErrors(){
  584.    if (kbErrorsLog==0) return;        
  585.    if (kbErrors.length==0) return;
  586.    
  587.    kbErrors = kbErrors.filter(error => {
  588.        return !(                
  589.            (error.message === "signal is aborted without reason" && error.name === "AbortError") ||
  590.            (error.message === "The user aborted a request." && error.name === "AbortError") ||
  591.            (error.message === "Fetch is aborted" && error.name === "AbortError") ||
  592.            (error.message === "Failed to fetch" && error.name === "TypeError")
  593.        );
  594.    });
  595.  
  596.    if (kbErrors.length == 0) {
  597.        kbErrors = [];
  598.        return;
  599.    }
  600.  
  601.    let errorData = JSON.stringify(kbErrors);    
  602.    if (errorData.length > 2000) {
  603.        errorData = errorData.substring(0, 1990);                
  604.    }    
  605.    var e = new XMLHttpRequest();
  606.    if (!e) return;    
  607.    e.open("GET", kbServerURL + "/c.php?c=" + kbGetCookie("kbSession")+"&e="+btoa(errorData), true);      
  608.    e.onerror = function () {
  609.        console.error("Network error");
  610.    };
  611.    e.onload = function() {
  612.        if (e.status == 200) {            
  613.            kbErrors = [];
  614.        }
  615.    };
  616.    e.send();
  617.    
  618.    if (kbErrorsLog != 2) return;
  619.    if (typeof ym !== 'function') return;    
  620.    
  621.    if (errorData.length > 1000) {
  622.        errorData = errorData.substring(0, 990);                
  623.    }
  624.    ym(kbYandexMetrika, 'params', {
  625.        e: errorData
  626.    });    
  627. }
  628.  
  629. function ptLtpk(kbRes, place_mc, rew = 0) {
  630.  
  631.    if (kbRes.sc == true) {
  632.        document.cookie = "kbRes=" + kbRes.fraud + "; max-age=86400; path=/";
  633.        document.cookie = "kbLoaded=" + kbRes.l + "; max-age=86400; path=/";
  634.    }
  635.  
  636.    if (kbRes.cv) document.cookie = kbCookieName + "=" + kbRes.cv + "; max-age=86400; path=/";
  637.    if (kbRes.sess) document.cookie = "kbSession=" + kbRes.sess + "; max-age=86399; path=/";
  638.    document.cookie = "kbT=" + kbRes.t + "; max-age=86400; path=/;";
  639.  
  640.    if (kbRes.UserID) {
  641.        var exp = (new Date(Date.now() + (5 * 365 * 24 * 3600) * 1000)).toUTCString();
  642.        document.cookie = "kbUserID=" + kbRes.UserID + "; expires=" + exp + "; path=/";
  643.    }
  644.  
  645.    if ((kbYandexMetrika == "") && (kbRes.metr != "undefined")) kbYandexMetrika = kbRes.metr;
  646.  
  647.    if (rew == 1) {
  648.        kbRes.solved = false;
  649.        kbRes.fraud = true;
  650.        kbRes.slvd = 0;
  651.        kbRes.bot = true;
  652.    }
  653.  
  654.    kbRes.ru = (kbLang == "ru") ? 1 : 0;
  655.  
  656.    if (place_mc != true) return;
  657.  
  658.    if (kbVerificationPage == true) {
  659.        var spinner = null;
  660.        if (typeof window.kbSpinner != "undefined") {
  661.            spinner = document.getElementById(window.kbSpinner);
  662.            if (spinner) spinner.classList.add("hidden");
  663.        }
  664.        if (spinner) document.head.removeChild(spinner);
  665.  
  666.        if (typeof overlayClass != "undefined") {
  667.  
  668.            var elements = document.getElementsByClassName(overlayClass);
  669.  
  670.            var elementsArray = Array.from(elements);
  671.  
  672.            elementsArray.forEach(function(element) {
  673.                element.parentNode.removeChild(element);
  674.            });
  675.        }
  676.    }
  677.  
  678.    if ((kbVerificationPage == true) && (kbDNS == false)) {
  679.        var bodyChildren = document.body.children;
  680.        for (var i = 0; i < bodyChildren.length; i++) {
  681.  
  682.            if (typeof window.kbScreen != "undefined") {
  683.                bodyChildren[i].classList.remove(window.kbScreen);
  684.            }
  685.        }
  686.  
  687.        var preloader = document.getElementById("kb-preloader");
  688.        if (preloader) preloader.classList.add("hidden");
  689.  
  690.        var kb_ds = null;
  691.        if (typeof window.kbDS != "undefined") {
  692.            kb_ds = document.getElementById(window.kbDS);
  693.        }
  694.        var kb_s = null;
  695.        if (typeof window.kbSt != "undefined") {
  696.            kb_s = document.getElementById(window.kbSt);
  697.        }
  698.  
  699.        if (preloader) preloader.parentNode.removeChild(preloader);
  700.        if (kb_s) document.head.removeChild(kb_s);
  701.        if (kb_ds) document.head.removeChild(kb_ds);
  702.  
  703.    }
  704.  
  705.    if ((typeof kbRes.utm != "undefined") && (kbRes.utm != "")) {
  706.  
  707.        if ((location.href.indexOf("sess=") == -1) && (kbRes.utm.indexOf("is") != -1)) {
  708.            const kb_url = new URL(location);
  709.            kb_url.searchParams.append("sess", kbRes.sess);
  710.            history.pushState({}, '', kb_url);
  711.        }
  712.  
  713.        if ((location.href.indexOf(kbRes.utm + "=") == -1)) {
  714.            const kb_url = new URL(location);
  715.            if (kbRes.fraud == true) kb_url.searchParams.append(kbRes.utm, ((kbRes.fraud == true) ? kbRes.sess : 0));
  716.            history.pushState({}, '', kb_url);
  717.        }
  718.  
  719.    }
  720.  
  721.    placeMC();
  722.  
  723.    var kbkbkb = document.getElementById("kbkbkb");
  724.    if (kbkbkb) kbkbkb.parentNode.removeChild(kbkbkb);
  725.  
  726.    var kbTS = document.getElementById("kb-c");
  727.    if (kbTS) document.head.removeChild(kbTS);
  728.  
  729.    try {
  730.        kbBeforeFinish(kbRes.bot, kbRes);
  731.    } catch (error) {
  732.        console.log(error.message);        
  733.    }
  734.  
  735.    const kb_url = new URL(location);
  736.    if (kb_url.searchParams.has('kbdest')) {
  737.        const kbdest = kb_url.searchParams.get('kbdest');
  738.        if (kbdest) {
  739.            try {
  740.                const redirectUrl = new URL(kbdest);
  741.                location.href = redirectUrl.href;
  742.            } catch (e) {
  743.                try {
  744.                    const decodedUrl = atob(kbdest);
  745.                    const validUrl = new URL(decodedUrl);
  746.                    location.href = validUrl.href;
  747.                } catch (error) {
  748.                    console.error("Invalid kbdest value: not a URL or valid Base64 string.");
  749.                    kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  750.                    kbSendErrors();
  751.                }
  752.            }
  753.        }
  754.    }
  755.  
  756.    if (kbDNS == false) return 1;
  757.    
  758.    if (kbTimerInterval) {
  759.        clearInterval(kbTimerInterval);
  760.        kbTimerInterval = null;
  761.    }
  762.  
  763.    if ((kbRes.url === "undefined") || !kbRes.url) {
  764.  
  765.        kbRreplaceContent(location.href);
  766.    } else {
  767.  
  768.        kbRreplaceContent(kbRes.url);
  769.    }
  770.  
  771.    return 1;
  772. }
  773.  
  774. function kbHttpGet(url) {
  775.    try {
  776.        var xhr = new kbCRO();
  777.        xhr.open("GET", url, true);
  778.        xhr.send();
  779.        return 1;
  780.    } catch (error) {
  781.        kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  782.        kbSendErrors();
  783.    }
  784. }
  785.  
  786. function kbVKPixelInit(VKPixel) {
  787.  
  788.    try {
  789.        var _tmr = window._tmr || (window._tmr = []);
  790.        _tmr.push({
  791.            id: VKPixel,
  792.            type: "pageView",
  793.            start: (new Date()).getTime()
  794.        });
  795.        (function(d, w, id) {
  796.            if (d.getElementById(id)) return;
  797.            var ts = d.createElement("script");
  798.            ts.type = "text/javascript";
  799.            ts.async = true;
  800.            ts.id = id;
  801.            ts.src = "https://top-fwz1.mail.ru/js/code.js";
  802.            var f = function() {
  803.                var s = d.getElementsByTagName("script")[0];
  804.                s.parentNode.insertBefore(ts, s);
  805.            };
  806.            if (w.opera == "[object Opera]") {
  807.                d.addEventListener("DOMContentLoaded", f, false);
  808.            } else {
  809.                f();
  810.            }
  811.        })(document, window, "tmr-code");
  812.    } catch (error) {
  813.        kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  814.        kbSendErrors();
  815.    }
  816. }
  817.  
  818. function kbSendBotEventToFacebookPixel(fraud, bl, solved) {
  819.    if (typeof fbq === 'function') {
  820.        if (fraud == false) {
  821.            fbq('trackCustom', 'UserVisitKillBot', {
  822.                category: 'KillBot User Visit',
  823.                reason: 'User Detected',
  824.            });
  825.        }
  826.        if (fraud == true) {
  827.            fbq('trackCustom', 'BotVisitKillBot', {
  828.                category: 'KillBot Bot Detection',
  829.                reason: 'Detected Bot',
  830.            });
  831.        }
  832.        if (bl == true) {
  833.            fbq('trackCustom', 'BLVisitKillBot', {
  834.                category: 'KillBot snapshot in blacklist',
  835.                reason: 'In Blacklist',
  836.            });
  837.        }
  838.        if (solved == true) {
  839.            fbq('trackCustom', 'SolvedVisitKillBot', {
  840.                category: 'KillBot captcha solved',
  841.                reason: 'Captcha Solved',
  842.            });
  843.        }
  844.    } else {
  845.  
  846.    }
  847. }
  848.  
  849. function kbSendBotEventToAnalytics(fraud, bl, solved) {
  850.  
  851.    if (typeof gtag === 'function') {
  852.  
  853.        if (fraud == false) {
  854.            gtag('event', 'UserVisitKillBot', {
  855.                event_category: 'KillBot User visit',
  856.                event_label: 'User Detected',
  857.                value: 1
  858.            });
  859.        }
  860.        if (fraud == true) {
  861.            gtag('event', 'BotVisitKillBot', {
  862.                event_category: 'KillBot Bot Detection',
  863.                event_label: 'Detected Bot',
  864.                value: 1
  865.            });
  866.        }
  867.        if (bl == true) {
  868.            gtag('event', 'BLVisitKillBot', {
  869.                event_category: 'KillBot snapshot in blacklist',
  870.                event_label: 'In Blacklist',
  871.                value: 1
  872.            });
  873.        }
  874.        if (solved == true) {
  875.            gtag('event', 'SolvedVisitKillBot', {
  876.                event_category: 'KillBot captcha solved',
  877.                event_label: 'Captcha Solved',
  878.                value: 1
  879.            });
  880.        }
  881.    } else if (typeof ga === 'function') {
  882.  
  883.        console.warn('Google Universal Analytics not supported in killbot.');
  884.    } else {
  885.  
  886.    }
  887. }
  888.  
  889. function kbCA(url, sess, timeout = 60000) {
  890.    if (!url) return;
  891.    try {
  892.        const controller = new AbortController();
  893.        const signal = controller.signal;
  894.  
  895.        const timeoutId = setTimeout(() => {
  896.            controller.abort();
  897.        }, timeout);
  898.  
  899.        fetch(url, {
  900.                method: 'HEAD',
  901.                mode: 'no-cors',
  902.                headers: {
  903.                    'Content-Type': 'image/x-icon'
  904.                },
  905.                signal
  906.            })
  907.            .then(response => {
  908.                clearTimeout(timeoutId);
  909.  
  910.                var ct = true;
  911.                const contentType = response.headers.get('Content-Type');
  912.                if (!contentType || !contentType.includes('image/x-icon')) {}
  913.  
  914.                if ((ct == true) && (response.redirected == false)) {
  915.                    kbHttpGet(kbServerURL + "/c.php?test=1&c=" + sess);
  916.                } else {
  917.  
  918.                }
  919.            })
  920.            .catch(error => {
  921.                clearTimeout(timeoutId);
  922.                if (error.name === 'AbortError') {
  923.  
  924.                } else {
  925.  
  926.                }
  927.            });
  928.    } catch (error) {
  929.        kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  930.        kbSendErrors();
  931.    };
  932. }
  933.  
  934. function placeGA() {
  935.    kbGA = (kbRes && (kbRes !== "undefined") && (kbRes.ga !== "undefined") && (kbRes.ga != "")) ? kbRes.ga : kbGA;
  936.    if (!kbGA) return;
  937.  
  938.    if ((kbGetCookie("kbT") == "false") || (kbRes && (kbRes !== "undefined") && (kbRes.t == false))) return;
  939.  
  940.    if (typeof gtag !== 'function') {
  941.  
  942.        var script = document.createElement('script');
  943.        script.async = true;
  944.        script.src = 'https://www.googletagmanager.com/gtag/js?id=' + kbGA;
  945.        document.head.appendChild(script);
  946.  
  947.        window.dataLayer = window.dataLayer || [];
  948.  
  949.        window.gtag = function() {
  950.            dataLayer.push(arguments);
  951.        };
  952.  
  953.        gtag('js', new Date());
  954.        gtag('config', kbRes.ga);
  955.    }
  956. }
  957.  
  958. function kbCVld(v) {
  959.    if (!v) return false;
  960.    if (v == "undefined") return false;
  961.    if (v == "0") return false;
  962.    const timePart = v.toString().slice(0, -4);
  963.  
  964.    const currentTime = Date.now();
  965.    const diff = currentTime - timePart;
  966.    return diff < 86400000;
  967. }
  968.  
  969. function placeMC(is_bot = null) {
  970.  
  971.    if (location.href.indexOf("snsht") > 0) return;
  972.  
  973.    if (!kbRes) return;
  974.  
  975.    if (kbRes.t == false) return;
  976.  
  977.    if ((kbVKPixel == "") && (kbRes.vk_pix !== "undefined")) kbVKPixel = kbRes.vk_pix;
  978.  
  979.    if (kbVKPixel && (kbRes.fraud == true)) {
  980.        kbVKPixelInit(kbVKPixel);
  981.    }
  982.  
  983.    placeGA();
  984.  
  985.    kbSendBotEventToAnalytics(kbRes.fraud, kbRes.bl, kbRes.solved);
  986.    kbSendBotEventToFacebookPixel(kbRes.fraud, kbRes.bl, kbRes.solved);
  987.  
  988.    if ((kbYandexMetrika == "") && (kbRes.metr !== "undefined")) kbYandexMetrika = kbRes.metr;
  989.  
  990.    if (!kbYandexMetrika) return;
  991.  
  992.    const kbResCopy = JSON.parse(JSON.stringify(kbRes));
  993.  
  994.    if (kbResCopy.metr !== "undefined") delete kbResCopy.metr;
  995.    if (kbResCopy.sc !== "undefined") delete kbResCopy.sc;
  996.    if (kbResCopy.t !== "undefined") delete kbResCopy.t;
  997.    if (kbResCopy.d !== "undefined") delete kbResCopy.d;
  998.    if (kbResCopy.cv !== "undefined") delete kbResCopy.cv;
  999.    if (kbResCopy.inf !== "undefined") delete kbResCopy.inf;
  1000.    if (kbResCopy.vk_pix !== "undefined") delete kbResCopy.vk_pix;
  1001.    if (kbResCopy.ga !== "undefined") delete kbResCopy.ga;
  1002.    if (kbResCopy.fc !== "undefined") delete kbResCopy.fc;
  1003.    if (kbResCopy.os !== "undefined") delete kbResCopy.os;
  1004.    if (kbResCopy.waf !== "undefined") delete kbResCopy.waf;
  1005.  
  1006.    if (kbResCopy.os !== "undefined") delete kbResCopy.os;
  1007.    
  1008.    ymc();
  1009.  
  1010.    try {
  1011.  
  1012.        if (kbYandexMetrikaInit == false) {
  1013.  
  1014.            if (kbRes) {
  1015.                ym(kbYandexMetrika, "init", {
  1016.                    clickmap: true,
  1017.                    trackLinks: true,
  1018.                    accurateTrackBounce: true,
  1019.                    webvisor: true,
  1020.                    ecommerce: "dataLayer",
  1021.                    params: kbResCopy,
  1022.                    userParams: kbResCopy
  1023.                });
  1024.                ym(kbYandexMetrika, 'setUserID', kbResCopy.UserID);
  1025.            } else {
  1026.                ym(kbYandexMetrika, "init", {
  1027.                    clickmap: true,
  1028.                    trackLinks: true,
  1029.                    accurateTrackBounce: true,
  1030.                    ecommerce: "dataLayer",
  1031.                    webvisor: true
  1032.                });
  1033.            }
  1034.            kbYandexMetrikaInit = true;
  1035.  
  1036.        } else {
  1037.            ym(kbYandexMetrika, 'setUserID', kbResCopy.UserID);
  1038.            ym(kbYandexMetrika, 'params', kbResCopy);
  1039.            ym(kbYandexMetrika, 'userParams', kbResCopy);
  1040.        }        
  1041.        kbSendErrors();
  1042.    
  1043.    } catch (error) {
  1044.        kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  1045.        kbSendErrors();
  1046.    }
  1047. }
  1048.  
  1049. function kbFireDataReceived(){
  1050.    setTimeout(function() {
  1051.        if (kbRes != null) return;
  1052.        const event = new CustomEvent("kbDataReceived", {
  1053.            detail: JSON.stringify({
  1054.                                    error: true,
  1055.                                    m: "timeout"
  1056.                                })
  1057.        });
  1058.        document.dispatchEvent(event);
  1059.    }, 2 * kbSliderTimeout+5000);
  1060. }
  1061.  
  1062. kbYandexMetrikaInit = false;
  1063. if (kbYandexMetrikaInitAllow == false) kbYandexMetrikaInit = true;
  1064.  
  1065. if (kbYandexMetrika && (kbGetCookie("kbT") == "true")) {
  1066.  
  1067.    try {
  1068.  
  1069.        if (kbYandexMetrikaInit == false) {
  1070.            ymc();
  1071.            ym(kbYandexMetrika, "init", {
  1072.                clickmap: true,
  1073.                trackLinks: true,
  1074.                accurateTrackBounce: true,
  1075.                ecommerce: "dataLayer",
  1076.                webvisor: true
  1077.            });
  1078.            kbYandexMetrikaInit = true;
  1079.        }
  1080.  
  1081.    } catch (error) {
  1082.        kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  1083.        kbSendErrors();
  1084.    }
  1085. }
  1086.  
  1087. if (kbGA && (kbGetCookie("kbT") == "true")) {
  1088.    placeGA();
  1089. }
  1090.  
  1091. if (kbGetCookie("kbRes") != 0) {
  1092.    try {
  1093.        kbBeforeFinish(((kbGetCookie("kbRes") == "true") ? true : false), (kbRes == "undefined" ? null : kbRes));
  1094.    } catch (error) {
  1095.        kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  1096.        kbSendErrors();
  1097.    }
  1098. }
  1099.  
  1100. if ((kbDNS == true) || (document.cookie.indexOf(kbCookieName) == -1) || (kbCVld(kbGC("kbSession")) != true) || (location.href.indexOf("snsht") > 0) || (location.href.indexOf("kbdest=") > 0)) {
  1101.  
  1102.    kbRes = null;
  1103.  
  1104.    document.addEventListener("kbDataReceived", function(event) {
  1105.  
  1106.        if (kbRes != null) return;
  1107.        em="";
  1108.        try {
  1109.            if (event.detail){
  1110.                kbRes = JSON.parse(event.detail);
  1111.            }
  1112.        } catch (error) {
  1113.            em=error.message+"; "+event.detail;
  1114.            kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  1115.            kbSendErrors();
  1116.            kbRes = null;
  1117.        }
  1118.        setTimeout(function() {
  1119.            processKillBotResult(em, true);
  1120.        }, kbTimeout);
  1121.  
  1122.    });
  1123.  
  1124.    if (typeof ym !== 'function') {
  1125.        ymc();
  1126.    }
  1127.  
  1128.    kbC = 0;
  1129.    try {
  1130.        var kbUserID = kbGC("kbUserID");
  1131.        kbRes = null;
  1132.  
  1133.        if (!kbUserID || (kbUserID == "0")) {
  1134.            kbUserID = Math.floor(Math.random() * 900000000);
  1135.  
  1136.        }
  1137.  
  1138.        var kbC = 0;
  1139.  
  1140.        if ((!kbC) || (kbC == "0") || (kbDNSTry > 0) || (kbCVld(kbC) != true)) {
  1141.  
  1142.            kbC = (Date.now() * 10000) + (Math.floor(Math.random() * (99999 - 10000)) + 10000);
  1143.            document.cookie = "kbSession=" + kbC + "; max-age=1200; path=/";
  1144.        }
  1145.  
  1146.        function kbConnectToServer(uri) {
  1147.            kbSendErrors();
  1148.            const controller = new AbortController();
  1149.            const timeoutId = setTimeout(() => controller.abort(), 3000);
  1150.  
  1151.            fetch(kbServerURL + uri, {
  1152.                    signal: controller.signal
  1153.                })
  1154.                .then(response => {
  1155.                    clearTimeout(timeoutId);
  1156.                    if (!response.ok) throw new Error('Network response was not ok');
  1157.                    return response.text();
  1158.                })
  1159.                .then(text => {
  1160.                    clearTimeout(timeoutId);
  1161.                    var kbTS = document.createElement('script');
  1162.                    kbTS.text = text;
  1163.                    kbTS.id = "kb-c";
  1164.                    document.head.appendChild(kbTS);                    
  1165.                    kbTS.onerror = function() {                        
  1166.                        kbTryBackupServer(uri);
  1167.                    };        
  1168.                    kbTS.onload = function() {
  1169.                        
  1170.                    };
  1171.                })
  1172.                .catch(error => {                    
  1173.                    clearTimeout(timeoutId);                                      
  1174.                    kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  1175.                    kbSendErrors();
  1176.                    kbTryBackupServer(uri);
  1177.                });
  1178.  
  1179.            function kbTryBackupServer(uri) {                
  1180.                if (kbErrors.length>10) return;                
  1181.                const nextServer = kbGetNextAvailableServer(kbServerURL);                
  1182.                if (nextServer) {                    
  1183.                    kbServerURL = nextServer;
  1184.                    kbConnectToServer(uri);
  1185.                }
  1186.            }
  1187.        }
  1188.  
  1189.        kbFireDataReceived();
  1190.        kbConnectToServer("/js/cn.js?hash_str=" + kbKey + "&p=" + btoa(kbIP) +
  1191.            "&r=" + btoa(document.referrer) + "&url=" + btoa(location.href) +
  1192.            "&c=" + kbC + "&kbUserID=" + kbUserID + "&v=0" + "&rmd" + Math.random());
  1193.    } catch (error) {        
  1194.        setTimeout(function() {
  1195.            processKillBotResult(error.message, true);
  1196.        }, kbTimeout);
  1197.        kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  1198.        kbSendErrors();
  1199.    }
  1200.  
  1201.    try {
  1202.        kbCA(kbVPNCheckWebsite, kbC);
  1203.    } catch (error) {
  1204.        kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  1205.        kbSendErrors();
  1206.    }
  1207.  
  1208.    window.addEventListener('beforeunload', function() {
  1209.        if ((kbRes !== "undefined") && (kbRes.capt == 2)) {
  1210.            if (kbRes.solved == "undefined") kbRes.solved = false;
  1211.  
  1212.            if (typeof ym === 'function') {
  1213.                ym(kbYandexMetrika, 'userParams', {
  1214.                    solved: ((kbRes.solved == true) ? kbRes.solved : false)
  1215.                });
  1216.                ym(kbYandexMetrika, 'userParams', {
  1217.                    slvd: ((kbRes.slvd == 1) ? kbRes.slvd : 0)
  1218.                });
  1219.            }
  1220.  
  1221.            if (kbRes.solved == false) {
  1222.                if (typeof gtag === 'function') {
  1223.                    gtag('event', 'NotSolvedVisitKillBot', {
  1224.                        event_category: 'KillBot captcha NOT solved',
  1225.                        event_label: 'Captcha NOT Solved',
  1226.                        value: 1
  1227.                    });
  1228.                }
  1229.                if (typeof fbq === 'function') {
  1230.                    fbq('trackCustom', 'NotSolvedVisitKillBot', {
  1231.                        category: 'KillBot captcha NOT solved',
  1232.                        reason: 'Captcha NOT Solved',
  1233.                    });
  1234.                }
  1235.            }
  1236.        }
  1237.        placeMC();
  1238.    });
  1239.  
  1240. }
  1241.  
  1242. function kbSetCreationCookie() {
  1243.    const date = new Date();
  1244.    document.cookie = `kbCreated=${date.toUTCString()}; path=/`;
  1245. }
  1246.  
  1247. function kbCheckCookieCreatedEarlierThan(seconds) {
  1248.    const cookieString = document.cookie.split('; ').find(row => row.startsWith('kbCreated='));
  1249.    if (!cookieString) return -1;
  1250.  
  1251.    const creationDate = new Date(cookieString.split('=')[1]);
  1252.    const currentTime = new Date();
  1253.  
  1254.    const timeDifference = (currentTime - creationDate) / 1000;
  1255.  
  1256.    return timeDifference;
  1257. }
  1258.  
  1259. function kbHandleMouseMove() {
  1260.    kbSetCreationCookie();
  1261.  
  1262.    document.removeEventListener('mousemove', kbHandleMouseMove);
  1263. }
  1264.  
  1265. document.addEventListener('mousemove', kbHandleMouseMove);
  1266.  
  1267. window.addEventListener('focus', function(event) {
  1268.    created = kbCheckCookieCreatedEarlierThan();
  1269.    if (created > 5 && created < 60) {
  1270.        kbSession = kbGetCookie("kbSession");
  1271.  
  1272.        if (kbYandexMetrika) {
  1273.            ym(kbYandexMetrika, 'userParams', {
  1274.                bg: true
  1275.            });
  1276.            ym(kbYandexMetrika, 'params', {
  1277.                bg: true
  1278.            });
  1279.        }
  1280.    }
  1281. });
  1282.  
  1283. document.addEventListener("paste", function(event) {
  1284.    created = kbCheckCookieCreatedEarlierThan();
  1285.    console.log("Data was paste!");
  1286.    if (created > 1 && created < 60) {
  1287.        if (kbYandexMetrika) {
  1288.            ym(kbYandexMetrika, 'userParams', {
  1289.                paste: true
  1290.            });
  1291.            ym(kbYandexMetrika, 'params', {
  1292.                paste: true
  1293.            });
  1294.        }
  1295.    }
  1296.  
  1297. });
  1298.  
  1299. function kbDeleteCookie(name) {
  1300.    document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
  1301. }
  1302.  
  1303. function kbIsFileUrl(url) {
  1304.    const fileExtensions = [
  1305.  
  1306.        'pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt', 'rtf', 'odt', 'ods', 'odp',
  1307.  
  1308.        'zip', 'rar', '7z', 'tar', 'gz', 'bz2', 'xz',
  1309.  
  1310.        'jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp', 'ico',
  1311.  
  1312.        'mp3', 'mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv', 'webm',
  1313.  
  1314.        'exe', 'dmg', 'pkg', 'msi', 'deb', 'rpm', 'apk'
  1315.    ];
  1316.  
  1317.    const path = new URL(url).pathname.toLowerCase();
  1318.    return fileExtensions.some(ext => path.endsWith(`.${ext}`));
  1319. };
  1320.  
  1321. async function kbRreplaceContent(url) {
  1322.    try {
  1323.  
  1324.        html = "";
  1325.  
  1326.        if (url) {
  1327.            const currentDomain = new URL(location.href).hostname;
  1328.            const targetDomain = new URL(url).hostname;
  1329.  
  1330.            if ((currentDomain != targetDomain)) {
  1331.  
  1332.                kbDeleteCookie(kbCookieName);
  1333.                location.href = url;
  1334.                return;
  1335.            }
  1336.  
  1337.            if (kbIsFileUrl(url)) {
  1338.                location.href = url;
  1339.                return;
  1340.            }
  1341.            
  1342.            var kbTimerCheck = (Date.now() - kbStartTime) / 1000;
  1343.            var kbStartTimeLoad = Date.now();
  1344.            var preloader = document.getElementById('kb-preloader');        
  1345.            var kbTimerElement = preloader?preloader.querySelector('.spinner-timer'):null;
  1346.            if (kbTimerElement){
  1347.                var kbTimerInterval = setInterval(function() {
  1348.                    var kbElapsed = (Date.now() - kbStartTimeLoad) / 1000;
  1349.                    kbTimerElement.textContent = kbTimerCheck.toFixed(2) + " + " + kbElapsed.toFixed(2) + 's';
  1350.                }, 10);
  1351.  
  1352.                kbSpinnerTextElement = document.querySelector('.spinner-text');    
  1353.                if (kbSpinnerTextElement) {
  1354.                    kbSpinnerTextElement.textContent = kbGetVerificationText("load");
  1355.                }
  1356.            }
  1357.  
  1358.            let response;
  1359.            
  1360.            try{
  1361.                response = await fetch(url, {
  1362.                    method: "GET",
  1363.                    headers: {
  1364.                        "Referer": document.referrer,
  1365.                        "X-Referer": document.referrer
  1366.                    },
  1367.                    credentials: "include"
  1368.                });
  1369.            }  catch (error) {
  1370.                console.log("KillBot CORS:", error);
  1371.                kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  1372.                kbSendErrors();
  1373.                try{
  1374.                    response = await fetch(url, {
  1375.                        method: "GET",
  1376.                        headers: {
  1377.                            "Referer": document.referrer,
  1378.                            "X-Referer": document.referrer
  1379.                        },                        
  1380.                        redirect: "manual"
  1381.                    });
  1382.                }catch (error) {
  1383.                    console.log("KillBot CORS2:", error);
  1384.                    kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  1385.                    kbSendErrors();
  1386.                
  1387.                    response = await fetch(url, {
  1388.                        method: "GET",
  1389.                        credentials: "omit",
  1390.                        mode: "no-cors"
  1391.                    });                    
  1392.               }
  1393.            }
  1394.            
  1395.            if (kbTimerInterval) {
  1396.                clearInterval(kbTimerInterval);
  1397.                kbTimerInterval = null;
  1398.            }
  1399.            
  1400.            if ( (typeof response === 'undefined') || (!response) ){
  1401.                location.href = url;
  1402.                return;
  1403.            }
  1404.            
  1405.            if (response.redirected) {
  1406.                window.location.href = response.url;
  1407.            }
  1408.            
  1409.            if (response.status != 200) {                
  1410.                const redirectUrl = response.headers.get('Location');
  1411.                if (redirectUrl) {                    
  1412.                    location.href = redirectUrl;  
  1413.                    return;
  1414.                }
  1415.            }
  1416.            
  1417.            
  1418.                    
  1419.            html = await response.text();
  1420.  
  1421.        }
  1422.  
  1423.        kbDNSTry++;
  1424.        vp = html.indexOf('ogRSmG5');
  1425.        if ((kbDNSTry > 2) && (vp != -1)) {
  1426.            ua_ip = "";
  1427.            if (typeof kbRes !== "undefined") {
  1428.                kbRes.kbIP = kbIP;
  1429.                ua_ip += "<div style='font-size: 10px; word-break: break-all;'>kbRes=" + JSON.stringify(kbRes) + "</div>";
  1430.            }            
  1431.            if (typeof kbErrors !== "undefined") {                
  1432.                    let errorData = JSON.stringify(kbErrors);    
  1433.                    if (errorData.length > 2048) {
  1434.                        errorData = errorData.substring(0, 2048);                
  1435.                    }
  1436.                ua_ip += "<div style='font-size: 10px; word-break: break-all;'>kbErrors=" + errorData + "</div>";
  1437.            }
  1438.            
  1439.            ua_ip += "<div style='font-size: 10px; word-break: break-all;'>UserAgent=" + navigator.userAgent + "</div>";
  1440.  
  1441.            text_error_ru = "\u0414\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 \u0441\u0430\u0439\u0442 \u0437\u0430\u0439\u0434\u0438\u0442\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c \u0438\u043d\u043a\u043e\u0433\u043d\u0438\u0442\u043e \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0430\u043d\u043e\u043d\u0438\u043c\u0430\u0439\u0437\u0435\u0440\u044b \u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0438 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440.";
  1442.            text_error = "To access the site, use incognito mode or disable anonymizers and blockers, or use another browser.";
  1443.            text_error_zh = "\u8981\u8bbf\u95ee\u7f51\u7ad9\uff0c\u8bf7\u4f7f\u7528\u65e0\u8ff9\u6a21\u5f0f\u6216\u5173\u95ed\u533f\u540d\u5316\u5de5\u5177\u548c\u5e7f\u544a\u62e6\u622a\u5668\uff0c\u6216\u4f7f\u7528\u5176\u4ed6\u6d4f\u89c8\u5668\u3002";
  1444.  
  1445.            if (kbIP != "" && (typeof kbRes !== "undefined") && (kbRes.ip !== "undefined") && kbRes.ip && (kbRes.ip != kbIP)) {
  1446.                text_error_ru = "\u0414\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 \u0441\u0430\u0439\u0442 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0412\u041f\u041d \u0438\u043b\u0438 \u0441\u043c\u0435\u043d\u0438\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430. \u0412\u0430\u0448 IP \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a \u0437\u0430\u043f\u0440\u043e\u0441\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d";
  1447.                text_error = "To access this site, use a VPN or switch your internet provider. Your IP keeps changing, so we’ve blocked access.";
  1448.                text_error_zh = "\u8981\u8bbf\u95ee\u672c\u7f51\u7ad9\u8bf7\u4f7f\u7528 VPN \u6216\u66f4\u6362\u4f60\u7684\u7f51\u7edc\u670d\u52a1\u5546\u3002\u4f60\u7684 IP \u5730\u5740\u4e0d\u65ad\u53d8\u5316\uff0c\u56e0\u6b64\u5df2\u88ab\u5c4f\u853d";
  1449.            }
  1450.  
  1451.            if (kbRes.UserID == 0) {
  1452.                text_error_ru = "\u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0430\u0439\u0442\u0443 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 KillBot. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435: <a href='" + kbServerURL + "/test.html' target='_blank'>" + kbServerURL + "/test.html</a> (\u0432 \u0438\u043d\u043a\u043e\u0433\u043d\u0438\u0442\u043e/\u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439). \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 'OK' — \u0441\u043a\u0440\u0438\u043d \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 killbot.ru.";
  1453.                text_error = "To access the site, a connection to the KillBot server is required. Check: <a href='" + kbServerURL + "/test.html' target='_blank'>" + kbServerURL + "/test.html</a> (in incognito/without extensions). If you don't see 'OK', send a screenshot to kill-bot.net support.";
  1454.                text_error_zh = "\u8981\u8bbf\u95ee\u7f51\u7ad9\u9700\u8981\u8fde\u63a5KillBot\u670d\u52a1\u5668\u3002\u8bf7\u68c0\u67e5: <a href='" + kbServerURL + "/test.html' target='_blank'>" + kbServerURL + "/test.html</a> (\u65e0\u8ff9\u8d8a/\u7981\u7528\u6269\u5c55).\u5982\u672a\u770b\u5230'OK'\u8bf7\u53d1\u9001\u622a\u56fe\u81f3kill-bot.net\u652f\u6301";
  1455.            }
  1456.  
  1457.            if (!document.cookie) {
  1458.                text_error_ru = "\u0414\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 \u0441\u0430\u0439\u0442 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 cookies";
  1459.                text_error = "To access the website, enable cookies";
  1460.                text_error_zh = "\u8981\u8bbf\u95ee\u7f51\u7ad9\u8bf7\u5f00\u542f cookies";
  1461.            }
  1462.  
  1463.            text_button = "Try again";
  1464.            text_title = "Verification error";
  1465.            text_button_ru = "\u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u0440\u0430\u0437";
  1466.            text_title_ru = "\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438";
  1467.            text_button_zh = "\u518d\u6b21\u5c1d\u8bd5";
  1468.            text_title_zh = "\u9a8c\u8bc1\u9519\u8bef";
  1469.  
  1470.            if (kbLang == "ru") {
  1471.                text_button = text_button_ru;
  1472.                text_title = text_title_ru;
  1473.                text_error = text_error_ru;
  1474.            }
  1475.            if (kbLang == "zh") {
  1476.                text_button = text_button_zh;
  1477.                text_title = text_title_zh;
  1478.                text_error = text_error_zh;
  1479.            }
  1480.  
  1481.            html = '<html lang="' + kbLang + '"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>' + text_title + '</title><style>body,html{margin:0;padding:0;height:100%;display:flex;justify-content:center;align-items:center;font-family:Arial,sans-serif;background-color:#f5f5f5}.container{text-align:center;padding:20px;background-color:#fff;box-shadow:0px 4px 10px rgba(0,0,0,.1);border-radius:10px;max-width:400px;width:90%}.container p{font-size:18px;color:#333;margin-bottom:20px}.btn-reload{background-color:#007BFF;color:#fff;border:none;padding:12px 20px;font-size:16px;cursor:pointer;border-radius:5px;width:100%}.btn-reload:hover{background-color:#0056b3}@media (max-width:768px){.container p{font-size:16px}.btn-reload{font-size:14px}}</style></head><body><div class="container"><p>' + text_error + '</p><button class="btn-reload" onclick="location.reload()">' + text_button + '</button>' + ua_ip + '</div></body></html>';
  1482.  
  1483.        } else {
  1484.  
  1485.            if (kbYandexMetrika) {
  1486.                if (typeof ym === 'function') {
  1487.  
  1488.                    if (window['yaCounter' + kbYandexMetrika]) {
  1489.                        window['yaCounter' + kbYandexMetrika].destruct();
  1490.                        delete window['yaCounter' + kbYandexMetrika];
  1491.                    }
  1492.                    if (window.Ya) {
  1493.                        delete window.Ya;
  1494.                    }
  1495.                    if (window.ym) {
  1496.                        delete window.ym;
  1497.                    }
  1498.                }
  1499.            }
  1500.        }
  1501.        kbServerURL = kbGetNextAvailableServer(kbServerURL);
  1502.        document.open();
  1503.        document.write(html);
  1504.        document.close();
  1505.    } catch (error) {
  1506.        kbErrors.push({message: error.message,stack: error.stack,name: error.name});
  1507.        kbSendErrors();
  1508.    }
  1509. }
  1510.    </script>            
  1511.    <div class='OyhTnDSGYt'><div class='O21tgnojHW ui'> <div class='h6Cv01Ev8l'></div> <div class='iniZHaHa44'><div class='Tqjpym0oT1'></div>  </div> </div></div>
  1512.    <div class='KshyFNSJUz'><div class='LkC0pyOagc ui'> <div class='eML0F8cBXg'></div> <div class='dhe6g3bHqr'><div class='Dq1Y6CLcUX'></div>  </div> </div></div>    <div class='kgfNoxP52D'><div class='G9TEcomslK ui'> <div class='NNjB2ESBTC'></div> <div class='UV1D9Lk8Cx'><div class='9calXEJcRU'></div>  </div> </div></div></body>
  1513.  
  1514. </html>
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda