您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Skibidi's Auto Luarmor Remake
// ==UserScript== // @name Auto Luarmor Remake :D // @namespace http://tampermonkey.net/ // @version 1.7.7 // @author Skibidi // @match https://ads.luarmor.net/get_key* // @icon https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcT-qTrpdUUXTcHpoQo-K_ExyrBuSLSdh5M1rQ&s // @grant none // @description Skibidi's Auto Luarmor Remake // ==/UserScript== (function() { 'use strict'; const SCRIPT_VERSION = "1.7.7"; const UPDATE_URL = "https://greasyfork.org/en/scripts/544191-auto-luarmor-remake-d"; const RAW_URL = "https://greasyfork.org/scripts/544191-auto-luarmor-remake-d/code/Auto%20Luarmor%20Remake%20D.user.js"; function fetchLatestVersion(cb) { fetch(RAW_URL + "?t=" + Date.now()) .then(r => r.text()) .then(txt => { const m = txt.match(/@version\s+([^\s]+)/); cb(m ? m[1] : null); }) .catch(() => cb(null)); } function forceUpdate() { window.location.href = UPDATE_URL; } function checkVersionAndUpdate(force) { fetchLatestVersion(function(latest) { if (!latest) { if (force) alert("Check update failed"); return; } if (latest !== SCRIPT_VERSION) { if (force) { if (confirm("A new version ("+latest+") is available. Do you want to update?")) forceUpdate(); } else forceUpdate(); } else if (force) alert("You are using the latest version ("+SCRIPT_VERSION+")"); }); } checkVersionAndUpdate(false); (function checkTabs() { if (!window || !window.localStorage) return; const KEY = "__luarmor_tabs__", CLOSE_KEY = "__luarmor_close__"; let tabs = []; try { tabs = JSON.parse(localStorage.getItem(KEY) || "[]"); } catch(e) {} const now = Date.now(); tabs = tabs.filter(t => now - t.time < 15000); const myId = Math.random().toString(36).substr(2, 9) + now; tabs.push({id: myId, time: now}); tabs.sort((a, b) => a.time - b.time); localStorage.setItem(KEY, JSON.stringify(tabs)); if (tabs.length > 1) { const oldest = tabs.find(t => t.id !== myId); if (oldest) localStorage.setItem(CLOSE_KEY, oldest.id); } window.addEventListener("storage", function(e) { if (e.key === CLOSE_KEY) { try { const closeId = e.newValue; if (!closeId) return; if (myId === closeId) { setTimeout(function() { try { if (typeof window.close === "function") window.close(); } catch(e) { window.location.href = 'about:blank'; } }, 200); } } catch(e){} } }); setInterval(function() { let tabs = []; try { tabs = JSON.parse(localStorage.getItem(KEY) || "[]"); } catch(e) {} const now = Date.now(); tabs = tabs.filter(t => now - t.time < 15000 && t.id !== myId); tabs.push({id: myId, time: now}); tabs.sort((a, b) => a.time - b.time); localStorage.setItem(KEY, JSON.stringify(tabs)); }, 2000); window.addEventListener("beforeunload", function() { let tabs = []; try { tabs = JSON.parse(localStorage.getItem(KEY) || "[]"); } catch(e) {} tabs = tabs.filter(t => t.id !== myId); localStorage.setItem(KEY, JSON.stringify(tabs)); }); })(); const configKeys = { enableNewKey: "__luarmor_enable_newkey__", enableAuto24H: "__luarmor_enable_auto24h__", selectedAdd24HSlotIdx: "__luarmor_add24h_slot_idx__", selectedAdd24HSlotRenewKey: "__luarmor_add24h_slot_renewkey__", enableAll: "__luarmor_enable_all__" }; function getConfigBool(key, def) { try { const v = localStorage.getItem(key); return v === null ? def : v === "true"; } catch(e) { return def; } } function setConfigBool(key, val) { try { localStorage.setItem(key, val ? "true" : "false"); } catch(e){} } function getConfigInt(key, def) { try { const v = localStorage.getItem(key); if (v === null) return def; const n = parseInt(v, 10); return isNaN(n) ? def : n; } catch(e) { return def; } } function setConfigInt(key, val) { try { localStorage.setItem(key, String(val)); } catch(e){} } function getConfigStr(key, def) { try { const v = localStorage.getItem(key); return v === null ? def : v; } catch(e) { return def; } } function setConfigStr(key, val) { try { localStorage.setItem(key, String(val)); } catch(e){} } const config = { initialDelay: 250, checkInterval: 350, cooldownCheck: 600, maxCooldown: 20000, retryLimit: 5, enableNewKey: getConfigBool(configKeys.enableNewKey, false), enableAuto24H: getConfigBool(configKeys.enableAuto24H, true), enableAll: getConfigBool(configKeys.enableAll, true) }; function getAllAdd24HButtons() { try { return Array.from(document.querySelectorAll('button[id^="addtimebtn_"]')); } catch(e) { return []; } } function getAdd24HSlotList() { const btns = getAllAdd24HButtons(); return btns.map((btn, idx) => { let renewKey = null, id = btn.id, m = null; try { m = (btn.getAttribute('onclick')||'').match(/renewKey\(['"]([^'"]+)['"]\)/); } catch(e){} if (m) renewKey = m[1]; return { slot: idx+1, id, renewKey, btn }; }).filter(x => x.renewKey); } let add24HSlotList = []; let selectedAdd24HSlotIdx = getConfigInt(configKeys.selectedAdd24HSlotIdx, 0); let selectedAdd24HSlotRenewKey = getConfigStr(configKeys.selectedAdd24HSlotRenewKey, ""); function saveSelectedSlot() { setConfigInt(configKeys.selectedAdd24HSlotIdx, selectedAdd24HSlotIdx); setConfigStr(configKeys.selectedAdd24HSlotRenewKey, selectedAdd24HSlotRenewKey || ""); } function refreshAdd24HSlotList() { try { add24HSlotList = getAdd24HSlotList(); if (selectedAdd24HSlotRenewKey && selectedAdd24HSlotRenewKey !== "null") { const foundIdx = add24HSlotList.findIndex(slot => slot.renewKey === selectedAdd24HSlotRenewKey); if (foundIdx !== -1) selectedAdd24HSlotIdx = foundIdx; else if (add24HSlotList.length > 0) { selectedAdd24HSlotIdx = 0; selectedAdd24HSlotRenewKey = add24HSlotList[0].renewKey; } } else if (add24HSlotList.length > 0) { selectedAdd24HSlotIdx = 0; selectedAdd24HSlotRenewKey = add24HSlotList[0].renewKey; } saveSelectedSlot(); } catch(e){} } refreshAdd24HSlotList(); function createLuarmorUIContainer() { let container = document.getElementById('luarmor-ui-container'); if (container) return container; container = document.createElement('div'); container.id = 'luarmor-ui-container'; container.style.cssText = ` position:fixed; bottom:32px; right:32px; z-index:10001; font-family:'Sora', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; max-width:400px; max-height:90vh; display:flex; flex-direction:column; align-items:flex-end; gap:18px; box-sizing:border-box; pointer-events:none; `; document.body.appendChild(container); return container; } function createLuarmorControlPanel() { let oldPanel = document.getElementById('luarmor-control-panel'); if (oldPanel) oldPanel.remove(); const panelDiv = document.createElement('div'); panelDiv.id = 'luarmor-control-panel'; panelDiv.style.cssText = ` background:rgba(20,24,40,0.98); border-radius:22px; border:2.5px solid #00fff7; box-shadow:0 8px 32px 0 rgba(0,0,0,0.25),0 1.5px 0 #00fff7; padding:22px 28px 18px 28px; display:flex; flex-direction:column; align-items:center; gap:18px; min-width:320px; max-width:370px; pointer-events:auto; backdrop-filter:blur(10px); transition:all .2s; overflow:hidden; `; refreshAdd24HSlotList(); let html = ` <div style="font-weight:800;font-size:22px;letter-spacing:1.5px;margin-bottom:0px;line-height:1.1; background:linear-gradient(90deg,#00fff7 0%,#00bfff 100%); -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text; text-shadow:0 0 18px #00fff7a0,0 2px 8px #000a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;"> <span style="font-size:1.2em;vertical-align:middle;">🛡️</span> LUARMOR </div> <div style="display:flex;gap:14px;align-items:center;width:100%;justify-content:center;"> <label style="display:flex;align-items:center;gap:7px;cursor:pointer;"> <input type="checkbox" id="luarmor-enableall-toggle" ${config.enableAll ? 'checked' : ''} style="accent-color:#00fff7;transform:scale(1.25);cursor:pointer;"> <span style="font-weight:700;color:#00fff7;font-size:15px;letter-spacing:0.5px;">ON</span> </label> <button id="luarmor-checkupdate-btn" style="background:linear-gradient(90deg,#00fff7,#00bfff);color:#222;border:none;padding:7px 18px;border-radius:10px;cursor:pointer;font-size:13px;font-weight:700;transition:all .2s;box-shadow:0 2px 12px #00fff733;outline:none;">⟳</button> </div> <div style="display:flex;gap:14px;align-items:center;width:100%;justify-content:center;"> <label style="display:flex;align-items:center;gap:7px;cursor:pointer;"> <input type="checkbox" id="luarmor-auto24h-toggle" ${config.enableAuto24H ? 'checked' : ''} style="accent-color:#00fff7;transform:scale(1.15);cursor:pointer;" ${!config.enableAll ? 'disabled' : ''}> <span style="color:#fff;font-weight:600;font-size:14px;">+24H</span> </label> <label style="display:flex;align-items:center;gap:7px;cursor:pointer;"> <input type="checkbox" id="luarmor-newkey-toggle" ${config.enableNewKey ? 'checked' : ''} style="accent-color:#00fff7;transform:scale(1.15);cursor:pointer;" ${!config.enableAll ? 'disabled' : ''}> <span style="color:#fff;font-weight:600;font-size:14px;">NEW KEY</span> </label> </div> <div style="display:flex;align-items:center;gap:10px;width:100%;justify-content:center;"> <span style="font-weight:700;color:#00fff7;font-size:14px;">SLOT</span> <select id="luarmor-add24h-slot" style="background:rgba(0,0,0,0.25);color:#fff;border:1.5px solid #00fff7;padding:5px 12px;border-radius:7px;font-size:13px;cursor:pointer;max-width:140px;outline:none;" ${!config.enableAll ? 'disabled' : ''}>`; add24HSlotList.forEach((slot, i) => { html += `<option value="${i}"${i === selectedAdd24HSlotIdx ? ' selected' : ''} style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">${i+1} (${slot.renewKey})</option>`; }); html += `</select> <button id="luarmor-save-slot-btn" style="background:linear-gradient(90deg,#00fff7,#00bfff);color:#222;border:none;padding:5px 14px;border-radius:7px;cursor:pointer;font-size:12px;font-weight:700;transition:all .2s;box-shadow:0 1px 5px #00fff733;outline:none;${!config.enableAll ? 'opacity:0.5;pointer-events:none;' : ''}">💾</button> </div>`; panelDiv.innerHTML = html; createLuarmorUIContainer().appendChild(panelDiv); document.getElementById('luarmor-enableall-toggle').addEventListener('change', function(e) { config.enableAll = e.target.checked; setConfigBool(configKeys.enableAll, config.enableAll); document.getElementById('luarmor-auto24h-toggle').disabled = !config.enableAll; document.getElementById('luarmor-newkey-toggle').disabled = !config.enableAll; document.getElementById('luarmor-add24h-slot').disabled = !config.enableAll; document.getElementById('luarmor-save-slot-btn').disabled = !config.enableAll; if (!config.enableAll) { document.getElementById('luarmor-save-slot-btn').style.opacity = "0.5"; document.getElementById('luarmor-save-slot-btn').style.pointerEvents = "none"; } else { document.getElementById('luarmor-save-slot-btn').style.opacity = ""; document.getElementById('luarmor-save-slot-btn').style.pointerEvents = ""; } automationPaused = !config.enableAll; if (!automationPaused) { for (let k in buttonStates) buttonStates[k].clicked = false; for (let k in buttonStates) buttonStates[k].retry = 0; for (let k in buttonStates) buttonStates[k].cooldown = false; updateStatus('add24H', 'pending'); updateStatus('newKey', 'pending'); updateStatus('start', 'pending'); updateStatus('next', 'pending'); setTimeout(tryClickButtons, 200); } }); document.getElementById('luarmor-auto24h-toggle').addEventListener('change', function(e) { config.enableAuto24H = e.target.checked; setConfigBool(configKeys.enableAuto24H, config.enableAuto24H); buttonStates.add24H.clicked = false; updateStatus('add24H', 'pending'); }); document.getElementById('luarmor-newkey-toggle').addEventListener('change', function(e) { config.enableNewKey = e.target.checked; setConfigBool(configKeys.enableNewKey, config.enableNewKey); buttonStates.newKey.clicked = false; updateStatus('newKey', 'pending'); }); document.getElementById('luarmor-add24h-slot').addEventListener('change', function(e) { selectedAdd24HSlotIdx = parseInt(e.target.value, 10); if (add24HSlotList[selectedAdd24HSlotIdx]) { selectedAdd24HSlotRenewKey = add24HSlotList[selectedAdd24HSlotIdx].renewKey; } buttonStates.add24H.clicked = false; updateStatus('add24H', 'pending'); }); document.getElementById('luarmor-save-slot-btn').addEventListener('click', function() { const select = document.getElementById('luarmor-add24h-slot'); selectedAdd24HSlotIdx = parseInt(select.value, 10); if (add24HSlotList[selectedAdd24HSlotIdx]) { selectedAdd24HSlotRenewKey = add24HSlotList[selectedAdd24HSlotIdx].renewKey; saveSelectedSlot(); buttonStates.add24H.clicked = false; updateStatus('add24H', 'pending'); } }); document.getElementById('luarmor-checkupdate-btn').addEventListener('click', function() { checkVersionAndUpdate(true); }); } function createStatusIndicator() { if (document.getElementById('luarmor-status')) return; const style = document.createElement('style'); style.textContent = ` #luarmor-status { background:rgba(20,24,40,0.98); color:#fff; padding:18px 24px 12px 24px; border-radius:18px; font-family:'Sora','Segoe UI',Tahoma,Geneva,Verdana,sans-serif; font-size:15px; z-index:10000; border:2px solid #00fff7; max-width:220px; box-shadow:0 4px 24px #00fff733,0 1.5px 0 #00fff7; backdrop-filter:blur(10px); transition:all .2s; box-sizing:border-box; overflow:hidden; pointer-events:auto; } #luarmor-status-title { font-weight:800; margin-bottom:10px; font-size:16px; background:linear-gradient(90deg,#00fff7,#00bfff); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; text-shadow:0 0 12px #00fff7a0; white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%; letter-spacing:1px; } #luarmor-status-content { font-size:14px; line-height:1.7; width:100%; box-sizing:border-box; } .cooldown { color: #ffaa00; text-shadow: 0 0 6px #ffaa00a0; font-weight: 700; } .completed { color: #00ff88; text-shadow: 0 0 6px #00ff88a0; font-weight: 700; } .pending { color: #ccc; font-weight: 600; } .retry { color: #00bfff; text-shadow: 0 0 6px #00bfffa0; font-weight: 700; } .failed { color: #ff4444; text-shadow: 0 0 6px #ff4444a0; font-weight: 700; } .timeout { color: #ff8800; text-shadow: 0 0 6px #ff8800a0; font-weight: 700; } .notfound { color: #ff4444; text-shadow: 0 0 6px #ff4444a0; font-weight: 700; } #luarmor-status-controls { margin-top: 8px; padding-top: 6px; border-top: 1px dashed #00fff733; display: flex; gap: 6px; } .status-btn { background: linear-gradient(90deg,#00fff7,#00bfff); color:#222; border:none; padding:4px 10px; border-radius:6px; cursor:pointer; font-size:12px; font-weight:700; transition:all .2s; box-shadow:0 1px 5px #00fff733;} .status-btn:hover { transform: translateY(-1px); box-shadow:0 2px 8px #00fff7a0;} .status-item { display:flex;align-items:center;gap:7px;margin-bottom:4px;padding:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;} .status-icon { font-size:15px;width:18px;text-align:center;} `; document.head.appendChild(style); const statusDiv = document.createElement('div'); statusDiv.id = 'luarmor-status'; statusDiv.innerHTML = ` <div id="luarmor-status-title">STATUS</div> <div id="luarmor-status-content"> <div class="status-item"> <span class="status-icon">⏰</span> <span><span id="status-add24H" class="pending">-</span></span> </div> <div class="status-item"> <span class="status-icon">🔑</span> <span><span id="status-newKey" class="pending">-</span></span> </div> <div class="status-item"> <span class="status-icon">▶️</span> <span><span id="status-next" class="pending">-</span></span> </div> <div id="status-all"></div> </div> <div id="luarmor-status-controls"></div> `; createLuarmorUIContainer().appendChild(statusDiv); } const selectors = { nextButton: '#nextbtn', add24HButton: () => { try { refreshAdd24HSlotList(); if (add24HSlotList.length === 0) return null; if (selectedAdd24HSlotIdx < 0 || selectedAdd24HSlotIdx >= add24HSlotList.length) return null; return `#${add24HSlotList[selectedAdd24HSlotIdx].id}`; } catch(e) { return null; } }, startButton: '#startbtn', newKeyButton: '#newkeybtn' }; const buttonStates = { next: { clicked: false, cooldown: false, retry: 0 }, start: { clicked: false, cooldown: false, retry: 0 }, add24H: { clicked: false, cooldown: false, retry: 0 }, newKey: { clicked: false, cooldown: false, retry: 0 } }; function isClickable(button) { if (!button) return false; try { if (button.disabled) return false; if (button.classList && button.classList.contains('disabled')) return false; if (button.style && (button.style.display === 'none' || button.style.visibility === 'hidden' || button.style.opacity === '0')) return false; if (button.style && button.style.cursor === 'not-allowed') return false; } catch(e) { return false; } return true; } function isOnCooldown(button) { if (!button) return false; try { let text = (button.textContent || '').toLowerCase(); if (button.style && button.style.cursor === 'not-allowed') return true; if (text.includes('wait') || text.includes('cooldown')) return true; if (button.disabled) return true; } catch(e) { return false; } return false; } let automationPaused = !config.enableAll; function handleButtonClick(buttonType) { if (automationPaused) return false; let selector; try { if (typeof selectors[buttonType + 'Button'] === 'function') { selector = selectors[buttonType + 'Button'](); } else { selector = selectors[buttonType + 'Button']; } } catch(e) { selector = null; } if (!selector) { if (buttonType !== 'start') updateStatus(buttonType, 'notfound'); return false; } let button = null; try { button = document.querySelector(selector); } catch(e) { button = null; } if (!button) { if (buttonType !== 'start') updateStatus(buttonType, 'notfound'); return false; } if (isOnCooldown(button)) { if (!buttonStates[buttonType].cooldown) { buttonStates[buttonType].cooldown = true; updateStatus(buttonType, 'cooldown'); let waited = 0; const cooldownCheck = setInterval(() => { if (automationPaused) { clearInterval(cooldownCheck); return; } waited += config.cooldownCheck; if (!isOnCooldown(button)) { clearInterval(cooldownCheck); buttonStates[buttonType].cooldown = false; updateStatus(buttonType, 'pending'); setTimeout(tryClickButtons, 200); } else if (waited >= config.maxCooldown) { clearInterval(cooldownCheck); updateStatus(buttonType, 'timeout'); } }, config.cooldownCheck); } return false; } if (isClickable(button)) { try { if (buttonType === 'add24H') { refreshAdd24HSlotList(); if (add24HSlotList[selectedAdd24HSlotIdx]) { let renewKeyParam = add24HSlotList[selectedAdd24HSlotIdx].renewKey; try { if (typeof unsafeWindow !== "undefined" && typeof unsafeWindow.renewKey === "function") { unsafeWindow.renewKey(renewKeyParam); } else if (typeof window.renewKey === "function") { window.renewKey(renewKeyParam); } else { if (typeof button.click === "function") button.click(); else { let evt = document.createEvent("MouseEvents"); evt.initEvent("click", true, true); button.dispatchEvent(evt); } } } catch(e) { if (typeof button.click === "function") button.click(); else { let evt = document.createEvent("MouseEvents"); evt.initEvent("click", true, true); button.dispatchEvent(evt); } } } } else { if (typeof button.click === "function") button.click(); else { let evt = document.createEvent("MouseEvents"); evt.initEvent("click", true, true); button.dispatchEvent(evt); } } buttonStates[buttonType].clicked = true; updateStatus(buttonType, 'completed'); return true; } catch (e) { updateStatus(buttonType, 'failed'); return false; } } else { if (buttonStates[buttonType].retry < config.retryLimit) { buttonStates[buttonType].retry++; setTimeout(() => handleButtonClick(buttonType), config.checkInterval); updateStatus(buttonType, 'retry'); } else updateStatus(buttonType, 'failed'); } return false; } function tryClickButtons() { if (automationPaused) return; try { if (config.enableAuto24H && !buttonStates.add24H.clicked) { if (handleButtonClick('add24H')) return; } if (config.enableNewKey && !buttonStates.newKey.clicked) { if (handleButtonClick('newKey')) return; } if (!buttonStates.start.clicked) { if (handleButtonClick('start')) return; } if (!buttonStates.next.clicked) { if (handleButtonClick('next')) return; } } catch(e){} } function updateStatus(action, state) { let statusElement; if (action === 'all') { ['add24H', 'newKey', 'start', 'next'].forEach(btn => { const element = document.getElementById(`status-${btn}`); if (element) { element.textContent = '✔'; element.className = 'completed'; } }); const allDiv = document.getElementById('status-all'); if (allDiv) { allDiv.textContent = '✅'; allDiv.className = 'completed'; } return; } else statusElement = document.getElementById(`status-${action}`); if (!statusElement) return; switch (state) { case 'completed': statusElement.textContent = '✔'; statusElement.className = 'completed'; break; case 'cooldown': statusElement.textContent = '⏳'; statusElement.className = 'cooldown'; break; case 'pending': statusElement.textContent = '-'; statusElement.className = 'pending'; break; case 'retry': statusElement.textContent = '↻'; statusElement.className = 'retry'; break; case 'failed': statusElement.textContent = '✖'; statusElement.className = 'failed'; break; case 'timeout': statusElement.textContent = '⏰'; statusElement.className = 'timeout'; break; case 'notfound': if (action !== 'start') { statusElement.textContent = '✖'; statusElement.className = 'notfound'; } else { statusElement.textContent = ''; statusElement.className = ''; } break; default: statusElement.textContent = state; statusElement.className = ''; } } function fastStartup() { try { refreshAdd24HSlotList(); createLuarmorControlPanel(); createStatusIndicator(); updateStatus('add24H', 'pending'); updateStatus('newKey', 'pending'); updateStatus('start', 'pending'); updateStatus('next', 'pending'); setTimeout(tryClickButtons, 200); const checkInterval = setInterval(() => { if (automationPaused) return; const allClicked = Object.values(buttonStates).every(state => state.clicked); if (allClicked) { clearInterval(checkInterval); updateStatus('all', 'completed'); } else setTimeout(tryClickButtons, 200); }, config.checkInterval); } catch(e){} } function waitFor24HButtonsFast(retry = 0) { try { refreshAdd24HSlotList(); if (add24HSlotList.length >= 1 || retry > 20) fastStartup(); else setTimeout(() => waitFor24HButtonsFast(retry+1), 120); } catch(e) { setTimeout(() => waitFor24HButtonsFast(retry+1), 120); } } if (document.readyState === "complete" || document.readyState === "interactive") { setTimeout(waitFor24HButtonsFast, config.initialDelay); } else { window.addEventListener("DOMContentLoaded", function() { setTimeout(waitFor24HButtonsFast, config.initialDelay); }); } })();