(function(){"use strict";const s={enhancedVision:!1,showEnemyLines:!1,showFoodLines:!1,autoBoost:!1,autoRevive:!1,debugPanel:!1,pingReducer:!1,antiAfk:!1,unlimitedZoom:!1,speedMultiplier:1,lineThickness:2,dangerLineColor:"#ff0000",foodLineColor:"#00ff00",theme:"dark",safeMode:!0,debugMode:!1,devMode:!1,allowGuestMode:!0,load:function(){try{const e=localStorage.getItem("evoWorldEnhancerConfig");if(e){const t=JSON.parse(e);Object.keys(t).forEach(n=>{this.hasOwnProperty(n)&&typeof this[n]==typeof t[n]&&(this[n]=t[n])})}}catch(e){}return this},save:function(){try{const e={};Object.keys(this).forEach(t=>{typeof this[t]!="function"&&(e[t]=this[t])}),localStorage.setItem("evoWorldEnhancerConfig",JSON.stringify(e))}catch(e){}return this},reset:function(){const e={enhancedVision:!1,showEnemyLines:!0,showFoodLines:!0,autoBoost:!1,autoRevive:!1,debugPanel:!1,pingReducer:!1,antiAfk:!1,unlimitedZoom:!1,speedMultiplier:1,lineThickness:2,dangerLineColor:"#ff0000",foodLineColor:"#00ff00",safeMode:!0,debugMode:!0,devMode:!0,allowGuestMode:!0,theme:"dark"};return Object.keys(e).forEach(t=>{this[t]=e[t]}),this.save(),this}},te=new Proxy(s,{set:function(e,t,n){return e[t]=n,typeof n!="function"&&t!=="save"&&t!=="load"&&t!=="reset"&&(te._saveTimeout||(te._saveTimeout=setTimeout(()=>{e.save(),delete te._saveTimeout},500))),!0}});s.load(),window.addEventListener("beforeunload",()=>{s.save()}),typeof window!="undefined"&&(window.EVOWORLD_CONFIG=s);let ne=!0,oe=0;const Ye=5,je=6e4;let xe=0;function L(e,t,n=void 0){if(!e)return n;const o=typeof t=="string"?t.split("."):t;let a=e;for(let i=0;ije?oe=1:oe++,xe=o,(n||oe>=Ye)&&Ee()}function Ve(e){try{const t=document.createElement("div");t.style.position="fixed",t.style.bottom="10px",t.style.left="10px",t.style.background="rgba(255,0,0,0.8)",t.style.color="white",t.style.padding="10px",t.style.borderRadius="5px",t.style.maxWidth="80%",t.style.zIndex="99999",t.innerHTML=` EvoWorld Enhancer Error
${e.stack||e.message}
`,document.body.appendChild(t);const n=t.querySelectorAll("button");n[0]&&n[0].addEventListener("click",()=>t.remove()),n[1]&&n[1].addEventListener("click",()=>{window.fixEvoWorldUI&&window.fixEvoWorldUI(),t.remove()}),setTimeout(()=>{t.parentNode&&t.remove()},3e4)}catch(t){}}function Ee(){if(ne){ne=!1;try{window.EvoWorldEnhancer&&typeof window.EvoWorldEnhancer.disable=="function"&&window.EvoWorldEnhancer.disable(),document.querySelectorAll('[id^="enhancer-"]').forEach(t=>t.remove());const e=document.getElementById("evoworld-enhancer-styles");e&&e.remove()}catch(e){}}}function Ze(e){ne=!0}function He(e,t={}){const{maxAttempts:n=100,interval:o=300,gameVarName:a="game"}=t;let i=0;const r=()=>{if(i++,window[a]&&window[a].canvas){setTimeout(()=>{try{e(window[a])}catch(l){}},100);return}i>=n||setTimeout(r,o)};r(),document.readyState!=="complete"&&window.addEventListener("load",()=>{setTimeout(r,1e3)})}function Ge(e,t){if(!e)return"";let n="";for(let o=0;on&&(a.attempts=0,a.windowStart=o),a.attempts>=t?!1:(a.attempts++,!0)}function qe(e){S[e]&&(S[e].attempts=0,S[e].windowStart=Date.now())}function Ce(e,t){t.forEach(n=>{const o=e[n];typeof o=="function"&&o.toString().length})}let I=!1,P=null;const Je="EvoWorld2023GlobalSalt!",Qe="CrossPlatformSecure#456",ke="EvoworldUniversalKey2023!",ae="evoworld_enhancer_auth",Y=["evoworld_enhancer_session","evo_session_state"];function j(){const e=new Date,t=e.getUTCFullYear(),n=V(e),o=`${t}-W${n}`,a=et(o+Je);return tt(a)}function V(e){const t=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()));t.setUTCDate(t.getUTCDate()+4-(t.getUTCDay()||7));const n=new Date(Date.UTC(t.getUTCFullYear(),0,1));return Math.ceil(((t-n)/864e5+1)/7)}function et(e){let t=0;e=e+Qe;for(let n=0;n{(a%2===0?localStorage:sessionStorage).setItem(o,n)}),document.cookie=`evo_auth=${encodeURIComponent(n)};expires=${new Date(t).toUTCString()};path=/`}catch(o){}}catch(t){}else{P=null;try{localStorage.removeItem(ae),Y.forEach(t=>{localStorage.removeItem(t),sessionStorage.removeItem(t)}),document.cookie="evo_auth=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"}catch(t){}}}function ot(e){const t=JSON.stringify({authorized:!0,expires:e,week:V(new Date),year:new Date().getUTCFullYear(),created:Date.now()});return Xe(Ge(t,ke))}function M(e=null){if(I&&!e)return!0;if(e)return nt(e)?(Z(!0),!0):!1;try{if(!I)return!1;const t=at();if(!t)return!1;try{const n=xorDecrypt(Ke(t),ke),o=JSON.parse(n);return o.authorized===!0&&o.expires>Date.now()}catch(n){return I}}catch(t){return I}}function at(){if(P)return P;let e=null;try{if(e=localStorage.getItem(ae),!e){for(const t of Y)if(e=localStorage.getItem(t),e)break;if(!e){for(const t of Y)if(e=sessionStorage.getItem(t),e)break}if(!e){const t=document.cookie.match(/evo_auth=([^;]+)/);t&&(e=decodeURIComponent(t[1]))}}}catch(t){}return e&&(P=e),e}function re(e=!1){return e||M()?{password:j(),expires:R(),weekNumber:V(new Date),year:new Date().getUTCFullYear()}:null}typeof window!="undefined"&&function(){let e=0;const t=3;window.getPassword=function(){return I||typeof CONFIG!="undefined"&&CONFIG.devMode?(e=0,{password:j(),expiresIn:R(),week:V(new Date),year:new Date().getUTCFullYear()}):(e++,e>=t?{locked:!0,message:"Access denied"}:{message:"Please enter the password in the login panel first",attemptsLeft:t-e,passwordHint:"Password changes every Monday at 00:00 UTC"})}}();const rt=` /* General styling */ body { font-family: var(--font-family); color: var(--text-color); line-height: 1.6; } /* Enhancer Panel */ .enhancer-panel { position: fixed; top: 20px; right: 20px; width: 350px; background: var(--panel-background); border-radius: var(--border-radius); box-shadow: var(--box-shadow); z-index: 10000; overflow: hidden; animation: fadeIn 0.3s ease-out; backdrop-filter: blur(15px); border: 1px solid rgba(255, 255, 255, 0.07); transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); will-change: transform, opacity; } .enhancer-panel:hover { box-shadow: 0 15px 35px rgba(0, 0, 0, 0.3); } .enhancer-panel.minimized .enhancer-content { display: none; } .enhancer-panel.minimized { height: auto; } .enhancer-header { background: var(--header-background); color: var(--primary-color); padding: 16px 20px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); display: flex; justify-content: space-between; align-items: center; user-select: none; transition: background 0.3s ease; } .enhancer-header:hover { background: rgba(40, 40, 40, 0.95); } .enhancer-header h2 { margin: 0; font-size: 18px; font-weight: 700; display: flex; align-items: center; gap: 10px; letter-spacing: 0.3px; } .enhancer-header h2::before { content: '\u2699\uFE0F'; font-size: 18px; } .enhancer-content { padding: 20px; max-height: 70vh; overflow-y: auto; scrollbar-width: thin; scrollbar-color: var(--primary-color) transparent; overflow-x: hidden; } .enhancer-content::-webkit-scrollbar { width: 6px; } .enhancer-content::-webkit-scrollbar-track { background: transparent; } .enhancer-content::-webkit-scrollbar-thumb { background-color: rgba(61, 139, 253, 0.5); border-radius: 20px; } .enhancer-content::-webkit-scrollbar-thumb:hover { background-color: var(--primary-color); } /* Current Theme Indicator */ .current-theme-indicator { background: rgba(255, 255, 255, 0.05); padding: 6px 12px; border-radius: 20px; text-align: center; margin-bottom: 15px; font-size: 13px; } .theme-name { font-weight: 600; color: var(--primary-color); } /* Search Bar */ .enhancer-search { position: relative; margin-bottom: 20px; } .enhancer-search input { width: 100%; padding: 12px 16px; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); color: var(--text-color); border-radius: var(--border-radius); font-size: 14px; transition: all 0.2s ease; } .enhancer-search input:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(61, 139, 253, 0.2); } .enhancer-search input::placeholder { color: rgba(255, 255, 255, 0.5); } .search-results { position: absolute; top: 100%; left: 0; right: 0; background: var(--panel-background); border-radius: 0 0 var(--border-radius) var(--border-radius); box-shadow: var(--box-shadow); z-index: 100; max-height: 200px; overflow-y: auto; border: 1px solid rgba(255, 255, 255, 0.1); animation: fadeIn 0.2s; } .search-result { padding: 10px 16px; cursor: pointer; border-bottom: 1px solid rgba(255, 255, 255, 0.05); transition: all 0.2s; } .search-result:hover { background: rgba(61, 139, 253, 0.1); } .search-no-results { padding: 12px 16px; color: rgba(255, 255, 255, 0.5); text-align: center; font-style: italic; } /* Category Styles */ .category-title { color: var(--primary-color); font-size: 16px; margin: 24px 0 16px; font-weight: 700; display: flex; align-items: center; gap: 8px; letter-spacing: 0.5px; } .category-title::after { content: ''; flex-grow: 1; height: 1px; background: linear-gradient(to right, var(--primary-color), transparent); margin-left: 10px; } /* Control Styles */ .enhancer-control { background: var(--control-background); margin-bottom: 14px; padding: 16px; border-radius: var(--border-radius); display: flex; flex-direction: column; gap: 8px; transition: transform 0.2s cubic-bezier(0.25, 0.8, 0.25, 1), box-shadow 0.2s cubic-bezier(0.25, 0.8, 0.25, 1), background 0.2s ease; position: relative; border: 1px solid rgba(255, 255, 255, 0.05); } .enhancer-control:hover { transform: translateY(-2px); box-shadow: 0 7px 15px rgba(0, 0, 0, 0.15); background: rgba(55, 55, 55, 0.8); } .enhancer-control::after { content: ''; position: absolute; left: 0; top: 0; width: 3px; height: 0%; background: var(--primary-color); transition: height 0.3s ease-out; border-radius: var(--border-radius) 0 0 var(--border-radius); opacity: 0; } .enhancer-control.feature-active::after { height: 100%; opacity: 1; } .control-header { display: flex; justify-content: space-between; align-items: center; } .control-title { font-size: 15px; font-weight: 500; color: #eee; letter-spacing: 0.3px; } .highlight-feature { animation: pulse 0.5s ease; box-shadow: 0 0 0 2px var(--primary-color); } /* Shortcut badge */ .shortcut-badge { display: inline-block; background: rgba(0, 0, 0, 0.3); border-radius: 4px; padding: 2px 6px; font-size: 11px; font-weight: 600; color: rgba(255, 255, 255, 0.7); margin-left: 8px; vertical-align: middle; border: 1px solid rgba(255, 255, 255, 0.1); } /* Checkbox Styles */ .enhancer-checkbox-label { display: flex; align-items: center; gap: 12px; cursor: pointer; user-select: none; } .enhancer-checkbox { appearance: none; width: 44px; height: 24px; background-color: rgba(150, 150, 150, 0.3); border-radius: 30px; position: relative; cursor: pointer; transition: background-color 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); outline: none; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2); } .enhancer-checkbox:checked { background-color: var(--primary-color); } .enhancer-checkbox::before { content: ''; position: absolute; left: 3px; top: 3px; width: 18px; height: 18px; background-color: #fff; border-radius: 50%; transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1), background 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); } .enhancer-checkbox:checked::before { transform: translateX(20px); background: #fff; } .enhancer-checkbox:focus-visible { outline: 2px solid var(--primary-color); outline-offset: 2px; } .enhancer-checkbox:disabled { opacity: 0.6; cursor: not-allowed; } /* Range Slider Styles */ .range-container { display: flex; align-items: center; width: 100%; gap: 12px; padding: 8px 0; } .enhancer-range { flex-grow: 1; height: 6px; background: rgba(150, 150, 150, 0.3); border-radius: 6px; outline: none; -webkit-appearance: none; appearance: none; } .enhancer-range::-webkit-slider-thumb { -webkit-appearance: none; width: 20px; height: 20px; background: var(--primary-color); border-radius: 50%; cursor: pointer; transition: transform 0.2s, background 0.2s; border: none; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); } .enhancer-range::-moz-range-thumb { width: 20px; height: 20px; background: var(--primary-color); border-radius: 50%; cursor: pointer; border: none; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); } .enhancer-range::-webkit-slider-thumb:hover { transform: scale(1.2); background: color-mix(in srgb, var(--primary-color) 80%, white); } .enhancer-range:focus-visible { outline: 2px solid var(--primary-color); outline-offset: 2px; } .range-value { font-size: 0.9em; color: #ccc; min-width: 44px; text-align: center; font-variant-numeric: tabular-nums; background: rgba(0, 0, 0, 0.2); padding: 4px 8px; border-radius: 6px; font-weight: 500; } /* Button Styles */ .enhancer-button { background: var(--button-background); color: var(--button-text); border: none; padding: 10px 20px; border-radius: calc(var(--border-radius) - 2px); cursor: pointer; font-size: 14px; font-weight: 600; letter-spacing: 0.3px; transition: background 0.3s, transform 0.2s, box-shadow 0.2s; display: inline-flex; align-items: center; justify-content: center; gap: 8px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15); } .enhancer-button:hover { background: color-mix(in srgb, var(--button-background) 80%, white); transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); } .enhancer-button:active { transform: translateY(1px); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .enhancer-button.small { padding: 6px 12px; font-size: 13px; } .enhancer-button:focus-visible { outline: 2px solid var(--text-color); outline-offset: 2px; } .enhancer-button.danger { background: #e53935; } .enhancer-button.danger:hover { background: #f44336; } .enhancer-button.secondary { background: rgba(255, 255, 255, 0.1); color: #e0e0e0; } .enhancer-button.secondary:hover { background: rgba(255, 255, 255, 0.2); } .enhancer-button:disabled { opacity: 0.6; cursor: not-allowed; transform: none !important; } .enhancer-button.active-toggle { background-color: #e55039; } .enhancer-button.active-toggle:hover { background-color: #eb2f06; } /* Tooltip Styles */ .enhancer-tooltip { position: relative; display: inline-flex; margin-left: 6px; vertical-align: middle; } .tooltip-icon { background: rgba(255, 255, 255, 0.1); color: rgba(255, 255, 255, 0.7); border-radius: 50%; width: 20px; height: 20px; font-size: 12px; text-align: center; line-height: 20px; cursor: pointer; transition: all 0.2s ease; } .enhancer-tooltip:hover .tooltip-icon { background: rgba(255, 255, 255, 0.2); color: #fff; } .tooltip-text { visibility: hidden; width: 220px; background-color: rgba(20, 20, 20, 0.95); color: #fff; text-align: center; border-radius: 8px; padding: 10px; position: absolute; z-index: 1; bottom: 125%; left: 50%; margin-left: -110px; opacity: 0; transition: opacity 0.3s, transform 0.3s; transform: translateY(10px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); font-size: 13px; line-height: 1.4; pointer-events: none; font-weight: 400; } .tooltip-text::after { content: ''; position: absolute; top: 100%; left: 50%; margin-left: -5px; border-width: 5px; border-style: solid; border-color: rgba(20, 20, 20, 0.95) transparent transparent transparent; } .enhancer-tooltip:hover .tooltip-text { visibility: visible; opacity: 1; transform: translateY(0); } /* Guest Mode Banner */ .guest-mode-banner { background: linear-gradient(to right, #553311, #664422); color: #ffcc66; padding: 14px 16px; text-align: center; border-radius: var(--border-radius); margin-bottom: 20px; display: flex; justify-content: space-between; align-items: center; box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2); animation: fadeIn 0.5s; font-weight: 500; } /* Premium Feature Overlay */ .enhancer-panel.guest-mode .premium-feature { opacity: 0.7; pointer-events: none; filter: grayscale(30%); position: relative; } .enhancer-panel.guest-mode .premium-feature::after { content: '\u{1F512} Login Required'; position: absolute; right: 10px; top: 50%; transform: translateY(-50%); color: #ffaa33; font-size: 13px; font-weight: 600; background: rgba(0, 0, 0, 0.2); padding: 4px 10px; border-radius: 20px; letter-spacing: 0.5px; } /* Settings Styles */ .settings-icon-container { position: relative; display: inline-block; } .settings-icon { background: transparent; border: none; color: var(--primary-color); cursor: pointer; padding: 8px; border-radius: 50%; transition: background 0.3s, transform 0.3s; display: flex; align-items: center; justify-content: center; } .settings-icon:hover { background: rgba(255, 255, 255, 0.1); transform: rotate(45deg); } .settings-icon svg { width: 22px; height: 22px; } .settings-tooltip { position: absolute; background: rgba(0, 0, 0, 0.8); color: white; padding: 6px 10px; border-radius: 6px; font-size: 12px; bottom: 100%; left: 50%; transform: translateX(-50%); white-space: nowrap; opacity: 0; visibility: hidden; transition: opacity 0.2s, visibility 0.2s; pointer-events: none; margin-bottom: 5px; } .settings-icon:hover + .settings-tooltip { opacity: 1; visibility: visible; } .enhancer-modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.7); display: flex; align-items: center; justify-content: center; z-index: 10001; animation: fadeIn 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); backdrop-filter: blur(5px); } .enhancer-modal-overlay.fade-out { animation: fadeOut 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); } .enhancer-modal { background: var(--panel-background); border-radius: var(--border-radius); padding: 24px; max-width: 90%; max-height: 80vh; overflow-y: auto; box-shadow: var(--box-shadow); animation: slideIn 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); border: 1px solid rgba(255, 255, 255, 0.07); } .settings-title { margin-top: 0; color: var(--primary-color); font-size: 24px; margin-bottom: 24px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); padding-bottom: 16px; text-align: center; font-weight: 700; letter-spacing: 0.5px; } .settings-section { margin-bottom: 35px; animation: fadeIn 0.5s ease-out; padding: 0 5px; } .settings-section h3 { font-size: 18px; margin-bottom: 16px; color: var(--primary-color); display: flex; align-items: center; gap: 8px; font-weight: 600; letter-spacing: 0.3px; } .settings-section h3::after { content: ''; flex-grow: 1; height: 1px; background: linear-gradient(to right, var(--primary-color, #3d8bfd) 10%, transparent); } .settings-description { margin-bottom: 20px; opacity: 0.9; font-size: 15px; line-height: 1.5; } .theme-options-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 24px; margin: 24px 0; } .theme-option { display: flex; flex-direction: column; align-items: center; gap: 10px; position: relative; } .theme-preview { width: 100%; aspect-ratio: 16/10; border-radius: 12px; overflow: hidden; cursor: pointer; position: relative; border: 2px solid transparent; transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1), border-color 0.3s, box-shadow 0.3s; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); } .theme-preview:hover { transform: translateY(-5px) scale(1.05); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3); } .theme-preview.active { border-color: var(--primary-color); box-shadow: 0 0 0 2px var(--primary-color, #3d8bfd), 0 10px 25px rgba(0, 0, 0, 0.4); transform: translateY(-3px); } .theme-preview-container { position: absolute; top: 0; left: 0; right: 0; bottom: 0; overflow: hidden; } .theme-selecting { animation: pulse 0.3s; } .theme-checkmark { position: absolute; top: 8px; right: 8px; width: 24px; height: 24px; background: var(--primary-color); border-radius: 50%; display: flex; align-items: center; justify-content: center; opacity: 0; transform: scale(0); transition: opacity 0.3s, transform 0.3s; z-index: 2; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); } .theme-checkmark svg { width: 16px; height: 16px; fill: white; } .theme-preview.active .theme-checkmark { opacity: 1; transform: scale(1); } .theme-preview-label { font-weight: 500; font-size: 14px; color: #e0e0e0; text-align: center; transition: color 0.2s; } .theme-option:hover .theme-preview-label { color: var(--primary-color); } .theme-tooltip { position: absolute; bottom: calc(100% + 12px); left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: white; padding: 8px 12px; border-radius: 8px; font-size: 13px; opacity: 0; visibility: hidden; transition: opacity 0.3s, visibility 0.3s, transform 0.3s; pointer-events: none; white-space: nowrap; z-index: 10; transform: translateX(-50%) translateY(5px); } .theme-option:hover .theme-tooltip { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); } .settings-actions { display: flex; justify-content: center; gap: 15px; margin-top: 30px; padding-top: 20px; border-top: 1px solid rgba(255, 255, 255, 0.1); } .settings-actions .enhancer-button { min-width: 120px; } /* Big Settings Button */ .settings-button-container { display: flex; justify-content: center; margin-bottom: 15px; padding: 5px; width: 100%; } .big-settings-button { background: var(--primary-color); color: white; font-weight: bold; padding: 12px 20px; border: none; border-radius: 8px; display: flex; align-items: center; justify-content: center; gap: 8px; cursor: pointer; width: 100%; font-size: 16px; transition: all 0.2s ease; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); position: relative; } .big-settings-button:hover { background: color-mix(in srgb, var(--primary-color) 80%, white); transform: translateY(-2px); box-shadow: 0 6px 10px rgba(0, 0, 0, 0.15); } .big-settings-button:active { transform: translateY(1px); } .big-settings-button svg { width: 18px; height: 18px; } /* Add a subtle animation */ @keyframes pulse-border { 0% { box-shadow: 0 0 0 0 rgba(61, 139, 253, 0.7); } 70% { box-shadow: 0 0 0 10px rgba(61, 139, 253, 0); } 100% { box-shadow: 0 0 0 0 rgba(61, 139, 253, 0); } } .big-settings-button { animation: pulse-border 2s infinite; } /* Feature Controls */ .feature-controls { display: flex; align-items: center; gap: 6px; } /* Login Screen Styles */ .enhancer-login-form { display: flex; flex-direction: column; align-items: center; padding: 20px 30px 30px; background: var(--panel-background); } .enhancer-logo { display: flex; flex-direction: column; align-items: center; margin-bottom: 20px; animation: fadeIn 0.6s ease-out; } .enhancer-logo img { width: 80px; height: 80px; border-radius: 20px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); animation: fadeIn 0.8s ease, pulse 2s ease-in-out infinite; } .enhancer-logo h2 { margin: 15px 0 5px; color: var(--primary-color); font-size: 24px; font-weight: 700; text-align: center; } .login-message { text-align: center; margin-bottom: 25px; color: var(--text-color); font-size: 15px; animation: fadeIn 0.5s ease-out; } .login-input-group { width: 100%; margin-bottom: 25px; position: relative; } .input-wrapper { position: relative; width: 100%; } .enhancer-input { width: 100%; padding: 14px 45px 14px 16px; background: rgba(255, 255, 255, 0.07); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: var(--border-radius); color: var(--text-color); font-size: 16px; transition: all 0.3s ease; box-shadow: inset 0 1px 3px rgba(0,0,0,0.1); } .enhancer-input:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(61, 139, 253, 0.2), inset 0 1px 3px rgba(0,0,0,0.1); } .enhancer-input::placeholder { color: rgba(255, 255, 255, 0.4); } .enhancer-input.error { border-color: #ff5555; box-shadow: 0 0 0 2px rgba(255, 85, 85, 0.2); } .password-toggle { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); background: transparent; border: none; color: rgba(255, 255, 255, 0.5); cursor: pointer; padding: 5px; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: all 0.2s; } .password-toggle:hover { color: var(--text-color); background: rgba(255, 255, 255, 0.1); } .login-error { margin-top: 8px; color: #ff5555; font-size: 14px; animation: fadeIn 0.3s; } .button-group { display: flex; width: 100%; gap: 10px; margin-bottom: 25px; } .enhancer-button.primary { flex: 1; padding: 12px; font-size: 16px; font-weight: 600; letter-spacing: 0.5px; transition: all 0.3s; } .enhancer-button.success { background-color: #4CAF50; color: white; animation: pulse 0.5s ease; } .password-info { width: 100%; padding: 15px; margin-bottom: 15px; background: rgba(0, 0, 0, 0.2); border-radius: var(--border-radius); font-size: 13px; color: rgba(255, 255, 255, 0.7); animation: fadeIn 0.8s; } .info-item { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; } .info-item:last-child { margin-bottom: 0; } .info-item svg { flex-shrink: 0; color: rgba(255, 255, 255, 0.6); } .help-text { font-size: 13px; text-align: center; color: rgba(255, 255, 255, 0.6); } .help-text a { color: var(--primary-color); text-decoration: none; transition: all 0.2s; } .help-text a:hover { text-decoration: underline; opacity: 0.9; } .shake-animation { animation: shake 0.5s ease-in-out; } @keyframes shake { 0%, 100% { transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); } 20%, 40%, 60%, 80% { transform: translateX(5px); } } .hidden { display: none; } /* Draggable Panel Styles */ .draggable-handle { cursor: move; user-select: none; touch-action: none; } .dragging { opacity: 0.8; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.4) !important; transition: none !important; } `;class it{constructor(t,n,o,a,i={}){this.id=t,this.name=n,this.category=o,this.controller=a,this.description=i.description||"",this.shortcut=i.shortcut||null,this.premium=i.premium!==!1,this.guestFeature=i.guestFeature||!1,this.devOnly=i.devOnly||!1,this.configKey=i.configKey||t,this.ui=i.ui||{type:"toggle"},this.enabled=!1,this.controller&&this._initializeFromConfig()}toggle(t){try{return typeof t!="boolean"&&(t=!this.enabled),this.enabled=t,this.controller&&typeof this.controller.toggle=="function"&&this.controller.toggle(t),s[this.configKey]=t,typeof s.save=="function"&&s.save(),this.enabled}catch(n){return this.enabled}}isEnabled(){try{return this.controller&&typeof this.controller.isEnabled=="function"?this.controller.isEnabled():this.enabled}catch(t){return!1}}setValue(t){try{return this.controller&&typeof this.controller.update=="function"?(this.controller.update(t),s[this.configKey]=t,typeof s.save=="function"&&s.save(),t):null}catch(n){return null}}click(){try{return this.controller&&typeof this.controller.click=="function"?this.controller.click():null}catch(t){return null}}getValue(){try{return this.controller?this.ui&&this.ui.type==="slider"&&this.controller.value!==void 0?this.controller.value:this.ui&&this.ui.type==="slider"&&this.ui.defaultValue!==void 0?this.ui.defaultValue:this.isEnabled():this.enabled}catch(t){return null}}isAvailableInGuestMode(){return this.guestFeature===!0||!this.premium&&this.guestFeature!==!1}isDisabledInGuestMode(){return this.premium&&!this.guestFeature}_initializeFromConfig(){try{this.configKey!==void 0&&s[this.configKey]!==void 0?typeof s[this.configKey]=="boolean"?(this.enabled=s[this.configKey],this.controller&&typeof this.controller.toggle=="function"&&this.controller.toggle(this.enabled)):typeof s[this.configKey]=="number"&&this.ui&&this.ui.type==="slider"&&this.controller&&typeof this.controller.update=="function"&&this.controller.update(s[this.configKey]):this.id==="esp"&&this.controller&&(typeof s.showEnemyLines=="boolean"&&this.controller.toggleEnemyLines&&this.controller.toggleEnemyLines(s.showEnemyLines),typeof s.showFoodLines=="boolean"&&this.controller.toggleFoodLines&&this.controller.toggleFoodLines(s.showFoodLines),this.enabled=s.showEnemyLines||s.showFoodLines)}catch(t){}}}const E={VISION:"vision",GAMEPLAY:"gameplay",UTILITY:"utility",PERFORMANCE:"performance",EXPERIMENTAL:"experimental"},A=new Map;function st(e,t=null){try{if(!e.id||!e.name||!e.category)return null;if(A.has(e.id)){const a=A.get(e.id);return t&&(a.controller=t,a._initializeFromConfig()),a}const n=ct(e.id)||e.configKey||e.id,o=new it(e.id,e.name,e.category,t,{description:e.description,shortcut:e.shortcut,premium:e.premium||!1,devOnly:e.devOnly||!1,ui:e.ui,configKey:n,guestFeature:e.guestFeature||!1});return["esp","enhancedVision","pingReducer"].includes(o.id)&&(o.guestFeature=!0),A.set(o.id,o),o}catch(n){return null}}function ct(e){return{esp:"showEnemyLines",debugInfo:"showDebugInfo"}[e]||null}function ie(e){return A.get(e)||null}function H(){return Array.from(A.values())}function lt(e){return H().filter(t=>t.category===e)}function dt(e){e&&Object.entries(e).forEach(([t,n])=>{const o=ie(t);o&&(o.controller=n,o._initializeFromConfig())})}function ut(){A.clear()}function Me(e,t,n,o={}){const{disabled:a=!1,classes:i="",ariaLabel:r=""}=o,l=document.createElement("label");l.className="enhancer-checkbox-label";const c=document.createElement("input");return c.type="checkbox",c.id=e,c.className=`enhancer-checkbox ${i}`,c.checked=t,c.disabled=a,r&&c.setAttribute("aria-label",r),n&&typeof n=="function"&&c.addEventListener("change",n),l.appendChild(c),l}function pt(e,t,n,o={}){return Me(e,t,n,o)}function Te(e,t,n,o={}){const{min:a=0,max:i=100,step:r=1,unit:l="",disabled:c=!1}=o,u=document.createElement("div");u.className="range-container";const d=document.createElement("input");d.type="range",d.id=e,d.className="enhancer-range",d.min=a,d.max=i,d.step=r,d.value=t,d.disabled=c;const p=document.createElement("span");return p.className="range-value",p.id=`${e}-value`,p.textContent=t+l,n&&typeof n=="function"&&d.addEventListener("input",h=>{p.textContent=h.target.value+l,n(parseFloat(h.target.value))}),u.appendChild(d),u.appendChild(p),u}function mt(e,t,n,o={}){return Te(e,t,n,o)}function G(e,t,n={}){const{id:o="",classes:a="",small:i=!1,danger:r=!1,icon:l=null,disabled:c=!1,ariaLabel:u,ariaControls:d}=n,p=document.createElement("button");if(p.type="button",p.className=`enhancer-button ${i?"small":""} ${r?"danger":""} ${a}`,p.textContent=e,p.disabled=c,o&&(p.id=o),u&&p.setAttribute("aria-label",u),d&&p.setAttribute("aria-controls",d),t&&typeof t=="function"&&p.addEventListener("click",t),l){const h=document.createElement("span");h.className="button-icon",h.innerHTML=l,p.prepend(h)}return p}function ht(e,t,n={}){return G(e,t,n)}function gt(e,t={}){const{icon:n="?"}=t,o=document.createElement("div");o.className="enhancer-tooltip";const a=document.createElement("span");a.className="tooltip-icon",a.textContent=n;const i=document.createElement("span");return i.className="tooltip-text",i.innerHTML=e,o.appendChild(a),o.appendChild(i),o}function Se(e,t={}){return gt(e,t)}function se(e,t,n={}){const{id:o="",closable:a=!0,draggable:i=!1,width:r=350,classes:l="",minimizable:c=!0,startMinimized:u=!1}=n,d=document.createElement("div");d.className=`enhancer-panel ${l}`,d.style.width=`${r}px`,o&&(d.id=o),i&&(d.classList.add("draggable"),d.dataset.draggable="true");let p=u;p&&d.classList.add("minimized");const h=document.createElement("div");h.className="enhancer-header",h.setAttribute("role","heading"),h.setAttribute("aria-level","1");const m=document.createElement("h2");m.textContent=e,m.id=`${o}-title`,h.appendChild(m);const b=document.createElement("div");if(b.className="header-buttons",c){const x=G(p?"\u25B2":"\u25BC",()=>{p=!p,d.classList.toggle("minimized",p),x.textContent=p?"\u25B2":"\u25BC",x.setAttribute("aria-label",p?"Expand panel":"Collapse panel"),x.setAttribute("aria-expanded",!p),n.onMinimize&&n.onMinimize(p)},{small:!0,id:"enhancer-minimize",ariaLabel:p?"Expand panel":"Collapse panel",ariaControls:`${o}-content`});x.setAttribute("aria-expanded",!p),b.appendChild(x)}if(a){const x=G("\xD7",()=>{d.style.animation="fadeOut 0.2s forwards",setTimeout(()=>d.remove(),200)},{small:!0,id:"enhancer-close",ariaLabel:"Close panel"});b.appendChild(x)}h.appendChild(b),d.appendChild(h);const f=document.createElement("div");return f.className="enhancer-content",f.id=`${o}-content`,f.setAttribute("role","region"),f.setAttribute("aria-labelledby",`${o}-title`),typeof t=="string"?f.innerHTML=t:f.appendChild(t),d.appendChild(f),i&&ft(d,h),d}function v(e,t="info",n={}){const{duration:o=3e3,dismissible:a=!0,position:i="top-right",onClose:r=null}=n;let l=document.getElementById("enhancer-notifications");l||(l=document.createElement("div"),l.id="enhancer-notifications",l.className=`notifications-container ${i}`,document.body.appendChild(l));const c=document.createElement("div");c.className=`enhancer-notification ${t}`,c.setAttribute("role","alert"),c.setAttribute("aria-live",t==="error"?"assertive":"polite");const u={info:"ⓘ",success:"✔",warning:"⚠",error:"✖"},d=document.createElement("div");d.className="notification-icon",d.innerHTML=u[t]||u.info;const p=document.createElement("div");if(p.className="notification-content",p.innerHTML=e,c.appendChild(d),c.appendChild(p),a){const m=document.createElement("button");m.className="notification-close",m.innerHTML="×",m.addEventListener("click",()=>{h(c)}),c.appendChild(m)}if(o>0){const m=document.createElement("div");m.className="notification-progress",m.style.animationDuration=`${o}ms`,c.appendChild(m)}l.appendChild(c),setTimeout(()=>{c.classList.add("show")},10),o>0&&setTimeout(()=>{h(c)},o);function h(m){m.classList.remove("show"),m.classList.add("hide"),setTimeout(()=>{m.parentNode===l&&l.removeChild(m),l.children.length===0&&l.remove(),r&&typeof r=="function"&&r()},300)}return c}function ft(e,t){let n=!1,o,a;getComputedStyle(e).position==="static"&&(e.style.position="fixed"),t.style.cursor="move",t.classList.add("draggable-handle");let i=parseInt(getComputedStyle(e).left,10)||0,r=parseInt(getComputedStyle(e).top,10)||0;t.addEventListener("mousedown",l),t.addEventListener("touchstart",l,{passive:!1});function l(d){if(!d.target.closest(".header-buttons")){if(d.preventDefault(),n=!0,e.classList.add("dragging"),i=parseInt(getComputedStyle(e).left,10)||0,r=parseInt(getComputedStyle(e).top,10)||0,d.type==="mousedown")o=d.clientX-i,a=d.clientY-r,document.addEventListener("mousemove",c),document.addEventListener("mouseup",u);else if(d.type==="touchstart"){const p=d.touches[0];o=p.clientX-i,a=p.clientY-r,document.addEventListener("touchmove",c,{passive:!1}),document.addEventListener("touchend",u)}}}function c(d){if(!n)return;d.preventDefault();let p,h;if(d.type==="mousemove")p=d.clientX,h=d.clientY;else if(d.type==="touchmove"){const _e=d.touches[0];p=_e.clientX,h=_e.clientY}const m=p-o,b=h-a,f=window.innerWidth-e.offsetWidth,x=window.innerHeight-e.offsetHeight;e.style.left=`${Math.max(0,Math.min(m,f))}px`,e.style.top=`${Math.max(0,Math.min(b,x))}px`}function u(){n=!1,e.classList.remove("dragging"),document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",u),document.removeEventListener("touchmove",c),document.removeEventListener("touchend",u)}}function wt(e,t={}){const{id:n="",width:o="400px",height:a="auto",onClose:i=null}=t,r=document.createElement("div");r.className="enhancer-modal-overlay",n&&(r.id=n);const l=document.createElement("div");l.className="enhancer-modal",l.style.width=o,l.style.height=a,r.addEventListener("click",d=>{d.target===r&&u()});const c=d=>{d.key==="Escape"&&u()};document.addEventListener("keydown",c);function u(){r.classList.add("fade-out"),setTimeout(()=>{document.removeEventListener("keydown",c),r.remove(),i&&typeof i=="function"&&i()},200)}return typeof e=="string"?l.innerHTML=e:l.appendChild(e),r.appendChild(l),r}let Ie=class U{constructor(){this._elements=[],this._container=document.createElement("div"),this._attrs={},this._id=null,this._className="",this._cleanupFunctions=[]}withId(t){return this._id=t,this}withClass(t){return this._className+=" "+t,this}withData(t,n){return this._attrs[`data-${t}`]=n,this}withButton(t,n,o={}){return this._elements.push(ht(t,n,o)),this}withToggle(t,n,o,a={}){const i=`toggle-${Math.random().toString(36).substr(2,9)}`,r=document.createElement("div");r.className="enhancer-input-group";const l=document.createElement("label");return l.htmlFor=i,l.textContent=t,a.tooltip&&l.appendChild(Se(a.tooltip)),r.appendChild(l),r.appendChild(pt(i,n,o,a)),this._elements.push(r),this}withSlider(t,n,o,a,i,r,l={}){const c=`slider-${Math.random().toString(36).substr(2,9)}`,u=document.createElement("div");u.className="enhancer-input-group";const d=document.createElement("label");return d.htmlFor=c,d.textContent=t,l.tooltip&&d.appendChild(Se(l.tooltip)),u.appendChild(d),u.appendChild(mt(c,i,r,{min:n,max:o,step:a,unit:l.unit||"",disabled:l.disabled||!1})),this._elements.push(u),this}withFeature(t,n={}){var o,a,i;try{const r=ie(t);if(!r)return this.withContent(`
Feature not found: ${t}
`);if(s.guestMode===!0&&r.guestFeature!==!0)return this;const l=document.createElement("div");l.className="enhancer-control",l.dataset.featureId=t;try{const c=document.createElement("div");c.className="control-header";const u=document.createElement("div");if(u.className="control-title",u.textContent=r.name,r.shortcut){const h=document.createElement("span");h.className="shortcut-badge",h.textContent=r.shortcut,h.title=`Keyboard shortcut: ${r.shortcut}`,u.appendChild(h)}if(r.description){const h=document.createElement("span");h.className="enhancer-tooltip",h.innerHTML=`?${r.description}`,u.appendChild(h)}c.appendChild(u);const d=document.createElement("div");d.className="feature-controls";let p=!1;try{typeof r.isEnabled=="function"?p=r.isEnabled():r.controller&&typeof r.controller.isEnabled=="function"?p=r.controller.isEnabled():p=!!s[r.configKey||t]}catch(h){p=!1}if(r.ui&&r.ui.type==="slider")try{const h=Te(`enhancer-${t}`,(i=(a=(o=s[t])!=null?o:r.ui.defaultValue)!=null?a:r.ui.min)!=null?i:0,m=>{try{r.setValue(m)}catch(b){}},{min:r.ui.min||0,max:r.ui.max||100,step:r.ui.step||1,unit:r.ui.unit||"",disabled:n.disabled||!1});d.appendChild(h)}catch(h){const m=document.createElement("span");m.textContent="Slider unavailable",m.style.opacity="0.7",d.appendChild(m)}else if(r.ui&&r.ui.type==="button")try{const h=G(r.name,()=>{try{r.click()}catch(m){}},{disabled:n.disabled||!1});d.appendChild(h)}catch(h){const m=document.createElement("span");m.textContent="Button unavailable",m.style.opacity="0.7",d.appendChild(m)}else try{if(r.controller){const h=Me(`enhancer-${t}`,p,b=>{try{r.toggle(b.target.checked);const f=b.target.checked,x=d.querySelector(".feature-state-indicator");x&&(x.textContent=f?"Active":"Inactive",x.className=`feature-state-indicator ${f?"active":"inactive"}`,x.style.background=f?"rgba(32, 201, 151, 0.2)":"rgba(150, 150, 150, 0.2)",x.style.color=f?"#20c997":"#aaa")}catch(f){b.target.checked=!b.target.checked,v(`Error toggling ${r.name}`,"error")}},{disabled:n.disabled||!1});d.appendChild(h);const m=document.createElement("span");m.className=`feature-state-indicator ${p?"active":"inactive"}`,m.textContent=p?"Active":"Inactive",m.style.fontSize="11px",m.style.marginLeft="8px",m.style.padding="2px 6px",m.style.borderRadius="10px",m.style.background=p?"rgba(32, 201, 151, 0.2)":"rgba(150, 150, 150, 0.2)",m.style.color=p?"#20c997":"#aaa",d.appendChild(m)}else{const h=document.createElement("span");h.className="feature-status-badge warning",h.textContent="No Controller",d.appendChild(h)}}catch(h){const m=document.createElement("span");m.className=`feature-status-badge ${p?"success":"neutral"}`,m.textContent=p?"Active":"Inactive",d.appendChild(m);const b=document.createElement("button");b.className=`enhancer-button small ${p?"active-toggle":""}`,b.textContent=p?"Disable":"Enable",b.addEventListener("click",()=>{try{if(r&&typeof r.toggle=="function"){const f=r.toggle(!p);p=f,m.textContent=f?"Active":"Inactive",m.className=`feature-status-badge ${f?"success":"neutral"}`,b.textContent=f?"Disable":"Enable",b.className=`enhancer-button small ${f?"active-toggle":""}`,v(`${r.name} ${f?"enabled":"disabled"}`,"info")}}catch(f){v(`Error toggling ${r.name}`,"error")}}),d.appendChild(b)}c.appendChild(d),l.appendChild(c),this._elements.push(l)}catch(c){const u=document.createElement("div");u.className="feature-error",u.textContent=`Could not load: ${r.name||t}`;const d=document.createElement("button");d.className="enhancer-button small",d.textContent="Retry",d.style.marginLeft="10px",d.addEventListener("click",()=>{if(!u.parentElement)return;const p=new U;p.withFeature(t,n);const h=p.render();u.replaceWith(h),v(`Retrying feature: ${r.name||t}`,"info")}),u.appendChild(d),this._elements.push(u)}}catch(r){const l=document.createElement("div");l.className="feature-fallback",l.textContent=`Feature ${t} unavailable`;const c=document.createElement("button");c.className="enhancer-button small",c.textContent="Retry",c.style.marginLeft="10px",c.addEventListener("click",function(){if(l.parentElement){const u=new U;u.withFeature(t,n);const d=u.render();l.replaceWith(d)}}),l.appendChild(c),this._elements.push(l)}return this}withPasswordShare(t){return t?this.withClass("password-share-container").withContent("

EvoWorld Enhancer Password

").withContent(`
Weekly Password: ${t.password}
Changes in: ${t.expires} (every Monday)
Week: ${t.weekNumber}/${t.year}
Tip: Type getPassword() in console to view anytime
`):this}withContent(t){if(typeof t=="string"){const n=document.createElement("div");n.innerHTML=t,this._elements.push(n)}else this._elements.push(t);return this}withDivider(){const t=document.createElement("hr");return t.className="enhancer-divider",this._elements.push(t),this}withSection(t,n){const o=document.createElement("div");o.className="enhancer-section";const a=document.createElement("h3");a.className="section-title",a.textContent=t,o.appendChild(a);const i=document.createElement("div");i.className="section-content";const r=new U;n(r);const l=r.render();return i.appendChild(l),o.appendChild(i),this._elements.push(o),this}withTabs(t){const n=document.createElement("div");n.className="enhancer-tabs";const o=document.createElement("div");o.className="tabs-header";const a=document.createElement("div");return a.className="tabs-content",t.forEach((i,r)=>{const l=document.createElement("button");l.className="tab-button"+(r===0?" active":""),l.textContent=i.label,l.dataset.tabIndex=r,o.appendChild(l);const c=document.createElement("div");if(c.className="tab-content"+(r===0?" active":""),c.dataset.tabIndex=r,typeof i.content=="function"){const u=new U;i.content(u),c.appendChild(u.render())}else typeof i.content=="string"?c.innerHTML=i.content:c.appendChild(i.content);a.appendChild(c)}),o.addEventListener("click",i=>{if(i.target.classList.contains("tab-button")){const r=i.target.dataset.tabIndex;o.querySelectorAll(".tab-button").forEach(l=>{l.classList.toggle("active",l.dataset.tabIndex===r)}),a.querySelectorAll(".tab-content").forEach(l=>{l.classList.toggle("active",l.dataset.tabIndex===r)})}}),n.appendChild(o),n.appendChild(a),this._elements.push(n),this}withCleanup(t){return typeof t=="function"&&this._cleanupFunctions.push(t),this}asPanel(t,n={}){const o=this.render();return se(t,o,n)}render(){const t=document.createElement("div");return this._id&&(t.id=this._id),this._className&&(t.className=this._className.trim()),Object.entries(this._attrs).forEach(([n,o])=>{t.setAttribute(n,o)}),this._elements.forEach(n=>{t.appendChild(n)}),t.cleanup=()=>{this._cleanupFunctions.forEach(n=>{try{n()}catch(o){}})},t}};function O(){return new Ie}new Ie;const F="dark",bt={background:"#f8f9fa",text:"#212529",primary:"#0d6efd",secondary:"#6c757d",accent:"#20c997",panelBackground:"rgba(255, 255, 255, 0.95)",headerBackground:"rgba(247, 248, 249, 0.95)",controlBackground:"rgba(240, 242, 245, 0.8)",buttonBackground:"#0d6efd",buttonText:"#fff",borderRadius:"10px",boxShadow:"0 8px 30px rgba(0, 0, 0, 0.12)"},Ae={background:"#121212",text:"#e0e0e0",primary:"#3d8bfd",secondary:"#6c757d",accent:"#20c997",panelBackground:"rgba(25, 25, 25, 0.95)",headerBackground:"rgba(32, 32, 32, 0.95)",controlBackground:"rgba(45, 45, 45, 0.8)",buttonBackground:"#3d8bfd",buttonText:"#fff",borderRadius:"10px",boxShadow:"0 8px 30px rgba(0, 0, 0, 0.2)"},vt={background:"#000000",text:"#ffffff",primary:"#ffff00",secondary:"#00ffff",accent:"#ff00ff",panelBackground:"rgba(0, 0, 0, 0.95)",headerBackground:"rgba(20, 20, 20, 0.95)",controlBackground:"rgba(30, 30, 30, 0.9)",buttonBackground:"#ffff00",buttonText:"#000000",borderRadius:"4px",boxShadow:"0 0 0 2px #ffffff"},yt={background:"#120b1a",text:"#e0f2ff",primary:"#0fe0f5",secondary:"#ff34b3",accent:"#7bff00",panelBackground:"rgba(18, 11, 26, 0.95)",headerBackground:"rgba(21, 13, 30, 0.95)",controlBackground:"rgba(30, 18, 44, 0.8)",buttonBackground:"#0fe0f5",buttonText:"#000",borderRadius:"6px",boxShadow:"0 0 15px rgba(15, 224, 245, 0.5)"},xt={background:"#000000",text:"#33ff33",primary:"#33ff33",secondary:"#995500",accent:"#ff3333",panelBackground:"rgba(0, 0, 0, 0.9)",headerBackground:"rgba(10, 10, 10, 0.95)",controlBackground:"rgba(20, 20, 20, 0.8)",buttonBackground:"#33ff33",buttonText:"#000000",borderRadius:"0px",boxShadow:"0 0 10px rgba(51, 255, 51, 0.6)"},X={light:bt,dark:Ae,"high-contrast":vt,neon:yt,retro:xt};function $e(e){e||(e=X[F]||Ae);try{document.documentElement.style.setProperty("--background-color",e.background),document.documentElement.style.setProperty("--text-color",e.text),document.documentElement.style.setProperty("--primary-color",e.primary),document.documentElement.style.setProperty("--secondary-color",e.secondary),document.documentElement.style.setProperty("--accent-color",e.accent),document.documentElement.style.setProperty("--panel-background",e.panelBackground),document.documentElement.style.setProperty("--header-background",e.headerBackground),document.documentElement.style.setProperty("--control-background",e.controlBackground),document.documentElement.style.setProperty("--button-background",e.buttonBackground),document.documentElement.style.setProperty("--button-text",e.buttonText),document.documentElement.style.setProperty("--border-radius",e.borderRadius),document.documentElement.style.setProperty("--box-shadow",e.boxShadow);const t=new CustomEvent("themeChanged",{detail:{theme:e}});document.dispatchEvent(t)}catch(t){}}let N="dark";function Et(){const e=O().withContent('

Settings

').withContent(Ct()).withContent(Lt());(s.devMode||!window.isGuestMode)&&e.withContent(Mt()),e.withContent(`
`);const t=wt(e.render(),{id:"enhancer-settings-modal",width:"450px",onClose:()=>{}});return setTimeout(()=>{const n=t.querySelector("#settings-close-btn");n&&n.addEventListener("click",()=>{t.classList.add("fade-out"),setTimeout(()=>t.remove(),200)})},0),t}function Ct(){const e=document.createElement("div");e.className="settings-section";const t=document.createElement("h3");t.textContent="Theme",e.appendChild(t);const n=document.createElement("p");n.className="settings-description",n.textContent="Choose a visual theme for the enhancer interface:",e.appendChild(n);const o=document.createElement("div");return o.className="theme-options-grid",Object.entries(X).forEach(([a,i])=>{const r=a.charAt(0).toUpperCase()+a.slice(1),l=`theme-preview-${a}`,c=kt(a,r,l);o.appendChild(c)}),e.appendChild(o),setTimeout(()=>{var a;(a=document.querySelector(`.theme-preview[data-theme="${N}"]`))==null||a.classList.add("active")},100),e}function kt(e,t,n){const o=document.createElement("div");o.className="theme-option";const a=document.createElement("div");a.className=`theme-preview ${n}`,a.setAttribute("data-theme",e),a.setAttribute("aria-label",`${t} theme`),a.setAttribute("role","button"),a.tabIndex=0;try{const c=generateThemePreviewHTML(e),u=document.createElement("div");u.className="theme-preview-container",u.innerHTML=c,a.appendChild(u)}catch(c){}const i=document.createElement("div");i.className="theme-checkmark",i.innerHTML='',a.appendChild(i);const r=document.createElement("div");r.className="theme-preview-label",r.textContent=t,a.appendChild(r);const l={light:"Bright theme for daytime use",dark:"Default dark theme, easier on the eyes","high-contrast":"Maximum visibility with strong contrasts",neon:"Vibrant colors with a futuristic look",retro:"Old-school terminal style with green text"};if(l[e]){const c=document.createElement("div");c.className="theme-tooltip",c.textContent=l[e],o.appendChild(c)}return a.addEventListener("click",()=>{try{a.classList.add("theme-selecting"),setTimeout(()=>a.classList.remove("theme-selecting"),300),ce(e),document.querySelectorAll(".theme-preview").forEach(c=>{c.classList.remove("active")}),a.classList.add("active")}catch(c){notification(`Error setting theme: ${c.message}`,"error")}}),a.addEventListener("keydown",c=>{(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),a.click())}),o.appendChild(a),o}function Lt(){const e=document.createElement("div");e.className="settings-section";const t=document.createElement("h3");t.textContent="Accessibility",e.appendChild(t);const n=document.createElement("p");return n.textContent="Accessibility options coming soon...",n.style.opacity="0.7",e.appendChild(n),e}function Mt(){var e;const t=document.createElement("div");t.className="settings-section";const n=document.createElement("h3");n.textContent="About",t.appendChild(n);const o=document.createElement("p");return o.innerHTML=` EvoWorld Enhancer
Version: ${((e=window.EvoWorldEnhancer)==null?void 0:e.version)||"1.0.0"}
Reset Settings `,t.appendChild(o),setTimeout(()=>{const a=document.getElementById("reset-settings");a&&a.addEventListener("click",i=>{i.preventDefault(),confirm("Are you sure you want to reset all settings?")&&(s.reset(),location.reload())})},100),t}function ce(e){try{N=e;const t=X[e];return t?$e(t):(N=F,$e(X[F])),s.theme=N,typeof s.save=="function"&&s.save(),document.querySelectorAll(".theme-name").forEach(n=>{n.textContent=N.charAt(0).toUpperCase()+N.slice(1)}),!0}catch(t){return!1}}function Tt(){try{const e=s.theme||F;ce(e)}catch(e){ce(F)}}function le(e){if(e)try{const t=parseInt(e.style.top,10)||20,n=parseInt(e.style.left,10)||20;s.panelPosition={top:t,left:n},typeof s.save=="function"&&s.save()}catch(t){}}function St(e){e&&(e.addEventListener("mouseup",()=>setTimeout(()=>le(e),100)),e.addEventListener("touchend",()=>setTimeout(()=>le(e),100)),window.addEventListener("beforeunload",()=>le(e)))}const K=new Set;let de=!1;function ue(){if(de)return;const e="evoworld-enhancer-styles";if(document.getElementById(e)){de=!0;return}const t=document.createElement("style");t.id=e,t.textContent=rt+` /* Shortcut badge styles */ .shortcut-badge { display: inline-block; padding: 1px 6px; margin-left: 8px; font-size: 11px; font-weight: 600; color: var(--text-color); background-color: rgba(var(--primary-color-rgb), 0.15); border: 1px solid rgba(var(--primary-color-rgb), 0.3); border-radius: 4px; vertical-align: middle; } .control-title { display: flex; align-items: center; } .control-title .shortcut-badge { margin-left: 8px; } `,document.head.appendChild(t),de=!0}function q(){if(!_("create_panel",3,5e3))return null;ue(),pe();const e=O().withId("enhancer-login-content").withClass("enhancer-login-form").withContent(` `).withContent(` `).withContent(` `).withContent(`
`).withContent(`
Password changes every Monday at 00:00 UTC
Time remaining: ${R()}

Need help? Ask in our Discord server

`),t=se("Login",e.render(),{id:"enhancer-login-panel",width:400,closable:!1});return document.body.appendChild(t),K.add(t),It(),Fe(),t}function Fe(){const e=document.getElementById("password-time-remaining");e&&(e.textContent=R()),setTimeout(Fe,6e4)}function D(e,t=!1){if(!t&&!M()||(window.enhancerControls=e,!_("create_control_panel",3,5e3)))return null;ue(),pe();const n=O().withId("enhancer-panel-content"),o=s.theme||F;Tt(),n.withContent(`
Theme: ${o.charAt(0).toUpperCase()+o.slice(1)}
`),n.withContent(`
`),t||n.withContent(` `),t&&n.withContent(`
Guest Mode - Basic features enabled
`),t||n.withContent(`
Developer Mode
`),Object.values(E).forEach(i=>{const r=lt(i),l=t?r.filter(p=>p.guestFeature===!0):r;if(l.length===0)return;const c=i.charAt(0).toUpperCase()+i.slice(1),u=O();let d=0;l.forEach(p=>{u.withFeature(p.id),d++}),d>0&&(n.withContent(`

${c}

`),n.withContent(u.render()),n.withDivider())});const a=se("EvoWorld Enhancer",n.render(),{id:"enhancer-control-panel",width:350,closable:!0,draggable:!0,minimizable:!0,startMinimized:s.panelMinimized||!1,onMinimize:i=>{s.panelMinimized=i,typeof s.save=="function"&&s.save()}});if(a.style.position="fixed",a.style.top="20px",a.style.right="20px",s.panelPosition)try{s.panelPosition.top!==void 0&&(a.style.top=s.panelPosition.top+"px"),s.panelPosition.left!==void 0&&(a.style.left=s.panelPosition.left+"px"),a.style.right=""}catch(i){}return document.body.appendChild(a),K.add(a),St(a),At(a),t||$t(a),Ft(e,t),Nt(a),t||ze(),!t&&s.devMode&&setTimeout(()=>De(),300),t||Dt(a),a}function pe(){K.forEach(e=>{if(e.cleanup&&typeof e.cleanup=="function")try{e.cleanup()}catch(t){}e.remove()}),K.clear()}function Ne(){const e=document.getElementById("enhancer-password");if(!e)return;const t=e.value.trim();if(!t){e.classList.add("input-error"),v("Please enter a password","error"),setTimeout(()=>e.classList.remove("input-error"),2e3);return}try{M(t)?(Z(!0),window.EvoWorldEnhancer&&typeof window.EvoWorldEnhancer.onLoginSuccess=="function"&&window.EvoWorldEnhancer.onLoginSuccess()):(e.classList.add("input-error"),e.value="",v("Invalid password","error"),e.style.animation="shake 0.5s",setTimeout(()=>{e.style.animation="",e.classList.remove("input-error")},500))}catch(n){v("Authentication error","error")}}function It(e){const t=document.getElementById("enhancer-password"),n=document.getElementById("enhancer-login"),o=document.getElementById("enhancer-back"),a=document.getElementById("toggle-password");document.getElementById("login-error"),a&&a.addEventListener("click",()=>{const i=document.getElementById("enhancer-password"),r=a.querySelector(".eye-icon");i.type==="password"?(i.type="text",r.innerHTML=''):(i.type="password",r.innerHTML='')}),t&&(t.addEventListener("keypress",i=>{i.key==="Enter"&&(i.preventDefault(),Ne())}),setTimeout(()=>t.focus(),100)),n&&n.addEventListener("click",i=>{i.preventDefault(),Ne()}),o&&o.addEventListener("click",i=>{if(i.preventDefault(),typeof window.enhanceGame=="function")try{const r=window.enhanceGame(!0);D(r,!0)}catch(r){v("Error returning to guest mode","error")}else v("Unable to return to guest mode","error")})}function At(e,t,n){e.addEventListener("click",o=>{if(o.target.id==="guest-login-button"&&(pe(),q()),o.target.id==="settings-button"||o.target.closest("#settings-button")){document.getElementById("enhancer-settings-modal")||document.body.appendChild(Et());return}})}function $t(e){const t=e.querySelector("#dev-mode-toggle"),n=e.querySelector("#password-display");t&&(t.checked=!!s.devMode,n&&(n.classList.toggle("visible",s.devMode),n.classList.toggle("hidden",!s.devMode)),e.classList.toggle("dev-mode-active",s.devMode),t.addEventListener("click",function(){const o=this.checked;if(s.devMode=o,typeof s.save=="function"){s.save();try{const a=localStorage.getItem("evoWorldEnhancerConfig");JSON.parse(a||"{}")}catch(a){}}if(n&&(n.classList.toggle("visible",o),n.classList.toggle("hidden",!o)),e.classList.toggle("dev-mode-active",o),o)setTimeout(()=>De(),100);else{const a=document.getElementById("password-info");a&&(a.innerHTML="")}v(o?"Developer Mode Enabled":"Developer Mode Disabled",o?"warning":"info")}))}function De(){if(!s.devMode){v("Developer mode must be enabled first","warning");return}const e=re(!0);if(!e){v("Unable to retrieve password information","error");return}const t=document.getElementById("password-info");if(t){t.innerHTML=`
Current Password: ${e.password}
Week: ${e.weekNumber}/${e.year}
Changes In: ${e.expires}
`;const n=document.getElementById("password-display");n&&(n.classList.remove("hidden"),n.classList.add("visible"));const o=t.querySelector("#copy-password-btn");o&&o.addEventListener("click",()=>{try{navigator.clipboard.writeText(e.password),v("Password copied to clipboard","success")}catch(a){v("Failed to copy password","error")}}),t.classList.add("password-revealed"),setTimeout(()=>{t.classList.remove("password-revealed")},500)}}function Ft(e,t){const n=o=>{if(document.activeElement.tagName==="INPUT"||document.activeElement.tagName==="TEXTAREA"||document.activeElement.isContentEditable)return;const a=H().filter(i=>i.shortcut);for(const i of a){if(t&&i.premium)continue;const r=i.shortcut.toLowerCase().split("+"),l=r.pop(),c=r.includes("ctrl")?o.ctrlKey:!0,u=r.includes("shift")?o.shiftKey:!0,d=r.includes("alt")?o.altKey:!0;if(o.key.toLowerCase()===l&&c&&u&&d){o.preventDefault();const p=e[i.id];if(p&&typeof p.toggle=="function"){const h=!p.isEnabled();p.toggle(h);const m=document.getElementById(`enhancer-${i.id}`);m&&m.type==="checkbox"&&(m.checked=h)}return}}};document.addEventListener("keydown",n),window.EvoWorldEnhancer.keyboardShortcutsHandler=n}function Nt(e){e.querySelectorAll(".enhancer-tooltip").forEach(t=>{const n=t.querySelector(".tooltip-text");t.addEventListener("mouseenter",()=>{if(n){const o=n.getBoundingClientRect(),a=window.innerWidth;o.right>a?n.classList.add("position-right"):o.left<0&&n.classList.add("position-left")}}),t.addEventListener("touchstart",o=>{o.preventDefault(),n&&n.classList.toggle("touch-visible")})})}function ze(){const e=document.getElementById("password-remaining");e&&(e.textContent=R()),setTimeout(ze,6e4)}function Dt(e){const t=e.querySelector("#feature-search"),n=e.querySelector("#search-results");t&&n&&(t.addEventListener("input",o=>{const a=o.target.value.toLowerCase().trim();if(a.length<2){n.hidden=!0;return}const i=H().filter(r=>r.name.toLowerCase().includes(a)||r.description&&r.description.toLowerCase().includes(a));i.length>0?(n.innerHTML="",i.forEach(r=>{const l=document.createElement("div");l.className="search-result",l.textContent=r.name,l.addEventListener("click",()=>{const c=e.querySelector(`[data-control="${r.id}"]`);c&&(c.scrollIntoView({behavior:"smooth",block:"center"}),c.classList.add("highlight-feature"),setTimeout(()=>{c.classList.remove("highlight-feature")},2e3)),t.value="",n.hidden=!0}),n.appendChild(l)}),n.hidden=!1):(n.innerHTML='
No features found
',n.hidden=!1)}),document.addEventListener("click",o=>{!t.contains(o.target)&&!n.contains(o.target)&&(n.hidden=!0)}))}function zt(){window.fixEvoWorldUI=function(){document.querySelectorAll(".enhancer-panel").forEach(n=>n.remove()),ue();const e=O().withContent("

EvoWorld Enhancer (Emergency Mode)

").withDivider().withContent("

Click buttons below to toggle features:

").withButton("Toggle ESP Lines",()=>{window.enhancerControls&&window.enhancerControls.esp&&window.enhancerControls.esp.toggle()}).withButton("Toggle Enhanced Vision",()=>{window.enhancerControls&&window.enhancerControls.enhancedVision&&window.enhancerControls.enhancedVision.toggle()}).withDivider().withButton("Reload Page",()=>location.reload(),{danger:!0}),t=document.createElement("div");return t.className="enhancer-panel emergency-panel",t.style.position="fixed",t.style.top="10px",t.style.right="10px",t.style.zIndex="9999",t.style.width="250px",t.style.background="rgba(40,40,40,0.95)",t.style.color="#fff",t.style.padding="10px",t.style.borderRadius="5px",t.appendChild(e.render()),document.body.appendChild(t),"Emergency UI activated"}}function me(){try{const e=s.devMode,t=localStorage.getItem("evoWorldEnhancerConfig"),n=t?JSON.parse(t):null,o=n?n.devMode:void 0,a=document.getElementById("dev-mode-toggle"),i=a?a.checked:"element-not-found",r=document.getElementById("password-display"),l=r?!r.classList.contains("hidden"):"element-not-found",c=document.getElementById("enhancer-control-panel"),u=c?c.classList.contains("dev-mode-active"):"element-not-found";return{configDevMode:e,storedConfigExists:!!t,storedDevMode:o,uiToggleChecked:i,uiDisplayVisible:l,uiPanelHasDevModeClass:u,mismatchDetected:e!==o||a&&e!==a.checked||r&&e!==!r.classList.contains("hidden")||c&&e!==c.classList.contains("dev-mode-active")}}catch(e){return{error:e.message}}}function Bt(e=!0){try{s.devMode=e,typeof s.save=="function"&&s.save();const t=document.getElementById("dev-mode-toggle");t&&(t.checked=e);const n=document.getElementById("password-display");n&&(n.classList.toggle("visible",e),n.classList.toggle("hidden",!e));const o=document.getElementById("enhancer-control-panel");if(o&&o.classList.toggle("dev-mode-active",e),e){const a=document.getElementById("show-password-btn");a&&a.click()}return setTimeout(me,100),!0}catch(t){return!1}}typeof window!="undefined"&&(window.evoDebug={inspectDevMode:me,fixDevMode:Bt,resetConfig:()=>confirm("Reset all EvoWorld Enhancer settings to defaults?")?(s.reset(),"Config reset complete"):"Reset cancelled"});function Pt(e,t){if(!e||!t||!e.position||!t.position)return 1/0;const n=e.position.x+(e.width||0)/2-(t.position.x+(t.width||0)/2),o=e.position.y+(e.height||0)/2-(t.position.y+(t.height||0)/2);return Math.sqrt(n*n+o*o)}function he(e,t){return typeof window.foodChain=="undefined"||!e||!t?!1:window.foodChain[e.name]&&window.foodChain[e.name].eats&&window.foodChain[e.name].eats[t.name]}function Rt(e,t){return he(e,t)&&window.foodChain[e.name].eats[t.name].exp||0}function ge(e,t,n){if(!e||typeof e[t]!="function")return;const o=e[t];e[t]=function(...a){const i=o.apply(this,a);try{return n(i,...a)||i}catch(r){return i}}}let z=null;function Ot(){function e(){if(!(!window.game||!window.game.me||!window.game.dynamicContext)&&!(typeof window.imDead=="undefined"||typeof window.joinedGame=="undefined")&&!(window.imDead||!window.joinedGame))try{const t=window.game.dynamicContext;t.save(),t.lineWidth=s.lineThickness,t.font="14px Arial";const n=L(window.game,"gameObjects",{});Object.values(n).forEach(o=>{try{if(!o||o.deleted||!o.id||o.id===L(window.game,"me.id")||o.inHide||!o.position||!o.width||!o.height||L(o,"inSafeZone")&&L(o,"type")===window.objectType.PLAYER&&!W(window.game,"isVisible",[window.game.camera,o,window.game.originalWidth,window.game.originalHeight],!1))return;const a=Pt(window.game.me,o);if(isNaN(a)||a>1500)return;const i=W(window.game,"getRenderPosition",[window.game.me.position.x+window.game.me.width/2,window.game.me.position.y+window.game.me.height/2]),r=W(window.game,"getRenderPosition",[o.position.x+o.width/2,o.position.y+o.height/2]);if(!i||!r||typeof i.x!="number"||typeof i.y!="number"||typeof r.x!="number"||typeof r.y!="number"||r.x<-100||r.x>window.game.canvas.width+100||r.y<-100||r.y>window.game.canvas.height+100)return;const l=he(window.game.me,o),c=he(o,window.game.me);if(!W(window.game,"isVisible",[window.game.camera,o,window.game.canvas.width/2,window.game.canvas.height/2],!1)&&!l&&!c)return;const u=c,d=l;if(u&&!s.showEnemyLines||d&&!s.showFoodLines||!u&&!d)return;if(u&&s.showEnemyLines)t.strokeStyle=s.dangerLineColor,t.beginPath(),t.moveTo(i.x,i.y),t.lineTo(r.x,r.y),t.stroke(),t.fillStyle=s.dangerLineColor,t.fillText(`DANGER (${Math.round(a)}px)`,(i.x+r.x)/2,(i.y+r.y)/2-10),t.strokeRect(r.x-20,r.y-20,40,40);else if(d&&s.showFoodLines){if(L(o,"hp",1)<=0)return;const p=Rt(window.game.me,o);p>500?t.strokeStyle="#ff00ff":p>200?t.strokeStyle=s.foodLineColor:t.strokeStyle="#88ff88",t.beginPath(),t.moveTo(i.x,i.y),t.lineTo(r.x,r.y),t.stroke(),t.fillStyle="white",t.fillText(`${p} exp (${Math.round(a)}px)`,(i.x+r.x)/2,(i.y+r.y)/2-10)}}catch(a){}}),t.restore()}catch(t){C("Error in drawESPLines",t)}}try{z=L(window.game,"beforeDrawAllObjects"),z&&(window.game.beforeDrawAllObjects=function(){try{z&&z.apply(this,arguments)}catch(t){C("Error in original beforeDrawAllObjects",t)}if(s.showEnemyLines||s.showFoodLines)try{e()}catch(t){C("Error in ESP drawing",t)}})}catch(t){C("Error setting up ESP",t)}return{toggleEnemyLines:function(t){const n=s.showFoodLines;s.showEnemyLines=t,s.showFoodLines!==n&&(s.showFoodLines=n),window.game&&typeof window.game.beforeDrawAllObjects=="function"&&window.game.beforeDrawAllObjects()},toggleFoodLines:function(t){const n=s.showEnemyLines;s.showFoodLines=t,s.showEnemyLines!==n&&(s.showEnemyLines=n),window.game&&typeof window.game.beforeDrawAllObjects=="function"&&window.game.beforeDrawAllObjects()},cleanup:function(){z&&window.game&&(window.game.beforeDrawAllObjects=z)}}}const Be=Ot();let J=null;function Ut(){return J=window.drawDarkness,{toggle:function(e){e?window.drawDarkness=function(){}:window.drawDarkness=J},cleanup:function(){J&&(window.drawDarkness=J)}}}function Wt(){let e=null,t=null;return{toggle:function(n){n?(e?e.style.display="block":(e=document.createElement("div"),e.id="enhancer-debug-panel",e.style.position="fixed",e.style.top="10px",e.style.left="10px",e.style.backgroundColor="rgba(0, 0, 0, 0.7)",e.style.color="white",e.style.padding="5px",e.style.borderRadius="5px",e.style.zIndex="9999",document.body.appendChild(e)),clearInterval(t),t=setInterval(()=>{if(!window.game||!window.game.me)return;const o={position:window.game.me.position?`X: ${Math.round(window.game.me.position.x)}, Y: ${Math.round(window.game.me.position.y)}`:"Unknown",speed:window.game.me.moveSpeed?`X: ${Math.round(window.game.me.moveSpeed.x)}, Y: ${Math.round(window.game.me.moveSpeed.y)}`:"Unknown",hp:window.game.me.hp||"Unknown",exp:typeof window.myExperience!="undefined"?window.myExperience:"Unknown",water:typeof window.lastWater!="undefined"&&window.lastWater!==null&&!isNaN(parseFloat(window.lastWater))?parseFloat(window.lastWater).toFixed(1):"Unknown",oxygen:typeof window.lastOxygen!="undefined"&&window.lastOxygen!==null&&!isNaN(parseFloat(window.lastOxygen))?parseFloat(window.lastOxygen).toFixed(1):"Unknown",fps:window.game.fps||"Unknown"};e.innerHTML=Object.entries(o).map(([a,i])=>`${a}: ${i}`).join("
")},100)):(e&&(e.style.display="none"),clearInterval(t))},cleanup:function(){t&&clearInterval(t),e&&e.remove()}}}function _t(){let e=null;function t(){e&&clearInterval(e),e=setInterval(()=>{if(typeof window.imDead!="undefined"&&window.imDead===!0&&s.autoRevive){const n=document.querySelector(".btnPlayAgain");n&&window.getComputedStyle(n).display!=="none"&&window.getComputedStyle(n).opacity>.5&&setTimeout(()=>{n.click()},500)}},1e3)}return ge(window,"endGameText",function(){}),{toggle:function(n){s.autoRevive=n,n?t():e&&(clearInterval(e),e=null)},cleanup:function(){e&&clearInterval(e)}}}function Yt(){let e=null;return{toggle:function(t){s.autoBoost=t,t?e=setInterval(()=>{typeof window.game!="undefined"&&window.game.me&&!window.imDead&&window.joinedGame&&window.boost()},300):e&&(clearInterval(e),e=null)},cleanup:function(){e&&(clearInterval(e),e=null)}}}let Q=Date.now();function jt(){let e=null;function t(){try{if(!window.game||!window.game.me||window.imDead||!window.joinedGame||Date.now()-Q<6e4)return;const o=[0,1,-1,0][Math.floor(Date.now()/1e3)%4];typeof window.gameServer!="undefined"&&typeof window.socketMsgType!="undefined"&&(window.gameServer.emit(window.socketMsgType.FLY,o),setTimeout(()=>{window.gameServer.emit(window.socketMsgType.FLY,0)},250))}catch(o){}}function n(){document.addEventListener("keydown",()=>{Q=Date.now()}),document.addEventListener("mousemove",()=>{Q=Date.now()}),document.addEventListener("click",()=>{Q=Date.now()})}return n(),{toggle:function(o){o?e=setInterval(t,3e4):e&&(clearInterval(e),e=null)},cleanup:function(){e&&(clearInterval(e),e=null)}}}function Vt(){let e=!1;return window.gameServer&&typeof window.gameServer.emit=="function"&&(e=!0),{toggle:function(t){s.pingReducer=t,t&&!e&&window.gameServer&&typeof window.gameServer.emit=="function"&&(e=!0,ge(window.gameServer,"emit",function(n){n==="ping"&&(window.latency=10,window.game&&(window.game.latency=10))}))},cleanup:function(){e=!1}}}let fe=null,g=1;const we=.05,be=10,Pe=.1,Re=.05,Oe=5,Zt=.3;let ee=0,y=null,T=!1,B=null,w=null,ve=null;function Ue(){try{window.game&&window.game.camera&&(fe=window.game.camera.zoom||1,Kt())}catch(u){}Ht();const e=Gt.bind(this),t=Xt.bind(this);function n(){s.unlimitedZoom||(document.addEventListener("wheel",e,{passive:!1}),document.addEventListener("keydown",t),qt(),Jt(),en(),s.unlimitedZoom=!0,v("Enhanced zoom control enabled","info"))}function o(){s.unlimitedZoom&&(document.removeEventListener("wheel",e),document.removeEventListener("keydown",t),B&&(clearInterval(B),B=null),r(),s.unlimitedZoom=!1,v("Zoom control disabled","info"))}function a(u){return typeof u!="boolean"&&(u=!s.unlimitedZoom),u?n():o(),s.unlimitedZoom}function i(){w&&(w.remove(),w=null),o()}function r(){try{if(window.game&&window.game.camera&&fe!==null){const u=fe;window.game.camera.zoom=u,g=u,window.gameZoom!==void 0&&(window.gameZoom=u),y&&window.game&&(window.game.scaleX=y.x,window.game.scaleY=y.y),We(u)}}catch(u){}}function l(){return g}function c(){s.unlimitedZoom&&n()}return c(),ve={toggle:a,cleanup:i,setZoom:k,resetZoom:r,getZoom:l,isEnabled:()=>s.unlimitedZoom,refresh:()=>{if(s.unlimitedZoom)return k(g)},redrawMap:()=>{s.unlimitedZoom&&window.game&&window.game.hashMap&&typeof window.game.hashMap.redrawTiles=="function"&&window.game.hashMap.redrawTiles()},getStatus:()=>{var u,d,p,h,m;return{currentZoom:g,gameZoom:window.gameZoom,internalZoom:(u=window.game)==null?void 0:u.zoom,cameraScale:(p=(d=window.game)==null?void 0:d.camera)==null?void 0:p.scale,scaleFactors:{x:(h=window.game)==null?void 0:h.scaleX,y:(m=window.game)==null?void 0:m.scaleY},originalScale:y,isAdjusting:T,enabled:s.unlimitedZoom,lastFrameTime:performance.now()-ee}},highlightPlayers:(u=!0)=>(s.highlightPlayers=u,s.highlightPlayers)},ve}function k(e){if(s.unlimitedZoom){if(typeof e!="number"||isNaN(e))return null;try{return e=Math.max(we,Math.min(be,e)),g=e,T=!0,window.game&&(window.game.camera&&(window.game.camera.zoom=e,window.game.camera.scale=e),y&&window.game&&(window.game.scaleX=y.baseX*e,window.game.scaleY=y.baseY*e),window.gameZoom!==void 0&&(window.gameZoom=e),window.game.zoom=e),T=!1,We(e),e<.2&&window.game&&window.game.hashMap&&typeof window.game.hashMap.redrawTiles=="function"&&setTimeout(()=>{window.game.hashMap.redrawTiles()},50),ee=performance.now(),e}catch(t){return T=!1,null}}}function Ht(){w&&w.remove(),w=document.createElement("canvas"),w.width=100,w.height=30,w.style.cssText=` position: fixed; bottom: 10px; right: 10px; z-index: 9999; opacity: 0; transition: opacity 0.3s; pointer-events: none; `,document.body.appendChild(w),CanvasRenderingContext2D.prototype.roundRect||(CanvasRenderingContext2D.prototype.roundRect=function(e,t,n,o,a){return n<2*a&&(a=n/2),o<2*a&&(a=o/2),this.beginPath(),this.moveTo(e+a,t),this.arcTo(e+n,t,e+n,t+o,a),this.arcTo(e+n,t+o,e,t+o,a),this.arcTo(e,t+o,e,t,a),this.closePath(),this})}function We(e){if(!w)return;const t=w.getContext("2d");t.clearRect(0,0,w.width,w.height),t.fillStyle="rgba(0, 0, 0, 0.7)",t.roundRect(0,0,w.width,w.height,5),t.fill(),t.fillStyle="white",t.font="bold 14px Arial",t.textAlign="center",t.textBaseline="middle",t.fillText(`Zoom: ${Math.round(e*100)}%`,w.width/2,w.height/2),w.style.opacity="1",clearTimeout(w.fadeTimeout),w.fadeTimeout=setTimeout(()=>w.style.opacity="0",1500)}function Gt(e){if(!s.unlimitedZoom)return;e.preventDefault();let t=e.shiftKey?Re:Pe;e.altKey&&(t*=Oe);const n=e.deltaY<0?1:-1;k(g+n*t)}function Xt(e){if(document.activeElement.tagName==="INPUT"||document.activeElement.tagName==="TEXTAREA")return;let t=e.shiftKey?Re:Pe;switch(e.altKey&&(t*=Oe),e.key){case"=":case"+":k(g+t),e.preventDefault();break;case"-":case"_":k(g-t),e.preventDefault();break;case"0":k(1),e.preventDefault();break;case"Home":k(be),e.preventDefault();break;case"End":k(we),e.preventDefault();break}}function Kt(){var e;try{if(!window.game||!window.game.scaleX||!window.game.scaleY)return!1;const t=window.gameZoom||((e=window.game.camera)==null?void 0:e.zoom)||1;return y={x:window.game.scaleX,y:window.game.scaleY,baseX:window.game.scaleX/t,baseY:window.game.scaleY/t},!0}catch(t){return!1}}function qt(){if(!window.game)return;const e=window.game.setZoom;if(typeof e=="function"&&(window.game.setZoom=function(t){const n=Math.max(we,Math.min(be,t)),o=e.call(window.game,n);return y&&(window.game.scaleX=y.baseX*n,window.game.scaleY=y.baseY*n,window.game.camera&&(window.game.camera.scale=n,window.game.camera.zoom=n),window.game.zoom=n),o}),window.game.hashMap&&window.game.hashMap.drawTiles){const t=window.game.hashMap.drawTiles;window.game.hashMap.drawTiles=function(){return this.tileZoom=g,t.apply(this,arguments)}}if(window.game.hashMap&&window.game.hashMap.calculateTileCompletion){const t=window.game.hashMap.calculateTileCompletion;window.game.hashMap.calculateTileCompletion=function(){const n=t.apply(this,arguments);return g<.2&&(this.tileLoadDistance=Math.max(this.tileLoadDistance,3)),n}}}function Jt(){B&&clearInterval(B),B=setInterval(()=>{if(!(T||!window.game))try{if(performance.now()-ee<100)return;(window.gameZoom!==void 0&&Math.abs(window.gameZoom-g)>.01||window.game.zoom&&Math.abs(window.game.zoom-g)>.01)&&(window.gameZoom!==void 0&&(window.gameZoom=g),window.game&&window.game.setZoom(g)),window.game.camera&&Math.abs(window.game.camera.scale-g)>.01&&(window.game.camera.scale=g),y&&(Math.abs(window.game.scaleX-y.baseX*g)>.01||Math.abs(window.game.scaleY-y.baseY*g)>.01)&&(window.game.scaleX=y.baseX*g,window.game.scaleY=y.baseY*g)}catch(e){}},200)}function Qt(){window.game.drawObjects();const e=window.game.context;e.save();for(const t in window.game.gameObjects){const n=window.game.gameObjects[t];if(n.type===window.objectType.PLAYER){const o=window.game.getRenderPosition(n.position.x+n.width/2,n.position.y+n.height/2);e.beginPath(),n===window.game.me?(e.fillStyle="rgba(255, 0, 0, 0.5)",e.arc(o.x,o.y,20,0,Math.PI*2)):(e.fillStyle="rgba(255, 255, 0, 0.3)",e.arc(o.x,o.y,15,0,Math.PI*2)),e.fill()}}e.restore()}function en(){window.draw&&(window.draw=function(){if(!(!window.gameServer||!window.gameServer.connected||!window.wasSync)){if(!window.drawing){if(window.drawing=!0,window.game.hashMap&&window.game.hashMap.ready)try{typeof window.automaticQuality=="function"&&window.automaticQuality(),window.gameZoom=g,T=!0,window.game.setZoom(g),window.game.camera&&(window.game.camera.scale=g),T=!1,window.game.clear(),g<=Zt&&s.highlightPlayers?Qt():window.game.drawObjects(),typeof window.drawDarkness=="function"&&window.drawDarkness(),window.mapButtonRotation!==void 0&&$("#gameContainer > div.minimap > div.line").length&&window.mapButtonRotation/180%2!=0&&$("#gameContainer > div.minimap > div.line").css("left",window.game.me.position.x/112e3*100+"%")}catch(e){window.drawing=!1}window.drawing=!1}ee=performance.now()}})}Ue(),window.zoomControl=ve;function tn(){let e=null;window.doBoost&&(e=window.doBoost);const t=function(){s.speedMultiplier!==1&&ge(window,"doBoost",function(n){n&&n.moveSpeed&&n.moveSpeed.y&&(n.moveSpeed.y*=s.speedMultiplier)})};return t(),{update:function(n){s.speedMultiplier=n,window.doBoost&&window.doBoost!==e&&(window.doBoost=e),t()},cleanup:function(){e&&window.doBoost!==e&&(window.doBoost=e)}}}const ye={espFood:{setup:()=>({toggle:e=>{Be.toggleFoodLines(e)},isEnabled:()=>s.showFoodLines}),category:E.VISION,name:"ESP Food",description:"Shows lines to food items on the map",shortcut:"F",guestFeature:!1,configKey:"showFoodLines"},espEnemy:{setup:()=>({toggle:e=>{Be.toggleEnemyLines(e)},isEnabled:()=>s.showEnemyLines}),category:E.VISION,name:"ESP Enemy Lines",description:"Shows lines to enemies on the map",shortcut:"E",guestFeature:!0,configKey:"showEnemyLines"},enhancedVision:{setup:Ut,category:E.VISION,name:"Enhanced Vision",description:"Improves visibility in dark areas",shortcut:"V",guestFeature:!0},zoomControl:{setup:Ue,category:E.VISION,name:"Unlimited Zoom Control",description:"Allows unlimited zoom control with Ctrl+Mouse Wheel (0.1x to 10.0x)",shortcut:"Z",guestFeature:!0,configKey:"zoomControl"},autoBoost:{setup:Yt,category:E.GAMEPLAY,name:"Auto Boost",description:"Automatically boosts when needed",shortcut:"B",guestFeature:!1},autoRevive:{setup:_t,category:E.GAMEPLAY,name:"Auto Revive",description:"Automatically revives when killed",shortcut:"R",guestFeature:!1},speedMultiplier:{setup:tn,category:E.GAMEPLAY,name:"Speed Multiplier",description:"Adjusts movement speed",guestFeature:!1,ui:{type:"slider",min:1,max:5,step:.1,unit:"x",defaultValue:1}},antiAfk:{setup:jt,category:E.UTILITY,name:"Anti AFK",description:"Prevents being kicked for inactivity",shortcut:"A",guestFeature:!1},pingReducer:{setup:Vt,category:E.PERFORMANCE,name:"Ping Reducer",description:"Reduces ping and improves performance",guestFeature:!0},debugInfo:{setup:Wt,category:E.EXPERIMENTAL,name:"Debug Panel",description:"Shows debug information",shortcut:"D",devOnly:!0,guestFeature:!1,premium:!1,configKey:"showDebugInfo"}};function nn(e=!1){const t={};try{return Object.entries(ye).forEach(([n,o])=>{if(!(e&&o.guestFeature!==!0)&&!(o.devOnly&&!s.devMode))try{t[n]=o.setup()}catch(a){}}),t}catch(n){return{}}}function on(){try{ut();const e=typeof s.guestMode=="boolean"?s.guestMode:!1;sn(e);const t=nn(e);return dt(t),e&&an(),rn(),t}catch(e){return{}}}function an(){Object.entries(ye).forEach(([e,t])=>{if(t.guestFeature!==!0){const n=t.configKey||e;s[n]===!0&&(s[n]=!1,e==="espFood"?s.showFoodLines=!1:e==="espEnemy"&&(s.showEnemyLines=!1))}}),typeof s.save=="function"&&s.save()}function rn(){H().map(e=>`${e.id}(${e.controller?"active":"inactive"}, ${e.enabled?"enabled":"disabled"})`).join(", ")}function sn(e=!1){Object.entries(ye).forEach(([t,n])=>{n.devOnly&&!s.devMode||e&&n.guestFeature!==!0||cn({id:t,name:n.name,category:n.category,description:n.description,shortcut:n.shortcut,premium:n.premium,guestFeature:n.guestFeature,devOnly:n.devOnly,ui:n.ui,configKey:n.configKey})})}function cn(e){ie(e.id)||st(e)}(function(){on();const e=function(){const a=e.toString(),i=r(a);function r(l){let c=0;for(let u=0;u{if(a&&typeof a.cleanup=="function")try{a.cleanup()}catch(i){}})},enableEnhancer:function(){Ze();try{if(M()){const a=t();D(a)}else q()}catch(a){try{q()}catch(i){}}},onLoginSuccess:function(){try{const a=t(),i=D(a);s.devMode&&i&&setTimeout(()=>{const r=document.getElementById("show-password-btn");r&&r.click()},500)}catch(a){alert("Error initializing enhancer. Please refresh and try again.")}},getAuthenticatedPassword:function(){return M()?re(s.devMode):null},dev:{getPassword:function(){return s.devMode&&M()?j():null},bypassAuth:function(a=!0){if(!s.devMode||!_("dev_bypass_attempts",3,6e4))return!1;if(Z(a),a){const i=t(),r=document.getElementById("enhancer-login-panel");r&&r.remove(),D(i)}return a}}},window.EvoWorldEnhancer._disableChecksum=window.EvoWorldEnhancer.disable.toString().length,Ce(window.EvoWorldEnhancer,["getAuthenticatedPassword","onLoginSuccess"]),Ce(window.EvoWorldEnhancer.dev,["getPassword","bypassAuth"]);function t(a=!1){try{return setupGameEnhancements(a)}catch(i){const r={};try{const l=setupESP(),c=setupEnhancedVision();r.esp=l,r.enhancedVision=c,l.toggleEnemyLines(s.showEnemyLines),l.toggleFoodLines(s.showFoodLines),c.toggle(s.enhancedVision)}catch(l){}return r}}window.enhanceGame=t,s.devMode&&document.location.hostname.includes("localhost")&&setTimeout(()=>{try{re(!0)}catch(a){}},1e3),window.debugEvoWorldEnhancer=function(){const a=me();if(s.devMode=!s.devMode,s.save(),a.mismatchDetected){const i=document.getElementById("dev-mode-toggle");i&&(i.checked=s.devMode);const r=document.getElementById("password-display");r&&(r.classList.toggle("visible",s.devMode),r.classList.toggle("hidden",!s.devMode)),s.devMode&&setTimeout(()=>{const l=document.getElementById("show-password-btn");l&&l.click()},100)}return"Debug info logged to console"};const n=a=>{a.filename&&(a.filename.includes("evoworld-enhancer")||a.error&&a.error.stack&&a.error.stack.includes("evoworld-enhancer"))&&(C("Uncaught script error",a.error||a.message),a.preventDefault())},o=function(a){if(a.key==="`"){const i=document.querySelector("#enhancer-toggle");i&&i.click()}};window.addEventListener("error",n),document.addEventListener("keydown",o),window.EvoWorldEnhancer.errorHandler=n,window.EvoWorldEnhancer.keyHandler=o,He(()=>{try{const a=t(!0);M()?setTimeout(()=>{try{D(a)}catch(i){C("Error adding control panel",i)}},3e3):setTimeout(()=>{try{s.allowGuestMode?D(a,!0):q()}catch(i){C("Error adding panel",i)}},3e3)}catch(a){C("Error initializing enhancer",a)}}),zt(),window.fixEvoWorldEnhancerUI=function(){try{document.querySelectorAll('[id^="enhancer-"]').forEach(r=>r.remove());const a=document.createElement("style");a.id="evoworld-enhancer-emergency-styles",a.textContent=` .enhancer-panel { position: fixed; top: 10px; right: 10px; width: 320px; background: rgba(30, 30, 30, 0.9); color: #fff; padding: 10px; border-radius: 8px; z-index: 9999; font-family: Arial, sans-serif; } .enhancer-button { background: #4d90fe; color: white; border: none; padding: 5px 10px; border-radius: 3px; cursor: pointer; margin: 5px; } `,document.head.appendChild(a);const i=document.createElement("div");return i.id="enhancer-emergency-panel",i.className="enhancer-panel",i.innerHTML=`

EvoWorld Enhancer

UI recovery mode
`,document.body.appendChild(i),document.getElementById("enhancer-emergency-esp").addEventListener("click",()=>{window.enhancerControls&&window.enhancerControls.esp&&window.enhancerControls.esp.toggle()}),document.getElementById("enhancer-emergency-vision").addEventListener("click",()=>{window.enhancerControls&&window.enhancerControls.enhancedVision&&window.enhancerControls.enhancedVision.toggle()}),document.getElementById("enhancer-emergency-reload").addEventListener("click",()=>{location.reload()}),"Emergency UI active - check console for feature control"}catch(a){return"Failed to create emergency UI: "+a.message}}})()})();