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